rootfs-postcommands.bbclass: Change the default.target location

Message ID 20220110153733.29006-1-pkj@axis.com
State New
Headers show
Series rootfs-postcommands.bbclass: Change the default.target location | expand

Commit Message

Peter Kjellerstedt Jan. 10, 2022, 3:37 p.m. UTC
Rather than adding a default.target in /etc/systemd/system, modify the
one in /usr/lib/systemd/system.

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
 meta/classes/rootfs-postcommands.bbclass | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Richard Purdie Jan. 10, 2022, 3:44 p.m. UTC | #1
On Mon, 2022-01-10 at 16:37 +0100, Peter Kjellerstedt wrote:
> Rather than adding a default.target in /etc/systemd/system, modify the
> one in /usr/lib/systemd/system.

Why?

(the commit message needs to say why as well as what it does)

Cheers,

Richard
Peter Kjellerstedt Jan. 10, 2022, 8:33 p.m. UTC | #2
> -----Original Message-----
> From: Richard Purdie <richard.purdie@linuxfoundation.org>
> Sent: den 10 januari 2022 16:44
> To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>; openembedded-
> core@lists.openembedded.org
> Subject: Re: [OE-core] [PATCH] rootfs-postcommands.bbclass: Change the
> default.target location
> 
> On Mon, 2022-01-10 at 16:37 +0100, Peter Kjellerstedt wrote:
> > Rather than adding a default.target in /etc/systemd/system, modify the
> > one in /usr/lib/systemd/system.
> 
> Why?
> 
> (the commit message needs to say why as well as what it does)

I thought it did (avoid having two links where one will suffice).

> 
> Cheers,
> 
> Richard

Thinking a bit more about this though, I am not sure I can win. We have 
had a corresponding local patch for many years, and it seems natural to 
have the link only in /usr/lib/systemd/system. However, for a system that 
uses package management (which we do not), it may not be as natural, 
since then updating the systemd package in runtime would restore systemd's 
default.target rather than the one that was installed with the system.

Would you accept a patch that instead introduces a variable for the path 
to the default.target link, with the following definition:

SYSTEMD_DEFAULT_TARGET_PATH ?= "${@bb.utils.contains('IMAGE_FEATURES', 'package-management', '${sysconfdir}/systemd/system', '${systemd_system_unitdir}', d}"

That would make it reasonably sane by default, but still allow it to be 
overridden if you have other ideas for your system.

//Peter
Konrad Weihmann Jan. 10, 2022, 8:39 p.m. UTC | #3
On 10.01.22 21:33, Peter Kjellerstedt wrote:
>> -----Original Message-----
>> From: Richard Purdie <richard.purdie@linuxfoundation.org>
>> Sent: den 10 januari 2022 16:44
>> To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>; openembedded-
>> core@lists.openembedded.org
>> Subject: Re: [OE-core] [PATCH] rootfs-postcommands.bbclass: Change the
>> default.target location
>>
>> On Mon, 2022-01-10 at 16:37 +0100, Peter Kjellerstedt wrote:
>>> Rather than adding a default.target in /etc/systemd/system, modify the
>>> one in /usr/lib/systemd/system.
>>
>> Why?
>>
>> (the commit message needs to say why as well as what it does)
> 
> I thought it did (avoid having two links where one will suffice).
> 
>>
>> Cheers,
>>
>> Richard
> 
> Thinking a bit more about this though, I am not sure I can win. We have
> had a corresponding local patch for many years, and it seems natural to
> have the link only in /usr/lib/systemd/system. However, for a system that
> uses package management (which we do not), it may not be as natural,
> since then updating the systemd package in runtime would restore systemd's
> default.target rather than the one that was installed with the system.
> 
> Would you accept a patch that instead introduces a variable for the path
> to the default.target link, with the following definition:
> 
> SYSTEMD_DEFAULT_TARGET_PATH ?= "${@bb.utils.contains('IMAGE_FEATURES', 'package-management', '${sysconfdir}/systemd/system', '${systemd_system_unitdir}', d}"

IMO that would look overly complicated.
Just pointing out that, with your patch, people can alter the default 
target by placing an appropriate link in /etc/systemd/... to override 
the default choices would be enough.
I guess changing things in /lib/systemd for an image makes more sense, 
it only has to be named in the commit message

Honestly I don't think it needs another variable to achieve the goal you 
had in mind

Konrad

> 
> That would make it reasonably sane by default, but still allow it to be
> overridden if you have other ideas for your system.
> 
> //Peter
>   
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#160377): https://lists.openembedded.org/g/openembedded-core/message/160377
> Mute This Topic: https://lists.openembedded.org/mt/88325758/3647476
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [kweihmann@outlook.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexander Kanavin Jan. 10, 2022, 8:39 p.m. UTC | #4
On Mon, 10 Jan 2022 at 21:33, Peter Kjellerstedt <
peter.kjellerstedt@axis.com> wrote:

> Thinking a bit more about this though, I am not sure I can win. We have
> had a corresponding local patch for many years, and it seems natural to
> have the link only in /usr/lib/systemd/system. However, for a system that
> uses package management (which we do not), it may not be as natural,
> since then updating the systemd package in runtime would restore systemd's
> default.target rather than the one that was installed with the system.
>
> Would you accept a patch that instead introduces a variable for the path
> to the default.target link, with the following definition:
>
> SYSTEMD_DEFAULT_TARGET_PATH ?= "${@bb.utils.contains('IMAGE_FEATURES',
> 'package-management', '${sysconfdir}/systemd/system',
> '${systemd_system_unitdir}', d}"
>
> That would make it reasonably sane by default, but still allow it to be
> overridden if you have other ideas for your system.
>

I think you can mark certain files as 'configuration' and then package
management won't touch them during updates?

Alex

Patch

diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass
index a3f96ef7ed..713ae5bfe0 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -218,8 +218,9 @@  postinst_enable_logging () {
 # Modify systemd default target
 #
 set_systemd_default_target () {
-	if [ -d ${IMAGE_ROOTFS}${sysconfdir}/systemd/system -a -e ${IMAGE_ROOTFS}${systemd_system_unitdir}/${SYSTEMD_DEFAULT_TARGET} ]; then
-		ln -sf ${systemd_system_unitdir}/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
+	if [ "${SYSTEMD_DEFAULT_TARGET}" ] &&
+	   [ -e ${IMAGE_ROOTFS}${systemd_system_unitdir}/${SYSTEMD_DEFAULT_TARGET} ]; then
+		ln -sf ${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${systemd_system_unitdir}/default.target
 	fi
 }