Skip to contentSkip to conversation

image.bbclass: fix systemd_preset_all

PATCH Superseded Chen Qi 2 participants 3 messages Jun 28, 2019

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Chen Qi

author
#0 lore raw

cover image.bbclass: fix systemd_preset_all

*** BLURB HERE ***
The following changes since commit bfe3012ea4b2c973bd6ca5fa1de1adf51e1a9da4:

busybox: Fix typo in syslog initscript (2019-06-27 13:28:48 +0100)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib ChenQi/image-systemd
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/image-systemd

Chen Qi (1):
image.bbclass: fix systemd_preset_all

 meta/classes/image.bbclass | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH 1/1 image.bbclass: fix systemd_preset_all

Check the existence of systemctl before invoking it. This is because even if 'systemd' is in DISTRO_FEATURES, it's possible that systemd is not even installed. e.g. container-test-image in meta-selftest layer. This would fix the following test case when using systemd as the init manager.

containerimage.ContainerImageTests.test_expected_files

Also remove the IMAGE_EXTRADEPENDS setting, as nothing references this variable.

---
 meta/classes/image.bbclass | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
meta/classes/image.bbclass +3 -2
index d2b2fb9..2115c6c 100644
@@ -666,10 +666,11 @@ reproducible_final_image_task () {
 }
 
 systemd_preset_all () {
-    systemctl --root="${IMAGE_ROOTFS}" --preset-mode=enable-only preset-all
+    if [ -e ${STAGING_DIR_NATIVE}${bindir}/systemctl ]; then
+	systemctl --root="${IMAGE_ROOTFS}" --preset-mode=enable-only preset-all
+    fi
 }
 
-IMAGE_EXTRADEPENDS += "${@ 'systemd-systemctl-native' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and not bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else ''}"
 IMAGE_PREPROCESS_COMMAND_append = " ${@ 'systemd_preset_all;' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and not bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else ''} reproducible_final_image_task; "
 
 CVE_PRODUCT = ""
Signature · 1 line
1.9.1
#2 lore raw
Quoted 21 lines · Chen Qi

Check the existence of systemctl before invoking it. This is because even if 'systemd' is in DISTRO_FEATURES, it's possible that systemd is not even installed. e.g. container-test-image in meta-selftest layer. This would fix the following test case when using systemd as the init manager.

containerimage.ContainerImageTests.test_expected_files

Also remove the IMAGE_EXTRADEPENDS setting, as nothing references this variable.

---
 meta/classes/image.bbclass | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
meta/classes/image.bbclass +0 -0
index d2b2fb9..2115c6c 100644

meta/classes/image.bbclass reproducible_final_image_task () { · line 672

Quoted 8 lines
meta/classes/image.bbclass +3 -1
@@ -666,10 +666,11 @@ reproducible_final_image_task () {
 }
 
 systemd_preset_all () {
-    systemctl --root="${IMAGE_ROOTFS}" --preset-mode=enable-only preset-all
+    if [ -e ${STAGING_DIR_NATIVE}${bindir}/systemctl ]; then
+	systemctl --root="${IMAGE_ROOTFS}" --preset-mode=enable-only preset-all
+    fi
 }

Shouldn't we be checking something in the image rather than the presence of a tool?

Cheers,

Richard