summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-devtools')
-rw-r--r--meta-oe/recipes-devtools/b4/b4_0.15.2.bb (renamed from meta-oe/recipes-devtools/b4/b4_0.14.3.bb)2
-rw-r--r--meta-oe/recipes-devtools/canvenient/canvenient_1.01.bb41
-rw-r--r--meta-oe/recipes-devtools/ctags/ctags_6.2.20260329.0.bb (renamed from meta-oe/recipes-devtools/ctags/ctags_6.2.20260308.0.bb)2
-rw-r--r--meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.143.bb (renamed from meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.142.bb)2
-rw-r--r--meta-oe/recipes-devtools/flatbuffers/flatbuffers.bb2
-rw-r--r--meta-oe/recipes-devtools/giflib/giflib/0001-Makefile-fix-typo-in-soname-argument.patch34
-rw-r--r--meta-oe/recipes-devtools/giflib/giflib_6.1.2.bb (renamed from meta-oe/recipes-devtools/giflib/giflib_5.2.2.bb)7
-rw-r--r--meta-oe/recipes-devtools/grpc/grpc_1.80.0.bb (renamed from meta-oe/recipes-devtools/grpc/grpc_1.78.1.bb)6
-rw-r--r--meta-oe/recipes-devtools/include-what-you-use/include-what-you-use_0.26.bb (renamed from meta-oe/recipes-devtools/include-what-you-use/include-what-you-use_0.25.bb)5
-rw-r--r--meta-oe/recipes-devtools/isocline/isocline_1.0.9.bb28
-rw-r--r--meta-oe/recipes-devtools/jq/jq/0001-Support-building-with-disable-maintainer-mode-and-so.patch44
-rw-r--r--meta-oe/recipes-devtools/jq/jq/CVE-2026-32316.patch53
-rw-r--r--meta-oe/recipes-devtools/jq/jq/CVE-2026-33947.patch104
-rw-r--r--meta-oe/recipes-devtools/jq/jq/CVE-2026-33948.patch49
-rw-r--r--meta-oe/recipes-devtools/jq/jq/CVE-2026-39979.patch31
-rw-r--r--meta-oe/recipes-devtools/jq/jq_1.8.1.bb19
-rw-r--r--meta-oe/recipes-devtools/jsoncpp/files/run-ptest4
-rw-r--r--meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.6.bb24
-rw-r--r--meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb46
-rw-r--r--meta-oe/recipes-devtools/librust-cxx/librust-cxx-crates.inc2
-rw-r--r--meta-oe/recipes-devtools/libtoml11/files/0001-Remove-more-whitespaces-after-operator.patch34
-rw-r--r--meta-oe/recipes-devtools/libtoml11/libtoml11_4.4.0.bb3
-rw-r--r--meta-oe/recipes-devtools/lshw/lshw_02.20.bb4
-rw-r--r--meta-oe/recipes-devtools/ltrace/ltrace/0001-Fix-type-of-single-bit-bitfields.patch86
-rw-r--r--meta-oe/recipes-devtools/ltrace/ltrace/0001-configure-Recognise-linux-musl-as-a-host-OS.patch27
-rw-r--r--meta-oe/recipes-devtools/ltrace/ltrace/0001-dwarf_prototypes-return-NULL-from-NEXT_SIBLING-on-er.patch34
-rw-r--r--meta-oe/recipes-devtools/ltrace/ltrace/0001-trace-fix-1-bit-bitfield-assignments-for-clang-Wsing.patch86
-rw-r--r--meta-oe/recipes-devtools/ltrace/ltrace_0.8.1.bb (renamed from meta-oe/recipes-devtools/ltrace/ltrace_git.bb)11
-rw-r--r--meta-oe/recipes-devtools/luajit/luajit_git.bb4
-rw-r--r--meta-oe/recipes-devtools/mpich/mpich_5.0.1.bb (renamed from meta-oe/recipes-devtools/mpich/mpich_5.0.0.bb)2
-rw-r--r--meta-oe/recipes-devtools/nodejs/nodejs_22.22.2.bb (renamed from meta-oe/recipes-devtools/nodejs/nodejs_22.22.1.bb)10
-rw-r--r--meta-oe/recipes-devtools/php/php_8.5.5.bb (renamed from meta-oe/recipes-devtools/php/php_8.5.4.bb)2
-rw-r--r--meta-oe/recipes-devtools/protobuf/protobuf-c/protobuf-30.patch1446
-rw-r--r--meta-oe/recipes-devtools/protobuf/protobuf-c_1.5.2.bb (renamed from meta-oe/recipes-devtools/protobuf/protobuf-c_1.5.1.bb)3
-rw-r--r--meta-oe/recipes-devtools/protobuf/protobuf_6.33.6.bb (renamed from meta-oe/recipes-devtools/protobuf/protobuf_6.33.5.bb)6
-rw-r--r--meta-oe/recipes-devtools/sip/sip_6.15.3.bb (renamed from meta-oe/recipes-devtools/sip/sip_6.15.1.bb)2
-rw-r--r--meta-oe/recipes-devtools/spdm-utils/spdm-utils-crates.inc608
-rw-r--r--meta-oe/recipes-devtools/spdm-utils/spdm-utils_0.7.2.bb4
-rw-r--r--meta-oe/recipes-devtools/xerces-c/xerces-c_3.3.0.bb2
39 files changed, 836 insertions, 2043 deletions
diff --git a/meta-oe/recipes-devtools/b4/b4_0.14.3.bb b/meta-oe/recipes-devtools/b4/b4_0.15.2.bb
index a922f999e2..002f6ccfeb 100644
--- a/meta-oe/recipes-devtools/b4/b4_0.14.3.bb
+++ b/meta-oe/recipes-devtools/b4/b4_0.15.2.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
5 5
6inherit pypi python_pep517 python_setuptools_build_meta 6inherit pypi python_pep517 python_setuptools_build_meta
7 7
8SRC_URI[sha256sum] = "31a4927b8dfbb5c97edfc9569cda3b6737bbfd8430881e8cc48a0b088ced6147" 8SRC_URI[sha256sum] = "b815f2aed2288718cfe2a14c76421a00bc4f0918ea32b45dd1645c999fdda69d"
9 9
10RDEPENDS:${PN} += " \ 10RDEPENDS:${PN} += " \
11 python3-mailbox \ 11 python3-mailbox \
diff --git a/meta-oe/recipes-devtools/canvenient/canvenient_1.01.bb b/meta-oe/recipes-devtools/canvenient/canvenient_1.01.bb
new file mode 100644
index 0000000000..8ae41f0a83
--- /dev/null
+++ b/meta-oe/recipes-devtools/canvenient/canvenient_1.01.bb
@@ -0,0 +1,41 @@
1
2SUMMARY = "CANvenient is an abstraction layer for multiple CAN APIs \
3 on Windows and Linux. \
4 "
5DESCRIPTION = "CANvenient is an abstraction layer for multiple CAN APIs on \
6 Windows and Linux. It provides a unified interface for CAN \
7 communication, allowing developers to write code that is \
8 portable across different platforms and CAN hardware. \
9 "
10HOMEPAGE = "https://canopenterm.de/canvenient"
11BUGTRACKER = "https://github.com/CANopenTerm/CANvenient/issues"
12
13LICENSE = "MIT"
14LIC_FILES_CHKSUM = "file://LICENSE.md;md5=bd2edc721b4a0289efe949bdbe7dda79"
15
16DEPENDS = "libsocketcan"
17
18SRC_URI = "git://github.com/CANopenTerm/CANvenient.git;protocol=https;branch=main;tag=v${PV}"
19
20SRCREV = "b8b37e3915caf5bce93f38c2c6cca71356dcfcab"
21
22inherit cmake ptest
23
24
25do_install:append() {
26 install -d ${D}${includedir}
27 install -d ${D}${libdir}
28
29 install -m 0644 ${S}/include/CANvenient.h ${D}${includedir}/
30 install -m 0755 ${B}/libCANvenient.so.1.0.1 ${D}${libdir}/
31
32 ln -sf libCANvenient.so.1.0.1 ${D}${libdir}/libCANvenient.so.1
33 ln -sf libCANvenient.so.1.0.1 ${D}${libdir}/libCANvenient.so
34}
35
36FILES:${PN} += "${libdir}/libCANvenient.so ${libdir}/libCANvenient.so.*"
37FILES:${PN}-dev += "${includedir}"
38
39SOLIBS = ".so"
40
41RDEPENDS:${PN} = "libsocketcan"
diff --git a/meta-oe/recipes-devtools/ctags/ctags_6.2.20260308.0.bb b/meta-oe/recipes-devtools/ctags/ctags_6.2.20260329.0.bb
index 51ad8cff8e..76bb5b77be 100644
--- a/meta-oe/recipes-devtools/ctags/ctags_6.2.20260308.0.bb
+++ b/meta-oe/recipes-devtools/ctags/ctags_6.2.20260329.0.bb
@@ -14,7 +14,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
14 14
15inherit autotools-brokensep pkgconfig manpages 15inherit autotools-brokensep pkgconfig manpages
16 16
17SRCREV = "db5c5e00f09e62d27108025de24bcec919eac83b" 17SRCREV = "34659e2cb02e055c74e929c5bad291470a729570"
18SRC_URI = "git://github.com/universal-ctags/ctags;branch=master;protocol=https;tag=p${PV}" 18SRC_URI = "git://github.com/universal-ctags/ctags;branch=master;protocol=https;tag=p${PV}"
19 19
20 20
diff --git a/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.142.bb b/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.143.bb
index 1478ebb1e4..531d613cea 100644
--- a/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.142.bb
+++ b/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.143.bb
@@ -11,7 +11,7 @@ SRC_URI = "\
11 file://0003-do-not-hardcode-the-full-path-of-dpkg.patch \ 11 file://0003-do-not-hardcode-the-full-path-of-dpkg.patch \
12" 12"
13 13
14SRC_URI[sha256sum] = "334b188c2bab5c1aa6f858a044274631d342f07f5ddec1bad870d728f02fd652" 14SRC_URI[sha256sum] = "c638730e50d3cd8a46ff4ce8b1f74d579e9c8323974285cf3fd1ac36aa8f2ade"
15 15
16S = "${UNPACKDIR}/debootstrap" 16S = "${UNPACKDIR}/debootstrap"
17 17
diff --git a/meta-oe/recipes-devtools/flatbuffers/flatbuffers.bb b/meta-oe/recipes-devtools/flatbuffers/flatbuffers.bb
index c51a49ba01..289330ee04 100644
--- a/meta-oe/recipes-devtools/flatbuffers/flatbuffers.bb
+++ b/meta-oe/recipes-devtools/flatbuffers/flatbuffers.bb
@@ -25,7 +25,7 @@ inherit cmake python3native
25rm_flatc_cmaketarget_for_target() { 25rm_flatc_cmaketarget_for_target() {
26 rm -f "${SYSROOT_DESTDIR}/${libdir}/cmake/flatbuffers/FlatcTargets.cmake" 26 rm -f "${SYSROOT_DESTDIR}/${libdir}/cmake/flatbuffers/FlatcTargets.cmake"
27} 27}
28SYSROOT_PREPROCESS_FUNCS:class-target += "rm_flatc_cmaketarget_for_target" 28SYSROOT_PREPROCESS_FUNCS:append:class-target = " rm_flatc_cmaketarget_for_target"
29 29
30FILES:${PN}-compiler = "${bindir}" 30FILES:${PN}-compiler = "${bindir}"
31 31
diff --git a/meta-oe/recipes-devtools/giflib/giflib/0001-Makefile-fix-typo-in-soname-argument.patch b/meta-oe/recipes-devtools/giflib/giflib/0001-Makefile-fix-typo-in-soname-argument.patch
deleted file mode 100644
index dc87ed60b9..0000000000
--- a/meta-oe/recipes-devtools/giflib/giflib/0001-Makefile-fix-typo-in-soname-argument.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From 7f0cd4b6b56183b0afbefd01425e5ebd2b8733b4 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <martin.jansa@gmail.com>
3Date: Mon, 8 Jul 2024 13:18:11 +0200
4Subject: [PATCH] Makefile: fix typo in soname argument
5
6* introduced in:
7 https://sourceforge.net/p/giflib/code/ci/b65c7ac2905c0842e7977a7b51d83af4486ca7b8/
8 there is no LIBUTILMAJOR variable only LIBUTILSOMAJOR leading to:
9
10 ld: fatal error: -soname: must take a non-empty argument
11 collect2: error: ld returned 1 exit status
12
13 with some linkers like GOLD
14
15Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
16---
17Upstream-Status: Submitted [https://sourceforge.net/p/giflib/code/merge-requests/17/]
18
19 Makefile | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/Makefile b/Makefile
23index 87966a9..41b149e 100644
24--- a/Makefile
25+++ b/Makefile
26@@ -109,7 +109,7 @@ $(LIBUTILSO): $(UOBJECTS) $(UHEADERS)
27 ifeq ($(UNAME), Darwin)
28 $(CC) $(CFLAGS) -dynamiclib -current_version $(LIBVER) $(OBJECTS) -o $(LIBUTILSO)
29 else
30- $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname -Wl,$(LIBUTILMAJOR) -o $(LIBUTILSO) $(UOBJECTS)
31+ $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname -Wl,$(LIBUTILSOMAJOR) -o $(LIBUTILSO) $(UOBJECTS)
32 endif
33
34 libutil.a: $(UOBJECTS) $(UHEADERS)
diff --git a/meta-oe/recipes-devtools/giflib/giflib_5.2.2.bb b/meta-oe/recipes-devtools/giflib/giflib_6.1.2.bb
index aa47f93095..9cb2a51879 100644
--- a/meta-oe/recipes-devtools/giflib/giflib_5.2.2.bb
+++ b/meta-oe/recipes-devtools/giflib/giflib_6.1.2.bb
@@ -1,7 +1,7 @@
1SUMMARY = "shared library for GIF images" 1SUMMARY = "shared library for GIF images"
2SECTION = "libs" 2SECTION = "libs"
3LICENSE = "MIT" 3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://COPYING;md5=ae11c61b04b2917be39b11f78d71519a" 4LIC_FILES_CHKSUM = "file://COPYING;md5=b427970b2f3a9142a4e432c78c4680f4"
5 5
6CVE_PRODUCT = "giflib_project:giflib" 6CVE_PRODUCT = "giflib_project:giflib"
7 7
@@ -9,11 +9,10 @@ DEPENDS = "xmlto-native"
9 9
10SRC_URI = "${SOURCEFORGE_MIRROR}/giflib/${BP}.tar.gz \ 10SRC_URI = "${SOURCEFORGE_MIRROR}/giflib/${BP}.tar.gz \
11 https://sourceforge.net/p/giflib/code/ci/d54b45b0240d455bbaedee4be5203d2703e59967/tree/doc/giflib-logo.gif?format=raw;subdir=${BP}/doc;name=logo;downloadfilename=giflib-logo.gif \ 11 https://sourceforge.net/p/giflib/code/ci/d54b45b0240d455bbaedee4be5203d2703e59967/tree/doc/giflib-logo.gif?format=raw;subdir=${BP}/doc;name=logo;downloadfilename=giflib-logo.gif \
12 file://0001-Makefile-fix-typo-in-soname-argument.patch \
13" 12"
14 13
15SRC_URI[logo.sha256sum] = "1a54383986adad1521d00e003b4c482c27e8bc60690be944a1f3319c75abc2c9" 14SRC_URI[logo.sha256sum] = "1a54383986adad1521d00e003b4c482c27e8bc60690be944a1f3319c75abc2c9"
16SRC_URI[sha256sum] = "be7ffbd057cadebe2aa144542fd90c6838c6a083b5e8a9048b8ee3b66b29d5fb" 15SRC_URI[sha256sum] = "2421abb54f5906b14965d28a278fb49e1ec9fe5ebbc56244dd012383a973d5c0"
17 16
18do_install() { 17do_install() {
19 # using autotools's default will end up in /usr/local 18 # using autotools's default will end up in /usr/local
@@ -27,3 +26,5 @@ FILES:${PN}-utils = "${bindir}"
27BBCLASSEXTEND = "native" 26BBCLASSEXTEND = "native"
28 27
29RDEPENDS:${PN}-utils = "perl" 28RDEPENDS:${PN}-utils = "perl"
29
30CVE_STATUS[CVE-2026-23868] = "fixed-version: fixed since v6.1.2"
diff --git a/meta-oe/recipes-devtools/grpc/grpc_1.78.1.bb b/meta-oe/recipes-devtools/grpc/grpc_1.80.0.bb
index 6739c659d3..14ead4ccf9 100644
--- a/meta-oe/recipes-devtools/grpc/grpc_1.78.1.bb
+++ b/meta-oe/recipes-devtools/grpc/grpc_1.80.0.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "https://github.com/grpc/grpc"
5SECTION = "libs" 5SECTION = "libs"
6LICENSE = "Apache-2.0 & BSD-3-Clause & MPL-2.0 & MIT & BSD-2-Clause" 6LICENSE = "Apache-2.0 & BSD-3-Clause & MPL-2.0 & MIT & BSD-2-Clause"
7LIC_FILES_CHKSUM = " \ 7LIC_FILES_CHKSUM = " \
8 file://LICENSE;md5=731e401b36f8077ae0c134b59be5c906 \ 8 file://LICENSE;md5=fe8c552b7748e45c00ac55ac0257f6c9 \
9 file://third_party/utf8_range/LICENSE;md5=d4974d297231477b2ff507c35d61c13c \ 9 file://third_party/utf8_range/LICENSE;md5=d4974d297231477b2ff507c35d61c13c \
10 file://third_party/xxhash/LICENSE;md5=cdfe7764d5685d8e08b3df302885d7f3 \ 10 file://third_party/xxhash/LICENSE;md5=cdfe7764d5685d8e08b3df302885d7f3 \
11" 11"
@@ -23,8 +23,8 @@ RDEPENDS:${PN}-dev:append:class-native = " ${PN}-compiler"
23# Both dependencies are mutually exclusive 23# Both dependencies are mutually exclusive
24# RDEPENDS:${PN}-dev += "${PN}-compiler" 24# RDEPENDS:${PN}-dev += "${PN}-compiler"
25 25
26SRCREV = "5b6492ea90b2b867a6adad1b10a6edda28e860d1" 26SRCREV = "f5e2d6e856176c2f6b7691032adfefe21e5f64c1"
27BRANCH = "v1.78.x" 27BRANCH = "v1.80.x"
28SRC_URI = "gitsm://github.com/grpc/grpc.git;protocol=https;branch=${BRANCH};tag=v${PV} \ 28SRC_URI = "gitsm://github.com/grpc/grpc.git;protocol=https;branch=${BRANCH};tag=v${PV} \
29 file://0001-cmake-Link-with-libatomic-on-rv32-rv64.patch \ 29 file://0001-cmake-Link-with-libatomic-on-rv32-rv64.patch \
30 " 30 "
diff --git a/meta-oe/recipes-devtools/include-what-you-use/include-what-you-use_0.25.bb b/meta-oe/recipes-devtools/include-what-you-use/include-what-you-use_0.26.bb
index 138f7fc2bc..57ade99a1d 100644
--- a/meta-oe/recipes-devtools/include-what-you-use/include-what-you-use_0.25.bb
+++ b/meta-oe/recipes-devtools/include-what-you-use/include-what-you-use_0.26.bb
@@ -10,9 +10,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=3bb66a14534286912cd6f26649b5c60a \
10 10
11DEPENDS = "clang" 11DEPENDS = "clang"
12 12
13PV .= "+git" 13SRCREV = "01a091d16b3dedb808db21f32ed3e761737a3691"
14SRCREV = "791e69ea4662cb3e74e8128fd5fd69bd7f4ea6b3" 14SRC_URI = "git://github.com/include-what-you-use/include-what-you-use.git;protocol=https;branch=clang_22;tag=${PV}"
15SRC_URI = "git://github.com/include-what-you-use/include-what-you-use.git;protocol=https;branch=clang_21"
16 15
17inherit cmake python3native 16inherit cmake python3native
18 17
diff --git a/meta-oe/recipes-devtools/isocline/isocline_1.0.9.bb b/meta-oe/recipes-devtools/isocline/isocline_1.0.9.bb
new file mode 100644
index 0000000000..2afc4500df
--- /dev/null
+++ b/meta-oe/recipes-devtools/isocline/isocline_1.0.9.bb
@@ -0,0 +1,28 @@
1SUMMARY = "Isocline is a portable GNU readline alternative."
2DESCRIPTION = "Isocline is a pure C library that can be used \
3 as an alternative to the GNU readline library. \
4 "
5HOMEPAGE = "https://github.com/daanx/isocline"
6BUGTRACKER = "https://github.com/daanx/isocline/issues"
7
8LICENSE = "MIT"
9LIC_FILES_CHKSUM = "file://LICENSE;md5=8d05469c537534c7405c82c81a526bcd"
10
11SRC_URI = "git://github.com/daanx/isocline.git;protocol=https;branch=main;tag=v${PV}"
12SRCREV = "74d34bc453f5b91f1f8d8ded2840e1553623d135"
13
14
15inherit cmake
16
17CFLAGS += "-fPIC"
18
19do_install() {
20 install -d ${D}${libdir}
21 install -m 0644 ${B}/libisocline.a ${D}${libdir}/
22 install -d ${D}${includedir}
23 cp ${S}/include/isocline.h ${D}${includedir}/
24}
25
26FILES:${PN}-dev = "${libdir}/libisocline.a"
27FILES:${PN}-dev = "${includedir}/isocline.h"
28FILES:${PN}-dbg += "${libdir}/.debug/libisocline.a"
diff --git a/meta-oe/recipes-devtools/jq/jq/0001-Support-building-with-disable-maintainer-mode-and-so.patch b/meta-oe/recipes-devtools/jq/jq/0001-Support-building-with-disable-maintainer-mode-and-so.patch
new file mode 100644
index 0000000000..12a64a75ed
--- /dev/null
+++ b/meta-oe/recipes-devtools/jq/jq/0001-Support-building-with-disable-maintainer-mode-and-so.patch
@@ -0,0 +1,44 @@
1From 27f417f4812e688a59fc5186b7768cec004cd6e5 Mon Sep 17 00:00:00 2001
2From: Peter Kjellerstedt <peter.kjellerstedt@gmail.com>
3Date: Wed, 8 Apr 2026 05:58:49 +0200
4Subject: [PATCH] Support building with --disable-maintainer-mode and source !=
5 build dir (#3518)
6
7If --disable-maintainer-mode is enabled, then the rules for generating
8parser.[ch] and lexer.[ch] did nothing. This worked fine if the source
9and build directories are the same as the pre-generated parser.c and
10lexer.c files would suffice. However, if the build directory is not the
11same as the source directory, then the rest of the Make rules expect
12parser.[ch] and lexer.[ch] to have been created in the build directory
13if their source files (parser.y and lexer.l) are newer than the target
14files, which can happen in case the source is fetched using Git.
15
16Avoid the problem by copying the files to the build directory if needed.
17
18Co-authored-by: Peter Kjellerstedt <pkj@axis.com>
19Upstream-Status: Backport [https://github.com/jqlang/jq/commit/27f417f4812e688a59fc5186b7768cec004cd6e5]
20---
21 Makefile.am | 9 +++++++--
22 1 file changed, 7 insertions(+), 2 deletions(-)
23
24diff --git a/Makefile.am b/Makefile.am
25index 96d6038..acb9443 100644
26--- a/Makefile.am
27+++ b/Makefile.am
28@@ -41,9 +41,14 @@ src/lexer.h: src/lexer.c
29 else
30 BUILT_SOURCES = src/builtin.inc src/config_opts.inc src/version.h
31 .y.c:
32- $(AM_V_YACC) echo "NOT building parser.c!"
33+ $(AM_V_YACC) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(@F) $@
34+ $(AM_V_YACC) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(*F).h $*.h
35+ $(AM_V_YACC) touch $@ $*.h
36+
37 .l.c:
38- $(AM_V_LEX) echo "NOT building lexer.c!"
39+ $(AM_V_LEX) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(@F) $@
40+ $(AM_V_LEX) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(*F).h $*.h
41+ $(AM_V_LEX) touch $@ $*.h
42 endif
43
44 # Tell YACC (Bison) autoconf macros that you want a header file created.
diff --git a/meta-oe/recipes-devtools/jq/jq/CVE-2026-32316.patch b/meta-oe/recipes-devtools/jq/jq/CVE-2026-32316.patch
new file mode 100644
index 0000000000..1277b356d8
--- /dev/null
+++ b/meta-oe/recipes-devtools/jq/jq/CVE-2026-32316.patch
@@ -0,0 +1,53 @@
1From 321e62b356df2d4ed47aba4f3818e447ec4d77fc Mon Sep 17 00:00:00 2001
2From: itchyny <itchyny@cybozu.co.jp>
3Date: Thu, 12 Mar 2026 20:28:43 +0900
4Subject: [PATCH] Fix heap buffer overflow in `jvp_string_append` and
5 `jvp_string_copy_replace_bad`
6
7In `jvp_string_append`, the allocation size `(currlen + len) * 2` could
8overflow `uint32_t` when `currlen + len` exceeds `INT_MAX`, causing a small
9allocation followed by a large `memcpy`.
10
11In `jvp_string_copy_replace_bad`, the output buffer size calculation
12`length * 3 + 1` could overflow `uint32_t`, again resulting in a small
13allocation followed by a large write.
14
15Add overflow checks to both functions to return an error for strings
16that would exceed `INT_MAX` in length. Fixes CVE-2026-32316.
17
18CVE: CVE-2026-32316
19Upstream-Status: Backport [https://github.com/jqlang/jq/commit/e47e56d226519635768e6aab2f38f0ab037c09e5]
20Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
21---
22 src/jv.c | 11 ++++++++++-
23 1 file changed, 10 insertions(+), 1 deletion(-)
24
25diff --git a/src/jv.c b/src/jv.c
26index e4529a4..74be05a 100644
27--- a/src/jv.c
28+++ b/src/jv.c
29@@ -1114,7 +1114,12 @@ static jv jvp_string_copy_replace_bad(const char* data, uint32_t length) {
30 const char* end = data + length;
31 const char* i = data;
32
33- uint32_t maxlength = length * 3 + 1; // worst case: all bad bytes, each becomes a 3-byte U+FFFD
34+ // worst case: all bad bytes, each becomes a 3-byte U+FFFD
35+ uint64_t maxlength = (uint64_t)length * 3 + 1;
36+ if (maxlength >= INT_MAX) {
37+ return jv_invalid_with_msg(jv_string("String too long"));
38+ }
39+
40 jvp_string* s = jvp_string_alloc(maxlength);
41 char* out = s->data;
42 int c = 0;
43@@ -1174,6 +1179,10 @@ static uint32_t jvp_string_remaining_space(jvp_string* s) {
44 static jv jvp_string_append(jv string, const char* data, uint32_t len) {
45 jvp_string* s = jvp_string_ptr(string);
46 uint32_t currlen = jvp_string_length(s);
47+ if ((uint64_t)currlen + len >= INT_MAX) {
48+ jv_free(string);
49+ return jv_invalid_with_msg(jv_string("String too long"));
50+ }
51
52 if (jvp_refcnt_unshared(string.u.ptr) &&
53 jvp_string_remaining_space(s) >= len) {
diff --git a/meta-oe/recipes-devtools/jq/jq/CVE-2026-33947.patch b/meta-oe/recipes-devtools/jq/jq/CVE-2026-33947.patch
new file mode 100644
index 0000000000..69a8381f06
--- /dev/null
+++ b/meta-oe/recipes-devtools/jq/jq/CVE-2026-33947.patch
@@ -0,0 +1,104 @@
1From 5fd935884a6f5b3d8ecdcacfc5d3982140f3a478 Mon Sep 17 00:00:00 2001
2From: itchyny <itchyny@cybozu.co.jp>
3Date: Mon, 13 Apr 2026 11:23:40 +0900
4Subject: [PATCH] Limit path depth to prevent stack overflow
5
6Deeply nested path arrays can cause unbounded recursion in
7`jv_setpath`, `jv_getpath`, and `jv_delpaths`, leading to
8stack overflow. Add a depth limit of 10000 to match the
9existing `tojson` depth limit. This fixes CVE-2026-33947.
10
11CVE: CVE-2026-33947
12Upstream-Status: Backport [https://github.com/jqlang/jq/commit/fb59f1491058d58bdc3e8dd28f1773d1ac690a1f]
13Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
14---
15 src/jv_aux.c | 21 +++++++++++++++++++++
16 tests/jq.test | 25 +++++++++++++++++++++++++
17 2 files changed, 46 insertions(+)
18
19diff --git a/src/jv_aux.c b/src/jv_aux.c
20index bc1405f..594a21f 100644
21--- a/src/jv_aux.c
22+++ b/src/jv_aux.c
23@@ -375,6 +375,10 @@ static jv jv_dels(jv t, jv keys) {
24 return t;
25 }
26
27+#ifndef MAX_PATH_DEPTH
28+#define MAX_PATH_DEPTH (10000)
29+#endif
30+
31 jv jv_setpath(jv root, jv path, jv value) {
32 if (jv_get_kind(path) != JV_KIND_ARRAY) {
33 jv_free(value);
34@@ -382,6 +386,12 @@ jv jv_setpath(jv root, jv path, jv value) {
35 jv_free(path);
36 return jv_invalid_with_msg(jv_string("Path must be specified as an array"));
37 }
38+ if (jv_array_length(jv_copy(path)) > MAX_PATH_DEPTH) {
39+ jv_free(value);
40+ jv_free(root);
41+ jv_free(path);
42+ return jv_invalid_with_msg(jv_string("Path too deep"));
43+ }
44 if (!jv_is_valid(root)){
45 jv_free(value);
46 jv_free(path);
47@@ -434,6 +444,11 @@ jv jv_getpath(jv root, jv path) {
48 jv_free(path);
49 return jv_invalid_with_msg(jv_string("Path must be specified as an array"));
50 }
51+ if (jv_array_length(jv_copy(path)) > MAX_PATH_DEPTH) {
52+ jv_free(root);
53+ jv_free(path);
54+ return jv_invalid_with_msg(jv_string("Path too deep"));
55+ }
56 if (!jv_is_valid(root)) {
57 jv_free(path);
58 return root;
59@@ -511,6 +526,12 @@ jv jv_delpaths(jv object, jv paths) {
60 jv_free(elem);
61 return err;
62 }
63+ if (jv_array_length(jv_copy(elem)) > MAX_PATH_DEPTH) {
64+ jv_free(object);
65+ jv_free(paths);
66+ jv_free(elem);
67+ return jv_invalid_with_msg(jv_string("Path too deep"));
68+ }
69 jv_free(elem);
70 }
71 if (jv_array_length(jv_copy(paths)) == 0) {
72diff --git a/tests/jq.test b/tests/jq.test
73index 4ecf72f..6186d8b 100644
74--- a/tests/jq.test
75+++ b/tests/jq.test
76@@ -2507,3 +2507,28 @@ strflocaltime("" | ., @uri)
77 0
78 ""
79 ""
80+
81+# regression test for CVE-2026-33947
82+setpath([range(10000) | 0]; 0) | flatten
83+null
84+[0]
85+
86+try setpath([range(10001) | 0]; 0) catch .
87+null
88+"Path too deep"
89+
90+getpath([range(10000) | 0])
91+null
92+null
93+
94+try getpath([range(10001) | 0]) catch .
95+null
96+"Path too deep"
97+
98+delpaths([[range(10000) | 0]])
99+null
100+null
101+
102+try delpaths([[range(10001) | 0]]) catch .
103+null
104+"Path too deep"
diff --git a/meta-oe/recipes-devtools/jq/jq/CVE-2026-33948.patch b/meta-oe/recipes-devtools/jq/jq/CVE-2026-33948.patch
new file mode 100644
index 0000000000..8625429c74
--- /dev/null
+++ b/meta-oe/recipes-devtools/jq/jq/CVE-2026-33948.patch
@@ -0,0 +1,49 @@
1From 19a792c4cdb6b91c056eac033ac3367af6e67755 Mon Sep 17 00:00:00 2001
2From: itchyny <itchyny@cybozu.co.jp>
3Date: Mon, 13 Apr 2026 08:46:11 +0900
4Subject: [PATCH] Fix NUL truncation in the JSON parser
5
6This fixes CVE-2026-33948.
7
8CVE: CVE-2026-33948
9Upstream-Status: Backport [https://github.com/jqlang/jq/commit/6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b]
10Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
11---
12 src/util.c | 8 +-------
13 tests/shtest | 6 ++++++
14 2 files changed, 7 insertions(+), 7 deletions(-)
15
16diff --git a/src/util.c b/src/util.c
17index bcb86da..60ec4d5 100644
18--- a/src/util.c
19+++ b/src/util.c
20@@ -309,13 +309,7 @@ static int jq_util_input_read_more(jq_util_input_state *state) {
21 if (p != NULL)
22 state->current_line++;
23
24- if (p == NULL && state->parser != NULL) {
25- /*
26- * There should be no NULs in JSON texts (but JSON text
27- * sequences are another story).
28- */
29- state->buf_valid_len = strlen(state->buf);
30- } else if (p == NULL && feof(state->current_input)) {
31+ if (p == NULL && feof(state->current_input)) {
32 size_t i;
33
34 /*
35diff --git a/tests/shtest b/tests/shtest
36index 887a6bb..a046afe 100755
37--- a/tests/shtest
38+++ b/tests/shtest
39@@ -842,4 +842,10 @@ if ! $msys && ! $mingw; then
40 fi
41 fi
42
43+# CVE-2026-33948: No NUL truncation in the JSON parser
44+if printf '{}\x00{}' | $JQ >/dev/null 2> /dev/null; then
45+ printf 'Error expected but jq exited successfully\n' 1>&2
46+ exit 1
47+fi
48+
49 exit 0
diff --git a/meta-oe/recipes-devtools/jq/jq/CVE-2026-39979.patch b/meta-oe/recipes-devtools/jq/jq/CVE-2026-39979.patch
new file mode 100644
index 0000000000..40c57a46a0
--- /dev/null
+++ b/meta-oe/recipes-devtools/jq/jq/CVE-2026-39979.patch
@@ -0,0 +1,31 @@
1From ac09f274b6c029a23e3dffc38afac819b5daacc4 Mon Sep 17 00:00:00 2001
2From: itchyny <itchyny@cybozu.co.jp>
3Date: Mon, 13 Apr 2026 11:04:52 +0900
4Subject: [PATCH] Fix out-of-bounds read in jv_parse_sized()
5
6This fixes CVE-2026-39979.
7
8Co-authored-by: Mattias Wadman <mattias.wadman@gmail.com>
9
10CVE: CVE-2026-39979
11Upstream-Status: Backport [https://github.com/jqlang/jq/commit/2f09060afab23fe9390cce7cb860b10416e1bf5f]
12Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
13---
14 src/jv_parse.c | 3 ++-
15 1 file changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/src/jv_parse.c b/src/jv_parse.c
18index ffcf51f..e6b8aa9 100644
19--- a/src/jv_parse.c
20+++ b/src/jv_parse.c
21@@ -892,8 +892,9 @@ jv jv_parse_sized_custom_flags(const char* string, int length, int flags) {
22
23 if (!jv_is_valid(value) && jv_invalid_has_msg(jv_copy(value))) {
24 jv msg = jv_invalid_get_msg(value);
25- value = jv_invalid_with_msg(jv_string_fmt("%s (while parsing '%s')",
26+ value = jv_invalid_with_msg(jv_string_fmt("%s (while parsing '%.*s')",
27 jv_string_value(msg),
28+ length,
29 string));
30 jv_free(msg);
31 }
diff --git a/meta-oe/recipes-devtools/jq/jq_1.8.1.bb b/meta-oe/recipes-devtools/jq/jq_1.8.1.bb
index b9383c76f7..026f6bfa71 100644
--- a/meta-oe/recipes-devtools/jq/jq_1.8.1.bb
+++ b/meta-oe/recipes-devtools/jq/jq_1.8.1.bb
@@ -8,15 +8,20 @@ SECTION = "utils"
8LICENSE = "MIT & BSD-2-Clause" 8LICENSE = "MIT & BSD-2-Clause"
9LIC_FILES_CHKSUM = "file://COPYING;md5=cf7fcb0a1def4a7ad62c028f7d0dca47" 9LIC_FILES_CHKSUM = "file://COPYING;md5=cf7fcb0a1def4a7ad62c028f7d0dca47"
10 10
11GITHUB_BASE_URI = "https://github.com/jqlang/${BPN}/releases/" 11SRCREV = "4467af7068b1bcd7f882defff6e7ea674c5357f4"
12SRC_URI = "${GITHUB_BASE_URI}/download/${BPN}-${PV}/${BPN}-${PV}.tar.gz \
13 file://run-ptest \
14 "
15SRC_URI[sha256sum] = "2be64e7129cecb11d5906290eba10af694fb9e3e7f9fc208a311dc33ca837eb0"
16 12
17inherit autotools github-releases ptest 13SRC_URI = "git://github.com/jqlang/jq.git;protocol=https;branch=master;tag=jq-${PV} \
14 file://run-ptest \
15 file://0001-Support-building-with-disable-maintainer-mode-and-so.patch \
16 file://CVE-2026-32316.patch \
17 file://CVE-2026-33947.patch \
18 file://CVE-2026-33948.patch \
19 file://CVE-2026-39979.patch \
20 "
18 21
19UPSTREAM_CHECK_REGEX = "releases/tag/${BPN}-(?P<pver>\d+(\.\d+)+)" 22inherit autotools ptest
23
24UPSTREAM_CHECK_GITTAGREGEX = "${BPN}-(?P<pver>\d+(\.\d+)+)"
20 25
21PACKAGECONFIG ?= "oniguruma" 26PACKAGECONFIG ?= "oniguruma"
22 27
diff --git a/meta-oe/recipes-devtools/jsoncpp/files/run-ptest b/meta-oe/recipes-devtools/jsoncpp/files/run-ptest
new file mode 100644
index 0000000000..2cb892b187
--- /dev/null
+++ b/meta-oe/recipes-devtools/jsoncpp/files/run-ptest
@@ -0,0 +1,4 @@
1#!/bin/sh
2
3cd src
4ctest --force-new-ctest-process | sed -u 's/\*\*\*/ /g' | awk '/Test +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.6.bb b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.6.bb
deleted file mode 100644
index f68ffd2c0f..0000000000
--- a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.6.bb
+++ /dev/null
@@ -1,24 +0,0 @@
1SUMMARY = "JSON C++ lib used to read and write json file."
2DESCRIPTION = "Jsoncpp is an implementation of a JSON (http://json.org) reader \
3 and writer in C++. JSON (JavaScript Object Notation) is a \
4 lightweight data-interchange format. It is easy for humans to \
5 read and write. It is easy for machines to parse and generate."
6
7HOMEPAGE = "https://github.com/open-source-parsers/jsoncpp"
8
9SECTION = "libs"
10
11LICENSE = "MIT"
12LIC_FILES_CHKSUM = "file://LICENSE;md5=5d73c165a0f9e86a1342f32d19ec5926"
13
14PE = "1"
15
16SRCREV = "89e2973c754a9c02a49974d839779b151e95afd6"
17SRC_URI = "git://github.com/open-source-parsers/jsoncpp;branch=master;protocol=https"
18
19
20inherit cmake
21
22EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON -DBUILD_OBJECT_LIBS=OFF -DJSONCPP_WITH_TESTS=OFF"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb
new file mode 100644
index 0000000000..797f093f33
--- /dev/null
+++ b/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.7.bb
@@ -0,0 +1,46 @@
1SUMMARY = "JSON C++ lib used to read and write json file."
2DESCRIPTION = "Jsoncpp is an implementation of a JSON (http://json.org) reader \
3 and writer in C++. JSON (JavaScript Object Notation) is a \
4 lightweight data-interchange format. It is easy for humans to \
5 read and write. It is easy for machines to parse and generate."
6
7HOMEPAGE = "https://github.com/open-source-parsers/jsoncpp"
8
9SECTION = "libs"
10
11LICENSE = "MIT"
12LIC_FILES_CHKSUM = "file://LICENSE;md5=5d73c165a0f9e86a1342f32d19ec5926"
13
14PE = "1"
15
16SRCREV = "3455302847cf1e4671f1d8f5fa953fd46a7b1404"
17SRC_URI = "git://github.com/open-source-parsers/jsoncpp;branch=master;protocol=https;tag=${PV} \
18 file://run-ptest \
19 "
20
21inherit cmake ptest
22
23EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON -DBUILD_OBJECT_LIBS=OFF \
24 ${@bb.utils.contains('PTEST_ENABLED', '1', '-DJSONCPP_WITH_TESTS=ON -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF', '-DJSONCPP_WITH_TESTS=OFF', d)} \
25 "
26
27DEPENDS += "${@bb.utils.contains('PTEST_ENABLED', '1', 'rsync-native', '', d)}"
28RDEPENDS:${PN}-ptest += "cmake python3-core"
29
30do_install_ptest () {
31 cp -r ${B}/bin ${D}${PTEST_PATH}
32 cp -r ${S}/test ${D}${PTEST_PATH}
33
34 rsync -a ${B}/src ${D}${PTEST_PATH} \
35 --exclude CMakeFiles \
36 --exclude cmake_install.cmake \
37 --exclude Makefile \
38 --exclude generated
39 sed -i -e 's#${B}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
40 sed -i -e 's#${S}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
41 sed -i -e 's#${RECIPE_SYSROOT_NATIVE}##g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
42 sed -i -e 's#${PYTHON}#/usr/bin/python3#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
43 sed -i -e 's#${WORKDIR}##g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
44}
45
46BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-oe/recipes-devtools/librust-cxx/librust-cxx-crates.inc b/meta-oe/recipes-devtools/librust-cxx/librust-cxx-crates.inc
index c313d24e5c..ea21ea5924 100644
--- a/meta-oe/recipes-devtools/librust-cxx/librust-cxx-crates.inc
+++ b/meta-oe/recipes-devtools/librust-cxx/librust-cxx-crates.inc
@@ -1,4 +1,4 @@
1# Autogenerated with 'bitbake -c update_crates cxx' 1# Autogenerated with 'bitbake -c update_crates librust-cxx'
2 2
3# from Cargo.lock 3# from Cargo.lock
4SRC_URI += " \ 4SRC_URI += " \
diff --git a/meta-oe/recipes-devtools/libtoml11/files/0001-Remove-more-whitespaces-after-operator.patch b/meta-oe/recipes-devtools/libtoml11/files/0001-Remove-more-whitespaces-after-operator.patch
new file mode 100644
index 0000000000..5bff81eaf6
--- /dev/null
+++ b/meta-oe/recipes-devtools/libtoml11/files/0001-Remove-more-whitespaces-after-operator.patch
@@ -0,0 +1,34 @@
1From 6af7de3d5eaae59c53c42aab8eca1e1e9a365da5 Mon Sep 17 00:00:00 2001
2From: Steffen Winter <steffen.winter@proton.me>
3Date: Thu, 25 Dec 2025 20:48:02 +0100
4Subject: [PATCH] Remove more whitespaces after operator""
5
6Upstream-Status: Submitted [https://github.com/ToruNiina/toml11/pull/306]
7Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
8---
9 include/toml11/fwd/literal_fwd.hpp | 4 ++--
10 include/toml11/impl/literal_impl.hpp | 4 ++--
11 2 files changed, 4 insertions(+), 4 deletions(-)
12
13--- a/include/toml11/fwd/literal_fwd.hpp
14+++ b/include/toml11/fwd/literal_fwd.hpp
15@@ -24,7 +24,7 @@ inline namespace toml_literals
16 #if defined(TOML11_HAS_CHAR8_T)
17 // value of u8"" literal has been changed from char to char8_t and char8_t is
18 // NOT compatible to char
19-::toml::value operator"" _toml(const char8_t* str, std::size_t len);
20+::toml::value operator""_toml(const char8_t* str, std::size_t len);
21 #endif
22
23 } // toml_literals
24--- a/include/toml11/impl/literal_impl.hpp
25+++ b/include/toml11/impl/literal_impl.hpp
26@@ -146,7 +146,7 @@ operator""_toml(const char* str, std::si
27 // value of u8"" literal has been changed from char to char8_t and char8_t is
28 // NOT compatible to char
29 TOML11_INLINE ::toml::value
30-operator"" _toml(const char8_t* str, std::size_t len)
31+operator""_toml(const char8_t* str, std::size_t len)
32 {
33 if(len == 0)
34 {
diff --git a/meta-oe/recipes-devtools/libtoml11/libtoml11_4.4.0.bb b/meta-oe/recipes-devtools/libtoml11/libtoml11_4.4.0.bb
index 7e097e4612..49f9840f06 100644
--- a/meta-oe/recipes-devtools/libtoml11/libtoml11_4.4.0.bb
+++ b/meta-oe/recipes-devtools/libtoml11/libtoml11_4.4.0.bb
@@ -16,12 +16,15 @@ PE = "1"
16SRC_URI = "\ 16SRC_URI = "\
17 gitsm://github.com/ToruNiina/toml11.git;protocol=https;branch=main;tag=v${PV} \ 17 gitsm://github.com/ToruNiina/toml11.git;protocol=https;branch=main;tag=v${PV} \
18 file://0001-Remove-whitespace-in-operator.patch \ 18 file://0001-Remove-whitespace-in-operator.patch \
19 file://0001-Remove-more-whitespaces-after-operator.patch \
19 file://run-ptest \ 20 file://run-ptest \
20" 21"
21SRCREV = "be08ba2be2a964edcdb3d3e3ea8d100abc26f286" 22SRCREV = "be08ba2be2a964edcdb3d3e3ea8d100abc26f286"
22 23
23inherit cmake ptest 24inherit cmake ptest
24 25
26CXXFLAGS:append:toolchain-clang = " -Wno-error=c2y-extensions"
27
25EXTRA_OECMAKE += "-DTOML11_PRECOMPILE=ON \ 28EXTRA_OECMAKE += "-DTOML11_PRECOMPILE=ON \
26 -DTOML11_BUILD_TESTS=${@bb.utils.contains("PTEST_ENABLED", "1", "ON", "OFF", d)} \ 29 -DTOML11_BUILD_TESTS=${@bb.utils.contains("PTEST_ENABLED", "1", "ON", "OFF", d)} \
27" 30"
diff --git a/meta-oe/recipes-devtools/lshw/lshw_02.20.bb b/meta-oe/recipes-devtools/lshw/lshw_02.20.bb
index 95e2084255..2f1367341a 100644
--- a/meta-oe/recipes-devtools/lshw/lshw_02.20.bb
+++ b/meta-oe/recipes-devtools/lshw/lshw_02.20.bb
@@ -32,11 +32,11 @@ EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} RPM_OPT_FLAGS='${CFLAGS}'"
32 32
33do_compile() { 33do_compile() {
34 # build core only - don't ship gui 34 # build core only - don't ship gui
35 oe_runmake -C src core 35 oe_runmake -C src SBINDIR=${sbindir} core
36} 36}
37 37
38do_install() { 38do_install() {
39 oe_runmake install DESTDIR=${D} 39 oe_runmake install DESTDIR=${D} SBINDIR=${sbindir}
40} 40}
41 41
42BBCLASSEXTEND = "native" 42BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-devtools/ltrace/ltrace/0001-Fix-type-of-single-bit-bitfields.patch b/meta-oe/recipes-devtools/ltrace/ltrace/0001-Fix-type-of-single-bit-bitfields.patch
deleted file mode 100644
index 61932269bd..0000000000
--- a/meta-oe/recipes-devtools/ltrace/ltrace/0001-Fix-type-of-single-bit-bitfields.patch
+++ /dev/null
@@ -1,86 +0,0 @@
1From 491b3b153f6b5cbf2d23a9778e5676eb29a6705f Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 6 Feb 2023 16:37:19 -0800
4Subject: [PATCH] Fix type of single bit bitfields
5
6clang16 warns
7trace.c:311:22: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
8
9quash the warning by using an unsigned type to allow
10an assignment of 0 or 1 without implicit conversion.
11
12Upstream-Status: Pending
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 library.h | 6 +++---
16 prototype.h | 2 +-
17 sysdeps/linux-gnu/trace.h | 10 +++++-----
18 3 files changed, 9 insertions(+), 9 deletions(-)
19
20--- a/library.h
21+++ b/library.h
22@@ -71,20 +71,20 @@ struct library_symbol {
23 * looking up one in LIB->protolib. */
24 struct prototype *proto;
25
26- int own_name : 1;
27+ unsigned int own_name : 1;
28
29 /* This is relevant for PLT symbols. Latent PLT symbols are
30 * those that don't match any of the -e rules, but that might
31 * potentially become active if a library implementing them
32 * appears that matches a -l rule. Ltrace core is responsible
33 * for clearing latent flag. */
34- int latent : 1;
35+ unsigned latent : 1;
36
37 /* Delayed symbols are those for which a breakpoint shouldn't
38 * be enabled yet. They are similar to latent symbols, but
39 * backend is responsible for clearing the delayed flag. See
40 * proc_activate_delayed_symbol. */
41- int delayed : 1;
42+ unsigned int delayed : 1;
43
44 struct arch_library_symbol_data arch;
45 struct os_library_symbol_data os;
46--- a/prototype.h
47+++ b/prototype.h
48@@ -162,7 +162,7 @@ struct protolib_cache {
49
50 /* For tracking uses of cache during cache's own
51 * initialization. */
52- int bootstrap : 1;
53+ unsigned int bootstrap : 1;
54 };
55
56 /* Initialize CACHE. Returns 0 on success or a negative value on
57--- a/sysdeps/linux-gnu/trace.h
58+++ b/sysdeps/linux-gnu/trace.h
59@@ -33,11 +33,11 @@
60 struct pid_task {
61 pid_t pid; /* This may be 0 for tasks that exited
62 * mid-handling. */
63- int sigstopped : 1;
64- int got_event : 1;
65- int delivered : 1;
66- int vforked : 1;
67- int sysret : 1;
68+ unsigned int sigstopped : 1;
69+ unsigned int got_event : 1;
70+ unsigned int delivered : 1;
71+ unsigned int vforked : 1;
72+ unsigned int sysret : 1;
73 };
74
75 struct pid_set {
76--- a/sysdeps/linux-gnu/trace.c
77+++ b/sysdeps/linux-gnu/trace.c
78@@ -1043,7 +1043,7 @@ ltrace_exiting_install_handler(struct pr
79 struct process_vfork_handler
80 {
81 struct event_handler super;
82- int vfork_bp_refd:1;
83+ unsigned int vfork_bp_refd:1;
84 };
85
86 static Event *
diff --git a/meta-oe/recipes-devtools/ltrace/ltrace/0001-configure-Recognise-linux-musl-as-a-host-OS.patch b/meta-oe/recipes-devtools/ltrace/ltrace/0001-configure-Recognise-linux-musl-as-a-host-OS.patch
deleted file mode 100644
index f3a6d9e599..0000000000
--- a/meta-oe/recipes-devtools/ltrace/ltrace/0001-configure-Recognise-linux-musl-as-a-host-OS.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From c1d3aaf5ec810c2594938438c7b4ccd20943f255 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 7 Jul 2017 10:20:52 -0700
4Subject: [PATCH] configure: Recognise linux-musl as a host OS
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8Upstream-Status: Pending
9
10 configure.ac | 1 +
11 1 file changed, 1 insertion(+)
12
13diff --git a/configure.ac b/configure.ac
14index 3e8667f..95d6642 100644
15--- a/configure.ac
16+++ b/configure.ac
17@@ -35,6 +35,7 @@ AC_CANONICAL_HOST
18 case "${host_os}" in
19 linux-gnu*) HOST_OS="linux-gnu" ;;
20 linux-uclibc*) HOST_OS="linux-gnu" ;;
21+ linux-musl*) HOST_OS="linux-gnu" ;;
22 *) AC_MSG_ERROR([unkown host-os ${host_os}]) ;;
23 esac
24 AC_SUBST(HOST_OS)
25--
262.13.2
27
diff --git a/meta-oe/recipes-devtools/ltrace/ltrace/0001-dwarf_prototypes-return-NULL-from-NEXT_SIBLING-on-er.patch b/meta-oe/recipes-devtools/ltrace/ltrace/0001-dwarf_prototypes-return-NULL-from-NEXT_SIBLING-on-er.patch
new file mode 100644
index 0000000000..e7aa0fdabe
--- /dev/null
+++ b/meta-oe/recipes-devtools/ltrace/ltrace/0001-dwarf_prototypes-return-NULL-from-NEXT_SIBLING-on-er.patch
@@ -0,0 +1,34 @@
1From d568c0cbdecf31a7020f2a0574470d014f447a86 Mon Sep 17 00:00:00 2001
2From: Khem Raj <khem.raj@oss.qualcomm.com>
3Date: Sun, 12 Apr 2026 00:07:06 -0700
4Subject: [PATCH] dwarf_prototypes: return NULL from NEXT_SIBLING on error
5
6NEXT_SIBLING is used in functions that return pointers, so returning
7false on error is misleading and relies on implicit conversion.
8Return (void *)0 instead to make the failure value explicit and match
9the surrounding function return type.
10
11This is flagged by clang-22 due to
12Replacing return false with return (void *)0
13avoids clang's -Wbool-conversion error when the macro expands
14inside functions returning a pointer type.
15
16Upstream-Status: Submitted [https://gitlab.com/cespedes/ltrace/-/merge_requests/30]
17Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
18---
19 dwarf_prototypes.c | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/dwarf_prototypes.c b/dwarf_prototypes.c
23index bfac177..e7ea1bc 100644
24--- a/dwarf_prototypes.c
25+++ b/dwarf_prototypes.c
26@@ -36,7 +36,7 @@
27 #define NEXT_SIBLING(die) \
28 int res = dwarf_siblingof(die, die); \
29 if (res == 0) continue; /* sibling exists */ \
30- if (res < 0) return false; /* error */ \
31+ if (res < 0) return (void *)0; /* error */ \
32 break /* no sibling exists */
33
34 static struct arg_type_info *get_type(int *newly_allocated_info,
diff --git a/meta-oe/recipes-devtools/ltrace/ltrace/0001-trace-fix-1-bit-bitfield-assignments-for-clang-Wsing.patch b/meta-oe/recipes-devtools/ltrace/ltrace/0001-trace-fix-1-bit-bitfield-assignments-for-clang-Wsing.patch
new file mode 100644
index 0000000000..0f8a9766f4
--- /dev/null
+++ b/meta-oe/recipes-devtools/ltrace/ltrace/0001-trace-fix-1-bit-bitfield-assignments-for-clang-Wsing.patch
@@ -0,0 +1,86 @@
1From 65c5a621a366a25b8572cd29c01b4aa92c02903a Mon Sep 17 00:00:00 2001
2From: Khem Raj <khem.raj@oss.qualcomm.com>
3Date: Sun, 12 Apr 2026 00:46:20 -0700
4Subject: [PATCH] trace: fix 1-bit bitfield assignments for clang
5 -Wsingle-bit-bitfield-constant-conversion
6
7Replace '1' with 'true' for all 1-bit signed bitfield assignments.
8Assigning integer 1 to a 1-bit signed bitfield truncates to -1; using
9'true' which is a bool is well-defined and avoids the clang error.
10
11Upstream-Status: Submitted [https://gitlab.com/cespedes/ltrace/-/merge_requests/30]
12Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
13---
14 ltrace-elf.c | 2 +-
15 sysdeps/linux-gnu/trace.c | 12 ++++++------
16 2 files changed, 7 insertions(+), 7 deletions(-)
17
18diff --git a/ltrace-elf.c b/ltrace-elf.c
19index beaf69f..2be609c 100644
20--- a/ltrace-elf.c
21+++ b/ltrace-elf.c
22@@ -819,7 +819,7 @@ mark_chain_latent(struct library_symbol *libsym)
23 {
24 for (; libsym != NULL; libsym = libsym->next) {
25 debug(DEBUG_FUNCTION, "marking %s latent", libsym->name);
26- libsym->latent = 1;
27+ libsym->latent = true;
28 }
29 }
30
31diff --git a/sysdeps/linux-gnu/trace.c b/sysdeps/linux-gnu/trace.c
32index 12c8747..b7f4c57 100644
33--- a/sysdeps/linux-gnu/trace.c
34+++ b/sysdeps/linux-gnu/trace.c
35@@ -310,13 +310,13 @@ send_sigstop(struct process *task, void *data)
36 * weed out unnecessary looping. */
37 if (st == PS_SLEEPING
38 && is_vfork_parent(task)) {
39- task_info->vforked = 1;
40+ task_info->vforked = true;
41 return CBS_CONT;
42 }
43
44 if (task_kill(task->pid, SIGSTOP) >= 0) {
45 debug(DEBUG_PROCESS, "send SIGSTOP to %d", task->pid);
46- task_info->sigstopped = 1;
47+ task_info->sigstopped = true;
48 } else
49 fprintf(stderr,
50 "Warning: couldn't send SIGSTOP to %d\n", task->pid);
51@@ -442,7 +442,7 @@ handle_stopping_event(struct pid_task *task_info, Event **eventp)
52 {
53 /* Mark all events, so that we know whom to SIGCONT later. */
54 if (task_info != NULL)
55- task_info->got_event = 1;
56+ task_info->got_event = true;
57
58 Event *event = *eventp;
59
60@@ -454,7 +454,7 @@ handle_stopping_event(struct pid_task *task_info, Event **eventp)
61 debug(DEBUG_PROCESS, "SIGSTOP delivered to %d", task_info->pid);
62 if (task_info->sigstopped
63 && !task_info->delivered) {
64- task_info->delivered = 1;
65+ task_info->delivered = true;
66 *eventp = NULL; // sink the event
67 } else
68 fprintf(stderr, "suspicious: %d got SIGSTOP, but "
69@@ -748,7 +748,7 @@ process_stopping_on_event(struct event_handler *super, Event *event)
70 debug(1, "%d LT_EV_SYSRET", event->proc->pid);
71 event_to_queue = 0;
72 if (task_info != NULL)
73- task_info->sysret = 1;
74+ task_info->sysret = true;
75 }
76
77 switch (state) {
78@@ -1070,7 +1070,7 @@ process_vfork_on_event(struct event_handler *super, Event *event)
79 &event->e_un.brk_addr, &sbp);
80 assert(sbp != NULL);
81 breakpoint_turn_on(sbp, proc->leader);
82- self->vfork_bp_refd = 1;
83+ self->vfork_bp_refd = true;
84 }
85 break;
86
diff --git a/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/meta-oe/recipes-devtools/ltrace/ltrace_0.8.1.bb
index f84d989eef..77bb61830b 100644
--- a/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/meta-oe/recipes-devtools/ltrace/ltrace_0.8.1.bb
@@ -9,25 +9,24 @@ HOMEPAGE = "http://ltrace.org/"
9LICENSE = "GPL-2.0-only" 9LICENSE = "GPL-2.0-only"
10LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a" 10LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
11 11
12PE = "1" 12PE = "2"
13PV = "7.91+git" 13SRCREV = "7ef6e6097586b751cce298c256a919404dab259d"
14SRCREV = "8eabf684ba6b11ae7a1a843aca3c0657c6329d73"
15 14
16DEPENDS = "elfutils" 15DEPENDS = "elfutils"
17SRC_URI = "git://gitlab.com/cespedes/ltrace.git;protocol=https;branch=main \ 16SRC_URI = "git://gitlab.com/cespedes/ltrace.git;protocol=https;branch=main;tag=${PV} \
18 file://configure-allow-to-disable-selinux-support.patch \ 17 file://configure-allow-to-disable-selinux-support.patch \
19 file://0001-Use-correct-enum-type.patch \ 18 file://0001-Use-correct-enum-type.patch \
20 file://0002-Fix-const-qualifier-error.patch \ 19 file://0002-Fix-const-qualifier-error.patch \
21 file://0001-Add-support-for-mips64-n32-n64.patch \ 20 file://0001-Add-support-for-mips64-n32-n64.patch \
22 file://0001-configure-Recognise-linux-musl-as-a-host-OS.patch \
23 file://0001-mips-plt.c-Delete-include-error.h.patch \ 21 file://0001-mips-plt.c-Delete-include-error.h.patch \
24 file://0001-move-fprintf-into-same-block-where-modname-and-symna.patch \ 22 file://0001-move-fprintf-into-same-block-where-modname-and-symna.patch \
25 file://0001-hook-Do-not-append-int-to-std-string.patch \ 23 file://0001-hook-Do-not-append-int-to-std-string.patch \
26 file://0001-Bug-fix-for-data-type-length-judgment.patch \ 24 file://0001-Bug-fix-for-data-type-length-judgment.patch \
27 file://0001-ppc-Remove-unused-host_powerpc64-function.patch \ 25 file://0001-ppc-Remove-unused-host_powerpc64-function.patch \
28 file://0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch \ 26 file://0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch \
29 file://0001-Fix-type-of-single-bit-bitfields.patch \
30 file://0001-proc-Make-PROC_PID_FILE-not-use-variable-length-arra.patch \ 27 file://0001-proc-Make-PROC_PID_FILE-not-use-variable-length-arra.patch \
28 file://0001-dwarf_prototypes-return-NULL-from-NEXT_SIBLING-on-er.patch \
29 file://0001-trace-fix-1-bit-bitfield-assignments-for-clang-Wsing.patch \
31 " 30 "
32SRC_URI:append:libc-musl = " file://add_ppc64le.patch" 31SRC_URI:append:libc-musl = " file://add_ppc64le.patch"
33 32
diff --git a/meta-oe/recipes-devtools/luajit/luajit_git.bb b/meta-oe/recipes-devtools/luajit/luajit_git.bb
index 9d392f1c29..9873ed6f05 100644
--- a/meta-oe/recipes-devtools/luajit/luajit_git.bb
+++ b/meta-oe/recipes-devtools/luajit/luajit_git.bb
@@ -1,6 +1,6 @@
1SUMMARY = "Just-In-Time Compiler for Lua" 1SUMMARY = "Just-In-Time Compiler for Lua"
2LICENSE = "MIT" 2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=d421a5e2a24207f5e260537399a9a38b" 3LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=a2c43bf4a9ea63755af2131b0ae59ff3"
4HOMEPAGE = "http://luajit.org" 4HOMEPAGE = "http://luajit.org"
5 5
6SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http;branch=v2.1 \ 6SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http;branch=v2.1 \
@@ -9,7 +9,7 @@ SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http;branch=v2.1 \
9 " 9 "
10 10
11PV = "2.1" 11PV = "2.1"
12SRCREV = "538a82133ad6fddfd0ca64de167c4aca3bc1a2da" 12SRCREV = "659a61693aa3b87661864ad0f12eee14c865cd7f"
13 13
14inherit pkgconfig binconfig siteinfo 14inherit pkgconfig binconfig siteinfo
15 15
diff --git a/meta-oe/recipes-devtools/mpich/mpich_5.0.0.bb b/meta-oe/recipes-devtools/mpich/mpich_5.0.1.bb
index 505fc6f92b..55f6cde82f 100644
--- a/meta-oe/recipes-devtools/mpich/mpich_5.0.0.bb
+++ b/meta-oe/recipes-devtools/mpich/mpich_5.0.1.bb
@@ -6,7 +6,7 @@ LICENSE = "BSD-2-Clause"
6LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3a296dfb961b957b0e8adf67d8478d3d" 6LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3a296dfb961b957b0e8adf67d8478d3d"
7 7
8SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz" 8SRC_URI = "http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz"
9SRC_URI[sha256sum] = "e9350e32224283e95311f22134f36c98e3cd1c665d17fae20a6cc92ed3cffe11" 9SRC_URI[sha256sum] = "8c1832a13ddacf071685069f5fadfd1f2877a29e1a628652892c65211b1f3327"
10 10
11RDEPENDS:${PN} += "bash perl libxml2" 11RDEPENDS:${PN} += "bash perl libxml2"
12 12
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_22.22.1.bb b/meta-oe/recipes-devtools/nodejs/nodejs_22.22.2.bb
index 09d6b896b2..3a1385f70a 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_22.22.1.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_22.22.2.bb
@@ -42,7 +42,7 @@ SRC_URI:append:class-target = " \
42SRC_URI:append:toolchain-clang:powerpc64le = " \ 42SRC_URI:append:toolchain-clang:powerpc64le = " \
43 file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \ 43 file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \
44 " 44 "
45SRC_URI[sha256sum] = "87104b07e7acee748bcc5391e1bc69cf3571caa0fdfb8b1d6b5fd3f9599b7849" 45SRC_URI[sha256sum] = "b6bedd3a8cacd5df7df015a5088264b12c74a277ba60684cb9642ae8eb743132"
46 46
47S = "${UNPACKDIR}/node-v${PV}" 47S = "${UNPACKDIR}/node-v${PV}"
48 48
@@ -214,3 +214,11 @@ python __anonymous () {
214} 214}
215 215
216BBCLASSEXTEND = "native" 216BBCLASSEXTEND = "native"
217
218CVE_STATUS[CVE-2026-21710] = "fixed-version: fixed since v22.22.2"
219CVE_STATUS[CVE-2026-21712] = "cpe-incorrect: only v24 and v25 are affected"
220CVE_STATUS[CVE-2026-21713] = "fixed-version: fixed since v22.22.2"
221CVE_STATUS[CVE-2026-21714] = "fixed-version: fixed since v22.22.2"
222CVE_STATUS[CVE-2026-21715] = "fixed-version: fixed since v22.22.2"
223CVE_STATUS[CVE-2026-21716] = "fixed-version: fixed since v22.22.2"
224CVE_STATUS[CVE-2026-21717] = "fixed-version: fixed since v22.22.2"
diff --git a/meta-oe/recipes-devtools/php/php_8.5.4.bb b/meta-oe/recipes-devtools/php/php_8.5.5.bb
index efa778b6d8..2924b478ad 100644
--- a/meta-oe/recipes-devtools/php/php_8.5.4.bb
+++ b/meta-oe/recipes-devtools/php/php_8.5.5.bb
@@ -32,7 +32,7 @@ UPSTREAM_CHECK_REGEX = "releases/tag/php-(?P<pver>\d+(\.\d+)+)"
32 32
33S = "${UNPACKDIR}/php-${PV}" 33S = "${UNPACKDIR}/php-${PV}"
34 34
35SRC_URI[sha256sum] = "2ac929a29a6b7ef4b8acec981a417b91bdf7f548f597df665cc56ab9ea95fc75" 35SRC_URI[sha256sum] = "ee262beff61c431965d1f97192854b36208adeac38983c3498bb3500ae87283c"
36 36
37CVE_STATUS_GROUPS += "CVE_STATUS_PHP" 37CVE_STATUS_GROUPS += "CVE_STATUS_PHP"
38CVE_STATUS_PHP[status] = "fixed-version: The name of this product is exactly the same as github.com/emlog/emlog. CVE can be safely ignored." 38CVE_STATUS_PHP[status] = "fixed-version: The name of this product is exactly the same as github.com/emlog/emlog. CVE can be safely ignored."
diff --git a/meta-oe/recipes-devtools/protobuf/protobuf-c/protobuf-30.patch b/meta-oe/recipes-devtools/protobuf/protobuf-c/protobuf-30.patch
deleted file mode 100644
index 1aae1f17b0..0000000000
--- a/meta-oe/recipes-devtools/protobuf/protobuf-c/protobuf-30.patch
+++ /dev/null
@@ -1,1446 +0,0 @@
1From b28683f8027bf1e886b748b5603eb16d203b5a92 Mon Sep 17 00:00:00 2001
2From: Robert Edmonds <edmonds@users.noreply.github.com>
3Date: Sat, 8 Feb 2025 18:18:33 -0500
4Subject: [PATCH 01/11] protoc-gen-c/c_helpers.h: Move compat defines into new
5 header file compat.h
6
7Upstream-Status: Backport [https://gitlab.archlinux.org/archlinux/packaging/packages/protobuf-c/-/blob/main/protobuf-30.patch]
8Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
9
10---
11 protoc-gen-c/c_field.cc | 1 +
12 protoc-gen-c/c_helpers.cc | 1 +
13 protoc-gen-c/c_helpers.h | 10 -------
14 protoc-gen-c/c_message.cc | 1 +
15 protoc-gen-c/c_primitive_field.cc | 1 +
16 protoc-gen-c/compat.h | 46 +++++++++++++++++++++++++++++++
17 protoc-gen-c/main.cc | 1 +
18 7 files changed, 51 insertions(+), 10 deletions(-)
19 create mode 100644 protoc-gen-c/compat.h
20
21diff --git a/protoc-gen-c/c_field.cc b/protoc-gen-c/c_field.cc
22index 5e79967b..d6d8597e 100644
23--- a/protoc-gen-c/c_field.cc
24+++ b/protoc-gen-c/c_field.cc
25@@ -74,6 +74,7 @@
26 #include "c_message_field.h"
27 #include "c_primitive_field.h"
28 #include "c_string_field.h"
29+#include "compat.h"
30
31 namespace protobuf_c {
32
33diff --git a/protoc-gen-c/c_helpers.cc b/protoc-gen-c/c_helpers.cc
34index 5edcf904..c38843f8 100644
35--- a/protoc-gen-c/c_helpers.cc
36+++ b/protoc-gen-c/c_helpers.cc
37@@ -73,6 +73,7 @@
38 #include <google/protobuf/stubs/common.h>
39
40 #include "c_helpers.h"
41+#include "compat.h"
42
43 namespace protobuf_c {
44
45diff --git a/protoc-gen-c/c_helpers.h b/protoc-gen-c/c_helpers.h
46index 943676e9..e69504bb 100644
47--- a/protoc-gen-c/c_helpers.h
48+++ b/protoc-gen-c/c_helpers.h
49@@ -186,16 +186,6 @@ inline int FieldSyntax(const google::protobuf::FieldDescriptor* field) {
50 return 2;
51 }
52
53-// Work around changes in protobuf >= 22.x without breaking compilation against
54-// older protobuf versions.
55-#if GOOGLE_PROTOBUF_VERSION >= 4022000
56-# define GOOGLE_ARRAYSIZE ABSL_ARRAYSIZE
57-# define GOOGLE_CHECK_EQ ABSL_CHECK_EQ
58-# define GOOGLE_CHECK_EQ ABSL_CHECK_EQ
59-# define GOOGLE_DCHECK_GE ABSL_DCHECK_GE
60-# define GOOGLE_LOG ABSL_LOG
61-#endif
62-
63 } // namespace protobuf_c
64
65 #endif // PROTOBUF_C_PROTOC_GEN_C_C_HELPERS_H__
66diff --git a/protoc-gen-c/c_message.cc b/protoc-gen-c/c_message.cc
67index d4a9a01e..46413873 100644
68--- a/protoc-gen-c/c_message.cc
69+++ b/protoc-gen-c/c_message.cc
70@@ -78,6 +78,7 @@
71 #include "c_extension.h"
72 #include "c_helpers.h"
73 #include "c_message.h"
74+#include "compat.h"
75
76 namespace protobuf_c {
77
78diff --git a/protoc-gen-c/c_primitive_field.cc b/protoc-gen-c/c_primitive_field.cc
79index 253b00bd..588f60e6 100644
80--- a/protoc-gen-c/c_primitive_field.cc
81+++ b/protoc-gen-c/c_primitive_field.cc
82@@ -67,6 +67,7 @@
83
84 #include "c_helpers.h"
85 #include "c_primitive_field.h"
86+#include "compat.h"
87
88 namespace protobuf_c {
89
90diff --git a/protoc-gen-c/compat.h b/protoc-gen-c/compat.h
91new file mode 100644
92index 00000000..2ee78281
93--- /dev/null
94+++ b/protoc-gen-c/compat.h
95@@ -0,0 +1,46 @@
96+// Copyright (c) 2008-2025, Dave Benson and the protobuf-c authors.
97+// All rights reserved.
98+//
99+// Redistribution and use in source and binary forms, with or without
100+// modification, are permitted provided that the following conditions are
101+// met:
102+//
103+// * Redistributions of source code must retain the above copyright
104+// notice, this list of conditions and the following disclaimer.
105+//
106+// * Redistributions in binary form must reproduce the above
107+// copyright notice, this list of conditions and the following disclaimer
108+// in the documentation and/or other materials provided with the
109+// distribution.
110+//
111+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
112+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
113+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
114+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
115+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
116+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
117+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
118+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
119+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
120+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
121+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
122+
123+#ifndef PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
124+#define PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
125+
126+#if GOOGLE_PROTOBUF_VERSION >= 4022000
127+# define GOOGLE_ARRAYSIZE ABSL_ARRAYSIZE
128+# define GOOGLE_CHECK_EQ ABSL_CHECK_EQ
129+# define GOOGLE_DCHECK_GE ABSL_DCHECK_GE
130+# define GOOGLE_LOG ABSL_LOG
131+#endif
132+
133+namespace protobuf_c {
134+
135+namespace compat {
136+
137+} // namespace compat
138+
139+} // namespace protobuf_c
140+
141+#endif // PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
142diff --git a/protoc-gen-c/main.cc b/protoc-gen-c/main.cc
143index 0656c113..5ab929d3 100644
144--- a/protoc-gen-c/main.cc
145+++ b/protoc-gen-c/main.cc
146@@ -32,6 +32,7 @@
147
148 #include "c_generator.h"
149 #include "c_helpers.h"
150+#include "compat.h"
151
152 int main(int argc, char* argv[]) {
153 protobuf_c::CGenerator c_generator;
154
155From 1678f1fba6f2d3e5c1db2817495ddcd72bd4e87b Mon Sep 17 00:00:00 2001
156From: Robert Edmonds <edmonds@users.noreply.github.com>
157Date: Sat, 8 Feb 2025 20:09:03 -0500
158Subject: [PATCH 02/11] protoc-gen-c/compat.h: Add `compat::StringView` type
159
160protobuf >= 30.x replaces `const std::string&` in various APIs with
161its own string view type that may actually be a `absl::string_view`.
162Introduce our own `compat::StringView` type that we can use instead
163of `const std::string&` in order to support compiling across multiple
164protobuf versions.
165---
166 protoc-gen-c/compat.h | 8 ++++++++
167 1 file changed, 8 insertions(+)
168
169diff --git a/protoc-gen-c/compat.h b/protoc-gen-c/compat.h
170index 2ee78281..fe8041b5 100644
171--- a/protoc-gen-c/compat.h
172+++ b/protoc-gen-c/compat.h
173@@ -28,6 +28,8 @@
174 #ifndef PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
175 #define PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
176
177+#include <string>
178+
179 #if GOOGLE_PROTOBUF_VERSION >= 4022000
180 # define GOOGLE_ARRAYSIZE ABSL_ARRAYSIZE
181 # define GOOGLE_CHECK_EQ ABSL_CHECK_EQ
182@@ -39,6 +41,12 @@ namespace protobuf_c {
183
184 namespace compat {
185
186+#if GOOGLE_PROTOBUF_VERSION >= 6030000
187+typedef google::protobuf::internal::DescriptorStringView StringView;
188+#else
189+typedef const std::string& StringView;
190+#endif
191+
192 } // namespace compat
193
194 } // namespace protobuf_c
195
196From db5252c131c82fb48ee599179b6989a577b7fbc8 Mon Sep 17 00:00:00 2001
197From: Robert Edmonds <edmonds@users.noreply.github.com>
198Date: Sat, 8 Feb 2025 20:13:44 -0500
199Subject: [PATCH 03/11] Remove some unused functions
200
201---
202 protoc-gen-c/c_helpers.cc | 64 ---------------------------------------
203 protoc-gen-c/c_helpers.h | 3 --
204 2 files changed, 67 deletions(-)
205
206diff --git a/protoc-gen-c/c_helpers.cc b/protoc-gen-c/c_helpers.cc
207index c38843f8..bbb4a615 100644
208--- a/protoc-gen-c/c_helpers.cc
209+++ b/protoc-gen-c/c_helpers.cc
210@@ -90,14 +90,6 @@ namespace protobuf_c {
211 #pragma warning(disable:4996)
212 #endif
213
214-std::string DotsToUnderscores(const std::string& name) {
215- return StringReplace(name, ".", "_", true);
216-}
217-
218-std::string DotsToColons(const std::string& name) {
219- return StringReplace(name, ".", "::", true);
220-}
221-
222 std::string SimpleFtoa(float f) {
223 char buf[100];
224 snprintf(buf,sizeof(buf),"%.*g", FLT_DIG, f);
225@@ -333,11 +325,6 @@ std::string FilenameIdentifier(const std::string& filename) {
226 return result;
227 }
228
229-// Return the name of the BuildDescriptors() function for a given file.
230-std::string GlobalBuildDescriptorsName(const std::string& filename) {
231- return "proto_BuildDescriptors_" + FilenameIdentifier(filename);
232-}
233-
234 std::string GetLabelName(google::protobuf::FieldDescriptor::Label label) {
235 switch (label) {
236 case google::protobuf::FieldDescriptor::LABEL_OPTIONAL: return "optional";
237@@ -392,57 +379,6 @@ WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, const int *
238 }
239 }
240
241-
242-
243-// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
244-// XXXXXXXXX this stuff is copied from strutils.cc !!!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXx
245-// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
246-// ----------------------------------------------------------------------
247-// StringReplace()
248-// Replace the "old" pattern with the "new" pattern in a string,
249-// and append the result to "res". If replace_all is false,
250-// it only replaces the first instance of "old."
251-// ----------------------------------------------------------------------
252-
253-void StringReplace(const std::string& s, const std::string& oldsub,
254- const std::string& newsub, bool replace_all,
255- std::string* res) {
256- if (oldsub.empty()) {
257- res->append(s); // if empty, append the given string.
258- return;
259- }
260-
261- std::string::size_type start_pos = 0;
262- std::string::size_type pos;
263- do {
264- pos = s.find(oldsub, start_pos);
265- if (pos == std::string::npos) {
266- break;
267- }
268- res->append(s, start_pos, pos - start_pos);
269- res->append(newsub);
270- start_pos = pos + oldsub.size(); // start searching again after the "old"
271- } while (replace_all);
272- res->append(s, start_pos, s.length() - start_pos);
273-}
274-
275-
276-// ----------------------------------------------------------------------
277-// StringReplace()
278-// Give me a string and two patterns "old" and "new", and I replace
279-// the first instance of "old" in the string with "new", if it
280-// exists. If "global" is true; call this repeatedly until it
281-// fails. RETURN a new string, regardless of whether the replacement
282-// happened or not.
283-// ----------------------------------------------------------------------
284-
285-std::string StringReplace(const std::string& s, const std::string& oldsub,
286- const std::string& newsub, bool replace_all) {
287- std::string ret;
288- StringReplace(s, oldsub, newsub, replace_all, &ret);
289- return ret;
290-}
291-
292 // ----------------------------------------------------------------------
293 // SplitStringUsing()
294 // Split a string using a character delimiter. Append the components
295diff --git a/protoc-gen-c/c_helpers.h b/protoc-gen-c/c_helpers.h
296index e69504bb..377d4272 100644
297--- a/protoc-gen-c/c_helpers.h
298+++ b/protoc-gen-c/c_helpers.h
299@@ -150,9 +150,6 @@ const char* DeclaredTypeMethodName(google::protobuf::FieldDescriptor::Type type)
300 // Convert a file name into a valid identifier.
301 std::string FilenameIdentifier(const std::string& filename);
302
303-// Return the name of the BuildDescriptors() function for a given file.
304-std::string GlobalBuildDescriptorsName(const std::string& filename);
305-
306 // return 'required', 'optional', or 'repeated'
307 std::string GetLabelName(google::protobuf::FieldDescriptor::Label label);
308
309
310From bc2cb66d908f016dd3f7082c8a6ad7c58bc03412 Mon Sep 17 00:00:00 2001
311From: Robert Edmonds <edmonds@users.noreply.github.com>
312Date: Sat, 8 Feb 2025 20:18:05 -0500
313Subject: [PATCH 04/11] Use `compat::StringView` type across various function
314 signatures
315
316---
317 protoc-gen-c/c_helpers.cc | 44 +++++++++++++++++++++------------------
318 protoc-gen-c/c_helpers.h | 36 ++++++++++++++++----------------
319 2 files changed, 42 insertions(+), 38 deletions(-)
320
321diff --git a/protoc-gen-c/c_helpers.cc b/protoc-gen-c/c_helpers.cc
322index bbb4a615..c759c8c2 100644
323--- a/protoc-gen-c/c_helpers.cc
324+++ b/protoc-gen-c/c_helpers.cc
325@@ -96,6 +96,7 @@ std::string SimpleFtoa(float f) {
326 buf[sizeof(buf)-1] = 0; /* should NOT be necessary */
327 return buf;
328 }
329+
330 std::string SimpleDtoa(double d) {
331 char buf[100];
332 snprintf(buf,sizeof(buf),"%.*g", DBL_DIG, d);
333@@ -103,7 +104,7 @@ std::string SimpleDtoa(double d) {
334 return buf;
335 }
336
337-std::string CamelToUpper(const std::string &name) {
338+std::string CamelToUpper(compat::StringView name) {
339 bool was_upper = true; // suppress initial _
340 std::string rv = "";
341 int len = name.length();
342@@ -120,7 +121,8 @@ std::string CamelToUpper(const std::string &name) {
343 }
344 return rv;
345 }
346-std::string CamelToLower(const std::string &name) {
347+
348+std::string CamelToLower(compat::StringView name) {
349 bool was_upper = true; // suppress initial _
350 std::string rv = "";
351 int len = name.length();
352@@ -138,8 +140,7 @@ std::string CamelToLower(const std::string &name) {
353 return rv;
354 }
355
356-
357-std::string ToUpper(const std::string &name) {
358+std::string ToUpper(compat::StringView name) {
359 std::string rv = "";
360 int len = name.length();
361 for (int i = 0; i < len; i++) {
362@@ -147,7 +148,8 @@ std::string ToUpper(const std::string &name) {
363 }
364 return rv;
365 }
366-std::string ToLower(const std::string &name) {
367+
368+std::string ToLower(compat::StringView name) {
369 std::string rv = "";
370 int len = name.length();
371 for (int i = 0; i < len; i++) {
372@@ -155,7 +157,8 @@ std::string ToLower(const std::string &name) {
373 }
374 return rv;
375 }
376-std::string ToCamel(const std::string &name) {
377+
378+std::string ToCamel(compat::StringView name) {
379 std::string rv = "";
380 int len = name.length();
381 bool next_is_upper = true;
382@@ -172,7 +175,7 @@ std::string ToCamel(const std::string &name) {
383 return rv;
384 }
385
386-std::string OverrideFullName(const std::string &full_name, const google::protobuf::FileDescriptor* file) {
387+std::string OverrideFullName(compat::StringView full_name, const google::protobuf::FileDescriptor* file) {
388 const ProtobufCFileOptions opt = file->options().GetExtension(pb_c_file);
389 if (!opt.has_c_package())
390 return full_name;
391@@ -184,7 +187,7 @@ std::string OverrideFullName(const std::string &full_name, const google::protobu
392 return new_name + full_name.substr(file->package().length());
393 }
394
395-std::string FullNameToLower(const std::string &full_name, const google::protobuf::FileDescriptor* file) {
396+std::string FullNameToLower(compat::StringView full_name, const google::protobuf::FileDescriptor* file) {
397 std::vector<std::string> pieces;
398 SplitStringUsing(OverrideFullName(full_name, file), ".", &pieces);
399 std::string rv = "";
400@@ -195,7 +198,8 @@ std::string FullNameToLower(const std::string &full_name, const google::protobuf
401 }
402 return rv;
403 }
404-std::string FullNameToUpper(const std::string &full_name, const google::protobuf::FileDescriptor* file) {
405+
406+std::string FullNameToUpper(compat::StringView full_name, const google::protobuf::FileDescriptor* file) {
407 std::vector<std::string> pieces;
408 SplitStringUsing(OverrideFullName(full_name, file), ".", &pieces);
409 std::string rv = "";
410@@ -206,7 +210,8 @@ std::string FullNameToUpper(const std::string &full_name, const google::protobuf
411 }
412 return rv;
413 }
414-std::string FullNameToC(const std::string &full_name, const google::protobuf::FileDescriptor* file) {
415+
416+std::string FullNameToC(compat::StringView full_name, const google::protobuf::FileDescriptor* file) {
417 std::vector<std::string> pieces;
418 SplitStringUsing(OverrideFullName(full_name, file), ".", &pieces);
419 std::string rv = "";
420@@ -248,7 +253,7 @@ void PrintComment(google::protobuf::io::Printer* printer, std::string comment)
421 }
422 }
423
424-std::string ConvertToSpaces(const std::string &input) {
425+std::string ConvertToSpaces(compat::StringView input) {
426 return std::string(input.size(), ' ');
427 }
428
429@@ -259,8 +264,7 @@ int compare_name_indices_by_name(const void *a, const void *b)
430 return strcmp (ni_a->name, ni_b->name);
431 }
432
433-
434-std::string CEscape(const std::string& src);
435+std::string CEscape(compat::StringView src);
436
437 const char* const kKeywordList[] = {
438 "and", "and_eq", "asm", "auto", "bitand", "bitor", "bool", "break", "case",
439@@ -300,7 +304,7 @@ std::string FieldDeprecated(const google::protobuf::FieldDescriptor* field) {
440 return "";
441 }
442
443-std::string StripProto(const std::string& filename) {
444+std::string StripProto(compat::StringView filename) {
445 if (HasSuffixString(filename, ".protodevel")) {
446 return StripSuffixString(filename, ".protodevel");
447 } else {
448@@ -309,7 +313,7 @@ std::string StripProto(const std::string& filename) {
449 }
450
451 // Convert a file name into a valid identifier.
452-std::string FilenameIdentifier(const std::string& filename) {
453+std::string FilenameIdentifier(compat::StringView filename) {
454 std::string result;
455 for (unsigned i = 0; i < filename.size(); i++) {
456 if (isalnum(filename[i])) {
457@@ -335,7 +339,7 @@ std::string GetLabelName(google::protobuf::FieldDescriptor::Label label) {
458 }
459
460 unsigned
461-WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, const int *values, const std::string &name)
462+WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, const int *values, compat::StringView name)
463 {
464 std::map<std::string, std::string> vars;
465 vars["name"] = name;
466@@ -389,7 +393,7 @@ WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, const int *
467 // ----------------------------------------------------------------------
468 template <typename ITR>
469 static inline
470-void SplitStringToIteratorUsing(const std::string& full,
471+void SplitStringToIteratorUsing(compat::StringView full,
472 const char* delim,
473 ITR& result) {
474 // Optimize the common case where delim is a single character.
475@@ -422,7 +426,7 @@ void SplitStringToIteratorUsing(const std::string& full,
476 }
477 }
478
479-void SplitStringUsing(const std::string& full,
480+void SplitStringUsing(compat::StringView full,
481 const char* delim,
482 std::vector<std::string>* result) {
483 std::back_insert_iterator< std::vector<std::string> > it(*result);
484@@ -435,7 +439,6 @@ char* FastHexToBuffer(int i, char* buffer)
485 return buffer;
486 }
487
488-
489 static int CEscapeInternal(const char* src, int src_len, char* dest,
490 int dest_len, bool use_hex) {
491 const char* src_end = src + src_len;
492@@ -478,7 +481,8 @@ static int CEscapeInternal(const char* src, int src_len, char* dest,
493 dest[used] = '\0'; // doesn't count towards return value though
494 return used;
495 }
496-std::string CEscape(const std::string& src) {
497+
498+std::string CEscape(compat::StringView src) {
499 const int dest_length = src.size() * 4 + 1; // Maximum possible expansion
500 std::unique_ptr<char[]> dest(new char[dest_length]);
501 const int len = CEscapeInternal(src.data(), src.size(),
502diff --git a/protoc-gen-c/c_helpers.h b/protoc-gen-c/c_helpers.h
503index 377d4272..ccd39ca2 100644
504--- a/protoc-gen-c/c_helpers.h
505+++ b/protoc-gen-c/c_helpers.h
506@@ -73,6 +73,8 @@
507
508 #include <protobuf-c/protobuf-c.pb.h>
509
510+#include "compat.h"
511+
512 namespace protobuf_c {
513
514 // --- Borrowed from stubs. ---
515@@ -84,11 +86,10 @@ template <typename T> std::string SimpleItoa(T n) {
516
517 std::string SimpleFtoa(float f);
518 std::string SimpleDtoa(double f);
519-void SplitStringUsing(const std::string &str, const char *delim, std::vector<std::string> *out);
520-std::string CEscape(const std::string& src);
521-std::string StringReplace(const std::string& s, const std::string& oldsub, const std::string& newsub, bool replace_all);
522-inline bool HasSuffixString(const std::string& str, const std::string& suffix) { return str.size() >= suffix.size() && str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; }
523-inline std::string StripSuffixString(const std::string& str, const std::string& suffix) { if (HasSuffixString(str, suffix)) { return str.substr(0, str.size() - suffix.size()); } else { return str; } }
524+void SplitStringUsing(compat::StringView str, const char *delim, std::vector<std::string> *out);
525+std::string CEscape(compat::StringView src);
526+inline bool HasSuffixString(compat::StringView str, compat::StringView suffix) { return str.size() >= suffix.size() && str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; }
527+inline std::string StripSuffixString(compat::StringView str, compat::StringView suffix) { if (HasSuffixString(str, suffix)) { return str.substr(0, str.size() - suffix.size()); } else { return str; } }
528 char* FastHexToBuffer(int i, char* buffer);
529
530
531@@ -110,31 +111,31 @@ inline const google::protobuf::Descriptor* FieldScope(const google::protobuf::Fi
532
533 // convert a CamelCase class name into an all uppercase affair
534 // with underscores separating words, e.g. MyClass becomes MY_CLASS.
535-std::string CamelToUpper(const std::string &class_name);
536-std::string CamelToLower(const std::string &class_name);
537+std::string CamelToUpper(compat::StringView class_name);
538+std::string CamelToLower(compat::StringView class_name);
539
540 // lowercased, underscored name to camel case
541-std::string ToCamel(const std::string &name);
542+std::string ToCamel(compat::StringView name);
543
544 // lowercase the string
545-std::string ToLower(const std::string &class_name);
546-std::string ToUpper(const std::string &class_name);
547+std::string ToLower(compat::StringView class_name);
548+std::string ToUpper(compat::StringView class_name);
549
550 // full_name() to lowercase with underscores
551-std::string FullNameToLower(const std::string &full_name, const google::protobuf::FileDescriptor *file);
552-std::string FullNameToUpper(const std::string &full_name, const google::protobuf::FileDescriptor *file);
553+std::string FullNameToLower(compat::StringView full_name, const google::protobuf::FileDescriptor *file);
554+std::string FullNameToUpper(compat::StringView full_name, const google::protobuf::FileDescriptor *file);
555
556 // full_name() to c-typename (with underscores for packages, otherwise camel case)
557-std::string FullNameToC(const std::string &class_name, const google::protobuf::FileDescriptor *file);
558+std::string FullNameToC(compat::StringView class_name, const google::protobuf::FileDescriptor *file);
559
560 // Splits, indents, formats, and prints comment lines
561 void PrintComment(google::protobuf::io::Printer* printer, std::string comment);
562
563 // make a string of spaces as long as input
564-std::string ConvertToSpaces(const std::string &input);
565+std::string ConvertToSpaces(compat::StringView input);
566
567 // Strips ".proto" or ".protodevel" from the end of a filename.
568-std::string StripProto(const std::string& filename);
569+std::string StripProto(compat::StringView filename);
570
571 // Get the C++ type name for a primitive type (e.g. "double", "::google::protobuf::int32", etc.).
572 // Note: non-built-in type names will be qualified, meaning they will start
573@@ -148,15 +149,14 @@ const char* PrimitiveTypeName(google::protobuf::FieldDescriptor::CppType type);
574 const char* DeclaredTypeMethodName(google::protobuf::FieldDescriptor::Type type);
575
576 // Convert a file name into a valid identifier.
577-std::string FilenameIdentifier(const std::string& filename);
578+std::string FilenameIdentifier(compat::StringView filename);
579
580 // return 'required', 'optional', or 'repeated'
581 std::string GetLabelName(google::protobuf::FieldDescriptor::Label label);
582
583-
584 // write IntRanges entries for a bunch of sorted values.
585 // returns the number of ranges there are to bsearch.
586-unsigned WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, const int *values, const std::string &name);
587+unsigned WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, const int *values, compat::StringView name);
588
589 struct NameIndex
590 {
591
592From 75f1c32cc429233a3726358c999009f9ea373b45 Mon Sep 17 00:00:00 2001
593From: Robert Edmonds <edmonds@users.noreply.github.com>
594Date: Sat, 8 Feb 2025 20:25:43 -0500
595Subject: [PATCH 05/11] Convert string views to owned strings where necessary
596
597---
598 protoc-gen-c/c_enum.cc | 2 +-
599 protoc-gen-c/c_enum_field.cc | 2 +-
600 protoc-gen-c/c_helpers.cc | 8 ++++----
601 protoc-gen-c/c_helpers.h | 3 +--
602 4 files changed, 7 insertions(+), 8 deletions(-)
603
604diff --git a/protoc-gen-c/c_enum.cc b/protoc-gen-c/c_enum.cc
605index 9212ab82..311e4c86 100644
606--- a/protoc-gen-c/c_enum.cc
607+++ b/protoc-gen-c/c_enum.cc
608@@ -152,7 +152,7 @@ void EnumGenerator::GenerateValueInitializer(google::protobuf::io::Printer *prin
609 descriptor_->file()->options().optimize_for() ==
610 google::protobuf::FileOptions_OptimizeMode_CODE_SIZE;
611 vars["enum_value_name"] = vd->name();
612- vars["c_enum_value_name"] = FullNameToUpper(descriptor_->full_name(), descriptor_->file()) + "__" + vd->name();
613+ vars["c_enum_value_name"] = FullNameToUpper(descriptor_->full_name(), descriptor_->file()) + "__" + std::string(vd->name());
614 vars["value"] = SimpleItoa(vd->number());
615 if (optimize_code_size)
616 printer->Print(vars, " { NULL, NULL, $value$ }, /* CODE_SIZE */\n");
617diff --git a/protoc-gen-c/c_enum_field.cc b/protoc-gen-c/c_enum_field.cc
618index 0926ae59..c3111f50 100644
619--- a/protoc-gen-c/c_enum_field.cc
620+++ b/protoc-gen-c/c_enum_field.cc
621@@ -78,7 +78,7 @@ void SetEnumVariables(const google::protobuf::FieldDescriptor* descriptor,
622 (*variables)["type"] = FullNameToC(descriptor->enum_type()->full_name(), descriptor->enum_type()->file());
623 const google::protobuf::EnumValueDescriptor* default_value = descriptor->default_value_enum();
624 (*variables)["default"] = FullNameToUpper(default_value->type()->full_name(), default_value->type()->file())
625- + "__" + default_value->name();
626+ + "__" + std::string(default_value->name());
627 (*variables)["deprecated"] = FieldDeprecated(descriptor);
628 }
629
630diff --git a/protoc-gen-c/c_helpers.cc b/protoc-gen-c/c_helpers.cc
631index c759c8c2..1aecef93 100644
632--- a/protoc-gen-c/c_helpers.cc
633+++ b/protoc-gen-c/c_helpers.cc
634@@ -178,13 +178,13 @@ std::string ToCamel(compat::StringView name) {
635 std::string OverrideFullName(compat::StringView full_name, const google::protobuf::FileDescriptor* file) {
636 const ProtobufCFileOptions opt = file->options().GetExtension(pb_c_file);
637 if (!opt.has_c_package())
638- return full_name;
639+ return std::string(full_name);
640
641 std::string new_name = opt.c_package();
642 if (file->package().empty())
643 new_name += ".";
644
645- return new_name + full_name.substr(file->package().length());
646+ return new_name + std::string(full_name.substr(file->package().length()));
647 }
648
649 std::string FullNameToLower(compat::StringView full_name, const google::protobuf::FileDescriptor* file) {
650@@ -418,10 +418,10 @@ void SplitStringToIteratorUsing(compat::StringView full,
651 while (begin_index != std::string::npos) {
652 end_index = full.find_first_of(delim, begin_index);
653 if (end_index == std::string::npos) {
654- *result++ = full.substr(begin_index);
655+ *result++ = std::string(full.substr(begin_index));
656 return;
657 }
658- *result++ = full.substr(begin_index, (end_index - begin_index));
659+ *result++ = std::string(full.substr(begin_index, (end_index - begin_index)));
660 begin_index = full.find_first_not_of(delim, end_index);
661 }
662 }
663diff --git a/protoc-gen-c/c_helpers.h b/protoc-gen-c/c_helpers.h
664index ccd39ca2..985e4db6 100644
665--- a/protoc-gen-c/c_helpers.h
666+++ b/protoc-gen-c/c_helpers.h
667@@ -89,10 +89,9 @@ std::string SimpleDtoa(double f);
668 void SplitStringUsing(compat::StringView str, const char *delim, std::vector<std::string> *out);
669 std::string CEscape(compat::StringView src);
670 inline bool HasSuffixString(compat::StringView str, compat::StringView suffix) { return str.size() >= suffix.size() && str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; }
671-inline std::string StripSuffixString(compat::StringView str, compat::StringView suffix) { if (HasSuffixString(str, suffix)) { return str.substr(0, str.size() - suffix.size()); } else { return str; } }
672+inline std::string StripSuffixString(compat::StringView str, compat::StringView suffix) { if (HasSuffixString(str, suffix)) { return std::string(str.substr(0, str.size() - suffix.size())); } else { return std::string(str); } }
673 char* FastHexToBuffer(int i, char* buffer);
674
675-
676 // Get the (unqualified) name that should be used for this field in C code.
677 // The name is coerced to lower-case to emulate proto1 behavior. People
678 // should be using lowercase-with-underscores style for proto field names
679
680From 0edca93db369fb84f01cc0d4e3ee4cd6c2ad7f4f Mon Sep 17 00:00:00 2001
681From: Robert Edmonds <edmonds@users.noreply.github.com>
682Date: Sat, 8 Feb 2025 20:39:11 -0500
683Subject: [PATCH 06/11] Convert various uses of `const char *` to
684 `compat::StringView`
685
686Also replace some uses of arrays manually allocated with new/delete with
687uses of `std::vector`.
688---
689 protoc-gen-c/c_enum.cc | 35 ++++++++++++++++++-----------------
690 protoc-gen-c/c_helpers.cc | 2 +-
691 protoc-gen-c/c_helpers.h | 2 +-
692 protoc-gen-c/c_message.cc | 28 ++++++++++++----------------
693 protoc-gen-c/c_service.cc | 19 +++++++++----------
694 5 files changed, 41 insertions(+), 45 deletions(-)
695
696diff --git a/protoc-gen-c/c_enum.cc b/protoc-gen-c/c_enum.cc
697index 311e4c86..c7839edd 100644
698--- a/protoc-gen-c/c_enum.cc
699+++ b/protoc-gen-c/c_enum.cc
700@@ -142,7 +142,7 @@ struct ValueIndex
701 int value;
702 unsigned index;
703 unsigned final_index; /* index in uniqified array of values */
704- const char *name;
705+ compat::StringView name;
706 };
707 void EnumGenerator::GenerateValueInitializer(google::protobuf::io::Printer *printer, int index)
708 {
709@@ -176,7 +176,7 @@ static int compare_value_indices_by_name(const void *a, const void *b)
710 {
711 const ValueIndex *vi_a = (const ValueIndex *) a;
712 const ValueIndex *vi_b = (const ValueIndex *) b;
713- return strcmp (vi_a->name, vi_b->name);
714+ return vi_a->name.compare(vi_b->name);
715 }
716
717 void EnumGenerator::GenerateEnumDescriptor(google::protobuf::io::Printer* printer) {
718@@ -194,18 +194,20 @@ void EnumGenerator::GenerateEnumDescriptor(google::protobuf::io::Printer* printe
719
720 // Sort by name and value, dropping duplicate values if they appear later.
721 // TODO: use a c++ paradigm for this!
722- NameIndex *name_index = new NameIndex[descriptor_->value_count()];
723- ValueIndex *value_index = new ValueIndex[descriptor_->value_count()];
724- for (int j = 0; j < descriptor_->value_count(); j++) {
725+ std::vector<ValueIndex> value_index;
726+ for (unsigned j = 0; j < descriptor_->value_count(); j++) {
727 const google::protobuf::EnumValueDescriptor *vd = descriptor_->value(j);
728- name_index[j].index = j;
729- name_index[j].name = vd->name().c_str();
730- value_index[j].index = j;
731- value_index[j].value = vd->number();
732- value_index[j].name = vd->name().c_str();
733+ value_index.push_back({
734+ .value = vd->number(),
735+ .index = j,
736+ .final_index = 0,
737+ .name = vd->name(),
738+ });
739 }
740- qsort(value_index, descriptor_->value_count(),
741- sizeof(ValueIndex), compare_value_indices_by_value_then_index);
742+ qsort(&value_index[0],
743+ value_index.size(),
744+ sizeof(ValueIndex),
745+ compare_value_indices_by_value_then_index);
746
747 // only record unique values
748 int n_unique_values;
749@@ -275,8 +277,10 @@ void EnumGenerator::GenerateEnumDescriptor(google::protobuf::io::Printer* printe
750 vars["n_ranges"] = SimpleItoa(n_ranges);
751
752 if (!optimize_code_size) {
753- qsort(value_index, descriptor_->value_count(),
754- sizeof(ValueIndex), compare_value_indices_by_name);
755+ qsort(&value_index[0],
756+ value_index.size(),
757+ sizeof(ValueIndex),
758+ compare_value_indices_by_name);
759 printer->Print(vars,
760 "static const ProtobufCEnumValueIndex $lcclassname$__enum_values_by_name[$value_count$] =\n"
761 "{\n");
762@@ -319,9 +323,6 @@ void EnumGenerator::GenerateEnumDescriptor(google::protobuf::io::Printer* printe
763 " NULL,NULL,NULL,NULL /* reserved[1234] */\n"
764 "};\n");
765 }
766-
767- delete[] value_index;
768- delete[] name_index;
769 }
770
771 } // namespace protobuf_c
772diff --git a/protoc-gen-c/c_helpers.cc b/protoc-gen-c/c_helpers.cc
773index 1aecef93..dec9ce28 100644
774--- a/protoc-gen-c/c_helpers.cc
775+++ b/protoc-gen-c/c_helpers.cc
776@@ -261,7 +261,7 @@ int compare_name_indices_by_name(const void *a, const void *b)
777 {
778 const NameIndex *ni_a = (const NameIndex *) a;
779 const NameIndex *ni_b = (const NameIndex *) b;
780- return strcmp (ni_a->name, ni_b->name);
781+ return ni_a->name.compare(ni_b->name);
782 }
783
784 std::string CEscape(compat::StringView src);
785diff --git a/protoc-gen-c/c_helpers.h b/protoc-gen-c/c_helpers.h
786index 985e4db6..69369997 100644
787--- a/protoc-gen-c/c_helpers.h
788+++ b/protoc-gen-c/c_helpers.h
789@@ -160,7 +160,7 @@ unsigned WriteIntRanges(google::protobuf::io::Printer* printer, int n_values, co
790 struct NameIndex
791 {
792 unsigned index;
793- const char *name;
794+ compat::StringView name;
795 };
796 int compare_name_indices_by_name(const void*, const void*);
797
798diff --git a/protoc-gen-c/c_message.cc b/protoc-gen-c/c_message.cc
799index 46413873..7252923c 100644
800--- a/protoc-gen-c/c_message.cc
801+++ b/protoc-gen-c/c_message.cc
802@@ -567,27 +567,26 @@ GenerateMessageDescriptor(google::protobuf::io::Printer* printer, bool gen_init)
803 "static const ProtobufCFieldDescriptor $lcclassname$__field_descriptors[$n_fields$] =\n"
804 "{\n");
805 printer->Indent();
806- const google::protobuf::FieldDescriptor **sorted_fields = new const google::protobuf::FieldDescriptor *[descriptor_->field_count()];
807+
808+ std::vector<const google::protobuf::FieldDescriptor*> sorted_fields;
809 for (int i = 0; i < descriptor_->field_count(); i++) {
810- sorted_fields[i] = descriptor_->field(i);
811+ sorted_fields.push_back(descriptor_->field(i));
812 }
813- qsort (sorted_fields, descriptor_->field_count(),
814+ qsort(&sorted_fields[0], sorted_fields.size(),
815 sizeof(const google::protobuf::FieldDescriptor*),
816 compare_pfields_by_number);
817- for (int i = 0; i < descriptor_->field_count(); i++) {
818- const google::protobuf::FieldDescriptor* field = sorted_fields[i];
819+ for (auto field : sorted_fields) {
820 field_generators_.get(field).GenerateDescriptorInitializer(printer);
821 }
822 printer->Outdent();
823 printer->Print(vars, "};\n");
824
825 if (!optimize_code_size) {
826- NameIndex *field_indices = new NameIndex [descriptor_->field_count()];
827- for (int i = 0; i < descriptor_->field_count(); i++) {
828- field_indices[i].name = sorted_fields[i]->name().c_str();
829- field_indices[i].index = i;
830+ std::vector<NameIndex> field_indices;
831+ for (unsigned i = 0; i < descriptor_->field_count(); i++) {
832+ field_indices.push_back({ .index = i, .name = sorted_fields[i]->name() });
833 }
834- qsort (field_indices, descriptor_->field_count(), sizeof (NameIndex),
835+ qsort(&field_indices[0], field_indices.size(), sizeof(NameIndex),
836 compare_name_indices_by_name);
837 printer->Print(vars, "static const unsigned $lcclassname$__field_indices_by_name[] = {\n");
838 for (int i = 0; i < descriptor_->field_count(); i++) {
839@@ -596,19 +595,16 @@ GenerateMessageDescriptor(google::protobuf::io::Printer* printer, bool gen_init)
840 printer->Print(vars, " $index$, /* field[$index$] = $name$ */\n");
841 }
842 printer->Print("};\n");
843- delete[] field_indices;
844 }
845
846 // create range initializers
847- int *values = new int[descriptor_->field_count()];
848+ std::vector<int> values;
849 for (int i = 0; i < descriptor_->field_count(); i++) {
850- values[i] = sorted_fields[i]->number();
851+ values.push_back(sorted_fields[i]->number());
852 }
853 int n_ranges = WriteIntRanges(printer,
854- descriptor_->field_count(), values,
855+ descriptor_->field_count(), &values[0],
856 vars["lcclassname"] + "__number_ranges");
857- delete [] values;
858- delete [] sorted_fields;
859
860 vars["n_ranges"] = SimpleItoa(n_ranges);
861 } else {
862diff --git a/protoc-gen-c/c_service.cc b/protoc-gen-c/c_service.cc
863index ee4d4a95..2c3ddcf3 100644
864--- a/protoc-gen-c/c_service.cc
865+++ b/protoc-gen-c/c_service.cc
866@@ -184,19 +184,19 @@ void ServiceGenerator::GenerateInit(google::protobuf::io::Printer* printer)
867 "}\n");
868 }
869
870-struct MethodIndexAndName { unsigned i; const char *name; };
871+struct MethodIndexAndName { unsigned i; compat::StringView name; };
872 static int
873 compare_method_index_and_name_by_name (const void *a, const void *b)
874 {
875 const MethodIndexAndName *ma = (const MethodIndexAndName *) a;
876 const MethodIndexAndName *mb = (const MethodIndexAndName *) b;
877- return strcmp (ma->name, mb->name);
878+ return ma->name.compare(mb->name);
879 }
880
881 void ServiceGenerator::GenerateServiceDescriptor(google::protobuf::io::Printer* printer)
882 {
883 int n_methods = descriptor_->method_count();
884- MethodIndexAndName *mi_array = new MethodIndexAndName[n_methods];
885+ std::vector<MethodIndexAndName> mi_array;
886
887 bool optimize_code_size = descriptor_->file()->options().has_optimize_for() &&
888 descriptor_->file()->options().optimize_for() ==
889@@ -205,7 +205,7 @@ void ServiceGenerator::GenerateServiceDescriptor(google::protobuf::io::Printer*
890 vars_["n_methods"] = SimpleItoa(n_methods);
891 printer->Print(vars_, "static const ProtobufCMethodDescriptor $lcfullname$__method_descriptors[$n_methods$] =\n"
892 "{\n");
893- for (int i = 0; i < n_methods; i++) {
894+ for (unsigned i = 0; i < n_methods; i++) {
895 const google::protobuf::MethodDescriptor* method = descriptor_->method(i);
896 vars_["method"] = method->name();
897 vars_["input_descriptor"] = "&" + FullNameToLower(method->input_type()->full_name(), method->input_type()->file()) + "__descriptor";
898@@ -217,14 +217,15 @@ void ServiceGenerator::GenerateServiceDescriptor(google::protobuf::io::Printer*
899 printer->Print(vars_,
900 " { \"$method$\", $input_descriptor$, $output_descriptor$ },\n");
901 }
902- mi_array[i].i = i;
903- mi_array[i].name = method->name().c_str();
904+ mi_array.push_back({i, method->name()});
905 }
906 printer->Print(vars_, "};\n");
907
908 if (!optimize_code_size) {
909- qsort ((void*)mi_array, n_methods, sizeof (MethodIndexAndName),
910- compare_method_index_and_name_by_name);
911+ qsort(&mi_array[0],
912+ mi_array.size(),
913+ sizeof(MethodIndexAndName),
914+ compare_method_index_and_name_by_name);
915 printer->Print(vars_, "const unsigned $lcfullname$__method_indices_by_name[] = {\n");
916 for (int i = 0; i < n_methods; i++) {
917 vars_["i"] = SimpleItoa(mi_array[i].i);
918@@ -258,8 +259,6 @@ void ServiceGenerator::GenerateServiceDescriptor(google::protobuf::io::Printer*
919 " $lcfullname$__method_indices_by_name\n"
920 "};\n");
921 }
922-
923- delete[] mi_array;
924 }
925
926 void ServiceGenerator::GenerateCallersImplementations(google::protobuf::io::Printer* printer)
927
928From ebeddac1a746393a16d9ba4cf80e3d12c3ab7d7f Mon Sep 17 00:00:00 2001
929From: Robert Edmonds <edmonds@users.noreply.github.com>
930Date: Sat, 8 Feb 2025 20:56:48 -0500
931Subject: [PATCH 07/11] Fix indentation of
932 MessageGenerator::GenerateMessageDescriptor()
933
934---
935 protoc-gen-c/c_message.cc | 321 +++++++++++++++++++-------------------
936 1 file changed, 159 insertions(+), 162 deletions(-)
937
938diff --git a/protoc-gen-c/c_message.cc b/protoc-gen-c/c_message.cc
939index 7252923c..2a3b2a2f 100644
940--- a/protoc-gen-c/c_message.cc
941+++ b/protoc-gen-c/c_message.cc
942@@ -461,199 +461,196 @@ GenerateHelperFunctionDefinitions(google::protobuf::io::Printer* printer,
943
944 void MessageGenerator::
945 GenerateMessageDescriptor(google::protobuf::io::Printer* printer, bool gen_init) {
946- std::map<std::string, std::string> vars;
947- vars["fullname"] = descriptor_->full_name();
948- vars["classname"] = FullNameToC(descriptor_->full_name(), descriptor_->file());
949- vars["lcclassname"] = FullNameToLower(descriptor_->full_name(), descriptor_->file());
950- vars["shortname"] = ToCamel(descriptor_->name());
951- vars["n_fields"] = SimpleItoa(descriptor_->field_count());
952- vars["packagename"] = descriptor_->file()->package();
953-
954- bool optimize_code_size = descriptor_->file()->options().has_optimize_for() &&
955- descriptor_->file()->options().optimize_for() ==
956- google::protobuf::FileOptions_OptimizeMode_CODE_SIZE;
957-
958- const ProtobufCMessageOptions opt =
959- descriptor_->options().GetExtension(pb_c_msg);
960- // Override parent settings, if needed
961- if (opt.has_gen_init_helpers())
962- gen_init = opt.gen_init_helpers();
963-
964- for (int i = 0; i < descriptor_->nested_type_count(); i++) {
965- nested_generators_[i]->GenerateMessageDescriptor(printer, gen_init);
966- }
967+ std::map<std::string, std::string> vars;
968+ vars["fullname"] = descriptor_->full_name();
969+ vars["classname"] = FullNameToC(descriptor_->full_name(), descriptor_->file());
970+ vars["lcclassname"] = FullNameToLower(descriptor_->full_name(), descriptor_->file());
971+ vars["shortname"] = ToCamel(descriptor_->name());
972+ vars["n_fields"] = SimpleItoa(descriptor_->field_count());
973+ vars["packagename"] = descriptor_->file()->package();
974
975- for (int i = 0; i < descriptor_->enum_type_count(); i++) {
976- enum_generators_[i]->GenerateEnumDescriptor(printer);
977- }
978+ bool optimize_code_size = descriptor_->file()->options().has_optimize_for() &&
979+ descriptor_->file()->options().optimize_for() ==
980+ google::protobuf::FileOptions_OptimizeMode_CODE_SIZE;
981
982- for (int i = 0; i < descriptor_->field_count(); i++) {
983- const google::protobuf::FieldDescriptor* fd = descriptor_->field(i);
984- if (fd->has_default_value()) {
985- field_generators_.get(fd).GenerateDefaultValueImplementations(printer);
986- }
987- }
988+ const ProtobufCMessageOptions opt = descriptor_->options().GetExtension(pb_c_msg);
989+ // Override parent settings, if needed
990+ if (opt.has_gen_init_helpers()) {
991+ gen_init = opt.gen_init_helpers();
992+ }
993
994- for (int i = 0; i < descriptor_->field_count(); i++) {
995- const google::protobuf::FieldDescriptor* fd = descriptor_->field(i);
996- const ProtobufCFieldOptions opt = fd->options().GetExtension(pb_c_field);
997- if (fd->has_default_value()) {
998-
999- bool already_defined = false;
1000- vars["name"] = fd->name();
1001- vars["lcname"] = CamelToLower(fd->name());
1002- vars["maybe_static"] = "static ";
1003- vars["field_dv_ctype_suffix"] = "";
1004- vars["default_value"] = field_generators_.get(fd).GetDefaultValue();
1005- switch (fd->cpp_type()) {
1006- case google::protobuf::FieldDescriptor::CPPTYPE_INT32:
1007- vars["field_dv_ctype"] = "int32_t";
1008- break;
1009- case google::protobuf::FieldDescriptor::CPPTYPE_INT64:
1010- vars["field_dv_ctype"] = "int64_t";
1011- break;
1012- case google::protobuf::FieldDescriptor::CPPTYPE_UINT32:
1013- vars["field_dv_ctype"] = "uint32_t";
1014- break;
1015- case google::protobuf::FieldDescriptor::CPPTYPE_UINT64:
1016- vars["field_dv_ctype"] = "uint64_t";
1017- break;
1018- case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT:
1019- vars["field_dv_ctype"] = "float";
1020- break;
1021- case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE:
1022- vars["field_dv_ctype"] = "double";
1023- break;
1024- case google::protobuf::FieldDescriptor::CPPTYPE_BOOL:
1025- vars["field_dv_ctype"] = "protobuf_c_boolean";
1026- break;
1027-
1028- case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE:
1029- // NOTE: not supported by protobuf
1030- vars["maybe_static"] = "";
1031- vars["field_dv_ctype"] = "{ ... }";
1032- GOOGLE_LOG(FATAL) << "Messages can't have default values!";
1033- break;
1034- case google::protobuf::FieldDescriptor::CPPTYPE_STRING:
1035- if (fd->type() == google::protobuf::FieldDescriptor::TYPE_BYTES || opt.string_as_bytes())
1036- {
1037- vars["field_dv_ctype"] = "ProtobufCBinaryData";
1038- }
1039- else /* STRING type */
1040- {
1041- already_defined = true;
1042- vars["maybe_static"] = "";
1043- vars["field_dv_ctype"] = "char";
1044- vars["field_dv_ctype_suffix"] = "[]";
1045- }
1046- break;
1047- case google::protobuf::FieldDescriptor::CPPTYPE_ENUM:
1048- {
1049- const google::protobuf::EnumValueDescriptor* vd = fd->default_value_enum();
1050- vars["field_dv_ctype"] = FullNameToC(vd->type()->full_name(), vd->type()->file());
1051- break;
1052- }
1053- default:
1054- GOOGLE_LOG(FATAL) << "Unknown CPPTYPE";
1055- break;
1056- }
1057- if (!already_defined)
1058- printer->Print(vars, "$maybe_static$const $field_dv_ctype$ $lcclassname$__$lcname$__default_value$field_dv_ctype_suffix$ = $default_value$;\n");
1059- }
1060- }
1061+ for (int i = 0; i < descriptor_->nested_type_count(); i++) {
1062+ nested_generators_[i]->GenerateMessageDescriptor(printer, gen_init);
1063+ }
1064
1065- if ( descriptor_->field_count() ) {
1066- printer->Print(vars,
1067- "static const ProtobufCFieldDescriptor $lcclassname$__field_descriptors[$n_fields$] =\n"
1068- "{\n");
1069- printer->Indent();
1070+ for (int i = 0; i < descriptor_->enum_type_count(); i++) {
1071+ enum_generators_[i]->GenerateEnumDescriptor(printer);
1072+ }
1073
1074- std::vector<const google::protobuf::FieldDescriptor*> sorted_fields;
1075 for (int i = 0; i < descriptor_->field_count(); i++) {
1076- sorted_fields.push_back(descriptor_->field(i));
1077- }
1078- qsort(&sorted_fields[0], sorted_fields.size(),
1079- sizeof(const google::protobuf::FieldDescriptor*),
1080- compare_pfields_by_number);
1081- for (auto field : sorted_fields) {
1082- field_generators_.get(field).GenerateDescriptorInitializer(printer);
1083+ const google::protobuf::FieldDescriptor* fd = descriptor_->field(i);
1084+ if (fd->has_default_value()) {
1085+ field_generators_.get(fd).GenerateDefaultValueImplementations(printer);
1086+ }
1087 }
1088- printer->Outdent();
1089- printer->Print(vars, "};\n");
1090
1091- if (!optimize_code_size) {
1092- std::vector<NameIndex> field_indices;
1093- for (unsigned i = 0; i < descriptor_->field_count(); i++) {
1094- field_indices.push_back({ .index = i, .name = sorted_fields[i]->name() });
1095+ for (int i = 0; i < descriptor_->field_count(); i++) {
1096+ const google::protobuf::FieldDescriptor* fd = descriptor_->field(i);
1097+ const ProtobufCFieldOptions opt = fd->options().GetExtension(pb_c_field);
1098+ if (fd->has_default_value()) {
1099+ bool already_defined = false;
1100+ vars["name"] = fd->name();
1101+ vars["lcname"] = CamelToLower(fd->name());
1102+ vars["maybe_static"] = "static ";
1103+ vars["field_dv_ctype_suffix"] = "";
1104+ vars["default_value"] = field_generators_.get(fd).GetDefaultValue();
1105+ switch (fd->cpp_type()) {
1106+ case google::protobuf::FieldDescriptor::CPPTYPE_INT32:
1107+ vars["field_dv_ctype"] = "int32_t";
1108+ break;
1109+ case google::protobuf::FieldDescriptor::CPPTYPE_INT64:
1110+ vars["field_dv_ctype"] = "int64_t";
1111+ break;
1112+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT32:
1113+ vars["field_dv_ctype"] = "uint32_t";
1114+ break;
1115+ case google::protobuf::FieldDescriptor::CPPTYPE_UINT64:
1116+ vars["field_dv_ctype"] = "uint64_t";
1117+ break;
1118+ case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT:
1119+ vars["field_dv_ctype"] = "float";
1120+ break;
1121+ case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE:
1122+ vars["field_dv_ctype"] = "double";
1123+ break;
1124+ case google::protobuf::FieldDescriptor::CPPTYPE_BOOL:
1125+ vars["field_dv_ctype"] = "protobuf_c_boolean";
1126+ break;
1127+ case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE:
1128+ // NOTE: not supported by protobuf
1129+ vars["maybe_static"] = "";
1130+ vars["field_dv_ctype"] = "{ ... }";
1131+ GOOGLE_LOG(FATAL) << "Messages can't have default values!";
1132+ break;
1133+ case google::protobuf::FieldDescriptor::CPPTYPE_STRING:
1134+ if (fd->type() == google::protobuf::FieldDescriptor::TYPE_BYTES || opt.string_as_bytes()) {
1135+ vars["field_dv_ctype"] = "ProtobufCBinaryData";
1136+ } else {
1137+ /* STRING type */
1138+ already_defined = true;
1139+ vars["maybe_static"] = "";
1140+ vars["field_dv_ctype"] = "char";
1141+ vars["field_dv_ctype_suffix"] = "[]";
1142+ }
1143+ break;
1144+ case google::protobuf::FieldDescriptor::CPPTYPE_ENUM: {
1145+ const google::protobuf::EnumValueDescriptor* vd = fd->default_value_enum();
1146+ vars["field_dv_ctype"] = FullNameToC(vd->type()->full_name(), vd->type()->file());
1147+ break;
1148+ }
1149+ default:
1150+ GOOGLE_LOG(FATAL) << "Unknown CPPTYPE";
1151+ break;
1152+ }
1153+ if (!already_defined) {
1154+ printer->Print(vars, "$maybe_static$const $field_dv_ctype$ $lcclassname$__$lcname$__default_value$field_dv_ctype_suffix$ = $default_value$;\n");
1155+ }
1156 }
1157- qsort(&field_indices[0], field_indices.size(), sizeof(NameIndex),
1158- compare_name_indices_by_name);
1159- printer->Print(vars, "static const unsigned $lcclassname$__field_indices_by_name[] = {\n");
1160+ }
1161+
1162+ if (descriptor_->field_count()) {
1163+ printer->Print(vars,
1164+ "static const ProtobufCFieldDescriptor $lcclassname$__field_descriptors[$n_fields$] =\n"
1165+ "{\n");
1166+ printer->Indent();
1167+
1168+ std::vector<const google::protobuf::FieldDescriptor*> sorted_fields;
1169 for (int i = 0; i < descriptor_->field_count(); i++) {
1170- vars["index"] = SimpleItoa(field_indices[i].index);
1171- vars["name"] = field_indices[i].name;
1172- printer->Print(vars, " $index$, /* field[$index$] = $name$ */\n");
1173+ sorted_fields.push_back(descriptor_->field(i));
1174 }
1175- printer->Print("};\n");
1176- }
1177+ qsort(&sorted_fields[0],
1178+ sorted_fields.size(),
1179+ sizeof(const google::protobuf::FieldDescriptor*),
1180+ compare_pfields_by_number);
1181+ for (auto field : sorted_fields) {
1182+ field_generators_.get(field).GenerateDescriptorInitializer(printer);
1183+ }
1184+ printer->Outdent();
1185+ printer->Print(vars, "};\n");
1186
1187- // create range initializers
1188- std::vector<int> values;
1189- for (int i = 0; i < descriptor_->field_count(); i++) {
1190- values.push_back(sorted_fields[i]->number());
1191- }
1192- int n_ranges = WriteIntRanges(printer,
1193- descriptor_->field_count(), &values[0],
1194- vars["lcclassname"] + "__number_ranges");
1195+ if (!optimize_code_size) {
1196+ std::vector<NameIndex> field_indices;
1197+ for (unsigned i = 0; i < descriptor_->field_count(); i++) {
1198+ field_indices.push_back({ .index = i, .name = sorted_fields[i]->name() });
1199+ }
1200+ qsort(&field_indices[0],
1201+ field_indices.size(),
1202+ sizeof(NameIndex),
1203+ compare_name_indices_by_name);
1204+ printer->Print(vars, "static const unsigned $lcclassname$__field_indices_by_name[] = {\n");
1205+ for (int i = 0; i < descriptor_->field_count(); i++) {
1206+ vars["index"] = SimpleItoa(field_indices[i].index);
1207+ vars["name"] = field_indices[i].name;
1208+ printer->Print(vars, " $index$, /* field[$index$] = $name$ */\n");
1209+ }
1210+ printer->Print("};\n");
1211+ }
1212
1213- vars["n_ranges"] = SimpleItoa(n_ranges);
1214- } else {
1215- /* MS compiler can't handle arrays with zero size and empty
1216- * initialization list. Furthermore it is an extension of GCC only but
1217- * not a standard. */
1218- vars["n_ranges"] = "0";
1219- printer->Print(vars,
1220- "#define $lcclassname$__field_descriptors NULL\n"
1221- "#define $lcclassname$__field_indices_by_name NULL\n"
1222- "#define $lcclassname$__number_ranges NULL\n");
1223+ // create range initializers
1224+ std::vector<int> values;
1225+ for (int i = 0; i < descriptor_->field_count(); i++) {
1226+ values.push_back(sorted_fields[i]->number());
1227 }
1228+ int n_ranges = WriteIntRanges(printer,
1229+ descriptor_->field_count(),
1230+ &values[0],
1231+ vars["lcclassname"] + "__number_ranges");
1232+
1233+ vars["n_ranges"] = SimpleItoa(n_ranges);
1234+ } else {
1235+ /* MS compiler can't handle arrays with zero size and empty
1236+ * initialization list. Furthermore it is an extension of GCC only but
1237+ * not a standard. */
1238+ vars["n_ranges"] = "0";
1239+ printer->Print(vars,
1240+ "#define $lcclassname$__field_descriptors NULL\n"
1241+ "#define $lcclassname$__field_indices_by_name NULL\n"
1242+ "#define $lcclassname$__number_ranges NULL\n");
1243+ }
1244
1245 printer->Print(vars,
1246- "const ProtobufCMessageDescriptor $lcclassname$__descriptor =\n"
1247- "{\n"
1248- " PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,\n");
1249+ "const ProtobufCMessageDescriptor $lcclassname$__descriptor =\n"
1250+ "{\n"
1251+ " PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,\n");
1252 if (optimize_code_size) {
1253 printer->Print(" NULL,NULL,NULL,NULL, /* CODE_SIZE */\n");
1254 } else {
1255 printer->Print(vars,
1256- " \"$fullname$\",\n"
1257- " \"$shortname$\",\n"
1258- " \"$classname$\",\n"
1259- " \"$packagename$\",\n");
1260+ " \"$fullname$\",\n"
1261+ " \"$shortname$\",\n"
1262+ " \"$classname$\",\n"
1263+ " \"$packagename$\",\n");
1264 }
1265 printer->Print(vars,
1266- " sizeof($classname$),\n"
1267- " $n_fields$,\n"
1268- " $lcclassname$__field_descriptors,\n");
1269+ " sizeof($classname$),\n"
1270+ " $n_fields$,\n"
1271+ " $lcclassname$__field_descriptors,\n");
1272 if (optimize_code_size) {
1273 printer->Print(" NULL, /* CODE_SIZE */\n");
1274 } else {
1275- printer->Print(vars,
1276- " $lcclassname$__field_indices_by_name,\n");
1277+ printer->Print(vars, " $lcclassname$__field_indices_by_name,\n");
1278 }
1279 printer->Print(vars,
1280- " $n_ranges$,"
1281- " $lcclassname$__number_ranges,\n");
1282+ " $n_ranges$,"
1283+ " $lcclassname$__number_ranges,\n");
1284 if (gen_init) {
1285- printer->Print(vars,
1286- " (ProtobufCMessageInit) $lcclassname$__init,\n");
1287+ printer->Print(vars, " (ProtobufCMessageInit) $lcclassname$__init,\n");
1288 } else {
1289- printer->Print(vars,
1290- " NULL, /* gen_init_helpers = false */\n");
1291+ printer->Print(vars, " NULL, /* gen_init_helpers = false */\n");
1292 }
1293 printer->Print(vars,
1294- " NULL,NULL,NULL /* reserved[123] */\n"
1295- "};\n");
1296+ " NULL,NULL,NULL /* reserved[123] */\n"
1297+ "};\n");
1298 }
1299
1300 int MessageGenerator::GetOneofUnionOrder(const google::protobuf::FieldDescriptor* fd)
1301
1302From c59b146aee2d97091ca2adeecd3f2741cb7f0082 Mon Sep 17 00:00:00 2001
1303From: Robert Edmonds <edmonds@users.noreply.github.com>
1304Date: Sat, 8 Feb 2025 21:10:37 -0500
1305Subject: [PATCH 08/11] compat: Use absl::string_view instead of
1306 google::protobuf::internal::DescriptorStringView
1307
1308Even though google::protobuf::internal::DescriptorStringView is exposed
1309in public protobuf headers, it's probably not a good idea to rely on an
1310"internal" typedef.
1311
1312According to https://protobuf.dev/news/2024-10-02/#descriptor-apis:
1313
1314 v30 will update return types in descriptor (such as full_name) to be
1315 absl::string_view.
1316
1317So `absl::string_view` is probably the right type to use here.
1318---
1319 protoc-gen-c/compat.h | 6 +++++-
1320 1 file changed, 5 insertions(+), 1 deletion(-)
1321
1322diff --git a/protoc-gen-c/compat.h b/protoc-gen-c/compat.h
1323index fe8041b5..a70cef34 100644
1324--- a/protoc-gen-c/compat.h
1325+++ b/protoc-gen-c/compat.h
1326@@ -37,12 +37,16 @@
1327 # define GOOGLE_LOG ABSL_LOG
1328 #endif
1329
1330+#if GOOGLE_PROTOBUF_VERSION >= 6030000
1331+# include <absl/strings/string_view.h>
1332+#endif
1333+
1334 namespace protobuf_c {
1335
1336 namespace compat {
1337
1338 #if GOOGLE_PROTOBUF_VERSION >= 6030000
1339-typedef google::protobuf::internal::DescriptorStringView StringView;
1340+typedef absl::string_view StringView;
1341 #else
1342 typedef const std::string& StringView;
1343 #endif
1344
1345From 9c56038fd9d3cc2552c297457d7a66efe5cbd2c7 Mon Sep 17 00:00:00 2001
1346From: Robert Edmonds <edmonds@users.noreply.github.com>
1347Date: Sat, 8 Feb 2025 21:37:30 -0500
1348Subject: [PATCH 09/11] Makefile.am: Add compat.h to
1349 protoc_gen_c_protoc_gen_c_SOURCES
1350
1351---
1352 Makefile.am | 1 +
1353 1 file changed, 1 insertion(+)
1354
1355diff --git a/Makefile.am b/Makefile.am
1356index 77aa9d99..26d19f16 100644
1357--- a/Makefile.am
1358+++ b/Makefile.am
1359@@ -102,6 +102,7 @@ protoc_gen_c_protoc_gen_c_SOURCES = \
1360 protoc-gen-c/c_service.h \
1361 protoc-gen-c/c_string_field.cc \
1362 protoc-gen-c/c_string_field.h \
1363+ protoc-gen-c/compat.h \
1364 protobuf-c/protobuf-c.pb.cc \
1365 protobuf-c/protobuf-c.pb.h \
1366 protoc-gen-c/main.cc
1367
1368From 4ebd5cd8238d1f2ac6291b8c8925f34e16ce2123 Mon Sep 17 00:00:00 2001
1369From: Robert Edmonds <edmonds@users.noreply.github.com>
1370Date: Sat, 8 Feb 2025 21:38:07 -0500
1371Subject: [PATCH 10/11] compat: Conditionalize the include of <string>
1372
1373It is only needed on older protobuf versions where absl::string_view is
1374not being used.
1375---
1376 protoc-gen-c/compat.h | 4 ++--
1377 1 file changed, 2 insertions(+), 2 deletions(-)
1378
1379diff --git a/protoc-gen-c/compat.h b/protoc-gen-c/compat.h
1380index a70cef34..f6ace7cb 100644
1381--- a/protoc-gen-c/compat.h
1382+++ b/protoc-gen-c/compat.h
1383@@ -28,8 +28,6 @@
1384 #ifndef PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
1385 #define PROTOBUF_C_PROTOC_GEN_C_COMPAT_H__
1386
1387-#include <string>
1388-
1389 #if GOOGLE_PROTOBUF_VERSION >= 4022000
1390 # define GOOGLE_ARRAYSIZE ABSL_ARRAYSIZE
1391 # define GOOGLE_CHECK_EQ ABSL_CHECK_EQ
1392@@ -39,6 +37,8 @@
1393
1394 #if GOOGLE_PROTOBUF_VERSION >= 6030000
1395 # include <absl/strings/string_view.h>
1396+#else
1397+# include <string>
1398 #endif
1399
1400 namespace protobuf_c {
1401
1402From 9a6b35e1e6956fb5cb044910448049b7a5339244 Mon Sep 17 00:00:00 2001
1403From: Robert Edmonds <edmonds@users.noreply.github.com>
1404Date: Sat, 8 Feb 2025 21:44:42 -0500
1405Subject: [PATCH 11/11] Cater to Microsoft Visual C++
1406
1407Apparently MSVC doesn't support designated initializers for some reason.
1408---
1409 protoc-gen-c/c_enum.cc | 9 ++-------
1410 protoc-gen-c/c_message.cc | 2 +-
1411 2 files changed, 3 insertions(+), 8 deletions(-)
1412
1413diff --git a/protoc-gen-c/c_enum.cc b/protoc-gen-c/c_enum.cc
1414index c7839edd..1940ba9d 100644
1415--- a/protoc-gen-c/c_enum.cc
1416+++ b/protoc-gen-c/c_enum.cc
1417@@ -195,14 +195,9 @@ void EnumGenerator::GenerateEnumDescriptor(google::protobuf::io::Printer* printe
1418 // Sort by name and value, dropping duplicate values if they appear later.
1419 // TODO: use a c++ paradigm for this!
1420 std::vector<ValueIndex> value_index;
1421- for (unsigned j = 0; j < descriptor_->value_count(); j++) {
1422+ for (int j = 0; j < descriptor_->value_count(); j++) {
1423 const google::protobuf::EnumValueDescriptor *vd = descriptor_->value(j);
1424- value_index.push_back({
1425- .value = vd->number(),
1426- .index = j,
1427- .final_index = 0,
1428- .name = vd->name(),
1429- });
1430+ value_index.push_back({ vd->number(), (unsigned)j, 0, vd->name() });
1431 }
1432 qsort(&value_index[0],
1433 value_index.size(),
1434diff --git a/protoc-gen-c/c_message.cc b/protoc-gen-c/c_message.cc
1435index 2a3b2a2f..94889179 100644
1436--- a/protoc-gen-c/c_message.cc
1437+++ b/protoc-gen-c/c_message.cc
1438@@ -581,7 +581,7 @@ GenerateMessageDescriptor(google::protobuf::io::Printer* printer, bool gen_init)
1439 if (!optimize_code_size) {
1440 std::vector<NameIndex> field_indices;
1441 for (unsigned i = 0; i < descriptor_->field_count(); i++) {
1442- field_indices.push_back({ .index = i, .name = sorted_fields[i]->name() });
1443+ field_indices.push_back({ i, sorted_fields[i]->name() });
1444 }
1445 qsort(&field_indices[0],
1446 field_indices.size(),
diff --git a/meta-oe/recipes-devtools/protobuf/protobuf-c_1.5.1.bb b/meta-oe/recipes-devtools/protobuf/protobuf-c_1.5.2.bb
index 30c9e19b16..7fe514fe07 100644
--- a/meta-oe/recipes-devtools/protobuf/protobuf-c_1.5.1.bb
+++ b/meta-oe/recipes-devtools/protobuf/protobuf-c_1.5.2.bb
@@ -13,11 +13,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=bd8de4f63e06b1ccc06e9f8dc5b1aa97"
13DEPENDS = "protobuf-native protobuf" 13DEPENDS = "protobuf-native protobuf"
14 14
15SRC_URI = "git://github.com/protobuf-c/protobuf-c.git;branch=master;protocol=https \ 15SRC_URI = "git://github.com/protobuf-c/protobuf-c.git;branch=master;protocol=https \
16 file://protobuf-30.patch \
17" 16"
18SRC_URI:append:class-native = " file://0001-Makefile.am-do-not-compile-the-code-which-was-genera.patch" 17SRC_URI:append:class-native = " file://0001-Makefile.am-do-not-compile-the-code-which-was-genera.patch"
19 18
20SRCREV = "185beed28e65494be7505b30c1afeaf199e19b23" 19SRCREV = "4719fdd7760624388c2c5b9d6759eb6a47490626"
21 20
22 21
23inherit autotools pkgconfig 22inherit autotools pkgconfig
diff --git a/meta-oe/recipes-devtools/protobuf/protobuf_6.33.5.bb b/meta-oe/recipes-devtools/protobuf/protobuf_6.33.6.bb
index 66c9c24473..880dd82b1d 100644
--- a/meta-oe/recipes-devtools/protobuf/protobuf_6.33.5.bb
+++ b/meta-oe/recipes-devtools/protobuf/protobuf_6.33.6.bb
@@ -16,7 +16,7 @@ PROTOC_BRANCH = "${@d.getVar('PV').split('.', 2)[1]}.x"
16DEPENDS = "zlib abseil-cpp jsoncpp" 16DEPENDS = "zlib abseil-cpp jsoncpp"
17DEPENDS:append:class-target = " protobuf-native" 17DEPENDS:append:class-target = " protobuf-native"
18 18
19SRCREV = "b6f9284da830b69be787732ffdaa35049d20a088" 19SRCREV = "6e1998413a5bca7c058b85999667893f167434bc"
20 20
21SRC_URI = "git://github.com/protocolbuffers/protobuf.git;branch=${PROTOC_BRANCH};protocol=https;tag=${PROTOC_VERSION} \ 21SRC_URI = "git://github.com/protocolbuffers/protobuf.git;branch=${PROTOC_BRANCH};protocol=https;tag=${PROTOC_VERSION} \
22 file://run-ptest \ 22 file://run-ptest \
@@ -29,6 +29,7 @@ UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d\.\d+\.\d+)"
29CVE_PRODUCT = "google:protobuf protobuf:protobuf google-protobuf protobuf-cpp" 29CVE_PRODUCT = "google:protobuf protobuf:protobuf google-protobuf protobuf-cpp"
30 30
31CVE_STATUS[CVE-2026-0994] = "cpe-incorrect: the vulnerability affects only python3-protobuf recipe" 31CVE_STATUS[CVE-2026-0994] = "cpe-incorrect: the vulnerability affects only python3-protobuf recipe"
32CVE_STATUS[CVE-2026-6409] = "cpe-incorrect: the vulnerability affects only the php library"
32 33
33inherit cmake pkgconfig ptest 34inherit cmake pkgconfig ptest
34 35
@@ -53,6 +54,9 @@ LANG_SUPPORT = "cpp ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python', ''
53CXXFLAGS:append:mipsarcho32 = " -latomic" 54CXXFLAGS:append:mipsarcho32 = " -latomic"
54CXXFLAGS:append:riscv32 = " -latomic" 55CXXFLAGS:append:riscv32 = " -latomic"
55 56
57# The ptests are not buildable now that pkgconf is being used, disable until fixed.
58PTEST_ENABLED = "0"
59
56do_compile_ptest() { 60do_compile_ptest() {
57 mkdir -p "${B}/${TEST_SRC_DIR}" 61 mkdir -p "${B}/${TEST_SRC_DIR}"
58 62
diff --git a/meta-oe/recipes-devtools/sip/sip_6.15.1.bb b/meta-oe/recipes-devtools/sip/sip_6.15.3.bb
index b00d5d5e7a..5d6d8c78a6 100644
--- a/meta-oe/recipes-devtools/sip/sip_6.15.1.bb
+++ b/meta-oe/recipes-devtools/sip/sip_6.15.3.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=236276327275fdb261636fb40b18d88d"
11inherit pypi python_setuptools_build_meta python3native 11inherit pypi python_setuptools_build_meta python3native
12 12
13PYPI_PACKAGE = "sip" 13PYPI_PACKAGE = "sip"
14SRC_URI[sha256sum] = "dc2e58c1798a74e1b31c28e837339822fe8fa55288ae30e8986eb28100ebca5a" 14SRC_URI[sha256sum] = "bb2516983f9f716d321e5157c00d0de0c12422eba73b8f43a44610a0f6622438"
15 15
16DEPENDS += "python3-setuptools-scm-native" 16DEPENDS += "python3-setuptools-scm-native"
17 17
diff --git a/meta-oe/recipes-devtools/spdm-utils/spdm-utils-crates.inc b/meta-oe/recipes-devtools/spdm-utils/spdm-utils-crates.inc
index 7a2aae9be7..0c3582d53d 100644
--- a/meta-oe/recipes-devtools/spdm-utils/spdm-utils-crates.inc
+++ b/meta-oe/recipes-devtools/spdm-utils/spdm-utils-crates.inc
@@ -2,557 +2,393 @@
2 2
3# from Cargo.lock 3# from Cargo.lock
4SRC_URI += " \ 4SRC_URI += " \
5 crate://crates.io/aho-corasick/1.1.3 \ 5 crate://crates.io/aho-corasick/1.1.4 \
6 crate://crates.io/anstream/0.6.18 \ 6 crate://crates.io/anstream/0.6.21 \
7 crate://crates.io/anstyle/1.0.10 \ 7 crate://crates.io/anstyle/1.0.13 \
8 crate://crates.io/anstyle-parse/0.2.6 \ 8 crate://crates.io/anstyle-parse/0.2.7 \
9 crate://crates.io/anstyle-query/1.1.2 \ 9 crate://crates.io/anstyle-query/1.1.5 \
10 crate://crates.io/anstyle-wincon/3.0.7 \ 10 crate://crates.io/anstyle-wincon/3.0.11 \
11 crate://crates.io/asn1-rs/0.5.2 \ 11 crate://crates.io/asn1-rs/0.5.2 \
12 crate://crates.io/asn1-rs/0.6.2 \ 12 crate://crates.io/asn1-rs/0.6.2 \
13 crate://crates.io/asn1-rs-derive/0.4.0 \ 13 crate://crates.io/asn1-rs-derive/0.4.0 \
14 crate://crates.io/asn1-rs-derive/0.5.1 \ 14 crate://crates.io/asn1-rs-derive/0.5.1 \
15 crate://crates.io/asn1-rs-impl/0.1.0 \ 15 crate://crates.io/asn1-rs-impl/0.1.0 \
16 crate://crates.io/asn1-rs-impl/0.2.0 \ 16 crate://crates.io/asn1-rs-impl/0.2.0 \
17 crate://crates.io/async-attributes/1.1.2 \ 17 crate://crates.io/autocfg/1.5.0 \
18 crate://crates.io/async-channel/1.9.0 \ 18 crate://crates.io/bindgen/0.72.1 \
19 crate://crates.io/async-channel/2.3.1 \
20 crate://crates.io/async-executor/1.13.1 \
21 crate://crates.io/async-global-executor/2.4.1 \
22 crate://crates.io/async-io/2.4.0 \
23 crate://crates.io/async-lock/3.4.0 \
24 crate://crates.io/async-std/1.13.0 \
25 crate://crates.io/async-task/4.7.1 \
26 crate://crates.io/atomic-waker/1.1.2 \
27 crate://crates.io/autocfg/1.4.0 \
28 crate://crates.io/bindgen/0.71.1 \
29 crate://crates.io/bitfield/0.14.0 \ 19 crate://crates.io/bitfield/0.14.0 \
30 crate://crates.io/bitflags/1.3.2 \ 20 crate://crates.io/bitflags/1.3.2 \
31 crate://crates.io/bitflags/2.8.0 \ 21 crate://crates.io/bitflags/2.10.0 \
32 crate://crates.io/block-buffer/0.10.4 \ 22 crate://crates.io/block-buffer/0.10.4 \
33 crate://crates.io/blocking/1.6.1 \ 23 crate://crates.io/byteorder/1.5.0 \
34 crate://crates.io/bumpalo/3.16.0 \ 24 crate://crates.io/bytes/1.11.1 \
35 crate://crates.io/cexpr/0.6.0 \ 25 crate://crates.io/cexpr/0.6.0 \
36 crate://crates.io/cfg-if/1.0.0 \ 26 crate://crates.io/cfg-if/1.0.4 \
37 crate://crates.io/cfg_aliases/0.2.1 \ 27 crate://crates.io/cfg_aliases/0.2.1 \
38 crate://crates.io/clang-sys/1.8.1 \ 28 crate://crates.io/clang-sys/1.8.1 \
39 crate://crates.io/clap/4.5.27 \ 29 crate://crates.io/clap/4.5.57 \
40 crate://crates.io/clap_builder/4.5.27 \ 30 crate://crates.io/clap_builder/4.5.57 \
41 crate://crates.io/clap_derive/4.5.24 \ 31 crate://crates.io/clap_derive/4.5.55 \
42 crate://crates.io/clap_lex/0.7.4 \ 32 crate://crates.io/clap_lex/0.7.7 \
43 crate://crates.io/colorchoice/1.0.3 \ 33 crate://crates.io/colorchoice/1.0.4 \
44 crate://crates.io/colored/2.2.0 \ 34 crate://crates.io/colored/2.2.0 \
45 crate://crates.io/concurrent-queue/2.5.0 \
46 crate://crates.io/core-foundation/0.10.0 \ 35 crate://crates.io/core-foundation/0.10.0 \
47 crate://crates.io/core-foundation-sys/0.8.7 \ 36 crate://crates.io/core-foundation-sys/0.8.7 \
48 crate://crates.io/cpufeatures/0.2.17 \ 37 crate://crates.io/cpufeatures/0.2.17 \
49 crate://crates.io/crossbeam-utils/0.8.21 \ 38 crate://crates.io/crossterm/0.25.0 \
50 crate://crates.io/crunchy/0.2.3 \ 39 crate://crates.io/crossterm_winapi/0.9.1 \
51 crate://crates.io/crypto-common/0.1.6 \ 40 crate://crates.io/crunchy/0.2.4 \
52 crate://crates.io/data-encoding/2.7.0 \ 41 crate://crates.io/crypto-common/0.1.7 \
42 crate://crates.io/data-encoding/2.10.0 \
53 crate://crates.io/der-parser/8.2.0 \ 43 crate://crates.io/der-parser/8.2.0 \
54 crate://crates.io/deranged/0.3.11 \ 44 crate://crates.io/deranged/0.5.5 \
55 crate://crates.io/digest/0.10.7 \ 45 crate://crates.io/digest/0.10.7 \
56 crate://crates.io/displaydoc/0.2.5 \ 46 crate://crates.io/displaydoc/0.2.5 \
57 crate://crates.io/either/1.13.0 \ 47 crate://crates.io/dyn-clone/1.0.20 \
48 crate://crates.io/either/1.15.0 \
58 crate://crates.io/embedded-crc-macros/1.0.0 \ 49 crate://crates.io/embedded-crc-macros/1.0.0 \
59 crate://crates.io/env_logger/0.10.2 \ 50 crate://crates.io/env_logger/0.10.2 \
60 crate://crates.io/errno/0.3.10 \ 51 crate://crates.io/errno/0.3.14 \
61 crate://crates.io/event-listener/2.5.3 \
62 crate://crates.io/event-listener/5.4.0 \
63 crate://crates.io/event-listener-strategy/0.5.3 \
64 crate://crates.io/fastrand/2.3.0 \
65 crate://crates.io/futures/0.3.31 \ 52 crate://crates.io/futures/0.3.31 \
66 crate://crates.io/futures-channel/0.3.31 \ 53 crate://crates.io/futures-channel/0.3.31 \
67 crate://crates.io/futures-core/0.3.31 \ 54 crate://crates.io/futures-core/0.3.31 \
68 crate://crates.io/futures-executor/0.3.31 \ 55 crate://crates.io/futures-executor/0.3.31 \
69 crate://crates.io/futures-io/0.3.31 \ 56 crate://crates.io/futures-io/0.3.31 \
70 crate://crates.io/futures-lite/2.6.0 \
71 crate://crates.io/futures-macro/0.3.31 \ 57 crate://crates.io/futures-macro/0.3.31 \
72 crate://crates.io/futures-sink/0.3.31 \ 58 crate://crates.io/futures-sink/0.3.31 \
73 crate://crates.io/futures-task/0.3.31 \ 59 crate://crates.io/futures-task/0.3.31 \
74 crate://crates.io/futures-util/0.3.31 \ 60 crate://crates.io/futures-util/0.3.31 \
61 crate://crates.io/fuzzy-matcher/0.3.7 \
62 crate://crates.io/fxhash/0.2.1 \
75 crate://crates.io/generic-array/0.14.7 \ 63 crate://crates.io/generic-array/0.14.7 \
76 crate://crates.io/glob/0.3.2 \ 64 crate://crates.io/glob/0.3.3 \
77 crate://crates.io/gloo-timers/0.3.0 \ 65 crate://crates.io/half/2.7.1 \
78 crate://crates.io/half/2.4.1 \
79 crate://crates.io/heck/0.5.0 \ 66 crate://crates.io/heck/0.5.0 \
80 crate://crates.io/hermit-abi/0.4.0 \ 67 crate://crates.io/hermit-abi/0.5.2 \
81 crate://crates.io/home/0.5.11 \ 68 crate://crates.io/home/0.5.12 \
82 crate://crates.io/humantime/2.1.0 \ 69 crate://crates.io/humantime/2.3.0 \
70 crate://crates.io/inquire/0.7.5 \
83 crate://crates.io/io-kit-sys/0.4.1 \ 71 crate://crates.io/io-kit-sys/0.4.1 \
84 crate://crates.io/is-terminal/0.4.15 \ 72 crate://crates.io/is-terminal/0.4.17 \
85 crate://crates.io/is_terminal_polyfill/1.70.1 \ 73 crate://crates.io/is_terminal_polyfill/1.70.2 \
86 crate://crates.io/itertools/0.13.0 \ 74 crate://crates.io/itertools/0.13.0 \
87 crate://crates.io/itoa/1.0.14 \ 75 crate://crates.io/itoa/1.0.17 \
88 crate://crates.io/js-sys/0.3.77 \
89 crate://crates.io/kv-log-macro/1.0.7 \
90 crate://crates.io/lazy_static/1.5.0 \ 76 crate://crates.io/lazy_static/1.5.0 \
91 crate://crates.io/libc/0.2.169 \ 77 crate://crates.io/libc/0.2.180 \
92 crate://crates.io/libloading/0.8.6 \ 78 crate://crates.io/libloading/0.8.9 \
93 crate://crates.io/libmctp/0.2.0 \ 79 crate://crates.io/libmctp/0.2.0 \
94 crate://crates.io/libudev/0.3.0 \ 80 crate://crates.io/libudev/0.3.0 \
95 crate://crates.io/libudev-sys/0.1.4 \ 81 crate://crates.io/libudev-sys/0.1.4 \
96 crate://crates.io/linux-raw-sys/0.4.15 \ 82 crate://crates.io/linux-raw-sys/0.4.15 \
97 crate://crates.io/log/0.4.25 \ 83 crate://crates.io/lock_api/0.4.14 \
98 crate://crates.io/mach2/0.4.2 \ 84 crate://crates.io/log/0.4.29 \
99 crate://crates.io/memchr/2.7.4 \ 85 crate://crates.io/mach2/0.4.3 \
86 crate://crates.io/memchr/2.7.6 \
100 crate://crates.io/memmap2/0.5.10 \ 87 crate://crates.io/memmap2/0.5.10 \
101 crate://crates.io/minicbor/0.25.1 \ 88 crate://crates.io/minicbor/0.25.1 \
102 crate://crates.io/minicbor-derive/0.15.3 \ 89 crate://crates.io/minicbor-derive/0.15.3 \
103 crate://crates.io/minimal-lexical/0.2.1 \ 90 crate://crates.io/minimal-lexical/0.2.1 \
91 crate://crates.io/mio/0.8.11 \
92 crate://crates.io/mio/1.1.1 \
93 crate://crates.io/newline-converter/0.3.0 \
104 crate://crates.io/nix/0.26.4 \ 94 crate://crates.io/nix/0.26.4 \
105 crate://crates.io/nix/0.29.0 \ 95 crate://crates.io/nix/0.29.0 \
106 crate://crates.io/nom/7.1.3 \ 96 crate://crates.io/nom/7.1.3 \
107 crate://crates.io/num-bigint/0.4.6 \ 97 crate://crates.io/num-bigint/0.4.6 \
108 crate://crates.io/num-conv/0.1.0 \ 98 crate://crates.io/num-conv/0.2.0 \
109 crate://crates.io/num-integer/0.1.46 \ 99 crate://crates.io/num-integer/0.1.46 \
110 crate://crates.io/num-traits/0.2.19 \ 100 crate://crates.io/num-traits/0.2.19 \
111 crate://crates.io/oid-registry/0.6.1 \ 101 crate://crates.io/oid-registry/0.6.1 \
112 crate://crates.io/once_cell/1.20.2 \ 102 crate://crates.io/once_cell/1.21.3 \
113 crate://crates.io/parking/2.2.1 \ 103 crate://crates.io/once_cell_polyfill/1.70.2 \
104 crate://crates.io/parking_lot/0.12.5 \
105 crate://crates.io/parking_lot_core/0.9.12 \
114 crate://crates.io/pin-project-lite/0.2.16 \ 106 crate://crates.io/pin-project-lite/0.2.16 \
115 crate://crates.io/pin-utils/0.1.0 \ 107 crate://crates.io/pin-utils/0.1.0 \
116 crate://crates.io/piper/0.2.4 \ 108 crate://crates.io/pkg-config/0.3.32 \
117 crate://crates.io/pkg-config/0.3.31 \
118 crate://crates.io/polling/3.7.4 \
119 crate://crates.io/powerfmt/0.2.0 \ 109 crate://crates.io/powerfmt/0.2.0 \
120 crate://crates.io/prettyplease/0.2.29 \ 110 crate://crates.io/prettyplease/0.2.37 \
121 crate://crates.io/proc-macro2/1.0.93 \ 111 crate://crates.io/proc-macro2/1.0.106 \
122 crate://crates.io/quote/1.0.38 \ 112 crate://crates.io/quote/1.0.40 \
123 crate://crates.io/regex/1.11.1 \ 113 crate://crates.io/redox_syscall/0.5.18 \
124 crate://crates.io/regex-automata/0.4.9 \ 114 crate://crates.io/regex/1.12.3 \
125 crate://crates.io/regex-syntax/0.8.5 \ 115 crate://crates.io/regex-automata/0.4.14 \
126 crate://crates.io/rustc-hash/2.1.0 \ 116 crate://crates.io/regex-syntax/0.8.9 \
117 crate://crates.io/rustc-hash/2.1.1 \
127 crate://crates.io/rusticata-macros/4.1.0 \ 118 crate://crates.io/rusticata-macros/4.1.0 \
128 crate://crates.io/rustix/0.38.44 \ 119 crate://crates.io/rustix/0.38.44 \
129 crate://crates.io/rustversion/1.0.19 \
130 crate://crates.io/scopeguard/1.2.0 \ 120 crate://crates.io/scopeguard/1.2.0 \
131 crate://crates.io/serde/1.0.217 \ 121 crate://crates.io/serde_core/1.0.228 \
132 crate://crates.io/serde_derive/1.0.217 \ 122 crate://crates.io/serde_derive/1.0.228 \
133 crate://crates.io/serialport/4.7.0 \ 123 crate://crates.io/serialport/4.8.1 \
134 crate://crates.io/sha2/0.10.8 \ 124 crate://crates.io/sha2/0.10.9 \
135 crate://crates.io/shlex/1.3.0 \ 125 crate://crates.io/shlex/1.3.0 \
136 crate://crates.io/slab/0.4.9 \ 126 crate://crates.io/signal-hook/0.3.18 \
127 crate://crates.io/signal-hook-mio/0.2.5 \
128 crate://crates.io/signal-hook-registry/1.4.8 \
129 crate://crates.io/slab/0.4.12 \
130 crate://crates.io/smallvec/1.15.1 \
137 crate://crates.io/smbus-pec/1.0.1 \ 131 crate://crates.io/smbus-pec/1.0.1 \
132 crate://crates.io/socket2/0.6.2 \
138 crate://crates.io/strsim/0.11.1 \ 133 crate://crates.io/strsim/0.11.1 \
139 crate://crates.io/syn/1.0.109 \ 134 crate://crates.io/syn/1.0.109 \
140 crate://crates.io/syn/2.0.96 \ 135 crate://crates.io/syn/2.0.114 \
141 crate://crates.io/synstructure/0.12.6 \ 136 crate://crates.io/synstructure/0.12.6 \
142 crate://crates.io/synstructure/0.13.1 \ 137 crate://crates.io/synstructure/0.13.2 \
143 crate://crates.io/termcolor/1.4.1 \ 138 crate://crates.io/termcolor/1.4.1 \
144 crate://crates.io/thiserror/1.0.69 \ 139 crate://crates.io/thiserror/1.0.69 \
140 crate://crates.io/thiserror/2.0.18 \
145 crate://crates.io/thiserror-impl/1.0.69 \ 141 crate://crates.io/thiserror-impl/1.0.69 \
146 crate://crates.io/time/0.3.37 \ 142 crate://crates.io/thiserror-impl/2.0.18 \
147 crate://crates.io/time-core/0.1.2 \ 143 crate://crates.io/thread_local/1.1.9 \
148 crate://crates.io/time-macros/0.2.19 \ 144 crate://crates.io/time/0.3.47 \
149 crate://crates.io/tracing/0.1.41 \ 145 crate://crates.io/time-core/0.1.8 \
150 crate://crates.io/tracing-core/0.1.33 \ 146 crate://crates.io/time-macros/0.2.27 \
151 crate://crates.io/typenum/1.17.0 \ 147 crate://crates.io/tokio/1.49.0 \
152 crate://crates.io/unescaper/0.1.5 \ 148 crate://crates.io/tokio-macros/2.6.0 \
153 crate://crates.io/unicode-ident/1.0.15 \ 149 crate://crates.io/typenum/1.19.0 \
150 crate://crates.io/unescaper/0.1.8 \
151 crate://crates.io/unicode-ident/1.0.22 \
152 crate://crates.io/unicode-segmentation/1.12.0 \
153 crate://crates.io/unicode-width/0.1.14 \
154 crate://crates.io/unicode-xid/0.2.6 \ 154 crate://crates.io/unicode-xid/0.2.6 \
155 crate://crates.io/utf8parse/0.2.2 \ 155 crate://crates.io/utf8parse/0.2.2 \
156 crate://crates.io/value-bag/1.10.0 \
157 crate://crates.io/version_check/0.9.5 \ 156 crate://crates.io/version_check/0.9.5 \
158 crate://crates.io/wasm-bindgen/0.2.100 \ 157 crate://crates.io/wasi/0.11.1+wasi-snapshot-preview1 \
159 crate://crates.io/wasm-bindgen-backend/0.2.100 \
160 crate://crates.io/wasm-bindgen-futures/0.4.50 \
161 crate://crates.io/wasm-bindgen-macro/0.2.100 \
162 crate://crates.io/wasm-bindgen-macro-support/0.2.100 \
163 crate://crates.io/wasm-bindgen-shared/0.2.100 \
164 crate://crates.io/web-sys/0.3.77 \
165 crate://crates.io/which/6.0.3 \ 158 crate://crates.io/which/6.0.3 \
166 crate://crates.io/winapi/0.3.9 \ 159 crate://crates.io/winapi/0.3.9 \
167 crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \ 160 crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
168 crate://crates.io/winapi-util/0.1.9 \ 161 crate://crates.io/winapi-util/0.1.11 \
169 crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \ 162 crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
163 crate://crates.io/windows-link/0.2.1 \
164 crate://crates.io/windows-sys/0.48.0 \
165 crate://crates.io/windows-sys/0.52.0 \
170 crate://crates.io/windows-sys/0.59.0 \ 166 crate://crates.io/windows-sys/0.59.0 \
167 crate://crates.io/windows-sys/0.60.2 \
168 crate://crates.io/windows-sys/0.61.2 \
169 crate://crates.io/windows-targets/0.48.5 \
171 crate://crates.io/windows-targets/0.52.6 \ 170 crate://crates.io/windows-targets/0.52.6 \
171 crate://crates.io/windows-targets/0.53.5 \
172 crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
172 crate://crates.io/windows_aarch64_gnullvm/0.52.6 \ 173 crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
174 crate://crates.io/windows_aarch64_gnullvm/0.53.1 \
175 crate://crates.io/windows_aarch64_msvc/0.48.5 \
173 crate://crates.io/windows_aarch64_msvc/0.52.6 \ 176 crate://crates.io/windows_aarch64_msvc/0.52.6 \
177 crate://crates.io/windows_aarch64_msvc/0.53.1 \
178 crate://crates.io/windows_i686_gnu/0.48.5 \
174 crate://crates.io/windows_i686_gnu/0.52.6 \ 179 crate://crates.io/windows_i686_gnu/0.52.6 \
180 crate://crates.io/windows_i686_gnu/0.53.1 \
175 crate://crates.io/windows_i686_gnullvm/0.52.6 \ 181 crate://crates.io/windows_i686_gnullvm/0.52.6 \
182 crate://crates.io/windows_i686_gnullvm/0.53.1 \
183 crate://crates.io/windows_i686_msvc/0.48.5 \
176 crate://crates.io/windows_i686_msvc/0.52.6 \ 184 crate://crates.io/windows_i686_msvc/0.52.6 \
185 crate://crates.io/windows_i686_msvc/0.53.1 \
186 crate://crates.io/windows_x86_64_gnu/0.48.5 \
177 crate://crates.io/windows_x86_64_gnu/0.52.6 \ 187 crate://crates.io/windows_x86_64_gnu/0.52.6 \
188 crate://crates.io/windows_x86_64_gnu/0.53.1 \
189 crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
178 crate://crates.io/windows_x86_64_gnullvm/0.52.6 \ 190 crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
191 crate://crates.io/windows_x86_64_gnullvm/0.53.1 \
192 crate://crates.io/windows_x86_64_msvc/0.48.5 \
179 crate://crates.io/windows_x86_64_msvc/0.52.6 \ 193 crate://crates.io/windows_x86_64_msvc/0.52.6 \
194 crate://crates.io/windows_x86_64_msvc/0.53.1 \
180 crate://crates.io/winsafe/0.0.19 \ 195 crate://crates.io/winsafe/0.0.19 \
181 crate://crates.io/x509-parser/0.15.1 \ 196 crate://crates.io/x509-parser/0.15.1 \
197 crate://crates.io/zerocopy/0.8.38 \
198 crate://crates.io/zerocopy-derive/0.8.38 \
182" 199"
183 200
184SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 201SRC_URI[aho-corasick-1.1.4.sha256sum] = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
185SRC_URI[anstream-0.6.18.sha256sum] = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" 202SRC_URI[anstream-0.6.21.sha256sum] = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
186SRC_URI[anstyle-1.0.10.sha256sum] = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" 203SRC_URI[anstyle-1.0.13.sha256sum] = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
187SRC_URI[anstyle-parse-0.2.6.sha256sum] = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" 204SRC_URI[anstyle-parse-0.2.7.sha256sum] = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
188SRC_URI[anstyle-query-1.1.2.sha256sum] = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" 205SRC_URI[anstyle-query-1.1.5.sha256sum] = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
189SRC_URI[anstyle-wincon-3.0.7.sha256sum] = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" 206SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
190SRC_URI[asn1-rs-0.5.2.sha256sum] = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" 207SRC_URI[asn1-rs-0.5.2.sha256sum] = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0"
191SRC_URI[asn1-rs-0.6.2.sha256sum] = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" 208SRC_URI[asn1-rs-0.6.2.sha256sum] = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048"
192SRC_URI[asn1-rs-derive-0.4.0.sha256sum] = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" 209SRC_URI[asn1-rs-derive-0.4.0.sha256sum] = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
193SRC_URI[asn1-rs-derive-0.5.1.sha256sum] = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" 210SRC_URI[asn1-rs-derive-0.5.1.sha256sum] = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
194SRC_URI[asn1-rs-impl-0.1.0.sha256sum] = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" 211SRC_URI[asn1-rs-impl-0.1.0.sha256sum] = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
195SRC_URI[asn1-rs-impl-0.2.0.sha256sum] = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" 212SRC_URI[asn1-rs-impl-0.2.0.sha256sum] = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
196SRC_URI[async-attributes-1.1.2.sha256sum] = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" 213SRC_URI[autocfg-1.5.0.sha256sum] = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
197SRC_URI[async-channel-1.9.0.sha256sum] = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 214SRC_URI[bindgen-0.72.1.sha256sum] = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
198SRC_URI[async-channel-2.3.1.sha256sum] = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
199SRC_URI[async-executor-1.13.1.sha256sum] = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
200SRC_URI[async-global-executor-2.4.1.sha256sum] = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
201SRC_URI[async-io-2.4.0.sha256sum] = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059"
202SRC_URI[async-lock-3.4.0.sha256sum] = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
203SRC_URI[async-std-1.13.0.sha256sum] = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615"
204SRC_URI[async-task-4.7.1.sha256sum] = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
205SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
206SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
207SRC_URI[bindgen-0.71.1.sha256sum] = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
208SRC_URI[bitfield-0.14.0.sha256sum] = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" 215SRC_URI[bitfield-0.14.0.sha256sum] = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac"
209SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 216SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
210SRC_URI[bitflags-2.8.0.sha256sum] = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" 217SRC_URI[bitflags-2.10.0.sha256sum] = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
211SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 218SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
212SRC_URI[blocking-1.6.1.sha256sum] = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 219SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
213SRC_URI[bumpalo-3.16.0.sha256sum] = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 220SRC_URI[bytes-1.11.1.sha256sum] = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
214SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 221SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
215SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 222SRC_URI[cfg-if-1.0.4.sha256sum] = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
216SRC_URI[cfg_aliases-0.2.1.sha256sum] = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 223SRC_URI[cfg_aliases-0.2.1.sha256sum] = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
217SRC_URI[clang-sys-1.8.1.sha256sum] = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 224SRC_URI[clang-sys-1.8.1.sha256sum] = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
218SRC_URI[clap-4.5.27.sha256sum] = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" 225SRC_URI[clap-4.5.57.sha256sum] = "6899ea499e3fb9305a65d5ebf6e3d2248c5fab291f300ad0a704fbe142eae31a"
219SRC_URI[clap_builder-4.5.27.sha256sum] = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" 226SRC_URI[clap_builder-4.5.57.sha256sum] = "7b12c8b680195a62a8364d16b8447b01b6c2c8f9aaf68bee653be34d4245e238"
220SRC_URI[clap_derive-4.5.24.sha256sum] = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" 227SRC_URI[clap_derive-4.5.55.sha256sum] = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
221SRC_URI[clap_lex-0.7.4.sha256sum] = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" 228SRC_URI[clap_lex-0.7.7.sha256sum] = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32"
222SRC_URI[colorchoice-1.0.3.sha256sum] = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" 229SRC_URI[colorchoice-1.0.4.sha256sum] = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
223SRC_URI[colored-2.2.0.sha256sum] = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" 230SRC_URI[colored-2.2.0.sha256sum] = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
224SRC_URI[concurrent-queue-2.5.0.sha256sum] = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
225SRC_URI[core-foundation-0.10.0.sha256sum] = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 231SRC_URI[core-foundation-0.10.0.sha256sum] = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
226SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 232SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
227SRC_URI[cpufeatures-0.2.17.sha256sum] = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 233SRC_URI[cpufeatures-0.2.17.sha256sum] = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
228SRC_URI[crossbeam-utils-0.8.21.sha256sum] = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 234SRC_URI[crossterm-0.25.0.sha256sum] = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
229SRC_URI[crunchy-0.2.3.sha256sum] = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" 235SRC_URI[crossterm_winapi-0.9.1.sha256sum] = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
230SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 236SRC_URI[crunchy-0.2.4.sha256sum] = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
231SRC_URI[data-encoding-2.7.0.sha256sum] = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" 237SRC_URI[crypto-common-0.1.7.sha256sum] = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
238SRC_URI[data-encoding-2.10.0.sha256sum] = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
232SRC_URI[der-parser-8.2.0.sha256sum] = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" 239SRC_URI[der-parser-8.2.0.sha256sum] = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e"
233SRC_URI[deranged-0.3.11.sha256sum] = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 240SRC_URI[deranged-0.5.5.sha256sum] = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
234SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 241SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
235SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 242SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
236SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 243SRC_URI[dyn-clone-1.0.20.sha256sum] = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
244SRC_URI[either-1.15.0.sha256sum] = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
237SRC_URI[embedded-crc-macros-1.0.0.sha256sum] = "4f1c75747a43b086df1a87fb2a889590bc0725e0abf54bba6d0c4bf7bd9e762c" 245SRC_URI[embedded-crc-macros-1.0.0.sha256sum] = "4f1c75747a43b086df1a87fb2a889590bc0725e0abf54bba6d0c4bf7bd9e762c"
238SRC_URI[env_logger-0.10.2.sha256sum] = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" 246SRC_URI[env_logger-0.10.2.sha256sum] = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
239SRC_URI[errno-0.3.10.sha256sum] = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 247SRC_URI[errno-0.3.14.sha256sum] = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
240SRC_URI[event-listener-2.5.3.sha256sum] = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
241SRC_URI[event-listener-5.4.0.sha256sum] = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
242SRC_URI[event-listener-strategy-0.5.3.sha256sum] = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2"
243SRC_URI[fastrand-2.3.0.sha256sum] = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
244SRC_URI[futures-0.3.31.sha256sum] = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 248SRC_URI[futures-0.3.31.sha256sum] = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
245SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 249SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
246SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 250SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
247SRC_URI[futures-executor-0.3.31.sha256sum] = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 251SRC_URI[futures-executor-0.3.31.sha256sum] = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
248SRC_URI[futures-io-0.3.31.sha256sum] = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 252SRC_URI[futures-io-0.3.31.sha256sum] = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
249SRC_URI[futures-lite-2.6.0.sha256sum] = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
250SRC_URI[futures-macro-0.3.31.sha256sum] = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 253SRC_URI[futures-macro-0.3.31.sha256sum] = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
251SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 254SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
252SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 255SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
253SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 256SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
257SRC_URI[fuzzy-matcher-0.3.7.sha256sum] = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"
258SRC_URI[fxhash-0.2.1.sha256sum] = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
254SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 259SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
255SRC_URI[glob-0.3.2.sha256sum] = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 260SRC_URI[glob-0.3.3.sha256sum] = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
256SRC_URI[gloo-timers-0.3.0.sha256sum] = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" 261SRC_URI[half-2.7.1.sha256sum] = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
257SRC_URI[half-2.4.1.sha256sum] = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
258SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 262SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
259SRC_URI[hermit-abi-0.4.0.sha256sum] = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 263SRC_URI[hermit-abi-0.5.2.sha256sum] = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
260SRC_URI[home-0.5.11.sha256sum] = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" 264SRC_URI[home-0.5.12.sha256sum] = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
261SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 265SRC_URI[humantime-2.3.0.sha256sum] = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
266SRC_URI[inquire-0.7.5.sha256sum] = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a"
262SRC_URI[io-kit-sys-0.4.1.sha256sum] = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" 267SRC_URI[io-kit-sys-0.4.1.sha256sum] = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b"
263SRC_URI[is-terminal-0.4.15.sha256sum] = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" 268SRC_URI[is-terminal-0.4.17.sha256sum] = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
264SRC_URI[is_terminal_polyfill-1.70.1.sha256sum] = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" 269SRC_URI[is_terminal_polyfill-1.70.2.sha256sum] = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
265SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 270SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
266SRC_URI[itoa-1.0.14.sha256sum] = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" 271SRC_URI[itoa-1.0.17.sha256sum] = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
267SRC_URI[js-sys-0.3.77.sha256sum] = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
268SRC_URI[kv-log-macro-1.0.7.sha256sum] = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
269SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 272SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
270SRC_URI[libc-0.2.169.sha256sum] = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" 273SRC_URI[libc-0.2.180.sha256sum] = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
271SRC_URI[libloading-0.8.6.sha256sum] = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" 274SRC_URI[libloading-0.8.9.sha256sum] = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
272SRC_URI[libmctp-0.2.0.sha256sum] = "0d077261b65cfe16a3d490243354fbaec3f22e5bcad546d21394105ab836d1d0" 275SRC_URI[libmctp-0.2.0.sha256sum] = "0d077261b65cfe16a3d490243354fbaec3f22e5bcad546d21394105ab836d1d0"
273SRC_URI[libudev-0.3.0.sha256sum] = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0" 276SRC_URI[libudev-0.3.0.sha256sum] = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0"
274SRC_URI[libudev-sys-0.1.4.sha256sum] = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" 277SRC_URI[libudev-sys-0.1.4.sha256sum] = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324"
275SRC_URI[linux-raw-sys-0.4.15.sha256sum] = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 278SRC_URI[linux-raw-sys-0.4.15.sha256sum] = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
276SRC_URI[log-0.4.25.sha256sum] = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" 279SRC_URI[lock_api-0.4.14.sha256sum] = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
277SRC_URI[mach2-0.4.2.sha256sum] = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 280SRC_URI[log-0.4.29.sha256sum] = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
278SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 281SRC_URI[mach2-0.4.3.sha256sum] = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
282SRC_URI[memchr-2.7.6.sha256sum] = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
279SRC_URI[memmap2-0.5.10.sha256sum] = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" 283SRC_URI[memmap2-0.5.10.sha256sum] = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327"
280SRC_URI[minicbor-0.25.1.sha256sum] = "c0452a60c1863c1f50b5f77cd295e8d2786849f35883f0b9e18e7e6e1b5691b0" 284SRC_URI[minicbor-0.25.1.sha256sum] = "c0452a60c1863c1f50b5f77cd295e8d2786849f35883f0b9e18e7e6e1b5691b0"
281SRC_URI[minicbor-derive-0.15.3.sha256sum] = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70" 285SRC_URI[minicbor-derive-0.15.3.sha256sum] = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70"
282SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 286SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
287SRC_URI[mio-0.8.11.sha256sum] = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
288SRC_URI[mio-1.1.1.sha256sum] = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
289SRC_URI[newline-converter-0.3.0.sha256sum] = "47b6b097ecb1cbfed438542d16e84fd7ad9b0c76c8a65b7f9039212a3d14dc7f"
283SRC_URI[nix-0.26.4.sha256sum] = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" 290SRC_URI[nix-0.26.4.sha256sum] = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
284SRC_URI[nix-0.29.0.sha256sum] = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 291SRC_URI[nix-0.29.0.sha256sum] = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
285SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 292SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
286SRC_URI[num-bigint-0.4.6.sha256sum] = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 293SRC_URI[num-bigint-0.4.6.sha256sum] = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
287SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 294SRC_URI[num-conv-0.2.0.sha256sum] = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
288SRC_URI[num-integer-0.1.46.sha256sum] = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 295SRC_URI[num-integer-0.1.46.sha256sum] = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
289SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 296SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
290SRC_URI[oid-registry-0.6.1.sha256sum] = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" 297SRC_URI[oid-registry-0.6.1.sha256sum] = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff"
291SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" 298SRC_URI[once_cell-1.21.3.sha256sum] = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
292SRC_URI[parking-2.2.1.sha256sum] = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 299SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
300SRC_URI[parking_lot-0.12.5.sha256sum] = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
301SRC_URI[parking_lot_core-0.9.12.sha256sum] = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
293SRC_URI[pin-project-lite-0.2.16.sha256sum] = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 302SRC_URI[pin-project-lite-0.2.16.sha256sum] = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
294SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 303SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
295SRC_URI[piper-0.2.4.sha256sum] = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 304SRC_URI[pkg-config-0.3.32.sha256sum] = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
296SRC_URI[pkg-config-0.3.31.sha256sum] = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
297SRC_URI[polling-3.7.4.sha256sum] = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f"
298SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 305SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
299SRC_URI[prettyplease-0.2.29.sha256sum] = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" 306SRC_URI[prettyplease-0.2.37.sha256sum] = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
300SRC_URI[proc-macro2-1.0.93.sha256sum] = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" 307SRC_URI[proc-macro2-1.0.106.sha256sum] = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
301SRC_URI[quote-1.0.38.sha256sum] = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" 308SRC_URI[quote-1.0.40.sha256sum] = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
302SRC_URI[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 309SRC_URI[redox_syscall-0.5.18.sha256sum] = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
303SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 310SRC_URI[regex-1.12.3.sha256sum] = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
304SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 311SRC_URI[regex-automata-0.4.14.sha256sum] = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
305SRC_URI[rustc-hash-2.1.0.sha256sum] = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" 312SRC_URI[regex-syntax-0.8.9.sha256sum] = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c"
313SRC_URI[rustc-hash-2.1.1.sha256sum] = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
306SRC_URI[rusticata-macros-4.1.0.sha256sum] = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" 314SRC_URI[rusticata-macros-4.1.0.sha256sum] = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
307SRC_URI[rustix-0.38.44.sha256sum] = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" 315SRC_URI[rustix-0.38.44.sha256sum] = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
308SRC_URI[rustversion-1.0.19.sha256sum] = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
309SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 316SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
310SRC_URI[serde-1.0.217.sha256sum] = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" 317SRC_URI[serde_core-1.0.228.sha256sum] = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
311SRC_URI[serde_derive-1.0.217.sha256sum] = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" 318SRC_URI[serde_derive-1.0.228.sha256sum] = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
312SRC_URI[serialport-4.7.0.sha256sum] = "5ecfc4858c2266c7695d8b8460bbd612fa81bd2e250f5f0dd16195e4b4f8b3d8" 319SRC_URI[serialport-4.8.1.sha256sum] = "21f60a586160667241d7702c420fc223939fb3c0bb8d3fac84f78768e8970dee"
313SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 320SRC_URI[sha2-0.10.9.sha256sum] = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
314SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 321SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
315SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 322SRC_URI[signal-hook-0.3.18.sha256sum] = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
323SRC_URI[signal-hook-mio-0.2.5.sha256sum] = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
324SRC_URI[signal-hook-registry-1.4.8.sha256sum] = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
325SRC_URI[slab-0.4.12.sha256sum] = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
326SRC_URI[smallvec-1.15.1.sha256sum] = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
316SRC_URI[smbus-pec-1.0.1.sha256sum] = "ca0763a680cd5d72b28f7bfc8a054c117d8841380a6ad4f72f05bd2a34217d3e" 327SRC_URI[smbus-pec-1.0.1.sha256sum] = "ca0763a680cd5d72b28f7bfc8a054c117d8841380a6ad4f72f05bd2a34217d3e"
328SRC_URI[socket2-0.6.2.sha256sum] = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0"
317SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 329SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
318SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 330SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
319SRC_URI[syn-2.0.96.sha256sum] = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" 331SRC_URI[syn-2.0.114.sha256sum] = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
320SRC_URI[synstructure-0.12.6.sha256sum] = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" 332SRC_URI[synstructure-0.12.6.sha256sum] = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
321SRC_URI[synstructure-0.13.1.sha256sum] = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 333SRC_URI[synstructure-0.13.2.sha256sum] = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
322SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 334SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
323SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 335SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
336SRC_URI[thiserror-2.0.18.sha256sum] = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
324SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 337SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
325SRC_URI[time-0.3.37.sha256sum] = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" 338SRC_URI[thiserror-impl-2.0.18.sha256sum] = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
326SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 339SRC_URI[thread_local-1.1.9.sha256sum] = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
327SRC_URI[time-macros-0.2.19.sha256sum] = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" 340SRC_URI[time-0.3.47.sha256sum] = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
328SRC_URI[tracing-0.1.41.sha256sum] = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 341SRC_URI[time-core-0.1.8.sha256sum] = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
329SRC_URI[tracing-core-0.1.33.sha256sum] = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 342SRC_URI[time-macros-0.2.27.sha256sum] = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
330SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 343SRC_URI[tokio-1.49.0.sha256sum] = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
331SRC_URI[unescaper-0.1.5.sha256sum] = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" 344SRC_URI[tokio-macros-2.6.0.sha256sum] = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
332SRC_URI[unicode-ident-1.0.15.sha256sum] = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243" 345SRC_URI[typenum-1.19.0.sha256sum] = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
346SRC_URI[unescaper-0.1.8.sha256sum] = "4064ed685c487dbc25bd3f0e9548f2e34bab9d18cefc700f9ec2dba74ba1138e"
347SRC_URI[unicode-ident-1.0.22.sha256sum] = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
348SRC_URI[unicode-segmentation-1.12.0.sha256sum] = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
349SRC_URI[unicode-width-0.1.14.sha256sum] = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
333SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 350SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
334SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 351SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
335SRC_URI[value-bag-1.10.0.sha256sum] = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2"
336SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 352SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
337SRC_URI[wasm-bindgen-0.2.100.sha256sum] = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 353SRC_URI[wasi-0.11.1+wasi-snapshot-preview1.sha256sum] = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
338SRC_URI[wasm-bindgen-backend-0.2.100.sha256sum] = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
339SRC_URI[wasm-bindgen-futures-0.4.50.sha256sum] = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
340SRC_URI[wasm-bindgen-macro-0.2.100.sha256sum] = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
341SRC_URI[wasm-bindgen-macro-support-0.2.100.sha256sum] = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
342SRC_URI[wasm-bindgen-shared-0.2.100.sha256sum] = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
343SRC_URI[web-sys-0.3.77.sha256sum] = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
344SRC_URI[which-6.0.3.sha256sum] = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" 354SRC_URI[which-6.0.3.sha256sum] = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f"
345SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 355SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
346SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 356SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
347SRC_URI[winapi-util-0.1.9.sha256sum] = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 357SRC_URI[winapi-util-0.1.11.sha256sum] = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
348SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 358SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
359SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
360SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
361SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
349SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 362SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
363SRC_URI[windows-sys-0.60.2.sha256sum] = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
364SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
365SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
350SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 366SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
367SRC_URI[windows-targets-0.53.5.sha256sum] = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
368SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
351SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 369SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
370SRC_URI[windows_aarch64_gnullvm-0.53.1.sha256sum] = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
371SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
352SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 372SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
373SRC_URI[windows_aarch64_msvc-0.53.1.sha256sum] = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
374SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
353SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 375SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
376SRC_URI[windows_i686_gnu-0.53.1.sha256sum] = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
354SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 377SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
378SRC_URI[windows_i686_gnullvm-0.53.1.sha256sum] = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
379SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
355SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 380SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
381SRC_URI[windows_i686_msvc-0.53.1.sha256sum] = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
382SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
356SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 383SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
384SRC_URI[windows_x86_64_gnu-0.53.1.sha256sum] = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
385SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
357SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 386SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
387SRC_URI[windows_x86_64_gnullvm-0.53.1.sha256sum] = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
388SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
358SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 389SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
390SRC_URI[windows_x86_64_msvc-0.53.1.sha256sum] = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
359SRC_URI[winsafe-0.0.19.sha256sum] = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" 391SRC_URI[winsafe-0.0.19.sha256sum] = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
360SRC_URI[x509-parser-0.15.1.sha256sum] = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" 392SRC_URI[x509-parser-0.15.1.sha256sum] = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da"
361# from tock-responder/Cargo.lock 393SRC_URI[zerocopy-0.8.38.sha256sum] = "57cf3aa6855b23711ee9852dfc97dfaa51c45feaba5b645d0c777414d494a961"
362SRC_URI += " \ 394SRC_URI[zerocopy-derive-0.8.38.sha256sum] = "8a616990af1a287837c4fe6596ad77ef57948f787e46ce28e166facc0cc1cb75"
363 crate://crates.io/aho-corasick/1.1.3 \
364 crate://crates.io/atty/0.2.14 \
365 crate://crates.io/autocfg/1.4.0 \
366 crate://crates.io/bindgen/0.71.1 \
367 crate://crates.io/bitfield/0.14.0 \
368 crate://crates.io/bitflags/1.3.2 \
369 crate://crates.io/bitflags/2.8.0 \
370 crate://crates.io/byteorder/0.5.3 \
371 crate://crates.io/cexpr/0.6.0 \
372 crate://crates.io/cfg-if/1.0.0 \
373 crate://crates.io/clang-sys/1.8.1 \
374 crate://crates.io/clap/3.2.25 \
375 crate://crates.io/clap_derive/3.2.25 \
376 crate://crates.io/clap_lex/0.2.4 \
377 crate://crates.io/critical-section/1.2.0 \
378 crate://crates.io/either/1.13.0 \
379 crate://crates.io/elf/0.0.10 \
380 crate://crates.io/embedded-alloc/0.5.1 \
381 crate://crates.io/embedded-crc-macros/1.0.0 \
382 crate://crates.io/errno/0.3.10 \
383 crate://crates.io/glob/0.3.2 \
384 crate://crates.io/hashbrown/0.12.3 \
385 crate://crates.io/heck/0.4.1 \
386 crate://crates.io/hermit-abi/0.1.19 \
387 crate://crates.io/home/0.5.11 \
388 crate://crates.io/indexmap/1.9.3 \
389 crate://crates.io/itertools/0.13.0 \
390 crate://crates.io/libc/0.2.169 \
391 crate://crates.io/libloading/0.8.6 \
392 crate://crates.io/libm/0.2.11 \
393 crate://crates.io/libmctp/0.2.0 \
394 crate://crates.io/linked_list_allocator/0.10.5 \
395 crate://crates.io/linux-raw-sys/0.4.15 \
396 crate://crates.io/log/0.4.25 \
397 crate://crates.io/memchr/2.7.4 \
398 crate://crates.io/minimal-lexical/0.2.1 \
399 crate://crates.io/nom/7.1.3 \
400 crate://crates.io/numtoa/0.1.0 \
401 crate://crates.io/once_cell/1.20.2 \
402 crate://crates.io/os_str_bytes/6.6.1 \
403 crate://crates.io/portable-atomic/1.10.0 \
404 crate://crates.io/prettyplease/0.2.29 \
405 crate://crates.io/proc-macro-error/1.0.4 \
406 crate://crates.io/proc-macro-error-attr/1.0.4 \
407 crate://crates.io/proc-macro2/1.0.93 \
408 crate://crates.io/quote/1.0.38 \
409 crate://crates.io/redox_syscall/0.2.16 \
410 crate://crates.io/redox_termios/0.1.3 \
411 crate://crates.io/regex/1.11.1 \
412 crate://crates.io/regex-automata/0.4.9 \
413 crate://crates.io/regex-syntax/0.8.5 \
414 crate://crates.io/rustc-hash/2.1.0 \
415 crate://crates.io/rustix/0.38.44 \
416 crate://crates.io/shlex/1.3.0 \
417 crate://crates.io/smbus-pec/1.0.1 \
418 crate://crates.io/strsim/0.10.0 \
419 crate://crates.io/syn/1.0.109 \
420 crate://crates.io/syn/2.0.96 \
421 crate://crates.io/termcolor/1.4.1 \
422 crate://crates.io/termion/1.5.6 \
423 crate://crates.io/textwrap/0.16.1 \
424 crate://crates.io/unicode-ident/1.0.15 \
425 crate://crates.io/version_check/0.9.5 \
426 crate://crates.io/which/6.0.3 \
427 crate://crates.io/winapi/0.3.9 \
428 crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
429 crate://crates.io/winapi-util/0.1.9 \
430 crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
431 crate://crates.io/windows-sys/0.59.0 \
432 crate://crates.io/windows-targets/0.52.6 \
433 crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
434 crate://crates.io/windows_aarch64_msvc/0.52.6 \
435 crate://crates.io/windows_i686_gnu/0.52.6 \
436 crate://crates.io/windows_i686_gnullvm/0.52.6 \
437 crate://crates.io/windows_i686_msvc/0.52.6 \
438 crate://crates.io/windows_x86_64_gnu/0.52.6 \
439 crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
440 crate://crates.io/windows_x86_64_msvc/0.52.6 \
441 crate://crates.io/winsafe/0.0.19 \
442"
443
444SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
445SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
446SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
447SRC_URI[bindgen-0.71.1.sha256sum] = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
448SRC_URI[bitfield-0.14.0.sha256sum] = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac"
449SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
450SRC_URI[bitflags-2.8.0.sha256sum] = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
451SRC_URI[byteorder-0.5.3.sha256sum] = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855"
452SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
453SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
454SRC_URI[clang-sys-1.8.1.sha256sum] = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
455SRC_URI[clap-3.2.25.sha256sum] = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
456SRC_URI[clap_derive-3.2.25.sha256sum] = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008"
457SRC_URI[clap_lex-0.2.4.sha256sum] = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
458SRC_URI[critical-section-1.2.0.sha256sum] = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
459SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
460SRC_URI[elf-0.0.10.sha256sum] = "4841de15dbe0e49b9b62a417589299e3be0d557e0900d36acb87e6dae47197f5"
461SRC_URI[embedded-alloc-0.5.1.sha256sum] = "ddae17915accbac2cfbc64ea0ae6e3b330e6ea124ba108dada63646fd3c6f815"
462SRC_URI[embedded-crc-macros-1.0.0.sha256sum] = "4f1c75747a43b086df1a87fb2a889590bc0725e0abf54bba6d0c4bf7bd9e762c"
463SRC_URI[errno-0.3.10.sha256sum] = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
464SRC_URI[glob-0.3.2.sha256sum] = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
465SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
466SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
467SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
468SRC_URI[home-0.5.11.sha256sum] = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
469SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
470SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
471SRC_URI[libc-0.2.169.sha256sum] = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
472SRC_URI[libloading-0.8.6.sha256sum] = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
473SRC_URI[libm-0.2.11.sha256sum] = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
474SRC_URI[libmctp-0.2.0.sha256sum] = "0d077261b65cfe16a3d490243354fbaec3f22e5bcad546d21394105ab836d1d0"
475SRC_URI[linked_list_allocator-0.10.5.sha256sum] = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286"
476SRC_URI[linux-raw-sys-0.4.15.sha256sum] = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
477SRC_URI[log-0.4.25.sha256sum] = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
478SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
479SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
480SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
481SRC_URI[numtoa-0.1.0.sha256sum] = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
482SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
483SRC_URI[os_str_bytes-6.6.1.sha256sum] = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
484SRC_URI[portable-atomic-1.10.0.sha256sum] = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6"
485SRC_URI[prettyplease-0.2.29.sha256sum] = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac"
486SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
487SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
488SRC_URI[proc-macro2-1.0.93.sha256sum] = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
489SRC_URI[quote-1.0.38.sha256sum] = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
490SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
491SRC_URI[redox_termios-0.1.3.sha256sum] = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb"
492SRC_URI[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
493SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
494SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
495SRC_URI[rustc-hash-2.1.0.sha256sum] = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
496SRC_URI[rustix-0.38.44.sha256sum] = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
497SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
498SRC_URI[smbus-pec-1.0.1.sha256sum] = "ca0763a680cd5d72b28f7bfc8a054c117d8841380a6ad4f72f05bd2a34217d3e"
499SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
500SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
501SRC_URI[syn-2.0.96.sha256sum] = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
502SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
503SRC_URI[termion-1.5.6.sha256sum] = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
504SRC_URI[textwrap-0.16.1.sha256sum] = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
505SRC_URI[unicode-ident-1.0.15.sha256sum] = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243"
506SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
507SRC_URI[which-6.0.3.sha256sum] = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f"
508SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
509SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
510SRC_URI[winapi-util-0.1.9.sha256sum] = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
511SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
512SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
513SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
514SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
515SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
516SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
517SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
518SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
519SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
520SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
521SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
522SRC_URI[winsafe-0.0.19.sha256sum] = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
523SRC_URI[clap-4.5.26.sha256sum] = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783"
524SRC_URI[clap_builder-4.5.26.sha256sum] = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121"
525SRC_URI[cpufeatures-0.2.16.sha256sum] = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3"
526SRC_URI[crunchy-0.2.2.sha256sum] = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
527SRC_URI[is-terminal-0.4.13.sha256sum] = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
528SRC_URI[rustix-0.38.43.sha256sum] = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6"
529SRC_URI[unicode-ident-1.0.14.sha256sum] = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
530SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
531SRC_URI[autocfg-1.3.0.sha256sum] = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
532SRC_URI[bindgen-0.63.0.sha256sum] = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
533SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
534SRC_URI[critical-section-1.1.2.sha256sum] = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216"
535SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
536SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
537SRC_URI[home-0.5.9.sha256sum] = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
538SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
539SRC_URI[libc-0.2.155.sha256sum] = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
540SRC_URI[libloading-0.8.5.sha256sum] = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
541SRC_URI[libm-0.2.8.sha256sum] = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
542SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
543SRC_URI[log-0.4.22.sha256sum] = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
544SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
545SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
546SRC_URI[portable-atomic-1.7.0.sha256sum] = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
547SRC_URI[proc-macro2-1.0.86.sha256sum] = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
548SRC_URI[quote-1.0.36.sha256sum] = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
549SRC_URI[regex-1.10.5.sha256sum] = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
550SRC_URI[regex-automata-0.4.7.sha256sum] = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
551SRC_URI[regex-syntax-0.8.4.sha256sum] = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
552SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
553SRC_URI[rustix-0.38.34.sha256sum] = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
554SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
555SRC_URI[which-4.4.2.sha256sum] = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
556SRC_URI[which-6.0.2.sha256sum] = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075"
557SRC_URI[winapi-util-0.1.8.sha256sum] = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
558SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
diff --git a/meta-oe/recipes-devtools/spdm-utils/spdm-utils_0.7.2.bb b/meta-oe/recipes-devtools/spdm-utils/spdm-utils_0.7.2.bb
index 5c5022d9c0..6b7c46ed3a 100644
--- a/meta-oe/recipes-devtools/spdm-utils/spdm-utils_0.7.2.bb
+++ b/meta-oe/recipes-devtools/spdm-utils/spdm-utils_0.7.2.bb
@@ -15,7 +15,9 @@ SRC_URI += "git://github.com/westerndigitalcorporation/spdm-utils.git;protocol=h
15 15
16include spdm-utils-crates.inc 16include spdm-utils-crates.inc
17 17
18SRCREV = "f67ac9e00b79f603ecbbd29928a4ecc3dec5abd5" 18SRCREV = "8805327c9ac0d354c6ef891ccdd0527bbecf80e0"
19
20PV .= "+git"
19 21
20DEPENDS += "libspdm udev clang-native bindgen-cli-native pciutils" 22DEPENDS += "libspdm udev clang-native bindgen-cli-native pciutils"
21 23
diff --git a/meta-oe/recipes-devtools/xerces-c/xerces-c_3.3.0.bb b/meta-oe/recipes-devtools/xerces-c/xerces-c_3.3.0.bb
index 102e329878..0a3fbf5b93 100644
--- a/meta-oe/recipes-devtools/xerces-c/xerces-c_3.3.0.bb
+++ b/meta-oe/recipes-devtools/xerces-c/xerces-c_3.3.0.bb
@@ -9,7 +9,7 @@ SECTION = "libs"
9LICENSE = "Apache-2.0" 9LICENSE = "Apache-2.0"
10LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" 10LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
11 11
12CVE_PRODUCT = "xerces-c\+\+" 12CVE_PRODUCT = "xerces-c++"
13 13
14SRC_URI = "http://archive.apache.org/dist/xerces/c/3/sources/${BP}.tar.bz2 \ 14SRC_URI = "http://archive.apache.org/dist/xerces/c/3/sources/${BP}.tar.bz2 \
15 file://0001-aclocal.m4-don-t-use-full-path-of-with_curl-in-xerce.patch \ 15 file://0001-aclocal.m4-don-t-use-full-path-of-with_curl-in-xerce.patch \