[OE-core] [PATCH 2/7] systemd-conf: simplify creation of configuration

Jonas Bonn jonas at norrbonn.se
Tue Jan 1 17:03:30 UTC 2019


Hi Randy,

Thanks for looking at this.

On 01/01/2019 16:29, Randy MacLeod wrote:
> On 12/31/18 7:05 AM, Jonas Bonn wrote:
>> The configuration files that systemd installs are just skeletons
>> detailing the available options and their default values.  The
>> recommended means of changing the configuration is to provide snippets
>> in configuration directories.  For example, journald.conf settings are
>> best set in /usr/lib/journald.conf.d/ and can be overridden by the user
>> by providing overriding snippets in /etc/systemd/journald.conf.d/.
>>
>> The base configuration files have the lowest priority; they will always
>> be overridden by any snippets.  As such, it's probably best to not
>> provide them at all.  This also moves us a step closer to an empty /etc
>> which is should be a long term goal in order to allow running OE as a
>> "stateless system".
>>
>> This patch moves the systemd configuration to snippets in
>> /usr/lib/*.conf.d.  This simplifies the recipe considerably since it now
>> just sets up a couple of text files and doesn't even need access to the
>> systemd source anymore.
>> ---
>>   meta/recipes-core/systemd/systemd-conf.bb | 34 +++++++++--------------
>>   1 file changed, 13 insertions(+), 21 deletions(-)
>>
>> diff --git a/meta/recipes-core/systemd/systemd-conf.bb 
>> b/meta/recipes-core/systemd/systemd-conf.bb
>> index 7fe2e1105b..a504afe3e7 100644
>> --- a/meta/recipes-core/systemd/systemd-conf.bb
>> +++ b/meta/recipes-core/systemd/systemd-conf.bb
>> @@ -1,9 +1,8 @@
>> -require systemd.inc
>> -
>>   SUMMARY = "Systemd system configuration"
>>   DESCRIPTION = "Systemd may require slightly different configuration 
>> for \
>>   different machines.  For example, qemu machines require a longer \
>>   DefaultTimeoutStartSec setting."
>> +LICENSE = "GPLv2"
> 
> Systemd claims that these conf files are: LGPLv2.1+ licensed.

The configuration files from systemd may be LGPLv2 licensed, but this 
package now only creates some configuration snippets which are 
independent of systemd (it's just data, now).  As such, one could 
certainly put whatever license one wanted on this.  Honestly, GPLv2 is 
probably a stretch... I can hardly see that any license applies to this, 
to be honest.  Consider that:

/usr/lib/journald.conf.d/systemd-conf.conf

contains

ForwardToSyslog=yes
RuntimeMaxUse=64M

Just configuration data that the package creates dynamically.

> 
> https://github.com/systemd/systemd/blob/master/sysusers.d/systemd.conf.m4
> 
> https://github.com/systemd/systemd/blob/master/modprobe.d/systemd.conf
> 
>>   PACKAGE_ARCH = "${MACHINE_ARCH}"
>> @@ -13,36 +12,29 @@ ${sysconfdir}/systemd/logind.conf \
>>   ${sysconfdir}/systemd/system.conf \
>>   ${sysconfdir}/systemd/user.conf"
>> -FILES_${PN} = "${sysconfdir}/systemd"
>> -
>> -do_configure[noexec] = '1'
>> -do_compile[noexec] = '1'
>> +FILES_${PN} = "/usr/lib/journald.conf.d/* \
>> +/usr/lib/logind.conf.d/* \
>> +/usr/lib/system.conf.d/* \
>> +"
>>   do_install() {
>> -    rm -rf ${D}/${sysconfdir}/systemd
>> -    install -d ${D}/${sysconfdir}/systemd
>> -
>> -    install -m 0644 ${S}/src/coredump/coredump.conf 
>> ${D}${sysconfdir}/systemd/coredump.conf
>> -
>> -    install -m 0644 ${S}/src/journal/journald.conf 
>> ${D}${sysconfdir}/systemd/journald.conf
>> +    install -d ${D}/usr/lib/journald.conf.d
> 
> Should the recipe use /usr/lib or is / should there be a
> 'systemdconfdir' var?

So, I looked into the systemd source and, as far as I can see, it seems 
that systemd hardcodes the paths to configuration files, tmpfiles, 
presets, etc.  It's all really /usr/lib/... with no method of specifying 
any other location.  For this reason, I've used these explicit paths 
above, strange though it may appear...

/Jonas


More information about the Openembedded-core mailing list