From f11ecff34b560708bb0482b80c1dca5db7965d33 Mon Sep 17 00:00:00 2001 From: John McQuah Date: Thu, 2 Jun 2022 11:03:36 -0400 Subject: [PATCH] pkgmeek: fixes for check_pkg_mtime() --- scripts/pkgmeek | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/scripts/pkgmeek b/scripts/pkgmeek index d12bd16..f4f1732 100755 --- a/scripts/pkgmeek +++ b/scripts/pkgmeek @@ -8,8 +8,8 @@ main() { ######################## main routine ################################ -local o_ignored work _local_ here url u f -local errDL=0; local errUZ=0; local pkg_utd=1 +local o_ignored work _local_ here url u f pkg_utd +local errDL=0; local errUZ=0; parse_options "$@" [ "$PKGMK_RECURSIVE" = "no" ] || recursive "$@" # @@ -90,7 +90,7 @@ done ; } [ $errDL != 0 ] || info "Successfully obtained all needed source files." # If the user only asked for '-utd', perform the check using the sources that do exist. -check_pkg_mtime && pkg_utd=0 +check_pkg_mtime; pkg_utd=$? [ "$PKGMK_MTIME_ONLY" = "no" ] || [ "$PKGMK_CHECK_SIG" = "yes" ] || exit $pkg_utd # Some further tests before proceeding with the build @@ -100,7 +100,7 @@ check_pkg_mtime && pkg_utd=0 # Take into account all the actions that can be done with a previously built package, # or with a full set of sources -[ "$pkg_utd" = 1 ] || [ "$PKGMK_FORCE" = "yes" ] || [ "$PKGMK_UPDATE_FOOTPRINT" = "yes" ] \ +[ "$pkg_utd" = 0 ] || [ "$PKGMK_FORCE" = "yes" ] || [ "$PKGMK_UPDATE_FOOTPRINT" = "yes" ] \ || [ "$PKGMK_UPDATE_SIG" = "yes" ] || [ "$PKGMK_CHECK_SIG" = "yes" ] \ || [ "$PKGMK_UPDATE_MD5" = "yes" ] || [ "$PKGMK_EXTRACT_ONLY" = "yes" ] \ || { info "$package is up to date, use '-f' to force a rebuild."; exit 0; } @@ -140,7 +140,7 @@ fi # All the sources should be here by now, let's verify that we can trust them. readonly cs_fail_msg="Use '--ignore-signature' to override, if you have determined integrity by other means." -[ "$pkg_utd" = 1 ] || [ "$PKGMK_IGNORE_SIG" = "yes" ] || \ +[ "$PKGMK_IGNORE_SIG" = "yes" ] || \ { check_signature "pre-build" | parse_signify_output; case $? in 0) info "Sources successfully authenticated." ;; @@ -199,7 +199,7 @@ if [ "$pkg_utd" = 0 ] || [ "$PKGMK_FORCE" = "yes" ]; then # Clean up, part 1: remove soft links and the {src,pkg} trees find . -maxdepth 1 -mindepth 1 -type l -delete [ "$PKGMK_KEEP_WORK" = "yes" ] || rm -rf src pkg -fi # Continue from here if the build was skipped +fi # Continue from here if the extract and build were skipped # Install if requested # First find out how the effective user will invoke pkgadd @@ -342,17 +342,17 @@ print_help() { } validate_pkgfile() { # called from within PKGMK_ROOT - local errcode nn nv nr nb checksum absent + local errcode kv check_signature "pre-Pkgfile" | parse_signify_output errcode=$? - [ "$errcode" = 0 ] || info "Use '-is' if you have confirmed its origin some other way." + [ "$errcode" = 0 ] || info "Use '-is' if you have independent confirmation of the port's integrity." [ "$errcode" = 0 ] || [ "$PKGMK_IGNORE_SIG" = "yes" ] || return $E_SIGNATURE # the environment should not be affected by sourcing the Pkgfile both here # and in the later build, but to be safe we use a nested subshell - ( . Pkgfile; [ -n "$name" ] || nn=1; [ -n "$version" ] || nv=1; \ - [ -n "$release" ] || nr=1; [ "$(type -t build)" = "function" ] || nb=1; \ - echo $(( nn+2*nv+4*nr+8*nb )) ) | check_reqvars + ( . Pkgfile; kv=0; [ -n "$name" ] || kv+=1; [ -n "$version" ] || kv+=2; \ + [ -n "$release" ] || kv+=4; [ "$(type -t build)" = "function" ] || kv+=8; \ + echo $kv ) | check_reqvars } check_reqvars () { @@ -367,7 +367,7 @@ check_reqvars () { } check_pkg_mtime() { # can be called even if some sources are missing - local li=0; local utd=0; local msg="$package is up to date." + local li=0; local utd=0; local msg="$package is not up to date." if [ -f "$pkg_dir$package" ]; then utd=1 @@ -379,7 +379,7 @@ check_pkg_mtime() { # can be called even if some sources are missing [ ! -e Pkgfile ] || [ Pkgfile -nt "$pkg_dir$package" ] || utd=0 fi - [ $utd != 0 ] && msg="$package is not up to date." + [ $utd = 0 ] || msg="$package is up to date." info "$msg"; return $utd } @@ -456,10 +456,11 @@ check_signature() { # called from $PKGMK_ROOT in the case "when"="pre-Pkgfile", # otherwise called from within $work. Pass control to # check_manifest() if the signature is missing and "ignore-md5" # has not been requested. - local reqfiles; local s=0; local when="$1" + # Remember to clean up the soft links that get left behind! + local reqfiles=(Pkgfile); local s=0; local when="$1" if [ -f "$PKGMK_ROOT/.signature" ]; then - [ "$when" = "pre-Pkgfile" ] && reqfiles=(Pkgfile) || reqfiles=(.footprint) + [ "$when" = "pre-Pkgfile" ] || reqfiles=(.footprint) while [ "$when" = "pre-build" ] && [ "$s" -lt ${#_local_[@]} ]; do [[ "${source[$s]}" =~ ^(http|https|ssh|git).*/\.git ]] || \ reqfiles+=("${_local_[$s]}")