Skip to content

Commit e2b46c0

Browse files
committed
extract p4a dependencies, to be sure it works. Closes #501
1 parent a71e1ff commit e2b46c0

File tree

2 files changed

+35
-16
lines changed

2 files changed

+35
-16
lines changed

buildozer/targets/android.py

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import traceback
2121
import os
2222
import io
23+
import re
24+
import ast
2325
from pipes import quote
2426
from sys import platform, executable
2527
from buildozer import BuildozerException
@@ -461,6 +463,25 @@ def _check_aidl(self, v_build_tools):
461463
raise BuildozerException()
462464

463465
def install_platform(self):
466+
self._install_p4a()
467+
self._install_apache_ant()
468+
self._install_android_sdk()
469+
self._install_android_ndk()
470+
self._install_android_packages()
471+
472+
# ultimate configuration check.
473+
# some of our configuration cannot be check without platform.
474+
self.check_configuration_tokens()
475+
476+
self.buildozer.environ.update({
477+
'PACKAGES_PATH': self.buildozer.global_packages_dir,
478+
'ANDROIDSDK': self.android_sdk_dir,
479+
'ANDROIDNDK': self.android_ndk_dir,
480+
'ANDROIDAPI': self.android_api,
481+
'ANDROIDNDKVER': 'r{}'.format(self.android_ndk_version)
482+
})
483+
484+
def _install_p4a(self):
464485
cmd = self.buildozer.cmd
465486
source = self.buildozer.config.getdefault('app', 'p4a.branch',
466487
self.p4a_branch)
@@ -493,22 +514,19 @@ def install_platform(self):
493514
cwd=pa_dir)
494515
cmd('git checkout {}'.format(source), cwd=pa_dir)
495516

496-
self._install_apache_ant()
497-
self._install_android_sdk()
498-
self._install_android_ndk()
499-
self._install_android_packages()
500-
501-
# ultimate configuration check.
502-
# some of our configuration cannot be check without platform.
503-
self.check_configuration_tokens()
504-
505-
self.buildozer.environ.update({
506-
'PACKAGES_PATH': self.buildozer.global_packages_dir,
507-
'ANDROIDSDK': self.android_sdk_dir,
508-
'ANDROIDNDK': self.android_ndk_dir,
509-
'ANDROIDAPI': self.android_api,
510-
'ANDROIDNDKVER': 'r{}'.format(self.android_ndk_version)
511-
})
517+
# also install dependencies (currently, only setup.py knows about it)
518+
# let's extract them.
519+
try:
520+
with open(join(self.pa_dir, "setup.py")) as fd:
521+
setup = fd.read()
522+
deps = re.findall("install_reqs = (\[[^\]]*\])", setup, re.DOTALL | re.MULTILINE)[1]
523+
deps = ast.literal_eval(deps)
524+
except Exception:
525+
deps = []
526+
pip_deps = []
527+
for dep in deps:
528+
pip_deps.append('"{}"'.format(dep))
529+
cmd('pip install -q --user {}'.format(" ".join(pip_deps)))
512530

513531
def get_available_packages(self):
514532
available_modules = self.buildozer.cmd('./distribute.sh -l',

buildozer/targets/android_new.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
'''
33
Android target, based on python-for-android project (new toolchain)
44
'''
5+
56
import sys
67

78
from buildozer import USE_COLOR

0 commit comments

Comments
 (0)