diff options
author | Cliff Brake <cbrake@bec-systems.com> | 2010-09-13 14:15:35 -0400 |
---|---|---|
committer | Cliff Brake <cbrake@bec-systems.com> | 2010-09-13 14:15:35 -0400 |
commit | 4ee358534793381d2e87b01781079a3354fd5c1c (patch) | |
tree | 729f8b0ce4bdbcd8a16f561fb68da0d66c3a3eb8 /classes | |
parent | beb17e26ee9b4bc0cf334c3b30560c6eb66b1299 (diff) | |
parent | eda06ec3dde6169a46797f876a82499c4fff8f62 (diff) | |
download | openembedded-testing_2010-09-13.tar.gz |
Merge branch 'org.openembedded.dev' into testing-nexttesting_2010-09-13
Diffstat (limited to 'classes')
-rw-r--r-- | classes/base.bbclass | 5 | ||||
-rw-r--r-- | classes/insane.bbclass | 2 | ||||
-rw-r--r-- | classes/java-library.bbclass | 4 | ||||
-rw-r--r-- | classes/packaged-staging.bbclass | 110 | ||||
-rw-r--r-- | classes/sourceipk.bbclass | 15 |
5 files changed, 79 insertions, 57 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass index 299e875191..b19eb32751 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -2,6 +2,7 @@ BB_DEFAULT_TASK ?= "build" inherit patch inherit staging +inherit packaged-staging inherit packagedata inherit mirrors @@ -176,7 +177,7 @@ def oe_unpack(d, local, urldata): if not urldata.host: urlpath = urldata.path else: - urlpath = oe.path.join(urldata.host, urldata.path) + urlpath = "%s%s" % (urldata.host, urldata.path) if not os.path.isabs(urlpath): subdirs.append(os.path.dirname(urlpath)) @@ -337,7 +338,7 @@ python () { this_machine = bb.data.getVar('MACHINE', d, 1) if this_machine and not re.match(need_machine, this_machine): this_soc_family = bb.data.getVar('SOC_FAMILY', d, 1) - if this_soc_family and not re.match(need_machine, this_soc_family): + if (this_soc_family and not re.match(need_machine, this_soc_family)) or not this_soc_family: raise bb.parse.SkipPackage("incompatible with machine %s" % this_machine) need_target = bb.data.getVar('COMPATIBLE_TARGET_SYS', d, 1) diff --git a/classes/insane.bbclass b/classes/insane.bbclass index b8743d1918..4696c25c1e 100644 --- a/classes/insane.bbclass +++ b/classes/insane.bbclass @@ -448,7 +448,7 @@ python do_package_qa () { # The Staging Func, to check all staging -addtask qa_staging after do_populate_sysroot before do_build +addtask qa_staging after do_populate_sysroot before do_package_stage python do_qa_staging() { bb.debug(2, "QA checking staging") diff --git a/classes/java-library.bbclass b/classes/java-library.bbclass index 904b4f16be..5ce0537dd5 100644 --- a/classes/java-library.bbclass +++ b/classes/java-library.bbclass @@ -65,7 +65,3 @@ do_install() { java_stage() { oe_jarinstall -s ${JARFILENAME} ${ALTJARFILENAMES} } - -do_stage() { - java_stage -} diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 85f08ee143..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: @@ -94,7 +107,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"): @@ -112,25 +125,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 +222,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 +231,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 +248,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 +283,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 +367,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 +383,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 +418,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 } @@ -438,12 +455,11 @@ 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 + "/" bb.mkdirhier(destpath) - print destpath bb.copyfile(srcfile, destpath + srcname) if bb.data.inherits_class('package_deb', d): @@ -453,7 +469,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 +480,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 +493,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) diff --git a/classes/sourceipk.bbclass b/classes/sourceipk.bbclass index 4957e4af4c..182785ba66 100644 --- a/classes/sourceipk.bbclass +++ b/classes/sourceipk.bbclass @@ -14,6 +14,9 @@ # - SRCIPK_PACKAGE_ARCH = This variable allows specific recipies to # specify an architecture for the sourcetree # package is "all" is not appropriate +# - SRCIPK_INC_EXTRAFILES = When set to 1 this variable indicates that +# the source ipk should contain extra files +# such as the README file and recipe. # # The default installation directory for the sources is: # /usr/src/${PN}-src @@ -47,6 +50,9 @@ SRCIPK_INSTALL_DIR ?= "/usr/src/${PN}-src" # Default PACKAGE_ARCH for sources is "all" SRCIPK_PACKAGE_ARCH ?= "all" +# Default SRCIPK_INCLUDE_EXTRAFILES is to include the extra files +SRCIPK_INCLUDE_EXTRAFILES ?= "1" + # Create a README file that describes the contents of the source ipk sourceipk_create_readme() { readme="$1/README.${PN}-src" @@ -91,7 +97,6 @@ sourceipk_do_create_srcipk() { srcuri="OpenEmbedded" fi echo "Source: $srcuri" >> $control_file - #Write the control tarball tar -C $tmp_dir/CONTROL --owner=0 --group=0 -czf $srcipk_dir/control.tar.gz . @@ -101,8 +106,12 @@ sourceipk_do_create_srcipk() { # Copy sources for packaging mkdir -p $tmp_dir/${SRCIPK_INSTALL_DIR} cp -rLf ${S}/* $tmp_dir/${SRCIPK_INSTALL_DIR}/ - sourceipk_create_readme $tmp_dir/${SRCIPK_INSTALL_DIR}/ - cp ${FILE} $tmp_dir/${SRCIPK_INSTALL_DIR}/ + + if [ ${SRCIPK_INCLUDE_EXTRAFILES} != "0" ] + then + sourceipk_create_readme $tmp_dir/${SRCIPK_INSTALL_DIR}/ + cp ${FILE} $tmp_dir/${SRCIPK_INSTALL_DIR}/ + fi #Write the data tarball tar -C $tmp_dir --owner=0 --group=0 -czf $srcipk_dir/data.tar.gz . |