lbry-android/recipes/hostpython3crystax/__init__.py

46 lines
1.7 KiB
Python

from pythonforandroid.recipe import Recipe
from pythonforandroid.toolchain import shprint
from os.path import join
import sh
class Hostpython3Recipe(Recipe):
version = 'auto' # the version is taken from the python3crystax recipe
name = 'hostpython3crystax'
conflicts = ['hostpython2']
def get_build_container_dir(self, arch=None):
choices = self.check_recipe_choices()
dir_name = '-'.join([self.name] + choices)
return join(self.ctx.build_dir, 'other_builds', dir_name, 'desktop')
# def prebuild_armeabi(self):
# # Override hostpython Setup?
# shprint(sh.cp, join(self.get_recipe_dir(), 'Setup'),
# join(self.get_build_dir('armeabi'), 'Modules', 'Setup'))
def get_build_dir(self, arch=None):
return join(self.get_build_container_dir(), self.name)
def build_arch(self, arch):
"""
Creates expected build and symlinks system Python version.
"""
self.ctx.hostpython = '/usr/bin/false'
self.ctx.hostpgen = '/usr/bin/false'
# creates the sub buildir (used by other recipes)
# https://github.com/kivy/python-for-android/issues/1154
sub_build_dir = join(self.get_build_dir(), 'build')
shprint(sh.mkdir, '-p', sub_build_dir)
python3crystax = self.get_recipe('python3crystax', self.ctx)
system_python = sh.which("python" + python3crystax.version)
if system_python is None:
raise OSError(
('Trying to use python3crystax=={} but this Python version '
'is not installed locally.').format(python3crystax.version))
link_dest = join(self.get_build_dir(), 'hostpython')
shprint(sh.ln, '-sf', system_python, link_dest)
recipe = Hostpython3Recipe()