subtree updates
meta-raspberrypi: 95a9103f91..92a9b7a012:
Michał Kluska (1):
rpi-base: Added missing HiFiBerry
meta-openembedded: 9f0e513211..a0237019f5:
Alexander Stein (1):
libkcapi: Update HOMEPAGE url
Changqing Li (4):
syslog-ng: upgrade 4.0.1 -> 4.6.0
multipath-tools: upgrade 0.9.3 -> 0.9.8
nodejs: upgrade 20.11.0 -> 20.11.1
postgresql: upgrade 15.5 -> 16.2
Joe Slater (1):
googletest: allow for shared libraries
Khem Raj (17):
python3-fastjsonschema: Add missing ptest deps
python3-gpiod: Tests rely on configfs support in kernel
python3-pyzmq: Add missing dep on python3-unixadmin for ptests
python3-betamax: Upgrade to 0.9.0
libgpiod: Tests rely on configfs support in kernel
keyutils: Add missing rdep for ptests
fuse3: Make kmod as a recommendation instead of rdep for ptests
drbd-utils: Disable warnings as errors
influxdb: Define GOPROXY
crucible: Define GOPROXY
syzkaller: Fix build with go 1.21
e2tools: Delete unneeded files from ptest package
ptest-packagelists-meta-oe: Move libgpiod out of PTESTS_PROBLEMS_META_OE
ptest-packagelists-meta-python: Move py3-libgpiod out of PTESTS_PROBLEMS_META_PYTHON
pgpool2: Upgrade to 4.5.1
pgpool2: Fix build with postgresql 16+
emacs: Add packageconfig for selinux support
Krupal Ka Patel (1):
python3-aiohappyeyeballs: Correct the typo of BBCLASSEXTEND
Markus Volk (3):
folks: update 0.15.6 -> 0.15.7
mozjs-115: update 115.6.0 -> 115.8.0
polkit: update 123 -> 124
Martin Jansa (3):
ristretto: use python3native and depend on glib-2.0-native, python3-packaging-native
xfce4-notifyd: use python3native and depend on python3-packaging-native
fuse3: use 4 spaces for indentation
Mingli Yu (1):
nlohmann-json: Upgrade to 3.11.3
Randolph Sapp (1):
glmark2: add upstream patch to not care about stencil config
Ulrich Ölmann (1):
signing.bbclass: fix typos
Xiangyu Chen (3):
iperf3: upgrade 3.15 -> 3.16
grpc: upgrade 1.60.0 -> 1.60.1
drbd-utils: upgrade 9.22.0 -> 9.27.0
Yi Zhao (7):
openipmi: fix do_configure error when using dash
cryptsetup: upgrade 2.6.1 -> 2.7.0
layer.conf: Add nativesdk-libdevmapper PREFERRED_RPROVIDER
krb5: upgrade 1.20.2 -> 1.21.2
postfix: upgrade 3.7.3 -> 3.8.5
openldap: upgrade 2.5.16 -> 2.6.7
openvpn: upgrade 2.6.7 -> 2.6.9
Yoann Congal (3):
drbd-utils: Drop a duplicated line in DESCRIPTION
drbd-utils: Fix a udev rule reproducibility
toybox-inittab: Fix serial getty reproducibility
alperak (9):
python3-google-auth: upgrade 2.28.0 -> 2.28.1
python3-netaddr: upgrade 0.10.1 -> 1.2.1 and add ptest
ptest-packagelists-meta-python: Move python3-xlrd from PTESTS_PROBLEMS_META_PYTHON to PTESTS_FAST_META_PYTHON
python3-wrapt: add ptest
python3-freezegun: add recipe and add ptest
python3-dateutil: upgrade 2.8.2 -> 2.9.0
python3-types-python-dateutil: add recipe
python3-arrow: add ptest, update backend and runtime dependencies
python3-marshmallow: upgrade 3.20.2 -> 3.21.1 and add ptest
poky: 25d60ac6f6..7165c23237:
Alexander Kanavin (48):
xz: correct upstream version check
python3-sphinxcontrib-jquery: add a recipe and make python3-sphinx-rtd-theme depend on it
acl: upgrade 2.3.1 -> 2.3.2
appstream: upgrade 1.0.0 -> 1.0.2
boost: upgrade 1.83.0 -> 1.84.0
btrfs-tools: upgrade 6.5.3 -> 6.7.1
dnf: upgrade 4.18.2 -> 4.19.0
diffoscope: upgrade 253 -> 259
ell: upgrade 0.62 -> 0.63
elfutils: upgrade 0.189 -> 0.191
epiphany: upgrade 45.1 -> 45.3
gettext: upgrade 0.22.4 -> 0.22.5
glib-2.0: upgrade 2.78.3 -> 2.78.4
glib-networking: upgrade 2.78.0 -> 2.78.1
kmscube: upgrade to latest revision
libbsd: upgrade 0.11.8 -> 0.12.1
libdnf: update 0.72.0 -> 0.73.0
libpciaccess: upgrade 0.17 -> 0.18
libpcre2: upgrade 10.42 -> 10.43
librepo: update 1.16.0 -> 1.17.0
libusb1: upgrade 1.0.26 -> 1.0.27
libxml2: upgrade 2.11.5 -> 2.12.5
linux-firmware: upgrade 20231211 -> 20240220
librsvg: upgrade 2.56.3 -> 2.57.1
lsof: upgrade 4.98.0 -> 4.99.3
man-pages: upgrade 6.05.01 -> 6.06
mc: upgrade 4.8.30 -> 4.8.31
mesa: upgrade 24.0.1 -> 24.0.2
minicom: upgrade 2.8 -> 2.9
nghttp2: upgrade 1.59.0 -> 1.60.0
orc: upgrade 0.4.37 -> 0.4.38
puzzles: upgrade to latest revision
piglit: upgrade to latest revision
python3-build: upgrade 1.0.3 -> 1.1.1
python3-dtschema: upgrade 2023.7 -> 2024.2
python3-jsonschema: upgrade 4.17.3 -> 4.21.1 and add new dependencies
python3-ruamel-yaml: upgrade 0.17.35 -> 0.18.6
python3-setuptools: upgrade 69.0.3 -> 69.1.1
python3-wcwidth: upgrade 0.2.12 -> 0.2.13
repo: upgrade 2.41 -> 2.42
shaderc: update 2023.7 -> 2023.8
systemd: upgrade 255.1 -> 255.4
ttyrun: upgrade 2.30.0 -> 2.31.0
taglib: upgrade 1.13.1 -> 2.0 and add utfcpp recipe to support that
update-rc.d: upgrade to latest revision
vala: upgrade 0.56.13 -> 0.56.15
vulkan: upgrade 1.3.268.0 -> 1.3.275.0
webkitgtk: upgrade 2.42.2 -> 2.42.5
Bruce Ashfield (3):
linux-yocto/cfg/6.6: drop CONFIG_DEBUG_CREDENTIALS
linux-yocto/6.6: update to v6.6.20
linux-yocto/6.6: update CVE exclusions
Changqing Li (3):
rxvt-unicode: Fix installing of terminfo
systemd: fix dead link /var/log/README
go: filter out build specific path from the linker flags
Chen Qi (2):
systemd: use RDEPENDS for systemd-vconsole-setup
systemd: remove systemd-bus-proxy settings
Christian Taedcke (1):
image_types.bbclass: fix vfat image names
Eilís 'pidge' Ní Fhlannagáin (6):
qemurunner.py: Fix error on calls to run_monitor
screenshot-tests: Add initial screenshot test png files for core-image-sato
oeqa/runtime/login: Proof of concept for screenshot testcases
oeqa/runtime/login: Exclude qemuriscv64
oeqa/runtime/login: Add screenshot sample logic/timeout/dbus-wait
sstatetests.py: Add testing for correct sstate permissions
Fabio Estevam (1):
u-boot: Move UBOOT_INITIAL_ENV back to u-boot.inc
Geoff Parker (1):
ref-manual: variables: adding multiple groups in GROUPADD_PARAM
Johan Bezem (1):
ref-manual: variables: correct sdk installation default path
Jose Quaresma (7):
go: rework patch to avoid identation
go: bump 1.21.0
goarch: disable dynamic linking globally
oeqa/gotoolchain: set GOPROXY
go: upgrade 1.21.0 -> 1.21.5
go: upgrade 1.21.5 -> 1.21.7
go: bump 1.22.0
Khem Raj (4):
mesa,mesa-gl: Fix build when dri3 is not enabled
linux-yocto: Enable gpio-sim with ptests
rust: Fix build failure re-appeared on riscv32
gdb: Upgrade 14.1 -> 14.2
Luca Ceresoli (2):
ref-manual: tasks: do_cleanall: recommend using '-f' instead
ref-manual: tasks: do_cleansstate: recommend using '-f' instead for a shared sstate
Markus Volk (1):
gtk+3: update 3.24.38 -> 3.24.41
Michael Opdenacker (4):
core-image-full-cmdline: add package-management
bitbake: utils: remove BB_ENV_PASSTHROUGH from preserved_envvars()
dev-manual: packages: fix capitalization
manuals: document VIRTUAL-RUNTIME variables
Randy MacLeod (1):
valgrind: skip intermittently failing ptests
Richard Purdie (9):
no-gplv3: Tweak for packagemangement in core-image-full-cmdline
qemu: Replace workaround with proper usermode fix for shmat
bitbake: fetch/git: Avoid clean upon failure
go: Further tweak indentation in patch
go: Drop linkmode with nativesdk/cross-canadian
libpng: Update SRC_URI to avoid redirects
oeqa/runtime/login: Various code improvements and fixes
oeqa/runtime/login: Mask out the mouse panel icon for now
oeqa/runtime/login: Fix dbus-wait timeout and loop conditional
Robert P. J. Day (1):
python3-cryptography_42.0.5.bb: delete redundant ptest packaging
Ross Burton (2):
Add genericarm64 MACHINE
rxvt: add rxvt to desktop entry name
Simone Weiß (4):
coreutils: backport patch to fix heap overflow in split
qemu: backport patch for ui/clipboard issue
ref-manual: classes: add cve status check for oe.qa
contributor-guide: add notes for tests
Tim Orling (1):
python3-hypothesis: upgrade 6.98.12 -> 6.98.15
Trevor Woerner (2):
bmaptool: now part of Yocto Project
dev-manual: bmaptool: rename
Yi Zhao (1):
expat: upgrdae 2.6.0 -> 2.6.1
Yoann Congal (1):
bitbake: prserv/serv: Fix a PID file removal race on prserv stop
Change-Id: Ie94e4df79e3d8f68aea3377f816d7106987a05f8
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/poky/meta/lib/oeqa/runtime/cases/login.py b/poky/meta/lib/oeqa/runtime/cases/login.py
new file mode 100644
index 0000000..e1bc60d
--- /dev/null
+++ b/poky/meta/lib/oeqa/runtime/cases/login.py
@@ -0,0 +1,116 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import shutil
+import subprocess
+import tempfile
+import time
+import os
+from datetime import datetime
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.runtime.decorator.package import OEHasPackage
+
+### Status of qemu images.
+# - runqemu qemuppc64 comes up blank. (skip)
+# - qemuarmv5 comes up with multiple heads but sending "head" to screendump.
+# seems to create a png with a bad header? (skip for now, but come back to fix)
+# - qemuriscv32 and qemuloongarch64 doesn't work with testimage apparently? (skip)
+# - qemumips64 is missing mouse icon.
+# - qemumips takes forever to render and is missing mouse icon.
+# - qemuarm and qemuppc are odd as they don't resize so we need to just set width.
+# - All images have home and screen flipper icons not always rendered fully at first.
+# the sleep seems to help this out some, depending on machine load.
+###
+
+class LoginTest(OERuntimeTestCase):
+ @OEHasPackage(['matchbox-desktop', 'dbus-wait'])
+ def test_screenshot(self):
+ if self.td.get('MACHINE') in ("qemuppc64", "qemuarmv5", "qemuriscv32", "qemuriscv64", "qemuloongarch64"):
+ self.skipTest("{0} is not currently supported.".format(self.td.get('MACHINE')))
+
+ pn = self.td.get('PN')
+
+ ourenv = os.environ.copy()
+ origpath = self.td.get("ORIGPATH")
+ if origpath:
+ ourenv['PATH'] = ourenv['PATH'] + ":" + origpath
+
+ for cmd in ["identify.im7", "convert.im7", "compare.im7"]:
+ try:
+ subprocess.check_output(["which", cmd], env=ourenv)
+ except subprocess.CalledProcessError:
+ self.skipTest("%s (from imagemagick) not available" % cmd)
+
+
+ # Store images so we can debug them if needed
+ saved_screenshots_dir = self.td.get('T') + "/saved-screenshots/"
+
+ ###
+ # This is a really horrible way of doing this but I've not found the
+ # right event to determine "The system is loaded and screen is rendered"
+ #
+ # Using dbus-wait for matchbox is the wrong answer because while it
+ # ensures the system is up, it doesn't mean the screen is rendered.
+ #
+ # Checking the qmp socket doesn't work afaik either.
+ #
+ # One way to do this is to do compares of known good screendumps until
+ # we either get expected or close to expected or we time out. Part of the
+ # issue here with that is that there is a very fine difference in the
+ # diff between a screendump where the icons haven't loaded yet and
+ # one where they won't load. I'll look at that next, but, for now, this.
+ #
+ # Which is ugly and I hate it but it 'works' for various definitions of
+ # 'works'.
+ ###
+ # RP: if the signal is sent before we run this, it will never be seen and we'd timeout
+ #status, output = self.target.run('dbus-wait org.matchbox_project.desktop Loaded')
+ #if status != 0 or "Timeout" in output:
+ # self.fail('dbus-wait failed (%s, %s). This could mean that the image never loaded the matchbox desktop.' % (status, output))
+
+ # Start taking screenshots every 2 seconds until diff=0 or timeout is 60 seconds
+ timeout = time.time() + 60
+ diff = True
+ with tempfile.NamedTemporaryFile(prefix="oeqa-screenshot-login", suffix=".png") as t:
+ while diff != 0 and time.time() < timeout:
+ time.sleep(2)
+ ret = self.target.runner.run_monitor("screendump", args={"filename": t.name, "format":"png"})
+
+ # Find out size of image so we can determine where to blank out clock.
+ # qemuarm and qemuppc are odd as it doesn't resize the window and returns
+ # incorrect widths
+ if self.td.get('MACHINE') == "qemuarm" or self.td.get('MACHINE') == "qemuppc":
+ width = "640"
+ else:
+ cmd = "identify.im7 -ping -format '%w' {0}".format(t.name)
+ width = subprocess.check_output(cmd, shell=True, env=ourenv).decode()
+
+ rblank = int(float(width))
+ lblank = rblank-80
+
+ # Use the meta-oe version of convert, along with it's suffix. This blanks out the clock.
+ cmd = "convert.im7 {0} -fill white -draw 'rectangle {1},4 {2},28' {3}".format(t.name, str(rblank), str(lblank), t.name)
+ convert_out=subprocess.check_output(cmd, shell=True, env=ourenv).decode()
+
+ bb.utils.mkdirhier(saved_screenshots_dir)
+ savedfile = "{0}/saved-{1}-{2}-{3}.png".format(saved_screenshots_dir, \
+ datetime.timestamp(datetime.now()), \
+ pn, \
+ self.td.get('MACHINE'))
+ shutil.copy2(t.name, savedfile)
+
+ refimage = self.td.get('COREBASE') + "/meta/files/screenshot-tests/" + pn + "-" + self.td.get('MACHINE') +".png"
+ if not os.path.exists(refimage):
+ self.skipTest("No reference image for comparision (%s)" % refimage)
+
+ cmd = "compare.im7 -metric MSE {0} {1} /dev/null".format(t.name, refimage)
+ compare_out = subprocess.run(cmd, shell=True, capture_output=True, text=True, env=ourenv)
+ diff=float(compare_out.stderr.replace("(", "").replace(")","").split()[1])
+ if diff > 0:
+ # Keep a copy of the failed screenshot so we can see what happened.
+ self.fail("Screenshot diff is {0}. Failed image stored in {1}".format(str(diff), savedfile))
+ else:
+ self.assertEqual(0, diff, "Screenshot diff is {0}.".format(str(diff)))
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index ecff3a9..a1cccc3 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -1165,9 +1165,10 @@
result = runCmd('git commit -m "Add a new file"', cwd=tempdir)
self.add_command_to_tearDown('cd %s; rm %s/*.patch; git checkout %s %s' % (os.path.dirname(recipefile), testrecipe, testrecipe, os.path.basename(recipefile)))
result = runCmd('devtool update-recipe %s' % testrecipe)
+ result = runCmd('git add minicom', cwd=os.path.dirname(recipefile))
expected_status = [(' M', '.*/%s$' % os.path.basename(recipefile)),
- ('??', '.*/0001-Change-the-README.patch$'),
- ('??', '.*/0002-Add-a-new-file.patch$')]
+ ('A ', '.*/0001-Change-the-README.patch$'),
+ ('A ', '.*/0002-Add-a-new-file.patch$')]
self._check_repo_status(os.path.dirname(recipefile), expected_status)
def test_devtool_update_recipe_git(self):
diff --git a/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py b/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py
index 74c1c48..ee2cf4b 100644
--- a/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py
+++ b/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py
@@ -54,6 +54,7 @@
cmd = cmd + "export GOPATH=%s; " % self.go_path
cmd = cmd + "export GOFLAGS=-modcacherw; "
cmd = cmd + "export CGO_ENABLED=1; "
+ cmd = cmd + "export GOPROXY=https://proxy.golang.org,direct; "
cmd = cmd + "${CROSS_COMPILE}go %s" % gocmd
return runCmd(cmd).status
diff --git a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
index 56dfcdb..031c226 100644
--- a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -79,7 +79,7 @@
result.append(f)
return result
- # Test sstate files creation and their location
+ # Test sstate files creation and their location and directory perms
def run_test_sstate_creation(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True, should_pass=True):
self.config_sstate(temp_sstate_location, [self.sstate_path])
@@ -88,6 +88,19 @@
else:
bitbake(['-ccleansstate'] + targets)
+ # We need to test that the env umask have does not effect sstate directory creation
+ # So, first, we'll get the current umask and set it to something we know incorrect
+ # See: sstate_task_postfunc for correct umask of os.umask(0o002)
+ import os
+ def current_umask():
+ current_umask = os.umask(0)
+ os.umask(current_umask)
+ return current_umask
+
+ orig_umask = current_umask()
+ # Set it to a umask we know will be 'wrong'
+ os.umask(0o022)
+
bitbake(targets)
file_tracker = []
results = self.search_sstate('|'.join(map(str, targets)), distro_specific, distro_nonspecific)
@@ -104,6 +117,19 @@
else:
self.assertTrue(not file_tracker , msg="Found sstate files in the wrong place for: %s (found %s)" % (', '.join(map(str, targets)), str(file_tracker)))
+ # Now we'll walk the tree to check the mode and see if things are incorrect.
+ badperms = []
+ for root, dirs, files in os.walk(self.sstate_path):
+ for directory in dirs:
+ if (os.stat(os.path.join(root, directory)).st_mode & 0o777) != 0o775:
+ badperms.append(os.path.join(root, directory))
+
+ # Return to original umask
+ os.umask(orig_umask)
+
+ if should_pass:
+ self.assertTrue(badperms , msg="Found sstate directories with the wrong permissions: %s (found %s)" % (', '.join(map(str, targets)), str(badperms)))
+
# Test the sstate files deletion part of the do_cleansstate task
def run_test_cleansstate_task(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True):
self.config_sstate(temp_sstate_location, [self.sstate_path])
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index 277cd32..cda43aa 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -650,9 +650,9 @@
if hasattr(self, 'qmp') and self.qmp:
self.qmp.settimeout(timeout)
if args is not None:
- return self.qmp.cmd(command, args)
+ return self.qmp.cmd_raw(command, args)
else:
- return self.qmp.cmd(command)
+ return self.qmp.cmd_raw(command)
def run_serial(self, command, raw=False, timeout=60):
# Returns (status, output) where status is 1 on success and 0 on error