summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorCliff Brake <cbrake@bec-systems.com>2010-09-13 14:15:35 -0400
committerCliff Brake <cbrake@bec-systems.com>2010-09-13 14:15:35 -0400
commit4ee358534793381d2e87b01781079a3354fd5c1c (patch)
tree729f8b0ce4bdbcd8a16f561fb68da0d66c3a3eb8 /classes
parentbeb17e26ee9b4bc0cf334c3b30560c6eb66b1299 (diff)
parenteda06ec3dde6169a46797f876a82499c4fff8f62 (diff)
downloadopenembedded-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.bbclass5
-rw-r--r--classes/insane.bbclass2
-rw-r--r--classes/java-library.bbclass4
-rw-r--r--classes/packaged-staging.bbclass110
-rw-r--r--classes/sourceipk.bbclass15
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 .