diff mbox series

[meta-oe,v3] cryptopp: add a recipe for version 8.9.0

Message ID 20250528-add-cryptopp-v3-1-6ad49cdb41bb@bootlin.com
State Under Review
Headers show
Series [meta-oe,v3] cryptopp: add a recipe for version 8.9.0 | expand

Commit Message

Antonin Godard May 28, 2025, 1:21 p.m. UTC
Cryptopp is a library of cryptographic schemes written in C++.
Add a recipe for it in meta-oe/recipes-crypto.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
---
Note: I had no issue building with MACHINE to "qemux86-64" and TCLIBC =
"musl", as reported here:
https://lore.kernel.org/r/CAMKF1sreBnjjX0GW-G9+15Y+EgFQUmKUPX_cqYE7J3WaZ9=94g@mail.gmail.com
Any extra steps to reproduce the issue would be appreciated.
---
Changes in v3:
- Add 0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch to fix the
  arm64 build issue.
- Revert UNPACKDIR -> WORKDIR.
- Use += not append.
- Link to v2: https://lore.kernel.org/r/20241122-add-cryptopp-v2-1-19456062f791@bootlin.com

Changes in v2:
- WORKDIR -> UNPACKDIR in S
- remove bb.utils.contains in CXXFLAGS:append:aarch64 (forgot to remove
  after adding aarch64 override)
- Link to v1: https://lore.kernel.org/r/20241121-add-cryptopp-v1-1-36382a60cecb@bootlin.com
---
 ...ix-arm-crypto-logic-issue-in-config_asm.h.patch | 57 ++++++++++++++++++++++
 meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb  | 45 +++++++++++++++++
 2 files changed, 102 insertions(+)


---
base-commit: 5df267759c953b9615290ea6b8d9051b83863bf9
change-id: 20241121-add-cryptopp-f78794be963c

Best regards,

Comments

Khem Raj May 28, 2025, 8:08 p.m. UTC | #1
Fails to patch

ERROR: cryptopp-8.9.0-r0 do_patch: Applying patch
'0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch' on target
directory '/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/cryptopp/8.9.0/git'
CmdError('quilt --quiltrc
/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/cryptopp/8.9.0/recipe-sysroot-native/etc/quiltrc
push', 0, 'stdout: Applying patch
0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch
patching file config_asm.h
Hunk #1 FAILED at 278 (different line endings).
Hunk #2 FAILED at 290 (different line endings).
Hunk #3 FAILED at 302 (different line endings).
3 out of 3 hunks FAILED -- rejects in file config_asm.h
Patch 0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch does not
apply (enforce with -f)

On Wed, May 28, 2025 at 6:22 AM Antonin Godard via
lists.openembedded.org
<antonin.godard=bootlin.com@lists.openembedded.org> wrote:
>
> Cryptopp is a library of cryptographic schemes written in C++.
> Add a recipe for it in meta-oe/recipes-crypto.
>
> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
> ---
> Note: I had no issue building with MACHINE to "qemux86-64" and TCLIBC =
> "musl", as reported here:
> https://lore.kernel.org/r/CAMKF1sreBnjjX0GW-G9+15Y+EgFQUmKUPX_cqYE7J3WaZ9=94g@mail.gmail.com
> Any extra steps to reproduce the issue would be appreciated.
> ---
> Changes in v3:
> - Add 0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch to fix the
>   arm64 build issue.
> - Revert UNPACKDIR -> WORKDIR.
> - Use += not append.
> - Link to v2: https://lore.kernel.org/r/20241122-add-cryptopp-v2-1-19456062f791@bootlin.com
>
> Changes in v2:
> - WORKDIR -> UNPACKDIR in S
> - remove bb.utils.contains in CXXFLAGS:append:aarch64 (forgot to remove
>   after adding aarch64 override)
> - Link to v1: https://lore.kernel.org/r/20241121-add-cryptopp-v1-1-36382a60cecb@bootlin.com
> ---
>  ...ix-arm-crypto-logic-issue-in-config_asm.h.patch | 57 ++++++++++++++++++++++
>  meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb  | 45 +++++++++++++++++
>  2 files changed, 102 insertions(+)
>
> diff --git a/meta-oe/recipes-crypto/cryptopp/cryptopp-8.9.0/0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch b/meta-oe/recipes-crypto/cryptopp/cryptopp-8.9.0/0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch
> new file mode 100644
> index 0000000000..6200c575aa
> --- /dev/null
> +++ b/meta-oe/recipes-crypto/cryptopp/cryptopp-8.9.0/0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch
> @@ -0,0 +1,57 @@
> +From 553643dffef249ff70155ea4896d83649bc213a1 Mon Sep 17 00:00:00 2001
> +From: Antonin Godard <antonin.godard@bootlin.com>
> +Date: Tue, 27 May 2025 09:00:53 +0200
> +Subject: [PATCH] Fix arm crypto logic issue in config_asm.h
> +
> +The current logic for enabling or disabling the CRYPTOPP_ARM_*_AVAILABLE
> +macros seems wrong, because we do an OR between all of the conditions
> +following `defined(__ARM_FEATURE_CRYPTO)`. Fix the logic so that the
> +CRYPTOPP_ARM_*_AVAILABLE macros are set if __ARM_FEATURE_CRYPTO is set
> +_AND_ any of the following condition is true.
> +
> +Upstream-Status: Submitted [https://github.com/weidai11/cryptopp/pull/1324]
> +Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
> +---
> + config_asm.h | 12 ++++++------
> + 1 file changed, 6 insertions(+), 6 deletions(-)
> +
> +diff --git a/config_asm.h b/config_asm.h
> +index 71ffb9f8..d388124f 100644
> +--- a/config_asm.h
> ++++ b/config_asm.h
> +@@ -278,9 +278,9 @@
> + // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
> + #if !defined(CRYPTOPP_ARM_AES_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_AES)
> + # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
> +-#  if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
> ++#  if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
> +       (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
> +-      (CRYPTOPP_MSC_VERSION >= 1916)
> ++      (CRYPTOPP_MSC_VERSION >= 1916))
> + #   define CRYPTOPP_ARM_AES_AVAILABLE 1
> + #  endif  // Compilers
> + # endif  // Platforms
> +@@ -290,9 +290,9 @@
> + // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
> + #if !defined(CRYPTOPP_ARM_PMULL_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_PMULL)
> + # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
> +-#  if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
> ++#  if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
> +       (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
> +-      (CRYPTOPP_MSC_VERSION >= 1916)
> ++      (CRYPTOPP_MSC_VERSION >= 1916))
> + #   define CRYPTOPP_ARM_PMULL_AVAILABLE 1
> + #  endif  // Compilers
> + # endif  // Platforms
> +@@ -302,9 +302,9 @@
> + // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
> + #if !defined(CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SHA)
> + # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
> +-#  if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
> ++#  if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
> +       (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
> +-      (CRYPTOPP_MSC_VERSION >= 1916)
> ++      (CRYPTOPP_MSC_VERSION >= 1916))
> + #   define CRYPTOPP_ARM_SHA1_AVAILABLE 1
> + #   define CRYPTOPP_ARM_SHA2_AVAILABLE 1
> + #  endif  // Compilers
> diff --git a/meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb b/meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb
> new file mode 100644
> index 0000000000..b1235d6b2c
> --- /dev/null
> +++ b/meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb
> @@ -0,0 +1,45 @@
> +SUMMARY = "A C++ class library of cryptographic schemes"
> +DESCRIPTION = "Crypto++ Library is a C++ class library of cryptographic schemes"
> +CVE_PRODUCT = "cryptopp"
> +HOMEPAGE = "http://www.cryptopp.com/"
> +SECTION = "libs"
> +LICENSE = "BSL-1.0"
> +LIC_FILES_CHKSUM = "file://License.txt;md5=ca6dacb7ef68b1ab5dfa3bed24c12003"
> +
> +SRC_URI = "git://github.com/weidai11/cryptopp.git;protocol=https;branch=master \
> +           file://0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch \
> +           "
> +SRCREV = "843d74c7c97f9e19a615b8ff3c0ca06599ca501b"
> +
> +S = "${WORKDIR}/git"
> +
> +inherit pkgconfig
> +
> +CXXFLAGS += "-fPIC"
> +EXTRA_OEMAKE += "HAS_SOLIB_VERSION=1"
> +
> +do_compile () {
> +    oe_runmake -f GNUmakefile-cross libcryptopp.a libcryptopp.so cryptest.exe
> +}
> +
> +do_install () {
> +    DESTDIR="${D}" \
> +        BINDIR="${bindir}" \
> +        DATADIR="${datadir}" \
> +        INCLUDEDIR="${includedir}" \
> +        LIBDIR="${libdir}" \
> +        oe_runmake install
> +
> +    # Rename cryptest.exe to cryptest
> +    if [ -f "${D}${bindir}/cryptest.exe" ]; then
> +        mv "${D}${bindir}/cryptest.exe" "${D}${bindir}/cryptest"
> +    fi
> +}
> +
> +PACKAGE_BEFORE_PN += "${PN}-cryptest ${PN}-testdata ${PN}-testvectors"
> +
> +FILES:${PN}-cryptest = "${bindir}/cryptest"
> +FILES:${PN}-testdata = "${datadir}/cryptopp/TestData"
> +FILES:${PN}-testvectors = "${datadir}/cryptopp/TestVectors"
> +
> +BBCLASSEXTEND = "native nativesdk"
>
> ---
> base-commit: 5df267759c953b9615290ea6b8d9051b83863bf9
> change-id: 20241121-add-cryptopp-f78794be963c
>
> Best regards,
> --
> Antonin Godard <antonin.godard@bootlin.com>
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#117647): https://lists.openembedded.org/g/openembedded-devel/message/117647
> Mute This Topic: https://lists.openembedded.org/mt/113343502/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta-oe/recipes-crypto/cryptopp/cryptopp-8.9.0/0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch b/meta-oe/recipes-crypto/cryptopp/cryptopp-8.9.0/0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch
new file mode 100644
index 0000000000..6200c575aa
--- /dev/null
+++ b/meta-oe/recipes-crypto/cryptopp/cryptopp-8.9.0/0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch
@@ -0,0 +1,57 @@ 
+From 553643dffef249ff70155ea4896d83649bc213a1 Mon Sep 17 00:00:00 2001
+From: Antonin Godard <antonin.godard@bootlin.com>
+Date: Tue, 27 May 2025 09:00:53 +0200
+Subject: [PATCH] Fix arm crypto logic issue in config_asm.h
+
+The current logic for enabling or disabling the CRYPTOPP_ARM_*_AVAILABLE
+macros seems wrong, because we do an OR between all of the conditions
+following `defined(__ARM_FEATURE_CRYPTO)`. Fix the logic so that the
+CRYPTOPP_ARM_*_AVAILABLE macros are set if __ARM_FEATURE_CRYPTO is set
+_AND_ any of the following condition is true.
+
+Upstream-Status: Submitted [https://github.com/weidai11/cryptopp/pull/1324]
+Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
+---
+ config_asm.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/config_asm.h b/config_asm.h
+index 71ffb9f8..d388124f 100644
+--- a/config_asm.h
++++ b/config_asm.h
+@@ -278,9 +278,9 @@
+ // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
+ #if !defined(CRYPTOPP_ARM_AES_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_AES)
+ # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
+-#  if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
++#  if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
+       (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
+-      (CRYPTOPP_MSC_VERSION >= 1916)
++      (CRYPTOPP_MSC_VERSION >= 1916))
+ #   define CRYPTOPP_ARM_AES_AVAILABLE 1
+ #  endif  // Compilers
+ # endif  // Platforms
+@@ -290,9 +290,9 @@
+ // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
+ #if !defined(CRYPTOPP_ARM_PMULL_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_PMULL)
+ # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
+-#  if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
++#  if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
+       (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
+-      (CRYPTOPP_MSC_VERSION >= 1916)
++      (CRYPTOPP_MSC_VERSION >= 1916))
+ #   define CRYPTOPP_ARM_PMULL_AVAILABLE 1
+ #  endif  // Compilers
+ # endif  // Platforms
+@@ -302,9 +302,9 @@
+ // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
+ #if !defined(CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SHA)
+ # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
+-#  if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
++#  if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
+       (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
+-      (CRYPTOPP_MSC_VERSION >= 1916)
++      (CRYPTOPP_MSC_VERSION >= 1916))
+ #   define CRYPTOPP_ARM_SHA1_AVAILABLE 1
+ #   define CRYPTOPP_ARM_SHA2_AVAILABLE 1
+ #  endif  // Compilers
diff --git a/meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb b/meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb
new file mode 100644
index 0000000000..b1235d6b2c
--- /dev/null
+++ b/meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb
@@ -0,0 +1,45 @@ 
+SUMMARY = "A C++ class library of cryptographic schemes"
+DESCRIPTION = "Crypto++ Library is a C++ class library of cryptographic schemes"
+CVE_PRODUCT = "cryptopp"
+HOMEPAGE = "http://www.cryptopp.com/"
+SECTION = "libs"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://License.txt;md5=ca6dacb7ef68b1ab5dfa3bed24c12003"
+
+SRC_URI = "git://github.com/weidai11/cryptopp.git;protocol=https;branch=master \
+           file://0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch \
+           "
+SRCREV = "843d74c7c97f9e19a615b8ff3c0ca06599ca501b"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig
+
+CXXFLAGS += "-fPIC"
+EXTRA_OEMAKE += "HAS_SOLIB_VERSION=1"
+
+do_compile () {
+    oe_runmake -f GNUmakefile-cross libcryptopp.a libcryptopp.so cryptest.exe
+}
+
+do_install () {
+    DESTDIR="${D}" \
+        BINDIR="${bindir}" \
+        DATADIR="${datadir}" \
+        INCLUDEDIR="${includedir}" \
+        LIBDIR="${libdir}" \
+        oe_runmake install
+
+    # Rename cryptest.exe to cryptest
+    if [ -f "${D}${bindir}/cryptest.exe" ]; then
+        mv "${D}${bindir}/cryptest.exe" "${D}${bindir}/cryptest"
+    fi
+}
+
+PACKAGE_BEFORE_PN += "${PN}-cryptest ${PN}-testdata ${PN}-testvectors"
+
+FILES:${PN}-cryptest = "${bindir}/cryptest"
+FILES:${PN}-testdata = "${datadir}/cryptopp/TestData"
+FILES:${PN}-testvectors = "${datadir}/cryptopp/TestVectors"
+
+BBCLASSEXTEND = "native nativesdk"