Guide pour le packaging sous OpenBSD

Récupérer l’arbre des ports et configurer le tout

[à faire]

Specs

Patcher le code source

cd `make show=WRKSRC`
cp foo/bar.c{,.orig.port}
cd - ; make update-patches

On va ainsi créer patches/patch-foobarc avec les modifications que l’on a apporté.

Pour remettre le port à zéro afin de tester les patches :
make clean patch

  • Un fichier modifié par patch.

Go (portsmkgo)

Mettre à jour les dépendances du paquet. Si jamais les développeurs ne publient pas correctement les versions il est possible de passer l’argument MODGO_VERSION=latest pour récupérer la dernière version publiée et ainsi pouvoir générer les bon modules.

#!/bin/sh

# Shell script to update a Go port (modules.inc and distinfo files)

set -eu

PORT="$(make show=PKGNAME)"

echo "Update Go port for ${PORT}..."

mv -v modules.inc modules.old
touch modules.inc
make makesum
make modgo-gen-modules > /tmp/${PORT}.modules.inc
# Generate modules.inc file: remove the first 2 lines with MODGO_VERSION
tail -n +3 /tmp/${PORT}.modules.inc > modules.inc
make clean
make makesum
rm modules.old
make clean
# make && make package

Python

Rust (portsmkcargo)

#!/bin/sh

set -eu

PORT="$(make show=PKGNAME)"

mv -v crates.inc crates.old
touch crates.inc
make makesum
make modcargo-gen-crates > /tmp/${PORT}.crates.inc
grep ^MODCARGO /tmp/${PORT}.crates.inc > crates.inc
make clean
make makesum
make modcargo-gen-crates-licenses > /tmp/${PORT}.license.inc
grep ^MODCARGO /tmp/${PORT}.license.inc > crates.inc
rm crates.old
make clean
#make && make package

suite de fonctions mk

Je me suis amusé à me faire une petite série de fonctions baptisée mk et qui me permet en trois ou quatre frappes de gérer toute la construction d’un port.

mkh() {
    echo "\
        mka - edit Makefile
        mkb - make
        mkd - diff things
        mke - extract WRKSRC
        mkf - find port
        mkg - fetch upstream
        mkl - check lib deps
        mkm - edit file to patch
        mkms - makesum
        mkp - update patches
        mkpp - apply patches
        mkt - make test
        mku - update plist
        mkw - cd WRKSRC"
}

mka() { e Makefile ; }
mkb() { make ; }
mke() { make extract ; }
mkd() { got diff > /tmp/${PWD##*/}.diff ; }
mkf() { (cd /usr/ports && (make search key="/$1" | grep ^Path)) ; }
mkg() { got fetch && got update -b origin/master && got rebase master ;}
mkl() { make port-lib-depends-check ;}
mkm() { cp $1{,.orig.port} && e $1 ;}
mkms() {
    RUST=$(grep devel/cargo Makefile)
    GO=$(grep devel/go Makefile)

    if [[ -n $RUST ]]; then
        echo "Rust found"
        portsmkcargo
    elif [[ -n $GO ]]; then
        echo "Go found"
        portsmkgo
    else
        make makesum
    fi
}
mkp() { make update-patches ; }
mkpp() { make patch ; }
mkt() { make test; }
mku() { make update-plist ; }
mkw() { cd `make show=WRKSRC` ; }
Liens entrants: