summaryrefslogtreecommitdiff
path: root/meta/classes
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/archiver.bbclass2
-rw-r--r--meta/classes/autotools.bbclass9
-rw-r--r--meta/classes/base.bbclass28
-rw-r--r--meta/classes/binconfig.bbclass4
-rw-r--r--meta/classes/blacklist.bbclass25
-rw-r--r--meta/classes/buildhistory.bbclass61
-rw-r--r--meta/classes/buildstats.bbclass5
-rw-r--r--meta/classes/ccache.bbclass8
-rw-r--r--meta/classes/cmake.bbclass12
-rw-r--r--meta/classes/copyleft_filter.bbclass2
-rw-r--r--meta/classes/core-image.bbclass4
-rw-r--r--meta/classes/cross-canadian.bbclass5
-rw-r--r--meta/classes/cross.bbclass5
-rw-r--r--meta/classes/crosssdk.bbclass5
-rw-r--r--meta/classes/cve-check.bbclass2
-rw-r--r--meta/classes/devupstream.bbclass48
-rw-r--r--meta/classes/distrodata.bbclass15
-rw-r--r--meta/classes/distutils-tools.bbclass2
-rw-r--r--meta/classes/distutils.bbclass10
-rw-r--r--meta/classes/distutils3.bbclass6
-rw-r--r--meta/classes/externalsrc.bbclass2
-rw-r--r--meta/classes/go.bbclass77
-rw-r--r--meta/classes/goarch.bbclass50
-rw-r--r--meta/classes/grub-efi.bbclass1
-rw-r--r--meta/classes/gtk-doc.bbclass2
-rw-r--r--meta/classes/image-buildinfo.bbclass5
-rw-r--r--meta/classes/image-container.bbclass21
-rw-r--r--meta/classes/image.bbclass10
-rw-r--r--meta/classes/image_types.bbclass16
-rw-r--r--meta/classes/image_types_wic.bbclass6
-rw-r--r--meta/classes/insane.bbclass53
-rw-r--r--meta/classes/kernel-arch.bbclass3
-rw-r--r--meta/classes/kernel-fitimage.bbclass48
-rw-r--r--meta/classes/kernel-module-split.bbclass6
-rw-r--r--meta/classes/kernel-uboot.bbclass2
-rw-r--r--meta/classes/kernel-uimage.bbclass4
-rw-r--r--meta/classes/kernel-yocto.bbclass7
-rw-r--r--meta/classes/kernel.bbclass51
-rw-r--r--meta/classes/license.bbclass77
-rw-r--r--meta/classes/module.bbclass4
-rw-r--r--meta/classes/multilib.bbclass7
-rw-r--r--meta/classes/multilib_global.bbclass3
-rw-r--r--meta/classes/multilib_header.bbclass7
-rw-r--r--meta/classes/native.bbclass20
-rw-r--r--meta/classes/nativesdk.bbclass10
-rw-r--r--meta/classes/npm.bbclass16
-rw-r--r--meta/classes/package.bbclass43
-rw-r--r--meta/classes/package_deb.bbclass12
-rw-r--r--meta/classes/package_ipk.bbclass7
-rw-r--r--meta/classes/package_rpm.bbclass114
-rw-r--r--meta/classes/package_tar.bbclass1
-rw-r--r--meta/classes/packagegroup.bbclass2
-rw-r--r--meta/classes/patch.bbclass20
-rw-r--r--meta/classes/pixbufcache.bbclass2
-rw-r--r--meta/classes/populate_sdk_base.bbclass3
-rw-r--r--meta/classes/populate_sdk_ext.bbclass52
-rw-r--r--meta/classes/ptest.bbclass2
-rw-r--r--meta/classes/qemuboot.bbclass19
-rw-r--r--meta/classes/recipe_sanity.bbclass17
-rw-r--r--meta/classes/relative_symlinks.bbclass5
-rw-r--r--meta/classes/rm_work.bbclass34
-rw-r--r--meta/classes/rootfs-postcommands.bbclass8
-rw-r--r--meta/classes/rootfs_deb.bbclass1
-rw-r--r--meta/classes/rootfs_ipk.bbclass1
-rw-r--r--meta/classes/rootfs_rpm.bbclass24
-rw-r--r--meta/classes/sanity.bbclass74
-rw-r--r--meta/classes/sign_rpm.bbclass7
-rw-r--r--meta/classes/sstate.bbclass63
-rw-r--r--meta/classes/staging.bbclass160
-rw-r--r--meta/classes/syslinux.bbclass1
-rw-r--r--meta/classes/systemd-boot.bbclass3
-rw-r--r--meta/classes/systemd.bbclass1
-rw-r--r--meta/classes/terminal.bbclass7
-rw-r--r--meta/classes/testimage.bbclass56
-rw-r--r--meta/classes/testsdk.bbclass23
-rw-r--r--meta/classes/toaster.bbclass24
-rw-r--r--meta/classes/uboot-extlinux-config.bbclass32
-rw-r--r--meta/classes/uboot-sign.bbclass2
-rw-r--r--meta/classes/uninative.bbclass16
-rw-r--r--meta/classes/update-alternatives.bbclass4
-rw-r--r--meta/classes/update-rc.d.bbclass1
-rw-r--r--meta/classes/useradd-staticids.bbclass22
-rw-r--r--meta/classes/useradd.bbclass59
-rw-r--r--meta/classes/utility-tasks.bbclass2
-rw-r--r--meta/classes/utils.bbclass2
85 files changed, 1005 insertions, 687 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index ee4790dd68..2c04557f79 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -365,7 +365,7 @@ python do_ar_recipe () {
elif include_re.match(line):
incfile = include_re.match(line).group(1)
if incfile:
- incfile = bb.data.expand(incfile, d)
+ incfile = d.expand(incfile)
incfile = bb.utils.which(bbpath, incfile)
if incfile:
shutil.copy(incfile, outdir)
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
index da5ec27575..ac04a07cb5 100644
--- a/meta/classes/autotools.bbclass
+++ b/meta/classes/autotools.bbclass
@@ -143,7 +143,6 @@ python autotools_aclocals () {
# Refresh variable with cache files
d.setVar("CONFIG_SITE", siteinfo_get_files(d, aclocalcache=True))
}
-autotools_copy_aclocals[vardepsexclude] += "MACHINE SDK_ARCH BUILD_ARCH SDK_OS BB_TASKDEPDATA"
CONFIGURE_FILES = "${S}/configure.in ${S}/configure.ac ${S}/config.h.in ${S}/acinclude.m4 Makefile.am"
@@ -194,14 +193,14 @@ autotools_do_configure() {
else
CONFIGURE_AC=configure.ac
fi
- if grep "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
- if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
+ if grep -q "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC; then
+ if grep -q "sed.*POTFILES" $CONFIGURE_AC; then
: do nothing -- we still have an old unmodified configure.ac
else
bbnote Executing glib-gettextize --force --copy
echo "no" | glib-gettextize --force --copy
fi
- elif grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
+ elif grep -q "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC; then
# We'd call gettextize here if it wasn't so broken...
cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/
if [ -d ${S}/po/ ]; then
@@ -213,7 +212,7 @@ autotools_do_configure() {
PRUNE_M4="$PRUNE_M4 gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4"
fi
mkdir -p m4
- if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+ if grep -q "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC; then
if ! echo "${DEPENDS}" | grep -q intltool-native; then
bbwarn "Missing DEPENDS on intltool-native"
fi
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 965518c733..d95afb7b9b 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -10,7 +10,7 @@ inherit utility-tasks
inherit metadata_scm
inherit logging
-OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath"
+OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license"
OE_IMPORTS[type] = "list"
def oe_import(d):
@@ -119,6 +119,25 @@ def get_lic_checksum_file_list(d):
bb.fatal(d.getVar('PN') + ": LIC_FILES_CHKSUM contains an invalid URL: " + url)
return " ".join(filelist)
+def setup_hosttools_dir(dest, toolsvar, d, fatal=True):
+ tools = d.getVar(toolsvar).split()
+ origbbenv = d.getVar("BB_ORIGENV", False)
+ path = origbbenv.getVar("PATH")
+ bb.utils.mkdirhier(dest)
+ notfound = []
+ for tool in tools:
+ desttool = os.path.join(dest, tool)
+ if not os.path.exists(desttool):
+ srctool = bb.utils.which(path, tool, executable=True)
+ if "ccache" in srctool:
+ srctool = bb.utils.which(path, tool, executable=True, direction=1)
+ if srctool:
+ os.symlink(srctool, desttool)
+ else:
+ notfound.append(tool)
+ if notfound and fatal:
+ bb.fatal("The following required tools (as specified by HOSTTOOLS) appear to be unavailable in PATH, please install them in order to proceed:\n %s" % " ".join(notfound))
+
addtask fetch
do_fetch[dirs] = "${DL_DIR}"
do_fetch[file-checksums] = "${@bb.fetch.get_checksum_file_list(d)}"
@@ -219,10 +238,12 @@ python base_eventhandler() {
pkgarch_mapping(e.data)
oe.utils.features_backfill("DISTRO_FEATURES", e.data)
oe.utils.features_backfill("MACHINE_FEATURES", e.data)
+ # Works with the line in layer.conf which changes PATH to point here
+ setup_hosttools_dir(d.getVar('HOSTTOOLS_DIR'), 'HOSTTOOLS', d)
+ setup_hosttools_dir(d.getVar('HOSTTOOLS_DIR'), 'HOSTTOOLS_NONFATAL', d, fatal=False)
if isinstance(e, bb.event.BuildStarted):
localdata = bb.data.createCopy(e.data)
- bb.data.update_data(localdata)
statuslines = []
for func in oe.data.typed_value('BUILDCFG_FUNCS', localdata):
g = globals()
@@ -355,7 +376,6 @@ def set_packagetriplet(d):
localdata = bb.data.createCopy(d)
overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
localdata.setVar("OVERRIDES", overrides)
- bb.data.update_data(localdata)
archs.append(localdata.getVar("PACKAGE_ARCHS").split())
tos.append(localdata.getVar("TARGET_OS"))
@@ -535,7 +555,7 @@ python () {
bb.debug(1, "INCLUDING the package " + pkg)
elif all_skipped or incompatible_license(d, bad_licenses):
bb.debug(1, "SKIPPING recipe %s because it's %s" % (pn, license))
- raise bb.parse.SkipPackage("incompatible with license %s" % license)
+ raise bb.parse.SkipPackage("it has an incompatible license: %s" % license)
elif pn in whitelist:
if pn in incompatwl:
bb.note("INCLUDING " + pn + " as buildable despite INCOMPATIBLE_LICENSE because it has been whitelisted")
diff --git a/meta/classes/binconfig.bbclass b/meta/classes/binconfig.bbclass
index 5372294142..39c3e2b17b 100644
--- a/meta/classes/binconfig.bbclass
+++ b/meta/classes/binconfig.bbclass
@@ -13,14 +13,14 @@ def get_binconfig_mangle(d):
s += " -e 's:=%s${exec_prefix}/:=\\1OEEXECPREFIX/:'" % optional_quote
s += " -e 's:-L${libdir}:-LOELIBDIR:;'"
s += " -e 's:-I${includedir}:-IOEINCDIR:;'"
+ s += " -e 's:-L${WORKDIR}:-LOELIBDIR:'"
+ s += " -e 's:-I${WORKDIR}:-IOEINCDIR:'"
s += " -e 's:OEBASELIBDIR:${STAGING_BASELIBDIR}:;'"
s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
s += " -e 's:OEPREFIX:${STAGING_DIR_HOST}${prefix}:'"
s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${exec_prefix}:'"
- s += " -e 's:-I${WORKDIR}:-I${STAGING_INCDIR}:'"
- s += " -e 's:-L${WORKDIR}:-L${STAGING_LIBDIR}:'"
if d.getVar("OE_BINCONFIG_EXTRA_MANGLE", False):
s += d.getVar("OE_BINCONFIG_EXTRA_MANGLE")
diff --git a/meta/classes/blacklist.bbclass b/meta/classes/blacklist.bbclass
index 3413a5b0aa..e58564c34e 100644
--- a/meta/classes/blacklist.bbclass
+++ b/meta/classes/blacklist.bbclass
@@ -12,31 +12,6 @@
# PNBLACKLIST[pn] = "message"
#
-# Cope with PNBLACKLIST flags for multilib case
-addhandler blacklist_multilib_eventhandler
-blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed"
-python blacklist_multilib_eventhandler() {
- multilibs = e.data.getVar('MULTILIBS')
- if not multilibs:
- return
-
- # this block has been copied from base.bbclass so keep it in sync
- prefixes = []
- for ext in multilibs.split():
- eext = ext.split(':')
- if len(eext) > 1 and eext[0] == 'multilib':
- prefixes.append(eext[1])
-
- blacklists = e.data.getVarFlags('PNBLACKLIST') or {}
- for pkg, reason in blacklists.items():
- if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg:
- continue
- for p in prefixes:
- newpkg = p + "-" + pkg
- if not e.data.getVarFlag('PNBLACKLIST', newpkg):
- e.data.setVarFlag('PNBLACKLIST', newpkg, reason)
-}
-
python () {
blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN'))
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index 73cd88669a..f543bb73d6 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -47,6 +47,11 @@ sstate_install[vardepsexclude] += "buildhistory_emit_pkghistory"
# then the value added to SSTATEPOSTINSTFUNCS:
SSTATEPOSTINSTFUNCS[vardepvalueexclude] .= "| buildhistory_emit_pkghistory"
+# Similarly for our function that gets the output signatures
+SSTATEPOSTUNPACKFUNCS_append = " buildhistory_emit_outputsigs"
+sstate_installpkgdir[vardepsexclude] += "buildhistory_emit_outputsigs"
+SSTATEPOSTUNPACKFUNCS[vardepvalueexclude] .= "| buildhistory_emit_outputsigs"
+
# All items excepts those listed here will be removed from a recipe's
# build history directory by buildhistory_emit_pkghistory(). This is
# necessary because some of these items (package directories, files that
@@ -86,6 +91,7 @@ python buildhistory_emit_pkghistory() {
self.depends = ""
self.packages = ""
self.srcrev = ""
+ self.layer = ""
class PackageInfo:
@@ -186,6 +192,7 @@ python buildhistory_emit_pkghistory() {
pe = d.getVar('PE') or "0"
pv = d.getVar('PV')
pr = d.getVar('PR')
+ layer = bb.utils.get_file_layer(d.getVar('FILE', True), d)
pkgdata_dir = d.getVar('PKGDATA_DIR')
packages = ""
@@ -225,6 +232,7 @@ python buildhistory_emit_pkghistory() {
rcpinfo.pr = pr
rcpinfo.depends = sortlist(oe.utils.squashspaces(d.getVar('DEPENDS') or ""))
rcpinfo.packages = packages
+ rcpinfo.layer = layer
write_recipehistory(rcpinfo, d)
pkgdest = d.getVar('PKGDEST')
@@ -289,6 +297,29 @@ python buildhistory_emit_pkghistory() {
bb.build.exec_func("buildhistory_list_pkg_files", d)
}
+python buildhistory_emit_outputsigs() {
+ if not "task" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
+ return
+
+ taskoutdir = os.path.join(d.getVar('BUILDHISTORY_DIR'), 'task', 'output')
+ bb.utils.mkdirhier(taskoutdir)
+ currenttask = d.getVar('BB_CURRENTTASK')
+ pn = d.getVar('PN')
+ taskfile = os.path.join(taskoutdir, '%s.%s' % (pn, currenttask))
+
+ cwd = os.getcwd()
+ filesigs = {}
+ for root, _, files in os.walk(cwd):
+ for fname in files:
+ if fname == 'fixmepath':
+ continue
+ fullpath = os.path.join(root, fname)
+ filesigs[os.path.relpath(fullpath, cwd)] = bb.utils.sha256_file(fullpath)
+ with open(taskfile, 'w') as f:
+ for fpath, fsig in sorted(filesigs.items(), key=lambda item: item[0]):
+ f.write('%s %s\n' % (fpath, fsig))
+}
+
def write_recipehistory(rcpinfo, d):
bb.debug(2, "Writing recipe history")
@@ -303,6 +334,7 @@ def write_recipehistory(rcpinfo, d):
f.write(u"PR = %s\n" % rcpinfo.pr)
f.write(u"DEPENDS = %s\n" % rcpinfo.depends)
f.write(u"PACKAGES = %s\n" % rcpinfo.packages)
+ f.write(u"LAYER = %s\n" % rcpinfo.layer)
def write_pkghistory(pkginfo, d):
@@ -414,7 +446,7 @@ buildhistory_get_installed() {
# Produce installed package sizes list
oe-pkgdata-util -p ${PKGDATA_DIR} read-value "PKGSIZE" -n -f $pkgcache > $1/installed-package-sizes.tmp
- cat $1/installed-package-sizes.tmp | awk '{print $2 "\tKiB " $1}' | sort -n -r > $1/installed-package-sizes.txt
+ cat $1/installed-package-sizes.tmp | awk '{print $2 "\tKiB\t" $1}' | sort -n -r > $1/installed-package-sizes.txt
rm $1/installed-package-sizes.tmp
# We're now done with the cache, delete it
@@ -550,7 +582,9 @@ END
python buildhistory_get_extra_sdkinfo() {
import operator
import math
- if d.getVar('BB_CURRENTTASK') == 'populate_sdk_ext':
+
+ if d.getVar('BB_CURRENTTASK') == 'populate_sdk_ext' and \
+ "sdk" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
tasksizes = {}
filesizes = {}
for root, _, files in os.walk(d.expand('${SDK_OUTPUT}/${SDKPATH}/sstate-cache')):
@@ -573,10 +607,14 @@ python buildhistory_get_extra_sdkinfo() {
# By using ROOTFS_POSTUNINSTALL_COMMAND we get in after uninstallation of
# unneeded packages but before the removal of packaging files
-ROOTFS_POSTUNINSTALL_COMMAND += " buildhistory_list_installed_image ;\
- buildhistory_get_image_installed ; "
+ROOTFS_POSTUNINSTALL_COMMAND += "buildhistory_list_installed_image ;"
+ROOTFS_POSTUNINSTALL_COMMAND += "buildhistory_get_image_installed ;"
+ROOTFS_POSTUNINSTALL_COMMAND[vardepvalueexclude] .= "| buildhistory_list_installed_image ;| buildhistory_get_image_installed ;"
+ROOTFS_POSTUNINSTALL_COMMAND[vardepsexclude] += "buildhistory_list_installed_image buildhistory_get_image_installed"
-IMAGE_POSTPROCESS_COMMAND += " buildhistory_get_imageinfo ; "
+IMAGE_POSTPROCESS_COMMAND += "buildhistory_get_imageinfo ;"
+IMAGE_POSTPROCESS_COMMAND[vardepvalueexclude] .= "| buildhistory_get_imageinfo ;"
+IMAGE_POSTPROCESS_COMMAND[vardepsexclude] += "buildhistory_get_imageinfo"
# We want these to be the last run so that we get called after complementary package installation
POPULATE_SDK_POST_TARGET_COMMAND_append = " buildhistory_list_installed_sdk_target;"
@@ -590,11 +628,21 @@ POPULATE_SDK_POST_HOST_COMMAND[vardepvalueexclude] .= "| buildhistory_list_insta
SDK_POSTPROCESS_COMMAND_append = " buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
SDK_POSTPROCESS_COMMAND[vardepvalueexclude] .= "| buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
+python buildhistory_write_sigs() {
+ if not "task" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
+ return
+
+ # Create sigs file
+ if hasattr(bb.parse.siggen, 'dump_siglist'):
+ taskoutdir = os.path.join(d.getVar('BUILDHISTORY_DIR'), 'task')
+ bb.utils.mkdirhier(taskoutdir)
+ bb.parse.siggen.dump_siglist(os.path.join(taskoutdir, 'tasksigs.txt'))
+}
+
def buildhistory_get_build_id(d):
if d.getVar('BB_WORKERCONTEXT') != '1':
return ""
localdata = bb.data.createCopy(d)
- bb.data.update_data(localdata)
statuslines = []
for func in oe.data.typed_value('BUILDCFG_FUNCS', localdata):
g = globals()
@@ -756,6 +804,7 @@ python buildhistory_eventhandler() {