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