python-crypto: fixed endianness detection
authorJeffery To <[email protected]>
Fri, 30 Oct 2015 15:48:52 +0000 (23:48 +0800)
committerJeffery To <[email protected]>
Fri, 30 Oct 2015 15:48:52 +0000 (23:48 +0800)
This fixes setup.py so that it uses the endianness of the target system
instead of detecting endianness from the host. This affects the
computation of RIPEMD-160 hashes.

Signed-off-by: Jeffery To <[email protected]>
lang/python-crypto/Makefile
lang/python-crypto/patches/002-fix-endianness-detect.patch [new file with mode: 0644]

index 0e3eeb68d0edc36fe53d73498e157dc4e6b5ace0..e0a3b7bf3bc76112f123d407367588e04f47d62a 100644 (file)
@@ -37,7 +37,10 @@ and various encryption algorithms (AES, DES, IDEA, RSA, ElGamal, etc.).
 endef
 
 define Build/Compile
-       $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+       $(call Build/Compile/PyMod,,\
+               install --prefix=/usr --root=$(PKG_INSTALL_DIR),\
+               CONFIG_BIG_ENDIAN="$(CONFIG_BIG_ENDIAN)" \
+       )
 endef
 
 define Package/python-crypto/install
diff --git a/lang/python-crypto/patches/002-fix-endianness-detect.patch b/lang/python-crypto/patches/002-fix-endianness-detect.patch
new file mode 100644 (file)
index 0000000..fd3a656
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/setup.py 2015-10-30 23:30:22.334127083 +0800
++++ b/setup.py 2015-10-30 23:33:03.856098660 +0800
+@@ -100,6 +100,12 @@
+         w(kwd.get("end", "\n"))
+ def endianness_macro():
++    if "CONFIG_BIG_ENDIAN" in os.environ:
++        if os.environ["CONFIG_BIG_ENDIAN"] == "y":
++            return ('PCT_BIG_ENDIAN', 1)
++        else:
++            return ('PCT_LITTLE_ENDIAN', 1)
++    raise AssertionError("CONFIG_BIG_ENDIAN environment variable missing")
+     s = struct.pack("@I", 0x33221100)
+     if s == "\x00\x11\x22\x33".encode():     # little endian
+         return ('PCT_LITTLE_ENDIAN', 1)