import os import sh from os.path import join from pythonforandroid.recipe import CompiledComponentsPythonRecipe from pythonforandroid.util import current_directory from pythonforandroid.toolchain import shprint, info class PyICURecipe(CompiledComponentsPythonRecipe): version = '1.9.2' url = 'https://pypi.python.org/packages/source/P/PyICU/PyICU-{version}.tar.gz' depends = [('python2', 'python3crystax'), "icu"] patches = ['locale.patch', 'icu.patch'] def get_recipe_env(self, arch): env = super(PyICURecipe, self).get_recipe_env(arch) icu_include = join( self.ctx.get_python_install_dir(), "include", "icu") env["CC"] += " -I"+icu_include include = ( " -I{ndk}/sources/cxx-stl/gnu-libstdc++/{version}/include/" " -I{ndk}/sources/cxx-stl/gnu-libstdc++/{version}/libs/" "{arch}/include") include = include.format(ndk=self.ctx.ndk_dir, version=env["TOOLCHAIN_VERSION"], arch=arch.arch) env["CC"] += include lib = "{ndk}/sources/cxx-stl/gnu-libstdc++/{version}/libs/{arch}" lib = lib.format(ndk=self.ctx.ndk_dir, version=env["TOOLCHAIN_VERSION"], arch=arch.arch) env["LDFLAGS"] += " -lgnustl_shared -L"+lib build_dir = self.get_build_dir(arch.arch) env["LDFLAGS"] += " -L"+build_dir return env def build_arch(self, arch): build_dir = self.get_build_dir(arch.arch) info("create links to icu libs") lib_dir = join(self.ctx.get_python_install_dir(), "lib") icu_libs = [f for f in os.listdir(lib_dir) if f.startswith("libicu")] for l in icu_libs: raw = l.rsplit(".", 1)[0] try: shprint(sh.ln, "-s", join(lib_dir, l), join(build_dir, raw)) except Exception: pass super(PyICURecipe, self).build_arch(arch) recipe = PyICURecipe()