--- ports.in 2004-03-07 21:55:24.000000000 +0100 +++ ports.in 2016-04-27 22:41:06.030194539 +0200 @@ -22,6 +22,51 @@ VERSION="#VERSION#" PORTS_DIR="/usr/ports" +PATCHES_DIR="/usr/patches" + +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} + for DATEI in $(find $PATCH_PORT \( -name ".*" -prune -false \) -o \( -type f -not -name ".*" \) ) + do + case $DATEI in + *.patch) + echo "$(pwd): patching '$DATEI' ..." + patch -p0 -i $DATEI || exit $? + ;; + *.new) + echo "$(pwd): copying '$DATEI'" + cp $DATEI $(basename $DATEI .new) + md5sum $(basename $DATEI .new) >> .md5sum + ;; + *) + echo "$COMMAND: patch file '$DATEI' has unknown extension" + exit 1 + esac + done + done + ) || exit $? +} check_ports_dir() { if [ ! -d "$PORTS_DIR" ]; then @@ -53,6 +98,7 @@ file=/etc/ports/$collection.$suffix if [ -f $file ]; then $driver $file + post_update_hooks $driver $file fi fi done @@ -67,6 +113,7 @@ suffix=`basename $driver` for file in /etc/ports/*.$suffix; do $driver $file + post_update_hooks $driver $file done fi done