From bc619f1c4148fb037d567146a728b06c5169d234 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 11 Jan 2020 04:47:27 +0200 Subject: [PATCH] pyinstaller: remove Crypto hook --- scripts/hooks/hook-Crypto.py | 58 ------------------------------------ 1 file changed, 58 deletions(-) delete mode 100644 scripts/hooks/hook-Crypto.py diff --git a/scripts/hooks/hook-Crypto.py b/scripts/hooks/hook-Crypto.py deleted file mode 100644 index 1be95a592..000000000 --- a/scripts/hooks/hook-Crypto.py +++ /dev/null @@ -1,58 +0,0 @@ -# ----------------------------------------------------------------------------- -# Copyright (c) 2005-2019, PyInstaller Development Team. -# -# Distributed under the terms of the GNU General Public License with exception -# for distributing bootloader. -# -# The full license is in the file COPYING.txt, distributed with this software. -# ----------------------------------------------------------------------------- -""" -Hook for PyCryptodome library: https://pypi.python.org/pypi/pycryptodome - -PyCryptodome is an almost drop-in replacement for the now unmaintained -PyCrypto library. The two are mutually exclusive as they live under -the same package ("Crypto"). - -PyCryptodome distributes dynamic libraries and builds them as if they were -Python C extensions (even though they are not extensions - as they can't be -imported by Python). It might sound a bit weird, but this decision is rooted -in PyPy and its partial and slow support for C extensions. However, this also -invalidates several of the existing methods used by PyInstaller to decide the -right files to pull in. - -Even though this hook is meant to help with PyCryptodome only, it will be -triggered also when PyCrypto is installed, so it must be tested with both. - -Tested with PyCryptodome 3.5.1, PyCrypto 2.6.1, Python 2.7 & 3.6, Fedora & -Windows -""" -import glob -import os - -from PyInstaller.compat import EXTENSION_SUFFIXES -from PyInstaller.utils.hooks import get_module_file_attribute - -# Include the modules as binaries in a subfolder named like the package. -# Cryptodome's loader expects to find them inside the package directory for -# the main module. We cannot use hiddenimports because that would add the -# modules outside the package. - -binaries = [] -binary_module_names = [ - "Crypto.Math", # First in the list - "Crypto.Cipher", - "Crypto.Util", - "Crypto.Hash", - "Crypto.Protocol", -] - -try: - for module_name in binary_module_names: - m_dir = os.path.dirname(get_module_file_attribute(module_name)) - for ext in EXTENSION_SUFFIXES: - module_bin = glob.glob(os.path.join(m_dir, "_*%s" % ext)) - for f in module_bin: - binaries.append((f, module_name.replace(".", os.sep))) -except ImportError: - # Do nothing for PyCrypto (Crypto.Math does not exist there) - pass