aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffery To <jeffery.to@gmail.com>2015-10-30 23:48:52 +0800
committerJeffery To <jeffery.to@gmail.com>2015-10-30 23:48:52 +0800
commit35ae47a44c9a4044647689ea1360fe5b6f2a90c9 (patch)
tree87c4aff6f0fc2d78dce0825446e6e4e55efc9b29
parent5354cf51592966364b8c7514e9f8b5316b8740cd (diff)
python-crypto: fixed endianness detection
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 <jeffery.to@gmail.com>
-rw-r--r--lang/python-crypto/Makefile5
-rw-r--r--lang/python-crypto/patches/002-fix-endianness-detect.patch15
2 files changed, 19 insertions, 1 deletions
diff --git a/lang/python-crypto/Makefile b/lang/python-crypto/Makefile
index 0e3eeb68d..e0a3b7bf3 100644
--- a/lang/python-crypto/Makefile
+++ b/lang/python-crypto/Makefile
@@ -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
index 000000000..fd3a656fd
--- /dev/null
+++ b/lang/python-crypto/patches/002-fix-endianness-detect.patch
@@ -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)