Skip to contentSkip to conversation

systemd: fix dependency issue related to serial getty

PATCH In review Chen Qi 2 participants 6 messages Sep 5, 2017 – Sep 26, 2017

lore
Share & tools
lore

Chen Qi

author
#0 lore raw

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
author
#1 lore raw

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
index 2736f38..2695e15 100644
@@ -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
#2 lore raw

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_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 +0 -0
index 2736f38..2695e15 100644
@@ -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-unix

kernel-module-ipv6 \
                       os-release \

"
--
1.9.1

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

author
#3 lore raw

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 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?

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>
author
#4 lore raw

PATCH 2/2 systemd-serialgetty: remove systemd from RDEPENDS

In reply to Chen Qi

By 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
index 768b130..8d1ec7c 100644
@@ -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
author
#5 lore raw
In reply to Chen Qi

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-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(-)