chiark / gitweb /
Don't run gradle during checkudpates. Use whatever can be found.
authorDaniel Martí <mvdan@mvdan.cc>
Fri, 9 Aug 2013 15:15:27 +0000 (17:15 +0200)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 9 Aug 2013 15:15:27 +0000 (17:15 +0200)
fdroidserver/checkupdates.py
fdroidserver/common.py

index f74b99c3c8dd6fd16f81bd1706049c36e0fc8172..e1cfaa710c8fad437ec5b20013fbd4352059f77d 100644 (file)
@@ -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:
index 6b06871ccb06d090822c06d4ea76aaa18a217679..ebaf6d7760220084b9074e9d6fe7cf6df872c844 100644 (file)
@@ -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):
-
-    if flavour is None:
-        return os.path.join(app_dir, 'AndroidManifest.xml')
-
-    if not os.path.exists(os.path.join(app_dir, 'src', flavour)):
-        return None
-
-    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,
-
-    subprocess.Popen([gradle, 'process'+flavour+'ReleaseManifest'], cwd=app_dir).communicate()
-
-    return os.path.join(app_dir, 'build', 'manifests', flavour, 'release', 'AndroidManifest.xml')
+# 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):
+
+    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
+
+        main_manifest = os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml')
+        print main_manifest
+        if os.path.isfile(main_manifest):
+            return main_manifest
+
+    if os.path.isfile(root_manifest):
+        return root_manifest
+
+    return None
 
 
 # Retrieve the package name