diff options
| author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-07-08 15:24:31 +0300 |
|---|---|---|
| committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-07-08 16:34:48 +0300 |
| commit | 2939317205d1f39eefebec7bd6ba01faaa0f9369 (patch) | |
| tree | 45f4ba1e0bca7dc394b7fa77ca3122f1121a6a55 /poky/meta/classes | |
| parent | 963b1beb7e04e1c6c55bea2104b856e3121202db (diff) | |
| download | openbmc-2.7.0-rc1.tar.xz | |
reset upstream subtrees to warrior HEAD2.7.0-rc1
Reset the following subtrees on warrior HEAD:
meta-security: 4f7be0d252(warrior)
poky: 38d5c8ea98(warrior)
meta-raspberrypi: 6c73694912(warrior)
meta-openembedded: 6fa72d587a(warrior)
Change-Id: Id2550baeb90de14bdd9ee8c06f2c619fc719bc68
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'poky/meta/classes')
32 files changed, 180 insertions, 280 deletions
diff --git a/poky/meta/classes/base.bbclass b/poky/meta/classes/base.bbclass index 0c8a4b2862..1636c6ef93 100644 --- a/poky/meta/classes/base.bbclass +++ b/poky/meta/classes/base.bbclass @@ -10,13 +10,9 @@ inherit utility-tasks inherit metadata_scm inherit logging -OE_EXTRA_IMPORTS ?= "" - -OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license ${OE_EXTRA_IMPORTS}" +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" -PACKAGECONFIG_CONFARGS ??= "" - def oe_import(d): import sys @@ -643,18 +639,6 @@ python () { if needsrcrev: d.setVar("SRCPV", "${@bb.fetch2.get_srcrev(d)}") - # Gather all named SRCREVs to add to the sstate hash calculation - # This anonymous python snippet is called multiple times so we - # need to be careful to not double up the appends here and cause - # the base hash to mismatch the task hash - for uri in srcuri.split(): - parm = bb.fetch.decodeurl(uri)[5] - uri_names = parm.get("name", "").split(",") - for uri_name in filter(None, uri_names): - srcrev_name = "SRCREV_{}".format(uri_name) - if srcrev_name not in (d.getVarFlag("do_fetch", "vardeps") or "").split(): - d.appendVarFlag("do_fetch", "vardeps", " {}".format(srcrev_name)) - set_packagetriplet(d) # 'multimachine' handling diff --git a/poky/meta/classes/binconfig.bbclass b/poky/meta/classes/binconfig.bbclass index 9112ed4608..133b9537cf 100644 --- a/poky/meta/classes/binconfig.bbclass +++ b/poky/meta/classes/binconfig.bbclass @@ -40,6 +40,15 @@ binconfig_package_preprocess () { -e 's:${STAGING_DIR_HOST}${prefix}:${prefix}:' \ $config done + for lafile in `find ${PKGD} -type f -name "*.la"` ; do + sed -i \ + -e 's:${STAGING_BASELIBDIR}:${base_libdir}:g;' \ + -e 's:${STAGING_LIBDIR}:${libdir}:g;' \ + -e 's:${STAGING_INCDIR}:${includedir}:g;' \ + -e 's:${STAGING_DATADIR}:${datadir}:' \ + -e 's:${STAGING_DIR_HOST}${prefix}:${prefix}:' \ + $lafile + done } SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess" diff --git a/poky/meta/classes/buildhistory.bbclass b/poky/meta/classes/buildhistory.bbclass index 2e501df24b..796f68cf8f 100644 --- a/poky/meta/classes/buildhistory.bbclass +++ b/poky/meta/classes/buildhistory.bbclass @@ -839,15 +839,11 @@ python buildhistory_eventhandler() { if e.data.getVar("BUILDHISTORY_COMMIT") == "1": bb.note("Writing buildhistory") bb.build.exec_func("buildhistory_write_sigs", d) - import time - start=time.time() localdata = bb.data.createCopy(e.data) localdata.setVar('BUILDHISTORY_BUILD_FAILURES', str(e._failures)) interrupted = getattr(e, '_interrupted', 0) localdata.setVar('BUILDHISTORY_BUILD_INTERRUPTED', str(interrupted)) bb.build.exec_func("buildhistory_commit", localdata) - stop=time.time() - bb.note("Writing buildhistory took: %s seconds" % round(stop-start)) else: bb.note("No commit since BUILDHISTORY_COMMIT != '1'") } diff --git a/poky/meta/classes/cmake.bbclass b/poky/meta/classes/cmake.bbclass index 2b317c832f..d3f0d70847 100644 --- a/poky/meta/classes/cmake.bbclass +++ b/poky/meta/classes/cmake.bbclass @@ -26,16 +26,14 @@ python() { if not d.getVar('OECMAKE_C_COMPILER'): cc_list = d.getVar('CC').split() if cc_list[0] == 'ccache': - d.setVar('OECMAKE_C_COMPILER_LAUNCHER', cc_list[0]) - d.setVar('OECMAKE_C_COMPILER', cc_list[1]) + d.setVar('OECMAKE_C_COMPILER', '%s %s' % (cc_list[0], cc_list[1])) else: d.setVar('OECMAKE_C_COMPILER', cc_list[0]) if not d.getVar('OECMAKE_CXX_COMPILER'): cxx_list = d.getVar('CXX').split() if cxx_list[0] == 'ccache': - d.setVar('OECMAKE_CXX_COMPILER_LAUNCHER', cxx_list[0]) - d.setVar('OECMAKE_CXX_COMPILER', cxx_list[1]) + d.setVar('OECMAKE_CXX_COMPILER', '%s %s' % (cxx_list[0], cxx_list[1])) else: d.setVar('OECMAKE_CXX_COMPILER', cxx_list[0]) } @@ -51,9 +49,6 @@ OECMAKE_CXX_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CXXFLAGS} ${LD CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}" CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}" -OECMAKE_C_COMPILER_LAUNCHER ?= "" -OECMAKE_CXX_COMPILER_LAUNCHER ?= "" - OECMAKE_RPATH ?= "" OECMAKE_PERLNATIVE_DIR ??= "" OECMAKE_EXTRA_ROOT_PATH ?= "" @@ -91,8 +86,6 @@ set( CMAKE_SYSTEM_NAME `echo ${TARGET_OS} | sed -e 's/^./\u&/' -e 's/^\(Linux\). set( CMAKE_SYSTEM_PROCESSOR ${@map_target_arch_to_uname_arch(d.getVar('TARGET_ARCH'))} ) set( CMAKE_C_COMPILER ${OECMAKE_C_COMPILER} ) set( CMAKE_CXX_COMPILER ${OECMAKE_CXX_COMPILER} ) -set( CMAKE_C_COMPILER_LAUNCHER ${OECMAKE_C_COMPILER_LAUNCHER} ) -set( CMAKE_CXX_COMPILER_LAUNCHER ${OECMAKE_CXX_COMPILER_LAUNCHER} ) set( CMAKE_ASM_COMPILER ${OECMAKE_C_COMPILER} ) set( CMAKE_AR ${OECMAKE_AR} CACHE FILEPATH "Archiver" ) set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "CFLAGS" ) @@ -119,7 +112,7 @@ set( ENV{QT_CONF_PATH} ${WORKDIR}/qt.conf ) # directory as rpath by default set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} ) -# Use our cmake modules +# Use native cmake modules list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/") # add for non /usr/lib libdir, e.g. /usr/lib64 @@ -161,15 +154,15 @@ cmake_do_configure() { $oecmake_sitefile \ ${OECMAKE_SOURCEPATH} \ -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \ - -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir'), d.getVar('prefix') + '/')} \ - -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir'), d.getVar('prefix') + '/')} \ - -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir'), d.getVar('prefix') + '/')} \ + -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir'), d.getVar('prefix'))} \ + -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir'), d.getVar('prefix'))} \ + -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir'), d.getVar('prefix'))} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \ - -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir'), d. getVar('prefix') + '/')} \ + -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir'), d. getVar('prefix'))} \ -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \ - -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} \ - -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix') + '/')} \ - -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir'), d.getVar('prefix') + '/')} \ + -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix'))} \ + -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix'))} \ + -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir'), d.getVar('prefix'))} \ -DCMAKE_INSTALL_SO_NO_EXE=0 \ -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \ -DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \ diff --git a/poky/meta/classes/cve-check.bbclass b/poky/meta/classes/cve-check.bbclass index 379f7121cc..743bc08a4f 100644 --- a/poky/meta/classes/cve-check.bbclass +++ b/poky/meta/classes/cve-check.bbclass @@ -26,7 +26,7 @@ CVE_PRODUCT ??= "${BPN}" CVE_VERSION ??= "${PV}" CVE_CHECK_DB_DIR ?= "${DL_DIR}/CVE_CHECK" -CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvd-json.db" +CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvd.db" CVE_CHECK_LOG ?= "${T}/cve.log" CVE_CHECK_TMP_FILE ?= "${TMPDIR}/cve_check" @@ -62,7 +62,7 @@ python do_cve_check () { } addtask cve_check after do_unpack before do_build -do_cve_check[depends] = "cve-update-db:do_populate_cve_db" +do_cve_check[depends] = "cve-check-tool-native:do_populate_sysroot cve-check-tool-native:do_populate_cve_db" do_cve_check[nostamp] = "1" python cve_check_cleanup () { @@ -163,55 +163,61 @@ def get_patches_cves(d): def check_cves(d, patched_cves): """ - Connect to the NVD database and find unpatched cves. + Run cve-check-tool looking for patched and unpatched CVEs. """ + import ast, csv, tempfile, subprocess, io - from distutils.version import LooseVersion + cves_patched = [] cves_unpatched = [] - # CVE_PRODUCT can contain more than one product (eg. curl/libcurl) - bpn = d.getVar("CVE_PRODUCT").split() + bpn = d.getVar("CVE_PRODUCT") # If this has been unset then we're not scanning for CVEs here (for example, image recipes) - if len(bpn) == 0: + if not bpn: return ([], []) pv = d.getVar("CVE_VERSION").split("+git")[0] + cves = " ".join(patched_cves) + cve_db_dir = d.getVar("CVE_CHECK_DB_DIR") cve_whitelist = ast.literal_eval(d.getVar("CVE_CHECK_CVE_WHITELIST")) + cve_cmd = "cve-check-tool" + cmd = [cve_cmd, "--no-html", "--skip-update", "--csv", "--not-affected", "-t", "faux", "-d", cve_db_dir] # If the recipe has been whitlisted we return empty lists if d.getVar("PN") in d.getVar("CVE_CHECK_PN_WHITELIST").split(): bb.note("Recipe has been whitelisted, skipping check") return ([], []) - import sqlite3 - db_file = d.getVar("CVE_CHECK_DB_FILE") - conn = sqlite3.connect(db_file) - c = conn.cursor() - - query = """SELECT * FROM PRODUCTS WHERE - (PRODUCT IS '{0}' AND VERSION = '{1}' AND OPERATOR IS '=') OR - (PRODUCT IS '{0}' AND OPERATOR IS '<=');""" - for idx in range(len(bpn)): - for row in c.execute(query.format(bpn[idx],pv)): - cve = row[1] - version = row[4] - - try: - discardVersion = LooseVersion(version) < LooseVersion(pv) - except: - discardVersion = True - - if pv in cve_whitelist.get(cve,[]): - bb.note("%s-%s has been whitelisted for %s" % (bpn[idx], pv, cve)) - elif cve in patched_cves: - bb.note("%s has been patched" % (cve)) - elif discardVersion: - bb.debug(2, "Do not consider version %s " % (version)) - else: - cves_unpatched.append(cve) - bb.debug(2, "%s-%s is not patched for %s" % (bpn[idx], pv, cve)) - conn.close() - - return (list(patched_cves), cves_unpatched) + try: + # Write the faux CSV file to be used with cve-check-tool + fd, faux = tempfile.mkstemp(prefix="cve-faux-") + with os.fdopen(fd, "w") as f: + for pn in bpn.split(): + f.write("%s,%s,%s,\n" % (pn, pv, cves)) + cmd.append(faux) + + output = subprocess.check_output(cmd).decode("utf-8") + bb.debug(2, "Output of command %s:\n%s" % ("\n".join(cmd), output)) + except subprocess.CalledProcessError as e: + bb.warn("Couldn't check for CVEs: %s (output %s)" % (e, e.output)) + finally: + os.remove(faux) + + for row in csv.reader(io.StringIO(output)): + # Third row has the unpatched CVEs + if row[2]: + for cve in row[2].split(): + # Skip if the CVE has been whitlisted for the current version + if pv in cve_whitelist.get(cve,[]): + bb.note("%s-%s has been whitelisted for %s" % (bpn, pv, cve)) + else: + cves_unpatched.append(cve) + bb.debug(2, "%s-%s is not patched for %s" % (bpn, pv, cve)) + # Fourth row has patched CVEs + if row[3]: + for cve in row[3].split(): + cves_patched.append(cve) + bb.debug(2, "%s-%s is patched for %s" % (bpn, pv, cve)) + + return (cves_patched, cves_unpatched) def get_cve_info(d, cves): """ @@ -235,10 +241,9 @@ def get_cve_info(d, cves): for row in cur.execute(query, tuple(cves)): cve_data[row[0]] = {} cve_data[row[0]]["summary"] = row[1] - cve_data[row[0]]["scorev2"] = row[2] - cve_data[row[0]]["scorev3"] = row[3] - cve_data[row[0]]["modified"] = row[4] - cve_data[row[0]]["vector"] = row[5] + cve_data[row[0]]["score"] = row[2] + cve_data[row[0]]["modified"] = row[3] + cve_data[row[0]]["vector"] = row[4] conn.close() return cve_data @@ -265,8 +270,7 @@ def cve_write_data(d, patched, unpatched, cve_data): unpatched_cves.append(cve) write_string += "CVE STATUS: Unpatched\n" write_string += "CVE SUMMARY: %s\n" % cve_data[cve]["summary"] - write_string += "CVSS v2 BASE SCORE: %s\n" % cve_data[cve]["scorev2"] - write_string += "CVSS v3 BASE SCORE: %s\n" % cve_data[cve]["scorev3"] + write_string += "CVSS v2 BASE SCORE: %s\n" % cve_data[cve]["score"] write_string += "VECTOR: %s\n" % cve_data[cve]["vector"] write_string += "MORE INFORMATION: %s%s\n\n" % (nvd_link, cve) diff --git a/poky/meta/classes/distutils.bbclass b/poky/meta/classes/distutils.bbclass index 3759b58263..b5c9c2fbbd 100644 --- a/poky/meta/classes/distutils.bbclass +++ b/poky/meta/classes/distutils.bbclass @@ -52,20 +52,25 @@ distutils_do_install() { # support filenames with *spaces* # only modify file if it contains path and recompile it - find ${D} -name "*.py" -exec grep -q ${D} {} \; \ - -exec sed -i -e s:${D}::g {} \; \ - -exec ${STAGING_BINDIR_NATIVE}/python-native/python -mcompileall {} \; + find ${D} -name "*.py" -exec grep -q ${D} {} \; -exec sed -i -e s:${D}::g {} \; -exec ${STAGING_BINDIR_NATIVE}/python-native/python -mcompileall {} \; - for i in ${D}${bindir}/* ${D}${sbindir}/*; do - if [ -f "$i" ]; then - sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i + if test -e ${D}${bindir} ; then + for i in ${D}${bindir}/* ; do \ + sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i - fi - done + done + fi + + if [ -e ${D}${sbindir} ]; then + for i in ${D}${sbindir}/* ; do \ + sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i + sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i + done + fi rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/site.py* - + # # FIXME: Bandaid against wrong datadir computation # @@ -75,8 +80,7 @@ distutils_do_install() { fi # Fix backport modules - if [ -e ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/backports/__init__.py ] && - [ -e ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.py ]; then + if [ -e ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/backports/__init__.py ] && [ -e ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.py ]; then rm ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.py; rm ${D}${PYTHON_SITEPACKAGES_DIR}/backports/__init__.pyc; fi diff --git a/poky/meta/classes/distutils3.bbclass b/poky/meta/classes/distutils3.bbclass index 05a24bfe26..42e7f5ae53 100644 --- a/poky/meta/classes/distutils3.bbclass +++ b/poky/meta/classes/distutils3.bbclass @@ -56,18 +56,24 @@ distutils3_do_install() { bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed." # support filenames with *spaces* - find ${D} -name "*.py" -exec grep -q ${D} {} \; \ - -exec sed -i -e s:${D}::g {} \; + find ${D} -name "*.py" -exec grep -q ${D} {} \; -exec sed -i -e s:${D}::g {} \; - for i in ${D}${bindir}/* ${D}${sbindir}/*; do - if [ -f "$i" ]; then - sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i + if test -e ${D}${bindir} ; then + for i in ${D}${bindir}/* ; do \ + sed -i -e s:${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i - fi - done + done + fi - rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth + if test -e ${D}${sbindir}; then + for i in ${D}${sbindir}/* ; do \ + sed -i -e s:${STAGING_BINDIR_NATIVE}/python-${PYTHON_PN}/${PYTHON_PN}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i + sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i + done + fi + rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth + # # FIXME: Bandaid against wrong datadir computation # diff --git a/poky/meta/classes/go.bbclass b/poky/meta/classes/go.bbclass index e05a5c641c..b6d9372c56 100644 --- a/poky/meta/classes/go.bbclass +++ b/poky/meta/classes/go.bbclass @@ -7,7 +7,6 @@ GOROOT_class-nativesdk = "${STAGING_DIR_TARGET}${libdir}/go" GOROOT = "${STAGING_LIBDIR}/go" export GOROOT export GOROOT_FINAL = "${libdir}/go" -export GOCACHE = "${B}/.cache" export GOARCH = "${TARGET_GOARCH}" export GOOS = "${TARGET_GOOS}" diff --git a/poky/meta/classes/gtk-doc.bbclass b/poky/meta/classes/gtk-doc.bbclass index 7dd662bf86..707d74d108 100644 --- a/poky/meta/classes/gtk-doc.bbclass +++ b/poky/meta/classes/gtk-doc.bbclass @@ -10,24 +10,13 @@ GTKDOC_ENABLED ?= "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', \ bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d), 'False', d)}" -# meson: default option name to enable/disable gtk-doc. This matches most -# project's configuration. In doubts - check meson_options.txt in project's -# source path. -GTKDOC_MESON_OPTION ?= 'docs' -GTKDOC_MESON_ENABLE_FLAG ?= 'true' -GTKDOC_MESON_DISABLE_FLAG ?= 'false' - -# Auto enable/disable based on GTKDOC_ENABLED EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GTKDOC_ENABLED', 'True', '--enable-gtk-doc --enable-gtk-doc-html --disable-gtk-doc-pdf', \ '--disable-gtk-doc', d)} " -EXTRA_OEMESON_prepend_class-target = "-D${GTKDOC_MESON_OPTION}=${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_MESON_ENABLE_FLAG}', '${GTKDOC_MESON_DISABLE_FLAG}', d)} " # When building native recipes, disable gtkdoc, as it is not necessary, # pulls in additional dependencies, and makes build times longer EXTRA_OECONF_prepend_class-native = "--disable-gtk-doc " EXTRA_OECONF_prepend_class-nativesdk = "--disable-gtk-doc " -EXTRA_OEMESON_prepend_class-native = "-D${GTKDOC_MESON_OPTION}=${GTKDOC_MESON_DISABLE_FLAG} " -EXTRA_OEMESON_prepend_class-nativesdk = "-D${GTKDOC_MESON_OPTION}=${GTKDOC_MESON_DISABLE_FLAG} " # Even though gtkdoc is disabled on -native, gtk-doc package is still # needed for m4 macros. diff --git a/poky/meta/classes/gtk-icon-cache.bbclass b/poky/meta/classes/gtk-icon-cache.bbclass index 66fe781bd2..d87167aec0 100644 --- a/poky/meta/classes/gtk-icon-cache.bbclass +++ b/poky/meta/classes/gtk-icon-cache.bbclass @@ -1,8 +1,8 @@ FILES_${PN} += "${datadir}/icons/hicolor" -DEPENDS +=" ${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk+3-native" +DEPENDS += "${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk-icon-utils-native" -PACKAGE_WRITE_DEPS += "gtk+3-native gdk-pixbuf-native" +PACKAGE_WRITE_DEPS += "gtk-icon-utils-native gdk-pixbuf-native" gtk_icon_cache_postinst() { if [ "x$D" != "x" ]; then diff --git a/poky/meta/classes/image.bbclass b/poky/meta/classes/image.bbclass index d2b2fb979e..276d0d31f4 100644 --- a/poky/meta/classes/image.bbclass +++ b/poky/meta/classes/image.bbclass @@ -33,7 +33,7 @@ INHIBIT_DEFAULT_DEPS = "1" # IMAGE_FEATURES may contain any available package group IMAGE_FEATURES ?= "" IMAGE_FEATURES[type] = "list" -IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs stateless-rootfs empty-root-password allow-empty-password allow-root-login post-install-logging" +IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs empty-root-password allow-empty-password allow-root-login post-install-logging" # Generate companion debugfs? IMAGE_GEN_DEBUGFS ?= "0" @@ -664,12 +664,6 @@ reproducible_final_image_task () { find ${IMAGE_ROOTFS} -exec touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS {} \; fi } - -systemd_preset_all () { - systemctl --root="${IMAGE_ROOTFS}" --preset-mode=enable-only preset-all -} - -IMAGE_EXTRADEPENDS += "${@ 'systemd-systemctl-native' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and not bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else ''}" -IMAGE_PREPROCESS_COMMAND_append = " ${@ 'systemd_preset_all;' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and not bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else ''} reproducible_final_image_task; " +IMAGE_PREPROCESS_COMMAND_append = " reproducible_final_image_task; " CVE_PRODUCT = "" diff --git a/poky/meta/classes/image_types.bbclass b/poky/meta/classes/image_types.bbclass index fd98a7d1bd..95aa1674cf 100644 --- a/poky/meta/classes/image_types.bbclass +++ b/poky/meta/classes/image_types.bbclass @@ -54,7 +54,7 @@ def imagetypes_getdepends(d): # Sort the set so that ordering is consistant return " ".join(sorted(deps)) -XZ_COMPRESSION_LEVEL ?= "-9" +XZ_COMPRESSION_LEVEL ?= "-3" XZ_INTEGRITY_CHECK ?= "crc32" ZIP_COMPRESSION_LEVEL ?= "-9" @@ -284,7 +284,7 @@ COMPRESSIONTYPES ?= "" CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot vmdk vdi qcow2 base64 ${COMPRESSIONTYPES}" CONVERSION_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" -CONVERSION_CMD_gz = "gzip -f -9 -n -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz" +CONVERSION_CMD_gz = "pigz -f -9 -n -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz" CONVERSION_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" CONVERSION_CMD_xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_DEFAULTS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.xz" CONVERSION_CMD_lz4 = "lz4 -9 -z -l ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.lz4" diff --git a/poky/meta/classes/insane.bbclass b/poky/meta/classes/insane.bbclass index 0695a04438..a9be88e816 100644 --- a/poky/meta/classes/insane.bbclass +++ b/poky/meta/classes/insane.bbclass @@ -25,7 +25,7 @@ QA_SANE = "True" WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \ textrel already-stripped incompatible-license files-invalid \ installed-vs-shipped compile-host-path install-host-path \ - pn-overrides infodir build-deps src-uri-bad \ + pn-overrides infodir build-deps \ unknown-configure-option symlink-to-sysroot multilib \ invalid-packageconfig host-user-contaminated uppercase-pn patch-fuzz \ " @@ -259,6 +259,13 @@ def package_qa_check_dbg(path, name, d, elf, messages): package_qa_add_message(messages, "debug-files", "non debug package contains .debug directory: %s path %s" % \ (name, package_qa_clean_path(path,d))) +QAPATHTEST[perms] = "package_qa_check_perm" +def package_qa_check_perm(path,name,d, elf, messages): + """ + Check the permission of files + """ + return + QAPATHTEST[arch] = "package_qa_check_arch" def package_qa_check_arch(path,name,d, elf, messages): """ @@ -401,8 +408,7 @@ def package_qa_check_buildpaths(path, name, d, elf, messages): with open(path, 'rb') as f: file_content = f.read() if tmpdir in file_content: - trimmed = path.replace(os.path.join (d.getVar("PKGDEST"), name), "") - package_qa_add_message(messages, "buildpaths", "File %s in package %s contains reference to TMPDIR" % (trimmed, name)) + package_qa_add_message(messages, "buildpaths", "File %s in package contained reference to tmpdir" % package_qa_clean_path(path,d)) QAPATHTEST[xorg-driver-abi] = "package_qa_check_xorg_driver_abi" @@ -886,17 +892,6 @@ def package_qa_check_host_user(path, name, d, elf, messages): return False return True -QARECIPETEST[src-uri-bad] = "package_qa_check_src_uri" -def package_qa_check_src_uri(pn, d, messages): - import re - - if "${PN}" in d.getVar("SRC_URI", False): - package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses PN not BPN" % pn, d) - - pn = d.getVar("SRC_URI") - if re.search(r"github\.com/.+/.+/archive/.+", pn): - package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub archives" % pn, d) - # The PACKAGE FUNC to scan each package python do_package_qa () { diff --git a/poky/meta/classes/kernel-fitimage.bbclass b/poky/meta/classes/kernel-fitimage.bbclass index b51882dce4..2820ff9689 100644 --- a/poky/meta/classes/kernel-fitimage.bbclass +++ b/poky/meta/classes/kernel-fitimage.bbclass @@ -42,7 +42,7 @@ python __anonymous () { # Verified boot will sign the fitImage and append the public key to # U-Boot dtb. We ensure the U-Boot dtb is deployed before assembling # the fitImage: - if d.getVar('UBOOT_SIGN_ENABLE') == "1" and d.getVar('UBOOT_DTB_BINARY'): + if d.getVar('UBOOT_SIGN_ENABLE') == "1": uboot_pn = d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot' d.appendVarFlag('do_assemble_fitimage', 'depends', ' %s:do_populate_sysroot' % uboot_pn) } @@ -50,9 +50,6 @@ python __anonymous () { # Options for the device tree compiler passed to mkimage '-D' feature: UBOOT_MKIMAGE_DTCOPTS ??= "" -# fitImage Hash Algo -FIT_HASH_ALG ?= "sha256" - # # Emit the fitImage ITS header # @@ -112,7 +109,7 @@ EOF # $4 ... Compression type fitimage_emit_section_kernel() { - kernel_csum="${FIT_HASH_ALG}" + kernel_csum="sha1" ENTRYPOINT="${UBOOT_ENTRYPOINT}" if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then @@ -145,7 +142,7 @@ EOF # $3 ... Path to DTB image fitimage_emit_section_dtb() { - dtb_csum="${FIT_HASH_ALG}" + dtb_csum="sha1" dtb_loadline="" dtb_ext=${DTB##*.} @@ -179,7 +176,7 @@ EOF # $3 ... Path to setup image fitimage_emit_section_setup() { - setup_csum="${FIT_HASH_ALG}" + setup_csum="sha1" cat << EOF >> ${1} setup@${2} { @@ -206,7 +203,7 @@ EOF # $3 ... Path to ramdisk image fitimage_emit_section_ramdisk() { - ramdisk_csum="${FIT_HASH_ALG}" + ramdisk_csum="sha1" ramdisk_ctype="none" ramdisk_loadline="" ramdisk_entryline="" @@ -264,7 +261,7 @@ EOF # $6 ... default flag fitimage_emit_section_config() { - conf_csum="${FIT_HASH_ALG}" + conf_csum="sha1" if [ -n "${UBOOT_SIGN_ENABLE}" ] ; then conf_sign_keyname="${UBOOT_SIGN_KEYNAME}" fi diff --git a/poky/meta/classes/kernel-uboot.bbclass b/poky/meta/classes/kernel-uboot.bbclass index 0457c5d1d1..2364053f31 100644 --- a/poky/meta/classes/kernel-uboot.bbclass +++ b/poky/meta/classes/kernel-uboot.bbclass @@ -5,8 +5,8 @@ uboot_prep_kimage() { linux_comp="none" elif [ -e arch/${ARCH}/boot/Image ] ; then vmlinux_path="vmlinux" - linux_suffix=".gz" - linux_comp="gzip" + linux_suffix="" + linux_comp="none" elif [ -e arch/${ARCH}/boot/vmlinuz.bin ]; then rm -f linux.bin cp -l arch/${ARCH}/boot/vmlinuz.bin linux.bin diff --git a/poky/meta/classes/kernel.bbclass b/poky/meta/classes/kernel.bbclass index a60e15b578..111a0b2eeb 100644 --- a/poky/meta/classes/kernel.bbclass +++ b/poky/meta/classes/kernel.bbclass @@ -8,7 +8,6 @@ DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-na PACKAGE_WRITE_DEPS += "depmodwrapper-cross" do_deploy[depends] += "depmodwrapper-cross:do_populate_sysroot" -do_clean[depends] += "make-mod-scripts:do_clean" CVE_PRODUCT ?= "linux_kernel" diff --git a/poky/meta/classes/license.bbclass b/poky/meta/classes/license.bbclass index adca881c85..ed91a4b4db 100644 --- a/poky/meta/classes/license.bbclass +++ b/poky/meta/classes/license.bbclass @@ -268,7 +268,7 @@ def expand_wildcard_licenses(d, wildcard_licenses): wildcards from SPDXLICENSEMAP flags and SRC_DISTRIBUTE_LICENSES values. """ import fnmatch - licenses = wildcard_licenses[:] + licenses = [] spdxmapkeys = d.getVarFlags('SPDXLICENSEMAP').keys() for wld_lic in wildcard_licenses: spdxflags = fnmatch.filter(spdxmapkeys, wld_lic) diff --git a/poky/meta/classes/license_image.bbclass b/poky/meta/classes/license_image.bbclass index 2cfda81c99..67500386bf 100644 --- a/poky/meta/classes/license_image.bbclass +++ b/poky/meta/classes/license_image.bbclass @@ -40,7 +40,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True): import stat bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split() - bad_licenses = [canonical_license(d, l) for l in bad_licenses] + bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses) bad_licenses = expand_wildcard_licenses(d, bad_licenses) with open(license_manifest, "w") as license_file: @@ -102,7 +102,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True): rootfs_license_manifest = os.path.join(rootfs_license_dir, os.path.split(license_manifest)[1]) if not os.path.exists(rootfs_license_manifest): - oe.path.copyhardlink(license_manifest, rootfs_license_manifest) + os.link(license_manifest, rootfs_license_manifest) if copy_lic_dirs == "1": for pkg in sorted(pkg_dic): @@ -136,7 +136,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True): continue if not os.path.exists(rootfs_license): - oe.path.copyhardlink(pkg_license, rootfs_license) + os.link(pkg_license, rootfs_license) if not os.path.exists(pkg_rootfs_license): os.symlink(os.path.join('..', lic), pkg_rootfs_license) @@ -146,7 +146,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True): os.path.exists(pkg_rootfs_license)): continue - oe.path.copyhardlink(pkg_license, pkg_rootfs_license) + os.link(pkg_license, pkg_rootfs_license) # Fixup file ownership and permissions for walkroot, dirs, files in os.walk(rootfs_license_dir): for f in files: diff --git a/poky/meta/classes/meson.bbclass b/poky/meta/classes/meson.bbclass index 0edbfc1815..115d1aedcb 100644 --- a/poky/meta/classes/meson.bbclass +++ b/poky/meta/classes/meson.bbclass @@ -56,8 +56,6 @@ def meson_cpu_family(var, d): return 'ppc64' elif arch == 'armeb': return 'arm' - elif arch == 'aarch64_be': - return 'aarch64' elif arch == 'mipsel': return 'mips' elif arch == 'mips64el': diff --git a/poky/meta/classes/multilib.bbclass b/poky/meta/classes/multilib.bbclass index 7750221f7d..2b761f3551 100644 --- a/poky/meta/classes/multilib.bbclass +++ b/poky/meta/classes/multilib.bbclass @@ -33,8 +33,6 @@ python multilib_virtclass_handler () { e.data.setVar("MLPREFIX", variant + "-") e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) e.data.setVar('SDKTARGETSYSROOT', e.data.getVar('SDKTARGETSYSROOT')) - override = ":virtclass-multilib-" + variant - e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) target_vendor = e.data.getVar("TARGET_VENDOR_" + "virtclass-multilib-" + variant, False) if target_vendor: e.data.setVar("TARGET_VENDOR", target_vendor) diff --git a/poky/meta/classes/multilib_global.bbclass b/poky/meta/classes/multilib_global.bbclass index 19ce1a5091..649cc096b7 100644 --- a/poky/meta/classes/multilib_global.bbclass +++ b/poky/meta/classes/multilib_global.bbclass @@ -118,9 +118,6 @@ def preferred_ml_updates(d): d.renameVar(prov, provexp) def translate_provide(prefix, prov): - # Really need to know if kernel modules class is inherited somehow - if prov == "lttng-modules": - return prov if not prov.startswith("virtual/"): return prefix + "-" + prov if prov == "virtual/kernel": diff --git a/poky/meta/classes/package.bbclass b/poky/meta/classes/package.bbclass index 20d72bba79..eef1f7b945 100644 --- a/poky/meta/classes/package.bbclass +++ b/poky/meta/classes/package.bbclass @@ -1005,12 +1005,6 @@ python split_and_strip_files () { symlinks[file] = target results = oe.utils.multiprocess_launch(oe.package.is_elf, checkelf.keys(), d) - - # Sort results by file path. This ensures that the files are always - # processed in the same order, which is important to make sure builds - # are reproducible when dealing with hardlinks - results.sort(key=lambda x: x[0]) - for (file, elf_file) in results: # It's a file (or hardlink), not a link # ...but is it ELF, and is it already stripped? diff --git a/poky/meta/classes/populate_sdk_base.bbclass b/poky/meta/classes/populate_sdk_base.bbclass index 59920a57a7..ebc30d39b3 100644 --- a/poky/meta/classes/populate_sdk_base.bbclass +++ b/poky/meta/classes/populate_sdk_base.bbclass @@ -45,23 +45,8 @@ TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalon TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= "" TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}" -# Default archived SDK's suffix -SDK_ARCHIVE_TYPE ?= "tar.xz" - -# To support different sdk type according to SDK_ARCHIVE_TYPE, now support zip and tar.xz -python () { - if d.getVar('SDK_ARCHIVE_TYPE') == 'zip': - d.setVar('SDK_ARCHIVE_DEPENDS', 'zip-native') - # SDK_ARCHIVE_CMD used to generate archived sdk ${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} from input dir ${SDK_OUTPUT}/${SDKPATH} to output dir ${SDKDEPLOYDIR} - # recommand to cd into input dir first to avoid archive with buildpath - d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; zip -r ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} .') - else: - d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native') - d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz -T 0 -9 > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}') -} - SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" -SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross" +SDK_DEPENDS = "virtual/fakeroot-native xz-native cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross" PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:" SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale" @@ -119,7 +104,7 @@ POPULATE_SDK_POST_TARGET_COMMAND_append = " write_sdk_test_data ; " POPULATE_SDK_POST_TARGET_COMMAND_append_task-populate-sdk = " write_target_sdk_manifest ; " POPULATE_SDK_POST_HOST_COMMAND_append_task-populate-sdk = " write_host_sdk_manifest; " SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if '${SDK_PACKAGING_FUNC}' else ''}" -SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; archive_sdk; ${SDK_PACKAGING_COMMAND} " +SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; tar_sdk; ${SDK_PACKAGING_COMMAND} " def populate_sdk_common(d): from oe.sdk import populate_sdk @@ -237,10 +222,11 @@ python check_sdk_sysroots() { SDKTAROPTS = "--owner=root --group=root" -fakeroot archive_sdk() { +fakeroot tar_sdk() { # Package it up mkdir -p ${SDKDEPLOYDIR} - ${SDK_ARCHIVE_CMD} + cd ${SDK_OUTPUT}/${SDKPATH} + tar ${SDKTAROPTS} -cf - . | xz ${XZ_DEFAULTS} > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz } TOOLCHAIN_SHAR_EXT_TMPL ?= "${COREBASE}/meta/files/toolchain-shar-extract.sh" @@ -277,17 +263,16 @@ EOF -e '/@SDK_PRE_INSTALL_COMMAND@/d' \ -e '/@SDK_POST_INSTALL_COMMAND@/d' \ -e 's#@SDK_GCC_VER@#${@oe.utils.host_gcc_version(d, taskcontextonly=True)}#g' \ - -e 's#@SDK_ARCHIVE_TYPE@#${SDK_ARCHIVE_TYPE}#g' \ ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh # add execution permission chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh # append the SDK tarball - cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh + cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh # delete the old tarball, we don't need it anymore - rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE} + rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz } populate_sdk_log_check() { diff --git a/poky/meta/classes/rootfs-postcommands.bbclass b/poky/meta/classes/rootfs-postcommands.bbclass index 89f8efd323..bde58ad6cd 100644 --- a/poky/meta/classes/rootfs-postcommands.bbclass +++ b/poky/meta/classes/rootfs-postcommands.bbclass @@ -126,12 +126,6 @@ read_only_rootfs_hook () { ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh fi fi - - if ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", "false", d)}; then - # Create machine-id - # 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable - touch ${IMAGE_ROOTFS}${sysconfdir}/machine-id - fi } # diff --git a/poky/meta/classes/scons.bbclass b/poky/meta/classes/scons.bbclass index 6b171ca8df..9ee7d1587d 100644 --- a/poky/meta/classes/scons.bbclass +++ b/poky/meta/classes/scons.bbclass @@ -1,11 +1,8 @@ -inherit python3native - -DEPENDS += "python3-scons-native" +DEPENDS += "python-scons-native" EXTRA_OESCONS ?= "" do_configure() { - unset _PYTHON_SYSCONFIGDATA_NAME if [ -n "${CONFIGURESTAMPFILE}" ]; then if [ -e "${CONFIGURESTAMPFILE}" -a "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" -a "${CLEANBROKEN}" != "1" ]; then ${STAGING_BINDIR_NATIVE}/scons --clean PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} @@ -17,13 +14,11 @@ do_configure() { } scons_do_compile() { - unset _PYTHON_SYSCONFIGDATA_NAME ${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} || \ die "scons build execution failed." } scons_do_install() { - unset _PYTHON_SYSCONFIGDATA_NAME ${STAGING_BINDIR_NATIVE}/scons install_root=${D}${prefix} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} install || \ die "scons install execution failed." } diff --git a/poky/meta/classes/staging.bbclass b/poky/meta/classes/staging.bbclass index 9207060222..062b2817c8 100644 --- a/poky/meta/classes/staging.bbclass +++ b/poky/meta/classes/staging.bbclass @@ -27,10 +27,9 @@ SYSROOT_DIRS_BLACKLIST = " \ ${mandir} \ ${docdir} \ ${infodir} \ + ${datadir}/locale \ ${datadir}/applications \ ${datadir}/fonts \ - ${datadir}/gtk-doc/html \ - ${datadir}/locale \ ${datadir}/pixmaps \ ${libdir}/${PN}/ptest \ " @@ -168,7 +167,7 @@ def staging_processfixme(fixme, target, recipesysroot, recipesysrootnative, d): if not fixme: return cmd = "sed -e 's:^[^/]*/:%s/:g' %s | xargs sed -i -e 's:FIXMESTAGINGDIRTARGET:%s:g; s:FIXMESTAGINGDIRHOST:%s:g'" % (target, " ".join(fixme), recipesysroot, recipesysrootnative) - for fixmevar in ['PSEUDO_SYSROOT', 'HOSTTOOLS_DIR', 'PKGDATA_DIR', 'PSEUDO_LOCALSTATEDIR', 'LOGFIFO']: + for fixmevar in ['COMPONENTS_DIR', 'HOSTTOOLS_DIR', 'PKGDATA_DIR', 'PSEUDO_LOCALSTATEDIR', 'LOGFIFO']: fixme_path = d.getVar(fixmevar) cmd += " -e 's:FIXME_%s:%s:g'" % (fixmevar, fixme_path) bb.debug(2, cmd) diff --git a/poky/meta/classes/systemd.bbclass b/poky/meta/classes/systemd.bbclass index d1cb17dc8d..c8f4fdec88 100644 --- a/poky/meta/classes/systemd.bbclass +++ b/poky/meta/classes/systemd.bbclass @@ -23,41 +23,38 @@ python __anonymous() { } systemd_postinst() { -if type systemctl >/dev/null 2>/dev/null; then - OPTS="" - - if [ -n "$D" ]; then - OPTS="--root=$D" - fi +OPTS="" - if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then - for service in ${SYSTEMD_SERVICE_ESCAPED}; do - case "${service}" in - *@*) - systemctl ${OPTS} enable "${service}" - ;; - esac - done - fi +if [ -n "$D" ]; then + OPTS="--root=$D" +fi +if type systemctl >/dev/null 2>/dev/null; then if [ -z "$D" ]; then systemctl daemon-reload - systemctl preset ${SYSTEMD_SERVICE_ESCAPED} + fi - if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then - systemctl --no-block restart ${SYSTEMD_SERVICE_ESCAPED} - fi + systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE_ESCAPED} + + if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then + systemctl --no-block restart ${SYSTEMD_SERVICE_ESCAPED} fi fi } systemd_prerm() { +OPTS="" + +if [ -n "$D" ]; then + OPTS="--root=$D" +fi + if type systemctl >/dev/null 2>/dev/null; then if [ -z "$D" ]; then systemctl stop ${SYSTEMD_SERVICE_ESCAPED} - - systemctl disable ${SYSTEMD_SERVICE_ESCAPED} fi + + systemctl $OPTS disable ${SYSTEMD_SERVICE_ESCAPED} fi } @@ -180,25 +177,12 @@ python systemd_populate_packages() { else: bb.fatal("SYSTEMD_SERVICE_%s value %s does not exist" % (pkg_systemd, service)) - def systemd_create_presets(pkg, action): - presetf = oe.path.join(d.getVar("PKGD"), d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg) - bb.utils.mkdirhier(os.path.dirname(presetf)) - with open(presetf, 'a') as fd: - for service in d.getVar('SYSTEMD_SERVICE_%s' % pkg).split(): - fd.write("%s %s\n" % (action,service)) - d.appendVar("FILES_%s" % pkg, ' ' + oe.path.join(d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg)) - # Run all modifications once when creating package if os.path.exists(d.getVar("D")): for pkg in d.getVar('SYSTEMD_PACKAGES').split(): systemd_check_package(pkg) if d.getVar('SYSTEMD_SERVICE_' + pkg): systemd_generate_package_scripts(pkg) - action = get_package_var(d, 'SYSTEMD_AUTO_ENABLE', pkg) - if action in ("enable", "disable"): - systemd_create_presets(pkg, action) - elif action not in ("mask", "preset"): - bb.fatal("SYSTEMD_AUTO_ENABLE_%s '%s' is not 'enable', 'disable', 'mask' or 'preset'" % (pkg, action)) systemd_check_services() } diff --git a/poky/meta/classes/testimage.bbclass b/poky/meta/classes/testimage.bbclass index 525c5a6173..9bb5a5cb0b 100644 --- a/poky/meta/classes/testimage.bbclass +++ b/poky/meta/classes/testimage.bbclass @@ -210,11 +210,7 @@ def testimage_main(d): bb.fatal('Unsupported image type built. Add a comptible image to ' 'IMAGE_FSTYPES. Supported types: %s' % ', '.join(supported_fstypes)) - qfstype = fstypes[0] - qdeffstype = d.getVar("QB_DEFAULT_FSTYPE") - if qdeffstype: - qfstype = qdeffstype - rootfs = '%s.%s' % (image_name, qfstype) + rootfs = '%s.%s' % (image_name, fstypes[0]) # Get tmpdir (not really used, just for compatibility) tmpdir = d.getVar("TMPDIR") diff --git a/poky/meta/classes/uboot-sign.bbclass b/poky/meta/classes/uboot-sign.bbclass index de81ad1b38..8beafff7c0 100644 --- a/poky/meta/classes/uboot-sign.bbclass +++ b/poky/meta/classes/uboot-sign.bbclass @@ -116,7 +116,7 @@ do_install_append() { } python () { - if d.getVar('UBOOT_SIGN_ENABLE') == '1' and d.getVar('PN') == d.getVar('UBOOT_PN') and d.getVar('UBOOT_DTB_BINARY'): + if d.getVar('UBOOT_SIGN_ENABLE') == '1' and d.getVar('PN') == d.getVar('UBOOT_PN'): kernel_pn = d.getVar('PREFERRED_PROVIDER_virtual/kernel') # Make "bitbake u-boot -cdeploy" deploys the signed u-boot.dtb diff --git a/poky/meta/classes/update-rc.d.bbclass b/poky/meta/classes/update-rc.d.bbclass index 1366fee653..265c4be9d1 100644 --- a/poky/meta/classes/update-rc.d.bbclass +++ b/poky/meta/classes/update-rc.d.bbclass @@ -20,14 +20,28 @@ def use_updatercd(d): return '[ -n "$D" -o ! -d /run/systemd/system ]' return 'true' +updatercd_preinst() { +if ${@use_updatercd(d)} && [ -z "$D" -a -f "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then + ${INIT_D_DIR}/${INITSCRIPT_NAME} stop || : +fi +if ${@use_updatercd(d)} && type update-rc.d >/dev/null 2>/dev/null; then + if [ -n "$D" ]; then + OPT="-f -r $D" + else + OPT="-f" + fi + update-rc.d $OPT ${INITSCRIPT_NAME} remove +fi +} + PACKAGE_WRITE_DEPS += "update-rc.d-native" updatercd_postinst() { if ${@use_updatercd(d)} && type update-rc.d >/dev/null 2>/dev/null; then if [ -n "$D" ]; then - OPT="-r $D" + OPT="-f -r $D" else - OPT="-s" + OPT="-f -s" fi update-rc.d $OPT ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS} fi @@ -65,7 +79,7 @@ python __anonymous() { PACKAGESPLITFUNCS_prepend = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'populate_packages_updatercd ', '', d)}" PACKAGESPLITFUNCS_remove_class-nativesdk = "populate_packages_updatercd " -populate_packages_updatercd[vardeps] += "updatercd_prerm updatercd_postrm updatercd_postinst" +populate_packages_updatercd[vardeps] += "updatercd_prerm updatercd_postrm updatercd_preinst updatercd_postinst" populate_packages_updatercd[vardepsexclude] += "OVERRIDES" python populate_packages_updatercd () { @@ -81,7 +95,7 @@ python populate_packages_updatercd () { d.appendVar('RDEPENDS_' + pkg, ' %sinitd-functions' % (mlprefix)) def update_rcd_package(pkg): - bb.debug(1, 'adding update-rc.d calls to postinst/prerm/postrm for %s' % pkg) + bb.debug(1, 'adding update-rc.d calls to preinst/postinst/prerm/postrm for %s' % pkg) localdata = bb.data.createCopy(d) overrides = localdata.getVar("OVERRIDES") @@ -89,6 +103,12 @@ python populate_packages_updatercd () { update_rcd_auto_depend(pkg) + preinst = d.getVar('pkg_preinst_%s' % pkg) + if not preinst: + preinst = '#!/bin/sh\n' + preinst += localdata.getVar('updatercd_preinst') + d.setVar('pkg_preinst_%s' % pkg, preinst) + postinst = d.getVar('pkg_postinst_%s' % pkg) if not postinst: postinst = '#!/bin/sh\n' diff --git a/poky/meta/classes/useradd.bbclass b/poky/meta/classes/useradd.bbclass index e5f3ba24f9..124becd082 100644 --- a/poky/meta/classes/useradd.bbclass +++ b/poky/meta/classes/useradd.bbclass @@ -100,8 +100,6 @@ useradd_sysroot () { # Pseudo may (do_prepare_recipe_sysroot) or may not (do_populate_sysroot_setscene) be running # at this point so we're explicit about the environment so pseudo can load if # not already present. - # PSEUDO_SYSROOT can contain references to the build architecture and COMPONENT_DIR - # so needs the STAGING_FIXME below export PSEUDO="${FAKEROOTENV} ${PSEUDO_SYSROOT}${bindir_native}/pseudo" # Explicitly set $D since it isn't set to anything @@ -136,10 +134,10 @@ useradd_sysroot () { } # The export of PSEUDO in useradd_sysroot() above contains references to -# ${PSEUDO_SYSROOT} and ${PSEUDO_LOCALSTATEDIR}. Additionally, the logging +# ${COMPONENTS_DIR} and ${PSEUDO_LOCALSTATEDIR}. Additionally, the logging # shell functions use ${LOGFIFO}. These need to be handled when restoring # postinst-useradd-${PN} from the sstate cache. -EXTRA_STAGING_FIXMES += "PSEUDO_SYSROOT PSEUDO_LOCALSTATEDIR LOGFIFO" +EXTRA_STAGING_FIXMES += "COMPONENTS_DIR PSEUDO_LOCALSTATEDIR LOGFIFO" python useradd_sysroot_sstate () { scriptfile = None @@ -184,7 +182,6 @@ def update_useradd_after_parse(d): bb.fatal("%s inherits useradd but doesn't set USERADD_PACKAGES" % d.getVar('FILE', False)) for pkg in useradd_packages.split(): - d.appendVarFlag("do_populate_sysroot", "vardeps", "USERADD_PARAM_%s GROUPADD_PARAM_%s GROUPMEMS_PARAM_%s" % (pkg, pkg, pkg)) if not d.getVar('USERADD_PARAM_%s' % pkg) and not d.getVar('GROUPADD_PARAM_%s' % pkg) and not d.getVar('GROUPMEMS_PARAM_%s' % pkg): bb.fatal("%s inherits useradd but doesn't set USERADD_PARAM, GROUPADD_PARAM or GROUPMEMS_PARAM for package %s" % (d.getVar('FILE', False), pkg)) diff --git a/poky/meta/classes/waf.bbclass b/poky/meta/classes/waf.bbclass index 900244004e..8e6d754c29 100644 --- a/poky/meta/classes/waf.bbclass +++ b/poky/meta/classes/waf.bbclass @@ -5,32 +5,6 @@ B = "${WORKDIR}/build" EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}" -def waflock_hash(d): - # Calculates the hash used for the waf lock file. This should include - # all of the user controllable inputs passed to waf configure. Note - # that the full paths for ${B} and ${S} are used; this is OK and desired - # because a change to either of these should create a unique lock file - # to prevent collisions. - import hashlib - h = hashlib.sha512() - def update(name): - val = d.getVar(name) - if val is not None: - h.update(val.encode('utf-8')) - update('S') - update('B') - update('prefix') - update('EXTRA_OECONF') - return h.hexdigest() - -# Use WAFLOCK to specify a separate lock file. The build is already -# sufficiently isolated by setting the output directory, this ensures that -# bitbake won't step on toes of any other configured context in the source -# directory (e.g. if the source is coming from externalsrc and was previously -# configured elsewhere). -export WAFLOCK = ".lock-waf_oe_${@waflock_hash(d)}_build" -BB_HASHBASE_WHITELIST += "WAFLOCK" - python waf_preconfigure() { import subprocess from distutils.version import StrictVersion |
