[oe] postinst problem: module vs. update-rc.d

Steffen Sledz sledz at dresearch-fe.de
Fri Oct 14 14:00:04 UTC 2011


We have a problem with a package that needs to install a kernel module and an initscript.

The recipe contains

  inherit module update-rc.d

The generated postinst script is

  #!/bin/sh
  if [ -n "$D" ]; then
        exit 1
  else
        depmod -a 2.6.24.7
        update-modules || true
  fi
  if test "x$D" != "x"; then
        OPT="-r $D"
  else
        OPT="-s"
  fi
  update-rc.d $OPT somescript start 90 S . stop 10 0 1 6 .

The 'exit 1' leads to an error if $D contains a nonzero length string (what is the case in the OE image creation step at the build host) and suppresses the execution of the second (update-rc.d) part.

Because of this error the postinst is run a second time when the target device boots the first time ("opkg-cl configure" from /etc/rcS.d/S40configure).

The problem is that the update-rc.d execution (and therefor the creation of the new symlink into rcS.d) is done from within rcS itself. So the rcS.d/S90somescript will *not* be executed at this boot. :(

We see two possible solutions.

A) Don't use "inherit module update-rc.d" but write the pkg_postint ourselfs.

B) Create two packages (one for the module, one for the initscript) with a runtime dependency.

I don't like both of them. Any other ideas? Is it possible to force the order of postinst fragments (update-rc.d code before module code)?

Regards,
Steffen

-- 
DResearch Fahrzeugelektronik GmbH
Otto-Schmirgal-Str. 3, 10319 Berlin, Germany
Tel: +49 30 515932-237 mailto:sledz at dresearch-fe.de
Fax: +49 30 515932-299
Geschäftsführer: Dr. Michael Weber, Werner Mögle;
Amtsgericht Berlin Charlottenburg; HRB 130120 B;
Ust.-IDNr. DE273952058




More information about the Openembedded-devel mailing list