* Refactor volatiles so that it generates sysvinit/populate-volatiles as well as tmpfiles.d configs * Add systemd PACKAGECONFIG for enabling systemd support * Setup SYSTEMD_SERVICE variables * Add FILES values for systemd .service/.mount/etc files * sed patterns to the 4.5.0 recipe to fix some issues with the source around qemu-system-i386 and libsystemd-daemon
Signed-off-by: Nathan Rossi <[email protected]> --- recipes-extended/xen/xen.inc | 81 ++++++++++++++++++++++++++++++--------- recipes-extended/xen/xen_4.5.0.bb | 8 ++++ 2 files changed, 70 insertions(+), 19 deletions(-) diff --git a/recipes-extended/xen/xen.inc b/recipes-extended/xen/xen.inc index 82bb3d2..3f703ce 100644 --- a/recipes-extended/xen/xen.inc +++ b/recipes-extended/xen/xen.inc @@ -8,16 +8,18 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e0f0f3ac55608719a82394cc353928df" COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux' -inherit autotools-brokensep gettext setuptools update-rc.d +inherit autotools-brokensep gettext setuptools update-rc.d systemd require xen-arch.inc PACKAGECONFIG ??= " \ sdl \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ " PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,virtual/libsdl," PACKAGECONFIG[xsm] = "--enable-xsmpolicy,--disable-xsmpolicy,checkpolicy-native," +PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd," DEPENDS = " \ bison-native \ @@ -111,6 +113,7 @@ RDEPENDS_${PN}-xencommons = "\ ${PN}-console \ ${PN}-xenstore \ ${PN}-xenstored \ + ${PN}-xl \ ${PN}-scripts-common \ " @@ -499,6 +502,7 @@ FILES_${PN}-udev = "\ FILES_${PN}-volatiles = "\ ${sysconfdir}/default/volatiles/99_xen \ + ${sysconfdir}/tmpfiles.d/xen.conf \ " FILES_${PN}-xcutils = "\ @@ -555,6 +559,7 @@ FILES_${PN}-xentrace = "\ FILES_${PN}-xen-watchdog = "\ ${sbindir}/xenwatchdogd \ ${sysconfdir}/init.d/xen-watchdog \ + ${systemd_unitdir}/system/xen-watchdog.service \ " FILES_${PN}-xl = "\ @@ -596,6 +601,15 @@ FILES_${PN}-xm = "\ FILES_${PN}-xencommons += "\ ${sysconfdir}/default/xencommons \ ${sysconfdir}/init.d/xencommons \ + ${systemd_unitdir}/modules-load.d/xen.conf \ + ${systemd_unitdir}/system/proc-xen.mount \ + ${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service \ + ${systemd_unitdir}/system/xenconsoled.service \ + ${systemd_unitdir}/system/xen-init-dom0.service \ + ${systemd_unitdir}/system/xenstored.service \ + ${systemd_unitdir}/system/xenstored.socket \ + ${systemd_unitdir}/system/xenstored_ro.socket \ + ${systemd_unitdir}/system/var-lib-xenstored.mount \ " FILES_${PN}-xend += " \ @@ -608,6 +622,7 @@ FILES_${PN}-xendomains += "\ ${sysconfdir}/default/xendomains \ ${sysconfdir}/init.d/xendomains \ ${sysconfdir}/sysconfig/xendomains \ + ${systemd_unitdir}/system/xendomains.service \ " # configure init.d scripts @@ -621,6 +636,21 @@ INITSCRIPT_PARAMS_${PN}-xend = "defaults 82" INITSCRIPT_NAME_${PN}-xendomains = "xendomains" INITSCRIPT_PARAMS_${PN}-xendomains = "defaults 83" +# systemd packages +SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains" +SYSTEMD_SERVICE_${PN}-watchdog = "xen-watchdog.service" +SYSTEMD_SERVICE_${PN}-xencommons = " \ + proc-xen.mount \ + var-lib-xenstored.mount \ + xen-qemu-dom0-disk-backend.service \ + xenconsoled.service \ + xen-init-dom0.service \ + xenstored.service \ + xenstored.socket \ + xenstored_ro.socket \ + " +SYSTEMD_SERVICE_${PN}-xendomains = "xendomains.service" + #### REQUIRED ENVIRONMENT VARIABLES #### export BUILD_SYS export HOST_SYS @@ -650,6 +680,8 @@ EXTRA_OECONF += " \ --exec-prefix=/usr \ --prefix=/usr \ --host=${HOST_SYS} \ + --with-systemd=${systemd_unitdir}/system \ + --with-systemd-modules-load=${systemd_unitdir}/modules-load.d \ --disable-stubdom \ --disable-ioemu-stubdom \ --disable-pv-grub \ @@ -686,33 +718,44 @@ do_install() { ${D}${localstatedir}/volatile \ ${D}${localstatedir}/lib/xen + VOLATILE_DIRS=" \ + ${localstatedir}/run/xenstored \ + ${localstatedir}/run/xend \ + ${localstatedir}/run/xend/boot \ + ${localstatedir}/run/xen \ + ${localstatedir}/log/xen \ + ${localstatedir}/lock/xen \ + ${localstatedir}/lock/subsys \ + ${localstatedir}/lib/xen \ + " + # install volatiles using populate_volatiles mechanism install -d ${D}${sysconfdir}/default/volatiles - echo "d root root 0755 ${localstatedir}/run/xenstored none" \ - > ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/run/xend none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/run/xend/boot none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/run/xen none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/log/xen none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/lock/xen none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/lock/subsys none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen - echo "d root root 0755 ${localstatedir}/lib/xen none" \ - >> ${D}${sysconfdir}/default/volatiles/99_xen + for i in $VOLATILE_DIRS; do + echo "d root root 0755 $i none" >> ${D}${sysconfdir}/default/volatiles/99_xen + done # workaround for xendomains script which searchs sysconfig if directory exists install -d ${D}${sysconfdir}/sysconfig ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains + + # systemd + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + # install volatiles using systemd tmpfiles.d + install -d ${D}${sysconfdir}/tmpfiles.d + for i in $VOLATILE_DIRS; do + echo "d $i 0755 root root - -" >> ${D}${sysconfdir}/tmpfiles.d/xen.conf + done + fi } pkg_postinst_${PN}-volatiles() { - if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then - ${sysconfdir}/init.d/populate-volatile.sh update + if [ -z "$D" ]; then + if command -v systemd-tmpfiles >/dev/null; then + systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf + elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then + ${sysconfdir}/init.d/populate-volatile.sh update + fi fi } diff --git a/recipes-extended/xen/xen_4.5.0.bb b/recipes-extended/xen/xen_4.5.0.bb index 62d1d87..5f8c087 100644 --- a/recipes-extended/xen/xen_4.5.0.bb +++ b/recipes-extended/xen/xen_4.5.0.bb @@ -28,9 +28,17 @@ do_configure_prepend() { done # fixup environment passing in some makefiles sed -i 's#\(\w*\)=\(\$.\w*.\)#\1="\2"#' ${S}/tools/firmware/Makefile + + # libsystemd-daemon -> libsystemd for newer systemd versions + sed -i 's#libsystemd-daemon#libsystemd#' ${S}/tools/configure } do_install_append() { # fixup default path to qemu-system-i386 sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons + + if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then + sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \ + ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service + fi } -- 2.1.1 -- _______________________________________________ meta-virtualization mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-virtualization
