diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/amend.bbclass | 29 | ||||
-rw-r--r-- | classes/base.bbclass | 25 | ||||
-rw-r--r-- | classes/distutils-common-base.bbclass | 2 | ||||
-rw-r--r-- | classes/efl.bbclass | 4 | ||||
-rw-r--r-- | classes/gnome.bbclass | 2 | ||||
-rw-r--r-- | classes/icecc.bbclass | 5 | ||||
-rw-r--r-- | classes/kernel.bbclass | 2 | ||||
-rw-r--r-- | classes/package_dbg.bbclass | 8 | ||||
-rw-r--r-- | classes/package_deb.bbclass | 19 | ||||
-rw-r--r-- | classes/packaged-staging.bbclass | 13 | ||||
-rw-r--r-- | classes/recipe_sanity.bbclass | 10 |
11 files changed, 82 insertions, 37 deletions
diff --git a/classes/amend.bbclass b/classes/amend.bbclass new file mode 100644 index 0000000000..bcb93d4e75 --- /dev/null +++ b/classes/amend.bbclass @@ -0,0 +1,29 @@ +# Allows tweaks to be amended to a recipe via a .inc in its FILESPATH +# +# Simply drop amend.inc into an appropriate place in a recipe's FILESPATH and +# it'll be parsed in after the recipe itself is. +# +# Copyright (c) 2009 MontaVista Software, Inc. All rights reserved. +# +# Released under the MIT license (see LICENSE.MIT for the terms) + +python () { + import bb, os + + filespath = d.getVar("FILESPATH", 1).split(":") + amendfiles = [os.path.join(fpath, "amend.inc") + for fpath in filespath] + + # Adding all amend.incs that can exist to the __depends, to ensure that + # creating one of them invalidates the bitbake cache. Note that it + # requires a fix in bitbake. Without the bitbake fix, the cache will be + # completely invalidated on every bitbake execution. + depends = d.getVar("__depends", 0) or [] + d.setVar("__depends", depends + [(file, 0) for file in amendfiles if not os.path.exists(file)]) + + existing = (file for file in amendfiles if os.path.exists(file)) + try: + bb.parse.handle(existing.next(), d, 1) + except StopIteration: + pass +} diff --git a/classes/base.bbclass b/classes/base.bbclass index 384a67d3d6..9a242720e7 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -151,9 +151,27 @@ def base_chk_file(parser, pn, pv, src_uri, localpath, data): file.write("[%s]\nmd5=%s\nsha256=%s\n\n" % (src_uri, md5data, shadata)) file.close() + + from string import maketrans + trtable = maketrans("", "") + uname = src_uri.split("/")[-1].translate(trtable, "-+._") + + try: + ufile = open("%s/%s.sum" % (bb.data.getVar("TMPDIR", data, 1), uname), "wt") + except: + return False + + if not ufile: + raise Exception("Creating %s.sum failed" % uname) + + ufile.write("SRC_URI = \"%s;name=%s\"\nSRC_URI[%s.md5sum] = \"%s\"\nSRC_URI[%s.sha256sum] = \"%s\"\n" % (src_uri, uname, uname, md5data, uname, shadata)) + ufile.close() + if not bb.data.getVar("OE_STRICT_CHECKSUMS",data, True): bb.note("This package has no entry in checksums.ini, please add one") bb.note("\n[%s]\nmd5=%s\nsha256=%s" % (src_uri, md5data, shadata)) + bb.note("This package has no checksums in corresponding recipe, please add") + bb.note("SRC_URI = \"%s;name=%s\"\nSRC_URI[%s.md5sum] = \"%s\"\nSRC_URI[%s.sha256sum] = \"%s\"\n" % (src_uri, uname, uname, md5data, uname, shadata)) return True else: bb.note("Missing checksum") @@ -226,14 +244,17 @@ def base_version_less_or_equal(variable, checkvalue, truevalue, falsevalue, d): return falsevalue def base_contains(variable, checkvalues, truevalue, falsevalue, d): + val = bb.data.getVar(variable,d,1) + if not val: + return falsevalue matches = 0 if type(checkvalues).__name__ == "str": checkvalues = [checkvalues] for value in checkvalues: - if bb.data.getVar(variable,d,1).find(value) != -1: + if val.find(value) != -1: matches = matches + 1 if matches == len(checkvalues): - return truevalue + return truevalue return falsevalue def base_both_contain(variable1, variable2, checkvalue, d): diff --git a/classes/distutils-common-base.bbclass b/classes/distutils-common-base.bbclass index 01bf9eaeba..87578b773f 100644 --- a/classes/distutils-common-base.bbclass +++ b/classes/distutils-common-base.bbclass @@ -23,7 +23,7 @@ FILES_${PN}-dev += "\ ${libdir}/pkgconfig \ ${libdir}/${PYTHON_DIR}/site-packages/*.la \ " -FILES_${PN}-dbg = "\ +FILES_${PN}-dbg += "\ ${libdir}/${PYTHON_DIR}/site-packages/.debug \ ${libdir}/${PYTHON_DIR}/site-packages/*/.debug \ ${libdir}/${PYTHON_DIR}/site-packages/*/*/.debug \ diff --git a/classes/efl.bbclass b/classes/efl.bbclass index 900d9c7f0d..805422fdf4 100644 --- a/classes/efl.bbclass +++ b/classes/efl.bbclass @@ -45,7 +45,9 @@ FILES_${PN}-dev += "${bindir}/${PN}-config \ ${libdir}/lib*.la \ ${libdir}/*.so \ ${libdir}/${PN}/*.la \ - ${libdir}/${PN}/*/*.la" + ${libdir}/${PN}/*/*.la \ + ${datadir}/${PN}/edje_externals \ +" FILES_${PN}-static += "${libdir}/${PN}/*.a \ ${libdir}/${PN}/*/*.a \ diff --git a/classes/gnome.bbclass b/classes/gnome.bbclass index cb03650b48..7e26e03104 100644 --- a/classes/gnome.bbclass +++ b/classes/gnome.bbclass @@ -4,7 +4,7 @@ def gnome_verdir(v): return "%s.%s" % (m.group(1), m.group(2)) SECTION ?= "x11/gnome" -SRC_URI = "${GNOME_MIRROR}/${PN}/${@gnome_verdir("${PV}")}/${PN}-${PV}.tar.bz2" +SRC_URI = "${GNOME_MIRROR}/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.bz2;name=archive" DEPENDS += "gnome-common" diff --git a/classes/icecc.bbclass b/classes/icecc.bbclass index 4962fcb7e6..8e539db0b8 100644 --- a/classes/icecc.bbclass +++ b/classes/icecc.bbclass @@ -60,7 +60,6 @@ def create_cross_env(bb,d): os.stat(os.path.join(ice_dir, target_sys, 'lib', 'libstdc++.so')) os.stat(os.path.join(ice_dir, target_sys, 'bin', 'g++')) except: # no cross compiler built yet - bb.error('no cross compiler built yet?') return "" VERSION = icc_determine_gcc_version( os.path.join(ice_dir,target_sys,"bin","g++") ) @@ -157,7 +156,6 @@ def create_cross_kernel_env(bb,d): try: os.stat(os.path.join(ice_dir, 'bin', kernel_cc)) except: # no cross compiler built yet - bb.error('no kernel cross compiler built yet') return "" VERSION = icc_determine_gcc_version( os.path.join(ice_dir,"bin",kernel_cc) ) @@ -259,7 +257,8 @@ def icc_path(bb,d): for black in package_blacklist: if black in package_tmp: bb.note(package_tmp, ' found in blacklist, disable icecc') - bb.data.setVar("PARALLEL_MAKE" , "", d) + fallback_parallel = bb.data.getVar('ICECC_FALLBACK_PARALLEL', d) or "" + bb.data.setVar("PARALLEL_MAKE", fallback_parallel, d) return "" prefix = bb.data.expand('${HOST_PREFIX}', d) diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 53ea252b0e..39ff928e6a 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -538,10 +538,12 @@ MODULES_IMAGE_BASE_NAME ?= modules-${PV}-${PR}-${MACHINE} do_deploy() { install -d ${DEPLOY_DIR_IMAGE} install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + package_stagefile_shell ${S}/${KERNEL_OUTPUT} package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin if [ -d "${PKGD}/lib" ]; then fakeroot tar -cvzf ${DEPLOY_DIR_IMAGE}/${MODULES_IMAGE_BASE_NAME}.tgz -C ${PKGD} lib + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${MODULES_IMAGE_BASE_NAME}.tgz fi cd ${DEPLOY_DIR_IMAGE} diff --git a/classes/package_dbg.bbclass b/classes/package_dbg.bbclass index 39dceaf9b3..19ab04ff39 100644 --- a/classes/package_dbg.bbclass +++ b/classes/package_dbg.bbclass @@ -8,10 +8,6 @@ inherit package -PACKAGE_DBG_DIRS = "${bindir} ${sbindir} \ - ${libexecdir} ${libdir} \ - ${base_bindir} ${base_sbindir} \ - ${base_libdir}" PACKAGE_DBG_DESC = "Debugging files for %s" PACKAGE_DBG_EXCLUDE = "${PN}-locale* ${PN}-doc ${PN}-dev *-dbg" @@ -101,15 +97,13 @@ python package_do_dbg() { add_dbg_packages(d) packages = d.getVar("PACKAGES", True).split() desc = d.getVar("PACKAGE_DBG_DESC", True) - debug_dirs = d.getVar("PACKAGE_DBG_DIRS", True).split() done = [] for pkgname in tuple(packages): files = tuple(__package_get_files(pkgname, d)) dbg = [join(dirname(file), ".debug", basename(file)) for file in files - if not file in done and - any(file.startswith(dir) for dir in debug_dirs)] + if not file in done] done.extend(files) if dbg: diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass index 2a9bf76a79..9fb16740d8 100644 --- a/classes/package_deb.bbclass +++ b/classes/package_deb.bbclass @@ -86,20 +86,12 @@ python do_package_deb () { return bb.mkdirhier(dvar) - packages = bb.data.getVar('PACKAGES', d, 1) - if not packages: - bb.debug(1, "PACKAGES not defined, nothing to package") - return - tmpdir = bb.data.getVar('TMPDIR', d, 1) if os.access(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"),os.R_OK): os.unlink(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN")) - if packages == []: - bb.debug(1, "No packages; nothing to do") - return - + packages = bb.data.getVar('PACKAGES', d, 1) for pkg in packages.split(): localdata = bb.data.createCopy(d) pkgdest = bb.data.getVar('PKGDEST', d, 1) @@ -268,8 +260,13 @@ python () { } python do_package_write_deb () { - bb.build.exec_func("read_subpackage_metadata", d) - bb.build.exec_func("do_package_deb", d) + packages = bb.data.getVar('PACKAGES', d, True) + if not packages: + bb.debug(1, "No PACKAGES defined, nothing to package") + return + + bb.build.exec_func("read_subpackage_metadata", d) + bb.build.exec_func("do_package_deb", d) } do_package_write_deb[dirs] = "${D}" addtask package_write_deb before do_package_write after do_package diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 1c5c4cd531..1ede25cef0 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -288,8 +288,8 @@ packagedstaging_fastpath () { if [ "$PSTAGING_ACTIVE" = "1" ]; then mkdir -p ${PSTAGE_TMPDIR_STAGE}/staging/ mkdir -p ${PSTAGE_TMPDIR_STAGE}/cross/ - cp -fpPR ${SYSROOT_DESTDIR}/${STAGING_DIR}/* ${PSTAGE_TMPDIR_STAGE}/staging/ || /bin/true - cp -fpPR ${SYSROOT_DESTDIR}/${CROSS_DIR}/* ${PSTAGE_TMPDIR_STAGE}/cross/ || /bin/true + cp -fpPR ${SYSROOT_DESTDIR}${STAGING_DIR}/* ${PSTAGE_TMPDIR_STAGE}/staging/ || /bin/true + cp -fpPR ${SYSROOT_DESTDIR}${CROSS_DIR}/* ${PSTAGE_TMPDIR_STAGE}/cross/ || /bin/true fi } @@ -377,18 +377,19 @@ 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 + "_" + arch + ".ipk", d) + srcname = bb.data.expand(pkgname + "_${PV}-" + 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): if arch == 'all': - srcname = bb.data.expand(pkgname + "_${PV}-" + pr + "_all.deb", d) + srcname = bb.data.expand(pkgname + "_${PV}-" + pr + "${DISTRO_PR}" + "_all.deb", d) else: - srcname = bb.data.expand(pkgname + "_${PV}-" + pr + "_${DPKG_ARCH}.deb", d) + 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 + "/" @@ -399,7 +400,7 @@ python do_package_stage () { version = bb.data.getVar('PV', d, 1) version = version.replace('-', '+') bb.data.setVar('RPMPV', version, d) - srcname = bb.data.expand(pkgname + "-${RPMPV}-" + pr + ".${TARGET_ARCH}.rpm", d) + 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 + "/" diff --git a/classes/recipe_sanity.bbclass b/classes/recipe_sanity.bbclass index d929da6319..9becf49384 100644 --- a/classes/recipe_sanity.bbclass +++ b/classes/recipe_sanity.bbclass @@ -1,16 +1,16 @@ def __note(msg, d): bb.note("%s: recipe_sanity: %s" % (d.getVar("P", 1), msg)) -__recipe_sanity_badtargetvars = "RDEPENDS RPROVIDES" -def bad_target_vars(cfgdata, d): +__recipe_sanity_badruntimevars = "RDEPENDS RPROVIDES RRECOMMENDS RCONFLICTS" +def bad_runtime_vars(cfgdata, d): if bb.data.inherits_class("native", d) or \ bb.data.inherits_class("cross", d): return - for var in d.getVar("__recipe_sanity_badtargetvars", 1).split(): + for var in d.getVar("__recipe_sanity_badruntimevars", 1).split(): val = d.getVar(var, 0) if val and val != cfgdata.get(var): - __note("%s should not be set, but is set to '%s'" % (var, val), d) + __note("%s should be %s_${PN}" % (var, var), d) __recipe_sanity_reqvars = "DESCRIPTION" __recipe_sanity_reqdiffvars = "LICENSE" @@ -133,7 +133,7 @@ python do_recipe_sanity () { can_remove_others(p, cfgdata, d) var_renames_overwrite(cfgdata, d) req_vars(cfgdata, d) - bad_target_vars(cfgdata, d) + bad_runtime_vars(cfgdata, d) } do_recipe_sanity[nostamp] = "1" #do_recipe_sanity[recrdeptask] = "do_recipe_sanity" |