From c11ebb74995012f3370a780123483d9c9a973719 Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Thu, 9 Sep 2010 12:32:44 -0700 Subject: packaged-staging: use oe_run rather than os.system This ensures that the output of the stage manager is swallowed, rather than shown unnecessarily to the user. Signed-off-by: Chris Larson --- classes/packaged-staging.bbclass | 73 +++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 35 deletions(-) (limited to 'classes/packaged-staging.bbclass') diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 85f08ee143..d251102f13 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -112,25 +112,26 @@ def pstage_set_pkgmanager(d): def pstage_cleanpackage(pkgname, d): - path = bb.data.getVar("PATH", d, 1) - pstage_set_pkgmanager(d) - list_cmd = bb.data.getVar("PSTAGE_LIST_CMD", d, True) - - bb.debug(2, "Checking if staging package installed") - lf = bb.utils.lockfile(bb.data.expand("${SYSROOT_LOCK}", d)) - ret = os.system("PATH=\"%s\" %s | grep %s" % (path, list_cmd, pkgname)) - if ret == 0: - bb.debug(1, "Uninstalling package from staging...") - removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1) - ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, pkgname)) - if ret != 0: - bb.note("Failure removing staging package") - else: - bb.debug(1, "Manually removing any installed files from staging...") - pstage_manualclean("sysroots", "STAGING_DIR", d) - pstage_manualclean("deploy", "DEPLOY_DIR", d) - - bb.utils.unlockfile(lf) + pstage_set_pkgmanager(d) + list_cmd = bb.data.getVar("PSTAGE_LIST_CMD", d, True) + + bb.debug(2, "Checking if staging package installed") + lf = bb.utils.lockfile(bb.data.expand("${SYSROOT_LOCK}", d)) + try: + oe_run(d, "%s | grep %s" % (list_cmd, pkgname)) + except RuntimeError: + bb.debug(1, "Manually removing any installed files from staging...") + pstage_manualclean("sysroots", "STAGING_DIR", d) + pstage_manualclean("deploy", "DEPLOY_DIR", d) + else: + bb.debug(1, "Uninstalling package from staging...") + removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1) + try: + oe_run(d, "%s %s" % (removecmd, pkgname)) + except RuntimeError: + bb.note("Failure removing staging package") + + bb.utils.unlockfile(lf) do_clean_prepend() { """ @@ -208,7 +209,6 @@ python packagestage_scenefunc () { staging_fetch(stagepkg, d) if os.path.exists(stagepkg): - path = bb.data.getVar("PATH", d, 1) pstage_set_pkgmanager(d) file = bb.data.getVar("FILE", d, True) bb.debug(2, "Packaged staging active for %s\n" % file) @@ -218,8 +218,9 @@ python packagestage_scenefunc () { # bb.mkdirhier(bb.data.expand("${WORKDIR}/tstage/${libdir_native}/opkg/info/ ", d)) cmd = bb.data.expand("${PSTAGE_PKGMANAGER} -f ${PSTAGE_MACHCONFIG} -force-depends -o ${WORKDIR}/tstage install", d) - ret = os.system("PATH=\"%s\" %s %s" % (path, cmd, stagepkg)) - if ret != 0: + try: + oe_run(d, "%s %s" % (cmd, stagepkg)) + except RuntimeError: bb.fatal("Couldn't install the staging package to a temp directory") # @@ -234,14 +235,15 @@ python packagestage_scenefunc () { # Copy the stamp files into the main stamps directoy # cmd = bb.data.expand("cp -dpR ${WORKDIR}/tstage/stamps/* ${TMPDIR}/stamps/", d) - ret = os.system(cmd) - if ret != 0: + try: + ret = oe_run(d, cmd) + except RuntimeError: bb.utils.unlockfile(lf) bb.fatal("Couldn't copy the staging package stamp files") # # Iterate over the stamps seeing if they're valid. If we find any that - # are invalid or the task wasn't in the taskgraph, assume caution and + # are invalid or the task wasn't in the taskgraph, assume caution and # do a rebuild. # # FIXME - some tasks are safe to ignore in the task graph. e.g. package_write_* @@ -268,10 +270,12 @@ python packagestage_scenefunc () { if stageok: bb.note("Staging package found, using it for %s." % file) installcmd = bb.data.getVar("PSTAGE_INSTALL_CMD", d, 1) - ret = os.system("PATH=\"%s\" %s %s" % (path, installcmd, stagepkg)) - bb.utils.unlockfile(lf) - if ret != 0: + try: + ret = oe_run(d, "%s %s" % (installcmd, stagepkg)) + except RuntimeError: bb.note("Failure installing prestage package") + finally: + bb.utils.unlockfile(lf) bb.build.exec_func("staging_package_libtoolhack", d) @@ -350,7 +354,7 @@ staging_packager () { echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control echo "Architecture: ${PSTAGE_PKGARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - + # Protect against empty SRC_URI srcuri="${SRC_URI}" if [ "$srcuri" == "" ]; then @@ -366,7 +370,7 @@ staging_packager () { sed -i -e s:${STAGING_DIR}:FIXMESTAGINGDIR:g $i echo $i | sed -e 's:${PSTAGE_TMPDIR_STAGE}/::' >> ${PSTAGE_TMPDIR_STAGE}/sysroots/fixmepath done - + ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${PSTAGE_DIR}/${PSTAGE_PKGPATH} } @@ -401,7 +405,7 @@ python staging_package_libtoolhack () { fixmefd.close() oe.path.remove(fixmefn) for file in fixmefiles: - os.system("sed -i -e s:FIXMESTAGINGDIR:%s:g %s" % (staging, tmpdir + '/' + file)) + oe_run(d, "sed -i -e s:FIXMESTAGINGDIR:%s:g %s" % (staging, tmpdir + '/' + file)) except IOError: pass } @@ -443,7 +447,6 @@ python do_package_stage () { if os.path.exists(srcfile): destpath = ipkpath + "/" + arch + "/" bb.mkdirhier(destpath) - print destpath bb.copyfile(srcfile, destpath + srcname) if bb.data.inherits_class('package_deb', d): @@ -453,7 +456,7 @@ python do_package_stage () { srcname = bb.data.expand(pkgname + "_${PV}-" + pr + "${DISTRO_PR}" + "_${DPKG_ARCH}.deb", d) srcfile = bb.data.expand("${DEPLOY_DIR_DEB}/" + arch + "/" + srcname, d) if os.path.exists(srcfile): - destpath = debpath + "/" + arch + "/" + destpath = debpath + "/" + arch + "/" bb.mkdirhier(destpath) bb.copyfile(srcfile, destpath + srcname) @@ -464,7 +467,7 @@ python do_package_stage () { srcname = bb.data.expand(pkgname + "-${RPMPV}-" + pr + "${DISTRO_PR}" + ".${TARGET_ARCH}.rpm", d) srcfile = bb.data.expand("${DEPLOY_DIR_RPM}/" + arch + "/" + srcname, d) if os.path.exists(srcfile): - destpath = rpmpath + "/" + arch + "/" + destpath = rpmpath + "/" + arch + "/" bb.mkdirhier(destpath) bb.copyfile(srcfile, destpath + srcname) @@ -477,7 +480,7 @@ python do_package_stage () { bb.mkdirhier(destdir) # We need to include the package_stage stamp in the staging package so create one bb.build.make_stamp("do_package_stage", d) - os.system("cp -dpR %s.do_* %s/" % (stampfn, destdir)) + oe_run(d, "cp -dpR %s.do_* %s/" % (stampfn, destdir)) pstage_set_pkgmanager(d) bb.build.exec_func("staging_helper", d) -- cgit 1.2.3-korg From 8607ea2929684714dbbc28f53023de92cf7c1bdf Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Fri, 10 Sep 2010 13:44:34 -0700 Subject: packaged-staging: add missing debug level Signed-off-by: Chris Larson --- classes/packaged-staging.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes/packaged-staging.bbclass') diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index d251102f13..377b8de3b1 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -94,7 +94,7 @@ 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) + bb.debug(2, "rm %s" % walkroot) for file in files: # Avoid breaking the held lock if (file == "staging.lock"): -- cgit 1.2.3-korg From 382a912f9bc71c535a3174fb39e56cff5dd760ab Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Wed, 8 Sep 2010 11:32:10 -0700 Subject: packaged-staging: When taking ipks use PKGV not PV This fixes a problem where ncurses 5.7 (and readline) wasn't having ipks stored. package_ipk.bbclass uses PKGV not PV which means packaged-staging should too. Signed-off-by: Tom Rini --- classes/packaged-staging.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes/packaged-staging.bbclass') diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 377b8de3b1..58d336a954 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -442,7 +442,7 @@ python do_package_stage () { if not packaged(pkg, d): continue if bb.data.inherits_class('package_ipk', d): - srcname = bb.data.expand(pkgname + "_${PV}-" + pr + "${DISTRO_PR}" + "_" + arch + ".ipk", d) + srcname = bb.data.expand(pkgname + "_${PKGV}-" + pr + "${DISTRO_PR}" + "_" + arch + ".ipk", d) srcfile = bb.data.expand("${DEPLOY_DIR_IPK}/" + arch + "/" + srcname, d) if os.path.exists(srcfile): destpath = ipkpath + "/" + arch + "/" -- cgit 1.2.3-korg From f87759ae52f2a66be98d3f4104265ec36f62f071 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Thu, 9 Sep 2010 09:06:56 -0700 Subject: packaged-staging: Fix libtool-cross staging libtool-cross must not inherit cross, so wasn't getting the right mangling and saving done. In addition, we want a slightly broader grep to be used in these cases. Signed-off-by: Tom Rini --- classes/packaged-staging.bbclass | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'classes/packaged-staging.bbclass') diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 58d336a954..8292853ffb 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -30,16 +30,8 @@ BB_STAMP_WHITELIST = "${PSTAGE_NATIVEDEPENDS}" python __anonymous() { pstage_allowed = True - - # We need PSTAGE_PKGARCH to contain information about the target. - if bb.data.inherits_class('cross', d): - bb.data.setVar('PSTAGE_PKGARCH', "${HOST_SYS}-${PACKAGE_ARCH}-${TARGET_OS}", d) - - # These classes encode staging paths data files so we must mangle them - # for reuse. - if bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('sdk', d): - scan_cmd = "grep -Irl ${STAGING_DIR} ${PSTAGE_TMPDIR_STAGE}" - bb.data.setVar('PSTAGE_SCAN_CMD', scan_cmd, d) + pstage_host_mangle = False + pstage_is_cross = False # PSTAGE_NATIVEDEPENDS lists the packages we need before we can use # packaged staging. There will always be some packages we depend on. @@ -59,6 +51,27 @@ python __anonymous() { if localdata.getVar('PSTAGING_DISABLED', True) == "1": pstage_allowed = False + # libtool-cross does not inherit cross. + if localdata.getVar('PN', True).startswith("libtool-cross"): + pstage_host_mangle = True + pstage_is_cross = True + + # We need PSTAGE_PKGARCH to contain information about the target. + if bb.data.inherits_class('cross', d): + pstage_host_mangle = True + + if pstage_host_mangle: + bb.data.setVar('PSTAGE_PKGARCH', "${HOST_SYS}-${PACKAGE_ARCH}-${TARGET_OS}", d) + + # These classes encode staging paths data files so we must mangle them + # for reuse. + if bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('sdk', d): + pstage_is_cross = True + + if pstage_is_cross: + scan_cmd = "grep -Irl ${TMPDIR} ${PSTAGE_TMPDIR_STAGE}" + bb.data.setVar('PSTAGE_SCAN_CMD', scan_cmd, d) + # Add task dependencies if we're active, otherwise mark packaged staging # as inactive. if pstage_allowed: -- cgit 1.2.3-korg