diff options
author | Gordon GECOS <u@adam> | 2023-11-22 16:07:32 -0500 |
---|---|---|
committer | Gordon GECOS <u@adam> | 2023-11-22 16:14:17 -0500 |
commit | e015b8cbe957a1913f178dc5e4ba166972f79320 (patch) | |
tree | b11b5af7586d05d2bd064ea3b4c14612897b6e02 | |
parent | 81fdd7a90cc0dfdc2bc2744d41a346c0d255a6af (diff) |
build system cleanup
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile | 52 | ||||
-rw-r--r-- | build-deps.control | 1 | ||||
-rwxr-xr-x | initramfs-tools/hooks/samizdat | 21 |
4 files changed, 43 insertions, 33 deletions
@@ -59,3 +59,5 @@ apt-get-update-stamp | |||
59 | *.tmp | 59 | *.tmp |
60 | samizdat-ficlonerange | 60 | samizdat-ficlonerange |
61 | /rootfs/_filesystem/ | 61 | /rootfs/_filesystem/ |
62 | initrd-stamp | ||
63 | initrd-install-stamp | ||
@@ -1,9 +1,11 @@ | |||
1 | prefix?=/usr/local | 1 | prefix?=/usr/local |
2 | bindir = $(prefix)/bin | ||
3 | initrd_bindir = $(prefix)/lib/samizdat/initrd/bin | ||
2 | 4 | ||
3 | cc_files=wait_for_files samizdat-pinentry krng-add-entropy samizdat-ficlonerange | 5 | cc_files=wait_for_files samizdat-pinentry krng-add-entropy samizdat-ficlonerange |
4 | cpp_files=dynmenu | 6 | cpp_files=dynmenu |
5 | 7 | ||
6 | compiled_programs=${cc_files} ${cpp_files} | 8 | compiled_programs = $(addprefix _build/, ${cc_files} ${cpp_files}) |
7 | 9 | ||
8 | CC=gcc -std=gnu99 | 10 | CC=gcc -std=gnu99 |
9 | CFLAGS=-Os | 11 | CFLAGS=-Os |
@@ -18,7 +20,7 @@ all: ${compiled_programs} ${SUBMODULES} | |||
18 | install-stack: | 20 | install-stack: |
19 | curl -sSL https://get.haskellstack.org/ | sh | 21 | curl -sSL https://get.haskellstack.org/ | sh |
20 | stack: | 22 | stack: |
21 | @which stack >/dev/null || make install-stack | 23 | @command -v stack >/dev/null || make install-stack |
22 | 24 | ||
23 | build-deps: build-deps-stamp | 25 | build-deps: build-deps-stamp |
24 | build-deps-stamp: build-deps.control | 26 | build-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 | ||
29 | dynmenu: src/dynmenu.cpp | build-deps | 31 | _build/dynmenu: src/dynmenu.cpp | build-deps |
30 | $(CXX) $(CFLAGS) $< -o $@ -lcurses | 32 | $(CXX) $(CFLAGS) $< -o $@ -lcurses |
31 | samizdat-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 |
33 | krng-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 $@ |
35 | wait_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 | ||
40 | src_bin_programs = btrfs-functions.sh var.sh usb partvi | 42 | src_bin_programs = btrfs-functions.sh var.sh usb partvi |
41 | 43 | ||
42 | bin_programs=$(addprefix src/, $(src_bin_programs)) ${cc_files} ${btrfs_utils} | 44 | bin_programs=$(addprefix src/, $(src_bin_programs)) ${btrfs_utils} |
43 | 45 | ||
44 | btrfs_utils=$(addprefix src/btrfs-utils/, btarfs with-btrfs-seed) | 46 | btrfs_utils=$(addprefix src/btrfs-utils/, btarfs with-btrfs-seed) |
45 | 47 | ||
46 | initrd_files:=$(wildcard src/initrd/*) dynmenu wait_for_files | 48 | initrd_files = $(addprefix src/initrd/,btrfs-create.sh common.sh firstboot.service grok-block \ |
47 | initramfs_conf_files:=$(wildcard initramfs-tools/*) | 49 | loop-layer.sh make-total-destroy mdadm-dup.sh menu-select patchroot.sh) |
50 | |||
51 | initrd_files += $(addprefix _build/, dynmenu wait_for_files) | ||
48 | 52 | ||
49 | isolinux_files:=$(wildcard isolinux/*) | 53 | isolinux_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 |
205 | install: | 209 | install: |
206 | $(SUDO_MAKE) install-stamp | 210 | $(SUDO_MAKE) install-stamp initrd-install-stamp |
207 | 211 | ||
208 | build-submodules-stamp: build-submodules | 212 | build-submodules-stamp: build-submodules |
209 | touch $@ | 213 | touch $@ |
@@ -211,28 +215,32 @@ build-submodules-stamp: build-submodules | |||
211 | install-submodules-stamp: install-submodules | 215 | install-submodules-stamp: install-submodules |
212 | touch $@ | 216 | touch $@ |
213 | 217 | ||
214 | bindir = /usr/local/bin | 218 | initrd_deps = $(initrd_conf_files) $(initrd_files) |
219 | |||
220 | initrd-stamp: initrd-install-stamp | ||
221 | sudo update-initramfs -u | ||
222 | touch $@ | ||
215 | 223 | ||
216 | install-bin-programs: ${bin_programs} | 224 | initrd-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 | ||
219 | CP=cp --preserve=timestamps -r | 230 | conf_files = conf/bookworm.list conf/eschew-unstable.pref conf/grub.default |
231 | initrd_conf_files = initramfs-tools/hooks/samizdat initramfs-tools/scripts/samizdat | ||
220 | 232 | ||
221 | defaults_conf_files = conf/grub.default | 233 | install-stamp: $(conf_files) ${bin_programs} |
222 | initramfs_conf_files = $(addprefix initramfs-tools/,hooks/samizdat scripts/samizdat) | 234 | install -D -p -t ${instdir}${bindir} -- ${bin_programs} |
223 | install-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 | ||
234 | initrd: install | 243 | initrd: initrd-stamp |
235 | sudo update-initramfs -u | ||
236 | 244 | ||
237 | update: apt-get-update-stamp | 245 | update: 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 | ||
5 | OUR_BINPATH=/usr/local/lib/samizdat/initrd/bin | ||
6 | |||
7 | # This insanity is necessary for initramfs-tools. | ||
8 | # TODO: File bug against initramfs-tools. | ||
9 | PATH=$OUR_BINPATH:$PATH | ||
10 | |||
6 | die() { printf 'Error: generating initramfs: %s\n' "$*" >&2; exit 1; } | 11 | die() { printf 'Error: generating initramfs: %s\n' "$*" >&2; exit 1; } |
7 | 12 | ||
8 | CopyExec() { copy_exec "$@" || die "failed to copy_exec $*"; } | 13 | CopyExec() { copy_exec "$@" || die "failed to copy_exec $*"; } |
9 | CopyExecE() { [ "$2" ] || die "cannot find binary to copy: $1"; shift; CopyExec "$@"; } | 14 | CopyExecE() { [ "$2" ] || die "cannot find binary to copy: $1"; shift; CopyExec "$@"; } |
10 | 15 | ||
11 | SAMIZDAT_INITRD_PATH=/usr/local/lib/samizdat-rhizome/initrd | ||
12 | |||
13 | PATH=${SAMIZDAT_INITRD_PATH}:/usr/local/bin:$PATH | ||
14 | |||
15 | repo_execs=$(echo "${SAMIZDAT_INITRD_PATH}"/*) | ||
16 | |||
17 | path_execs=' | 16 | path_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=' | |||
23 | graft_paths=" | 22 | graft_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 | ||
29 | absolute_path_copies='/lib/terminfo/l/linux /usr/bin/gpg-agent' | 28 | absolute_path_copies='/lib/terminfo/l/linux' |
30 | 29 | ||
31 | modules='loop dm-snapshot dm-crypt btrfs hfs hfsplus' | 30 | modules='loop dm-snapshot dm-crypt btrfs hfs hfsplus' |
32 | modules_dirs='kernel/drivers/net/ethernet kernel/fs/nls kernel/crypto' | 31 | modules_dirs='kernel/drivers/net/ethernet kernel/fs/nls kernel/crypto' |
33 | 32 | ||
34 | for f in $repo_execs; do CopyExec "$f" /bin; done | 33 | for f in "${OUR_BINPATH}"/*; do CopyExec "$f" /bin; done |
35 | for c in $path_execs; do | 34 | for c in $path_execs; do |
36 | s=$(which $c) | 35 | s=$(which $c) |
37 | CopyExecE "$c" "$s" /bin; | 36 | CopyExecE "$c" "$s" /bin; |