From 4a1aef10f2aefc964e26e1bbb400249476324cd8 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 21 Feb 2024 10:12:09 -0500 Subject: meta-agl-core: Improve connman-wait-online usability Changes: - Ship connman-wait-online in packagegroup-agl-core-connectivity. - Add installation of a systemd drop-in configuration file for systemd-networkd-wait-online when VIRTUAL_RUNIME_net_manager is set to connman that will disable it. This is required to avoid boot hangs if a unit does add a dependency on the network-online target. The approach is not ideal, but it is not clear how to avoid systemd-networkd-wait-online getting enabled without actually modifying the systemd-networkd unit. Bug-AGL: SPEC-5082 Change-Id: Id0a1276e35c68ecb6087f89a880fc069594caca4 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/29697 ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller (cherry picked from commit 4f764134d2f307c1eb63cea7cc0950a7873a2e43) Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/29635 --- .../recipes-core/systemd/systemd/wait-disable.conf | 3 +++ .../recipes-core/systemd/systemd_aglcore.inc | 22 ++++++++++++++-------- .../packagegroup-agl-core-connectivity.bb | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 meta-agl-core/recipes-core/systemd/systemd/wait-disable.conf diff --git a/meta-agl-core/recipes-core/systemd/systemd/wait-disable.conf b/meta-agl-core/recipes-core/systemd/systemd/wait-disable.conf new file mode 100644 index 000000000..e5d4f4b28 --- /dev/null +++ b/meta-agl-core/recipes-core/systemd/systemd/wait-disable.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=/usr/bin/true diff --git a/meta-agl-core/recipes-core/systemd/systemd_aglcore.inc b/meta-agl-core/recipes-core/systemd/systemd_aglcore.inc index a61497ec3..9681329be 100644 --- a/meta-agl-core/recipes-core/systemd/systemd_aglcore.inc +++ b/meta-agl-core/recipes-core/systemd/systemd_aglcore.inc @@ -2,29 +2,35 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/systemd:" SRC_URI += "\ file://e2fsck.conf \ - ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','systemd','file://wired.network','',d)} \ + file://wait-disable.conf \ + file://wired.network \ " -# enable networkd/resolved support +# Enable networkd/resolved support if using systemd for network management PACKAGECONFIG:append = " \ ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','systemd','networkd resolved','',d)} \ iptc \ " +# SPEC-737: connmand also has a NTP client which races with systemd-timesyncd +PACKAGECONFIG:remove = "timesyncd" + +# Enable systemd-coredump when agl-devel is set on +PACKAGECONFIG:append:agl-devel = " coredump" + do_install:append() { # Install /etc/e2fsck.conf to avoid boot stuck by wrong clock time install -m 644 -p -D ${WORKDIR}/e2fsck.conf ${D}${sysconfdir}/e2fsck.conf - if ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','systemd','true','false',d)}; then + if [ "${VIRTUAL-RUNTIME_net_manager}" = "systemd" ]; then # Install DHCP configuration for Ethernet adapters install -m 644 ${WORKDIR}/wired.network ${D}${sysconfdir}/systemd/network + elif [ "${VIRTUAL-RUNTIME_net_manager}" = "connman" ]; then + # Disable systemd-networkd-wait-online by default + install -d ${D}${systemd_system_unitdir}/systemd-networkd-wait-online.service.d + install -m 0644 ${WORKDIR}/wait-disable.conf ${D}${systemd_system_unitdir}/systemd-networkd-wait-online.service.d/ fi } FILES:${PN} += "${sysconfdir}/e2fsck.conf " -# SPEC-737: connmand also has a NTP client which races with systemd-timesyncd -PACKAGECONFIG:remove = "timesyncd" - -# Enable systemd-coredump when agl-devel is set on -PACKAGECONFIG:append:agl-devel = " coredump" diff --git a/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb index 7f3c95174..aeee0f8d3 100644 --- a/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb @@ -13,7 +13,7 @@ PKGGROUP_ZEROCONF = "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'packag RDEPENDS:${PN} += "\ ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client connman-conf \ - connman-tests connman-tools connman-ncurses' ,'',d)} \ + connman-wait-online connman-tests connman-tools connman-ncurses' ,'',d)} \ ${@bb.utils.contains('AGL_FEATURES', 'agl-devel', '${PKGGROUP_ZEROCONF}', '', d)} \ systemd-conf-canbus \ " -- cgit 1.2.3-korg