diff -aur pkgutils-5.35.5.orig/pkgmk.in pkgutils-5.35.5/pkgmk.in --- pkgutils-5.35.5.orig/pkgmk.in 2013-03-13 09:05:01.000000000 -0500 +++ pkgutils-5.35.5/pkgmk.in 2016-10-03 19:52:52.912497086 -0500 @@ -33,6 +33,8 @@ E_BUILD=8 # error while running 'build()' E_INSTALL=9 # error while installing the package via 'pkgadd' +declare -a source + info() { echo "=======> $1" } @@ -45,7 +47,35 @@ info "ERROR: $1" >&2 } -get_filename() { +complete_renames() { + local i + + i=0 + while [ $i -lt ${#source[@]} ]; do + if [ $i -ge ${#rename[@]} -o "${rename[$i]}" = "=" ]; then + rename[$i]=${source[$i]} + fi + let i=$i+1 + done +} + +get_source_index() { + local i + + i=0 + while [ $i -lt ${#source[@]} ]; do + if [ ${source[$i]} = $1 ]; then + break + fi + let i=$i+1 + done + if [ $i -ge ${#source[@]} ]; then + i=-1 + fi + echo $i +} + +get_original_filename() { if [[ $1 =~ ^(http|https|ftp|file)://.*/(.+) ]]; then echo "$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" else @@ -53,6 +83,21 @@ fi } +get_filename() { + local i filename + + filename=$1 + i=$(get_source_index $filename) + if [ $i -gt -1 -a ${rename[$i]} != ${source[$i]} ]; then + filename=${rename[$i]} + fi + if [[ $filename =~ ^(http|https|ftp|file)://.*/(.+) ]]; then + echo "$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" + else + echo $1 + fi +} + get_basename() { local FILE="`echo $1 | sed 's|^.*://.*/||g'`" echo $FILE @@ -169,9 +214,11 @@ } unpack_source() { - local FILE LOCAL_FILENAME COMMAND + local FILE LOCAL_FILENAME COMMAND i - for FILE in ${source[@]}; do + i=0 + while [ $i -lt ${#rename[@]} ]; do + FILE=${rename[$i]} LOCAL_FILENAME=`get_filename $FILE` case $LOCAL_FILENAME in *.tar|*.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm) @@ -191,18 +238,26 @@ error "Building '$TARGET' failed." exit $E_UNPACK fi + let i=$i+1 + done } make_md5sum() { - local FILE LOCAL_FILENAMES + local FILE LOCAL_FILENAMES LOCAL_FILENAME REMOTE_FILENAME MAPPINGS + MAPPINGS="" if [ "$source" ]; then for FILE in ${source[@]}; do + REMOTE_FILENAME=`get_original_filename $FILE` + REMOTE_FILENAME=`basename $REMOTE_FILENAME` + LOCAL_FILENAME=`get_filename $FILE` + LOCAL_FILENAME=`basename $LOCAL_FILENAME` LOCAL_FILENAMES="$LOCAL_FILENAMES `get_filename $FILE`" + MAPPINGS="$MAPPINGS -e s=$LOCAL_FILENAME=$REMOTE_FILENAME=g" done - - md5sum $LOCAL_FILENAMES | sed -e 's| .*/| |' | sort -k 2 + + md5sum $LOCAL_FILENAMES | sed -e 's| .*/| |' $MAPPINGS | sort -k 2 fi } @@ -626,6 +681,7 @@ exit 0 fi + rename=() for FILE in $PKGMK_PKGFILE $PKGMK_CONFFILE; do if [ ! -f $FILE ]; then error "File '$FILE' not found." @@ -650,6 +706,8 @@ ;; esac + complete_renames + if [ "$PKGMK_CLEAN" = "yes" ]; then clean exit 0