[OE-core] [PATCH 1/1] systemd: fix runtime dependency

Peter A. Bigot pab at pabigot.com
Thu Oct 16 12:32:22 UTC 2014


On 10/16/2014 06:49 AM, ChenQi wrote:
> On 10/16/2014 06:59 PM, Peter A. Bigot wrote:
>> On 10/16/2014 04:19 AM, Chen Qi wrote:
>>> Previously, if we set 'NO_RECOMMENDATIONS' to "1", we cannot reach 
>>> login
>>> in systemd systems. The problem is that several runtime dependencies 
>>> are
>>> coded as 'recommended' in our project.
>>>
>>> This patch makes the following changes.
>>> 1. Add util-linux-agetty as a runtime dependency.
>>>     Otherwise, getty services in systemd cannot start correctly.
>>> 2. Add systemd-serialgetty as a runtime dependency.
>>>     Otherwise, serialgetty services cannot start correctly in 
>>> systemd and
>>>     we would have problem when using `runqemu qemux86 nographic'.
>>> 3. Remove 'systemd' from RDEPENDS of systemd-serialgetty.
>>>     systemd-serialgetty justs ships systemd unit files, even if the 
>>> init
>>>     manager is 'sysvinit', these files do no harm.
>>
>> This looks really weird.  It doesn't make any sense that systemd 
>> should depend on systemd-serialgetty; the original dependency was right.
>>
>
> If systemd-serialgetty should rdepends on systemd, then in the same 
> logic, we should also change sysvinit-inittab to rdepend on sysvinit. 
> I don't think this is right.

OK, that makes sense: systemd-serialgetty doesn't depend on systemd, 
it's just not particularly useful without it.  Without digging into 
details, I could see a case for removing the RDEPENDS on systemd from 
systemd-serialgetty.  Maybe RRECOMMENDS is better.

However, so much more so does systemd not depend on systemd-serialgetty, 
so adding the dependency in the reverse direction is simply wrong.  A 
system without a serial console is unusual but not invalid.

>
>> serialgetty works fine under systemd with all my configurations as-is.
>>
>
> Yes. But it needs to be first installed to work correctly.

Agreed.

>> I think you need to look more closely at your project-specific 
>> configuration to understand why things aren't getting set up 
>> correctly for you.
>>
>
> You can hand-edit local.conf with IMAGE_INSTALL_remove/_append to 
> workaround a lot of runtime dependency issue. The problem is that 
> setting 'NO_RECOMMENDATIONS' to "1" is valid, however, such valid 
> configuration would raise a non-workable minimal image.

The documentation for NO_RECOMMENDATIONS has: 
http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#var-NO_RECOMMENDATIONS

Note: Some recommended packages might be required for certain system 
functionality, such as kernel modules. It is up to you to add packages 
with the |IMAGE_INSTALL| 
<http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#var-IMAGE_INSTALL> 
variable.

AFAICT, if this doesn't work for you because you use NO_RECOMMENDATIONS, 
it's a problem with your configuration, not with OE.

Peter

>
> Try the following steps with the current project.
> 1. set NO_RECOMMENDATIONS to "1" in local.conf
> 2. Change in local.conf to use systemd as the init manager
> 3. bitbake core-image-minimal
> 4. runqemu qemux86 nographic
>
> My point is that a system should let users login in on serial console. 
> Our sysvinit based system does this, and our systemd based system 
> should also do this.
>
>> Peter
>>
>>
>>>
>>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>>> ---
>>>   meta/recipes-core/systemd/systemd-serialgetty.bb | 2 --
>>>   meta/recipes-core/systemd/systemd_216.bb         | 5 ++---
>>>   2 files changed, 2 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/meta/recipes-core/systemd/systemd-serialgetty.bb 
>>> b/meta/recipes-core/systemd/systemd-serialgetty.bb
>>> index 1c34d5c..f3acaad 100644
>>> --- a/meta/recipes-core/systemd/systemd-serialgetty.bb
>>> +++ b/meta/recipes-core/systemd/systemd-serialgetty.bb
>>> @@ -36,8 +36,6 @@ do_install() {
>>>       fi
>>>   }
>>>   -RDEPENDS_${PN} = "systemd"
>>> -
>>>   # This is a machine specific file
>>>   FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}"
>>>   PACKAGE_ARCH = "${MACHINE_ARCH}"
>>> diff --git a/meta/recipes-core/systemd/systemd_216.bb 
>>> b/meta/recipes-core/systemd/systemd_216.bb
>>> index ebf9395..62fe5c7 100644
>>> --- a/meta/recipes-core/systemd/systemd_216.bb
>>> +++ b/meta/recipes-core/systemd/systemd_216.bb
>>> @@ -267,11 +267,10 @@ FILES_${PN} = " ${base_bindir}/* \
>>>   FILES_${PN}-dbg += "${rootlibdir}/.debug ${systemd_unitdir}/.debug 
>>> ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/"
>>>   FILES_${PN}-dev += "${base_libdir}/security/*.la 
>>> ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
>>>   -RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= 
>>> ${EXTENDPKGV})"
>>> +RDEPENDS_${PN} += "kmod dbus systemd-serialgetty util-linux-mount 
>>> util-linux-agetty udev (= ${EXTENDPKGV})"
>>>   RDEPENDS_${PN} += "volatile-binds"
>>>   -RRECOMMENDS_${PN} += "systemd-serialgetty systemd-compat-units 
>>> udev-hwdb\
>>> -                      util-linux-agetty \
>>> +RRECOMMENDS_${PN} += "systemd-compat-units udev-hwdb\
>>>                         util-linux-fsck e2fsprogs-e2fsck \
>>>                         kernel-module-autofs4 kernel-module-unix 
>>> kernel-module-ipv6 os-release \
>>>   "
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20141016/0168f626/attachment-0002.html>


More information about the Openembedded-core mailing list