[3/3] make usage of usrmerge distro dependent

Message ID 20241219110010.389690-3-felix.moessbauer@siemens.com
State Accepted, archived
Headers show
Series [1/3] bootstrap: space-separate base packages | expand

Commit Message

Felix Moessbauer Dec. 19, 2024, 11 a.m. UTC
The situation around usrmerge is complex: In older distro versions that
must be included to get the /{bin,sbin,lib} dirs symlinked to their
counterparts in /usr. In debian, the essential package
init-system-helpers depends on usrmerge from bookworm on, so it is
discouraged to manually include it (in the future it might be dropped
completely). In Ubuntu, the usrmerge package is already dropped from
noble on, currently breaking the build.

We now add the package using the distro conf just for the distros that
need it, restoring the ubuntu build and making it future-proof.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
 meta-isar/conf/distro/raspios-bullseye.conf           | 1 +
 meta-isar/conf/distro/ubuntu-common.inc               | 4 ++++
 meta/conf/distro/debian-common.conf                   | 4 ++++
 meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc | 2 +-
 4 files changed, 10 insertions(+), 1 deletion(-)

Patch

diff --git a/meta-isar/conf/distro/raspios-bullseye.conf b/meta-isar/conf/distro/raspios-bullseye.conf
index 2515f0fd..a362289d 100644
--- a/meta-isar/conf/distro/raspios-bullseye.conf
+++ b/meta-isar/conf/distro/raspios-bullseye.conf
@@ -17,6 +17,7 @@  DISTRO_APT_SOURCES:arm64 ?= "conf/distro/raspios-bullseye-64.list"
 
 DISTRO_BOOTSTRAP_KEYS = "http://raspbian.raspberrypi.org/raspbian.public.key;sha256sum=ca59cd4f2bcbc3a1d41ba6815a02a8dc5c175467a59bd87edeac458f4a5345de"
 DISTRO_BOOTSTRAP_KEYS:arm64 = ""
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append = " usrmerge"
 
 DISTRO_KERNELS ?= "kernel kernel7 kernel7l kernel8"
 
diff --git a/meta-isar/conf/distro/ubuntu-common.inc b/meta-isar/conf/distro/ubuntu-common.inc
index d3374baa..88a3b4f0 100644
--- a/meta-isar/conf/distro/ubuntu-common.inc
+++ b/meta-isar/conf/distro/ubuntu-common.inc
@@ -16,6 +16,10 @@  BOOTSTRAP_KEY = "file://${LAYERDIR_isar}/conf/distro/ubuntu.public.key;sha256sum
 DISTRO_BOOTSTRAP_KEYS += "${BOOTSTRAP_KEY}"
 HOST_DISTRO_BOOTSTRAP_KEYS += "${BOOTSTRAP_KEY}"
 
+# from noble on this package does not exist anymore, before it is needed
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append:focal = " usrmerge"
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append:jammy = " usrmerge"
+
 # kernel package name is linux-image-generic in Ubuntu
 KERNEL_NAME = "generic"
 
diff --git a/meta/conf/distro/debian-common.conf b/meta/conf/distro/debian-common.conf
index b5d8aa9a..8da17d6f 100644
--- a/meta/conf/distro/debian-common.conf
+++ b/meta/conf/distro/debian-common.conf
@@ -39,6 +39,10 @@  SYSTEMD_BOOTLOADER_INSTALL:buster = "systemd:${DISTRO_ARCH}"
 COMPAT_DISTRO_ARCH:amd64 = "i386"
 COMPAT_DISTRO_ARCH:arm64 = "armhf"
 
+# from debian 12 on, this is referenced by init-system-helpers, before it is needed
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append:buster = " usrmerge"
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append:bullseye = " usrmerge"
+
 # snapshot mirror for reproducible builds
 DISTRO_APT_SNAPSHOT_PREMIRROR ??= " \
     deb.debian.org/(debian-security)/? snapshot.debian.org/archive/\1/${@d.getVarFlag('ISAR_APT_SNAPSHOT_DATE', 'security')}\n \
diff --git a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc
index 01ed1e59..931f6f13 100644
--- a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc
+++ b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc
@@ -11,7 +11,7 @@  inherit deb-dl-dir
 
 FILESEXTRAPATHS:append = ":${LAYERDIR_core}/recipes-core/isar-bootstrap/files"
 
-DISTRO_BOOTSTRAP_BASE_PACKAGES += "locales apt usrmerge"
+DISTRO_BOOTSTRAP_BASE_PACKAGES += "locales apt"
 DISTRO_BOOTSTRAP_BASE_PACKAGES:append:https-support = " ca-certificates"
 
 BOOTSTRAP_TMPDIR = "${WORKDIR}/tempdir"