Browse Source

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>
lilik-openwrt-22.03
Jeffery To 9 years ago
parent
commit
35ae47a44c
2 changed files with 19 additions and 1 deletions
  1. +4
    -1
      lang/python-crypto/Makefile
  2. +15
    -0
      lang/python-crypto/patches/002-fix-endianness-detect.patch

+ 4
- 1
lang/python-crypto/Makefile View 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


+ 15
- 0
lang/python-crypto/patches/002-fix-endianness-detect.patch View File

@ -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)

Loading…
Cancel
Save