mirror of
https://github.com/liberatedsystems/openCom-Companion.git
synced 2024-11-23 05:50:36 +01:00
76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
|
from pythonforandroid.recipe import CompiledComponentsPythonRecipe
|
||
|
from pythonforandroid.logger import shprint, info
|
||
|
from pythonforandroid.util import current_directory
|
||
|
from multiprocessing import cpu_count
|
||
|
from os.path import join
|
||
|
import glob
|
||
|
import sh
|
||
|
import shutil
|
||
|
|
||
|
|
||
|
class NumpyRecipe(CompiledComponentsPythonRecipe):
|
||
|
|
||
|
version = '1.22.3'
|
||
|
url = 'https://pypi.python.org/packages/source/n/numpy/numpy-{version}.zip'
|
||
|
site_packages_name = 'numpy'
|
||
|
depends = ['setuptools', 'cython']
|
||
|
install_in_hostpython = True
|
||
|
call_hostpython_via_targetpython = False
|
||
|
|
||
|
patches = [
|
||
|
join("patches", "remove-default-paths.patch"),
|
||
|
join("patches", "add_libm_explicitly_to_build.patch"),
|
||
|
join("patches", "ranlib.patch"),
|
||
|
]
|
||
|
|
||
|
def get_recipe_env(self, arch=None, with_flags_in_cc=True):
|
||
|
env = super().get_recipe_env(arch, with_flags_in_cc)
|
||
|
|
||
|
# _PYTHON_HOST_PLATFORM declares that we're cross-compiling
|
||
|
# and avoids issues when building on macOS for Android targets.
|
||
|
env["_PYTHON_HOST_PLATFORM"] = arch.command_prefix
|
||
|
|
||
|
# NPY_DISABLE_SVML=1 allows numpy to build for non-AVX512 CPUs
|
||
|
# See: https://github.com/numpy/numpy/issues/21196
|
||
|
env["NPY_DISABLE_SVML"] = "1"
|
||
|
|
||
|
return env
|
||
|
|
||
|
def _build_compiled_components(self, arch):
|
||
|
info('Building compiled components in {}'.format(self.name))
|
||
|
|
||
|
env = self.get_recipe_env(arch)
|
||
|
with current_directory(self.get_build_dir(arch.arch)):
|
||
|
hostpython = sh.Command(self.hostpython_location)
|
||
|
shprint(hostpython, 'setup.py', self.build_cmd, '-v',
|
||
|
_env=env, *self.setup_extra_args)
|
||
|
build_dir = glob.glob('build/lib.*')[0]
|
||
|
shprint(sh.find, build_dir, '-name', '"*.o"', '-exec',
|
||
|
env['STRIP'], '{}', ';', _env=env)
|
||
|
|
||
|
def _rebuild_compiled_components(self, arch, env):
|
||
|
info('Rebuilding compiled components in {}'.format(self.name))
|
||
|
|
||
|
hostpython = sh.Command(self.real_hostpython_location)
|
||
|
shprint(hostpython, 'setup.py', 'clean', '--all', '--force', _env=env)
|
||
|
shprint(hostpython, 'setup.py', self.build_cmd, '-v', _env=env,
|
||
|
*self.setup_extra_args)
|
||
|
|
||
|
def build_compiled_components(self, arch):
|
||
|
self.setup_extra_args = ['-j', str(cpu_count())]
|
||
|
self._build_compiled_components(arch)
|
||
|
self.setup_extra_args = []
|
||
|
|
||
|
def rebuild_compiled_components(self, arch, env):
|
||
|
self.setup_extra_args = ['-j', str(cpu_count())]
|
||
|
self._rebuild_compiled_components(arch, env)
|
||
|
self.setup_extra_args = []
|
||
|
|
||
|
def get_hostrecipe_env(self, arch):
|
||
|
env = super().get_hostrecipe_env(arch)
|
||
|
env['RANLIB'] = shutil.which('ranlib')
|
||
|
return env
|
||
|
|
||
|
|
||
|
recipe = NumpyRecipe()
|