summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon GECOS <u@adam>2023-11-22 16:07:32 -0500
committerGordon GECOS <u@adam>2023-11-22 16:14:17 -0500
commite015b8cbe957a1913f178dc5e4ba166972f79320 (patch)
treeb11b5af7586d05d2bd064ea3b4c14612897b6e02
parent81fdd7a90cc0dfdc2bc2744d41a346c0d255a6af (diff)
build system cleanup
-rw-r--r--.gitignore2
-rw-r--r--Makefile52
-rw-r--r--build-deps.control1
-rwxr-xr-xinitramfs-tools/hooks/samizdat21
4 files changed, 43 insertions, 33 deletions
diff --git a/.gitignore b/.gitignore
index 4820162..a9ea15b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,5 @@ apt-get-update-stamp
59*.tmp 59*.tmp
60samizdat-ficlonerange 60samizdat-ficlonerange
61/rootfs/_filesystem/ 61/rootfs/_filesystem/
62initrd-stamp
63initrd-install-stamp
diff --git a/Makefile b/Makefile
index ce0e826..8cd7130 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,11 @@
1prefix?=/usr/local 1prefix?=/usr/local
2bindir = $(prefix)/bin
3initrd_bindir = $(prefix)/lib/samizdat/initrd/bin
2 4
3cc_files=wait_for_files samizdat-pinentry krng-add-entropy samizdat-ficlonerange 5cc_files=wait_for_files samizdat-pinentry krng-add-entropy samizdat-ficlonerange
4cpp_files=dynmenu 6cpp_files=dynmenu
5 7
6compiled_programs=${cc_files} ${cpp_files} 8compiled_programs = $(addprefix _build/, ${cc_files} ${cpp_files})
7 9
8CC=gcc -std=gnu99 10CC=gcc -std=gnu99
9CFLAGS=-Os 11CFLAGS=-Os
@@ -18,7 +20,7 @@ all: ${compiled_programs} ${SUBMODULES}
18install-stack: 20install-stack:
19 curl -sSL https://get.haskellstack.org/ | sh 21 curl -sSL https://get.haskellstack.org/ | sh
20stack: 22stack:
21 @which stack >/dev/null || make install-stack 23 @command -v stack >/dev/null || make install-stack
22 24
23build-deps: build-deps-stamp 25build-deps: build-deps-stamp
24build-deps-stamp: build-deps.control 26build-deps-stamp: build-deps.control
@@ -26,25 +28,27 @@ build-deps-stamp: build-deps.control
26 sudo ./src/mk-build-deps --root-cmd sudo build-deps.control --install --remove 28 sudo ./src/mk-build-deps --root-cmd sudo build-deps.control --install --remove
27 touch $@ 29 touch $@
28 30
29dynmenu: src/dynmenu.cpp | build-deps 31_build/dynmenu: src/dynmenu.cpp | build-deps
30 $(CXX) $(CFLAGS) $< -o $@ -lcurses 32 $(CXX) $(CFLAGS) $< -o $@ -lcurses
31samizdat-pinentry: src/samizdat-pinentry.c | build-deps 33_build/samizdat-pinentry: src/samizdat-pinentry.c | build-deps
32 $(CC) $(CFLAGS) $< -o $@ -lcurses 34 $(CC) $(CFLAGS) $< -o $@ -lcurses
33krng-add-entropy: src/krng-add-entropy.c | build-deps 35_build/krng-add-entropy: src/krng-add-entropy.c | build-deps
34 $(CC) $(CFLAGS) $< -o $@ 36 $(CC) $(CFLAGS) $< -o $@
35wait_for_files: src/wait_for_files.c | build-deps 37_build/wait_for_files: src/wait_for_files.c | build-deps
36 $(CC) $(CFLAGS) $< -o $@ 38 $(CC) $(CFLAGS) $< -o $@
37%: src/%.c | build-deps 39_build/%: src/%.c | build-deps
38 $(CC) $(CFLAGS) $< -o $@ 40 $(CC) $(CFLAGS) $< -o $@
39 41
40src_bin_programs = btrfs-functions.sh var.sh usb partvi 42src_bin_programs = btrfs-functions.sh var.sh usb partvi
41 43
42bin_programs=$(addprefix src/, $(src_bin_programs)) ${cc_files} ${btrfs_utils} 44bin_programs=$(addprefix src/, $(src_bin_programs)) ${btrfs_utils}
43 45
44btrfs_utils=$(addprefix src/btrfs-utils/, btarfs with-btrfs-seed) 46btrfs_utils=$(addprefix src/btrfs-utils/, btarfs with-btrfs-seed)
45 47
46initrd_files:=$(wildcard src/initrd/*) dynmenu wait_for_files 48initrd_files = $(addprefix src/initrd/,btrfs-create.sh common.sh firstboot.service grok-block \
47initramfs_conf_files:=$(wildcard initramfs-tools/*) 49loop-layer.sh make-total-destroy mdadm-dup.sh menu-select patchroot.sh)
50
51initrd_files += $(addprefix _build/, dynmenu wait_for_files)
48 52
49isolinux_files:=$(wildcard isolinux/*) 53isolinux_files:=$(wildcard isolinux/*)
50 54
@@ -203,7 +207,7 @@ rootfs/seed.iso: $(rootfs) $(if $(VERITY),$(addprefix $(rootfs),.verity .verity.
203 207
204.PHONY: install 208.PHONY: install
205install: 209install:
206 $(SUDO_MAKE) install-stamp 210 $(SUDO_MAKE) install-stamp initrd-install-stamp
207 211
208build-submodules-stamp: build-submodules 212build-submodules-stamp: build-submodules
209 touch $@ 213 touch $@
@@ -211,28 +215,32 @@ build-submodules-stamp: build-submodules
211install-submodules-stamp: install-submodules 215install-submodules-stamp: install-submodules
212 touch $@ 216 touch $@
213 217
214bindir = /usr/local/bin 218initrd_deps = $(initrd_conf_files) $(initrd_files)
219
220initrd-stamp: initrd-install-stamp
221 sudo update-initramfs -u
222 touch $@
215 223
216install-bin-programs: ${bin_programs} 224initrd-install-stamp: $(initrd_deps)
217 install -D -p -t ${instdir}${bindir} ${bin_programs} 225 install -D -t $(initrd_bindir) -- $(initrd_files)
226 install -D -t /etc/initramfs-tools/hooks -- initramfs-tools/hooks/samizdat
227 install -D -t /etc/initramfs-tools/scripts -- initramfs-tools/scripts/samizdat
228 touch $@
218 229
219CP=cp --preserve=timestamps -r 230conf_files = conf/bookworm.list conf/eschew-unstable.pref conf/grub.default
231initrd_conf_files = initramfs-tools/hooks/samizdat initramfs-tools/scripts/samizdat
220 232
221defaults_conf_files = conf/grub.default 233install-stamp: $(conf_files) ${bin_programs}
222initramfs_conf_files = $(addprefix initramfs-tools/,hooks/samizdat scripts/samizdat) 234 install -D -p -t ${instdir}${bindir} -- ${bin_programs}
223install-stamp: install-bin-programs ${compiled_programs}
224 rm -f /etc/apt/apt.conf.d/default-release 235 rm -f /etc/apt/apt.conf.d/default-release
225 install -m644 -t /etc/apt/preferences.d -- conf/eschew-unstable.pref 236 install -m644 -t /etc/apt/preferences.d -- conf/eschew-unstable.pref
226 install -m644 -t /etc/apt/sources.list.d -- conf/bookworm.list 237 install -m644 -t /etc/apt/sources.list.d -- conf/bookworm.list
227 install -m644 --backup=t -T -- conf/grub.default /etc/default/grub 238 install -m644 --backup=t -T -- conf/grub.default /etc/default/grub
228 install -t /etc/initramfs-tools/hooks -- initramfs-tools/hooks/samizdat
229 install -t /etc/initramfs-tools/scripts -- initramfs-tools/scripts/samizdat
230 touch $@ 239 touch $@
231 240
232.PHONY: update upgrade up upgrade-key initrd 241.PHONY: update upgrade up upgrade-key initrd
233 242
234initrd: install 243initrd: initrd-stamp
235 sudo update-initramfs -u
236 244
237update: apt-get-update-stamp 245update: apt-get-update-stamp
238 git pull --ff-only --recurse-submodules 246 git pull --ff-only --recurse-submodules
diff --git a/build-deps.control b/build-deps.control
index dfd6046..f8b5672 100644
--- a/build-deps.control
+++ b/build-deps.control
@@ -6,6 +6,7 @@ Build-Depends: bridge-utils,
6 dosfstools, 6 dosfstools,
7 eatmydata, 7 eatmydata,
8 equivs, 8 equivs,
9 fdisk,
9 kpartx, 10 kpartx,
10 libbz2-dev, 11 libbz2-dev,
11 libdpkg-perl, 12 libdpkg-perl,
diff --git a/initramfs-tools/hooks/samizdat b/initramfs-tools/hooks/samizdat
index 1d4c1fe..fb424e6 100755
--- a/initramfs-tools/hooks/samizdat
+++ b/initramfs-tools/hooks/samizdat
@@ -1,21 +1,20 @@
1#!/bin/sh 1#!/bin/sh
2[ "$1" = prereqs ] && { echo; exit; } 2[ "$1" = prereqs ] && { echo; exit; }
3
4. /usr/share/initramfs-tools/hook-functions 3. /usr/share/initramfs-tools/hook-functions
5 4
5OUR_BINPATH=/usr/local/lib/samizdat/initrd/bin
6
7# This insanity is necessary for initramfs-tools.
8# TODO: File bug against initramfs-tools.
9PATH=$OUR_BINPATH:$PATH
10
6die() { printf 'Error: generating initramfs: %s\n' "$*" >&2; exit 1; } 11die() { printf 'Error: generating initramfs: %s\n' "$*" >&2; exit 1; }
7 12
8CopyExec() { copy_exec "$@" || die "failed to copy_exec $*"; } 13CopyExec() { copy_exec "$@" || die "failed to copy_exec $*"; }
9CopyExecE() { [ "$2" ] || die "cannot find binary to copy: $1"; shift; CopyExec "$@"; } 14CopyExecE() { [ "$2" ] || die "cannot find binary to copy: $1"; shift; CopyExec "$@"; }
10 15
11SAMIZDAT_INITRD_PATH=/usr/local/lib/samizdat-rhizome/initrd
12
13PATH=${SAMIZDAT_INITRD_PATH}:/usr/local/bin:$PATH
14
15repo_execs=$(echo "${SAMIZDAT_INITRD_PATH}"/*)
16
17path_execs=' 16path_execs='
18 mountpoint openvt rsync gpg2 pinentry-curses truncate dmsetup 17 mountpoint openvt rsync truncate dmsetup
19 dmstats cryptsetup mkfs.btrfs btrfs fsck.hfsplus wait_for_files 18 dmstats cryptsetup mkfs.btrfs btrfs fsck.hfsplus wait_for_files
20 dynmenu parted fallocate strace btrfstune sfdisk 19 dynmenu parted fallocate strace btrfstune sfdisk
21' 20'
@@ -23,15 +22,15 @@ path_execs='
23graft_paths=" 22graft_paths="
24 /bin/OpenVT=/bin/openvt 23 /bin/OpenVT=/bin/openvt
25 /bin/LoSetup=/sbin/losetup 24 /bin/LoSetup=/sbin/losetup
26 /patchroot/patchroot.sh=${SAMIZDAT_INITRD_PATH}/patchroot.sh 25 /patchroot/patchroot.sh=${OUR_BINPATH}/patchroot.sh
27" 26"
28 27
29absolute_path_copies='/lib/terminfo/l/linux /usr/bin/gpg-agent' 28absolute_path_copies='/lib/terminfo/l/linux'
30 29
31modules='loop dm-snapshot dm-crypt btrfs hfs hfsplus' 30modules='loop dm-snapshot dm-crypt btrfs hfs hfsplus'
32modules_dirs='kernel/drivers/net/ethernet kernel/fs/nls kernel/crypto' 31modules_dirs='kernel/drivers/net/ethernet kernel/fs/nls kernel/crypto'
33 32
34for f in $repo_execs; do CopyExec "$f" /bin; done 33for f in "${OUR_BINPATH}"/*; do CopyExec "$f" /bin; done
35for c in $path_execs; do 34for c in $path_execs; do
36 s=$(which $c) 35 s=$(which $c)
37 CopyExecE "$c" "$s" /bin; 36 CopyExecE "$c" "$s" /bin;