--- ports.in 2004-03-07 21:55:24.000000000 +0100 +++ ports.in 2016-04-27 22:41:06.030194539 +0200 @@ -22,6 +22,59 @@ VERSION="#VERSION#" PORTS_DIR="/usr/ports" +PATCHES_DIR="/usr/patches" +MASTER_KEY="/etc/ports/$(ls -1 "/etc/ports" | grep -m1 '\.sec$')" + +post_update_hooks() { + ( + . $file + case $(basename $driver) in + httpup) + CURRENT_DIR=${ROOT_DIR#$PORTS_DIR} + ;; + rsync) + CURRENT_DIR=${destination#$PORTS_DIR} + ;; + git) + CURRENT_DIR=/$NAME + ;; + *) + echo "$COMMAND: unknown driver '$(basename $driver)'" + exit 1 + esac + [ -d $PATCHES_DIR$CURRENT_DIR ] || exit 0 + for PATCH_PORT in $PATCHES_DIR$CURRENT_DIR/*; do + [ -d $PATCH_PORT ] || continue + [ -d $PORTS_DIR${PATCH_PORT#$PATCHES_DIR} ] || continue + cd $PORTS_DIR${PATCH_PORT#$PATCHES_DIR} + pkgmk -do -cs || exit $? + for DATEI in $(find $PATCH_PORT \( -name ".*" -prune -false \) -o \( -type f -not -name ".*" \) | sort ); do + case $DATEI in + *.patch) + echo "$(pwd): patching '$DATEI' ..." + patch -p0 -i $DATEI || exit $? + for PF in $(grep '^--- ' $DATEI | awk '{print $2}' | sort -u); do + sed -i "/^SHA256 ($PF) = /d" .signature + sha256sum --tag $PF >> .signature + done + ;; + *.new) + echo "$(pwd): copying '$DATEI'" + cp $DATEI $(basename $DATEI .new) + if [ -f .md5sum ]; then + md5sum $(basename $DATEI .new) >> .md5sum + fi + sha256sum --tag $(basename $DATEI .new) >> .signature + ;; + *) + echo "$COMMAND: patch file '$DATEI' has unknown extension" + exit 1 + esac + done + pkgmk -rs -sk $MASTER_KEY + done + ) || exit $? +} check_ports_dir() { if [ ! -d "$PORTS_DIR" ]; then @@ -53,6 +104,7 @@ file=/etc/ports/$collection.$suffix if [ -f $file ]; then $driver $file + post_update_hooks $driver $file fi fi done @@ -67,6 +119,7 @@ suffix=`basename $driver` for file in /etc/ports/*.$suffix; do $driver $file + post_update_hooks $driver $file done fi done