diff options
-rw-r--r-- | classes/packaged-staging.bbclass | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 9c72d11b8c..f3648d2f6a 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -26,6 +26,16 @@ PSTAGE_NATIVEDEPENDS = "\ BB_STAMP_WHITELIST = "${PSTAGE_NATIVEDEPENDS}" +def _package_unlink (f): + import os, errno + try: + os.unlink(f) + return True + except OSError, e: + if e.errno == errno.ENOENT: + return False + raise + python () { pstage_allowed = True @@ -87,10 +97,10 @@ def pstage_manualclean(srcname, destvarname, d): dest = bb.data.getVar(destvarname, d, True) for walkroot, dirs, files in os.walk(src): + bb.debug("rm %s" % walkroot) for file in files: filepath = os.path.join(walkroot, file).replace(src, dest) - bb.note("rm %s" % filepath) - os.system("rm %s" % filepath) + _package_unlink(filepath) def pstage_set_pkgmanager(d): path = bb.data.getVar("PATH", d, 1) @@ -162,6 +172,7 @@ PSTAGE_TASKS_COVERED = "fetch unpack munge patch configure qa_configure rig_loca SCENEFUNCS += "packagestage_scenefunc" python packagestage_scenefunc () { + import glob if bb.data.getVar("PSTAGING_ACTIVE", d, 1) == "0": return @@ -227,7 +238,9 @@ python packagestage_scenefunc () { # Remove the stamps and files we added above # FIXME - we should really only remove the stamps we added - os.system('rm -f ' + stamp + '.*') + for fname in glob.glob(stamp + '.*'): + _package_unlink(fname) + os.system(bb.data.expand("rm -rf ${WORKDIR}/tstage", d)) if stageok: @@ -260,8 +273,8 @@ python packagedstage_stampfixing_eventhandler() { # so we need to remove the autogenerated stamps. for task in taskscovered: dir = "%s.do_%s" % (e.stampPrefix[fn], task) - os.system('rm -f ' + dir) - os.system('rm -f ' + stamp) + _package_unlink(dir) + _package_unlink(stamp) } populate_staging_preamble () { |