Patchwork openssh: don't add update-rc.d to RDEPENDS

login
register
mail settings
Submitter Martin Jansa
Date March 28, 2013, 1:54 p.m.
Message ID <1364478849-3696-1-git-send-email-Martin.Jansa@gmail.com>
Download mbox | patch
Permalink /patch/47081/
State Accepted
Commit e9e4a90c7e66abe2ab2c335d60ef91e869f48693
Headers show

Comments

Martin Jansa - March 28, 2013, 1:54 p.m.
* sysvinit/systemd assumes that update-rc.d can be inhibited
* with systemd enabled, sysvinit scripts are missing in packages
  and update-rc.d needs to be put in BAD_RECOMMENDATIONS to prevent
  update-rc.d trying to install them in postinst
* update-rd.c shouldn't be in DEPENDS
---
 meta/recipes-connectivity/openssh/openssh_6.1p1.bb | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Martin Jansa - March 28, 2013, 2:30 p.m.
On Thu, Mar 28, 2013 at 02:54:09PM +0100, Martin Jansa wrote:
> * sysvinit/systemd assumes that update-rc.d can be inhibited
> * with systemd enabled, sysvinit scripts are missing in packages
>   and update-rc.d needs to be put in BAD_RECOMMENDATIONS to prevent
>   update-rc.d trying to install them in postinst
> * update-rd.c shouldn't be in DEPENDS
> ---
>  meta/recipes-connectivity/openssh/openssh_6.1p1.bb | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
> index 32c3b2c..0cffd23 100644
> --- a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
> +++ b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
> @@ -96,8 +96,7 @@ FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
>  FILES_${PN}-keygen = "${bindir}/ssh-keygen"
>  
>  RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
> -DEPENDS_${PN}-sshd += "update-rc.d"
> -RDEPENDS_${PN}-sshd += "update-rc.d ${PN}-keygen"
> +RDEPENDS_${PN}-sshd += "${PN}-keygen"
>  
>  CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
>  CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"

This allows to remove update-rc.d from image.
Changing error message from fatal
Configuring dbus-1.
update-rc.d: /etc/init.d/dbus-1: file does not exist
Configuring udev.
update-rc.d: /etc/init.d/systemd-udevd: file does not exist

to less fatal
Configuring dbus-1.
//var/lib/opkg/info/dbus-1.postinst: line 9: type: update-rc.d: not found
Configuring udev.
//var/lib/opkg/info/udev.postinst: line 7: type: update-rc.d: not found

I'll send separate patch to hide also stderr from "type".

Unfortunately it still hangs forever in some images when trying to start
lib/systemd/system/run-postinsts.service

After removing this service it boots fine.
Martin Jansa - March 28, 2013, 2:42 p.m.
On Thu, Mar 28, 2013 at 03:30:06PM +0100, Martin Jansa wrote:
> On Thu, Mar 28, 2013 at 02:54:09PM +0100, Martin Jansa wrote:
> > * sysvinit/systemd assumes that update-rc.d can be inhibited
> > * with systemd enabled, sysvinit scripts are missing in packages
> >   and update-rc.d needs to be put in BAD_RECOMMENDATIONS to prevent
> >   update-rc.d trying to install them in postinst
> > * update-rd.c shouldn't be in DEPENDS
> > ---
> >  meta/recipes-connectivity/openssh/openssh_6.1p1.bb | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
> > index 32c3b2c..0cffd23 100644
> > --- a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
> > +++ b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
> > @@ -96,8 +96,7 @@ FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
> >  FILES_${PN}-keygen = "${bindir}/ssh-keygen"
> >  
> >  RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
> > -DEPENDS_${PN}-sshd += "update-rc.d"
> > -RDEPENDS_${PN}-sshd += "update-rc.d ${PN}-keygen"
> > +RDEPENDS_${PN}-sshd += "${PN}-keygen"
> >  
> >  CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
> >  CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
> 
> This allows to remove update-rc.d from image.
> Changing error message from fatal
> Configuring dbus-1.
> update-rc.d: /etc/init.d/dbus-1: file does not exist
> Configuring udev.
> update-rc.d: /etc/init.d/systemd-udevd: file does not exist
> 
> to less fatal
> Configuring dbus-1.
> //var/lib/opkg/info/dbus-1.postinst: line 9: type: update-rc.d: not found
> Configuring udev.
> //var/lib/opkg/info/udev.postinst: line 7: type: update-rc.d: not found
> 
> I'll send separate patch to hide also stderr from "type".
> 
> Unfortunately it still hangs forever in some images when trying to start
> lib/systemd/system/run-postinsts.service
> 
> After removing this service it boots fine.

first boot after removing it:

root@qemux86-64:~# systemctl status run-postinsts.service
run-postinsts.service
          Loaded: error (Reason: No such file or directory)
          Active: inactive (dead)

Mar 28 14:32:01 qemux86-64 S98run-postinsts[55]: //var/lib/opkg/info/dbus-1....d
Mar 28 14:32:03 qemux86-64 S98run-postinsts[55]: //var/lib/opkg/info/udev.po...d
Mar 28 14:32:04 qemux86-64 S98run-postinsts[55]: adding crontab
Mar 28 14:32:04 qemux86-64 S98run-postinsts[55]: ln -s '/lib/systemd/system/...'
root@qemux86-64:~# systemctl start run-postinsts.service
Failed to issue method call: Unit run-postinsts.service failed to load: No such file or directory. See system logs and 'systemctl status run-postinsts.service' for details.

And starting it manually after returning the service:
root@qemux86-64:~# systemctl start run-postinsts.service
root@qemux86-64:~# systemctl status run-postinsts.service
run-postinsts.service - Run pending postinsts
          Loaded: loaded (/lib/systemd/system/run-postinsts.service; disabled)
          Active: inactive (dead) since Thu 2013-03-28 14:39:14 UTC; 4s ago
        Main PID: 887 (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/run-postinsts.service

Mar 28 14:39:11 qemux86-64 systemd[1]: Starting Run pending postinsts...
Mar 28 14:39:14 qemux86-64 systemd[1]: Started Run pending postinsts.
Mar 28 14:39:16 qemux86-64 S98run-postinsts[887]: //var/lib/opkg/info/dbus-1....
Mar 28 14:39:17 qemux86-64 S98run-postinsts[887]: //var/lib/opkg/info/udev.po...
Mar 28 14:39:19 qemux86-64 S98run-postinsts[887]: Configuring dbus-1.
Mar 28 14:39:19 qemux86-64 S98run-postinsts[887]: Configuring udev-hwdb.
Mar 28 14:39:19 qemux86-64 S98run-postinsts[887]: Configuring udev.
Mar 28 14:39:19 qemux86-64 S98run-postinsts[887]: Configuring ntpdate.

So it's broken only on first boot, maybe started too soon, but 
After=remount-rootfs.service tmp.mount
looks sufficient.

Patch

diff --git a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
index 32c3b2c..0cffd23 100644
--- a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
+++ b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
@@ -96,8 +96,7 @@  FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
 FILES_${PN}-keygen = "${bindir}/ssh-keygen"
 
 RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
-DEPENDS_${PN}-sshd += "update-rc.d"
-RDEPENDS_${PN}-sshd += "update-rc.d ${PN}-keygen"
+RDEPENDS_${PN}-sshd += "${PN}-keygen"
 
 CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
 CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"