diff --git a/buildozer/__init__.py b/buildozer/__init__.py index 628e589f4..d15554e98 100644 --- a/buildozer/__init__.py +++ b/buildozer/__init__.py @@ -48,7 +48,19 @@ LOG_LEVELS_T = 'EID' -class BuildozerCommandException(Exception): +class BuildozerException(Exception): + ''' + Exception raised for general situations buildozer cannot process. + ''' + pass + + +class BuildozerCommandException(BuildozerException): + ''' + Exception raised when an external command failed. + + See: `Buildozer.cmd()`. + ''' pass @@ -1033,9 +1045,13 @@ def run(): # don't show the exception in the command line. The log already show the # command failed. pass + except BuildozerException as error: + Buildozer().error('%s' % error) def run_remote(): try: BuildozerRemote().run_command(sys.argv[1:]) except BuildozerCommandException: pass + except BuildozerException as error: + Buildozer().error('%s' % error) diff --git a/buildozer/targets/android.py b/buildozer/targets/android.py index 7deaaa30e..3c37466df 100644 --- a/buildozer/targets/android.py +++ b/buildozer/targets/android.py @@ -19,6 +19,7 @@ import os from pipes import quote from sys import platform, executable +from buildozer import BuildozerException from buildozer.target import Target from os import environ from os.path import join, realpath, expanduser @@ -102,6 +103,15 @@ def check_requirements(self): self.javac_cmd = self._locate_java('javac') self.keytool_cmd = self._locate_java('keytool') + # Check for C header . + _, _, returncode_dpkg = self.buildozer.cmd( + 'dpkg --version', break_on_error= False) + is_debian_like = (returncode_dpkg == 0) + if is_debian_like: + if not self.buildozer.file_exists('/usr/include/zlib.h'): + message = 'zlib headers must be installed, run: sudo apt-get install zlib1g-dev' + raise BuildozerException(message) + # Need to add internally installed ant to path for external tools # like adb to use path = [join(self.apache_ant_dir, 'bin')] @@ -334,7 +344,7 @@ def compile_platform(self): need_compile = 0 if last_requirements != android_requirements: need_compile = 1 - if not self.buildozer.file_exists(self.pa_dir, 'dist', 'default'): + if not self.buildozer.file_exists(self.pa_dir, 'dist', 'default', 'build.py'): need_compile = 1 if not need_compile: