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

login
register
mail settings
Submitter Qi.Chen@windriver.com
Date Dec. 18, 2013, 7:49 a.m.
Message ID <1d839acafb980cad80c7f6b7179d965c095d8c15.1387352773.git.Qi.Chen@windriver.com>
Download mbox | patch
Permalink /patch/63489/
State Accepted
Commit 655b432ac397409432ac9c5ba2dfdb6c194effa1
Headers show

Comments

Qi.Chen@windriver.com - Dec. 18, 2013, 7:49 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 |   10 ++++++++++
 1 file changed, 10 insertions(+)
Koen Kooi - Dec. 18, 2013, 7:53 a.m.
Op 18 dec. 2013, om 08:49 heeft Qi.Chen@windriver.com het volgende geschreven:

> 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

typo

> 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.

typo

And you're missing the actual SYSTEMD_DEFAULT_TARGET in the description. If it only works on images, please to something like IMAGE_SYSTEMD_DEFAULT_TARGET

> 
> [YOCTO #3816]
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
> meta/classes/image.bbclass |   10 ++++++++++
> 1 file changed, 10 insertions(+)
> 
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index c595721..4c63bc2 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,13 @@ postinst_enable_logging () {
> 	echo "LOGFILE=${POSTINST_LOGFILE}" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
> }
> 
> +# Modify systemd default target
> +set_systemd_default_target () {
> +	if [ -d ${IMAGE_ROOTFS}${sysconfdir}/systemd/system -a -e ${IMAGE_ROOTFS}${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ]; then
> +		ln -sf ${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
> +	fi
> +}
> +
> # Turn any symbolic /sbin/init link into a file
> remove_init_link () {
> 	if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
Qi.Chen@windriver.com - Dec. 18, 2013, 8:02 a.m.
On 12/18/2013 03:53 PM, Koen Kooi wrote:
> Op 18 dec. 2013, om 08:49 heeft Qi.Chen@windriver.com het volgende geschreven:
>
>> 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
> typo
>
>> 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.
> typo

Thanks for pointing it out.

> And you're missing the actual SYSTEMD_DEFAULT_TARGET in the description.

I'll modify the commit message and send out a new version.

>   If it only works on images, please to something like IMAGE_SYSTEMD_DEFAULT_TARGET

What do you mean by "it only works on images"?

Best Regards,
Chen Qi

>> [YOCTO #3816]
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>> ---
>> meta/classes/image.bbclass |   10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
>> index c595721..4c63bc2 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,13 @@ postinst_enable_logging () {
>> 	echo "LOGFILE=${POSTINST_LOGFILE}" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
>> }
>>
>> +# Modify systemd default target
>> +set_systemd_default_target () {
>> +	if [ -d ${IMAGE_ROOTFS}${sysconfdir}/systemd/system -a -e ${IMAGE_ROOTFS}${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ]; then
>> +		ln -sf ${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
>> +	fi
>> +}
>> +
>> # Turn any symbolic /sbin/init link into a file
>> remove_init_link () {
>> 	if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
>> -- 
>> 1.7.9.5
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>>
>
>

Patch

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index c595721..4c63bc2 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,13 @@  postinst_enable_logging () {
 	echo "LOGFILE=${POSTINST_LOGFILE}" >> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
 }
 
+# Modify systemd default target
+set_systemd_default_target () {
+	if [ -d ${IMAGE_ROOTFS}${sysconfdir}/systemd/system -a -e ${IMAGE_ROOTFS}${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ]; then
+		ln -sf ${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
+	fi
+}
+
 # Turn any symbolic /sbin/init link into a file
 remove_init_link () {
 	if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then