Re: [oe] [PATCH] imx-cst: upgrade 3.4.1 -> 4.0.1
Khem Raj <[email protected]> Sun, 26 Jul 2026 13:52:33 -0700
| Newsgroups | org.openembedded.lists.openembedded-devel |
|---|---|
| Message-ID | <CAMKF1sq6O9i_jVG0r9w47k0Xvpn_Skbb9dnmr8c8K2LZZzgeXw@mail.gmail.com> |
Fabio This fails to build with clang/qemuarm64 see - https://errors.yoctoproject.org/Errors/Details/951465/ On Sat, Jul 25, 2026 at 8:13 PM Fabio Estevam via lists.openembedded.org <[email protected]> wrote: > CST 4.0.1 replaces the custom Makefile build with CMake. Inherit the > cmake class, use the source src directory, and switch the parser > dependency from byacc to bison. Add json-c and point CMake at its staged > headers. > > Disable installation of internal CST static libraries. Suppress line > directives from flex and bison generated sources to avoid embedding build > paths in the output. > > Refresh source and license checksums and account for json-c's MIT > license. Drop the obsolete Makefile race fix. > > Import Debian's check_return_values.patch from its packaging repository: > > https://salsa.debian.org/collabora-team/imx-code-signing-tool > > It handles fgets() failures required by the warning-as-error build. > > Signed-off-by: Fabio Estevam <[email protected]> > --- > .../0001-check-return-value-of-fgets.patch | 101 ++++++++++++++++++ > ...fix-missing-makefile-rule-dependency.patch | 45 -------- > .../recipes-support/imx-cst/imx-cst_3.4.1.bb | 42 -------- > .../recipes-support/imx-cst/imx-cst_4.0.1.bb | 36 +++++++ > 4 files changed, 137 insertions(+), 87 deletions(-) > create mode 100644 > meta-oe/recipes-support/imx-cst/imx-cst/0001-check-return-value-of-fgets.patch > delete mode 100644 > meta-oe/recipes-support/imx-cst/imx-cst/0001-fix-missing-makefile-rule-dependency.patch > delete mode 100644 meta-oe/recipes-support/imx-cst/imx-cst_3.4.1.bb > create mode 100644 meta-oe/recipes-support/imx-cst/imx-cst_4.0.1.bb > > diff --git > a/meta-oe/recipes-support/imx-cst/imx-cst/0001-check-return-value-of-fgets.patch > b/meta-oe/recipes-support/imx-cst/imx-cst/0001-check-return-value-of-fgets.patch > new file mode 100644 > index 000000000000..be3165f3d982 > --- /dev/null > +++ > b/meta-oe/recipes-support/imx-cst/imx-cst/0001-check-return-value-of-fgets.patch > @@ -0,0 +1,101 @@ > +From 8a0717cc07e78d1133cc10e62220770734181bee Mon Sep 17 00:00:00 2001 > +From: Tobias Deiminger <[email protected]> > +Date: Fri, 30 Jan 2026 01:55:36 +0100 > +Subject: [PATCH] Check return value of fgets > + > +The cmake project has a reasonable default setting > +CMAKE_COMPILE_WARNING_AS_ERROR=ON in cmake/compiler_options.cmake. With > this > +setting our build will fail on unchecked return values from fgets(). This > +patch fixes the issue by adding return value checks. > + > +This is not just to silence the errors. C99 defines for fgets: "If a read > +error occurs during the operation, the array contents are indeterminate > and a > +null pointer is returned". We should actually check the return value to > avoid > +undefined behavior from processing indeterminate data. > + > +Let get_passcode_to_key_file return -1 on error, since it is used as > callback > +to OpenSSLs PEM_read_bio_PrivateKey_ex where documentation states "The > +callback must return the number of characters in the passphrase or -1 if > an > +error occurred". > + > +Upstream-Status: Pending > +--- > + src/lib/back_end/pkey.c | 6 +++++- > + src/tools/pki_tree/hab4_pki_tree.c | 25 +++++++++++++++++++++---- > + 2 files changed, 26 insertions(+), 5 deletions(-) > + > +diff --git a/src/lib/back_end/pkey.c b/src/lib/back_end/pkey.c > +index 31b5c3d..d6e9784 100644 > +--- a/src/lib/back_end/pkey.c > ++++ b/src/lib/back_end/pkey.c > +@@ -102,8 +102,12 @@ int get_passcode_to_key_file(char *buf, int size, > int rwflag, void *userdata) > + return 0; > + } > + > +- fgets(buf, size, password_fp); > ++ buf = fgets(buf, size, password_fp); > + fclose(password_fp); > ++ if (buf == NULL) > ++ { > ++ return -1; > ++ } > + chomp(buf); > + > + return strlen(buf); > +diff --git a/src/tools/pki_tree/hab4_pki_tree.c > b/src/tools/pki_tree/hab4_pki_tree.c > +index 3c878e4..4ff15b2 100644 > +--- a/src/tools/pki_tree/hab4_pki_tree.c > ++++ b/src/tools/pki_tree/hab4_pki_tree.c > +@@ -118,6 +118,7 @@ int main(int argc, char **argv) > + int num_srk = 0; > + int val_period = 0; > + char *pass = NULL; > ++ char *user_input = NULL; > + unsigned long serial = 0; > + char duration_str[10] = {0}; > + char num_srk_str[10] = {0}; > +@@ -304,10 +305,18 @@ int main(int argc, char **argv) > + if (strcmp(existing_ca, "y") == 0) > + { > + printf("Enter CA key name: "); > +- fgets(ca_key, sizeof(ca_key), stdin); > ++ user_input = fgets(ca_key, sizeof(ca_key), stdin); > ++ if (user_input == NULL) { > ++ fprintf(stderr, "Error while reading user input\n"); > ++ return 1; > ++ } > + ca_key[strcspn(ca_key, "\n")] = '\0'; > + printf("Enter CA certificate name: "); > +- fgets(ca_cert, sizeof(ca_cert), stdin); > ++ user_input = fgets(ca_cert, sizeof(ca_cert), stdin); > ++ if (user_input == NULL) { > ++ fprintf(stderr, "Error while reading user input\n"); > ++ return 1; > ++ } > + ca_cert[strcspn(ca_cert, "\n")] = '\0'; > + } > + printf("\nKey type options (confirm targeted device supports > desired " > +@@ -330,10 +339,18 @@ int main(int argc, char **argv) > + ARRAY_SIZE(rsa_kl_values)); > + } > + printf("Enter PKI tree duration (years): "); > +- fgets(duration_str, sizeof(duration_str), stdin); > ++ user_input = fgets(duration_str, sizeof(duration_str), stdin); > ++ if (user_input == NULL) { > ++ fprintf(stderr, "Error while reading user input\n"); > ++ return 1; > ++ } > + duration = atoi(duration_str); > + printf("How many Super Root Keys should be generated ? : "); > +- fgets(num_srk_str, sizeof(num_srk_str), stdin); > ++ user_input = fgets(num_srk_str, sizeof(num_srk_str), stdin); > ++ if (user_input == NULL) { > ++ fprintf(stderr, "Error while reading user input\n"); > ++ return 1; > ++ } > + num_srk = atoi(num_srk_str); > + ask_until_valid( > + "Do you want the SRK certificates to have the CA flag set? > (y/n) :", > +-- > +2.47.3 > + > diff --git > a/meta-oe/recipes-support/imx-cst/imx-cst/0001-fix-missing-makefile-rule-dependency.patch > b/meta-oe/recipes-support/imx-cst/imx-cst/0001-fix-missing-makefile-rule-dependency.patch > deleted file mode 100644 > index ce7626ab31e5..000000000000 > --- > a/meta-oe/recipes-support/imx-cst/imx-cst/0001-fix-missing-makefile-rule-dependency.patch > +++ /dev/null > @@ -1,45 +0,0 @@ > -From 73509cb22ffab827dc3e3ccda2781683b8e8296d Mon Sep 17 00:00:00 2001 > -From: =?UTF-8?q?K=C3=A9l=C3=A9fa=20San=C3=A9?= <[email protected]> > -Date: Mon, 2 Jun 2025 11:07:08 +0200 > -Subject: [PATCH] fix missing makefile rule dependency > - > -During, the package build with an high CPU load we can face > -a build failed issue, caused by the header file cst_parser.h not present > -when compiling cst_lexer.c, which depend on cst_parser.h: > -| x86_64-poky-linux-gcc ... -c cst_lexer.c -o cst_lexer.d > -| ../../code/front_end/src/cst_lexer.l:21:10: fatal error: > -|cst_parser.h: No such file or directory > -| 21 | #include "cst_parser.h" > -| | ^~~~~~~~~~~~~~ > -| compilation terminated. > - > -The file cst_parser.h is generated during compilation > -by a makefile rule which also generate cst_parser.c > - > -To fix the issue, makefile rule needed to be update > -in order for compilation of cst_lexer.c to be done, > -always after the generation of cst_parser.h and .c > - > -Upstream-Status: Submitted [ > https://community.nxp.com/t5/Other-NXP-Products/Package-imx-code-signing-tool-3-4-0-dfsg-2-build-issue/m-p/2108575#M28853 > ] > - > -Signed-off-by: Kelefa Sane <[email protected]> > ---- > - code/build/make/rules.mk | 5 +++++ > - 1 file changed, 5 insertions(+) > - > -diff --git a/code/build/make/rules.mk b/code/build/make/rules.mk > -index 7720e4b..239108b 100644 > ---- a/code/build/make/rules.mk > -+++ b/code/build/make/rules.mk > -@@ -35,6 +35,11 @@ LFLAGS := -t > - @echo "Link $@" > - $(LD) $^ $(LDFLAGS) -o $@ > - > -+# Compilation of cst_lexer.c require cst_parser.h > -+# (cst_lexer.c include cst_parser.h) which is generated > -+# by the same makefile genrating cst_parser.c > -+cst_lexer.o: cst_parser.c > -+ > - %.o: %.c > - @echo "Compile $@" > - # generate dependency file > diff --git a/meta-oe/recipes-support/imx-cst/imx-cst_3.4.1.bb > b/meta-oe/recipes-support/imx-cst/imx-cst_3.4.1.bb > deleted file mode 100644 > index c9e73a83b437..000000000000 > --- a/meta-oe/recipes-support/imx-cst/imx-cst_3.4.1.bb > +++ /dev/null > @@ -1,42 +0,0 @@ > -SUMMARY = "i.MX code signing tool" > -DESCRIPTION = "Code signing support that integrates the HABv4 and AHAB > library for i.MX processors" > -LICENSE = "Apache-2.0 AND BSD-3-Clause" > - > -LIC_FILES_CHKSUM = "\ > - file://LICENSE.bsd3;md5=14aba05f9fa6c25527297c8aac95fcf6 \ > - file://LICENSE.hidapi;md5=e0ea014f523f64f0adb13409055ee59e \ > - file://LICENSE.openssl;md5=3441526b1df5cc01d812c7dfc218cea6 \ > -" > - > -DEPENDS = "byacc-native flex-native openssl" > - > -# debian: 3.4.0+dfsg-2 > -DEBIAN_PGK_NAME = "imx-code-signing-tool" > -DEBIAN_PGK_VERSION = "${PV}+dfsg" > - > -SRC_URI = "\ > - > ${DEBIAN_MIRROR}/main/i/${DEBIAN_PGK_NAME}/${DEBIAN_PGK_NAME}_${DEBIAN_PGK_VERSION}.orig.tar.xz > \ > - file://0001-fix-missing-makefile-rule-dependency.patch \ > -" > - > -SRC_URI[sha256sum] = > "342c0c028658a4a859fe70578b58c3b07e17bee0c7e3a13d063d4791e82c2dee" > - > -S = "${UNPACKDIR}/${DEBIAN_PGK_NAME}-${DEBIAN_PGK_VERSION}" > - > -EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}" AR="${AR}" OBJCOPY="${OBJCOPY}"' > - > -inherit siteinfo > - > -do_compile() { > - oe_runmake -C code/obj.linux${SITEINFO_BITS} > OSTYPE=linux${SITEINFO_BITS} ENCRYPTION=yes COPTIONS="${CFLAGS} > ${CPPFLAGS}" LDOPTIONS="${LDFLAGS}" > - oe_runmake -C add-ons/hab_csf_parser COPTS="${CFLAGS} ${CPPFLAGS} > ${LDFLAGS}" > -} > - > -do_install () { > - install -d ${D}${bindir} > - install -m 755 ${S}/code/obj.linux${SITEINFO_BITS}/cst ${D}${bindir}/ > - install -m 755 ${S}/code/obj.linux${SITEINFO_BITS}/srktool > ${D}${bindir} > - install -m 755 ${S}/add-ons/hab_csf_parser/csf_parser ${D}${bindir} > -} > - > -BBCLASSEXTEND = "native nativesdk" > diff --git a/meta-oe/recipes-support/imx-cst/imx-cst_4.0.1.bb > b/meta-oe/recipes-support/imx-cst/imx-cst_4.0.1.bb > new file mode 100644 > index 000000000000..826943fe09c3 > --- /dev/null > +++ b/meta-oe/recipes-support/imx-cst/imx-cst_4.0.1.bb > @@ -0,0 +1,36 @@ > +SUMMARY = "i.MX code signing tool" > +DESCRIPTION = "Code signing support that integrates the HABv4 and AHAB > library for i.MX processors" > +LICENSE = "Apache-2.0 AND BSD-3-Clause AND MIT" > + > +LIC_FILES_CHKSUM = "\ > + file://licenses/LICENSE.bsd3;md5=1ef4297097d818a9787ed775218c133f \ > + file://licenses/LICENSE.json-c;md5=de54b60fbbc35123ba193fea8ee216f2 \ > + file://licenses/LICENSE.openssl;md5=3441526b1df5cc01d812c7dfc218cea6 \ > +" > + > +DEPENDS = "bison-native flex-native json-c openssl" > + > +DEBIAN_PKG_NAME = "imx-code-signing-tool" > +DEBIAN_PKG_VERSION = "${PV}+dfsg" > + > +SRC_URI = "\ > + > ${DEBIAN_MIRROR}/main/i/${DEBIAN_PKG_NAME}/${DEBIAN_PKG_NAME}_${DEBIAN_PKG_VERSION}.orig.tar.xz > \ > + file://0001-check-return-value-of-fgets.patch \ > +" > +SRC_URI[sha256sum] = > "fd92a1a9faa10fb81bbf752c7ee1e257f17e1ec4c2964f8a47adf8a3eaa7df41" > + > +S = "${UNPACKDIR}/${DEBIAN_PKG_NAME}-${DEBIAN_PKG_VERSION}" > + > +OECMAKE_SOURCEPATH = "${S}/src" > + > +# CST_INSTALL only controls installation of internal static libraries, > not tools. > +EXTRA_OECMAKE = "\ > + -DCST_INSTALL=OFF \ > + -DFLEX_TARGET_ARG_COMPILE_FLAGS=--noline \ > + -DBISON_TARGET_ARG_COMPILE_FLAGS=--no-lines \ > + -DJSONC_INCLUDE_DIR=${STAGING_INCDIR} \ > +" > + > +inherit cmake > + > +BBCLASSEXTEND = "native nativesdk" > -- > 2.43.0 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#128450): > https://lists.openembedded.org/g/openembedded-devel/message/128450 > Mute This Topic: https://lists.openembedded.org/mt/120448761/1997914 > Group Owner: [email protected] > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ > [email protected]] > -=-=-=-=-=-=-=-=-=-=-=- > >