pkgmeek: fixes for check_pkg_mtime()

This commit is contained in:
John McQuah 2022-06-02 11:03:36 -04:00
parent aba956949d
commit f11ecff34b

View File

@ -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]}")