systemd: fix dependency issue related to serial getty
cover systemd: fix dependency issue related to serial getty
The following changes since commit 15eac6befb6c4d16bc1b814e040bd7bf006a5bee:
linux-yocto: add linux-yocto 4.12 bbappends (2017-08-31 23:37:10 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib ChenQi/systemd-serialgetty
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/systemd-serialgetty
Chen Qi (2):
systemd: change some RRECOMMENDS to RDEPENDS
systemd-serialgetty: remove systemd from RDEPENDS
meta/recipes-core/systemd/systemd-serialgetty.bb | 2 -- meta/recipes-core/systemd/systemd_234.bb | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-)
Signature · 1 line
1.9.1
PATCH 1/2 systemd: change some RRECOMMENDS to RDEPENDS
Set NO_RECOMMENDATIONS to "1", build and start a systemd image, and we could not get serial getty spawned, thus causing the user not able to login via serial port.
E.g.
MACHINE=qemux86-64 bitbake core-image-minimal
runqemu qemux86-64 nographic
And we cannot login onto the system.
Move util-linux-agetty and systemd-serialgetty (determined by PACKAGECONFIG) from RRECOMMENDS to RDEPENDS to fix the above problem.
--- meta/recipes-core/systemd/systemd_234.bb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
meta/recipes-core/systemd/systemd_234.bb +4 -4
@@ -492,13 +492,13 @@ FILES_${PN} = " ${base_bindir}/* \ 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 util-linux-mount udev (= ${EXTENDPKGV}) util-linux-agetty" +RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}" RDEPENDS_${PN} += "volatile-binds update-rc.d" -RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)} \ - systemd-extra-utils \ +RRECOMMENDS_${PN} += "systemd-extra-utils \ systemd-compat-units udev-hwdb \ - util-linux-agetty util-linux-fsck e2fsprogs-e2fsck \ + util-linux-fsck e2fsprogs-e2fsck \ kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \ os-release \ "
Signature · 1 line
1.9.1
Re: [PATCH 1/2] systemd: change some RRECOMMENDS to RDEPENDS
This doesn't seem to work correctly for MACHINEs with empty SERIAL_CONSOLE, because with empty SERIAL_CONSOLE there is no systemd-serialgetty package (because it's also empty) and the build fails with:
Collected errors:
* calculate_dependencies_for: Cannot satisfy the following dependencies
for packagegroup-core-boot:
* systemd-serialgetty *
* opkg_solver_install: Cannot install package packagegroup-core-boot.
If you're setting NO_RECOMMENDATIONS to "1", then you should expect that some recommended functionality will be missing, no?
Quoted 57 lines · Chen Qi
Set
NO_RECOMMENDATIONSto "1", build and start a systemd image, and we could not get serial getty spawned, thus causing the user not able to login via serial port.E.g.
MACHINE=qemux86-64 bitbake core-image-minimal
runqemu qemux86-64 nographicAnd we cannot login onto the system.
Move util-linux-agetty and systemd-serialgetty (determined by PACKAGECONFIG)
from RRECOMMENDS to RDEPENDS to fix the above problem.Signed-off-by Chen Qi <[email protected]>--- meta/recipes-core/systemd/systemd_234.bb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)meta/recipes-core/systemd/systemd_234.bb +0
-0@@ -492,13 +492,13 @@ FILES_${PN} = " ${base_bindir}/* \ FILES_${PN}-dev += "${base_libdir}/security/*.la${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
meta/recipes-core/systemd/systemd_234.bb +1
-1-RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})" +RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})util-linux-agetty"
+RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
RDEPENDS_${PN} += "volatile-binds update-rc.d"-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)} \
meta/recipes-core/systemd/systemd_234.bb +1
-2- systemd-extra-utils \ +RRECOMMENDS_${PN} += "systemd-extra-utils \ systemd-compat-units udev-hwdb \ - util-linux-agetty util-linux-fsck e2fsprogs-e2fsck\
+ util-linux-fsck e2fsprogs-e2fsck \
kernel-module-autofs4 kernel-module-unixkernel-module-ipv6 \ os-release \"
--
1.9.1--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [PATCH 1/2] systemd: change some RRECOMMENDS to RDEPENDS
Quoted 10 lines · Martin Jansa
This doesn't seem to work correctly for MACHINEs with empty
SERIAL_CONSOLE, because with emptySERIAL_CONSOLEthere is no systemd-serialgetty package (because it's also empty) and the build fails with:Collected errors:
*calculate_dependencies_for: Cannot satisfy the following
dependencies for packagegroup-core-boot:
* systemd-serialgetty *
*opkg_solver_install: Cannot install package packagegroup-core-boot.If you're setting
NO_RECOMMENDATIONSto "1", then you should expect that some recommended functionality will be missing, no?
Hi Martin,
Thanks a lot for pointing out this situation.
I've sent out a follow-up fix which sets ALLOW_EMPTY_${PN} = "1" in systemd-serialtty.bb. I hope this would be sufficient.
I agree with you that if NO_RECOMMENDATIONS is set to "1", the lack of some functionality is allowed.
But if the user doesn't set anything related to serial console, and he's building our reference image (e.g. core-image-minimal) on our supported BSP (e.g. qemux86-64), the user should not be astonished by being unable to get to login.
Anyway, I hope my follow-up fix would fix things up.
Best Regards,
Chen Qi
Quoted 65 lines · On Tue, Sep 5, 2017 at 10:07 AM, Chen Qi <[email protected]…
Set NO_RECOMMENDATIONS to "1", build and start a systemd image, and we
could not get serial getty spawned, thus causing the user not able to
login via serial port.
E.g.
MACHINE=qemux86-64 bitbake core-image-minimal
runqemu qemux86-64 nographic
And we cannot login onto the system.
Move util-linux-agetty and systemd-serialgetty (determined by
PACKAGECONFIG)
from RRECOMMENDS to RDEPENDS to fix the above problem.
Signed-off-by: Chen Qi <[email protected]
<mailto:[email protected]>>
---
meta/recipes-core/systemd/systemd_234.bb <http://systemd_234.bb>
| 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/meta/recipes-core/systemd/systemd_234.bb
<http://systemd_234.bb> b/meta/recipes-core/systemd/systemd_234.bb
<http://systemd_234.bb>
index 2736f38..2695e15 100644
--- a/meta/recipes-core/systemd/systemd_234.bb <http://systemd_234.bb>
+++ b/meta/recipes-core/systemd/systemd_234.bb <http://systemd_234.bb>
@@ -492,13 +492,13 @@ FILES_${PN} = " ${base_bindir}/* \
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 util-linux-mount udev (=
${EXTENDPKGV}) util-linux-agetty"
+RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
'serial-getty-generator', '', 'systemd-serialgetty', d)}"
RDEPENDS_${PN} += "volatile-binds update-rc.d"
-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
'serial-getty-generator', '', 'systemd-serialgetty', d)} \
- systemd-extra-utils \
+RRECOMMENDS_${PN} += "systemd-extra-utils \
systemd-compat-units udev-hwdb \
- util-linux-agetty util-linux-fsck
e2fsprogs-e2fsck \
+ util-linux-fsck e2fsprogs-e2fsck \
kernel-module-autofs4 kernel-module-unix
kernel-module-ipv6 \
os-release \
"
--
1.9.1
--
_______________________________________________
Openembedded-core mailing list
[email protected]
<mailto:[email protected]>
http://lists.openembedded.org/mailman/listinfo/openembedded-core
<http://lists.openembedded.org/mailman/listinfo/openembedded-core>PATCH 2/2 systemd-serialgetty: remove systemd from RDEPENDS
In reply to Chen QiBy setting systemd-serialgetty to rdepend on systemd, we are making configuration files have runtime dependency on the main utility that uses those configuration files. Applied with the same logic, we should make any package that provides service files under /etc/init.d/ to have runtime dependency on sysvinit. And this is not right.
So we should remove systemd from RDEPENDS of systemd-serialgetty.
Besides, as we have changed systemd to have systemd-serialgetty in its RDEPENDS by default, we should avoid circular dependency issue.
--- meta/recipes-core/systemd/systemd-serialgetty.bb | 2 -- 1 file changed, 2 deletions(-)
meta/recipes-core/systemd/systemd-serialgetty.bb +0 -2
@@ -38,8 +38,6 @@ do_install() { fi } -RDEPENDS_${PN} = "systemd" - # This is a machine specific file FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}" PACKAGE_ARCH = "${MACHINE_ARCH}"
Signature · 1 line
1.9.1
ping
Quoted 17 lines · Chen Qi
The following changes since commit
15eac6befb6c4d16bc1b814e040bd7bf006a5bee:linux-yocto: add linux-yocto 4.12 bbappends (2017-08-31 23:37:10 +0100)are available in the git repository at:
git://git.pokylinux.org/poky-contribChenQi/systemd-serialgetty
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/systemd-serialgettyChen Qi (2):
systemd: change some RRECOMMENDS to RDEPENDS
systemd-serialgetty: remove systemd from RDEPENDSmeta/recipes-core/systemd/systemd-serialgetty.bb | 2 -- meta/recipes-core/systemd/systemd_234.bb | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-)