Package: release.debian.org
User: release.debian....@packages.debian.org
Usertags: unblock
Severity: normal

unblock fdroidserver/0.2.1-4

Fix RC bug to keep this package in testing, its related to all these:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=769912


It turned out to be non-trivial to change fdroidserver to also be able to use
the system provided Android SDK utils (i.e. /usr/bin/aapt vs.
~/Documents/android-sdk/build-tools/21.1.2/aapt) so the debdiff isn't super
short.  But these are literally only changes needed for this functionality to
work.  It is still important that fdroidserver be able to use a user-installed
Android SDK because lots of the SDK is not yet in Debian.  The 0.2.1-4 update
means that a user can maintain an app repo using only packages in Debian, but
in order to build Android apps, they still need to install the Android SDK.


$ debdiff fdroidserver_0.2.1-3.dsc fdroidserver_0.2.1-4.dsc
diff -Nru fdroidserver-0.2.1/debian/changelog 
fdroidserver-0.2.1/debian/changelog
--- fdroidserver-0.2.1/debian/changelog 2014-10-10 04:43:45.000000000 +0200
+++ fdroidserver-0.2.1/debian/changelog 2014-12-14 22:23:11.000000000 +0100
@@ -1,3 +1,11 @@
+fdroidserver (0.2.1-4) unstable; urgency=medium
+
+  * Recommend android-tools-adb, aapt, zipalign to provide essential utilities
+  * include upstream commits that allow use of system-provided SDK utilities
+    (Closes: #769912)
+
+ -- Hans-Christoph Steiner <h...@eds.org>  Sun, 14 Dec 2014 20:22:07 +0100
+
 fdroidserver (0.2.1-3) unstable; urgency=low

   * fix local sync perms
diff -Nru fdroidserver-0.2.1/debian/control fdroidserver-0.2.1/debian/control
--- fdroidserver-0.2.1/debian/control   2014-10-10 04:12:19.000000000 +0200
+++ fdroidserver-0.2.1/debian/control   2014-12-14 22:06:17.000000000 +0100
@@ -18,11 +18,14 @@
 Architecture: all
 Depends: ${python:Depends},
          ${misc:Depends}
-Recommends: openjdk-7-jre-headless,
+Recommends: android-tools-adb,
+            aapt,
+            openjdk-7-jre-headless,
             openjdk-7-jdk,
             opensc,
             rsync,
-            wget
+            wget,
+            zipalign
 Suggests: bzr,
           git,
           gradle,
diff -Nru
fdroidserver-0.2.1/debian/patches/do-not-set-sdk_path-in-config.py-if-using-system-pro.patch
fdroidserver-0.2.1/debian/patches/do-not-set-sdk_path-in-config.py-if-using-system-pro.patch
---
fdroidserver-0.2.1/debian/patches/do-not-set-sdk_path-in-config.py-if-using-system-pro.patch
1970-01-01 01:00:00.000000000 +0100
+++
fdroidserver-0.2.1/debian/patches/do-not-set-sdk_path-in-config.py-if-using-system-pro.patch
2014-12-14 22:23:11.000000000 +0100
@@ -0,0 +1,139 @@
+From 5f5bcd2e11f45277b865400de14ea8e820318804 Mon Sep 17 00:00:00 2001
+From: Hans-Christoph Steiner <h...@eds.org>
+Date: Tue, 9 Dec 2014 15:20:29 +0100
+Forwarded: not-needed
+Origin: upstream, https://gitlab.com/fdroid/fdroidserver/merge_requests/31
+Subject: [PATCH 7/7] do not set sdk_path in config.py if using system-provided
+ aapt
+
+By not setting sdk_path when /usr/bin/aapt is found, sdk_path then defaults
+to $ANDROID_HOME when its used.  Since in this case, aapt will be used from
+the system path, using aapt entirely ignores sdk_path.  If the user runs
+`fdroid build` in this setup, sdk_path will be $ANDROID_HOME, so it should
+check the env vars for it, but maybe that doesn't actually work like that
+yet.
+---
+ examples/config.py     |  2 +-
+ fdroidserver/common.py |  9 ++++++---
+ fdroidserver/init.py   | 49 ++++++++++++++++++++++++++++---------------------
+ 3 files changed, 35 insertions(+), 25 deletions(-)
+
+--- a/examples/config.py
++++ b/examples/config.py
+@@ -9,7 +9,7 @@
+ # Override the path to the Android NDK, $ANDROID_NDK by default
+ # ndk_path = "/path/to/android-ndk"
+ # Build tools version to be used
+-build_tools = "20.0.0"
++# build_tools = "20.0.0"
+
+ # Command for running Ant
+ # ant = "/path/to/ant"
+--- a/fdroidserver/common.py
++++ b/fdroidserver/common.py
+@@ -161,7 +161,7 @@ def find_sdk_tools_cmd(cmd):
+     '''find a working path to a tool from the Android SDK'''
+
+     tooldirs = []
+-    if 'sdk_path' in config and os.path.exists(config['sdk_path']):
++    if config is not None and 'sdk_path' in config and
os.path.exists(config['sdk_path']):
+         # try to find a working path to this command, in all the recent
possible paths
+         if 'build_tools' in config:
+             build_tools = os.path.join(config['sdk_path'], 'build-tools')
+@@ -192,7 +192,11 @@ def find_sdk_tools_cmd(cmd):
+ def test_sdk_exists(c):
+     if 'sdk_path' not in c:
+         logging.error("'sdk_path' not set in config.py!")
+-        return False
++        if 'aapt' in c and os.path.isfile(c['aapt']):
++            return True
++        else:
++            logging.error("'sdk_path' not set in config.py!")
++            return False
+     if c['sdk_path'] is None:
+         # c['sdk_path'] is set to the value of ANDROID_HOME by default
+         logging.error('No Android SDK found! ANDROID_HOME is not set and
sdk_path is not in config.py!')
+--- a/fdroidserver/init.py
++++ b/fdroidserver/init.py
+@@ -121,6 +121,7 @@ def main():
+         prefix = os.path.normpath(os.path.join(os.path.dirname(__file__), 
'..'))
+         examplesdir = prefix + '/examples'
+
++    aapt = None
+     fdroiddir = os.getcwd()
+     test_config = common.get_default_config()
+
+@@ -129,21 +130,28 @@ def main():
+     if options.android_home is not None:
+         test_config['sdk_path'] = options.android_home
+     elif not common.test_sdk_exists(test_config):
+-        # if neither --android-home nor the default sdk_path exist, prompt
the user
+-        default_sdk_path = '/opt/android-sdk'
+-        while not options.no_prompt:
+-            try:
+-                s = raw_input('Enter the path to the Android SDK ('
+-                              + default_sdk_path + ') here:\n> ')
+-            except KeyboardInterrupt:
+-                print('')
+-                sys.exit(1)
+-            if re.match('^\s*$', s) is not None:
+-                test_config['sdk_path'] = default_sdk_path
+-            else:
+-                test_config['sdk_path'] = s
+-            if common.test_sdk_exists(test_config):
+-                break
++        if os.path.isfile('/usr/bin/aapt'):
++            # remove sdk_path and build_tools, they are not required
++            test_config.pop('sdk_path', None)
++            test_config.pop('build_tools', None)
++            # make sure at least aapt is found, since this can't do anything
without it
++            test_config['aapt'] = common.find_sdk_tools_cmd('aapt')
++        else:
++            # if neither --android-home nor the default sdk_path exist,
prompt the user
++            default_sdk_path = '/opt/android-sdk'
++            while not options.no_prompt:
++                try:
++                    s = raw_input('Enter the path to the Android SDK ('
++                                  + default_sdk_path + ') here:\n> ')
++                except KeyboardInterrupt:
++                    print('')
++                    sys.exit(1)
++                if re.match('^\s*$', s) is not None:
++                    test_config['sdk_path'] = default_sdk_path
++                else:
++                    test_config['sdk_path'] = s
++                if common.test_sdk_exists(test_config):
++                    break
+     if not common.test_sdk_exists(test_config):
+         sys.exit(3)
+
+@@ -154,16 +162,14 @@ def main():
+         shutil.copy(os.path.join(examplesdir, 'fdroid-icon.png'), fdroiddir)
+         shutil.copyfile(os.path.join(examplesdir, 'config.py'), 'config.py')
+         os.chmod('config.py', 0o0600)
+-        write_to_config('sdk_path', test_config['sdk_path'])
++        if 'sdk_path' in test_config:
++            write_to_config('sdk_path', test_config['sdk_path'])
+     else:
+         logging.warn('Looks like this is already an F-Droid repo, cowardly
refusing to overwrite it...')
+         logging.info('Try running `fdroid init` in an empty directory.')
+         sys.exit()
+
+-    if os.path.exists('/usr/bin/aapt'):
+-        # make sure at least aapt is found, since this can't do anything
without it
+-        config['aapt'] = common.find_sdk_tools_cmd('aapt')
+-    else:
++    if not 'aapt' in test_config or not os.path.isfile(test_config['aapt']):
+         # try to find a working aapt, in all the recent possible paths
+         build_tools = os.path.join(test_config['sdk_path'], 'build-tools')
+         aaptdirs = []
+@@ -270,7 +276,8 @@ def main():
+     logging.info('Built repo based in "' + fdroiddir + '"')
+     logging.info('with this config:')
+     logging.info('  Android SDK:\t\t\t' + config['sdk_path'])
+-    logging.info('  Android SDK Build Tools:\t' + os.path.dirname(aapt))
++    if aapt:
++        logging.info('  Android SDK Build Tools:\t' + os.path.dirname(aapt))
+     logging.info('  Android NDK (optional):\t' + ndk_path)
+     logging.info('  Keystore for signing key:\t' + keystore)
+     if repo_keyalias is not None:
diff -Nru
fdroidserver-0.2.1/debian/patches/find-cmds-from-SDK-build-tools-in-a-more-flexible-wa.patch
fdroidserver-0.2.1/debian/patches/find-cmds-from-SDK-build-tools-in-a-more-flexible-wa.patch
---
fdroidserver-0.2.1/debian/patches/find-cmds-from-SDK-build-tools-in-a-more-flexible-wa.patch
1970-01-01 01:00:00.000000000 +0100
+++
fdroidserver-0.2.1/debian/patches/find-cmds-from-SDK-build-tools-in-a-more-flexible-wa.patch
2014-12-14 22:23:11.000000000 +0100
@@ -0,0 +1,218 @@
+From 924425646166673d930cd2b9d93825087646952d Mon Sep 17 00:00:00 2001
+From: Hans-Christoph Steiner <h...@eds.org>
+Date: Tue, 9 Dec 2014 14:12:41 +0100
+Forwarded: not-needed
+Origin: upstream, https://gitlab.com/fdroid/fdroidserver/merge_requests/31
+Subject: [PATCH 5/7] find cmds from SDK build-tools in a more flexible way, on
+ the fly
+
+This is a more flexible approach than testing for the complete SDK and
+build-tools up front.  This will only test for the commands that are
+actually being run, so that if you only have `aapt` installed, you can do
+`fdroid update` without errors, but other commands will still give
+appropriate errors.
+
+This also makes the build_tools item in config.py optional, it is only
+needed if you want to force a specific version of the build-tools.
+---
+ fdroidserver/build.py  |  4 ++--
+ fdroidserver/common.py | 56 ++++++++++++++++++++++++++++++++++++++++++--------
+ fdroidserver/init.py   | 47 ++++++++++++++++++++++--------------------
+ fdroidserver/update.py |  4 ++--
+
+--- a/fdroidserver/build.py
++++ b/fdroidserver/build.py
+@@ -35,7 +35,7 @@ import logging
+
+ import common
+ import metadata
+-from common import FDroidException, BuildException, VCSException,
FDroidPopen, SilentPopen
++from common import FDroidException, BuildException, VCSException,
FDroidPopen, SdkToolsPopen
+
+ try:
+     import paramiko
+@@ -769,7 +769,7 @@ def build_local(app, thisbuild, vcs, bui
+     if not os.path.exists(src):
+         raise BuildException("Unsigned apk is not at expected location of "
+ src)
+
+-    p = SilentPopen([config['aapt'], 'dump', 'badging', src])
++    p = SdkToolsPopen(['aapt', 'dump', 'badging', src])
+
+     vercode = None
+     version = None
+--- a/fdroidserver/common.py
++++ b/fdroidserver/common.py
+@@ -122,9 +122,6 @@ def read_config(opts, config_file='confi
+         v = os.path.expanduser(v)
+         config[k] = os.path.expandvars(v)
+
+-    if not test_build_tools_exists(config):
+-        sys.exit(3)
+-
+     bin_paths = {
+         'aapt': [
+             os.path.join(config['sdk_path'], 'build-tools',
config['build_tools'], 'aapt'),
+@@ -186,7 +183,42 @@ def read_config(opts, config_file='confi
+     return config
+
+
++def find_sdk_tools_cmd(cmd):
++    '''find a working path to a tool from the Android SDK'''
++
++    tooldirs = []
++    if 'sdk_path' in config and os.path.exists(config['sdk_path']):
++        # try to find a working path to this command, in all the recent
possible paths
++        if 'build_tools' in config:
++            build_tools = os.path.join(config['sdk_path'], 'build-tools')
++            # if 'build_tools' was manually set and exists, check only that 
one
++            configed_build_tools = os.path.join(build_tools,
config['build_tools'])
++            if os.path.exists(configed_build_tools):
++                tooldirs.append(configed_build_tools)
++            else:
++                # no configed version, so hunt known paths for it
++                for f in sorted(os.listdir(build_tools), reverse=True):
++                    if os.path.isdir(os.path.join(build_tools, f)):
++                        tooldirs.append(os.path.join(build_tools, f))
++                tooldirs.append(build_tools)
++        sdk_tools = os.path.join(config['sdk_path'], 'tools')
++        if os.path.exists(sdk_tools):
++            tooldirs.append(sdk_tools)
++        sdk_platform_tools = os.path.join(config['sdk_path'], 
'platform-tools')
++        if os.path.exists(sdk_platform_tools):
++            tooldirs.append(sdk_platform_tools)
++    tooldirs.append('/usr/bin')
++    for d in tooldirs:
++        if os.path.isfile(os.path.join(d, cmd)):
++            return os.path.join(d, cmd)
++    # did not find the command, exit with error message
++    ensure_build_tools_exists(config)
++
++
+ def test_sdk_exists(c):
++    if 'sdk_path' not in c:
++        logging.error("'sdk_path' not set in config.py!")
++        return False
+     if c['sdk_path'] is None:
+         # c['sdk_path'] is set to the value of ANDROID_HOME by default
+         logging.error('No Android SDK found! ANDROID_HOME is not set and
sdk_path is not in config.py!')
+@@ -207,16 +239,15 @@ def test_sdk_exists(c):
+     return True
+
+
+-def test_build_tools_exists(c):
++def ensure_build_tools_exists(c):
+     if not test_sdk_exists(c):
+-        return False
++        sys.exit(3)
+     build_tools = os.path.join(c['sdk_path'], 'build-tools')
+     versioned_build_tools = os.path.join(build_tools, c['build_tools'])
+     if not os.path.isdir(versioned_build_tools):
+         logging.critical('Android Build Tools path "'
+                          + versioned_build_tools + '" does not exist!')
+-        return False
+-    return True
++        sys.exit(3)
+
+
+ def write_password_file(pwtype, password=None):
+@@ -1588,8 +1619,7 @@ def isApkDebuggable(apkfile, config):
+
+     :param apkfile: full path to the apk to check"""
+
+-    p = SilentPopen([config['aapt'],
+-                     'dump', 'xmltree', apkfile, 'AndroidManifest.xml'])
++    p = SdkToolsPopen(['aapt', 'dump', 'xmltree', apkfile,
'AndroidManifest.xml'])
+     if p.returncode != 0:
+         logging.critical("Failed to get apk manifest information")
+         sys.exit(1)
+@@ -1628,6 +1658,14 @@ class PopenResult:
+     output = ''
+
+
++def SdkToolsPopen(commands, cwd=None, shell=False):
++    cmd = commands[0]
++    if cmd not in config:
++        config[cmd] = find_sdk_tools_cmd(commands[0])
++    return FDroidPopen([config[cmd]] + commands[1:],
++                       cwd=cwd, shell=shell, output=False)
++
++
+ def SilentPopen(commands, cwd=None, shell=False):
+     return FDroidPopen(commands, cwd=cwd, shell=shell, output=False)
+
+--- a/fdroidserver/init.py
++++ b/fdroidserver/init.py
+@@ -160,28 +160,31 @@ def main():
+         logging.info('Try running `fdroid init` in an empty directory.')
+         sys.exit()
+
+-    # try to find a working aapt, in all the recent possible paths
+-    build_tools = os.path.join(test_config['sdk_path'], 'build-tools')
+-    aaptdirs = []
+-    aaptdirs.append(os.path.join(build_tools, test_config['build_tools']))
+-    aaptdirs.append(build_tools)
+-    for f in os.listdir(build_tools):
+-        if os.path.isdir(os.path.join(build_tools, f)):
+-            aaptdirs.append(os.path.join(build_tools, f))
+-    for d in sorted(aaptdirs, reverse=True):
+-        if os.path.isfile(os.path.join(d, 'aapt')):
+-            aapt = os.path.join(d, 'aapt')
+-            break
+-    if os.path.isfile(aapt):
+-        dirname = os.path.basename(os.path.dirname(aapt))
+-        if dirname == 'build-tools':
+-            # this is the old layout, before versioned build-tools
+-            test_config['build_tools'] = ''
+-        else:
+-            test_config['build_tools'] = dirname
+-        write_to_config('build_tools', test_config['build_tools'])
+-    if not common.test_build_tools_exists(test_config):
+-        sys.exit(3)
++    if os.path.exists('/usr/bin/aapt'):
++        # make sure at least aapt is found, since this can't do anything
without it
++        config['aapt'] = common.find_sdk_tools_cmd('aapt')
++    else:
++        # try to find a working aapt, in all the recent possible paths
++        build_tools = os.path.join(test_config['sdk_path'], 'build-tools')
++        aaptdirs = []
++        aaptdirs.append(os.path.join(build_tools, test_config['build_tools']))
++        aaptdirs.append(build_tools)
++        for f in os.listdir(build_tools):
++            if os.path.isdir(os.path.join(build_tools, f)):
++                aaptdirs.append(os.path.join(build_tools, f))
++        for d in sorted(aaptdirs, reverse=True):
++            if os.path.isfile(os.path.join(d, 'aapt')):
++                aapt = os.path.join(d, 'aapt')
++                break
++        if os.path.isfile(aapt):
++            dirname = os.path.basename(os.path.dirname(aapt))
++            if dirname == 'build-tools':
++                # this is the old layout, before versioned build-tools
++                test_config['build_tools'] = ''
++            else:
++                test_config['build_tools'] = dirname
++            write_to_config('build_tools', test_config['build_tools'])
++        common.ensure_build_tools_exists(test_config)
+
+     # now that we have a local config.py, read configuration...
+     config = common.read_config(options)
+--- a/fdroidserver/update.py
++++ b/fdroidserver/update.py
+@@ -34,7 +34,7 @@ import logging
+
+ import common
+ import metadata
+-from common import FDroidPopen, SilentPopen
++from common import FDroidPopen, SdkToolsPopen
+ from metadata import MetaDataException
+
+
+@@ -374,7 +374,7 @@ def scan_apks(apps, apkcache, repodir, k
+             thisinfo['features'] = []
+             thisinfo['icons_src'] = {}
+             thisinfo['icons'] = {}
+-            p = SilentPopen([config['aapt'], 'dump', 'badging', apkfile])
++            p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile])
+             if p.returncode != 0:
+                 if options.delete_unknown:
+                     if os.path.exists(apkfile):
diff -Nru
fdroidserver-0.2.1/debian/patches/remove-redundant-test_sdk_exists-call-its-called-by-.patch
fdroidserver-0.2.1/debian/patches/remove-redundant-test_sdk_exists-call-its-called-by-.patch
---
fdroidserver-0.2.1/debian/patches/remove-redundant-test_sdk_exists-call-its-called-by-.patch
1970-01-01 01:00:00.000000000 +0100
+++
fdroidserver-0.2.1/debian/patches/remove-redundant-test_sdk_exists-call-its-called-by-.patch
2014-12-14 22:23:11.000000000 +0100
@@ -0,0 +1,27 @@
+From 0f71929e71d5b57562d6a9c2f73851139e68b0bb Mon Sep 17 00:00:00 2001
+From: Hans-Christoph Steiner <h...@eds.org>
+Date: Mon, 8 Dec 2014 22:02:17 +0100
+Forwarded: not-needed
+Origin: upstream, https://gitlab.com/fdroid/fdroidserver/merge_requests/31
+Subject: [PATCH 2/7] remove redundant test_sdk_exists() call, its called by
+ test_build_tools_exists()
+
+No need to call test_sdk_exists() before test_build_tools_exists() since
+test_build_tools_exists() calls test_sdk_exists() as the first thing it
+does.
+---
+ fdroidserver/common.py | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/fdroidserver/common.py
++++ b/fdroidserver/common.py
+@@ -122,9 +122,6 @@ def read_config(opts, config_file='confi
+         v = os.path.expanduser(v)
+         config[k] = os.path.expandvars(v)
+
+-    if not test_sdk_exists(config):
+-        sys.exit(3)
+-
+     if not test_build_tools_exists(config):
+         sys.exit(3)
+
diff -Nru
fdroidserver-0.2.1/debian/patches/run-all-SDK-tools-commands-using-SdkToolsPopen.patch
fdroidserver-0.2.1/debian/patches/run-all-SDK-tools-commands-using-SdkToolsPopen.patch
---
fdroidserver-0.2.1/debian/patches/run-all-SDK-tools-commands-using-SdkToolsPopen.patch
1970-01-01 01:00:00.000000000 +0100
+++
fdroidserver-0.2.1/debian/patches/run-all-SDK-tools-commands-using-SdkToolsPopen.patch
2014-12-14 22:23:11.000000000 +0100
@@ -0,0 +1,117 @@
+From fa1cc48d57a3b9b4a46ec814df819dd8c4fc057a Mon Sep 17 00:00:00 2001
+From: Hans-Christoph Steiner <h...@eds.org>
+Date: Tue, 9 Dec 2014 15:15:36 +0100
+Forwarded: not-needed
+Origin: upstream, https://gitlab.com/fdroid/fdroidserver/merge_requests/31
+Subject: [PATCH 6/7] run all SDK tools commands using SdkToolsPopen
+
+---
+ fdroidserver/common.py  | 32 +++-----------------------------
+ fdroidserver/install.py |  6 +++---
+ fdroidserver/publish.py |  6 +++---
+
+--- a/fdroidserver/common.py
++++ b/fdroidserver/common.py
+@@ -122,32 +122,6 @@ def read_config(opts, config_file='confi
+         v = os.path.expanduser(v)
+         config[k] = os.path.expandvars(v)
+
+-    bin_paths = {
+-        'aapt': [
+-            os.path.join(config['sdk_path'], 'build-tools',
config['build_tools'], 'aapt'),
+-            ],
+-        'zipalign': [
+-            os.path.join(config['sdk_path'], 'tools', 'zipalign'),
+-            os.path.join(config['sdk_path'], 'build-tools',
config['build_tools'], 'zipalign'),
+-            ],
+-        'android': [
+-            os.path.join(config['sdk_path'], 'tools', 'android'),
+-            ],
+-        'adb': [
+-            os.path.join(config['sdk_path'], 'platform-tools', 'adb'),
+-            ],
+-        }
+-
+-    for b, paths in bin_paths.items():
+-        config[b] = None
+-        for path in paths:
+-            if os.path.isfile(path):
+-                config[b] = path
+-                break
+-        if config[b] is None:
+-            logging.warn("Could not find %s in any of the following
paths:\n%s" % (
+-                b, '\n'.join(paths)))
+-
+     # There is no standard, so just set up the most common environment
+     # variables
+     env = os.environ
+@@ -1367,8 +1341,8 @@ def prepare_source(vcs, app, build, buil
+
+     # Generate (or update) the ant build file, build.xml...
+     if build['update'] and build['update'] != ['no'] and build['type'] == 
'ant':
+-        parms = [config['android'], 'update', 'lib-project']
+-        lparms = [config['android'], 'update', 'project']
++        parms = ['android', 'update', 'lib-project']
++        lparms = ['android', 'update', 'project']
+
+         if build['target']:
+             parms += ['-t', build['target']]
+@@ -1386,7 +1360,7 @@ def prepare_source(vcs, app, build, buil
+             else:
+                 logging.debug("Updating subproject %s" % d)
+                 cmd = lparms + ['-p', d]
+-            p = FDroidPopen(cmd, cwd=root_dir)
++            p = SdkToolsPopen(cmd, cwd=root_dir)
+             # Check to see whether an error was returned without a proper exit
+             # code (this is the case for the 'no target set or target invalid'
+             # error)
+--- a/fdroidserver/install.py
++++ b/fdroidserver/install.py
+@@ -25,14 +25,14 @@ from optparse import OptionParser, Optio
+ import logging
+
+ import common
+-from common import FDroidPopen, FDroidException
++from common import SdkToolsPopen, FDroidException
+
+ options = None
+ config = None
+
+
+ def devices():
+-    p = FDroidPopen([config['adb'], "devices"])
++    p = SdkToolsPopen(['adb', "devices"])
+     if p.returncode != 0:
+         raise FDroidException("An error occured when finding devices: %s" %
p.output)
+     lines = p.output.splitlines()
+@@ -100,7 +100,7 @@ def main():
+         logging.info("Installing %s..." % apk)
+         for dev in devs:
+             logging.info("Installing %s on %s..." % (apk, dev))
+-            p = FDroidPopen([config['adb'], "-s", dev, "install", apk])
++            p = SdkToolsPopen(['adb', "-s", dev, "install", apk])
+             fail = ""
+             for line in p.output.splitlines():
+                 if line.startswith("Failure"):
+--- a/fdroidserver/publish.py
++++ b/fdroidserver/publish.py
+@@ -28,7 +28,7 @@ import logging
+
+ import common
+ import metadata
+-from common import FDroidPopen, BuildException
++from common import FDroidPopen, SdkToolsPopen, BuildException
+
+ config = None
+ options = None
+@@ -160,8 +160,8 @@ def main():
+             raise BuildException("Failed to sign application")
+
+         # Zipalign it...
+-        p = FDroidPopen([config['zipalign'], '-v', '4', apkfile,
+-                         os.path.join(output_dir, apkfilename)])
++        p = SdkToolsPopen(['zipalign', '-v', '4', apkfile,
++                           os.path.join(output_dir, apkfilename)])
+         if p.returncode != 0:
+             raise BuildException("Failed to align application")
+         os.remove(apkfile)
diff -Nru fdroidserver-0.2.1/debian/patches/series
fdroidserver-0.2.1/debian/patches/series
--- fdroidserver-0.2.1/debian/patches/series    2014-10-10 04:24:29.000000000 
+0200
+++ fdroidserver-0.2.1/debian/patches/series    2014-12-14 22:06:17.000000000 
+0100
@@ -2,3 +2,8 @@
 hard-code-path-to-openjdk-7.patch
 fix-local-sync-perms.patch
 do-not-include-timestamps-in-.gz-files-of-docs.patch
+remove-redundant-test_sdk_exists-call-its-called-by-.patch
+switched-last-aapt-call-to-use-central-config-aapt.patch
+find-cmds-from-SDK-build-tools-in-a-more-flexible-wa.patch
+run-all-SDK-tools-commands-using-SdkToolsPopen.patch
+do-not-set-sdk_path-in-config.py-if-using-system-pro.patch
diff -Nru
fdroidserver-0.2.1/debian/patches/switched-last-aapt-call-to-use-central-config-aapt.patch
fdroidserver-0.2.1/debian/patches/switched-last-aapt-call-to-use-central-config-aapt.patch
---
fdroidserver-0.2.1/debian/patches/switched-last-aapt-call-to-use-central-config-aapt.patch
1970-01-01 01:00:00.000000000 +0100
+++
fdroidserver-0.2.1/debian/patches/switched-last-aapt-call-to-use-central-config-aapt.patch
2014-12-14 22:23:11.000000000 +0100
@@ -0,0 +1,23 @@
+From f7c9eccc1f44f149692d0c6aaa3eecb29661e197 Mon Sep 17 00:00:00 2001
+From: Hans-Christoph Steiner <h...@eds.org>
+Date: Mon, 8 Dec 2014 22:53:25 +0100
+Forwarded: not-needed
+Origin: upstream, https://gitlab.com/fdroid/fdroidserver/merge_requests/31
+Subject: [PATCH 3/7] switched last aapt call to use central config['aapt']
+
+---
+ fdroidserver/common.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/fdroidserver/common.py
++++ b/fdroidserver/common.py
+@@ -1588,8 +1588,7 @@ def isApkDebuggable(apkfile, config):
+
+     :param apkfile: full path to the apk to check"""
+
+-    p = SilentPopen([os.path.join(config['sdk_path'], 'build-tools',
+-                                  config['build_tools'], 'aapt'),
++    p = SilentPopen([config['aapt'],
+                      'dump', 'xmltree', apkfile, 'AndroidManifest.xml'])
+     if p.returncode != 0:
+         logging.critical("Failed to get apk manifest information")


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to