poky: subtree update:a35bf0e5d3..b66b9f7548
backport:
meson 0.54.2: backport upstream patch for boost libs
Adrian Bunk (1):
libubootenv: Remove the DEPENDS on mtd-utils
Alex Kiernan (2):
openssh: Upgrade 8.2p1 -> 8.3p1
systemd: upgrade v245.5 -> v245.6
Alexander Kanavin (68):
btrfs-tools: upgrade 5.4.1 -> 5.6.1
build-compare: upgrade to latest revision
ccache: upgrade 3.7.7 -> 3.7.9
createrepo-c: upgrade 0.15.7 -> 0.15.10
dpkg: upgrade 1.19.7 -> 1.20.0
librepo: upgrade 1.11.2 -> 1.11.3
python3-numpy: upgrade 1.18.3 -> 1.18.4
python3-cython: upgrade 0.29.16 -> 0.29.19
python3-gitdb: upgrade 4.0.4 -> 4.0.5
python3-mako: upgrade 1.1.1 -> 1.1.3
python3-pygments: upgrade 2.5.2 -> 2.6.1
python3-smmap: upgrade 2.0.5 -> 3.0.4
python3-subunit: upgrade 1.3.0 -> 1.4.0
python3-testtools: upgrade 2.3.0 -> 2.4.0
python3: upgrade 3.8.2 -> 3.8.3
strace: upgrade 5.5 -> 5.6
vala: upgrade 0.46.6 -> 0.48.6
cups: upgrade 2.3.1 -> 2.3.3
gawk: upgrade 5.0.1 -> 5.1.0
libsolv: upgrade 0.7.10 -> 0.7.14
man-pages: upgrade 5.05 -> 5.06
msmtp: upgrade 1.8.8 -> 1.8.10
stress-ng: upgrade 0.11.01 -> 0.11.12
stress-ng: mark as incompatible with musl
sudo: upgrade 1.8.31 -> 1.9.0
adwaita-icon-theme: upgrade 3.34.3 -> 3.36.1
gtk+3: upgrade 3.24.14 -> 3.24.20
cogl-1.0: upgrade 1.22.4 -> 1.22.6
mesa: upgrade 20.0.2 -> 20.0.7
mesa: merge the .bb content into .inc
piglit: upgrade to latest revision
waffle: upgrade 1.6.0 -> 1.6.1
pixman: upgrade 0.38.4 -> 0.40.0
kmod: upgrade 26 -> 27
powertop: upgrade 2.10 -> 2.12
alsa-plugins: upgrade 1.2.1 -> 1.2.2
alsa-tools: upgrade 1.1.7 -> 1.2.2
alsa-utils: split the content into .inc
alsa-topology/ucm-conf: update to 1.2.2
x264: upgrade to latest revision
puzzles: upgrade to latest revision
libcap: upgrade 2.33 -> 2.34
libical: upgrade 3.0.7 -> 3.0.8
libunwind: upgrade 1.3.1 -> 1.4.0
rng-tools: upgrade 6.9 -> 6.10
babeltrace: correct the git SRC_URI
libexif: update to 0.6.22
ppp: update 2.4.7 -> 2.4.8
gettext: update 0.20.1 -> 0.20.2
ptest-runner: fix upstream version check
automake: 1.16.1 -> 1.16.2
bison: 3.5.4 -> 3.6.2
cmake: update 3.16.5 -> 3.17.3
gnu-config: update to latest revision
jquery: update to 3.5.1
json-c: update 0.13.1 - > 0.14
libmodulemd: update 2.9.2 -> 2.9.4
meson: upgrade 0.53.2 -> 0.54.2
shared-mime-info: fix upstream version check
mpg123: fix upstream version check
ethtool: upgrade 5.4 -> 5.6
libcpre2: update 10.34 -> 10.35
help2man-native: update to 1.47.15
apt: update to 1.8.2.1
asciidoc: bump PV to 8.6.10
pulseaudio: exclude pre-releases from version checks
xinetd: switch to a maintained opensuse fork
lz4: disable static library
Andreas Müller (1):
vte: Pack ${libexecdir}/vte-urlencode-cwd to vte-prompt
Anuj Mittal (1):
linux-yocto: bump genericx86 kernel version to v5.4.40
Bruce Ashfield (5):
linux-yocto/5.4: update to v5.4.42
linux-yocto-rt/5.4: update to rt24
linux-yocto/5.4: temporarily revert IKHEADERS in standard kernels
linux-yocto: gather reproducibility configs into a fragment
linux-yocto/5.4: update to v5.4.43
Christian Eggers (2):
librsvg: Extend for nativesdk
tiff: Extend for nativesdk
Hongxu Jia (1):
rpm: fix rpm -Kv xxx.rpm failed if signature header is larger than 64KB
Jacob Kroon (1):
bitbake: doc: More explanation to tasks that recursively depend on themselves
Jan Luebbe (1):
classes/buildhistory: capture package config
Jens Rehsack (2):
initscripts/init-system-helpers: fix mountnfs.sh dependency
init-system-helpers: avoid superfluous update-rc.d
Joshua Watt (2):
layer.conf: Bump OE-Core layer version
wic: Add --offset argument for partitions
Junling Zheng (3):
buildstats.bbclass: Remove useless variables
buildstats.bbclass: Do not recalculate build start time
security_flags: Remove stack protector flag from LDFLAGS
Kai Kang (1):
bitbake: bitbake-user-manual-metadata.xml: fix a minor error
Khem Raj (4):
make-mod-scripts: Fix a rare build race condition
go-1.14: Update to 1.14.3 minor release
armv8/tunes: Set TUNE_PKGARCH_64 based on ARMPKGARCH
ltp: Disable sigwaitinfo tests relying on undefined behavior
Konrad Weihmann (8):
qemurunner: fix ip fallback detection
sysfsutils: rem leftover settings for libsysfs-dev
debianutils: whitespace fixes
libjpeg-turbo: whitespace fixes
cairo: remove trailing whitespace
gtk-doc: remove trailing whitespace
libxt: fix whitespaces
cogl: point to correct HOMEPAGE
Lee Chee Yang (4):
re2c: fix CVE-2020-11958
bind: fix CVE-2020-8616/7
glib-2.0: 2.64.2 -> 2.64.3
glib-networking: 2.64.2 -> 2.64.3
Marco Felsch (1):
util-linux: alternatify rtcwake
Mark Hatle (1):
sstate.bbclass: When siginfo or sig files are missing, stop fetcher errors
Martin Jansa (6):
devtool: use -f and don't use --exclude-standard when adding files to workspace
meta-selftest: add test of .gitignore in tarball
lib/oe/patch: prevent applying patches without any subject
lib/oe/patch: GitApplyTree: save 1 echo in commit-msg hook
Revert "lib/oe/patch: fix handling of patches with no header"
meta-selftest: add test for .patch file with long filename and without subject
Mauro Queirós (3):
bitbake: git.py: skip smudging if lfs=0 is set
bitbake: git.py: LFS bitbake note should not be printed if need_lfs is not set.
bitbake: git.py: Use the correct branch to check if the repository has LFS objects.
Ming Liu (2):
u-boot.inc: fix some inconsistent coding style
u-boot: introduce UBOOT_INITIAL_ENV
Paul Barker (5):
archiver: Fix test case for srpm archiver mode
oe-selftest: Allow overriding the build directory used for tests
oe-selftest: Support verbose log output
oe-selftest: Recursively patch test case paths
bitbake: fetch2: Add the ability to list expanded URL data
Peter Kjellerstedt (1):
cairo: Do not try to remove nonexistent directories
Pierre-Jean Texier (1):
diffoscope: upgrade 144 -> 146
Ralph Siemsen (1):
cve-check: include epoch in product version output
Richard Purdie (7):
lib/classextend: Drop unneeded comment
poky.ent: Update UBUNTU_HOST_PACKAGES_ESSENTIAL to match recent changes
maintainers: Update Ross' email address
logrotate: Drop obsolete setting/comment
oeqa/targetcontrol: Rework exception handling to avoid warnings
patchelf: Add patch to address corrupt shared library issue
poky.ent: Update XXX_HOST_PACKAGES_ESSENTIAL to include mesa for other distros
Robert P. J. Day (1):
bitbake.conf: Remove unused DEPLOY_DIR_TOOLS variable
Tim Orling (1):
bitbake: toaster-requirements.txt: require Django 2.2
Trevor Gamblin (1):
qemuarm: check serial consoles vs /proc/consoles
Wang Mingyu (13):
less: upgrade 551 -> 562
liburcu: upgrade 0.12.0 -> 0.12.1
alsa-lib: upgrade 1.2.1.2 -> 1.2.2
alsa-utils: upgrade 1.2.1 -> 1.2.2
python3-six: upgrade 1.14.0 -> 1.15.0
util-linux: upgrade 2.35.1 -> 2.35.2
xf86-input-libinput: upgrade 0.29.0 -> 0.30.0
ca-certificates: upgrade 20190110 -> 20200601
dbus: upgrade 1.12.16 -> 1.12.18
libyaml: upgrade 0.2.4 -> 0.2.5
sqlite: upgrade 3.31.1 -> 3.32.1
valgrind: upgrade 3.15.0 -> 3.16.0
dbus-test: upgrade 1.12.16 -> 1.12.18
akuster (2):
poky.ent: Update OPENSUSE_HOST_PACKAGES_ESSENTIAL to include mesa-dri-devel
yocto-docs: Add SPDX headers in scripts and Makefile
hongxu (1):
core-image-minimal-initramfs: keep restriction with initramfs-module-install
zangrc (3):
python3-pycairo:upgrade 1.19.0 -> 1.19.1
python3-pygobject:upgrade 3.34.0 -> 3.36.1
python3-setuptools:upgrade 45.2.0 -> 47.1.1
zhengruoqin (2):
gdb: upgrade 9.1 -> 9.2
libyaml: upgrade 0.2.2 -> 0.2.4
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I60e616be0c30904f8cfc947089ed2e4f5e84bc60
diff --git a/poky/meta/lib/oeqa/core/context.py b/poky/meta/lib/oeqa/core/context.py
index 4705d60..7d3fa3b 100644
--- a/poky/meta/lib/oeqa/core/context.py
+++ b/poky/meta/lib/oeqa/core/context.py
@@ -156,6 +156,8 @@
fh = logging.FileHandler(args.output_log)
fh.setFormatter(formatter)
logger.addHandler(fh)
+ if getattr(args, 'verbose', False):
+ logger.setLevel('DEBUG')
return logger
diff --git a/poky/meta/lib/oeqa/runtime/cases/apt.py b/poky/meta/lib/oeqa/runtime/cases/apt.py
index c5378d9..53745df 100644
--- a/poky/meta/lib/oeqa/runtime/cases/apt.py
+++ b/poky/meta/lib/oeqa/runtime/cases/apt.py
@@ -34,7 +34,7 @@
def setup_source_config_for_package_install(self):
apt_get_source_server = 'http://%s:%s/' % (self.tc.target.server_ip, self.repo_server.port)
apt_get_sourceslist_dir = '/etc/apt/'
- self.target.run('cd %s; echo deb %s ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
+ self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
def cleanup_source_config_for_package_install(self):
apt_get_sourceslist_dir = '/etc/apt/'
diff --git a/poky/meta/lib/oeqa/selftest/cases/archiver.py b/poky/meta/lib/oeqa/selftest/cases/archiver.py
index 606eaab..bc5447d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/archiver.py
+++ b/poky/meta/lib/oeqa/selftest/cases/archiver.py
@@ -126,6 +126,7 @@
features = 'INHERIT += "archiver"\n'
features += 'ARCHIVER_MODE[srpm] = "1"\n'
+ features += 'PACKAGE_CLASSES = "package_rpm"\n'
self.write_config(features)
bitbake('-n core-image-sato')
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index 5886862..7d8f895 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -676,7 +676,7 @@
bbclassextended = False
inheritnative = False
- testrecipes = 'mtools-native apt-native desktop-file-utils-native'.split()
+ testrecipes = 'cdrtools-native mtools-native apt-native desktop-file-utils-native'.split()
for testrecipe in testrecipes:
checkextend = 'native' in (get_bb_var('BBCLASSEXTEND', testrecipe) or '').split()
if not bbclassextended:
@@ -1108,6 +1108,59 @@
('??', '.*/0001-Add-new-file.patch$')]
self._check_repo_status(os.path.dirname(recipefile), expected_status)
+ def test_devtool_update_recipe_with_gitignore(self):
+ # First, modify the recipe
+ testrecipe = 'devtool-test-ignored'
+ bb_vars = get_bb_vars(['FILE'], testrecipe)
+ recipefile = bb_vars['FILE']
+ patchfile = os.path.join(os.path.dirname(recipefile), testrecipe, testrecipe + '.patch')
+ newpatchfile = os.path.join(os.path.dirname(recipefile), testrecipe, testrecipe + '.patch.expected')
+ tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+ self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ # (don't bother with cleaning the recipe on teardown, we won't be building it)
+ result = runCmd('devtool modify %s' % testrecipe)
+ self.add_command_to_tearDown('cd %s; rm %s/*; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, testrecipe, os.path.basename(recipefile)))
+ result = runCmd('devtool finish --force-patch-refresh %s meta-selftest' % testrecipe)
+ # Check recipe got changed as expected
+ with open(newpatchfile, 'r') as f:
+ desiredlines = f.readlines()
+ with open(patchfile, 'r') as f:
+ newlines = f.readlines()
+ # Ignore the initial lines, because oe-selftest creates own meta-selftest repo
+ # which changes the metadata subject which is added into the patch, but keep
+ # .patch.expected as it is in case someone runs devtool finish --force-patch-refresh
+ # devtool-test-ignored manually, then it should generate exactly the same .patch file
+ self.assertEqual(desiredlines[5:], newlines[5:])
+
+ def test_devtool_update_recipe_long_filename(self):
+ # First, modify the recipe
+ testrecipe = 'devtool-test-long-filename'
+ bb_vars = get_bb_vars(['FILE'], testrecipe)
+ recipefile = bb_vars['FILE']
+ patchfilename = '0001-I-ll-patch-you-only-if-devtool-lets-me-to-do-it-corr.patch'
+ patchfile = os.path.join(os.path.dirname(recipefile), testrecipe, patchfilename)
+ newpatchfile = os.path.join(os.path.dirname(recipefile), testrecipe, patchfilename + '.expected')
+ tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+ self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ # (don't bother with cleaning the recipe on teardown, we won't be building it)
+ result = runCmd('devtool modify %s' % testrecipe)
+ self.add_command_to_tearDown('cd %s; rm %s/*; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, testrecipe, os.path.basename(recipefile)))
+ result = runCmd('devtool finish --force-patch-refresh %s meta-selftest' % testrecipe)
+ # Check recipe got changed as expected
+ with open(newpatchfile, 'r') as f:
+ desiredlines = f.readlines()
+ with open(patchfile, 'r') as f:
+ newlines = f.readlines()
+ # Ignore the initial lines, because oe-selftest creates own meta-selftest repo
+ # which changes the metadata subject which is added into the patch, but keep
+ # .patch.expected as it is in case someone runs devtool finish --force-patch-refresh
+ # devtool-test-ignored manually, then it should generate exactly the same .patch file
+ self.assertEqual(desiredlines[5:], newlines[5:])
+
def test_devtool_update_recipe_local_files_3(self):
# First, modify the recipe
testrecipe = 'devtool-test-localonly'
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index c8765e5..9e7be61 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -790,41 +790,50 @@
tempf.write("part " \
"--source rootfs --ondisk hda --align 4 --fixed-size %d "
"--fstype=ext4\n" % size)
+
+ return wkspath
+
+ def _get_wic_partitions(self, wkspath, native_sysroot=None, ignore_status=False):
+ p = runCmd("wic create %s -e core-image-minimal -o %s" % (wkspath, self.resultdir),
+ ignore_status=ignore_status)
+
+ if p.status:
+ return (p, None)
+
wksname = os.path.splitext(os.path.basename(wkspath))[0]
- return wkspath, wksname
-
- def test_fixed_size(self):
- """
- Test creation of a simple image with partition size controlled through
- --fixed-size flag
- """
- wkspath, wksname = Wic2._make_fixed_size_wks(200)
-
- runCmd("wic create %s -e core-image-minimal -o %s" \
- % (wkspath, self.resultdir))
- os.remove(wkspath)
wicout = glob(self.resultdir + "%s-*direct" % wksname)
- self.assertEqual(1, len(wicout))
+
+ if not wicout:
+ return (p, None)
wicimg = wicout[0]
- native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
+ if not native_sysroot:
+ native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
# verify partition size with wic
- res = runCmd("parted -m %s unit mib p 2>/dev/null" % wicimg,
+ res = runCmd("parted -m %s unit kib p 2>/dev/null" % wicimg,
native_sysroot=native_sysroot)
# parse parted output which looks like this:
# BYT;\n
# /var/tmp/wic/build/tmpfwvjjkf_-201611101222-hda.direct:200MiB:file:512:512:msdos::;\n
# 1:0.00MiB:200MiB:200MiB:ext4::;\n
- partlns = res.output.splitlines()[2:]
+ return (p, res.output.splitlines()[2:])
- self.assertEqual(1, len(partlns),
- msg="Partition list '%s'" % res.output)
- self.assertEqual("1:0.00MiB:200MiB:200MiB:ext4::;", partlns[0],
- msg="Partition list '%s'" % res.output)
+ def test_fixed_size(self):
+ """
+ Test creation of a simple image with partition size controlled through
+ --fixed-size flag
+ """
+ wkspath = Wic2._make_fixed_size_wks(200)
+ _, partlns = self._get_wic_partitions(wkspath)
+ os.remove(wkspath)
+
+ self.assertEqual(partlns, [
+ "1:4.00kiB:204804kiB:204800kiB:ext4::;",
+ ])
def test_fixed_size_error(self):
"""
@@ -832,13 +841,72 @@
--fixed-size flag. The size of partition is intentionally set to 1MiB
in order to trigger an error in wic.
"""
- wkspath, wksname = Wic2._make_fixed_size_wks(1)
-
- self.assertEqual(1, runCmd("wic create %s -e core-image-minimal -o %s" \
- % (wkspath, self.resultdir), ignore_status=True).status)
+ wkspath = Wic2._make_fixed_size_wks(1)
+ p, _ = self._get_wic_partitions(wkspath, ignore_status=True)
os.remove(wkspath)
- wicout = glob(self.resultdir + "%s-*direct" % wksname)
- self.assertEqual(0, len(wicout))
+
+ self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
+
+ def test_offset(self):
+ native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are placed at the correct offsets, default KB
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32 --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102432 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.0kiB:102432kiB:102400kiB:ext4:primary:;",
+ "2:102432kiB:204832kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are placed at the correct offsets, same with explicit KB
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32K --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102432K --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.0kiB:102432kiB:102400kiB:ext4:primary:;",
+ "2:102432kiB:204832kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are placed at the correct offsets using MB
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32K --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 101M --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+ self.assertEqual(partlns, [
+ "1:32.0kiB:102432kiB:102400kiB:ext4:primary:;",
+ "2:103424kiB:205824kiB:102400kiB:ext4:primary:;",
+ ])
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that image creation fails if the partitions would overlap
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 32 --fixed-size 100M --fstype=ext4\n" \
+ "part /bar --ondisk hda --offset 102431 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ p, _ = self._get_wic_partitions(tempf.name, ignore_status=True)
+ self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
+
+ with NamedTemporaryFile("w", suffix=".wks") as tempf:
+ # Test that partitions are not allowed to overlap with the booloader
+ tempf.write("bootloader --ptable gpt\n" \
+ "part / --source rootfs --ondisk hda --offset 8 --fixed-size 100M --fstype=ext4\n")
+ tempf.flush()
+
+ p, _ = self._get_wic_partitions(tempf.name, ignore_status=True)
+ self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
@only_for_arch(['i586', 'i686', 'x86_64'])
def test_rawcopy_plugin_qemu(self):
diff --git a/poky/meta/lib/oeqa/selftest/context.py b/poky/meta/lib/oeqa/selftest/context.py
index 48ec5d4..494e9db 100644
--- a/poky/meta/lib/oeqa/selftest/context.py
+++ b/poky/meta/lib/oeqa/selftest/context.py
@@ -10,6 +10,7 @@
import sys
import importlib
import subprocess
+import unittest
from random import choice
import oeqa
@@ -22,18 +23,22 @@
from oeqa.utils.commands import runCmd, get_bb_vars, get_test_layer
class OESelftestTestContext(OETestContext):
- def __init__(self, td=None, logger=None, machines=None, config_paths=None):
+ def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None):
super(OESelftestTestContext, self).__init__(td, logger)
self.machines = machines
self.custommachine = None
self.config_paths = config_paths
+ self.newbuilddir = newbuilddir
def setup_builddir(self, suffix, selftestdir, suite):
builddir = os.environ['BUILDDIR']
if not selftestdir:
selftestdir = get_test_layer()
- newbuilddir = builddir + suffix
+ if self.newbuilddir:
+ newbuilddir = os.path.join(self.newbuilddir, 'build' + suffix)
+ else:
+ newbuilddir = builddir + suffix
newselftestdir = newbuilddir + "/meta-selftest"
if os.path.exists(newbuilddir):
@@ -56,9 +61,9 @@
os.chdir(newbuilddir)
- for t in suite:
+ def patch_test(t):
if not hasattr(t, "tc"):
- continue
+ return
cp = t.tc.config_paths
for p in cp:
if selftestdir in cp[p] and newselftestdir not in cp[p]:
@@ -66,6 +71,15 @@
if builddir in cp[p] and newbuilddir not in cp[p]:
cp[p] = cp[p].replace(builddir, newbuilddir)
+ def patch_suite(s):
+ for x in s:
+ if isinstance(x, unittest.TestSuite):
+ patch_suite(x)
+ else:
+ patch_test(x)
+
+ patch_suite(suite)
+
return (builddir, newbuilddir)
def prepareSuite(self, suites, processes):
@@ -133,6 +147,8 @@
action='append', default=None,
help='Exclude all (unhidden) tests that match any of the specified tag(s). (exclude applies before select)')
+ parser.add_argument('-B', '--newbuilddir', help='New build directory to use for tests.')
+ parser.add_argument('-v', '--verbose', action='store_true')
parser.set_defaults(func=self.run)
def _get_available_machines(self):
@@ -187,6 +203,7 @@
self.tc_kwargs['init']['config_paths']['builddir'] = builddir
self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf")
self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf")
+ self.tc_kwargs['init']['newbuilddir'] = args.newbuilddir
def tag_filter(tags):
if args.exclude_tags:
diff --git a/poky/meta/lib/oeqa/targetcontrol.py b/poky/meta/lib/oeqa/targetcontrol.py
index 2aa548e..7bbba60 100644
--- a/poky/meta/lib/oeqa/targetcontrol.py
+++ b/poky/meta/lib/oeqa/targetcontrol.py
@@ -182,7 +182,10 @@
return self.runner.is_alive()
def stop(self):
- self.runner.stop()
+ try:
+ self.runner.stop()
+ except:
+ pass
self.logger.removeHandler(self.loggerhandler)
self.connection = None
self.ip = None
diff --git a/poky/meta/lib/oeqa/utils/commands.py b/poky/meta/lib/oeqa/utils/commands.py
index f167987..df373c4 100644
--- a/poky/meta/lib/oeqa/utils/commands.py
+++ b/poky/meta/lib/oeqa/utils/commands.py
@@ -351,10 +351,7 @@
finally:
targetlogger.removeHandler(handler)
- try:
- qemu.stop()
- except:
- pass
+ qemu.stop()
def updateEnv(env_file):
"""
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index 4b74337..992fff9 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -290,7 +290,7 @@
self.logger.debug("qemu cmdline used:\n{}".format(cmdline))
except (IndexError, ValueError):
# Try to get network configuration from runqemu output
- match = re.match(r'.*Network configuration: ([0-9.]+)::([0-9.]+):([0-9.]+)$.*',
+ match = re.match(r'.*Network configuration: (?:ip=)*([0-9.]+)::([0-9.]+):([0-9.]+)$.*',
out, re.MULTILINE|re.DOTALL)
if match:
self.ip, self.server_ip, self.netmask = match.groups()