From 5f35090dc809872fb7b8f381c1ccf995b75f03a0 Mon Sep 17 00:00:00 2001 From: Andrew Geissler Date: Fri, 23 Jul 2021 13:09:54 -0400 Subject: poky: subtree update:2834c2f853..17aabc0127 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adam Romanek (3): bitbake: fetch/git: run gc in foreground to avoid race with tar bitbake: fetch2/s3: allow to use credentials from environment variables own-mirrors: Add support for s3:// scheme in SOURCE_MIRROR_URL Alexander Kanavin (44): devtool upgrade: rebase override-only patches as well cmake: update 3.20.3 -> 3.20.4 gnu-config: update to latest revision bash: update 5.1 -> 5.1.8 dnf: updatee 4.7.0 -> 4.8.0 vulkan-samples: update to latest revision bind: upgrade 9.16.16 -> 9.16.18 bluez5: upgrade 5.58 -> 5.59 dejagnu: upgrade 1.6.2 -> 1.6.3 libdnf: upgrade 0.63.0 -> 0.63.1 libpcre: upgrade 8.44 -> 8.45 libxi: upgrade 1.7.10 -> 1.7.99.2 mtools: upgrade 4.0.29 -> 4.0.31 python3-git: upgrade 3.1.17 -> 3.1.18 sqlite3: upgrade 3.35.5 -> 3.36.0 vte: upgrade 0.64.1 -> 0.64.2 x264: upgrade to latest revision python3: apply test skipping patch unconditionally pypi: set SRC_URI with _prepend, not with += man-pages: upgrade 5.11 -> 5.12 rt-tests: update 1.10 -> 2.1 python3-iniparse: update 0.4 -> 0.5 iputils: correct upstream version check texinfo: update 6.7 -> 6.8 xserver-xorg: exclude development snapshots from upstream version checks xwayland: exclude development snapshots from upstream version checks devtool: correctly handle non-standard source tree locations in upgrades llvm: make upgradable via devtool xserver-xorg: update 1.20.11 -> 1.20.12 libmodulemd: update 2.12.1 -> 2.13.0 bluez5: upgrade 5.59 -> 5.60 createrepo-c: upgrade 0.17.3 -> 0.17.4 ethtool: upgrade 5.12 -> 5.13 gtk+3: upgrade 3.24.29 -> 3.24.30 harfbuzz: upgrade 2.8.1 -> 2.8.2 iproute2: upgrade 5.12.0 -> 5.13.0 libgit2: upgrade 1.1.0 -> 1.1.1 mpg123: upgrade 1.28.0 -> 1.28.2 mtools: upgrade 4.0.31 -> 4.0.32 ruby: upgrade 3.0.1 -> 3.0.2 stress-ng: upgrade 0.12.11 -> 0.12.12 webkitgtk: upgrade 2.32.1 -> 2.32.2 xwayland: upgrade 21.1.1 -> 21.1.2 tcl: fix upstream version check Alexey Brodkin (3): dpkg: Add ARC support default-distrovars.inc: Remove seccomp for ARC dhcpcd: add ARC support Andreas Müller (4): libdrm: upgrade 2.4.106 -> 2.4.107 mesa: upgrade 21.1.3 -> 21.1.4 pango: upgrade 1.48.5 -> 1.48.7 mesa: upgrade 21.1.4 -> 21.1.5 Andrej Valek (1): busybox: add tmpdir option into mktemp applet Armin Kuster (1): maintainers.inc: remove myself as a Maintainer Asfak Rahman (1): openssh: Remove temporary keys before generating new ones Bruce Ashfield (24): linux-yocto/5.10: update to v5.10.46 linux-yocto/5.10: features/nft_tables: refresh config options linux-yocto/5.4: update to v5.4.128 linux-yocto/5.10: rcu: Fix stall-warning deadlock due to non-release of rcu_node ->lock linux-yocto/5.10: update to v5.10.47 linux-yocto/5.4: update to v5.4.129 linux-yocto/5.10: scsi-debug needs scsi-disk linux-libc-headers: update to 5.13 kernel-devsrc: fix scripts/prepare for ARM64 kernel-devsrc: fix scripts prepare for powerpc kernel-devsrc: powerpc64 add scripts prepare support linux-yocto: introduce 5.13 recipes linux-yocto/5.13: add devupstream support linux-yocto-rt/5.13: integrate -rt1 linux-yocto: add vfat KERNEL_FEATURE when MACHINE_FEATURES include vfat linux-yocto/5.10: update to v5.10.49 linux-yocto/5.4: update to v5.4.131 linux-yocto/5.13: update to v5.13.2 linux-yocto/5.10: update to v5.10.50 linux-yocto/5.4: update to v5.4.132 linux-yocto/5.13: update to v5.13.3 linux-yocto/5.13: update to v5.13.4 linux-yocto/5.10: update to v5.10.52 linux-yocto/5.4: update to v5.4.134 Changhyeok Bae (1): iputils: Update to 20210202 Changqing Li (1): boost-build-native: workaround one rarely hang problem on fedora34 Christoph Muellner (1): ldconfig-native: Add RISC-V support Damian Wrobel (1): gobject-introspection: Fix the license (add MIT) Denys Dmytriyenko (1): bitbake: providers: replace newly added logger.warn() with logger.warning() Fabio Berton (1): lib/oe/package_manager: Don't ignore installation failures in install_complementary Florian Amstutz (1): devtool: deploy-target: Fix preserving attributes when using --strip Jose Quaresma (3): glslang: upgrade 11.4.0 -> 11.5.0 shaderc: upgrade 2021.0 -> 2021.1 spirv-tools: upgrade 2021.1 -> 2021.2 Joshua Watt (3): ref-manual: Document BUILDHISTORY_PATH_PREFIX_STRIP bitbake: bitbake: Add piping compression library bitbake: server: Fix early parsing errors preventing zombie bitbake Khem Raj (7): glib-2.0: Fix signature of close_range gnome-desktop-testing: Fix non-literal format string warning util-linux: Disable chfn-chsh on non-target builds libseccomp: Update to main branch systemd: Fix libseccomp testcase involving __NR_ppoll util-linux: Fix signature of close_range() gpgme: Use glibc provided closefrom API when available Lee Chee Yang (1): qemu: fix CVE-2021-3527 Marek Vasut (2): pulseaudio: Drop pulseaudio-conf update-rc.d: update SRCREV to pull in fix for non-bash shell support Mark Hatle (1): populate_sdk_ext: Error if trying to generate an eSDK from a mulitconfig Max Krummenacher (1): xwayland: port packageconfig from xserver-xorg recipe Michael Halstead (1): releases: update to include 3.1.9 Michael Ho (1): sstate.bbclass: fix errors about read-only sstate mirrors Mike Crowe (1): licence_image: Add lic-pkgs IMAGE_FEATURE Mingli Yu (4): pulseaudio: check if NEON code can be compiled on arm perlcross: check the file if patched or not perl: correct libpth and glibpth parselogs.py: ignore rndr initialization failure Patrick Williams (1): docs: remove image-mklibs references Paul Barker (1): linux-yocto: Fix devupstream SRCREV assignment Peter Bergin (1): Revert "libubootenv: inherit uboot-config" Quentin Schulz (1): docs: replace remaining ``FOO`` by :term:`FOO` Ralph Siemsen (1): oeqa/manual/toaster: fix small typo Richard Purdie (26): package_pkgdata: Avoid task hash mismatches for generic task changes selftest/fetch: Avoid occasional selftest failure from poor temp file name choice kernel: Fix interaction when packaging disabled kernel-devicetree: Fix interaction when packaging disabled python3-pip/python3-pbr: Drop obsolete md5sum at upgrade oeqa/selftest/runcmd: Tweal test timeouts bash: Fix a rare make race build failure sstate/staging: Handle directory creation race issue oeqa/selftest/archiver: Allow tests to ignore empty directories dwarfsrcfiles: Avoid races over debug-link files oeqa/selftest/multiprocesslauch: Fix test race runqemu: Remove potential lock races around tap device handling glibc-testsuite: Fix build failures when directly running recipe license: Drop adding RRECOMMENDS for license packages report-error: Drop pointless inherit pseudo: Add uninative configuration sanity check pseudo: Update to latest version including statx fix sstate: Drop pseudo exclusion oeqa/qemurunner: Handle files no longer existing gracefully python3: Add a fix for a make install race Add README link to README.poky README.OE-Core/README.qemu: Move to markdown format bitbake: data_smart/parse: Allow ':' characters in variable/function names zstd: Include pzstd in the build buildtools-tarball: Add lz4 and ztsd (including pzstd) build-appliance-image: Update to master head revision Ross Burton (29): glibc: backport MTE improvements from master glibc: re-enable memory tagging libgudev: fix SRC_URI cantarell-fonts: fix SRC_URI shadow: generate alternative links for chfn and chsh util-linux: build chfn and chsh util-linux: add missing ptest dependencies util-linux: backport test suite fixes util-linux: rewrite the ptest integration glib-2.0: fix g-file-into modification time test oeqa/selftest/recipetool: update socat version to fix failing download parted: improve ptest execution tcl: suffix all Tcl man pages instead of using alternatives tcl: EXTRA_OECONF already passes --libdir, don't do it again tcl: mark a patch as upstreamable tcl: use tcl-core instead of patching out packages tcl: use AUTOTOOLS_SCRIPT_PATH tcl: remove redundant file creation tcl: detect tests that error as well as fail tcl: clock.test needs a timezone to be set tcl: fix race in interp.test parted: remove obsolete patch parted: fix ptest RRECOMMENDS busybox: support mounting swap via labels meta: remove redundant ${libdir}/cmake from FILES_${PN}-dev cups: update to 2.3.3op2 parted: skip tests that need vfat support avahi: fix CVE-2021-36217, crash on pinging '.local' parted: add device mappper PACKAGECONFIG Sakib Sajal (3): buildstats.bbclass: log host data on failure to task specific file oe-time-dd-test.sh: add options and refactor scripts/oe-time-dd-test.sh: run "uptime" on each iteration Saul Wold (4): qemurunner: Add info log for qemu startup oeqa/qemurunner: add support qmp cmd args oeqa/dump.py: Add support for QMP command arguments testimage.bbclass: Add dump-guest-memory cmd Scott Weaver (1): meta-skeleton: update to satisfy yocto-check-layer tests Tim Orling (6): python3-importlib-metadata: upgrade 4.5.0 -> 4.6.0 python3-packaging: upgrade 20.9 -> 21.0 python3-hypothesis: upgrade 6.14.0 -> 6.14.1 python3-zipp: upgrade 3.4.1 -> 3.5.0 at-spi2-core: upgrade 2.40.2 -> 2.40.3 python3-hypothesis: upgrade 6.14.1 -> 6.14.3 Tony Tascioglu (1): valgrind: skip flaky ptest fb_test_amd64 Trevor Gamblin (2): python3-pip: upgrade 20.0.2 -> 21.1.2 python3-pip: add multiprocessing to RDEPENDS Yi Zhao (1): libffi: disable use of static exec trampolines Zoltán Böszörményi (1): tzdata: Allow controlling zoneinfo binary format Zqiang (1): ifupdown: Skip wrong test item bkylerussell@gmail.com (1): gstreamer: add libgst packages to PACKAGES_DYNAMIC jbouchard (1): Use the label provided when formating a dos partition wangmy (19): libcap: upgrade 2.50 -> 2.51 libhandy: upgrade 1.2.2 -> 1.2.3 libva: upgrade 2.11.0 -> 2.12.0 libxcrypt: upgrade 4.4.22 -> 4.4.23 python3-numpy: upgrade 1.20.3 -> 1.21.0 python3-pbr: upgrade 5.4.4 -> 5.6.0 cmake: upgrade 3.20.4 -> 3.20.5 gpgme: upgrade 1.15.1 -> 1.16.0 libglu: upgrade 9.0.1 -> 9.0.2 stress-ng: upgrade 0.12.10 -> 0.12.11 xf86-input-libinput: upgrade 1.0.1 -> 1.1.0 vulkan-headers: upgrade 1.2.176 -> 1.2.182 vulkan-loader: upgrade 1.2.176 -> 1.2.182 vulkan-tools: upgrade 1.2.176 -> 1.2.182 gnome-desktop-testing: upgrade 2018.1 -> 2021.1 python3-importlib-metadata: upgrade 4.6.0 -> 4.6.1 u-boot: upgrade 2021.04 -> 2021.07 python3-setuptools: upgrade 57.0.0 -> 57.1.0 btrfs-tools: upgrade 5.12.1 -> 5.13 zangrc (1): python3-pip: upgrade 21.1.2 -> 21.1.3 zhengruoqin (3): libffi: upgrade 3.3 -> 3.4.2 python3: upgrade 3.9.5 -> 3.9.6 python3-pathlib2: upgrade 2.3.5 -> 2.3.6 Signed-off-by: Andrew Geissler Change-Id: If493204235c3a1ce4e7fe65438168512d17a900e --- poky/meta/lib/oe/package_manager/__init__.py | 8 +++--- .../meta/lib/oeqa/manual/toaster-managed-mode.json | 2 +- poky/meta/lib/oeqa/runtime/cases/parselogs.py | 1 + poky/meta/lib/oeqa/selftest/cases/archiver.py | 16 +++++------ poky/meta/lib/oeqa/selftest/cases/fetch.py | 27 ++++++++++--------- poky/meta/lib/oeqa/selftest/cases/oelib/utils.py | 3 +-- poky/meta/lib/oeqa/selftest/cases/recipetool.py | 2 +- poky/meta/lib/oeqa/selftest/cases/runcmd.py | 4 +-- poky/meta/lib/oeqa/targetcontrol.py | 2 ++ poky/meta/lib/oeqa/utils/dump.py | 23 ++++++++++++---- poky/meta/lib/oeqa/utils/qemurunner.py | 31 ++++++++++++++++------ 11 files changed, 74 insertions(+), 45 deletions(-) (limited to 'poky/meta/lib') diff --git a/poky/meta/lib/oe/package_manager/__init__.py b/poky/meta/lib/oe/package_manager/__init__.py index 4d22bc0296..de5916d7d8 100644 --- a/poky/meta/lib/oe/package_manager/__init__.py +++ b/poky/meta/lib/oe/package_manager/__init__.py @@ -344,10 +344,8 @@ class PackageManager(object, metaclass=ABCMeta): def install_complementary(self, globs=None): """ Install complementary packages based upon the list of currently installed - packages e.g. locales, *-dev, *-dbg, etc. This will only attempt to install - these packages, if they don't exist then no error will occur. Note: every - backend needs to call this function explicitly after the normal package - installation + packages e.g. locales, *-dev, *-dbg, etc. Note: every backend needs to + call this function explicitly after the normal package installation. """ if globs is None: globs = self.d.getVar('IMAGE_INSTALL_COMPLEMENTARY') @@ -398,7 +396,7 @@ class PackageManager(object, metaclass=ABCMeta): bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % ( ' '.join(install_pkgs), ' '.join(skip_pkgs))) - self.install(install_pkgs, attempt_only=True) + self.install(install_pkgs) except subprocess.CalledProcessError as e: bb.fatal("Could not compute complementary packages list. Command " "'%s' returned %d:\n%s" % diff --git a/poky/meta/lib/oeqa/manual/toaster-managed-mode.json b/poky/meta/lib/oeqa/manual/toaster-managed-mode.json index 38b396ab09..40eda6446d 100644 --- a/poky/meta/lib/oeqa/manual/toaster-managed-mode.json +++ b/poky/meta/lib/oeqa/manual/toaster-managed-mode.json @@ -136,7 +136,7 @@ "expected_results": "" }, "3": { - "action": "Check that default values are as follows: \n\tDISTRO - poky \n\tIMAGE_FSTYPES - ext3 jffs2 tar.bz2 \n\tIMAGE_INSTALL_append - \"Not set\" \n\tPACKAGE_CLASES - package_rpm \n SSTATE_DIR - /homeDirectory/poky/sstate-cache \n\n", + "action": "Check that default values are as follows: \n\tDISTRO - poky \n\tIMAGE_FSTYPES - ext3 jffs2 tar.bz2 \n\tIMAGE_INSTALL_append - \"Not set\" \n\tPACKAGE_CLASSES - package_rpm \n SSTATE_DIR - /homeDirectory/poky/sstate-cache \n\n", "expected_results": "" }, "4": { diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py index 1bb0425521..73243c3659 100644 --- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py +++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py @@ -59,6 +59,7 @@ common_errors = [ "Failed to process device, ignoring: Device or resource busy", "Cannot find a map file", "[rdrand]: Initialization Failed", + "[rndr ]: Initialization Failed", "[pulseaudio] authkey.c: Failed to open cookie file", "[pulseaudio] authkey.c: Failed to load authentication key", ] diff --git a/poky/meta/lib/oeqa/selftest/cases/archiver.py b/poky/meta/lib/oeqa/selftest/cases/archiver.py index ddd08ecf84..0194ae9f69 100644 --- a/poky/meta/lib/oeqa/selftest/cases/archiver.py +++ b/poky/meta/lib/oeqa/selftest/cases/archiver.py @@ -35,11 +35,11 @@ class Archiver(OESelftestTestCase): src_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS']) # Check that include_recipe was included - included_present = len(glob.glob(src_path + '/%s-*' % include_recipe)) + included_present = len(glob.glob(src_path + '/%s-*/*' % include_recipe)) self.assertTrue(included_present, 'Recipe %s was not included.' % include_recipe) # Check that exclude_recipe was excluded - excluded_present = len(glob.glob(src_path + '/%s-*' % exclude_recipe)) + excluded_present = len(glob.glob(src_path + '/%s-*/*' % exclude_recipe)) self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % exclude_recipe) def test_archiver_filters_by_type(self): @@ -67,11 +67,11 @@ class Archiver(OESelftestTestCase): src_path_native = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS']) # Check that target_recipe was included - included_present = len(glob.glob(src_path_target + '/%s-*' % target_recipe)) + included_present = len(glob.glob(src_path_target + '/%s-*/*' % target_recipe)) self.assertTrue(included_present, 'Recipe %s was not included.' % target_recipe) # Check that native_recipe was excluded - excluded_present = len(glob.glob(src_path_native + '/%s-*' % native_recipe)) + excluded_present = len(glob.glob(src_path_native + '/%s-*/*' % native_recipe)) self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % native_recipe) def test_archiver_filters_by_type_and_name(self): @@ -104,17 +104,17 @@ class Archiver(OESelftestTestCase): src_path_native = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS']) # Check that target_recipe[0] and native_recipes[1] were included - included_present = len(glob.glob(src_path_target + '/%s-*' % target_recipes[0])) + included_present = len(glob.glob(src_path_target + '/%s-*/*' % target_recipes[0])) self.assertTrue(included_present, 'Recipe %s was not included.' % target_recipes[0]) - included_present = len(glob.glob(src_path_native + '/%s-*' % native_recipes[1])) + included_present = len(glob.glob(src_path_native + '/%s-*/*' % native_recipes[1])) self.assertTrue(included_present, 'Recipe %s was not included.' % native_recipes[1]) # Check that native_recipes[0] and target_recipes[1] were excluded - excluded_present = len(glob.glob(src_path_native + '/%s-*' % native_recipes[0])) + excluded_present = len(glob.glob(src_path_native + '/%s-*/*' % native_recipes[0])) self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % native_recipes[0]) - excluded_present = len(glob.glob(src_path_target + '/%s-*' % target_recipes[1])) + excluded_present = len(glob.glob(src_path_target + '/%s-*/*' % target_recipes[1])) self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % target_recipes[1]) diff --git a/poky/meta/lib/oeqa/selftest/cases/fetch.py b/poky/meta/lib/oeqa/selftest/cases/fetch.py index 67e85d3e4c..cd15f65129 100644 --- a/poky/meta/lib/oeqa/selftest/cases/fetch.py +++ b/poky/meta/lib/oeqa/selftest/cases/fetch.py @@ -55,25 +55,26 @@ MIRRORS_forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/so class Dependencies(OESelftestTestCase): - def write_recipe(self, content): - f = tempfile.NamedTemporaryFile(mode="wt", suffix=".bb") - f.write(content) - f.flush() + def write_recipe(self, content, tempdir): + f = os.path.join(tempdir, "test.bb") + with open(f, "w") as fd: + fd.write(content) return f def test_dependencies(self): """ Verify that the correct dependencies are generated for specific SRC_URI entries. """ - with bb.tinfoil.Tinfoil() as tinfoil: + + with bb.tinfoil.Tinfoil() as tinfoil, tempfile.TemporaryDirectory(prefix="selftest-fetch") as tempdir: tinfoil.prepare(config_only=False, quiet=2) r = """ LICENSE="CLOSED" SRC_URI="http://example.com/tarball.zip" """ - f = self.write_recipe(textwrap.dedent(r)) - d = tinfoil.parse_recipe_file(f.name) + f = self.write_recipe(textwrap.dedent(r), tempdir) + d = tinfoil.parse_recipe_file(f) self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends")) self.assertIn("unzip-native", d.getVarFlag("do_unpack", "depends")) @@ -82,8 +83,8 @@ class Dependencies(OESelftestTestCase): LICENSE="CLOSED" SRC_URI="https://example.com/tarball;downloadfilename=something.zip" """ - f = self.write_recipe(textwrap.dedent(r)) - d = tinfoil.parse_recipe_file(f.name) + f = self.write_recipe(textwrap.dedent(r), tempdir) + d = tinfoil.parse_recipe_file(f) self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends")) self.assertIn("unzip-native", d.getVarFlag("do_unpack", "depends") or "") @@ -91,8 +92,8 @@ class Dependencies(OESelftestTestCase): LICENSE="CLOSED" SRC_URI="ftp://example.com/tarball.lz" """ - f = self.write_recipe(textwrap.dedent(r)) - d = tinfoil.parse_recipe_file(f.name) + f = self.write_recipe(textwrap.dedent(r), tempdir) + d = tinfoil.parse_recipe_file(f) self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends")) self.assertIn("lzip-native", d.getVarFlag("do_unpack", "depends")) @@ -100,6 +101,6 @@ class Dependencies(OESelftestTestCase): LICENSE="CLOSED" SRC_URI="git://example.com/repo" """ - f = self.write_recipe(textwrap.dedent(r)) - d = tinfoil.parse_recipe_file(f.name) + f = self.write_recipe(textwrap.dedent(r), tempdir) + d = tinfoil.parse_recipe_file(f) self.assertIn("git-native", d.getVarFlag("do_fetch", "depends")) diff --git a/poky/meta/lib/oeqa/selftest/cases/oelib/utils.py b/poky/meta/lib/oeqa/selftest/cases/oelib/utils.py index a7214beb4c..bbf67bf9c9 100644 --- a/poky/meta/lib/oeqa/selftest/cases/oelib/utils.py +++ b/poky/meta/lib/oeqa/selftest/cases/oelib/utils.py @@ -64,7 +64,7 @@ class TestMultiprocessLaunch(TestCase): import bb def testfunction(item, d): - if item == "2" or item == "1": + if item == "2": raise KeyError("Invalid number %s" % item) return "Found %s" % item @@ -99,5 +99,4 @@ class TestMultiprocessLaunch(TestCase): # Assert the function prints exceptions with captured_output() as (out, err): self.assertRaises(bb.BBHandledException, multiprocess_launch, testfunction, ["1", "2", "3", "4", "5", "6"], d, extraargs=(d,)) - self.assertIn("KeyError: 'Invalid number 1'", out.getvalue()) self.assertIn("KeyError: 'Invalid number 2'", out.getvalue()) diff --git a/poky/meta/lib/oeqa/selftest/cases/recipetool.py b/poky/meta/lib/oeqa/selftest/cases/recipetool.py index 9d56e9e1e3..f0685d3718 100644 --- a/poky/meta/lib/oeqa/selftest/cases/recipetool.py +++ b/poky/meta/lib/oeqa/selftest/cases/recipetool.py @@ -374,7 +374,7 @@ class RecipetoolTests(RecipetoolBase): # Try adding a recipe temprecipe = os.path.join(self.tempdir, 'recipe') os.makedirs(temprecipe) - pv = '1.7.3.0' + pv = '1.7.4.1' srcuri = 'http://www.dest-unreach.org/socat/download/socat-%s.tar.bz2' % pv result = runCmd('recipetool create %s -o %s' % (srcuri, temprecipe)) dirlist = os.listdir(temprecipe) diff --git a/poky/meta/lib/oeqa/selftest/cases/runcmd.py b/poky/meta/lib/oeqa/selftest/cases/runcmd.py index fa6113d7fa..e9612389fe 100644 --- a/poky/meta/lib/oeqa/selftest/cases/runcmd.py +++ b/poky/meta/lib/oeqa/selftest/cases/runcmd.py @@ -27,8 +27,8 @@ class RunCmdTests(OESelftestTestCase): # The delta is intentionally smaller than the timeout, to detect cases where # we incorrectly apply the timeout more than once. - TIMEOUT = 5 - DELTA = 3 + TIMEOUT = 10 + DELTA = 8 def test_result_okay(self): result = runCmd("true") diff --git a/poky/meta/lib/oeqa/targetcontrol.py b/poky/meta/lib/oeqa/targetcontrol.py index 005ebaa7f3..1fdff82889 100644 --- a/poky/meta/lib/oeqa/targetcontrol.py +++ b/poky/meta/lib/oeqa/targetcontrol.py @@ -152,6 +152,8 @@ class QemuTarget(BaseTarget): self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner) + if (self.monitor_dumper): + self.monitor_dumper.create_dir("qmp") def deploy(self): bb.utils.mkdirhier(self.testdir) diff --git a/poky/meta/lib/oeqa/utils/dump.py b/poky/meta/lib/oeqa/utils/dump.py index 843e19fe8a..bb067f4846 100644 --- a/poky/meta/lib/oeqa/utils/dump.py +++ b/poky/meta/lib/oeqa/utils/dump.py @@ -18,6 +18,7 @@ class BaseDumper(object): # Some testing doesn't inherit testimage, so it is needed # to set some defaults. self.parent_dir = parent_dir + self.dump_dir = parent_dir dft_cmds = """ top -bn1 iostat -x -z -N -d -p ALL 20 2 ps -ef @@ -47,7 +48,7 @@ class BaseDumper(object): raise err self.dump_dir = dump_dir - def _write_dump(self, command, output): + def _construct_filename(self, command): if isinstance(self, HostDumper): prefix = "host" elif isinstance(self, TargetDumper): @@ -61,6 +62,10 @@ class BaseDumper(object): fullname = os.path.join(self.dump_dir, filename) if not os.path.exists(fullname): break + return fullname + + def _write_dump(self, command, output): + fullname = self._construct_filename(command) if isinstance(self, MonitorDumper): with open(fullname, 'w') as json_file: json.dump(output, json_file, indent=4) @@ -117,8 +122,16 @@ class MonitorDumper(BaseDumper): if dump_dir: self.dump_dir = dump_dir for cmd in self.cmds: + cmd_name = cmd.split()[0] try: - output = self.runner.run_monitor(cmd) - self._write_dump(cmd, output) - except: - print("Failed to dump QMP CMD: %s" % (cmd)) + if len(cmd.split()) > 1: + cmd_args = cmd.split()[1] + if "%s" in cmd_args: + filename = self._construct_filename(cmd_name) + cmd_data = json.loads(cmd_args % (filename)) + output = self.runner.run_monitor(cmd_name, cmd_data) + else: + output = self.runner.run_monitor(cmd_name) + self._write_dump(cmd_name, output) + except Exception as e: + print("Failed to dump QMP CMD: %s with\nExecption: %s" % (cmd_name, e)) diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py index abbc7f7d1f..5c9d2b24a3 100644 --- a/poky/meta/lib/oeqa/utils/qemurunner.py +++ b/poky/meta/lib/oeqa/utils/qemurunner.py @@ -236,6 +236,7 @@ class QemuRunner: # to be a proper fix but this will suffice for now. self.runqemu = subprocess.Popen(launch_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, preexec_fn=os.setpgrp, env=env, cwd=self.tmpdir) output = self.runqemu.stdout + launch_time = time.time() # # We need the preexec_fn above so that all runqemu processes can easily be killed @@ -339,6 +340,10 @@ class QemuRunner: try: self.qmp.connect() + connect_time = time.time() + self.logger.info("QMP connected to QEMU at %s and took %s seconds" % + (time.strftime("%D %H:%M:%S"), + time.time() - launch_time)) except OSError as msg: self.logger.warning("Failed to connect qemu monitor socket: %s File: %s" % (msg, msg.filename)) return False @@ -354,19 +359,25 @@ class QemuRunner: mapdir = "/proc/" + str(self.qemupid) + "/map_files/" try: for f in os.listdir(mapdir): - linktarget = os.readlink(os.path.join(mapdir, f)) - if not linktarget.startswith("/") or linktarget.startswith("/dev") or "deleted" in linktarget: + try: + linktarget = os.readlink(os.path.join(mapdir, f)) + if not linktarget.startswith("/") or linktarget.startswith("/dev") or "deleted" in linktarget: + continue + with open(linktarget, "rb") as readf: + data = True + while data: + data = readf.read(4096) + except FileNotFoundError: continue - with open(linktarget, "rb") as readf: - data = True - while data: - data = readf.read(4096) # Centos7 doesn't allow us to read /map_files/ except PermissionError: pass # Release the qemu process to continue running self.run_monitor('cont') + self.logger.info("QMP released QEMU at %s and took %s seconds from connect" % + (time.strftime("%D %H:%M:%S"), + time.time() - connect_time)) # We are alive: qemu is running out = self.getOutput(output) @@ -594,8 +605,12 @@ class QemuRunner: return True return False - def run_monitor(self, command, timeout=60): - return self.qmp.cmd(command) + def run_monitor(self, command, args=None, timeout=60): + if hasattr(self, 'qmp') and self.qmp: + if args is not None: + return self.qmp.cmd(command, args) + else: + return self.qmp.cmd(command) def run_serial(self, command, raw=False, timeout=60): # We assume target system have echo to get command status -- cgit v1.2.3