diff options
Diffstat (limited to 'upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto')
3 files changed, 49 insertions, 112 deletions
diff --git a/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch b/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch deleted file mode 100644 index d49950074f..0000000000 --- a/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch +++ /dev/null @@ -1,40 +0,0 @@ -From d123b4ddce99c44f2c290fb3d6cc887de98778e6 Mon Sep 17 00:00:00 2001 -From: Haixiao Yan <haixiao.yan.cn@windriver.com> -Date: Wed, 22 Oct 2025 15:23:56 +0800 -Subject: [PATCH 1/2] fix: allow 64-bit time_t on 32-bit systems in - test_is32bit - -Some modern 32-bit Linux systems (e.g. with glibc >= 2.34 or musl time64 ABI) -use 64-bit time_t by default when _TIME_BITS=64 is enabled. The original test -assumed time_t was always 32-bit on 32-bit architectures, which is no longer -true. - -Relax the check to accept both 32-bit and 64-bit time_t values: - - self.assertIn(bit32, (32, 64)) - -This makes the test compatible with both legacy and time64 ABIs. - -Upstream-Status: Backport [https://gitlab.com/m2crypto/m2crypto/-/commit/818c3dfda6ea] - -Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> ---- - tests/test_util.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/test_util.py b/tests/test_util.py -index e925d03b090c..233fb7a099d9 100644 ---- a/tests/test_util.py -+++ b/tests/test_util.py -@@ -26,7 +26,7 @@ class UtilTestCase(unittest.TestCase): - not in ["true", "1", "yes"] - ) - ): -- self.assertEqual(bit32, 32) -+ self.assertIn(bit32, (32, 64)) - else: - self.assertNotEqual(bit32, 32) - self.assertIsInstance(bit32, int) --- -2.34.1 - diff --git a/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-swig-avoid-clang-GNUC-pragma-block-before-_lib.h.patch b/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-swig-avoid-clang-GNUC-pragma-block-before-_lib.h.patch new file mode 100644 index 0000000000..7aa768f44d --- /dev/null +++ b/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-swig-avoid-clang-GNUC-pragma-block-before-_lib.h.patch @@ -0,0 +1,49 @@ +From df210da932c2cab9d3a80ee88c70611d77824a15 Mon Sep 17 00:00:00 2001 +From: Wang Mingyu <wangmy@fujitsu.com> +Date: Wed, 18 Mar 2026 02:26:56 +0000 +Subject: [PATCH] fix(swig): avoid clang GNUC pragma block before _lib.h + +Clang defines __GNUC__, so the old guard emitted PRAGMA_* tokens before +they were defined, breaking builds on macOS/clang; move the block after +<_lib.h> and exclude clang while keeping the GCC<5 workaround. + +Fixes: https://todo.sr.ht/~mcepl/m2crypto/392 + +Upstream-Status: Backport [git.sr.ht/~mcepl/m2crypto/commit/504ca8f438afb0f5041d2b5163e5f666a9a1b742.patch] + +Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> +--- + src/SWIG/_m2crypto.i | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/src/SWIG/_m2crypto.i b/src/SWIG/_m2crypto.i +index d89d355..5426446 100644 +--- a/src/SWIG/_m2crypto.i ++++ b/src/SWIG/_m2crypto.i +@@ -43,15 +43,18 @@ typedef unsigned __int64 uint64_t; + %} + + %{ +-#if defined __GNUC__ && __GNUC__ < 5 +-PRAGMA_IGNORE_UNUSED_LABEL +-PRAGMA_WARN_STRICT_PROTOTYPES +-#endif +- + #include <openssl/err.h> + #include <openssl/rand.h> + #include <_lib.h> + ++/* _lib.h defines PRAGMA_* helpers; only needed for old GCC (clang defines ++ * __GNUC__ too, but doesn't need this workaround). ++ */ ++#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ < 5) ++PRAGMA_IGNORE_UNUSED_LABEL ++PRAGMA_WARN_STRICT_PROTOTYPES ++#endif ++ + #include "compile.h" + + static PyObject *ssl_verify_cb_func; +-- +2.43.0 + diff --git a/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch b/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch deleted file mode 100644 index c36afa5cc0..0000000000 --- a/upstream-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch +++ /dev/null @@ -1,72 +0,0 @@ -From b5dbfca23986429853ccb15a38cc526d9df0dd40 Mon Sep 17 00:00:00 2001 -From: Haixiao Yan <haixiao.yan.cn@windriver.com> -Date: Wed, 22 Oct 2025 15:23:57 +0800 -Subject: [PATCH 2/2] fix: correct struct packing on 32-bit with _TIME_BITS=64 - -On 32-bit platforms with glibc time64 ABI, time_t is 64-bit wide while -`long` remains 32-bit. This causes struct timeval to use two 64-bit fields -(tv_sec, tv_usec). The previous code incorrectly packed timeout as "ll", -leading to EINVAL in setsockopt(SO_RCVTIMEO). - -Use "qq" instead when m2.time_t_bits() == 64 to match the actual ABI. - -Fixes: https://todo.sr.ht/~mcepl/m2crypto/374 - -Upstream-Status: Backport [https://gitlab.com/m2crypto/m2crypto/-/commit/473de659f78e] - -Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> ---- - src/M2Crypto/SSL/timeout.py | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -diff --git a/src/M2Crypto/SSL/timeout.py b/src/M2Crypto/SSL/timeout.py -index b45f38b1cbdb..5ba52283b6f8 100644 ---- a/src/M2Crypto/SSL/timeout.py -+++ b/src/M2Crypto/SSL/timeout.py -@@ -33,10 +33,14 @@ class timeout(object): - millisec = int(self.sec * 1000 + round(float(self.microsec) / 1000)) - binstr = struct.pack("l", millisec) - else: -- if m2.time_t_bits() == 32: -+ bits = m2.time_t_bits() -+ if bits == 32: - binstr = struct.pack("ii", self.sec, self.microsec) -+ elif bits == 64: -+ # handle both 64-bit and 32-bit+TIME_BITS=64 -+ binstr = struct.pack("qq", self.sec, self.microsec) - else: -- binstr = struct.pack("ll", self.sec, self.microsec) -+ raise ValueError(f"Unsupported time_t_bits: {bits}") - return binstr - - -@@ -48,7 +52,13 @@ def struct_to_timeout(binstr: bytes) -> timeout: - sec = int(millisec / 1000) - microsec = (millisec % 1000) * 1000 - else: -- (sec, microsec) = struct.unpack("ll", binstr) -+ bits = m2.time_t_bits() -+ if bits == 32: -+ (sec, microsec) = struct.unpack("ii", binstr) -+ elif bits == 64: -+ (sec, microsec) = struct.unpack("qq", binstr) -+ else: -+ raise ValueError(f"Unsupported time_t_bits: {bits}") - return timeout(sec, microsec) - - -@@ -56,4 +66,10 @@ def struct_size() -> int: - if sys.platform == "win32": - return struct.calcsize("l") - else: -- return struct.calcsize("ll") -+ bits = m2.time_t_bits() -+ if bits == 32: -+ return struct.calcsize("ii") -+ elif bits == 64: -+ return struct.calcsize("qq") -+ else: -+ raise ValueError(f"Unsupported time_t_bits: {bits}") --- -2.34.1 - |
