Patchwork [1/1] image.bbclass: add ability to set systemd default target

login
register
mail settings
Submitter Qi.Chen@windriver.com
Date Dec. 17, 2013, 9:05 a.m.
Message ID <81011ef08bf3b30e8ccdf7c9ee58b010d13dec77.1387271027.git.Qi.Chen@windriver.com>
Download mbox | patch
Permalink /patch/63443/
State New
Headers show

Comments

Qi.Chen@windriver.com - Dec. 17, 2013, 9:05 a.m.
From: Chen Qi <Qi.Chen@windriver.com>

Add ability to set the default target for systemd images.

The default value for the target is derived from checking whether
IMAGE_FEATRUES contains 'x11-base' or not. Each image could override
this value in its own recipe. For now, we don't need to do any change,
because all images that support graphical environment has 'x11-base'
in its IMAGE_FEATRUES.

[YOCTO #3816]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meta/classes/image.bbclass |    8 ++++++++
 1 file changed, 8 insertions(+)
Qi.Chen@windriver.com - Dec. 18, 2013, 7:33 a.m.
Please drop this one.  It has some problem with live images.
I'll send out a V2.

//Chen Qi

On 12/17/2013 05:05 PM, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> Add ability to set the default target for systemd images.
>
> The default value for the target is derived from checking whether
> IMAGE_FEATRUES contains 'x11-base' or not. Each image could override
> this value in its own recipe. For now, we don't need to do any change,
> because all images that support graphical environment has 'x11-base'
> in its IMAGE_FEATRUES.
>
> [YOCTO #3816]
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>   meta/classes/image.bbclass |    8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index c595721..c8366d6 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -186,6 +186,9 @@ IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
>   ROOTFS_POSTPROCESS_COMMAND =+ "write_image_manifest ; "
>   # Set default postinst log file
>   POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
> +# Set default target for systemd images
> +SYSTEMD_DEFAULT_TARGET ?= '${@base_contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}'
> +ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; ", "", d)}'
>   
>   # some default locales
>   IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
> @@ -596,6 +599,11 @@ postinst_enable_logging () {
>   	echo "LOGFILE=${POSTINST_LOGFILE}" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
>   }
>   
> +# Modify systemd default target
> +set_systemd_default_target () {
> +	ln -sf ${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
> +}
> +
>   # Turn any symbolic /sbin/init link into a file
>   remove_init_link () {
>   	if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then

Patch

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index c595721..c8366d6 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -186,6 +186,9 @@  IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
 ROOTFS_POSTPROCESS_COMMAND =+ "write_image_manifest ; "
 # Set default postinst log file
 POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
+# Set default target for systemd images
+SYSTEMD_DEFAULT_TARGET ?= '${@base_contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}'
+ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; ", "", d)}'
 
 # some default locales
 IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
@@ -596,6 +599,11 @@  postinst_enable_logging () {
 	echo "LOGFILE=${POSTINST_LOGFILE}" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
 }
 
+# Modify systemd default target
+set_systemd_default_target () {
+	ln -sf ${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
+}
+
 # Turn any symbolic /sbin/init link into a file
 remove_init_link () {
 	if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then