41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
from pythonforandroid.toolchain import PythonRecipe, current_directory, shprint
|
|
import sh
|
|
|
|
|
|
class Psycopg2Recipe(PythonRecipe):
|
|
version = 'latest'
|
|
url = 'http://initd.org/psycopg/tarballs/psycopg2-{version}.tar.gz'
|
|
depends = [('python2', 'python3crystax'), 'libpq']
|
|
site_packages_name = 'psycopg2'
|
|
|
|
def prebuild_arch(self, arch):
|
|
libdir = self.ctx.get_libs_dir(arch.arch)
|
|
with current_directory(self.get_build_dir(arch.arch)):
|
|
# pg_config_helper will return the system installed libpq, but we
|
|
# need the one we just cross-compiled
|
|
shprint(sh.sed, '-i',
|
|
"s|pg_config_helper.query(.libdir.)|'{}'|".format(libdir),
|
|
'setup.py')
|
|
|
|
def get_recipe_env(self, arch):
|
|
env = super(Psycopg2Recipe, self).get_recipe_env(arch)
|
|
env['LDFLAGS'] = "{} -L{}".format(env['LDFLAGS'], self.ctx.get_libs_dir(arch.arch))
|
|
env['EXTRA_CFLAGS'] = "--host linux-armv"
|
|
return env
|
|
|
|
def install_python_package(self, arch, name=None, env=None, is_dir=True):
|
|
'''Automate the installation of a Python package (or a cython
|
|
package where the cython components are pre-built).'''
|
|
if env is None:
|
|
env = self.get_recipe_env(arch)
|
|
|
|
with current_directory(self.get_build_dir(arch.arch)):
|
|
hostpython = sh.Command(self.ctx.hostpython)
|
|
|
|
shprint(hostpython, 'setup.py', 'build_ext', '--static-libpq',
|
|
_env=env)
|
|
shprint(hostpython, 'setup.py', 'install', '-O2',
|
|
'--root={}'.format(self.ctx.get_python_install_dir()),
|
|
'--install-lib=lib/python2.7/site-packages', _env=env)
|
|
|
|
recipe = Psycopg2Recipe()
|