Generate recipes using a Python script instead of multiplying sed calls.

This is a proof of concept rather than an ideal, final situation.

It can be used this way:

    for v in 1 2 3 4 ; do
      for s in buster bullseye; do
        ./generate-recipe.py $v $s
      done
    done

and it has been verified to produce very similar results compared to the
existing many-sed approach.

Differences are as follows:
 - Missing newline after some backports stanza, due to the removal of
   the other APT line. There's already MR#51 that aims at fixing some
   newline-related issues anyway, so this can be addressed separately.
 - Less schizophrenia in the generated sources.list for buster/4, as we
   are now only showing a reason for enabling the backports, instead
   of starting by explaining why backports are disabled by default.
 - Dropping APT::Default-Release = buster in the buster/4 case, which
   is no longer needed as we are pulling things from buster-backports
   rather than pulling them from unstable (see 57e90df103).
 - No longer trying to fix the firmware package name by throwing a
   broken sed at rpi-reconfigure-raspi-firmware.service in the buster/4
   case: the syntax was buggy and fixing it would have made us try to
   replace raspi-firmware with raspi-firmware/buster-backports, while
   the correct thing to do is to not touch it in the first place
   (raspi-firmware is the correct name for the firmware package, pulled
   from buster-backports).

As a side effect, this transforms the existing __EXTRA_SHELL_CMDS__ into
a slightly more explicit __EXTRA_ROOT_SHELL_CMDS__ which now has its
__EXTRA_CHROOT_SHELL_CMDS__ twin. That's the entry point that was
missing and made 45cb5619d4 necessary in the past.
This commit is contained in:
Cyril Brulebois
2021-08-28 04:01:30 +02:00
parent eef3f4d3c1
commit 4483f4cdfb
2 changed files with 164 additions and 6 deletions

View File

@@ -53,10 +53,7 @@ steps:
contents: |
deb http://deb.debian.org/debian __RELEASE__ main contrib non-free
deb http://security.debian.org/debian-security __SECURITY_SUITE__ main contrib non-free
# Backports are _not_ enabled by default.
# Enable them by uncommenting the following line:
# deb http://deb.debian.org/debian __RELEASE__-backports main contrib non-free
__OTHER_APT_ENABLE__
__BACKPORTS__
unless: rootfs_unpacked
- copy-file: /etc/initramfs-tools/hooks/rpi-resizerootfs
@@ -84,7 +81,7 @@ steps:
- wpasupplicant
- __FIRMWARE_PKG__
- __LINUX_IMAGE__
__EXTRA_PKGS__
__WIRELESS_FIRMWARE_PKG_MAYBE__
tag: /
unless: rootfs_unpacked
@@ -121,7 +118,7 @@ steps:
ln -s /etc/systemd/system/rpi-generate-ssh-host-keys.service "${ROOT?}/etc/systemd/system/multi-user.target.requires/rpi-generate-ssh-host-keys.service"
rm -f "${ROOT?}"/etc/ssh/ssh_host_*_key*
__EXTRA_SHELL_CMDS__
__EXTRA_ROOT_SHELL_CMDS__
root-fs: /
# Copy the relevant device tree files to the boot partition
@@ -145,6 +142,7 @@ steps:
shell: |
sed -i 's/^/console=__SERIAL_CONSOLE__ /' /boot/firmware/cmdline.txt
sed -i 's/.dev.mmcblk0p2/LABEL=RASPIROOT/' /boot/firmware/cmdline.txt
__EXTRA_CHROOT_SHELL_CMDS__
# TODO(https://github.com/larswirzenius/vmdb2/issues/24): remove once vmdb
# clears /etc/resolv.conf on its own.