diff options
Diffstat (limited to 'classes/update-rc.d.bbclass')
| -rw-r--r-- | classes/update-rc.d.bbclass | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/classes/update-rc.d.bbclass b/classes/update-rc.d.bbclass index 3051b7933f..b6491ed9d6 100644 --- a/classes/update-rc.d.bbclass +++ b/classes/update-rc.d.bbclass @@ -1,5 +1,5 @@ DEPENDS_append = " update-rc.d" -RDEPENDS_append = " update-rc.d" +RDEPENDS_${PN}_append = " ${@base_conditional("ONLINE_PACKAGE_MANAGEMENT", "none", "", "update-rc.d", d)}" INITSCRIPT_PARAMS ?= "defaults" @@ -16,17 +16,31 @@ update-rc.d $OPT ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS} updatercd_prerm() { if test "x$D" = "x"; then - ${INIT_D_DIR}/${INITSCRIPT_NAME} stop + if test "$1" = "upgrade" -o "$1" = "remove"; then + ${INIT_D_DIR}/${INITSCRIPT_NAME} stop + fi fi } +# Note: to be Debian compliant, we should only invoke update-rc.d remove +# at the "purge" step, but opkg does not support it. So instead we also +# run it at the "remove" step if the init script no longer exists. + updatercd_postrm() { -update-rc.d $D ${INITSCRIPT_NAME} remove +if test "x$D" != "x"; then + OPT="-r $D" +else + OPT="" +fi +if test "$1" = "remove" -o "$1" = "purge"; then + if ! test -e "${INIT_D_DIR}/${INITSCRIPT_NAME}"; then + update-rc.d $OPT ${INITSCRIPT_NAME} remove + fi +fi } def update_rc_after_parse(d): - import bb if bb.data.getVar('INITSCRIPT_PACKAGES', d) == None: if bb.data.getVar('INITSCRIPT_NAME', d) == None: raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_NAME" % bb.data.getVar('FILE', d) @@ -45,10 +59,12 @@ python populate_packages_prepend () { bb.data.setVar("OVERRIDES", "%s:%s" % (pkg, overrides), localdata) bb.data.update_data(localdata) - postinst = bb.data.getVar('pkg_postinst', localdata, 1) - if not postinst: - postinst = '#!/bin/sh\n' + postinst = '#!/bin/sh\n' postinst += bb.data.getVar('updatercd_postinst', localdata, 1) + try: + postinst += bb.data.getVar('pkg_postinst', localdata, 1) + except: + pass bb.data.setVar('pkg_postinst_%s' % pkg, postinst, d) prerm = bb.data.getVar('pkg_prerm', localdata, 1) if not prerm: |
