[OE-core] Why is systemd installed to / (was: [yocto] Export bitbake variables between recipes)

Mark Hatle mark.hatle at windriver.com
Tue Dec 2 18:44:57 UTC 2014


On 12/2/14, 12:27 PM, Peter Kjellerstedt wrote:
> [ I am moving this discussion to the OE-core list as I believe
>    that is where it belongs. ]
>
>> -----Original Message-----
>> From: yocto-bounces at yoctoproject.org [mailto:yocto-
>> bounces at yoctoproject.org] On Behalf Of Paul Eggleton
>> Sent: den 2 december 2014 15:07
>> To: Fabrice Coulon
>> Cc: yocto at yoctoproject.org
>> Subject: Re: [yocto] Export bitbake variables between recipes
>>
>> Hi Fabrice,
>>
>> On Tuesday 02 December 2014 14:07:40 Fabrice Coulon wrote:
>>> Is it possible to export one bitbake variable from one recipe
>>> and make it available from inside another recipe? For example:
>>> we want to export from our systemd_%.bbappend where the
>>> systemctl command has been installed, in order to, from another
>>> recipe depending on systemd, refer to the absolute path where
>>> systemctl was installed. Any ideas or suggestions on how to do
>>> that?
>>
>> There's no mechanism to do this, no. The only way for this kind of
>> thing to work is for it to be specified at the configuration level
>> (e.g. ${bindir} points to the subdirectory /usr/bin and this variable
>> would be used both when choosing where the executable should be
>> installed and finding it later - this would typically be how this
>> kind of problem would be solved since it would be unusual to have
>> systemctl installed somewhere other than ${bindir}).
>
> Actually, since the systemd recipe in Poky is configured in an
> extremely weird way (using --with-rootprefix=${base_prefix} and
> --with-rootlib=${base_libdir}), systemctl actually ends up in
> ${base_bindir} rather than ${bindir}. And this is the whole reason
> for our troubles since everything else we had prior to switching
> to Poky expected systemd to be installed in /usr...

Because we support the split between / and /usr for embedded systems with 
multiple partitions/disks.

If you set it to /usr, then technically you are violating the FHS, as you now 
require /usr in order to boot the system.

What programs are expecting these things in a specific path?  Why aren't they 
either using the PATH, or using a similar configuration mechanism via the recipes?

> Can anyone please explain why OE-core installs systemd to / rather
> than /usr? Because I have traced the recipe all the way back to its
> introduction in OE classic, and I cannot find any rationale for
> this odd decision. And it is extra weird given the systemd authors'
> agenda that everything should be in /usr (and /etc)...

It's only strange compared to Fedora.  We're not Fedora.. and I've got systems 
that need to boot from a small '/' before mounting '/usr'.

(In prior discussions we've made the decision to not fix every library or 
application, but there is a warning you can enable that will show you what 
libraries and applications live in '/' but have obvious linkage to '/usr'.)

>> (Another alternative is pkg-config, but I don't think that really
>> applies in this situation.)
>
> Nope.
>
>> Cheers,
>> Paul
>>
>> --
>>
>> Paul Eggleton
>> Intel Open Source Technology Centre
>
> //Peter
>
>




More information about the Openembedded-core mailing list