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