summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cooker.py34
-rw-r--r--meta/classes-recipe/kernel-fit-image.bbclass2
-rw-r--r--meta/classes-recipe/testexport.bbclass43
-rw-r--r--meta/conf/distro/include/ptest-packagelists.inc1
-rw-r--r--meta/conf/machine/include/riscv/qemuriscv.inc31
-rw-r--r--meta/recipes-connectivity/openssl/openssl_3.5.0.bb5
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/overlayroot9
-rw-r--r--meta/recipes-graphics/wayland/wayland-protocols_1.45.bb4
-rw-r--r--meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb4
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.23.1.bb4
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto.inc16
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_6.12.bb28
-rw-r--r--meta/recipes-support/icu/icu/0001-ICU-23120-Mask-UnicodeStringTest-TestLargeMemory-on-.patch28
-rw-r--r--meta/recipes-support/icu/icu/0001-test-Add-support-ptest.patch84
-rwxr-xr-xmeta/recipes-support/icu/icu/run-ptest13
-rw-r--r--meta/recipes-support/icu/icu_77-1.bb23
-rwxr-xr-xscripts/contrib/improve_kernel_cve_report.py10
-rwxr-xr-xscripts/oe-test12
20 files changed, 286 insertions, 77 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 90022f3c35..dc131939ed 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -26,6 +26,7 @@ import json
26import pickle 26import pickle
27import codecs 27import codecs
28import hashserv 28import hashserv
29import ctypes
29 30
30logger = logging.getLogger("BitBake") 31logger = logging.getLogger("BitBake")
31collectlog = logging.getLogger("BitBake.Collection") 32collectlog = logging.getLogger("BitBake.Collection")
@@ -1998,9 +1999,9 @@ class ParsingFailure(Exception):
1998 Exception.__init__(self, realexception, recipe) 1999 Exception.__init__(self, realexception, recipe)
1999 2000
2000class Parser(multiprocessing.Process): 2001class Parser(multiprocessing.Process):
2001 def __init__(self, jobs, jobid_queue, results, quit, profile): 2002 def __init__(self, jobs, next_job_id, results, quit, profile):
2002 self.jobs = jobs 2003 self.jobs = jobs
2003 self.jobid_queue = jobid_queue 2004 self.next_job_id = next_job_id
2004 self.results = results 2005 self.results = results
2005 self.quit = quit 2006 self.quit = quit
2006 multiprocessing.Process.__init__(self) 2007 multiprocessing.Process.__init__(self)
@@ -2059,20 +2060,22 @@ class Parser(multiprocessing.Process):
2059 multiprocessing.util.Finalize(None, bb.fetch.fetcher_parse_save, exitpriority=1) 2060 multiprocessing.util.Finalize(None, bb.fetch.fetcher_parse_save, exitpriority=1)
2060 2061
2061 pending = [] 2062 pending = []
2063 havejobs = True
2062 try: 2064 try:
2063 while pending or not self.exit: 2065 while (havejobs or pending) and not self.exit:
2064 if self.quit.is_set(): 2066 if self.quit.is_set():
2065 break 2067 break
2066 2068
2067 jobid = None 2069 job = None
2068 try: 2070 if havejobs:
2069 # Have to wait for all parsers to have forked 2071 with self.next_job_id.get_lock():
2070 jobid = self.jobid_queue.get(True, 0.1) 2072 if self.next_job_id.value < len(self.jobs):
2071 except (ValueError, OSError, queue.Empty) as e: 2073 job = self.jobs[self.next_job_id.value]
2072 pass 2074 self.next_job_id.value += 1
2075 else:
2076 havejobs = False
2073 2077
2074 if jobid is not None: 2078 if job:
2075 job = self.jobs[jobid]
2076 result = self.parse(*job) 2079 result = self.parse(*job)
2077 # Clear the siggen cache after parsing to control memory usage, its huge 2080 # Clear the siggen cache after parsing to control memory usage, its huge
2078 bb.parse.siggen.postparsing_clean_cache() 2081 bb.parse.siggen.postparsing_clean_cache()
@@ -2085,7 +2088,6 @@ class Parser(multiprocessing.Process):
2085 except queue.Full: 2088 except queue.Full:
2086 pending.append(result) 2089 pending.append(result)
2087 finally: 2090 finally:
2088 self.jobs.close()
2089 self.results.close() 2091 self.results.close()
2090 self.results.join_thread() 2092 self.results.join_thread()
2091 2093
@@ -2167,22 +2169,18 @@ class CookerParser(object):
2167 if self.toparse: 2169 if self.toparse:
2168 bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata) 2170 bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
2169 2171
2170 self.toparse_queue = multiprocessing.Queue(len(self.willparse)) 2172 next_job_id = multiprocessing.Value(ctypes.c_int, 0)
2171 self.parser_quit = multiprocessing.Event() 2173 self.parser_quit = multiprocessing.Event()
2172 self.result_queue = multiprocessing.Queue() 2174 self.result_queue = multiprocessing.Queue()
2173 2175
2174 # Have to pass in willparse at fork time so all parsing processes have the unpickleable data 2176 # Have to pass in willparse at fork time so all parsing processes have the unpickleable data
2175 # then access it by index from the parse queue. 2177 # then access it by index from the parse queue.
2176 for i in range(0, self.num_processes): 2178 for i in range(0, self.num_processes):
2177 parser = Parser(self.willparse, self.toparse_queue, self.result_queue, self.parser_quit, self.cooker.configuration.profile) 2179 parser = Parser(self.willparse, next_job_id, self.result_queue, self.parser_quit, self.cooker.configuration.profile)
2178 parser.start() 2180 parser.start()
2179 self.process_names.append(parser.name) 2181 self.process_names.append(parser.name)
2180 self.processes.append(parser) 2182 self.processes.append(parser)
2181 2183
2182 for jobid in range(len(self.willparse)):
2183 self.toparse_queue.put(jobid)
2184 self.toparse_queue.close()
2185
2186 self.results = itertools.chain(self.results, self.parse_generator()) 2184 self.results = itertools.chain(self.results, self.parse_generator())
2187 2185
2188 def shutdown(self, clean=True, eventmsg="Parsing halted due to errors"): 2186 def shutdown(self, clean=True, eventmsg="Parsing halted due to errors"):
diff --git a/meta/classes-recipe/kernel-fit-image.bbclass b/meta/classes-recipe/kernel-fit-image.bbclass
index 39845997ed..fd4c6a30fe 100644
--- a/meta/classes-recipe/kernel-fit-image.bbclass
+++ b/meta/classes-recipe/kernel-fit-image.bbclass
@@ -173,7 +173,7 @@ do_deploy() {
173 fi 173 fi
174 174
175 if [ -n "${INITRAMFS_IMAGE}" ]; then 175 if [ -n "${INITRAMFS_IMAGE}" ]; then
176 ln -snf fit-image-its "$deploy_dir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its" 176 ln -snf fit-image.its "$deploy_dir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its"
177 if [ -n "${KERNEL_FIT_LINK_NAME}" ]; then 177 if [ -n "${KERNEL_FIT_LINK_NAME}" ]; then
178 ln -snf fit-image.its "$deploy_dir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}" 178 ln -snf fit-image.its "$deploy_dir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}"
179 fi 179 fi
diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
index 2da5dbcb6b..3005fc0dfa 100644
--- a/meta/classes-recipe/testexport.bbclass
+++ b/meta/classes-recipe/testexport.bbclass
@@ -85,6 +85,7 @@ def copy_needed_files(d, tc):
85 85
86 export_path = d.getVar('TEST_EXPORT_DIR') 86 export_path = d.getVar('TEST_EXPORT_DIR')
87 corebase_path = d.getVar('COREBASE') 87 corebase_path = d.getVar('COREBASE')
88 bblayers = d.getVar('BBLAYERS').split()
88 89
89 # Clean everything before starting 90 # Clean everything before starting
90 oe.path.remove(export_path) 91 oe.path.remove(export_path)
@@ -92,17 +93,11 @@ def copy_needed_files(d, tc):
92 93
93 # The source of files to copy are relative to 'COREBASE' directory 94 # The source of files to copy are relative to 'COREBASE' directory
94 # The destination is relative to 'TEST_EXPORT_DIR' 95 # The destination is relative to 'TEST_EXPORT_DIR'
95 # Because we are squashing the libraries, we need to remove 96 # core files/dirs first
96 # the layer/script directory 97 core_files_to_copy = [ os.path.join('scripts', 'oe-test'),
97 files_to_copy = [ os.path.join('meta', 'lib', 'oeqa', 'core'),
98 os.path.join('meta', 'lib', 'oeqa', 'runtime'),
99 os.path.join('meta', 'lib', 'oeqa', 'files'),
100 os.path.join('meta', 'lib', 'oeqa', 'utils'),
101 os.path.join('scripts', 'oe-test'),
102 os.path.join('scripts', 'lib', 'argparse_oe.py'), 98 os.path.join('scripts', 'lib', 'argparse_oe.py'),
103 os.path.join('scripts', 'lib', 'scriptutils.py'), ] 99 os.path.join('scripts', 'lib', 'scriptutils.py'), ]
104 100 for f in core_files_to_copy:
105 for f in files_to_copy:
106 src = os.path.join(corebase_path, f) 101 src = os.path.join(corebase_path, f)
107 dst = os.path.join(export_path, f.split('/', 1)[-1]) 102 dst = os.path.join(export_path, f.split('/', 1)[-1])
108 if os.path.isdir(src): 103 if os.path.isdir(src):
@@ -110,18 +105,21 @@ def copy_needed_files(d, tc):
110 else: 105 else:
111 shutil.copy2(src, dst) 106 shutil.copy2(src, dst)
112 107
113 # Remove cases and just copy the ones specified 108 # layer specific files/dirs
114 cases_path = os.path.join(export_path, 'lib', 'oeqa', 'runtime', 'cases') 109 layer_files_to_copy = [ os.path.join('lib', 'oeqa', 'core'),
115 oe.path.remove(cases_path) 110 os.path.join('lib', 'oeqa', 'runtime'),
116 bb.utils.mkdirhier(cases_path) 111 os.path.join('lib', 'oeqa', 'files'),
117 test_paths = get_runtime_paths(d) 112 os.path.join('lib', 'oeqa', 'utils'),]
118 test_modules = d.getVar('TEST_SUITES').split() 113 for layer in bblayers:
119 tc.loadTests(test_paths, modules=test_modules) 114 meta = os.path.basename(layer)
120 for f in getSuiteCasesFiles(tc.suites): 115 for f in layer_files_to_copy:
121 shutil.copy2(f, cases_path) 116 src = os.path.join(layer, f)
122 json_file = _get_json_file(f) 117 dst = os.path.join(export_path, meta, f)
123 if json_file: 118 if os.path.exists(src):
124 shutil.copy2(json_file, cases_path) 119 if os.path.isdir(src):
120 oe.path.copytree(src, dst)
121 else:
122 shutil.copy2(src, dst)
125 123
126 # Copy test data 124 # Copy test data
127 image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'), 125 image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'),
@@ -146,6 +144,9 @@ def copy_needed_files(d, tc):
146 (image_basename, image_machine_suffix), d.getVar("TEST_EXPORT_DIR")) 144 (image_basename, image_machine_suffix), d.getVar("TEST_EXPORT_DIR"))
147 145
148 # Copy packages needed for runtime testing 146 # Copy packages needed for runtime testing
147 test_paths = get_runtime_paths(d)
148 test_modules = d.getVar('TEST_SUITES').split()
149 tc.loadTests(test_paths, modules=test_modules)
149 package_extraction(d, tc.suites) 150 package_extraction(d, tc.suites)
150 test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR") 151 test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR")
151 if os.path.isdir(test_pkg_dir) and os.listdir(test_pkg_dir): 152 if os.path.isdir(test_pkg_dir) and os.listdir(test_pkg_dir):
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 4253c7b062..4451e00b48 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -25,6 +25,7 @@ PTESTS_FAST = "\
25 gdk-pixbuf \ 25 gdk-pixbuf \
26 glib-networking \ 26 glib-networking \
27 gzip \ 27 gzip \
28 icu \
28 json-c \ 29 json-c \
29 json-glib \ 30 json-glib \
30 libconvert-asn1-perl \ 31 libconvert-asn1-perl \
diff --git a/meta/conf/machine/include/riscv/qemuriscv.inc b/meta/conf/machine/include/riscv/qemuriscv.inc
index 65cbfd66ee..91a84cdd39 100644
--- a/meta/conf/machine/include/riscv/qemuriscv.inc
+++ b/meta/conf/machine/include/riscv/qemuriscv.inc
@@ -27,7 +27,6 @@ UBOOT_ENTRYPOINT:riscv64 = "0x80200000"
27# qemuboot options 27# qemuboot options
28QB_SMP ?= "-smp 4" 28QB_SMP ?= "-smp 4"
29QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi" 29QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi"
30QB_CPU:riscv64 ?= "-cpu rva22s64"
31QB_MACHINE = "-machine virt" 30QB_MACHINE = "-machine virt"
32QB_DEFAULT_BIOS = "fw_jump.elf" 31QB_DEFAULT_BIOS = "fw_jump.elf"
33QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" 32QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
@@ -36,5 +35,31 @@ QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio
36QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon" 35QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
37QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon" 36QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
38QB_GRAPHICS = "-device bochs-display" 37QB_GRAPHICS = "-device bochs-display"
39QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd" 38QB_OPT_APPEND = "${RV_QEMU_ISA} ${RV_QEMU_DEVICES}"
40QB_OPT_APPEND:riscv32 = "-device virtio-tablet-pci -device virtio-keyboard-pci" 39
40RV_QEMU_DEVICES = "-device qemu-xhci -device usb-tablet -device usb-kbd"
41RV_QEMU_DEVICES:riscv32 = "-device virtio-tablet-pci -device virtio-keyboard-pci"
42
43RV_QEMU_ISA = "-cpu "
44# Choose rv32 or rv64
45RV_QEMU_ISA .= "${@bb.utils.contains("TUNE_FEATURES", "rv 32", "rv32", "", d)}"
46RV_QEMU_ISA .= "${@bb.utils.contains("TUNE_FEATURES", "rv 64", "rv64", "", d)}"
47# Disable all of the default extensions we don't support
48RV_QEMU_ISA .= ",zihintntl=false,zihintpause=false,zawrs=false,zfa=false,svadu=false,zicntr=false,zihpm=false"
49RV_QEMU_ISA .= ",zicboz=false,zicbop=false,zmmul=false,sstc=false,h=false"
50# Dynamically enable the extensions based on TUNE_FEATURES
51RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "m", ",m=true", ",m=false", d)}"
52RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "a", ",a=true", ",a=false", d)}"
53RV_QEMU_ISA .= "${@bb.utils.contains_any("TUNE_FEATURES", "f d", ",f=true", ",f=false", d)}"
54RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "d", ",d=true", ",d=false", d)}"
55# OpenSBI fails to boot without 'c'
56#RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "c", ",c=true", ",c=false", d)}"
57RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "v", ",v=true", ",v=false", d)}"
58RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "zicbom", ",zicbom=true", ",zicbom=false", d)}"
59RV_QEMU_ISA .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicsr f d", ",zicsr=true", ",zicsr=false", d)}"
60RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "zifencei", ",zifencei=true", ",zifencei=false", d)}"
61RV_QEMU_ISA .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zba", ",zba=true", ",zba=false", d)}"
62RV_QEMU_ISA .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbb", ",zbb=true", ",zbb=false", d)}"
63RV_QEMU_ISA .= "${@bb.utils.contains ("TUNE_FEATURES", "zbc", ",zbc=true", ",zbc=false", d)}"
64RV_QEMU_ISA .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs", ",zbs=true", ",zbs=false", d)}"
65
diff --git a/meta/recipes-connectivity/openssl/openssl_3.5.0.bb b/meta/recipes-connectivity/openssl/openssl_3.5.0.bb
index 0f5c28dafa..a7d08d5b86 100644
--- a/meta/recipes-connectivity/openssl/openssl_3.5.0.bb
+++ b/meta/recipes-connectivity/openssl/openssl_3.5.0.bb
@@ -192,6 +192,11 @@ do_install:append:class-native () {
192 SSL_CERT_FILE=\${SSL_CERT_FILE:-${libdir}/ssl-3/cert.pem} \ 192 SSL_CERT_FILE=\${SSL_CERT_FILE:-${libdir}/ssl-3/cert.pem} \
193 OPENSSL_ENGINES=\${OPENSSL_ENGINES:-${libdir}/engines-3} \ 193 OPENSSL_ENGINES=\${OPENSSL_ENGINES:-${libdir}/engines-3} \
194 OPENSSL_MODULES=\${OPENSSL_MODULES:-${libdir}/ossl-modules} 194 OPENSSL_MODULES=\${OPENSSL_MODULES:-${libdir}/ossl-modules}
195
196 # Setting ENGINESDIR and MODULESDIR to invalid paths prevents host contamination,
197 # but also breaks the generated libcrypto.pc file. Post-Fix it manually here.
198 sed -i 's|^enginesdir=\($.libdir.\)/.*|enginesdir=\1/engines-3|' ${D}${libdir}/pkgconfig/libcrypto.pc
199 sed -i 's|^modulesdir=\($.libdir.\)/.*|modulesdir=\1/ossl-modules|' ${D}${libdir}/pkgconfig/libcrypto.pc
195} 200}
196 201
197do_install:append:class-nativesdk () { 202do_install:append:class-nativesdk () {
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot b/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot
index 0d41432878..db164d9846 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/overlayroot
@@ -38,10 +38,10 @@
38PATH=/sbin:/bin:/usr/sbin:/usr/bin 38PATH=/sbin:/bin:/usr/sbin:/usr/bin
39 39
40# We get OLDROOT from the rootfs module 40# We get OLDROOT from the rootfs module
41OLDROOT="/rootfs" 41OLDROOT="${ROOTFS_DIR}"
42 42
43NEWROOT="${RWMOUNT}/root"
44RWMOUNT="/overlay" 43RWMOUNT="/overlay"
44NEWROOT="${RWMOUNT}/root"
45ROMOUNT="${RWMOUNT}/rofs" 45ROMOUNT="${RWMOUNT}/rofs"
46UPPER_DIR="${RWMOUNT}/upper" 46UPPER_DIR="${RWMOUNT}/upper"
47WORK_DIR="${RWMOUNT}/work" 47WORK_DIR="${RWMOUNT}/work"
@@ -115,4 +115,9 @@ mount -n --move /proc ${NEWROOT}/proc
115mount -n --move /sys ${NEWROOT}/sys 115mount -n --move /sys ${NEWROOT}/sys
116mount -n --move /dev ${NEWROOT}/dev 116mount -n --move /dev ${NEWROOT}/dev
117 117
118# Mount/move boot if is already mounted
119if mountpoint -q ${OLDROOT}/boot; then
120 mount -n --move ${OLDROOT}/boot ${NEWROOT}/boot
121fi
122
118exec chroot ${NEWROOT}/ ${bootparam_init:-/sbin/init} || exit_gracefully "Couldn't chroot into overlay" 123exec chroot ${NEWROOT}/ ${bootparam_init:-/sbin/init} || exit_gracefully "Couldn't chroot into overlay"
diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.45.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.45.bb
index d98ccf964f..840d196ace 100644
--- a/meta/recipes-graphics/wayland/wayland-protocols_1.45.bb
+++ b/meta/recipes-graphics/wayland/wayland-protocols_1.45.bb
@@ -9,8 +9,8 @@ LICENSE = "MIT"
9LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \ 9LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
10 file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53" 10 file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
11 11
12SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${PV}/downloads/wayland-protocols-${PV}.tar.xz" 12SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/archive/${PV}/wayland-protocols-${PV}.tar.bz2"
13SRC_URI[sha256sum] = "4d2b2a9e3e099d017dc8107bf1c334d27bb87d9e4aff19a0c8d856d17cd41ef0" 13SRC_URI[sha256sum] = "b73315c26d6c3374c19c2dff7e491f019d8597dc4dcd4473d9181f676f15f48f"
14 14
15UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tags" 15UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tags"
16UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)" 16UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)"
diff --git a/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb b/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb
index 59d414a0a6..47fae72666 100644
--- a/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb
+++ b/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb
@@ -9,8 +9,8 @@ LICENSE = "MIT"
9LIC_FILES_CHKSUM = "file://COPYING;md5=548a66038a77415e1df51118625e832f \ 9LIC_FILES_CHKSUM = "file://COPYING;md5=548a66038a77415e1df51118625e832f \
10 " 10 "
11 11
12SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz" 12SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/archive/${PV}/${BPN}-${PV}.tar.bz2"
13SRC_URI[sha256sum] = "d9278c22554586881802540751bcc42569262bf80cd9ac9b0fd12ff4bd09a9e4" 13SRC_URI[sha256sum] = "f38c6a4ca2113cf716ca687a4cd8e24a11cbeeb04759678b7bb2da7d16335d18"
14 14
15UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/tags" 15UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/tags"
16UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)" 16UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)"
diff --git a/meta/recipes-graphics/wayland/wayland_1.23.1.bb b/meta/recipes-graphics/wayland/wayland_1.23.1.bb
index 3a5d91be04..1b29f7762e 100644
--- a/meta/recipes-graphics/wayland/wayland_1.23.1.bb
+++ b/meta/recipes-graphics/wayland/wayland_1.23.1.bb
@@ -12,11 +12,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \
12 12
13DEPENDS = "expat libffi wayland-native" 13DEPENDS = "expat libffi wayland-native"
14 14
15SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz \ 15SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/archive/${PV}/${BPN}-${PV}.tar.bz2 \
16 file://run-ptest \ 16 file://run-ptest \
17 file://0001-build-Fix-strndup-detection-on-MinGW.patch \ 17 file://0001-build-Fix-strndup-detection-on-MinGW.patch \
18 " 18 "
19SRC_URI[sha256sum] = "864fb2a8399e2d0ec39d56e9d9b753c093775beadc6022ce81f441929a81e5ed" 19SRC_URI[sha256sum] = "4afcf2942a39d8276d06dcefc89dfaf029222994778fd4c49aa68a702ebf698f"
20 20
21UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/tags" 21UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/tags"
22UPSTREAM_CHECK_REGEX = "releases/(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" 22UPSTREAM_CHECK_REGEX = "releases/(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb
index 5a7bad9017..baa13c866e 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb
@@ -14,13 +14,13 @@ python () {
14 raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") 14 raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
15} 15}
16 16
17SRCREV_machine ?= "7cb6d42c40de351ecab0a083aef260f84407de0d" 17SRCREV_machine ?= "6f409db4f0082642197240f39b8a58850c8eb884"
18SRCREV_meta ?= "60b8562e9989f268ad5d241989f56b71cfa1f648" 18SRCREV_meta ?= "f8cd1607519efd135e4037c84b6e42684b12c5a8"
19 19
20SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ 20SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \
21 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https" 21 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https"
22 22
23LINUX_VERSION ?= "6.12.31" 23LINUX_VERSION ?= "6.12.36"
24 24
25LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 25LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
26 26
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb
index 0fad73dddd..ec2136f035 100644
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb
@@ -8,7 +8,7 @@ require recipes-kernel/linux/linux-yocto.inc
8# CVE exclusions 8# CVE exclusions
9include recipes-kernel/linux/cve-exclusion_6.12.inc 9include recipes-kernel/linux/cve-exclusion_6.12.inc
10 10
11LINUX_VERSION ?= "6.12.31" 11LINUX_VERSION ?= "6.12.36"
12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
13 13
14DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" 14DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -17,8 +17,8 @@ DEPENDS += "openssl-native util-linux-native"
17KMETA = "kernel-meta" 17KMETA = "kernel-meta"
18KCONF_BSP_AUDIT_LEVEL = "2" 18KCONF_BSP_AUDIT_LEVEL = "2"
19 19
20SRCREV_machine ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 20SRCREV_machine ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
21SRCREV_meta ?= "60b8562e9989f268ad5d241989f56b71cfa1f648" 21SRCREV_meta ?= "f8cd1607519efd135e4037c84b6e42684b12c5a8"
22 22
23PV = "${LINUX_VERSION}+git" 23PV = "${LINUX_VERSION}+git"
24 24
diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 389329030d..4d0a726bb6 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -37,6 +37,22 @@ KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'efi', 'cfg/
37KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}" 37KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}"
38KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'vfat', 'cfg/fs/vfat.scc', '', d)}" 38KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'vfat', 'cfg/fs/vfat.scc', '', d)}"
39 39
40KERNEL_FEATURES_RISCV = "\
41 arch/riscv/tunes/riscv-isa-clear.scc \
42 ${@bb.utils.contains( 'TUNE_FEATURES', 'rv 32 i m a', 'arch/riscv/tunes/riscv-isa-rv32i.scc', '', d)} \
43 ${@bb.utils.contains( 'TUNE_FEATURES', 'rv 64 i m a', 'arch/riscv/tunes/riscv-isa-rv64i.scc', '', d)} \
44 ${@bb.utils.contains( 'TUNE_FEATURES', 'f d', 'arch/riscv/tunes/riscv-isa-fpu.scc', '', d)} \
45 ${@bb.utils.contains( 'TUNE_FEATURES', 'c', 'arch/riscv/tunes/riscv-isa-c.scc', '', d)} \
46 ${@bb.utils.contains( 'TUNE_FEATURES', 'v', 'arch/riscv/tunes/riscv-isa-v.scc', '', d)} \
47 ${@bb.utils.contains_any('TUNE_FEATURES', 'b zba', 'arch/riscv/tunes/riscv-isa-zba.scc', '', d)} \
48 ${@bb.utils.contains_any('TUNE_FEATURES', 'b zbb', 'arch/riscv/tunes/riscv-isa-zbb.scc', '', d)} \
49 ${@bb.utils.contains( 'TUNE_FEATURES', 'zbc', 'arch/riscv/tunes/riscv-isa-zbc.scc', '', d)} \
50 ${@bb.utils.contains( 'TUNE_FEATURES', 'zicbom', 'arch/riscv/tunes/riscv-isa-zicbom.scc', '', d)} \
51 "
52
53KERNEL_FEATURES:append:riscv32 = " ${KERNEL_FEATURES_RISCV}"
54KERNEL_FEATURES:append:riscv64 = " ${KERNEL_FEATURES_RISCV}"
55
40# A KMACHINE is the mapping of a yocto $MACHINE to what is built 56# A KMACHINE is the mapping of a yocto $MACHINE to what is built
41# by the kernel. This is typically the branch that should be built, 57# by the kernel. This is typically the branch that should be built,
42# and it can be specific to the machine or shared 58# and it can be specific to the machine or shared
diff --git a/meta/recipes-kernel/linux/linux-yocto_6.12.bb b/meta/recipes-kernel/linux/linux-yocto_6.12.bb
index 262ae35704..205c8a3ed5 100644
--- a/meta/recipes-kernel/linux/linux-yocto_6.12.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_6.12.bb
@@ -18,25 +18,25 @@ KBRANCH:qemux86.104 ?= "v6.12/standard/base"
18KBRANCH:qemuloongarch64 ?= "v6.12/standard/base" 18KBRANCH:qemuloongarch64 ?= "v6.12/standard/base"
19KBRANCH:qemumips64 ?= "v6.12/standard/mti-malta64" 19KBRANCH:qemumips64 ?= "v6.12/standard/mti-malta64"
20 20
21SRCREV_machine:qemuarm ?= "37a1fd13ca538e7785daf01434495a614bc55ead" 21SRCREV_machine:qemuarm ?= "511b6848cd392ee9bbc841794a5e905f4db31689"
22SRCREV_machine:qemuarm64 ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 22SRCREV_machine:qemuarm64 ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
23SRCREV_machine:qemuloongarch64 ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 23SRCREV_machine:qemuloongarch64 ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
24SRCREV_machine:qemumips ?= "2bcf58ea5aa19d54c436e63c59ab09b307e9ee8e" 24SRCREV_machine:qemumips ?= "afbfb2216d4f16a231b834922a937641864c8931"
25SRCREV_machine:qemuppc ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 25SRCREV_machine:qemuppc ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
26SRCREV_machine:qemuriscv64 ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 26SRCREV_machine:qemuriscv64 ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
27SRCREV_machine:qemuriscv32 ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 27SRCREV_machine:qemuriscv32 ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
28SRCREV_machine:qemux86 ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 28SRCREV_machine:qemux86 ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
29SRCREV_machine:qemux86-64 ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 29SRCREV_machine:qemux86-64 ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
30SRCREV_machine:qemumips64 ?= "6470f58a8f04951f202cf85afb4421d2e7ec9995" 30SRCREV_machine:qemumips64 ?= "707ad7179119ed07e5911b61b08b7b11d2c9a352"
31SRCREV_machine ?= "298aefdf4112e7c0a84522e4acf2c722e433c8a0" 31SRCREV_machine ?= "5633e9a98a153afa6b2051b116faef6c5e855bd8"
32SRCREV_meta ?= "60b8562e9989f268ad5d241989f56b71cfa1f648" 32SRCREV_meta ?= "f8cd1607519efd135e4037c84b6e42684b12c5a8"
33 33
34# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll 34# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
35# get the <version>/base branch, which is pure upstream -stable, and the same 35# get the <version>/base branch, which is pure upstream -stable, and the same
36# meta SRCREV as the linux-yocto-standard builds. Select your version using the 36# meta SRCREV as the linux-yocto-standard builds. Select your version using the
37# normal PREFERRED_VERSION settings. 37# normal PREFERRED_VERSION settings.
38BBCLASSEXTEND = "devupstream:target" 38BBCLASSEXTEND = "devupstream:target"
39SRCREV_machine:class-devupstream ?= "df3f6d10f353de274cc7c87f52dba5d26f185393" 39SRCREV_machine:class-devupstream ?= "df64e51d4ab83244b6a4eb11eb41f89403611e24"
40PN:class-devupstream = "linux-yocto-upstream" 40PN:class-devupstream = "linux-yocto-upstream"
41KBRANCH:class-devupstream = "v6.12/base" 41KBRANCH:class-devupstream = "v6.12/base"
42 42
@@ -44,7 +44,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA
44 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https" 44 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https"
45 45
46LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 46LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
47LINUX_VERSION ?= "6.12.31" 47LINUX_VERSION ?= "6.12.36"
48 48
49PV = "${LINUX_VERSION}+git" 49PV = "${LINUX_VERSION}+git"
50 50
diff --git a/meta/recipes-support/icu/icu/0001-ICU-23120-Mask-UnicodeStringTest-TestLargeMemory-on-.patch b/meta/recipes-support/icu/icu/0001-ICU-23120-Mask-UnicodeStringTest-TestLargeMemory-on-.patch
new file mode 100644
index 0000000000..e2e9546679
--- /dev/null
+++ b/meta/recipes-support/icu/icu/0001-ICU-23120-Mask-UnicodeStringTest-TestLargeMemory-on-.patch
@@ -0,0 +1,28 @@
1From 4b3e6888c2aaba6465f1bc96f61b17a2513050f3 Mon Sep 17 00:00:00 2001
2From: David Seifert <soap@gentoo.org>
3Date: Sat, 21 Jun 2025 12:28:15 +0200
4Subject: [PATCH] ICU-23120 Mask UnicodeStringTest::TestLargeMemory on 32-bit
5 platforms
6
7Upstream-Status: Submitted [https://github.com/unicode-org/icu/pull/3496]
8Signed-off-by: Daisuke Yamane <yamane07ynct@gmail.com>
9---
10 test/intltest/ustrtest.cpp | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/test/intltest/ustrtest.cpp b/test/intltest/ustrtest.cpp
14index 56976b3e3d2..26225f5b5b5 100644
15--- a/test/intltest/ustrtest.cpp
16+++ b/test/intltest/ustrtest.cpp
17@@ -2353,7 +2353,7 @@ void UnicodeStringTest::TestUnicodeStringInsertAppendToSelf() {
18 }
19
20 void UnicodeStringTest::TestLargeMemory() {
21-#if U_PLATFORM_IS_LINUX_BASED || U_PLATFORM_IS_DARWIN_BASED
22+#if (U_PLATFORM_IS_LINUX_BASED || U_PLATFORM_IS_DARWIN_BASED) && (UINTPTR_MAX == 0xFFFFFFFFFFFFFFFF)
23 if(quick) { return; }
24 IcuTestErrorCode status(*this, "TestLargeMemory");
25 constexpr uint32_t len = 2147483643;
26--
272.43.0
28
diff --git a/meta/recipes-support/icu/icu/0001-test-Add-support-ptest.patch b/meta/recipes-support/icu/icu/0001-test-Add-support-ptest.patch
new file mode 100644
index 0000000000..88350c0db5
--- /dev/null
+++ b/meta/recipes-support/icu/icu/0001-test-Add-support-ptest.patch
@@ -0,0 +1,84 @@
1From 783d9e0d3d7824fbca53c2c3a80e8e5e23eacc82 Mon Sep 17 00:00:00 2001
2From: Daisuke Yamane <yamane07ynct@gmail.com>
3Date: Tue, 1 Jul 2025 18:35:25 +0900
4Subject: [PATCH] test: Add support ptest
5
6Upstream-Status: Inappropriate [oe-core specific]
7
8Signed-off-by: Daisuke Yamane <yamane07ynct@gmail.com>
9---
10 test/cintltst/Makefile.in | 2 +-
11 test/intltest/Makefile.in | 2 +-
12 test/intltest/intltest.cpp | 2 +-
13 test/iotest/Makefile.in | 2 +-
14 test/letest/Makefile.in | 2 +-
15 5 files changed, 5 insertions(+), 5 deletions(-)
16
17diff --git a/test/cintltst/Makefile.in b/test/cintltst/Makefile.in
18index 552a105..9cf3071 100644
19--- a/test/cintltst/Makefile.in
20+++ b/test/cintltst/Makefile.in
21@@ -39,7 +39,7 @@ CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ct
22 ifdef QNX_TARGET
23 DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
24 else
25-DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
26+DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="$(PTEST_PATH)/"' -D'U_TOPBUILDDIR="$(PTEST_PATH)/"'
27 endif
28 LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUTOOLUTIL) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
29
30diff --git a/test/intltest/Makefile.in b/test/intltest/Makefile.in
31index 5d4a03b..ca4e4cd 100644
32--- a/test/intltest/Makefile.in
33+++ b/test/intltest/Makefile.in
34@@ -39,7 +39,7 @@ CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
35 ifdef QNX_TARGET
36 DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
37 else
38-DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
39+DEFS += -D'U_TOPSRCDIR="$(PTEST_PATH)/"' -D'U_TOPBUILDDIR="$(PTEST_PATH)/"'
40 endif
41 LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) $(LIB_THREAD)
42
43diff --git a/test/intltest/intltest.cpp b/test/intltest/intltest.cpp
44index 3806d0f..33829b0 100644
45--- a/test/intltest/intltest.cpp
46+++ b/test/intltest/intltest.cpp
47@@ -1713,7 +1713,7 @@ static bool fileExists(const char* fileName) {
48 * Returns the path to icu/testdata/
49 */
50 const char *IntlTest::getSharedTestData(UErrorCode& err) {
51-#define SOURCE_TARBALL_TOP U_TOPSRCDIR U_FILE_SEP_STRING ".." U_FILE_SEP_STRING
52+#define SOURCE_TARBALL_TOP U_TOPSRCDIR U_FILE_SEP_STRING
53 #define REPO_TOP SOURCE_TARBALL_TOP ".." U_FILE_SEP_STRING
54 #define FILE_NAME U_FILE_SEP_STRING "message2" U_FILE_SEP_STRING "valid-tests.json"
55 const char *srcDataDir = nullptr;
56diff --git a/test/iotest/Makefile.in b/test/iotest/Makefile.in
57index 16c510f..9eeff4b 100644
58--- a/test/iotest/Makefile.in
59+++ b/test/iotest/Makefile.in
60@@ -39,7 +39,7 @@ CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
61 ifdef QNX_TARGET
62 DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
63 else
64-DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
65+DEFS += -D'U_TOPSRCDIR="$(PTEST_PATH)/"' -D'U_TOPBUILDDIR="$(PTEST_PATH)/"'
66 endif
67 LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
68
69diff --git a/test/letest/Makefile.in b/test/letest/Makefile.in
70index 156c86f..555a820 100644
71--- a/test/letest/Makefile.in
72+++ b/test/letest/Makefile.in
73@@ -30,7 +30,7 @@ BUILDDIR := $(BUILDDIR:test\\cintltst/../../=)
74 BUILDDIR := $(BUILDDIR:TEST\\CINTLTST/../../=)
75
76 CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/layoutex $(ICULE_CFLAGS) $(ICULEHB_CFLAGS)
77-DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
78+DEFS += -D'U_TOPSRCDIR="$(PTEST_PATH)/"' -D'U_TOPBUILDDIR="$(PTEST_PATH)/"'
79 LIBS = $(LIBICULX) $(LIBICUUC) $(LIBICUI18N) $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) $(ICULEHB_LIBS)
80
81 COMMONOBJECTS = SimpleFontInstance.o
82--
832.43.0
84
diff --git a/meta/recipes-support/icu/icu/run-ptest b/meta/recipes-support/icu/icu/run-ptest
new file mode 100755
index 0000000000..e5bf27a822
--- /dev/null
+++ b/meta/recipes-support/icu/icu/run-ptest
@@ -0,0 +1,13 @@
1#!/bin/sh
2
3TOPDIR=$(dirname "$(realpath $0)")
4cd ${TOPDIR}/test/tests
5TESTS=$(find . -executable -type f)
6for t in ${TESTS}; do
7 ./$t
8 if [ "$?" = "0" ]; then
9 echo "PASS: $t"
10 else
11 echo "FAIL: $t"
12 fi
13done
diff --git a/meta/recipes-support/icu/icu_77-1.bb b/meta/recipes-support/icu/icu_77-1.bb
index e655b18ad2..cd81a6c729 100644
--- a/meta/recipes-support/icu/icu_77-1.bb
+++ b/meta/recipes-support/icu/icu_77-1.bb
@@ -119,6 +119,9 @@ SRC_URI = "${BASE_SRC_URI};name=code \
119 ${DATA_SRC_URI};name=data \ 119 ${DATA_SRC_URI};name=data \
120 file://filter.json \ 120 file://filter.json \
121 file://0001-icu-Added-armeb-support.patch \ 121 file://0001-icu-Added-armeb-support.patch \
122 file://0001-ICU-23120-Mask-UnicodeStringTest-TestLargeMemory-on-.patch \
123 file://0001-test-Add-support-ptest.patch \
124 file://run-ptest \
122 " 125 "
123 126
124SRC_URI:append:class-target = "\ 127SRC_URI:append:class-target = "\
@@ -160,3 +163,23 @@ do_make_icudata() {
160} 163}
161 164
162addtask make_icudata before do_configure after do_patch do_prepare_recipe_sysroot 165addtask make_icudata before do_configure after do_patch do_prepare_recipe_sysroot
166
167inherit ptest
168RDEPENDS:${PN}-ptest += "bash"
169
170do_compile_ptest() {
171 oe_runmake -C test everything PTEST_PATH=${PTEST_PATH}
172}
173
174do_install_ptest() {
175 install -d ${D}${PTEST_PATH}/test
176 install -d ${D}${PTEST_PATH}/data
177 cp -r ${S}/test/testdata ${D}/${PTEST_PATH}/test
178 cp -r ${S}/data/unidata ${D}/${PTEST_PATH}/data/
179 cp -r ${S}/data/sprep ${D}/${PTEST_PATH}/data/
180 cp -r ${S}/../testdata ${D}/${PTEST_PATH}/
181 cp -r ${B}/test/testdata/out ${D}/${PTEST_PATH}/test/testdata
182
183 install -d ${D}${PTEST_PATH}/test/tests
184 find ${B}/test/ -type f -executable -exec cp {} ${D}${PTEST_PATH}/test/tests \;
185}
diff --git a/scripts/contrib/improve_kernel_cve_report.py b/scripts/contrib/improve_kernel_cve_report.py
index 829cc4cd30..5c39df05a5 100755
--- a/scripts/contrib/improve_kernel_cve_report.py
+++ b/scripts/contrib/improve_kernel_cve_report.py
@@ -340,6 +340,10 @@ def cve_update(cve_data, cve, entry):
340 if cve_data[cve]['status'] == entry['status']: 340 if cve_data[cve]['status'] == entry['status']:
341 return 341 return
342 if entry['status'] == "Unpatched" and cve_data[cve]['status'] == "Patched": 342 if entry['status'] == "Unpatched" and cve_data[cve]['status'] == "Patched":
343 # Backported-patch (e.g. vendor kernel repo with cherry-picked CVE patch)
344 # has priority over unpatch from CNA
345 if cve_data[cve]['detail'] == "backported-patch":
346 return
343 logging.warning("CVE entry %s update from Patched to Unpatched from the scan result", cve) 347 logging.warning("CVE entry %s update from Patched to Unpatched from the scan result", cve)
344 cve_data[cve] = copy_data(cve_data[cve], entry) 348 cve_data[cve] = copy_data(cve_data[cve], entry)
345 return 349 return
@@ -441,10 +445,12 @@ def main():
441 is_kernel=True 445 is_kernel=True
442 if not is_kernel: 446 if not is_kernel:
443 continue 447 continue
444 448 # We remove custom versions after -
449 upstream_version = Version(pkg["version"].split("-")[0])
450 logging.info("Checking kernel %s", upstream_version)
445 kernel_cves = get_kernel_cves(args.datadir, 451 kernel_cves = get_kernel_cves(args.datadir,
446 compiled_files, 452 compiled_files,
447 Version(pkg["version"])) 453 upstream_version)
448 logging.info("Total kernel cves from kernel CNA: %s", len(kernel_cves)) 454 logging.info("Total kernel cves from kernel CNA: %s", len(kernel_cves))
449 cves = {issue["id"]: issue for issue in pkg["issue"]} 455 cves = {issue["id"]: issue for issue in pkg["issue"]}
450 logging.info("Total kernel before processing cves: %s", len(cves)) 456 logging.info("Total kernel before processing cves: %s", len(cves))
diff --git a/scripts/oe-test b/scripts/oe-test
index 55985b0b24..3a00369e01 100755
--- a/scripts/oe-test
+++ b/scripts/oe-test
@@ -7,14 +7,18 @@
7# SPDX-License-Identifier: MIT 7# SPDX-License-Identifier: MIT
8# 8#
9 9
10import os
11import sys
12import argparse 10import argparse
11import glob
13import logging 12import logging
13import os
14import sys
14 15
15scripts_path = os.path.dirname(os.path.realpath(__file__)) 16scripts_path = os.path.dirname(os.path.realpath(__file__))
16lib_path = scripts_path + '/lib' 17lib_path = os.path.join(scripts_path, 'lib')
17sys.path = sys.path + [lib_path] 18sys.path.append(lib_path)
19meta_lib_paths = glob.glob(scripts_path + '/*/lib', recursive=True)
20for p in meta_lib_paths:
21 sys.path.append(p)
18import argparse_oe 22import argparse_oe
19import scriptutils 23import scriptutils
20 24