commit 283c70e

Michael Forney  ·  2026-03-11 05:55:04 +0000 UTC
parent 8af7719
Store dist files in config.distdir

This makes it easy to remove old distfiles with `git clean -f dist`.
40 files changed,  +110, -68
+1, -0
1@@ -1,6 +1,7 @@
2 /config.ninja
3 /config.lua
4 /out
5+/paths.sh
6 fetch
7 local.ninja
8 .*.swp
+3, -0
 1@@ -4,6 +4,9 @@ return {
 2 	-- build output directory
 3 	builddir='out',
 4 
 5+	-- distfile directory
 6+	distdir='dist',
 7+
 8 	-- install prefix
 9 	prefix='',
10 
+44, -0
 1@@ -0,0 +1,44 @@
 2+/Python-3.10.0.tar.xz
 3+/bc-1.08.2.tar.gz
 4+/binutils-2.39.tar.xz
 5+/byacc-20260126.tgz
 6+/cacert.pem
 7+/curl-8.5.0.tar.gz
 8+/flex-2.6.4.tar.gz
 9+/fontconfig-2.13.1.tar.gz
10+/git-manpages-2.49.0.tar.gz
11+/iwd-2.10.tar.xz
12+/kbd-2.4.0.tar.gz
13+/less-643.tar.gz
14+/libbluray-1.3.4.tar.bz2
15+/libressl-3.4.2.tar.gz
16+/libtermkey-0.22.tar.gz
17+/linux-6.12.tar.xz
18+/lpeg-1.1.0.tar.gz
19+/lua-5.4.7.tar.gz
20+/make-4.4.1.tar.gz
21+/man-pages-posix-2017-a.tar.gz
22+/mandoc-1.14.6.tar.gz
23+/mtdev-1.1.7.tar.gz
24+/nasm-2.16.01.tar.gz
25+/nsd-4.3.6.tar.gz
26+/openntpd-6.8p1.tar.gz
27+/opus-1.5.2.tar.gz
28+/pcre-8.45.tar.gz
29+/perp-2.07.tar.gz
30+/source-code-pro-2.038R-ro_1.058R-it_1.018R-VAR.tar.gz
31+/source-sans-3.028R.tar.gz
32+/source-serif-4.004R.tar.gz
33+/src.tar.gz
34+/strace-6.12.tar.xz
35+/sys.tar.gz
36+/syslinux-6.03.tar.xz
37+/terminus-font-4.49.1.tar.gz
38+/texi2mdoc-0.1.2.tgz
39+/tinyemu-2019-12-21.tar.gz
40+/transmission-3.00.tar.xz
41+/u-boot-2021.04.tar.bz2
42+/unzip60.tar.gz
43+/wpa_supplicant-2.11.tar.gz
44+/yt-dlp.tar.gz
45+/zfs-2.4.0.tar.gz
+0, -1
1@@ -1,2 +1 @@
2-/bc-1.08.2.tar.gz
3 /src
+0, -1
1@@ -1,5 +1,4 @@
2 /bfd.ninja
3-/binutils-2.39.tar.xz
4 /binutils.ninja
5 /gas.ninja
6 /ld.ninja
+0, -1
1@@ -1,2 +1 @@
2-/byacc-20260126.tgz
3 /src
+0, -1
1@@ -1 +0,0 @@
2-/cacert.pem
+0, -1
1@@ -1,3 +1,2 @@
2-/curl-8.14.1.tar.xz
3 /curl.1.gz
4 /src
+0, -1
1@@ -1,2 +1 @@
2-/flex-2.6.4.tar.gz
3 /src
+0, -1
1@@ -1,3 +1,2 @@
2-/git-manpages-2.49.0.tar.gz
3 /man
4 /man.ninja
+10, -8
 1@@ -2,17 +2,19 @@ set -e
 2 
 3 sh scripts/fetch-git.sh "$@"
 4 
 5-cd "$1"
 6+. ./paths.sh
 7+dir=$1
 8 shift
 9 
10-if [ -e src/man ] ; then
11-	rm -rf src/man
12-fi
13+cd "$distdir"
14 
15-if ! sh "$OLDPWD/scripts/checksum.sh" -c sha256 2>/dev/null ; then
16-	curl -L -O -K url
17-	sh "$OLDPWD/scripts/checksum.sh" -c sha256
18+if ! sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256" 2>/dev/null ; then
19+	curl -L -O -K "$basedir/$dir/url"
20+	sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256"
21 fi
22 
23+cd "$basedir/$dir"
24+rm -rf src/man
25+
26 read -r _ archive <sha256
27-sh "$OLDPWD/scripts/extract.sh" "$archive" -s ',^\.,src/man,'
28+sh "$basedir/scripts/extract.sh" "$distdir/$archive" -s ',^\.,src/man,'
+0, -1
1@@ -1,2 +1 @@
2-/less-643.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/libressl-3.4.2.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/libtermkey-0.22.tar.gz
3 /src
+0, -1
1@@ -1,3 +1,2 @@
2-/linux-6.12.tar.xz
3 /src
4 /tools.ninja
+9, -9
 1@@ -1,21 +1,21 @@
 2 set -e
 3 
 4+. ./paths.sh
 5 dir=$1
 6 shift
 7 
 8-cd "$dir"
 9+cd "$distdir"
10 
11-if [ -e src ] ; then
12-        rm -rf src
13+if ! sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256" 2>/dev/null ; then
14+        curl -L -K "$basedir/$dir/url" -O
15+        sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256"
16 fi
17 
18-if ! sh "$OLDPWD/scripts/checksum.sh" -c sha256 2>/dev/null ; then
19-        curl -L -K url -O
20-        sh "$OLDPWD/scripts/checksum.sh" -c sha256
21-fi
22+cd "$basedir/$dir"
23+rm -rf src
24 
25 read -r _ archive <sha256
26-sh "$OLDPWD/scripts/extract.sh" "$archive" -s ',^[^/]*,src,' \
27+sh "$basedir/scripts/extract.sh" "$distdir/$archive" -s ',^[^/]*,src,' \
28 	'linux-*/Makefile' \
29 	'linux-*/arch/*/include/uapi/' \
30 	'linux-*/arch/*/entry/syscalls/' \
31@@ -23,5 +23,5 @@ sh "$OLDPWD/scripts/extract.sh" "$archive" -s ',^[^/]*,src,' \
32 	'linux-*/scripts/unifdef.c'
33 
34 if [ -d patch ] ; then
35-	git apply -v --whitespace=nowarn --directory "$dir/src" patch/*
36+	git apply -v --whitespace=nowarn --directory "$dir/src" patch/*.patch
37 fi
+0, -1
1@@ -1,2 +1 @@
2-/lpeg-1.1.0.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/lua-5.4.7.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/make-4.4.1.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/man-pages-posix-2017-a.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/mandoc-1.14.6.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/mtdev-1.1.7.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/nasm-2.16.01.tar.gz
3 /src
+0, -2
1@@ -1,4 +1,2 @@
2 /nc.ninja
3 /src
4-/src.tar.gz
5-/sys.tar.gz
+10, -10
 1@@ -1,20 +1,20 @@
 2 set -e
 3 
 4+. ./paths.sh
 5 dir=$1
 6 shift
 7 
 8-cd "$dir"
 9+cd "$distdir"
10 
11-if [ -e src ] ; then
12-        rm -rf src
13+if ! sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256" 2>/dev/null ; then
14+        curl -L -K "$basedir/$dir/url" -O
15+        sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256"
16 fi
17 
18-if ! sh "$OLDPWD/scripts/checksum.sh" -c sha256 2>/dev/null ; then
19-        curl -L -K url -O
20-        sh "$OLDPWD/scripts/checksum.sh" -c sha256
21-fi
22+cd "$basedir/$dir"
23+rm -rf src
24 
25-sh "$OLDPWD/scripts/extract.sh" src.tar.gz -s ',^,src/,' \
26+sh "$basedir/scripts/extract.sh" "$distdir/src.tar.gz" -s ',^,src/,' \
27 	'bin/pax/*' \
28 	'include/*' \
29 	'lib/libc/*' \
30@@ -29,6 +29,6 @@ sh "$OLDPWD/scripts/extract.sh" src.tar.gz -s ',^,src/,' \
31 	'usr.bin/rsync/*' \
32 	'usr.bin/yacc/*' \
33 	'usr.sbin/acme-client/*'
34-sh "$OLDPWD/scripts/extract.sh" sys.tar.gz -s ',^,src/,' 'sys/sys/*'
35+sh "$basedir/scripts/extract.sh" "$distdir/sys.tar.gz" -s ',^,src/,' 'sys/sys/*'
36 
37-git apply -v --whitespace=nowarn --directory "$dir/src" patch/*
38+git apply -v --whitespace=nowarn --directory "$dir/src" patch/*.patch
+0, -1
1@@ -1,2 +1 @@
2-/openntpd-6.8p1.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/opus-1.5.2.tar.gz
3 /src
+0, -1
1@@ -1,2 +1 @@
2-/pcre-8.45.tar.gz
3 /src
+0, -1
1@@ -1,3 +1,2 @@
2-/Python-3.10.0.tar.xz
3 /modules.ninja
4 /src
+0, -1
1@@ -1,3 +1,2 @@
2 /src
3-/strace-6.12.tar.xz
4 /tools.ninja
+0, -1
1@@ -1,2 +1 @@
2 /src
3-/terminus-font-4.49.1.tar.gz
+0, -1
1@@ -1,3 +1,2 @@
2 /host.ninja
3 /src
4-/texi2mdoc-0.1.2.tgz
+0, -1
1@@ -1,4 +1,3 @@
2 /libminiupnp.ninja
3 /libnatpmp.ninja
4 /src
5-/transmission-3.00.tar.xz
+0, -1
1@@ -1,2 +1 @@
2 /src
3-/unzip60.tar.gz
+0, -1
1@@ -1,2 +1 @@
2 /src
3-/wpa_supplicant-2.11.tar.gz
+0, -1
1@@ -1,2 +1 @@
2 /src
3-/yt-dlp.tar.gz
+1, -1
1@@ -125,7 +125,7 @@ rule fspec-tar
2   command = $builddir/pkg/fspec-sync/host/fspec-tar <$in | zstd >$out
3 
4 rule fetch
5-  command = cd $basedir && PAX=$$OLDPWD/$builddir/pkg/pax/host/pax sh $$OLDPWD/$script $gendir && touch $$OLDPWD/$out
6+  command = PAX=$$PWD/$builddir/pkg/pax/host/pax sh $script $gendir && touch $out
7   description = 	FETCH	$gendir
8   restat = 1
9   generator = 1
+10, -7
 1@@ -5,22 +5,25 @@ if [ "$#" != 1 ] ; then
 2 	exit 2
 3 fi
 4 
 5+. ./paths.sh
 6 dir=$1
 7 shift
 8 
 9-cd "$dir"
10+cd "$distdir"
11 
12-if [ -e src ] ; then
13-	rm -rf src
14+if ! sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256" 2>/dev/null ; then
15+	curl -L -K "$basedir/$dir/url" -O
16+	sh "$basedir/scripts/checksum.sh" -c "$basedir/$dir/sha256"
17 fi
18 
19-if ! sh "$OLDPWD/scripts/checksum.sh" -c sha256 2>/dev/null ; then
20-	curl -L -K url -O
21-	sh "$OLDPWD/scripts/checksum.sh" -c sha256
22+cd "$basedir/$dir"
23+
24+if [ -e src ] ; then
25+	rm -rf src
26 fi
27 
28 while read -r _ archive ; do
29-	sh "$OLDPWD/scripts/extract.sh" "$archive" -s ',^[^/]*,src,'
30+	sh "$basedir/scripts/extract.sh" "$distdir/$archive" -s ',^[^/]*,src,'
31 done <sha256
32 
33 if [ -d patch ] ; then
+4, -2
 1@@ -5,9 +5,11 @@ if [ "$#" != 1 ] ; then
 2 	exit 2
 3 fi
 4 
 5-cd "$1"
 6+. ./paths.sh
 7+cd "$basedir/$1"
 8 
 9 git submodule update --init --checkout src
10 if [ -d patch ] ; then
11-	git -C src am --keep-non-patch --whitespace=nowarn "$PWD"/patch/*.patch
12+	cd src
13+	git am --keep-non-patch --whitespace=nowarn ../patch/*.patch
14 fi
+18, -0
 1@@ -20,6 +20,24 @@ config = dofile 'config.lua'
 2 if not config.prefix then
 3 	config.prefix = ''
 4 end
 5+if not config.distdir then
 6+	config.distdir = 'dist'
 7+end
 8+
 9+local function shellpath(path, base)
10+	if path == '.' then return base end
11+	local abs = path:find('^/')
12+	path = "'"..path:gsub([[']], [['\'']]).."'"
13+	if abs then return path end
14+	return base..'/'..path
15+end
16+local f = io.open('paths.sh', 'w')
17+f:write(string.format([[
18+basedir=%s
19+builddir=%s
20+distdir=%s
21+]], shellpath(basedir, '$PWD'), shellpath(config.builddir, '$PWD'), shellpath(config.distdir, '$basedir')))
22+f:close()
23 
24 local function gen(gendir)
25 	local dir = basedir..'/'..gendir