From 1e7bfc9864b592529f6f950bd12abece1eb0c53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 9 Aug 2013 17:15:27 +0200 Subject: [PATCH] Don't run gradle during checkudpates. Use whatever can be found. --- fdroidserver/checkupdates.py | 10 ++++------ fdroidserver/common.py | 32 ++++++++++++++++---------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index f74b99c3..e1cfaa71 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -74,9 +74,8 @@ def check_tags(app, sdk_path): vcs.gotorevision(tag) # Only process tags where the manifest exists... - path = common.manifest_path(build_dir, flavour, gradle, - build_tools, gradle_plugin) - if path is not None and os.path.exists(path): + path = common.manifest_path(build_dir, flavour) + if path is not None: version, vercode, package = common.parse_androidmanifest(path) print "Manifest exists. Found version %s" % version if package and package == app['id'] and version and vercode: @@ -150,10 +149,9 @@ def check_repomanifest(app, sdk_path, branch=None): if not os.path.isdir(build_dir): return (None, "Subdir '" + app['builds'][-1]['subdir'] + "'is not a valid directory") - path = common.manifest_path(build_dir, flavour, gradle, build_tools, - gradle_plugin) + path = common.manifest_path(build_dir, flavour) if path is None: - return (None, "Gradle flavour not found") + return (None, "No manifest could be found") version, vercode, package = common.parse_androidmanifest(path) if not package: diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 6b06871c..ebaf6d77 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -875,26 +875,26 @@ def retrieve_string(app_dir, string_id): return s.replace("\\'","'") return '' -# Find the AM.xml - try the new gradle method first. -def manifest_path(app_dir, flavour, gradle, build_tools, gradle_plugin): +# Find the AM.xml - try to use new gradle manifest paths +# TODO: Gradle can use multiple manifests. Return a list of the existing ones +# and later iterate through them to find the highest vercode. +def manifest_path(app_dir, flavour): - if flavour is None: - return os.path.join(app_dir, 'AndroidManifest.xml') + root_manifest = os.path.join(app_dir, 'AndroidManifest.xml') + if flavour is not None: + flavour_manifest = os.path.join(app_dir, 'src', flavour, 'AndroidManifest.xml') + if os.path.isfile(flavour_manifest): + return flavour_manifest - if not os.path.exists(os.path.join(app_dir, 'src', flavour)): - return None + main_manifest = os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml') + print main_manifest + if os.path.isfile(main_manifest): + return main_manifest - for line in fileinput.input(os.path.join(app_dir, 'build.gradle'), inplace=True): - if 'buildToolsVersion' in line: - print 'buildToolsVersion "%s"' % build_tools, - elif 'com.android.tools.build:gradle:' in line: - print "classpath 'com.android.tools.build:gradle:%s'" % gradle_plugin, - else: - print line, + if os.path.isfile(root_manifest): + return root_manifest - subprocess.Popen([gradle, 'process'+flavour+'ReleaseManifest'], cwd=app_dir).communicate() - - return os.path.join(app_dir, 'build', 'manifests', flavour, 'release', 'AndroidManifest.xml') + return None # Retrieve the package name