diff options
Diffstat (limited to 'poky/meta')
65 files changed, 1197 insertions, 220 deletions
diff --git a/poky/meta/classes/autotools.bbclass b/poky/meta/classes/autotools.bbclass index 1f3c771c69..70804b82b4 100644 --- a/poky/meta/classes/autotools.bbclass +++ b/poky/meta/classes/autotools.bbclass @@ -90,7 +90,7 @@ oe_runconf () { cfgscript=`python3 -c "import os; print(os.path.relpath(os.path.dirname('${CONFIGURE_SCRIPT}'), '.'))"`/$cfgscript_name if [ -x "$cfgscript" ] ; then bbnote "Running $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} $@" - if ! ${CACHED_CONFIGUREVARS} CONFIG_SHELL=/bin/bash $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"; then + if ! CONFIG_SHELL=/bin/bash ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"; then bbnote "The following config.log files may provide further information." bbnote `find ${B} -ignore_readdir_race -type f -name config.log` bbfatal_log "configure failed" diff --git a/poky/meta/classes/buildhistory.bbclass b/poky/meta/classes/buildhistory.bbclass index 0f26c3c07b..7d5e3eb8fd 100644 --- a/poky/meta/classes/buildhistory.bbclass +++ b/poky/meta/classes/buildhistory.bbclass @@ -116,6 +116,7 @@ python buildhistory_emit_pkghistory() { self.srcrev = "" self.layer = "" self.config = "" + self.src_uri = "" class PackageInfo: @@ -258,6 +259,7 @@ python buildhistory_emit_pkghistory() { rcpinfo.packages = packages rcpinfo.layer = layer rcpinfo.config = sortlist(oe.utils.squashspaces(d.getVar('PACKAGECONFIG') or "")) + rcpinfo.src_uri = oe.utils.squashspaces(d.getVar('SRC_URI') or "") write_recipehistory(rcpinfo, d) bb.build.exec_func("read_subpackage_metadata", d) @@ -368,6 +370,7 @@ def write_recipehistory(rcpinfo, d): f.write(u"PACKAGES = %s\n" % rcpinfo.packages) f.write(u"LAYER = %s\n" % rcpinfo.layer) f.write(u"CONFIG = %s\n" % rcpinfo.config) + f.write(u"SRC_URI = %s\n" % rcpinfo.src_uri) write_latest_srcrev(d, pkghistdir) diff --git a/poky/meta/classes/externalsrc.bbclass b/poky/meta/classes/externalsrc.bbclass index d200129987..dd09395788 100644 --- a/poky/meta/classes/externalsrc.bbclass +++ b/poky/meta/classes/externalsrc.bbclass @@ -85,7 +85,7 @@ python () { if task.endswith("_setscene"): # sstate is never going to work for external source trees, disable it bb.build.deltask(task, d) - else: + elif os.path.realpath(d.getVar('S')) == os.path.realpath(d.getVar('B')): # Since configure will likely touch ${S}, ensure only we lock so one task has access at a time d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock") diff --git a/poky/meta/classes/populate_sdk_base.bbclass b/poky/meta/classes/populate_sdk_base.bbclass index 61b31d5e5e..49b1833265 100644 --- a/poky/meta/classes/populate_sdk_base.bbclass +++ b/poky/meta/classes/populate_sdk_base.bbclass @@ -1,4 +1,4 @@ -inherit meta image-postinst-intercepts +inherit meta image-postinst-intercepts image-artifact-names # Wildcards specifying complementary packages to install for every package that has been explicitly # installed into the rootfs diff --git a/poky/meta/classes/siteinfo.bbclass b/poky/meta/classes/siteinfo.bbclass index 1a048c053f..0bd1f36805 100644 --- a/poky/meta/classes/siteinfo.bbclass +++ b/poky/meta/classes/siteinfo.bbclass @@ -45,6 +45,7 @@ def siteinfo_data_for_machine(arch, os, d): "mipsisa32r6": "endian-big bit-32 mips-common", "mipsisa32r6el": "endian-little bit-32 mips-common", "powerpc": "endian-big bit-32 powerpc-common", + "powerpcle": "endian-little bit-32 powerpc-common", "nios2": "endian-little bit-32 nios2-common", "powerpc64": "endian-big bit-64 powerpc-common", "powerpc64le": "endian-little bit-64 powerpc-common", @@ -54,7 +55,9 @@ def siteinfo_data_for_machine(arch, os, d): "riscv32": "endian-little bit-32 riscv-common", "riscv64": "endian-little bit-64 riscv-common", "sh3": "endian-little bit-32 sh-common", + "sh3eb": "endian-big bit-32 sh-common", "sh4": "endian-little bit-32 sh-common", + "sh4eb": "endian-big bit-32 sh-common", "sparc": "endian-big bit-32", "viac3": "endian-little bit-32 ix86-common", "x86_64": "endian-little", # bitinfo specified in targetinfo @@ -100,6 +103,8 @@ def siteinfo_data_for_machine(arch, os, d): "mipsisa64r6el-linux-gnun32": "mipsisa32r6el-linux bit-32", "powerpc-linux": "powerpc32-linux", "powerpc-linux-musl": "powerpc-linux powerpc32-linux", + "powerpcle-linux": "powerpc32-linux", + "powerpcle-linux-musl": "powerpc-linux powerpc32-linux", "powerpc-linux-gnuspe": "powerpc-linux powerpc32-linux", "powerpc-linux-muslspe": "powerpc-linux powerpc32-linux", "powerpc64-linux-gnuspe": "powerpc-linux powerpc64-linux", diff --git a/poky/meta/classes/waf.bbclass b/poky/meta/classes/waf.bbclass index 309f625a40..188119f356 100644 --- a/poky/meta/classes/waf.bbclass +++ b/poky/meta/classes/waf.bbclass @@ -1,7 +1,12 @@ # avoids build breaks when using no-static-libs.inc DISABLE_STATIC = "" +# What Python interpretter to use. Defaults to Python 3 but can be +# overridden if required. +WAF_PYTHON ?= "python3" + B = "${WORKDIR}/build" +do_configure[cleandirs] += "${B}" EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}" @@ -40,9 +45,10 @@ python waf_preconfigure() { import subprocess from distutils.version import StrictVersion subsrcdir = d.getVar('S') + python = d.getVar('WAF_PYTHON') wafbin = os.path.join(subsrcdir, 'waf') try: - result = subprocess.check_output([wafbin, '--version'], cwd=subsrcdir, stderr=subprocess.STDOUT) + result = subprocess.check_output([python, wafbin, '--version'], cwd=subsrcdir, stderr=subprocess.STDOUT) version = result.decode('utf-8').split()[1] if StrictVersion(version) >= StrictVersion("1.8.7"): d.setVar("WAF_EXTRA_CONF", "--bindir=${bindir} --libdir=${libdir}") @@ -55,16 +61,16 @@ python waf_preconfigure() { do_configure[prefuncs] += "waf_preconfigure" waf_do_configure() { - (cd ${S} && ./waf configure -o ${B} --prefix=${prefix} ${WAF_EXTRA_CONF} ${EXTRA_OECONF}) + (cd ${S} && ${WAF_PYTHON} ./waf configure -o ${B} --prefix=${prefix} ${WAF_EXTRA_CONF} ${EXTRA_OECONF}) } do_compile[progress] = "outof:^\[\s*(\d+)/\s*(\d+)\]\s+" waf_do_compile() { - (cd ${S} && ./waf build ${@oe.utils.parallel_make_argument(d, '-j%d', limit=64)} ${EXTRA_OEWAF_BUILD}) + (cd ${S} && ${WAF_PYTHON} ./waf build ${@oe.utils.parallel_make_argument(d, '-j%d', limit=64)} ${EXTRA_OEWAF_BUILD}) } waf_do_install() { - (cd ${S} && ./waf install --destdir=${D} ${EXTRA_OEWAF_INSTALL}) + (cd ${S} && ${WAF_PYTHON} ./waf install --destdir=${D} ${EXTRA_OEWAF_INSTALL}) } EXPORT_FUNCTIONS do_configure do_compile do_install diff --git a/poky/meta/conf/layer.conf b/poky/meta/conf/layer.conf index 38df0f3aff..2d9cd05695 100644 --- a/poky/meta/conf/layer.conf +++ b/poky/meta/conf/layer.conf @@ -7,7 +7,7 @@ BBFILE_COLLECTIONS += "core" BBFILE_PATTERN_core = "^${LAYERDIR}/" BBFILE_PRIORITY_core = "5" -LAYERSERIES_CORENAMES = "dunfell gatesgarth" +LAYERSERIES_CORENAMES = "gatesgarth" # This should only be incremented on significant changes that will # cause compatibility issues with other layers @@ -102,4 +102,6 @@ SSTATE_EXCLUDEDEPS_SYSROOT += "\ SSTATE_EXCLUDEDEPS_SYSROOT += ".*->autoconf-archive-native" # We need to keep bitbake tools in PATH -PATH := "${@os.path.dirname(bb.utils.which(d.getVar('PATH'),'bitbake'))}:${HOSTTOOLS_DIR}" +# Avoid empty path entries +BITBAKEPATH := "${@os.path.dirname(bb.utils.which(d.getVar('PATH'),'bitbake'))}" +PATH := "${@'${BITBAKEPATH}:' if '${BITBAKEPATH}' is not '' else ''}${HOSTTOOLS_DIR}" diff --git a/poky/meta/conf/machine/include/arm/arch-arm64.inc b/poky/meta/conf/machine/include/arm/arch-arm64.inc index 142342298f..eab3323ec6 100644 --- a/poky/meta/conf/machine/include/arm/arch-arm64.inc +++ b/poky/meta/conf/machine/include/arm/arch-arm64.inc @@ -10,7 +10,7 @@ MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'aarch64:' # Little Endian base configs AVAILTUNES += "aarch64 aarch64_be" ARMPKGARCH_tune-aarch64 ?= "aarch64" -ARMPKGARCH_tune-aarch64_be ?= "aarch64_be" +ARMPKGARCH_tune-aarch64_be ?= "aarch64" TUNE_FEATURES_tune-aarch64 = "aarch64" TUNE_FEATURES_tune-aarch64_be = "${TUNE_FEATURES_tune-aarch64} bigendian" TUNE_PKGARCH_64_tune-aarch64 = "aarch64" diff --git a/poky/meta/conf/machine/include/arm/arch-armv7a.inc b/poky/meta/conf/machine/include/arm/arch-armv7a.inc index d795b867fd..ce87af5306 100644 --- a/poky/meta/conf/machine/include/arm/arch-armv7a.inc +++ b/poky/meta/conf/machine/include/arm/arch-armv7a.inc @@ -120,7 +120,7 @@ PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7 PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv3d16} armv7ab-vfpv3" PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv3d16} armv7ab-vfpv3 armv7at2b-vfpv3" PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7ab-vfpv4d16" -PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfp43d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-vfpv4d16 armv7at2b-vfpv4d16" +PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-vfpv4d16 armv7at2b-vfpv4d16" PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7ab-neon" PACKAGE_EXTRA_ARCHS_tune-armv7atb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-neon armv7at2b-neon" PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon} armv7ab-neon-vfpv4" diff --git a/poky/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc b/poky/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc index d368aa104d..8d5a0ef5e2 100644 --- a/poky/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc +++ b/poky/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc @@ -11,6 +11,6 @@ require conf/machine/include/arm/arch-armv8-2a.inc # Little Endian base configs AVAILTUNES += "cortexa76ae" ARMPKGARCH_tune-cortexa76ae = "cortexa76ae" -TUNE_FEATURES_tune-cortexa65ae = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa76ae" +TUNE_FEATURES_tune-cortexa76ae = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa76ae" PACKAGE_EXTRA_ARCHS_tune-cortexa76ae = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa76ae" BASE_LIB_tune-cortexa76ae = "lib64" diff --git a/poky/meta/conf/machine/include/mips/arch-mips.inc b/poky/meta/conf/machine/include/mips/arch-mips.inc index b45989a775..cb1a4c443c 100644 --- a/poky/meta/conf/machine/include/mips/arch-mips.inc +++ b/poky/meta/conf/machine/include/mips/arch-mips.inc @@ -135,7 +135,7 @@ PACKAGE_EXTRA_ARCHS_tune-mips64-o32 = "mips mips64-o32" TUNE_FEATURES_tune-mips64el-o32 = "o32 fpu-hard" BASE_LIB_tune-mips64el-o32 = "lib" MIPSPKGSFX_VARIANT_tune-mips64el-o32 = "${TUNE_ARCH}" -PACKAGE_EXTRA_ARCHS_tune-mips64el-o32 = "mipsel mips64el-o32 mips64el-o32" +PACKAGE_EXTRA_ARCHS_tune-mips64el-o32 = "mipsel mips64el-o32" # MIPS 64 o32 and Soft Float AVAILTUNES += "mips64-nf-o32 mips64el-nf-o32" diff --git a/poky/meta/conf/machine/include/riscv/tune-riscv.inc b/poky/meta/conf/machine/include/riscv/tune-riscv.inc index 741eeb34db..028548bf56 100644 --- a/poky/meta/conf/machine/include/riscv/tune-riscv.inc +++ b/poky/meta/conf/machine/include/riscv/tune-riscv.inc @@ -24,10 +24,10 @@ PACKAGE_EXTRA_ARCHS_tune-riscv32 = "riscv32" # No float TUNE_FEATURES_tune-riscv64nf = "${TUNE_FEATURES_tune-riscv64} riscv64nf" TUNE_ARCH_tune-riscv64nf = "riscv64" -TUNE_PKGARCH_tune-riscv64nf = "riscv64" +TUNE_PKGARCH_tune-riscv64nf = "riscv64nf" PACKAGE_EXTRA_ARCHS_tune-riscv64nf = "riscv64nf" TUNE_FEATURES_tune-riscv32nf = "${TUNE_FEATURES_tune-riscv32} riscv32nf" TUNE_ARCH_tune-riscv32nf = "riscv32" -TUNE_PKGARCH_tune-riscv32nf = "riscv32" +TUNE_PKGARCH_tune-riscv32nf = "riscv32nf" PACKAGE_EXTRA_ARCHS_tune-riscv32nf = "riscv32nf" diff --git a/poky/meta/conf/machine/include/tune-ep9312.inc b/poky/meta/conf/machine/include/tune-ep9312.inc index 11fd266ba0..5e1a0e5791 100644 --- a/poky/meta/conf/machine/include/tune-ep9312.inc +++ b/poky/meta/conf/machine/include/tune-ep9312.inc @@ -8,6 +8,5 @@ MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'ep9312', 'armv4:', ' AVAILTUNES += "ep9312" ARMPKGARCH_tune-ep9312 = "ep9312" -# this tune does not include TUNE_FEATURES_tune-armv4t, so there is no armv4 TUNE_FEATURES => no 't' in ARMPKGSFX_THUMB TUNE_FEATURES_tune-ep9312 = "thumb ep9312" -PACKAGE_EXTRA_ARCHS_tune-ep9312 = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} ep9312" +PACKAGE_EXTRA_ARCHS_tune-ep9312 = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} ep9312t" diff --git a/poky/meta/conf/machine/include/tune-mips64r6.inc b/poky/meta/conf/machine/include/tune-mips64r6.inc index 4fe3eedf1b..e53239a38b 100644 --- a/poky/meta/conf/machine/include/tune-mips64r6.inc +++ b/poky/meta/conf/machine/include/tune-mips64r6.inc @@ -24,7 +24,7 @@ AVAILTUNES += "mipsisa64r6-nf mipsisa64r6el-nf" TUNE_FEATURES_tune-mipsisa64r6-nf = "bigendian r6 n64 mipsisa64r6" MIPSPKGSFX_VARIANT_tune-mipsisa64r6-nf = "${TUNE_ARCH}" BASE_LIB_tune-mipsisa64r6-nf = "lib64" -PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6-nf = "mipsisa64r6" +PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6-nf = "mipsisa64r6-nf" TUNE_FEATURES_tune-mipsisa64r6el-nf = "r6 n64 mipsisa64r6" MIPSPKGSFX_VARIANT_tune-mipsisa64r6el-nf = "${TUNE_ARCH}" diff --git a/poky/meta/conf/machine/include/tune-supersparc.inc b/poky/meta/conf/machine/include/tune-supersparc.inc deleted file mode 100644 index 0faa361f18..0000000000 --- a/poky/meta/conf/machine/include/tune-supersparc.inc +++ /dev/null @@ -1,4 +0,0 @@ -TUNE_ARCH = "sparc" - -TUNE_CCARGS = "-mcpu=supersparc" -TUNE_PKGARCH = "supersparc" diff --git a/poky/meta/conf/machine/include/tune-thunderx.inc b/poky/meta/conf/machine/include/tune-thunderx.inc index aa4d0501d4..d1aaf4891e 100644 --- a/poky/meta/conf/machine/include/tune-thunderx.inc +++ b/poky/meta/conf/machine/include/tune-thunderx.inc @@ -8,7 +8,7 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thunderx', ' -mcpu=thunde require conf/machine/include/arm/arch-armv8a.inc ARMPKGARCH_tune-thunderx ?= "thunderx" -ARMPKGARCH_tune-thunderx_be ?= "thunderx_be" +ARMPKGARCH_tune-thunderx_be ?= "thunderx" TUNE_FEATURES_tune-thunderx = "${TUNE_FEATURES_tune-aarch64} thunderx" TUNE_FEATURES_tune-thunderx_be = "${TUNE_FEATURES_tune-thunderx} bigendian" diff --git a/poky/meta/conf/machine/qemumips.conf b/poky/meta/conf/machine/qemumips.conf index b8c80f02ef..1373e4cba0 100644 --- a/poky/meta/conf/machine/qemumips.conf +++ b/poky/meta/conf/machine/qemumips.conf @@ -15,4 +15,4 @@ SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1" QB_SYSTEM_NAME = "qemu-system-mips" -QB_CPU = "-cpu 34Kf-64tlb" +QB_CPU = "-cpu 34Kf" diff --git a/poky/meta/files/toolchain-shar-extract.sh b/poky/meta/files/toolchain-shar-extract.sh index 04527f891f..bea6d4189a 100644 --- a/poky/meta/files/toolchain-shar-extract.sh +++ b/poky/meta/files/toolchain-shar-extract.sh @@ -26,7 +26,7 @@ tweakpath /sbin INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/") SDK_ARCH=$(echo @SDK_ARCH@ | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/") -INST_GCC_VER=$(gcc --version | sed -ne 's/.* \([0-9]\+\.[0-9]\+\)\.[0-9]\+.*/\1/p') +INST_GCC_VER=$(gcc --version 2>/dev/null | sed -ne 's/.* \([0-9]\+\.[0-9]\+\)\.[0-9]\+.*/\1/p') SDK_GCC_VER='@SDK_GCC_VER@' verlte () { diff --git a/poky/meta/lib/oe/rootfs.py b/poky/meta/lib/oe/rootfs.py index 3813f68e8b..4e09eae6b9 100644 --- a/poky/meta/lib/oe/rootfs.py +++ b/poky/meta/lib/oe/rootfs.py @@ -55,6 +55,8 @@ class Rootfs(object, metaclass=ABCMeta): excludes = [ 'log_check', r'^\+' ] if hasattr(self, 'log_check_expected_regexes'): excludes.extend(self.log_check_expected_regexes) + # Insert custom log_check excludes + excludes += [x for x in (self.d.getVar("IMAGE_LOG_CHECK_EXCLUDES") or "").split(" ") if x] excludes = [re.compile(x) for x in excludes] r = re.compile(match) log_path = self.d.expand("${T}/log.do_rootfs") diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py index 0185e670ad..d3d2e04c20 100644 --- a/poky/meta/lib/oeqa/selftest/cases/devtool.py +++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py @@ -107,13 +107,6 @@ class DevtoolBase(OESelftestTestCase): 'under the build directory') self.append_config(self.sstate_conf) - def tearDown(self): - # devtools tests are heavy on IO and if bitbake can't write out its caches, we see timeouts. - # call sync around the tests to ensure the IO queue doesn't get too large, taking any IO - # hit here rather than in bitbake shutdown. - super().tearDown() - os.system("sync") - def _check_src_repo(self, repo_dir): """Check srctree git repository""" self.assertTrue(os.path.isdir(os.path.join(repo_dir, '.git')), diff --git a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py index f7a2533746..415e0315fc 100644 --- a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py +++ b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py @@ -5,6 +5,7 @@ from oeqa.selftest.case import OESelftestTestCase from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu from oeqa.utils.sshcontrol import SSHControl +import glob import os import json @@ -347,7 +348,7 @@ UBOOT_ENTRYPOINT = "0x80080000" Author: Humberto Ibarra <humberto.ibarra.lopez@intel.com> Yeoh Ee Peng <ee.peng.yeoh@intel.com> """ - import glob + image_name = 'core-image-minimal' features = 'IMAGE_GEN_DEBUGFS = "1"\n' features += 'IMAGE_FSTYPES_DEBUGFS = "tar.bz2"\n' @@ -368,3 +369,12 @@ UBOOT_ENTRYPOINT = "0x80080000" for t in dbg_symbols_targets: result = runCmd('objdump --syms %s | grep debug' % t) self.assertTrue("debug" in result.output, msg='Failed to find debug symbol: %s' % result.output) + + def test_empty_image(self): + """Test creation of image with no packages""" + bitbake('test-empty-image') + res_dir = get_bb_var('DEPLOY_DIR_IMAGE') + images = os.path.join(res_dir, "test-empty-image-*.manifest") + result = glob.glob(images) + with open(result[1],"r") as f: + self.assertEqual(len(f.read().strip()),0) diff --git a/poky/meta/lib/oeqa/selftest/cases/runcmd.py b/poky/meta/lib/oeqa/selftest/cases/runcmd.py index a5ef1ea95f..fa6113d7fa 100644 --- a/poky/meta/lib/oeqa/selftest/cases/runcmd.py +++ b/poky/meta/lib/oeqa/selftest/cases/runcmd.py @@ -64,12 +64,12 @@ class RunCmdTests(OESelftestTestCase): runCmd, "echo foobar >&2; false", shell=True, assert_error=False) def test_output(self): - result = runCmd("echo stdout; echo stderr >&2", shell=True) + result = runCmd("echo stdout; echo stderr >&2", shell=True, sync=False) self.assertEqual("stdout\nstderr", result.output) self.assertEqual("", result.error) def test_output_split(self): - result = runCmd("echo stdout; echo stderr >&2", shell=True, stderr=subprocess.PIPE) + result = runCmd("echo stdout; echo stderr >&2", shell=True, stderr=subprocess.PIPE, sync=False) self.assertEqual("stdout", result.output) self.assertEqual("stderr", result.error) @@ -77,7 +77,7 @@ class RunCmdTests(OESelftestTestCase): numthreads = threading.active_count() start = time.time() # Killing a hanging process only works when not using a shell?! - result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True) + result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True, sync=False) self.assertEqual(result.status, -signal.SIGTERM) end = time.time() self.assertLess(end - start, self.TIMEOUT + self.DELTA) @@ -87,7 +87,7 @@ class RunCmdTests(OESelftestTestCase): numthreads = threading.active_count() start = time.time() # Killing a hanging process only works when not using a shell?! - result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True, stderr=subprocess.PIPE) + result = runCmd(['sleep', '60'], timeout=self.TIMEOUT, ignore_status=True, stderr=subprocess.PIPE, sync=False) self.assertEqual(result.status, -signal.SIGTERM) end = time.time() self.assertLess(end - start, self.TIMEOUT + self.DELTA) @@ -95,7 +95,7 @@ class RunCmdTests(OESelftestTestCase): def test_stdin(self): numthreads = threading.active_count() - result = runCmd("cat", data=b"hello world", timeout=self.TIMEOUT) + result = runCmd("cat", data=b"hello world", timeout=self.TIMEOUT, sync=False) self.assertEqual("hello world", result.output) self.assertEqual(numthreads, threading.active_count(), msg="Thread counts were not equal before (%s) and after (%s), active threads: %s" % (numthreads, threading.active_count(), threading.enumerate())) self.assertEqual(numthreads, 1) @@ -103,7 +103,7 @@ class RunCmdTests(OESelftestTestCase): def test_stdin_timeout(self): numthreads = threading.active_count() start = time.time() - result = runCmd(['sleep', '60'], data=b"hello world", timeout=self.TIMEOUT, ignore_status=True) + result = runCmd(['sleep', '60'], data=b"hello world", timeout=self.TIMEOUT, ignore_status=True, sync=False) self.assertEqual(result.status, -signal.SIGTERM) end = time.time() self.assertLess(end - start, self.TIMEOUT + self.DELTA) @@ -111,12 +111,12 @@ class RunCmdTests(OESelftestTestCase): def test_log(self): log = MemLogger() - result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log) + result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log, sync=False) self.assertEqual(["Running: echo stdout; echo stderr >&2", "stdout", "stderr"], log.info_msgs) self.assertEqual([], log.error_msgs) def test_log_split(self): log = MemLogger() - result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log, stderr=subprocess.PIPE) + result = runCmd("echo stdout; echo stderr >&2", shell=True, output_log=log, stderr=subprocess.PIPE, sync=False) self.assertEqual(["Running: echo stdout; echo stderr >&2", "stdout"], log.info_msgs) self.assertEqual(["stderr"], log.error_msgs) diff --git a/poky/meta/lib/oeqa/utils/commands.py b/poky/meta/lib/oeqa/utils/commands.py index f7f8c16bf0..8059cbce3e 100644 --- a/poky/meta/lib/oeqa/utils/commands.py +++ b/poky/meta/lib/oeqa/utils/commands.py @@ -167,7 +167,7 @@ class Result(object): pass -def runCmd(command, ignore_status=False, timeout=None, assert_error=True, +def runCmd(command, ignore_status=False, timeout=None, assert_error=True, sync=True, native_sysroot=None, limit_exc_output=0, output_log=None, **options): result = Result() @@ -184,6 +184,12 @@ def runCmd(command, ignore_status=False, timeout=None, assert_error=True, cmd = Command(command, timeout=timeout, output_log=output_log, **options) cmd.run() + # tests can be heavy on IO and if bitbake can't write out its caches, we see timeouts. + # call sync around the tests to ensure the IO queue doesn't get too large, taking any IO + # hit here rather than in bitbake shutdown. + if sync: + os.system("sync") + result.command = command result.status = cmd.status result.output = cmd.output diff --git a/poky/meta/recipes-bsp/grub/files/CVE-2020-10713.patch b/poky/meta/recipes-bsp/grub/files/CVE-2020-10713.patch new file mode 100644 index 0000000000..c507ed3ea8 --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/CVE-2020-10713.patch @@ -0,0 +1,73 @@ +From a4d3fbdff1e3ca8f87642af2ac8752c30c617a3e Mon Sep 17 00:00:00 2001 +From: Peter Jones <pjones@redhat.com> +Date: Wed, 15 Apr 2020 15:45:02 -0400 +Subject: yylex: Make lexer fatal errors actually be fatal + +When presented with a command that can't be tokenized to anything +smaller than YYLMAX characters, the parser calls YY_FATAL_ERROR(errmsg), +expecting that will stop further processing, as such: + + #define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + if ( yyleng >= YYLMAX ) \ + YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ + yy_flex_strncpy( yytext, yyg->yytext_ptr, yyleng + 1 , yyscanner); \ + yyg->yy_c_buf_p = yy_cp; + +The code flex generates expects that YY_FATAL_ERROR() will either return +for it or do some form of longjmp(), or handle the error in some way at +least, and so the strncpy() call isn't in an "else" clause, and thus if +YY_FATAL_ERROR() is *not* actually fatal, it does the call with the +questionable limit, and predictable results ensue. + +Unfortunately, our implementation of YY_FATAL_ERROR() is: + + #define YY_FATAL_ERROR(msg) \ + do { \ + grub_printf (_("fatal error: %s\n"), _(msg)); \ + } while (0) + +The same pattern exists in yyless(), and similar problems exist in users +of YY_INPUT(), several places in the main parsing loop, +yy_get_next_buffer(), yy_load_buffer_state(), yyensure_buffer_stack, +yy_scan_buffer(), etc. + +All of these callers expect YY_FATAL_ERROR() to actually be fatal, and +the things they do if it returns after calling it are wildly unsafe. + +Fixes: CVE-2020-10713 + +Signed-off-by: Peter Jones <pjones@redhat.com> +Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> + +Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=a4d3fbdff1e3ca8f87642af2ac8752c30c617a3e] +CVE: CVE-2020-10713 +Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com> +--- + grub-core/script/yylex.l | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/script/yylex.l b/grub-core/script/yylex.l +index 7b44c37b7..b7203c823 100644 +--- a/grub-core/script/yylex.l ++++ b/grub-core/script/yylex.l +@@ -37,11 +37,11 @@ + + /* + * As we don't have access to yyscanner, we cannot do much except to +- * print the fatal error. ++ * print the fatal error and exit. + */ + #define YY_FATAL_ERROR(msg) \ + do { \ +- grub_printf (_("fatal error: %s\n"), _(msg)); \ ++ grub_fatal (_("fatal error: %s\n"), _(msg));\ + } while (0) + + #define COPY(str, hint) \ +-- +cgit v1.2.1 + diff --git a/poky/meta/recipes-bsp/grub/grub2.inc b/poky/meta/recipes-bsp/grub/grub2.inc index 628ca64926..345554e7af 100644 --- a/poky/meta/recipes-bsp/grub/grub2.inc +++ b/poky/meta/recipes-bsp/grub/grub2.inc @@ -18,6 +18,7 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \ file://autogen.sh-exclude-pc.patch \ file://grub-module-explicitly-keeps-symbole-.module_license.patch \ file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \ + file://CVE-2020-10713.patch \ " SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934" SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea" diff --git a/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.2.0.bb b/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.2.0.bb index 4344841b54..13467189b4 100644 --- a/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.2.0.bb +++ b/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.2.0.bb @@ -27,10 +27,18 @@ PACKAGECONFIG ?= "udev ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev" PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6" +# ntp conflicts with chrony +PACKAGECONFIG[ntp] = "--with-hook=ntp, , ,ntp" +PACKAGECONFIG[chrony] = "--with-hook=ntp, , ,chrony" +PACKAGECONFIG[ypbind] = "--with-eghook=yp, , ,ypbind-mt" EXTRA_OECONF = "--enable-ipv4 \ --dbdir=${localstatedir}/lib/${BPN} \ --runstatedir=/run \ + --enable-privsep \ + --privsepuser=dhcpcd \ + --with-hooks \ + --with-eghooks \ " USERADD_PACKAGES = "${PN}" diff --git a/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch b/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch new file mode 100644 index 0000000000..eeeb89942b --- /dev/null +++ b/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch @@ -0,0 +1,22 @@ +Busybox does not support ps -p so use pgrep + +Upstream-Status: Inappropriate [embedded specific] +Based on changes from Diego Sueiro <Diego.Sueiro@arm.com> + +Signed-off-by: Armin kuster <akuster808@gmail.com> + +Index: kea-1.7.10/src/bin/keactrl/keactrl.in +=================================================================== +--- kea-1.7.10.orig/src/bin/keactrl/keactrl.in ++++ kea-1.7.10/src/bin/keactrl/keactrl.in +@@ -137,8 +137,8 @@ check_running() { + # Get the PID from the PID file (if it exists) + get_pid_from_file "${proc_name}" + if [ ${_pid} -gt 0 ]; then +- # Use ps to check if PID is alive +- ps -p ${_pid} 1>/dev/null ++ # Use pgrep and grep to check if PID is alive ++ pgrep -v 1 | grep ${_pid} 1>/dev/null + retcode=$? + if [ $retcode -eq 0 ]; then + # No error, so PID IS ALIVE diff --git a/poky/meta/recipes-connectivity/kea/files/kea-dhcp-ddns-server b/poky/meta/recipes-connectivity/kea/files/kea-dhcp-ddns-server new file mode 100644 index 0000000000..50fe40d439 --- /dev/null +++ b/poky/meta/recipes-connectivity/kea/files/kea-dhcp-ddns-server @@ -0,0 +1,46 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: kea-dhcp-ddns-server +# Required-Start: $local_fs $network $remote_fs $syslog +# Required-Stop: $local_fs $network $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: ISC KEA DHCP IPv6 Server +### END INIT INFO + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="kea-dhcp-ddns-server" +NAME=kea-dhcp-ddns +DAEMON=/usr/sbin/keactrl +DAEMON_ARGS=" -s dhcp_ddns" + +set -e + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Source function library. +. /etc/init.d/functions + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S -b -n $NAME -x $DAEMON -- start $DAEMON_ARGS + echo "done." + ;; + stop) + echo -n "Stopping $DESC: " + kpid=`pidof $NAME` + kill $kpid + echo "done." + ;; + restart|force-reload) + # + $0 stop + $0 start + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac diff --git a/poky/meta/recipes-connectivity/kea/files/kea-dhcp4-server b/poky/meta/recipes-connectivity/kea/files/kea-dhcp4-server new file mode 100644 index 0000000000..e83e51025d --- /dev/null +++ b/poky/meta/recipes-connectivity/kea/files/kea-dhcp4-server @@ -0,0 +1,46 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: kea-dhcp4-server +# Required-Start: $local_fs $network $remote_fs $syslog +# Required-Stop: $local_fs $network $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: ISC KEA DHCP IPv6 Server +### END INIT INFO + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="kea-dhcp4-server" +NAME=kea-dhcp4 +DAEMON=/usr/sbin/keactrl +DAEMON_ARGS=" -s dhcp4" + +set -e + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Source function library. +. /etc/init.d/functions + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S -b -n $NAME -x $DAEMON -- start $DAEMON_ARGS + echo "done." + ;; + stop) + echo -n "Stopping $DESC: " + kpid=`pidof $NAME` + kill $kpid + echo "done." + ;; + restart|force-reload) + # + $0 stop + $0 start + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac diff --git a/poky/meta/recipes-connectivity/kea/files/kea-dhcp6-server b/poky/meta/recipes-connectivity/kea/files/kea-dhcp6-server new file mode 100644 index 0000000000..10f2d22641 --- /dev/null +++ b/poky/meta/recipes-connectivity/kea/files/kea-dhcp6-server @@ -0,0 +1,47 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: kea-dhcp6-server +# Required-Start: $local_fs $network $remote_fs $syslog +# Required-Stop: $local_fs $network $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: ISC KEA DHCP IPv6 Server +### END INIT INFO + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="kea-dhcp6-server" +NAME=kea-dhcp6 +DAEMON=/usr/sbin/keactrl +DAEMON_ARGS=" -s dhcp6" + +set -e + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Source function library. +. /etc/init.d/functions + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S -b -n $NAME -x $DAEMON -- start $DAEMON_ARGS + echo "done." + ;; + stop) + echo -n "Stopping $DESC: " + kpid=`pidof $NAME` + kill $kpid + echo "done." + ;; + restart|force-reload) + # + $0 stop + $0 start + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac diff --git a/poky/meta/recipes-connectivity/kea/kea_1.7.10.bb b/poky/meta/recipes-connectivity/kea/kea_1.7.10.bb index 2ea4b12758..c9a5819e47 100644 --- a/poky/meta/recipes-connectivity/kea/kea_1.7.10.bb +++ b/poky/meta/recipes-connectivity/kea/kea_1.7.10.bb @@ -13,11 +13,18 @@ SRC_URI = "\ file://kea-dhcp4.service \ file://kea-dhcp6.service \ file://kea-dhcp-ddns.service \ + file://kea-dhcp4-server \ + file://kea-dhcp6-server \ + file://kea-dhcp-ddns-server \ file://fix-multilib-conflict.patch \ + file://fix_pid_keactrl.patch \ " SRC_URI[sha256sum] = "4e121f0e58b175a827581c69cb1d60778647049fa47f142940dddc9ce58f3c82" -inherit autotools systemd +inherit autotools systemd update-rc.d + +INITSCRIPT_NAME = "kea-dhcp4-server" +INITSCRIPT_PARAMS = "defaults 30" SYSTEMD_SERVICE_${PN} = "kea-dhcp4.service kea-dhcp6.service kea-dhcp-ddns.service" SYSTEMD_AUTO_ENABLE = "disable" @@ -44,8 +51,11 @@ do_configure_prepend() { } do_install_append() { + install -d ${D}${sysconfdir}/init.d install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir} + install -m 0755 ${WORKDIR}/kea-*-server ${D}${sysconfdir}/init.d sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \ -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \ ${D}${systemd_system_unitdir}/kea-dhcp*service ${D}${sbindir}/keactrl @@ -55,6 +65,8 @@ do_install_append() { rm -rf "${D}${localstatedir}" } +CONFFILES_${PN} = "${sysconfdir}/kea/keactrl.conf" + FILES_${PN}-staticdev += "${libdir}/kea/hooks/*.a ${libdir}/hooks/*.a" FILES_${PN} += "${libdir}/hooks/*.so" diff --git a/poky/meta/recipes-core/busybox/busybox/pgrep.cfg b/poky/meta/recipes-core/busybox/busybox/pgrep.cfg new file mode 100644 index 0000000000..775e487d60 --- /dev/null +++ b/poky/meta/recipes-core/busybox/busybox/pgrep.cfg @@ -0,0 +1 @@ +CONFIG_PGREP=y diff --git a/poky/meta/recipes-core/busybox/busybox/rev.cfg b/poky/meta/recipes-core/busybox/busybox/rev.cfg new file mode 100644 index 0000000000..da008c30cd --- /dev/null +++ b/poky/meta/recipes-core/busybox/busybox/rev.cfg @@ -0,0 +1 @@ +CONFIG_REV=y diff --git a/poky/meta/recipes-core/busybox/busybox_1.32.0.bb b/poky/meta/recipes-core/busybox/busybox_1.32.0.bb index aeea40fbc1..8e23b0d4a2 100644 --- a/poky/meta/recipes-core/busybox/busybox_1.32.0.bb +++ b/poky/meta/recipes-core/busybox/busybox_1.32.0.bb @@ -44,6 +44,8 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://0001-du-l-works-fix-to-use-145-instead-of-144.patch \ file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \ file://0001-hwclock-make-glibc-2.31-compatible.patch \ + file://rev.cfg \ + file://pgrep.cfg \ " SRC_URI_append_libc-musl = " file://musl.cfg " diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/tzdata-update.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/tzdata-update.patch new file mode 100644 index 0000000000..0af036f8bd --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/tzdata-update.patch @@ -0,0 +1,458 @@ +Backport a number of patches from upstream to fix reading of the new 'slim' +encoding for tzdata files. + +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +commit 18cbd5e5a4812e9bd0b06a058322d2b44ed2ad92 +Author: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu Jul 16 12:41:49 2020 -0700 + + Clarify memset in set_tz_name + + * glib/gtimezone.c (set_tz_name): Use size, not NAME_SIZE, + to clear the buffer. Suggested by Philip Withnall in: + https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1533#note_867859 + +commit 1ab3f927d6d09a8cf3349a3545f5351446f43d47 +Author: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu Jul 16 12:41:49 2020 -0700 + + gtimezone: support footers in TZif files + + Since tzcode95f (1995), TZif files have had a trailing + TZ string, used for timestamps after the last transition. + This string is specified in Internet RFC 8536 section 3.3. + init_zone_from_iana_info has ignored this string, causing it + to mishandle timestamps past the year 2038. With zic's new -b + slim flag, init_zone_from_iana_info would even mishandle current + timestamps. Fix this by parsing the trailing TZ string and adding + its transitions. + + Closes #2129 + +commit e8b763e35235a2c6b4bdd48a5099c00f72741059 +Author: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu Jul 16 12:41:49 2020 -0700 + + gtimezone: add support for RFC 8536 time zone transitions + + Time zone transition times can range from -167:59:59 through + +167:59:59, according to Internet RFC 8536 section 3.3.1; + this is an extension to POSIX. It is needed for proper + support of TZif version 3 files. + +commit 1c65dd48b8ebd31af8bc9b2263f83c0c411f7519 +Author: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu Jul 16 12:41:49 2020 -0700 + + gtimezone: allow hh to be 24, as per POSIX + + POSIX allows hh to be 24; see + https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 + +commit 368b65cb4cb17e29a4f55654149f554a14f48bc6 +Author: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu Jul 16 12:41:49 2020 -0700 + + gtimezone: support POSIX 1003.1-2001 quoted TZ abbreviations + + TZ strings like '<-03>3' were introduced in POSIX 1003.1-2001 and + are currently specified in: + https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 + +commit fd528aaab6bb077c6d217e62f2228ec9fe3ed760 +Author: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu Jul 16 12:41:49 2020 -0700 + + gtimezone: get 64-bit data from version-3 TZif files + + Version 3 was introduced in tzdb 2013e (2013). + See Internet RFC 8536 section 3.1 under "ver(sion)". + +diff --git a/glib/gtimezone.c b/glib/gtimezone.c +index 5a835dea9..f9eee1967 100644 +--- a/glib/gtimezone.c ++++ b/glib/gtimezone.c +@@ -142,9 +142,7 @@ typedef struct + gint mday; + gint wday; + gint week; +- gint hour; +- gint min; +- gint sec; ++ gint32 offset; /* hour*3600 + min*60 + sec; can be negative. */ + } TimeZoneDate; + + /* POSIX Timezone abbreviations are typically 3 or 4 characters, but +@@ -205,6 +203,10 @@ static GTimeZone *tz_local = NULL; + there's no point in getting carried + away. */ + ++#ifdef G_OS_UNIX ++static GTimeZone *parse_footertz (const gchar *, size_t); ++#endif ++ + /** + * g_time_zone_unref: + * @tz: a #GTimeZone +@@ -286,13 +288,20 @@ g_time_zone_ref (GTimeZone *tz) + /* fake zoneinfo creation (for RFC3339/ISO 8601 timezones) {{{1 */ + /* + * parses strings of the form h or hh[[:]mm[[[:]ss]]] where: +- * - h[h] is 0 to 23 ++ * - h[h] is 0 to 24 + * - mm is 00 to 59 + * - ss is 00 to 59 ++ * If RFC8536, TIME_ is a transition time sans sign, ++ * so colons are required before mm and ss, and hh can be up to 167. ++ * See Internet RFC 8536 section 3.3.1: ++ * https://tools.ietf.org/html/rfc8536#section-3.3.1 ++ * and POSIX Base Definitions 8.3 TZ rule time: ++ * https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 + */ + static gboolean + parse_time (const gchar *time_, +- gint32 *offset) ++ gint32 *offset, ++ gboolean rfc8536) + { + if (*time_ < '0' || '9' < *time_) + return FALSE; +@@ -310,7 +319,20 @@ parse_time (const gchar *time_, + *offset *= 10; + *offset += 60 * 60 * (*time_++ - '0'); + +- if (*offset > 23 * 60 * 60) ++ if (rfc8536) ++ { ++ /* Internet RFC 8536 section 3.3.1 and POSIX 8.3 TZ together say ++ that a transition time must be of the form [+-]hh[:mm[:ss]] where ++ the hours part can range from -167 to 167. */ ++ if ('0' <= *time_ && *time_ <= '9') ++ { ++ *offset *= 10; ++ *offset += 60 * 60 * (*time_++ - '0'); ++ } ++ if (*offset > 167 * 60 * 60) ++ return FALSE; ++ } ++ else if (*offset > 24 * 60 * 60) + return FALSE; + + if (*time_ == '\0') +@@ -319,6 +341,8 @@ parse_time (const gchar *time_, + + if (*time_ == ':') + time_++; ++ else if (rfc8536) ++ return FALSE; + + if (*time_ < '0' || '5' < *time_) + return FALSE; +@@ -335,6 +359,8 @@ parse_time (const gchar *time_, + + if (*time_ == ':') + time_++; ++ else if (rfc8536) ++ return FALSE; + + if (*time_ < '0' || '5' < *time_) + return FALSE; +@@ -351,28 +377,32 @@ parse_time (const gchar *time_, + + static gboolean + parse_constant_offset (const gchar *name, +- gint32 *offset) ++ gint32 *offset, ++ gboolean rfc8536) + { +- if (g_strcmp0 (name, "UTC") == 0) ++ /* Internet RFC 8536 section 3.3.1 and POSIX 8.3 TZ together say ++ that a transition time must be numeric. */ ++ if (!rfc8536 && g_strcmp0 (name, "UTC") == 0) + { + *offset = 0; + return TRUE; + } + + if (*name >= '0' && '9' >= *name) +- return parse_time (name, offset); ++ return parse_time (name, offset, rfc8536); + + switch (*name++) + { + case 'Z': + *offset = 0; +- return !*name; ++ /* Internet RFC 8536 section 3.3.1 requires a numeric zone. */ ++ return !rfc8536 && !*name; + + case '+': +- return parse_time (name, offset); ++ return parse_time (name, offset, rfc8536); + + case '-': +- if (parse_time (name, offset)) ++ if (parse_time (name, offset, rfc8536)) + { + *offset = -*offset; + return TRUE; +@@ -391,7 +421,7 @@ zone_for_constant_offset (GTimeZone *gtz, const gchar *name) + gint32 offset; + TransitionInfo info; + +- if (name == NULL || !parse_constant_offset (name, &offset)) ++ if (name == NULL || !parse_constant_offset (name, &offset, FALSE)) + return; + + info.gmt_offset = offset; +@@ -529,12 +559,17 @@ init_zone_from_iana_info (GTimeZone *gtz, + guint8 *tz_transitions, *tz_type_index, *tz_ttinfo; + guint8 *tz_abbrs; + gsize timesize = sizeof (gint32); +- const struct tzhead *header = g_bytes_get_data (zoneinfo, &size); ++ gconstpointer header_data = g_bytes_get_data (zoneinfo, &size); ++ const gchar *data = header_data; ++ const struct tzhead *header = header_data; ++ GTimeZone *footertz = NULL; ++ guint extra_time_count = 0, extra_type_count = 0; ++ gint64 last_explicit_transition_time; + + g_return_if_fail (size >= sizeof (struct tzhead) && + memcmp (header, "TZif", 4) == 0); + +- if (header->tzh_version == '2') ++ if (header->tzh_version >= '2') + { + /* Skip ahead to the newer 64-bit data if it's available. */ + header = (const struct tzhead *) +@@ -550,6 +585,30 @@ init_zone_from_iana_info (GTimeZone *gtz, + time_count = guint32_from_be(header->tzh_timecnt); + type_count = guint32_from_be(header->tzh_typecnt); + ++ if (header->tzh_version >= '2') ++ { ++ const gchar *footer = (((const gchar *) (header + 1)) ++ + guint32_from_be(header->tzh_ttisgmtcnt) ++ + guint32_from_be(header->tzh_ttisstdcnt) ++ + 12 * guint32_from_be(header->tzh_leapcnt) ++ + 9 * time_count ++ + 6 * type_count ++ + guint32_from_be(header->tzh_charcnt)); ++ const gchar *footerlast; ++ size_t footerlen; ++ g_return_if_fail (footer <= data + size - 2 && footer[0] == '\n'); ++ footerlast = memchr (footer + 1, '\n', data + size - (footer + 1)); ++ g_return_if_fail (footerlast); ++ footerlen = footerlast + 1 - footer; ++ if (footerlen != 2) ++ { ++ footertz = parse_footertz (footer, footerlen); ++ g_return_if_fail (footertz); ++ extra_type_count = footertz->t_info->len; ++ extra_time_count = footertz->transitions->len; ++ } ++ } ++ + tz_transitions = ((guint8 *) (header) + sizeof (*header)); + tz_type_index = tz_transitions + timesize * time_count; + tz_ttinfo = tz_type_index + time_count; +@@ -557,9 +616,9 @@ init_zone_from_iana_info (GTimeZone *gtz, + + gtz->name = g_steal_pointer (&identifier); + gtz->t_info = g_array_sized_new (FALSE, TRUE, sizeof (TransitionInfo), +- type_count); ++ type_count + extra_type_count); + gtz->transitions = g_array_sized_new (FALSE, TRUE, sizeof (Transition), +- time_count); ++ time_count + extra_time_count); + + for (index = 0; index < type_count; index++) + { +@@ -574,15 +633,50 @@ init_zone_from_iana_info (GTimeZone *gtz, + for (index = 0; index < time_count; index++) + { + Transition trans; +- if (header->tzh_version == '2') ++ if (header->tzh_version >= '2') + trans.time = gint64_from_be (((gint64_be*)tz_transitions)[index]); + else + trans.time = gint32_from_be (((gint32_be*)tz_transitions)[index]); ++ last_explicit_transition_time = trans.time; + trans.info_index = tz_type_index[index]; + g_assert (trans.info_index >= 0); + g_assert ((guint) trans.info_index < gtz->t_info->len); + g_array_append_val (gtz->transitions, trans); + } ++ ++ if (footertz) ++ { ++ /* Append footer time types. Don't bother to coalesce ++ duplicates with existing time types. */ ++ for (index = 0; index < extra_type_count; index++) ++ { ++ TransitionInfo t_info; ++ TransitionInfo *footer_t_info ++ = &g_array_index (footertz->t_info, TransitionInfo, index); ++ t_info.gmt_offset = footer_t_info->gmt_offset; ++ t_info.is_dst = footer_t_info->is_dst; ++ t_info.abbrev = g_steal_pointer (&footer_t_info->abbrev); ++ g_array_append_val (gtz->t_info, t_info); ++ } ++ ++ /* Append footer transitions that follow the last explicit ++ transition. */ ++ for (index = 0; index < extra_time_count; index++) ++ { ++ Transition *footer_transition ++ = &g_array_index (footertz->transitions, Transition, index); ++ if (time_count <= 0 ++ || last_explicit_transition_time < footer_transition->time) ++ { ++ Transition trans; ++ trans.time = footer_transition->time; ++ trans.info_index = type_count + footer_transition->info_index; ++ g_array_append_val (gtz->transitions, trans); ++ } ++ } ++ ++ g_time_zone_unref (footertz); ++ } + } + + #elif defined (G_OS_WIN32) +@@ -590,9 +684,8 @@ init_zone_from_iana_info (GTimeZone *gtz, + static void + copy_windows_systemtime (SYSTEMTIME *s_time, TimeZoneDate *tzdate) + { +- tzdate->sec = s_time->wSecond; +- tzdate->min = s_time->wMinute; +- tzdate->hour = s_time->wHour; ++ tzdate->offset ++ = s_time->wHour * 3600 + s_time->wMinute * 60 + s_time->wSecond; + tzdate->mon = s_time->wMonth; + tzdate->year = s_time->wYear; + tzdate->wday = s_time->wDayOfWeek ? s_time->wDayOfWeek : 7; +@@ -979,7 +1072,7 @@ boundary_for_year (TimeZoneDate *boundary, + g_date_clear (&date, 1); + g_date_set_dmy (&date, buffer.mday, buffer.mon, buffer.year); + return ((g_date_get_julian (&date) - unix_epoch_start) * seconds_per_day + +- buffer.hour * 3600 + buffer.min * 60 + buffer.sec - offset); ++ buffer.offset - offset); + } + + static void +@@ -1156,7 +1249,7 @@ init_zone_from_rules (GTimeZone *gtz, + * - N is 0 to 365 + * + * time is either h or hh[[:]mm[[[:]ss]]] +- * - h[h] is 0 to 23 ++ * - h[h] is 0 to 24 + * - mm is 00 to 59 + * - ss is 00 to 59 + */ +@@ -1289,25 +1382,10 @@ parse_tz_boundary (const gchar *identifier, + /* Time */ + + if (*pos == '/') +- { +- gint32 offset; +- +- if (!parse_time (++pos, &offset)) +- return FALSE; +- +- boundary->hour = offset / 3600; +- boundary->min = (offset / 60) % 60; +- boundary->sec = offset % 3600; +- +- return TRUE; +- } +- ++ return parse_constant_offset (pos + 1, &boundary->offset, TRUE); + else + { +- boundary->hour = 2; +- boundary->min = 0; +- boundary->sec = 0; +- ++ boundary->offset = 2 * 60 * 60; + return *pos == '\0'; + } + } +@@ -1341,7 +1419,7 @@ parse_offset (gchar **pos, gint32 *target) + ++(*pos); + + buffer = g_strndup (target_pos, *pos - target_pos); +- ret = parse_constant_offset (buffer, target); ++ ret = parse_constant_offset (buffer, target, FALSE); + g_free (buffer); + + return ret; +@@ -1366,21 +1444,32 @@ parse_identifier_boundary (gchar **pos, TimeZoneDate *target) + static gboolean + set_tz_name (gchar **pos, gchar *buffer, guint size) + { ++ gboolean quoted = **pos == '<'; + gchar *name_pos = *pos; + guint len; + +- /* Name is ASCII alpha (Is this necessarily true?) */ +- while (g_ascii_isalpha (**pos)) +- ++(*pos); ++ if (quoted) ++ { ++ name_pos++; ++ do ++ ++(*pos); ++ while (g_ascii_isalnum (**pos) || **pos == '-' || **pos == '+'); ++ if (**pos != '>') ++ return FALSE; ++ } ++ else ++ while (g_ascii_isalpha (**pos)) ++ ++(*pos); + +- /* Name should be three or more alphabetic characters */ ++ /* Name should be three or more characters */ + if (*pos - name_pos < 3) + return FALSE; + +- memset (buffer, 0, NAME_SIZE); ++ memset (buffer, 0, size); + /* name_pos isn't 0-terminated, so we have to limit the length expressly */ + len = *pos - name_pos > size - 1 ? size - 1 : *pos - name_pos; + strncpy (buffer, name_pos, len); ++ *pos += quoted; + return TRUE; + } + +@@ -1483,6 +1572,28 @@ rules_from_identifier (const gchar *identifier, + return create_ruleset_from_rule (rules, &tzr); + } + ++#ifdef G_OS_UNIX ++static GTimeZone * ++parse_footertz (const gchar *footer, size_t footerlen) ++{ ++ gchar *tzstring = g_strndup (footer + 1, footerlen - 2); ++ GTimeZone *footertz = NULL; ++ gchar *ident; ++ TimeZoneRule *rules; ++ guint rules_num = rules_from_identifier (tzstring, &ident, &rules); ++ g_free (ident); ++ g_free (tzstring); ++ if (rules_num > 1) ++ { ++ footertz = g_slice_new0 (GTimeZone); ++ init_zone_from_rules (footertz, rules, rules_num, NULL); ++ footertz->ref_count++; ++ } ++ g_free (rules); ++ return footertz; ++} ++#endif ++ + /* Construction {{{1 */ + /** + * g_time_zone_new: diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.64.5.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.64.5.bb index a1233e6926..a30c5215be 100644 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.64.5.bb +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.64.5.bb @@ -16,6 +16,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \ file://0001-Do-not-write-bindir-into-pkg-config-files.patch \ file://0001-meson-Run-atomics-test-on-clang-as-well.patch \ file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \ + file://tzdata-update.patch \ " SRC_URI_append_class-native = " file://relocate-modules.patch" diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb index 8be6171b23..8390b8389d 100644 --- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb +++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb @@ -24,7 +24,7 @@ IMAGE_FSTYPES = "wic.vmdk" inherit core-image module-base setuptools3 -SRCREV ?= "20586411649fcad6f0459ce74a581374ab564737" +SRCREV ?= "1dfd37d30953208fd998cef79483f371330a754e" SRC_URI = "git://git.yoctoproject.org/poky \ file://Yocto_Build_Appliance.vmx \ file://Yocto_Build_Appliance.vmxf \ diff --git a/poky/meta/recipes-core/ncurses/ncurses_6.2.bb b/poky/meta/recipes-core/ncurses/ncurses_6.2.bb index 5c02db8541..f3c84c2877 100644 --- a/poky/meta/recipes-core/ncurses/ncurses_6.2.bb +++ b/poky/meta/recipes-core/ncurses/ncurses_6.2.bb @@ -7,7 +7,7 @@ SRC_URI += "file://0001-tic-hang.patch \ SRCREV = "a669013cd5e9d6434e5301348ea51baf306c93c4" S = "${WORKDIR}/git" EXTRA_OECONF += "--with-abi-version=5" -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+(\+\d+)*)" +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)$" # This is needed when using patchlevel versions like 6.1+20181013 #CVE_VERSION = "${@d.getVar("PV").split('+')[0]}.${@d.getVar("PV").split('+')[1]}" diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb index 283c1f1a35..542a02057c 100644 --- a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb +++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb @@ -14,7 +14,7 @@ MTRACE = "" MTRACE_libc-glibc = "libc-mtrace" STRACE = "strace" -STRACE_riscv32_libc-musl = "" +STRACE_riscv32 = "" RDEPENDS_${PN} = "\ gdb \ diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb index d437e28311..b8e2c718e6 100644 --- a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb +++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb @@ -29,6 +29,7 @@ PROFILETOOLS = "\ PERF = "perf" PERF_libc-musl = "" PERF_libc-musl_arm = "perf" +PERF_riscv32 = "" # systemtap needs elfutils which is not fully buildable on some arches/libcs SYSTEMTAP = "systemtap" @@ -38,7 +39,7 @@ SYSTEMTAP_riscv64 = "" LTTNGTOOLS = "lttng-tools" LTTNGTOOLS_arc = "" -LTTNGTOOLS_riscv32_libc-musl = "" +LTTNGTOOLS_riscv32 = "" BABELTRACE = "babeltrace" BABELTRACE2 = "babeltrace2" diff --git a/poky/meta/recipes-devtools/python/python3_3.8.5.bb b/poky/meta/recipes-devtools/python/python3_3.8.5.bb index cabe5dc075..2a3c52a116 100644 --- a/poky/meta/recipes-devtools/python/python3_3.8.5.bb +++ b/poky/meta/recipes-devtools/python/python3_3.8.5.bb @@ -45,6 +45,7 @@ SRC_URI[sha256sum] = "e3003ed57db17e617acb382b0cade29a248c6026b1bd8aad1f976e9af6 # exclude pre-releases for both python 2.x and 3.x UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" +UPSTREAM_CHECK_URI = "https://www.python.org/downloads/source/" CVE_PRODUCT = "python" diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc index 6c0edcb706..84f600cec0 100644 --- a/poky/meta/recipes-devtools/qemu/qemu.inc +++ b/poky/meta/recipes-devtools/qemu/qemu.inc @@ -31,7 +31,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://0001-qemu-Do-not-include-file-if-not-exists.patch \ file://find_datadir.patch \ file://usb-fix-setup_len-init.patch \ - file://0001-mips-add-34Kf-64tlb-fictitious-cpu-type-like-34Kf-bu.patch \ + file://0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch \ " UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-mips-add-34Kf-64tlb-fictitious-cpu-type-like-34Kf-bu.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-mips-add-34Kf-64tlb-fictitious-cpu-type-like-34Kf-bu.patch deleted file mode 100644 index b6312e1543..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-mips-add-34Kf-64tlb-fictitious-cpu-type-like-34Kf-bu.patch +++ /dev/null @@ -1,118 +0,0 @@ -From b3fcc7d96523ad8e3ea28c09d495ef08529d01ce Mon Sep 17 00:00:00 2001 -From: Victor Kamensky <kamensky@cisco.com> -Date: Wed, 7 Oct 2020 10:19:42 -0700 -Subject: [PATCH] mips: add 34Kf-64tlb fictitious cpu type like 34Kf but with - 64 TLBs - -In Yocto Project CI runs it was observed that test run -of 32 bit mips image takes almost twice longer than 64 bit -mips image with the same logical load and CI execution -hits timeout. - -See https://bugzilla.yoctoproject.org/show_bug.cgi?id=13992 - -Yocto project uses 34Kf cpu type to run 32 bit mips image, -and MIPS64R2-generic cpu type to run 64 bit mips64 image. - -Upon qemu behavior differences investigation between mips -and mips64 two prominent observations came up: under -logically similar load (same definition and configuration -of user-land image) in case of mips get_physical_address -function is called almost twice more often, meaning -twice more memory accesses involved in this case. Also -number of tlbwr instruction executed (r4k_helper_tlbwr -qemu function) almost 16 time bigger in mips case than in -mips64. - -It turns out that 34Kf cpu has 16 TLBs, but in case of -MIPS64R2-generic it is 64 TLBs. So that explains why -some many more tlbwr had to be execute by kernel TLB refill -handler in case of 32 bit misp. - -The idea of the fix is to come up with new 34Kf-64tlb fictitious -cpu type, that would behave exactly as 34Kf but it would -contain 64 TLBs to reduce TLB trashing. After all, adding -more TLBs to soft mmu is easy. - -Experiment with some significant non-trvial load in Yocto -environment by running do_testimage load shows that 34Kf-64tlb -cpu performs 40% or so better than original 34Kf cpu wrt test -execution real time. - -It is not ideal to have cpu type that does not exist in the -wild but given performance gains it seems to be justified. - -Signed-off-by: Victor Kamensky <kamensky@cisco.com> ---- - target/mips/translate_init.inc.c | 55 ++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 55 insertions(+) - -diff --git a/target/mips/translate_init.inc.c b/target/mips/translate_init.inc.c -index 637caccd89..b73ab48231 100644 ---- a/target/mips/translate_init.inc.c -+++ b/target/mips/translate_init.inc.c -@@ -297,6 +297,61 @@ const mips_def_t mips_defs[] = - .insn_flags = CPU_MIPS32R2 | ASE_MIPS16 | ASE_DSP | ASE_MT, - .mmu_type = MMU_TYPE_R4000, - }, -+ /* -+ * Verbatim copy of "34Kf" cpu, only bumped up number of TLB entries -+ * from 16 to 64 (see CP0_Config0 value at CP0C1_MMU bits) to improve -+ * performance by reducing number of TLB refill exceptions and -+ * eliminating need to run all corresponding TLB refill handling -+ * instructions. -+ */ -+ { -+ .name = "34Kf-64tlb", -+ .CP0_PRid = 0x00019500, -+ .CP0_Config0 = MIPS_CONFIG0 | (0x1 << CP0C0_AR) | -+ (MMU_TYPE_R4000 << CP0C0_MT), -+ .CP0_Config1 = MIPS_CONFIG1 | (1 << CP0C1_FP) | (63 << CP0C1_MMU) | -+ (0 << CP0C1_IS) | (3 << CP0C1_IL) | (1 << CP0C1_IA) | -+ (0 << CP0C1_DS) | (3 << CP0C1_DL) | (1 << CP0C1_DA) | -+ (1 << CP0C1_CA), -+ .CP0_Config2 = MIPS_CONFIG2, -+ .CP0_Config3 = MIPS_CONFIG3 | (1 << CP0C3_VInt) | (1 << CP0C3_MT) | -+ (1 << CP0C3_DSPP), -+ .CP0_LLAddr_rw_bitmask = 0, -+ .CP0_LLAddr_shift = 0, -+ .SYNCI_Step = 32, -+ .CCRes = 2, -+ .CP0_Status_rw_bitmask = 0x3778FF1F, -+ .CP0_TCStatus_rw_bitmask = (0 << CP0TCSt_TCU3) | (0 << CP0TCSt_TCU2) | -+ (1 << CP0TCSt_TCU1) | (1 << CP0TCSt_TCU0) | -+ (0 << CP0TCSt_TMX) | (1 << CP0TCSt_DT) | -+ (1 << CP0TCSt_DA) | (1 << CP0TCSt_A) | -+ (0x3 << CP0TCSt_TKSU) | (1 << CP0TCSt_IXMT) | -+ (0xff << CP0TCSt_TASID), -+ .CP1_fcr0 = (1 << FCR0_F64) | (1 << FCR0_L) | (1 << FCR0_W) | -+ (1 << FCR0_D) | (1 << FCR0_S) | (0x95 << FCR0_PRID), -+ .CP1_fcr31 = 0, -+ .CP1_fcr31_rw_bitmask = 0xFF83FFFF, -+ .CP0_SRSCtl = (0xf << CP0SRSCtl_HSS), -+ .CP0_SRSConf0_rw_bitmask = 0x3fffffff, -+ .CP0_SRSConf0 = (1U << CP0SRSC0_M) | (0x3fe << CP0SRSC0_SRS3) | -+ (0x3fe << CP0SRSC0_SRS2) | (0x3fe << CP0SRSC0_SRS1), -+ .CP0_SRSConf1_rw_bitmask = 0x3fffffff, -+ .CP0_SRSConf1 = (1U << CP0SRSC1_M) | (0x3fe << CP0SRSC1_SRS6) | -+ (0x3fe << CP0SRSC1_SRS5) | (0x3fe << CP0SRSC1_SRS4), -+ .CP0_SRSConf2_rw_bitmask = 0x3fffffff, -+ .CP0_SRSConf2 = (1U << CP0SRSC2_M) | (0x3fe << CP0SRSC2_SRS9) | -+ (0x3fe << CP0SRSC2_SRS8) | (0x3fe << CP0SRSC2_SRS7), -+ .CP0_SRSConf3_rw_bitmask = 0x3fffffff, -+ .CP0_SRSConf3 = (1U << CP0SRSC3_M) | (0x3fe << CP0SRSC3_SRS12) | -+ (0x3fe << CP0SRSC3_SRS11) | (0x3fe << CP0SRSC3_SRS10), -+ .CP0_SRSConf4_rw_bitmask = 0x3fffffff, -+ .CP0_SRSConf4 = (0x3fe << CP0SRSC4_SRS15) | -+ (0x3fe << CP0SRSC4_SRS14) | (0x3fe << CP0SRSC4_SRS13), -+ .SEGBITS = 32, -+ .PABITS = 32, -+ .insn_flags = CPU_MIPS32R2 | ASE_MIPS16 | ASE_DSP | ASE_MT, -+ .mmu_type = MMU_TYPE_R4000, -+ }, - { - .name = "74Kf", - .CP0_PRid = 0x00019700, --- -2.14.5 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch new file mode 100644 index 0000000000..5227b7cbd2 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch @@ -0,0 +1,59 @@ +From 68fa519a6cb455005317bd61f95214b58b2f1e69 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org> +Date: Fri, 16 Oct 2020 15:20:37 +0200 +Subject: [PATCH] target/mips: Increase number of TLB entries on the 34Kf core + (16 -> 64) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Per "MIPS32 34K Processor Core Family Software User's Manual, +Revision 01.13" page 8 in "Joint TLB (JTLB)" section: + + "The JTLB is a fully associative TLB cache containing 16, 32, + or 64-dual-entries mapping up to 128 virtual pages to their + corresponding physical addresses." + +There is no particular reason to restrict the 34Kf core model to +16 TLB entries, so raise its config to 64. + +This is helpful for other projects, in particular the Yocto Project: + + Yocto Project uses qemu-system-mips 34Kf cpu model, to run 32bit + MIPS CI loop. It was observed that in this case CI test execution + time was almost twice longer than 64bit MIPS variant that runs + under MIPS64R2-generic model. It was investigated and concluded + that the difference in number of TLBs 16 in 34Kf case vs 64 in + MIPS64R2-generic is responsible for most of CI real time execution + difference. Because with 16 TLBs linux user-land trashes TLB more + and it needs to execute more instructions in TLB refill handler + calls, as result it runs much longer. + +(https://lists.gnu.org/archive/html/qemu-devel/2020-10/msg03428.html) + +Buglink: https://bugzilla.yoctoproject.org/show_bug.cgi?id=13992 +Reported-by: Victor Kamensky <kamensky@cisco.com> +Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> +Reviewed-by: Richard Henderson <richard.henderson@linaro.org> +Message-Id: <20201016133317.553068-1-f4bug@amsat.org> + +Upstream-Status: Backport [https://github.com/qemu/qemu/commit/68fa519a6cb455005317bd61f95214b58b2f1e69] +Signed-off-by: Victor Kamensky <kamensky@cisco.com> + +--- + target/mips/translate_init.c.inc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: qemu-5.1.0/target/mips/translate_init.inc.c +=================================================================== +--- qemu-5.1.0.orig/target/mips/translate_init.inc.c ++++ qemu-5.1.0/target/mips/translate_init.inc.c +@@ -254,7 +254,7 @@ const mips_def_t mips_defs[] = + .CP0_PRid = 0x00019500, + .CP0_Config0 = MIPS_CONFIG0 | (0x1 << CP0C0_AR) | + (MMU_TYPE_R4000 << CP0C0_MT), +- .CP0_Config1 = MIPS_CONFIG1 | (1 << CP0C1_FP) | (15 << CP0C1_MMU) | ++ .CP0_Config1 = MIPS_CONFIG1 | (1 << CP0C1_FP) | (63 << CP0C1_MMU) | + (0 << CP0C1_IS) | (3 << CP0C1_IL) | (1 << CP0C1_IA) | + (0 << CP0C1_DS) | (3 << CP0C1_DL) | (1 << CP0C1_DA) | + (1 << CP0C1_CA), diff --git a/poky/meta/recipes-devtools/tcltk/tcl_8.6.10.bb b/poky/meta/recipes-devtools/tcltk/tcl_8.6.10.bb index aedd96b021..e6feb25a7e 100644 --- a/poky/meta/recipes-devtools/tcltk/tcl_8.6.10.bb +++ b/poky/meta/recipes-devtools/tcltk/tcl_8.6.10.bb @@ -32,6 +32,7 @@ SRC_URI_class-native = "${BASE_SRC_URI}" S = "${WORKDIR}/${BPN}${PV}/unix" +PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/${BPN}${PV}" VER = "${PV}" inherit autotools ptest binconfig update-alternatives diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch new file mode 100644 index 0000000000..37f6ea667d --- /dev/null +++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch @@ -0,0 +1,48 @@ +From 15330adf7c2471fbaa6a0818db07078d81dbff97 Mon Sep 17 00:00:00 2001 +From: Bart Van Assche <bvanassche@acm.org> +Date: Sat, 19 Sep 2020 08:08:59 -0700 +Subject: [PATCH] drd: Port to Fedora 33 + +Apparently on Fedora 33 the POSIX thread functions exist in both libc and +libpthread. Hence this patch that intercepts the pthread functions in +libc. See also https://bugs.kde.org/show_bug.cgi?id=426144 . + +Signed-off-by: Bart Van Assche <bvanassche@acm.org> + +This patch was imported from the valgrind sourceware server +(https://sourceware.org/git/?p=valgrind.git;a=commit;h=15330adf7c2471fbaa6a0818db07078d81dbff97) +It was modified to remove the changes to the valgrind NEWS file, +as these are difficult to maintain and don't impact the valgrind +code itself. + +Upstream-Status: Backport + +Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com> +--- + drd/drd_pthread_intercepts.c | 9 +++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c +index 58c45aaec..c2882e5ab 100644 +--- a/drd/drd_pthread_intercepts.c ++++ b/drd/drd_pthread_intercepts.c +@@ -174,7 +174,16 @@ static int never_true; + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ + { return implf argl; } + #else ++/* ++ * On Linux, intercept both the libc and the libpthread functions. At ++ * least glibc 2.32.9000 (Fedora 34) has an implementation of all pthread ++ * functions in both libc and libpthread. Older glibc versions only have an ++ * implementation of the pthread functions in libpthread. ++ */ + #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ ++ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \ ++ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ ++ { return implf argl; } \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ + { return implf argl; } +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch new file mode 100644 index 0000000000..e96bf3c611 --- /dev/null +++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch @@ -0,0 +1,31 @@ +The changes in 0001-drd-Port-to-Fedora-33.patch break builds on musl. These +need a __GLIBC__ guard to ensure musl builds continue to work. + +Upstream-Status: Pending +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: valgrind-3.16.1/drd/drd_pthread_intercepts.c +=================================================================== +--- valgrind-3.16.1.orig/drd/drd_pthread_intercepts.c ++++ valgrind-3.16.1/drd/drd_pthread_intercepts.c +@@ -180,6 +180,7 @@ static int never_true; + * functions in both libc and libpthread. Older glibc versions only have an + * implementation of the pthread functions in libpthread. + */ ++#ifdef __GLIBC__ + #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ +@@ -187,6 +188,12 @@ static int never_true; + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ + ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ + { return implf argl; } ++#else ++#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ ++ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ ++ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ ++ { return implf argl; } ++#endif + #endif + + /** diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb index d4ca1a7752..bcba55f327 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb +++ b/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb @@ -40,6 +40,8 @@ SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \ file://s390x_vec_op_t.patch \ file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \ file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \ + file://0001-drd-Port-to-Fedora-33.patch \ + file://0001-drd-musl-fix.patch \ " SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589" SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca" diff --git a/poky/meta/recipes-extended/cups/cups.inc b/poky/meta/recipes-extended/cups/cups.inc index 1765944568..87870e4aba 100644 --- a/poky/meta/recipes-extended/cups/cups.inc +++ b/poky/meta/recipes-extended/cups/cups.inc @@ -47,6 +47,7 @@ EXTRA_OECONF = " \ --enable-debug \ --disable-relro \ --enable-libusb \ + --with-domainsocket=/run/cups/cups.sock \ DSOFLAGS='${LDFLAGS}' \ " diff --git a/poky/meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch b/poky/meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch new file mode 100644 index 0000000000..5c5d2f4e44 --- /dev/null +++ b/poky/meta/recipes-extended/watchdog/watchdog/0001-wd_keepalive.service-use-run-instead-of-var-run.patch @@ -0,0 +1,30 @@ +From b5cb6166dbfa57d1d94b19d4a098991a817f68f5 Mon Sep 17 00:00:00 2001 +From: Chen Qi <Qi.Chen@windriver.com> +Date: Thu, 15 Oct 2020 10:02:17 +0800 +Subject: [PATCH] wd_keepalive.service: use /run instead of /var/run + +/var/run is deprecated by systemd, use /run instead. + +Upstream-Status: Pending + +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +--- + debian/wd_keepalive.service | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/debian/wd_keepalive.service b/debian/wd_keepalive.service +index 7f8b1dc..0f2a153 100644 +--- a/debian/wd_keepalive.service ++++ b/debian/wd_keepalive.service +@@ -7,7 +7,7 @@ Type=forking + EnvironmentFile=/etc/default/watchdog + ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module' + ExecStart=/usr/sbin/wd_keepalive $watchdog_options +-PIDFile=/var/run/wd_keepalive.pid ++PIDFile=/run/wd_keepalive.pid + + [Install] + WantedBy=multi-user.target +-- +2.17.1 + diff --git a/poky/meta/recipes-extended/watchdog/watchdog_5.16.bb b/poky/meta/recipes-extended/watchdog/watchdog_5.16.bb index 0199487e2e..1988952603 100644 --- a/poky/meta/recipes-extended/watchdog/watchdog_5.16.bb +++ b/poky/meta/recipes-extended/watchdog/watchdog_5.16.bb @@ -12,6 +12,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \ file://0001-watchdog-remove-interdependencies-of-watchdog-and-wd.patch \ file://watchdog.init \ file://wd_keepalive.init \ + file://0001-wd_keepalive.service-use-run-instead-of-var-run.patch \ " SRC_URI[md5sum] = "1b4f51cabc64d1bee2fce7cdd626831f" diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb index 0405fa78b5..3dec5ed052 100644 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb +++ b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb @@ -5,7 +5,7 @@ loading (ie. animated GIFs)" HOMEPAGE = "https://wiki.gnome.org/Projects/GdkPixbuf" BUGTRACKER = "https://gitlab.gnome.org/GNOME/gdk-pixbuf/issues" -LICENSE = "LGPLv2.1" +LICENSE = "LGPLv2.1+" LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ file://gdk-pixbuf/gdk-pixbuf.h;endline=26;md5=72b39da7cbdde2e665329fef618e1d6b \ " diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch b/poky/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch index 2d692f36b5..a8b8f0353c 100644 --- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch +++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch @@ -1,24 +1,35 @@ -Upstream-Status: Backport [https://github.com/harfbuzz/harfbuzz/commit/5aff83104e03d6d2617987d24a51e490ab7a5cd1] -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From bc1c93fbe04459a4b12c76c713ba1b750d2d9108 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@arm.com> -Date: Mon, 7 Sep 2020 17:11:17 +0100 -Subject: [PATCH 1/2] [build] No need to pass source directory to - gen-hb-version +From 6ccadec1fae6a73749b7dfe2311f71d0e610e812 Mon Sep 17 00:00:00 2001 +From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com> +Date: Wed, 30 Sep 2020 10:30:08 +0900 +Subject: [PATCH] No need to pass source directory to gen-hb-version The input file is by definition in the source directory, so dirname() that instead of needing the directory to be passed. Needed because a follow-up commit will change when this is called, and the source directory isn't trivially available at that point. + +generate hb-version.h once at configure time with Meson + +Currently with Meson hb-version.h is generated during the build without +any explicit dependencies which can result in build failures due races +over the file. + +Change this to be generated at configure time, so that the file is always +generated once before the build itself. + +Closes #2667 + +Upstream-Status: Backport [https://github.com/harfbuzz/harfbuzz/commit/5aff83104e03d6d2617987d24a51e490ab7a5cd1] +Signed-off-by: Ross Burton <ross.burton@arm.com> +Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com> --- - src/gen-hb-version.py | 6 +++--- - src/meson.build | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) + src/gen-hb-version.py | 6 +++--- + src/meson.build | 17 ++++++++--------- + 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/gen-hb-version.py b/src/gen-hb-version.py -index 15e56b93..bf16f88a 100755 +index 15e56b9..bf16f88 100755 --- a/src/gen-hb-version.py +++ b/src/gen-hb-version.py @@ -4,15 +4,15 @@ @@ -41,42 +52,7 @@ index 15e56b93..bf16f88a 100755 with open (INPUT, "r", encoding='utf-8') as template: with open (OUTPUT, "wb") as output: diff --git a/src/meson.build b/src/meson.build -index 5d7cd578..2d78c992 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -286,7 +286,7 @@ custom_target('hb-version.h', - input: 'hb-version.h.in', - output: 'hb-version.h', - command: [find_program('gen-hb-version.py'), meson.project_version(), -- '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], -+ '@OUTPUT@', '@INPUT@'], - ) - - ragel = find_program('ragel', required: false) --- -2.28.0 - - -From 5aff83104e03d6d2617987d24a51e490ab7a5cd1 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@arm.com> -Date: Mon, 7 Sep 2020 10:55:33 +0100 -Subject: [PATCH 2/2] [build] generate hb-version.h once at configure time with - Meson - -Currently with Meson hb-version.h is generated during the build without -any explicit dependencies which can result in build failures due races -over the file. - -Change this to be generated at configure time, so that the file is always -generated once before the build itself. - -Closes #2667 ---- - src/meson.build | 17 ++++++++--------- - 1 file changed, 8 insertions(+), 9 deletions(-) - -diff --git a/src/meson.build b/src/meson.build -index 2d78c992..19290245 100644 +index 5e1787c..56d8ae2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,3 +1,10 @@ @@ -110,12 +86,12 @@ index 2d78c992..19290245 100644 - input: 'hb-version.h.in', - output: 'hb-version.h', - command: [find_program('gen-hb-version.py'), meson.project_version(), -- '@OUTPUT@', '@INPUT@'], +- '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], -) - ragel = find_program('ragel', required: false) if not ragel.found() warning('You have to install ragel if you are going to develop HarfBuzz itself') -- -2.28.0 +2.25.1 diff --git a/poky/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch b/poky/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch new file mode 100644 index 0000000000..8bedbac669 --- /dev/null +++ b/poky/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch @@ -0,0 +1,31 @@ +From 8973e297f2f9b17498b9dc0e37a19481d4bb7df9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 16 Oct 2020 11:03:47 -0700 +Subject: [PATCH] futex.h: Define __NR_futex if it does not exist + +__NR_futex is not defines by newer architectures e.g. arc, riscv32 as +they only have 64bit variant of time_t. Glibc defines SYS_futex interface based on +__NR_futex, since this is used in applications, such applications start +to fail to build for these newer architectures. This patch defines a +fallback to alias __NR_futex to __NR_futex_tim64 so SYS_futex keeps +working + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/util/futex.h | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/src/util/futex.h ++++ b/src/util/futex.h +@@ -34,6 +34,10 @@ + #include <sys/syscall.h> + #include <sys/time.h> + ++#if !defined(SYS_futex) && defined(SYS_futex_time64) ++# define SYS_futex SYS_futex_time64 ++#endif ++ + static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3) + { + return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc index dd4619a06b..9fc62e95e1 100644 --- a/poky/meta/recipes-graphics/mesa/mesa.inc +++ b/poky/meta/recipes-graphics/mesa/mesa.inc @@ -21,6 +21,7 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ file://0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch \ file://0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch \ file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ + file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \ " SRC_URI[sha256sum] = "df21351494f7caaec5a3ccc16f14f15512e98d2ecde178bba1d134edc899b961" diff --git a/poky/meta/recipes-graphics/wayland/weston-init.bb b/poky/meta/recipes-graphics/wayland/weston-init.bb index 07cec75fb3..b7a99be646 100644 --- a/poky/meta/recipes-graphics/wayland/weston-init.bb +++ b/poky/meta/recipes-graphics/wayland/weston-init.bb @@ -15,6 +15,10 @@ SRC_URI = "file://init \ S = "${WORKDIR}" +PACKAGECONFIG ??= "" + +PACKAGECONFIG[no-idle-timeout] = ",," + DEFAULTBACKEND ??= "" DEFAULTBACKEND_qemuall ?= "fbdev" DEFAULTBACKEND_qemuarm64 = "drm" @@ -45,6 +49,10 @@ do_install() { if [ -n "${DEFAULTBACKEND}" ]; then sed -i -e "/^\[core\]/a backend=${DEFAULTBACKEND}-backend.so" ${D}${sysconfdir}/xdg/weston/weston.ini fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'no-idle-timeout', 'yes', 'no', d)}" = "yes" ]; then + echo "idle-time=0" >> ${D}${sysconfdir}/xdg/weston/weston.ini + fi } inherit update-rc.d features_check systemd diff --git a/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb index 0b037a3770..75f9fb05fd 100644 --- a/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb +++ b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb @@ -73,7 +73,7 @@ PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-color # Clients support PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false" # Virtual remote output with GStreamer on DRM backend -PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer-1.0" +PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0" # Weston with PAM support PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam" # Weston with screen-share support diff --git a/poky/meta/recipes-kernel/kmod/kmod.inc b/poky/meta/recipes-kernel/kmod/kmod.inc index edff191700..646dff9a97 100644 --- a/poky/meta/recipes-kernel/kmod/kmod.inc +++ b/poky/meta/recipes-kernel/kmod/kmod.inc @@ -11,6 +11,7 @@ SECTION = "base" LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://tools/COPYING;md5=751419260aa954499f7abaabaa882bbe \ " inherit autotools gtk-doc pkgconfig manpages diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200817.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200817.bb index ffeb8e6926..0abd28c9fa 100644 --- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200817.bb +++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200817.bb @@ -218,8 +218,8 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-mt7601u-license ${PN}-mt7601u \ ${PN}-radeon-license ${PN}-radeon \ ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \ - ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 ${PN}-sd8887 ${PN}-sd8897 \ - ${PN}-usb8997 \ + ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \ + ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \ ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \ ${PN}-vt6656-license ${PN}-vt6656 \ ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ @@ -288,12 +288,16 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-adsp-sst-license ${PN}-adsp-sst \ ${PN}-bnx2-mips \ ${PN}-liquidio \ + ${PN}-nvidia-license \ + ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \ + ${PN}-nvidia-gpu \ ${PN}-netronome-license ${PN}-netronome \ ${PN}-qat ${PN}-qat-license \ ${PN}-qcom-license \ ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \ ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 ${PN}-qcom-adreno-a630 \ ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \ + ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \ ${PN}-whence-license \ ${PN}-license \ " @@ -403,6 +407,7 @@ LICENSE_${PN}-sd8797 = "Firmware-Marvell" LICENSE_${PN}-sd8801 = "Firmware-Marvell" LICENSE_${PN}-sd8887 = "Firmware-Marvell" LICENSE_${PN}-sd8897 = "Firmware-Marvell" +LICENSE_${PN}-sd8997 = "Firmware-Marvell" LICENSE_${PN}-usb8997 = "Firmware-Marvell" LICENSE_${PN}-marvell-license = "Firmware-Marvell" @@ -438,6 +443,15 @@ FILES_${PN}-sd8887 = " \ FILES_${PN}-sd8897 = " \ ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \ " +do_install_append() { + # The kernel 5.6.x driver still uses the old name, provide a symlink for + # older kernels + ln -fs sdsd8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin +} +FILES_${PN}-sd8997 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin \ + ${nonarch_base_libdir}/firmware/mrvl/sdsd8997_combo_v4.bin \ +" FILES_${PN}-usb8997 = " \ ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \ " @@ -449,6 +463,7 @@ RDEPENDS_${PN}-sd8797 += "${PN}-marvell-license" RDEPENDS_${PN}-sd8801 += "${PN}-marvell-license" RDEPENDS_${PN}-sd8887 += "${PN}-marvell-license" RDEPENDS_${PN}-sd8897 += "${PN}-marvell-license" +RDEPENDS_${PN}-sd8997 += "${PN}-marvell-license" RDEPENDS_${PN}-usb8997 += "${PN}-marvell-license" # For netronome @@ -466,6 +481,27 @@ FILES_${PN}-netronome = " \ RDEPENDS_${PN}-netronome += "${PN}-netronome-license" +# For Nvidia +LICENSE_${PN}-nvidia-gpu = "Firmware-nvidia" +LICENSE_${PN}-nvidia-tegra = "Firmware-nvidia" +LICENSE_${PN}-nvidia-tegra-k1 = "Firmware-nvidia" +LICENSE_${PN}-nvidia-license = "Firmware-nvidia" + +FILES_${PN}-nvidia-gpu = "${nonarch_base_libdir}/firmware/nvidia" +FILES_${PN}-nvidia-tegra = " \ + ${nonarch_base_libdir}/firmware/nvidia/tegra* \ + ${nonarch_base_libdir}/firmware/nvidia/gm20b \ + ${nonarch_base_libdir}/firmware/nvidia/gp10b \ +" +FILES_${PN}-nvidia-tegra-k1 = " \ + ${nonarch_base_libdir}/firmware/nvidia/tegra124 \ + ${nonarch_base_libdir}/firmware/nvidia/gk20a \ +" +FILES_${PN}-nvidia-license = "${nonarch_base_libdir}/firmware/LICENCE.nvidia" + +RDEPENDS_${PN}-nvidia-gpu += "${PN}-nvidia-license" +RDEPENDS_${PN}-nvidia-tegra += "${PN}-nvidia-license" + # For rtl LICENSE_${PN}-rtl8188 = "Firmware-rtlwifi_firmware" LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi_firmware" @@ -881,6 +917,12 @@ RDEPENDS_${PN}-qcom-sdm845-modem = "${PN}-qcom-license" FILES_${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio" +# For Amlogic VDEC +LICENSE_${PN}-amlogic-vdec = "Firmware-amlogic_vdec" +FILES_${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec" +FILES_${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*" +RDEPENDS_${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license" + # For other firmwares # Maybe split out to separate packages when needed. LICENSE_${PN} = "\ @@ -888,6 +930,7 @@ LICENSE_${PN} = "\ & Firmware-agere \ & Firmware-amdgpu \ & Firmware-amd-ucode \ + & Firmware-amlogic_vdec \ & Firmware-atmel \ & Firmware-ca0132 \ & Firmware-cavium \ diff --git a/poky/meta/recipes-support/attr/attr.inc b/poky/meta/recipes-support/attr/attr.inc index f13a83a7b4..0c3330a686 100644 --- a/poky/meta/recipes-support/attr/attr.inc +++ b/poky/meta/recipes-support/attr/attr.inc @@ -8,6 +8,7 @@ LICENSE = "LGPLv2.1+ & GPLv2+" LICENSE_${PN} = "GPLv2+" LICENSE_lib${BPN} = "LGPLv2.1+" LIC_FILES_CHKSUM = "file://doc/COPYING;md5=2d0aa14b3fce4694e4f615e30186335f \ + file://doc/COPYING.LGPL;md5=b8d31f339300bc239d73461d68e77b9c \ file://tools/attr.c;endline=17;md5=be0403261f0847e5f43ed5b08d19593c \ file://libattr/libattr.c;endline=17;md5=7970f77049f8fa1199fff62a7ab724fb" diff --git a/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb b/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb index d8096de5af..258f8c9cdf 100644 --- a/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb +++ b/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb @@ -7,6 +7,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c" SRC_URI = "git://github.com/boostorg/build;protocol=https" SRCREV = "632ea768f3eb225b4472c5ed6d20afee708724ad" +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+){2,}))" + inherit native S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch b/poky/meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch new file mode 100644 index 0000000000..523568e9bc --- /dev/null +++ b/poky/meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch @@ -0,0 +1,54 @@ +From d6f7b6064dc91d1d5fa18554b40b14822ab7a32b Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 16 Oct 2020 11:13:22 -0700 +Subject: [PATCH] fiber,libs: Define SYS_futex if it does not exist + +__NR_futex is not defines by newer architectures e.g. arc, riscv32 as +they only have 64bit variant of time_t. Glibc defines SYS_futex interface based on +__NR_futex, since this is used in applications, such applications start +to fail to build for these newer architectures. This patch defines a +fallback to alias __NR_futex to __NR_futex_tim64 so SYS_futex keeps +working + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + boost/fiber/detail/futex.hpp | 5 +++++ + libs/log/src/event.cpp | 4 ++++ + 2 files changed, 9 insertions(+) + +diff --git a/boost/fiber/detail/futex.hpp b/boost/fiber/detail/futex.hpp +index e64bd5990..16bee64f1 100644 +--- a/boost/fiber/detail/futex.hpp ++++ b/boost/fiber/detail/futex.hpp +@@ -17,6 +17,11 @@ extern "C" { + #include <linux/futex.h> + #include <sys/syscall.h> + } ++ ++#if !defined(SYS_futex) && defined(SYS_futex_time64) ++#define SYS_futex SYS_futex_time64 ++#endif ++ + #elif BOOST_OS_WINDOWS + #include <windows.h> + #endif +diff --git a/libs/log/src/event.cpp b/libs/log/src/event.cpp +index 5485154d7..2c7c0381f 100644 +--- a/libs/log/src/event.cpp ++++ b/libs/log/src/event.cpp +@@ -31,6 +31,10 @@ + #include <linux/futex.h> + #include <boost/memory_order.hpp> + ++#if !defined(SYS_futex) && defined(SYS_futex_time64) ++#define SYS_futex SYS_futex_time64 ++#endif ++ + // Some Android NDKs (Google NDK and older Crystax.NET NDK versions) don't define SYS_futex + #if defined(SYS_futex) + #define BOOST_LOG_SYS_FUTEX SYS_futex +-- +2.28.0 + diff --git a/poky/meta/recipes-support/boost/boost_1.74.0.bb b/poky/meta/recipes-support/boost/boost_1.74.0.bb index 5e9e0d87d7..b01b390a59 100644 --- a/poky/meta/recipes-support/boost/boost_1.74.0.bb +++ b/poky/meta/recipes-support/boost/boost_1.74.0.bb @@ -7,4 +7,5 @@ SRC_URI += "file://arm-intrinsics.patch \ file://0001-Apply-boost-1.62.0-no-forced-flags.patch.patch \ file://0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \ file://0001-dont-setup-compiler-flags-m32-m64.patch \ + file://0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch \ " diff --git a/poky/meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch b/poky/meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch new file mode 100644 index 0000000000..3ef7f85451 --- /dev/null +++ b/poky/meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch @@ -0,0 +1,61 @@ +From a83dae404feac517695c23ff43ce1e116e2bfbe0 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro <mcatanzaro@gnome.org> +Date: Wed, 9 Sep 2020 11:12:02 -0500 +Subject: [PATCH] Rewrite url::recvline to be nonrecursive + +This function processes network input. It's semi-trusted, because the +PAC ought to be trusted. But we still shouldn't allow it to control how +far we recurse. A malicious PAC can cause us to overflow the stack by +sending a sufficiently-long line without any '\n' character. + +Also, this function failed to properly handle EINTR, so let's fix that +too, for good measure. + +Fixes #134 + +Upstream-Status: Backport [https://github.com/libproxy/libproxy/commit/836c10b60c65e947ff1e10eb02fbcc676d909ffa] +CVE: CVE-2020-25219 +Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com> +--- + libproxy/url.cpp | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +diff --git a/libproxy/url.cpp b/libproxy/url.cpp +index ee776b2..68d69cd 100644 +--- a/libproxy/url.cpp ++++ b/libproxy/url.cpp +@@ -388,16 +388,24 @@ string url::to_string() const { + return m_orig; + } + +-static inline string recvline(int fd) { +- // Read a character. +- // If we don't get a character, return empty string. +- // If we are at the end of the line, return empty string. +- char c = '\0'; +- +- if (recv(fd, &c, 1, 0) != 1 || c == '\n') +- return ""; +- +- return string(1, c) + recvline(fd); ++static string recvline(int fd) { ++ string line; ++ int ret; ++ ++ // Reserve arbitrary amount of space to avoid small memory reallocations. ++ line.reserve(128); ++ ++ do { ++ char c; ++ ret = recv(fd, &c, 1, 0); ++ if (ret == 1) { ++ if (c == '\n') ++ return line; ++ line += c; ++ } ++ } while (ret == 1 || (ret == -1 && errno == EINTR)); ++ ++ return line; + } + + char* url::get_pac() { diff --git a/poky/meta/recipes-support/libproxy/libproxy_0.4.15.bb b/poky/meta/recipes-support/libproxy/libproxy_0.4.15.bb index 19dddebd44..a14c358cc2 100644 --- a/poky/meta/recipes-support/libproxy/libproxy_0.4.15.bb +++ b/poky/meta/recipes-support/libproxy/libproxy_0.4.15.bb @@ -10,6 +10,7 @@ DEPENDS = "glib-2.0" SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \ file://0001-get-pac-test-Fix-build-with-clang-libc.patch \ + file://CVE-2020-25219.patch \ " SRC_URI[md5sum] = "f6b1d2a1e17a99cd3debaae6d04ab152" SRC_URI[sha256sum] = "654db464120c9534654590b6683c7fa3887b3dad0ca1c4cd412af24fbfca6d4f" |