From 48052ea7774ebc85599d262abdf5fe37e5c32ba9 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 23 Aug 2020 20:37:30 -0400 Subject: Makefile: use fsmgr to build samizdat.patch.btrfs --- Makefile | 67 ++++++++++++++++++++++------------------------------------------ 1 file changed, 23 insertions(+), 44 deletions(-) diff --git a/Makefile b/Makefile index 35586da..35294b4 100644 --- a/Makefile +++ b/Makefile @@ -140,16 +140,26 @@ update-submodules: install-submodules: cmd=install install-submodules: update-submodules $(INSTALL_SUBMODULES) -rootfs = samizdat -export rootfs +rootfs = samizdat.btrfs +patchfs = $(patsubst %.btrfs,%.patch.btrfs,$(rootfs)) +rootfs_verity = rootfs/$(rootfs).verity -.PHONY: rootfs -rootfs: +.PHONY: rootfs rootfs-deps +rootfs-deps: [ -e install-submodules-stamp ] || make install-submodules-stamp [ -e install-stamp ] || $(SUDO_MAKE) install-stamp - $(MAKE) -C rootfs + +btrfs_images = $(addprefix rootfs/, $(rootfs) $(patchfs)) +rootfs: rootfs-deps $(btrfs_images) $(rootfs_verity) sudo mkdir -p /srv/nbd - sudo ln -sf "$$PWD"/rootfs/$(rootfs).btrfs /srv/nbd/samizdat.btrfs + sudo ln -sf "$$PWD"/rootfs/$(rootfs) /srv/nbd/samizdat.btrfs +ifneq (,$(patchfs)) + sudo ln -sf "$$PWD"/rootfs/$(patchfs) /srv/nbd/samizdat.patch.btrfs +endif + +FORCE: +$(btrfs_images): FORCE + $(MAKE) -C rootfs $(notdir $@) boot: rootfs sudo SLOW_BOOT=y qemu.sh @@ -193,12 +203,14 @@ get_loop_dev="$$(sudo losetup -n -O name -j $@~tmp)" get_backing_file="$$(sudo losetup -n -O back-file -j $@~tmp)" get_min_size="$$(btrfs inspect-internal min-dev-size --id 1 $@.mnt | (read b _; echo $$b))" -%.btrfs.verity: %.btrfs - sudo veritysetup format $< $@ > $@.log +%.verity: % + sudo veritysetup format $< $@~tmp > $@.log~tmp + mv $@.log~tmp $@.log + mv $@~tmp $@ sudo chmod 644 $@ h=$$(sed -ne 's/^Root hash:[ \t]*//p' $@.log) && [ "$$h" ] -%.btrfs.verity.log.asc: %.btrfs.verity.log +%.verity.log.asc: %.verity.log sudo gpg --armor --detach-sign $^ rootfs/samizdat.seed.btrfs: rootfs/samizdat.btrfs @@ -218,8 +230,6 @@ else mv $@~tmp $@ endif -FORCE: - debian_dist := $(shell lsb_release -cs) apt_list_files = $(addprefix /./var/lib/apt/lists/, \ @@ -231,37 +241,10 @@ apt_list_files = $(addprefix /./var/lib/apt/lists/, \ stale = [ ! -e $@ ] || [ $$(( $$(date +%s) - $$(date -r $@ +%s) )) -gt 36000 ] -apt-get-update-stamp: FORCE +.PHONY: apt-get-update-stamp +apt-get-update-stamp: @if $(stale); then set -x; sudo apt-get update && touch $@; fi -rootfs/samizdat.patch.btrfs: rootfs/samizdat.seed.btrfs \ - $(if $(INTERACTIVE_CHROOT),FORCE,rootfs/patchroot.sh) -ifneq ($(shell id -u),0) - $(SUDO_MAKE) $@ -else - rm -f $@~tmp - touch $@~tmp - fallocate -l $(samizdat_btrfs_patch_size) $@~tmp - test -d $@.mnt || mkdir $@.mnt - ! mountpoint -q $@.mnt || umount $@.mnt - mount -o compress,ro -t btrfs $< $@.mnt - a=$(get_loop_dev); [ -z "$$a" ] || losetup -d $$a - losetup -f $@~tmp - btrfs device add $(get_loop_dev) $@.mnt - mount -o compress,rw,remount $@.mnt - $(SUDO_MAKE) apt-get-update-stamp - rsync -Ra $(apt_list_files) $@.mnt/ -ifdef INTERACTIVE_CHROOT - chroot $@.mnt bash -i -else - chroot $@.mnt sh < rootfs/patchroot.sh -endif - umount $@.mnt - losetup -f $< - btrfstune -S1 $@~tmp - mv $@~tmp $@ -endif - samizdat.iso: patched.iso cp --reflink $< $@ @@ -326,10 +309,6 @@ rootfs/seed.iso: $(addprefix rootfs/samizdat.seed.btrf, s \ -follow default mv $@~tmp $@ -rootfs/samizdat.btrfs: - make -C rootfs - - .PHONY: install install: [ -e install-submodules-stamp ] || make install-submodules-stamp -- cgit v1.2.3