Commit: fb9b77c5413fc2071c6604626c7a7c0e078a3ecd
Parent: 38996f9988866b4bfda237f7a058a9963bcde1d3
Author: Michael Forney
Date: Mon, 28 Apr 2025 14:27:49 -0700
Use our own pax for extracting archives
This reduces dependencies and variability in pax implementations.
Diffstat:
4 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/ninja.lua b/ninja.lua
@@ -392,12 +392,16 @@ end
function fetch(method)
local script
+ local deps = {'|', '$dir/ver', script}
if method == 'local' then
script = '$dir/fetch.sh'
else
script = '$basedir/scripts/fetch-'..method..'.sh'
+ if method == 'curl' then
+ table.insert(deps, '$builddir/pkg/arch/pax/host/pax')
+ end
end
- build('fetch', '$dir/fetch', {'|', '$dir/ver', script}, {script=script})
+ build('fetch', '$dir/fetch', deps, {script=script})
if basedir ~= '.' then
build('phony', '$gendir/fetch', '$dir/fetch')
end
diff --git a/rules.ninja b/rules.ninja
@@ -125,7 +125,7 @@ rule fspec-tar
command = $builddir/pkg/devel/fspec-sync/host/fspec-tar <$in | zstd >$out
rule fetch
- command = cd $basedir && sh $$OLDPWD/$script $gendir && touch $$OLDPWD/$out
+ command = cd $basedir && PAX=$$OLDPWD/$builddir/pkg/arch/pax/host/pax sh $$OLDPWD/$script $gendir && touch $$OLDPWD/$out
description = FETCH $gendir
restat = 1
generator = 1
diff --git a/scripts/extract.sh b/scripts/extract.sh
@@ -8,11 +8,4 @@ case $file in
*) exit 0
esac
-if command -v bsdtar >/dev/null; then
- exec bsdtar -xf "$file" "$@"
-elif command -v pax >/dev/null; then
- "$tool" -d -c "$file" | pax -r "$@"
-else
- printf '%s: bsdtar or pax is required' "$0" >&2
- exit 1
-fi
+"$tool" -d -c "$file" | "$PAX" -r "$@"
diff --git a/scripts/fetch-curl.sh b/scripts/fetch-curl.sh
@@ -20,7 +20,7 @@ if ! sh "$OLDPWD/scripts/checksum.sh" -c sha256 2>/dev/null ; then
fi
while read -r _ archive ; do
- sh "$OLDPWD/scripts/extract.sh" "$archive" -s ',^[^/]*,src,' '*/*'
+ sh "$OLDPWD/scripts/extract.sh" "$archive" -s ',^[^/]*,src,'
done <sha256
if [ -d patch ] ; then