diff options
Diffstat (limited to 'meta/classes/update-rc.d.bbclass')
| -rw-r--r-- | meta/classes/update-rc.d.bbclass | 63 |
1 files changed, 37 insertions, 26 deletions
diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass index 74053edb8..bddead4a2 100644 --- a/meta/classes/update-rc.d.bbclass +++ b/meta/classes/update-rc.d.bbclass @@ -1,5 +1,12 @@ -DEPENDS_append = " update-rc.d" -RDEPENDS_${PN}_append = " update-rc.d" +UPDATERCPN ?= "${PN}" + +DEPENDS_append = " update-rc.d-native" +UPDATERCD = "update-rc.d" +UPDATERCD_virtclass-cross = "" +UPDATERCD_virtclass-native = "" +UPDATERCD_virtclass-nativesdk = "" + +RDEPENDS_${UPDATERCPN}_append = " ${UPDATERCD}" INITSCRIPT_PARAMS ?= "defaults" @@ -26,12 +33,11 @@ update-rc.d $D ${INITSCRIPT_NAME} remove 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) - if bb.data.getVar('INITSCRIPT_PARAMS', d) == None: - raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_PARAMS" % bb.data.getVar('FILE', d) + if d.getVar('INITSCRIPT_PACKAGES') == None: + if d.getVar('INITSCRIPT_NAME') == None: + raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_NAME" % d.getVar('FILE') + if d.getVar('INITSCRIPT_PARAMS') == None: + raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_PARAMS" % d.getVar('FILE') python __anonymous() { update_rc_after_parse(d) @@ -41,32 +47,37 @@ python populate_packages_prepend () { def update_rcd_package(pkg): bb.debug(1, 'adding update-rc.d calls to postinst/postrm for %s' % pkg) localdata = bb.data.createCopy(d) - overrides = bb.data.getVar("OVERRIDES", localdata, 1) - bb.data.setVar("OVERRIDES", "%s:%s" % (pkg, overrides), localdata) + overrides = localdata.getVar("OVERRIDES", True) + localdata.setVar("OVERRIDES", "%s:%s" % (pkg, overrides)) bb.data.update_data(localdata) - 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) + """ + update_rc.d postinst is appended here because pkg_postinst may require to + execute on the target. Not doing so may cause update_rc.d postinst invoked + twice to cause unwanted warnings. + """ + postinst = localdata.getVar('pkg_postinst', True) + if not postinst: + postinst = '#!/bin/sh\n' + postinst += localdata.getVar('updatercd_postinst', True) + d.setVar('pkg_postinst_%s' % pkg, postinst) + + prerm = localdata.getVar('pkg_prerm', True) if not prerm: prerm = '#!/bin/sh\n' - prerm += bb.data.getVar('updatercd_prerm', localdata, 1) - bb.data.setVar('pkg_prerm_%s' % pkg, prerm, d) - postrm = bb.data.getVar('pkg_postrm', localdata, 1) + prerm += localdata.getVar('updatercd_prerm', True) + d.setVar('pkg_prerm_%s' % pkg, prerm) + + postrm = localdata.getVar('pkg_postrm', True) if not postrm: postrm = '#!/bin/sh\n' - postrm += bb.data.getVar('updatercd_postrm', localdata, 1) - bb.data.setVar('pkg_postrm_%s' % pkg, postrm, d) + postrm += localdata.getVar('updatercd_postrm', True) + d.setVar('pkg_postrm_%s' % pkg, postrm) - pkgs = bb.data.getVar('INITSCRIPT_PACKAGES', d, 1) + pkgs = d.getVar('INITSCRIPT_PACKAGES', True) if pkgs == None: - pkgs = bb.data.getVar('PN', d, 1) - packages = (bb.data.getVar('PACKAGES', d, 1) or "").split() + pkgs = d.getVar('UPDATERCPN', True) + packages = (d.getVar('PACKAGES', True) or "").split() if not pkgs in packages and packages != []: pkgs = packages[0] for pkg in pkgs.split(): |
