]> git.plutz.net Git - blast/commitdiff
subvolume target, improved readablity, rollback/fix cfg_root receipe not using variab...
authorPaul Hänsch <paul@plutz.net>
Sun, 12 Apr 2026 13:51:06 +0000 (15:51 +0200)
committerPaul Hänsch <paul@plutz.net>
Sun, 12 Apr 2026 13:51:06 +0000 (15:51 +0200)
Makefile
targets/subvolume.mk [new file with mode: 0644]

index 4d850645cb521fdfd890260215e211d81c6e92ca..0fbcb431a2c953d6ebd5cc83acd14c3b39fd6224 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -49,6 +49,9 @@ endif
 ifdef iso
   target := isoimage
 endif
+ifdef subvol
+  target := subvolume
+endif
 
 include $(addsuffix .mk, $(addprefix targets/, ${target}))
 
@@ -66,14 +69,15 @@ endif
 
 export SOURCES SYSROOT CFGROOT ARCH KEYRING BOOTSTRAP
 
-sys_root_${release}_${ARCH}/:
+sys_root_${release}_${ARCH}:
        btrfs subvol create "$@" || mkdir "$@"
        chmod 755 "$@"
 
-${CFGROOT}: sys_root_${release}_${ARCH}/ _install
-       -btrfs sub del "$@" || rm -r "$@"
-       btrfs sub snap "$<" "$@" || mkdir "$@"
-       chmod 755 "$@"
+# do not use ${CFGROOT} variable, because some targets need different receipes
+cfg_root: ${SYSROOT} _install
+       -btrfs sub del "$@" || rm -r -- "$@"
+       btrfs sub snap "$<" "$@" || mkdir -- "$@"
+       chmod 755 -- "$@"
 
 _bootstrap: ${SYSROOT}/bin/sh
 ${SYSROOT}/bin/sh: | ${SYSROOT}
@@ -88,7 +92,7 @@ _aptkeys: ${SYSROOT}/etc/apt/trusted.gpg.d/
 _norecommends: ${SYSROOT}/etc/apt/apt.conf.d/10norecommends
 
 ${SYSROOT}/etc/apt/apt.conf.d/10norecommends: ${SYSROOT}
-       mkdir -p -m 755 "$(dir $@)"
+       mkdir -p -m 755 -- "$(@D)"
        printf 'APT::%s "false";\n' "Install-Recommends" "Keep-Recommends" "Install-Suggests" "Keep-Suggests" >"$@"
        chmod 644 "$@"
 
@@ -120,10 +124,13 @@ _install: ${SYSROOT} _aptkeys _norecommends
 _copy: ${SYSROOT} ${CFGROOT}
        cp -au "$${SYSROOT}/." "$${CFGROOT}/"
 
-_config: ${CFGROOT}
+_config:
        -ln -sf /dev/null "$${CFGROOT}/etc/systemd/network/99-default.link"
-       printf '\nsession       optional        pam_mkhomedir.so umask=0027\n' >>"$${CFGROOT}/etc/pam.d/common-session"
-       mountpoint "$${CFGROOT}/proc" || mount -o bind /proc "$${CFGROOT}/proc"
+       printf '\n%s\n' \
+         'session      optional        pam_mkhomedir.so umask=0027' \
+         >>"$${CFGROOT}/etc/pam.d/common-session"
+       mountpoint "$${CFGROOT}/proc" \
+       || mount -o bind /proc "$${CFGROOT}/proc"
        chroot "$${CFGROOT}" update-initramfs -u
        -umount "$${CFGROOT}/proc"
 
diff --git a/targets/subvolume.mk b/targets/subvolume.mk
new file mode 100644 (file)
index 0000000..fbada5d
--- /dev/null
@@ -0,0 +1,5 @@
+${subvol}: _config
+_target: ${subvol}
+
+${subvol}:
+       btrfs sub snap "${CFGROOT}" "$@"