Guide pour le packaging sous OpenBSD
Récupérer l’arbre des ports et configurer le tout
[à faire]
- cvs,got,ftp
- privsep,mk.conf,doas
- make fix-permissions
Specs
- Toujours avoir l’OS, les ports et les paquets à jour.
make makesum
crée un checksum dans./distinfo
.make patch
pour avoir une copie initiale propre et voir si les patches s’appliquent correctement.make update-patches
si c’est juste une histoire de différentiel
DIST_TUPLE = name account project tagname/commithash targetdir
quand il n’y a pas de release propre.
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: