diff --git a/bypy/linux/__main__.py b/bypy/linux/__main__.py index 55494f4fe8..e0b07b1055 100644 --- a/bypy/linux/__main__.py +++ b/bypy/linux/__main__.py @@ -15,7 +15,9 @@ from functools import partial from bypy.constants import ( OUTPUT_DIR, PREFIX, SRC as CALIBRE_DIR, is64bit, python_major_minor_version ) -from bypy.freeze import extract_extension_modules, freeze_python, path_to_freeze_dir +from bypy.freeze import ( + extract_extension_modules, fix_pycryptodome, freeze_python, path_to_freeze_dir +) from bypy.utils import ( create_job, get_dll_path, mkdtemp, parallel_build, py_compile, run, walk ) @@ -158,6 +160,7 @@ def copy_python(env, ext_dir): pdir = j(env.lib_dir, 'calibre-extensions') if not os.path.exists(pdir): os.mkdir(pdir) + fix_pycryptodome(j(env.py_dir, 'site-packages')) for x in os.listdir(j(env.py_dir, 'site-packages')): os.rename(j(env.py_dir, 'site-packages', x), j(env.py_dir, x)) os.rmdir(j(env.py_dir, 'site-packages')) diff --git a/bypy/macos/__main__.py b/bypy/macos/__main__.py index fd6c52f009..45ccae7aae 100644 --- a/bypy/macos/__main__.py +++ b/bypy/macos/__main__.py @@ -22,7 +22,9 @@ from itertools import repeat from bypy.constants import ( OUTPUT_DIR, PREFIX, PYTHON, SRC as CALIBRE_DIR, python_major_minor_version ) -from bypy.freeze import extract_extension_modules, freeze_python, path_to_freeze_dir +from bypy.freeze import ( + extract_extension_modules, fix_pycryptodome, freeze_python, path_to_freeze_dir +) from bypy.utils import current_dir, mkdtemp, py_compile, timeit, walk abspath, join, basename, dirname = os.path.abspath, os.path.join, os.path.basename, os.path.dirname @@ -545,6 +547,7 @@ class Freeze(object): finally: if tdir is not None: shutil.rmtree(tdir) + fix_pycryptodome(self.site_packages) try: shutil.rmtree(join(self.site_packages, 'calibre', 'plugins')) except OSError as err: diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py index 1104ddbc7c..21713cba03 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py @@ -30,6 +30,8 @@ class BuildTest(unittest.TestCase): ctypes.WinDLL(os.path.join(base, x)) except Exception as err: self.assertTrue(False, 'Failed to load DLL %s with error: %s' % (x, err)) + + def test_pycryptodome(self): from Crypto.Cipher import AES del AES