From d49346b6323f36f8e5cd4f343e46038dac029eb2 Mon Sep 17 00:00:00 2001 From: opacam Date: Mon, 10 Dec 2018 14:41:44 +0100 Subject: [PATCH 1/2] Fix openssl dependant recipe: pycrypto (and grants python3 compatibility) Since the recent openssl upgrade this recipe stopped to work. Here we adapt the recipe to the new python2 build system and to new openssl version. Also bump the recipe version number to the latest available (to avoid possible errors with our python3). --- pythonforandroid/recipes/pycrypto/__init__.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pythonforandroid/recipes/pycrypto/__init__.py b/pythonforandroid/recipes/pycrypto/__init__.py index c2f68724da..05fac919ab 100644 --- a/pythonforandroid/recipes/pycrypto/__init__.py +++ b/pythonforandroid/recipes/pycrypto/__init__.py @@ -4,26 +4,26 @@ info, shprint, ) -from os.path import join import sh class PyCryptoRecipe(CompiledComponentsPythonRecipe): - version = '2.6.1' - url = 'https://pypi.python.org/packages/source/p/pycrypto/pycrypto-{version}.tar.gz' - depends = ['openssl', 'python2'] + version = '2.7a1' + url = 'https://github.com/dlitz/pycrypto/archive/v{version}.zip' + depends = ['openssl', ('python2', 'python3')] site_packages_name = 'Crypto' - + call_hostpython_via_targetpython = False patches = ['add_length.patch'] - def get_recipe_env(self, arch=None): + def get_recipe_env(self, arch=None, clang=True): env = super(PyCryptoRecipe, self).get_recipe_env(arch) - openssl_build_dir = Recipe.get_recipe('openssl', self.ctx).get_build_dir(arch.arch) - env['CC'] = '%s -I%s' % (env['CC'], join(openssl_build_dir, 'include')) + openssl_recipe = Recipe.get_recipe('openssl', self.ctx) + env['CC'] = env['CC'] + openssl_recipe.include_flags(arch) + env['LDFLAGS'] = env['LDFLAGS'] + ' -L{}'.format( self.ctx.get_libs_dir(arch.arch) + - '-L{}'.format(self.ctx.libs_dir)) + ' -L{}'.format( - openssl_build_dir) + '-L{}'.format(self.ctx.libs_dir)) + openssl_recipe.link_flags(arch) + env['EXTRA_CFLAGS'] = '--host linux-armv' env['ac_cv_func_malloc_0_nonnull'] = 'yes' return env From de4c4c56b75e2aaef68ed927af6f9eada118cee7 Mon Sep 17 00:00:00 2001 From: opacam Date: Tue, 15 Jan 2019 12:59:58 +0100 Subject: [PATCH 2/2] Move libraries from LDFLAGS to LIBS for pycrypto recipe Because this is how you are supposed to do it, you must use LDFLAGS for linker flags and LDLIBS (or the equivalent LOADLIBES) for the libraries --- pythonforandroid/recipes/pycrypto/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pythonforandroid/recipes/pycrypto/__init__.py b/pythonforandroid/recipes/pycrypto/__init__.py index 05fac919ab..e8bfab2666 100644 --- a/pythonforandroid/recipes/pycrypto/__init__.py +++ b/pythonforandroid/recipes/pycrypto/__init__.py @@ -20,9 +20,10 @@ def get_recipe_env(self, arch=None, clang=True): openssl_recipe = Recipe.get_recipe('openssl', self.ctx) env['CC'] = env['CC'] + openssl_recipe.include_flags(arch) - env['LDFLAGS'] = env['LDFLAGS'] + ' -L{}'.format( - self.ctx.get_libs_dir(arch.arch) + - '-L{}'.format(self.ctx.libs_dir)) + openssl_recipe.link_flags(arch) + env['LDFLAGS'] += ' -L{}'.format(self.ctx.get_libs_dir(arch.arch)) + env['LDFLAGS'] += ' -L{}'.format(self.ctx.libs_dir) + env['LDFLAGS'] += openssl_recipe.link_dirs_flags(arch) + env['LIBS'] = env.get('LIBS', '') + openssl_recipe.link_libs_flags() env['EXTRA_CFLAGS'] = '--host linux-armv' env['ac_cv_func_malloc_0_nonnull'] = 'yes'