chiark / gitweb /
Make matching of build types easier
authorDaniel Martí <mvdan@mvdan.cc>
Fri, 10 Jan 2014 19:39:39 +0000 (20:39 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 10 Jan 2014 19:43:38 +0000 (20:43 +0100)
fdroidserver/build.py
fdroidserver/common.py
fdroidserver/metadata.py

index 515b553f43563408fc986c9a1d6bc94a054a0e3e..370223b3a4647ac45dac0aa83b8bfd4f7d865b3f 100644 (file)
@@ -400,7 +400,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
     # We need to clean via the build tool in case the binary dirs are
     # different from the default ones
     p = None
-    if thisbuild.get('maven', 'no') != 'no':
+    if thisbuild['type'] == 'maven':
         print "Cleaning Maven project..."
         cmd = [config['mvn3'], 'clean', '-Dandroid.sdk.path=' + config['sdk_path']]
 
@@ -411,7 +411,8 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
             maven_dir = root_dir
 
         p = FDroidPopen(cmd, cwd=maven_dir)
-    elif thisbuild.get('gradle', 'no') != 'no':
+
+    elif thisbuild['type'] == 'gradle':
         print "Cleaning Gradle project..."
         cmd = [config['gradle'], 'clean']
 
@@ -422,10 +423,13 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
             gradle_dir = root_dir
 
         p = FDroidPopen(cmd, cwd=gradle_dir)
-    elif thisbuild.get('update', '.') != 'no' and thisbuild.get('kivy', 'no') == 'no':
+
+    elif thisbuild['type'] == 'kivy':
+        pass
+
+    elif thisbuild['type'] == 'ant':
         print "Cleaning Ant project..."
-        cmd = ['ant', 'clean']
-        p = FDroidPopen(cmd, cwd=root_dir)
+        p = FDroidPopen(['ant', 'clean'], cwd=root_dir)
 
     if p is not None and p.returncode != 0:
         raise BuildException("Error cleaning %s:%s" %
@@ -499,7 +503,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
 
     p = None
     # Build the release...
-    if thisbuild.get('maven', 'no') != 'no':
+    if thisbuild['type'] == 'maven':
         print "Building Maven project..."
 
         if '@' in thisbuild['maven']:
@@ -526,7 +530,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
 
         bindir = os.path.join(root_dir, 'target')
 
-    elif thisbuild.get('kivy', 'no') != 'no':
+    elif thisbuild['type'] == 'kivy':
         print "Building Kivy project..."
 
         spec = os.path.join(root_dir, 'buildozer.spec')
@@ -586,7 +590,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
         cmd.append('release')
         p = FDroidPopen(cmd, cwd=distdir)
 
-    elif thisbuild.get('gradle', 'no') != 'no':
+    elif thisbuild['type'] == 'gradle':
         print "Building Gradle project..."
         if '@' in thisbuild['gradle']:
             flavour = thisbuild['gradle'].split('@')[0]
@@ -642,7 +646,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
     if 'bindir' in thisbuild:
         bindir = os.path.join(build_dir, thisbuild['bindir'])
 
-    if thisbuild.get('maven', 'no') != 'no':
+    if thisbuild['type'] == 'maven':
         stdout_apk = '\n'.join([
             line for line in p.stdout.splitlines() if any(a in line for a in ('.apk','.ap_'))])
         m = re.match(r".*^\[INFO\] .*apkbuilder.*/([^/]*)\.apk",
@@ -657,10 +661,10 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
             raise BuildException('Failed to find output')
         src = m.group(1)
         src = os.path.join(bindir, src) + '.apk'
-    elif thisbuild.get('kivy', 'no') != 'no':
+    elif thisbuild['type'] == 'kivy':
         src = 'python-for-android/dist/default/bin/{0}-{1}-release.apk'.format(
                 bconfig.get('app', 'title'), bconfig.get('app', 'version'))
-    elif thisbuild.get('gradle', 'no') != 'no':
+    elif thisbuild['type'] == 'gradle':
         dd = build_dir
         if 'subdir' in thisbuild:
             dd = os.path.join(dd, thisbuild['subdir'])
index be9bf6dcf2dc65aca19d594238902b0705f303fa..e28c4669e2e6a4b7fae25ae3a515b7ee2d14fff1 100644 (file)
@@ -918,10 +918,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
 
     # Generate (or update) the ant build file, build.xml...
     updatemode = build.get('update', 'auto')
-    if (updatemode != 'no'
-            and build.get('maven', 'no') == 'no'
-            and build.get('kivy', 'no') == 'no'
-            and build.get('gradle', 'no') == 'no'):
+    if (updatemode != 'no' and build['type'] == 'ant'):
         parms = [os.path.join(config['sdk_path'], 'tools', 'android'),
                 'update', 'project']
         if 'target' in build and build['target']:
@@ -992,7 +989,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
         f.close()
 
     flavour = None
-    if build.get('gradle', 'no') != 'no':
+    if build['type'] == 'gradle':
         flavour = build['gradle'].split('@')[0]
         if flavour in ['main', 'yes', '']:
             flavour = None
@@ -1406,7 +1403,7 @@ def FDroidPopen(commands, cwd=None):
     """
     Runs a command the FDroid way and returns return code and output
 
-    :param commands, cwd: like subprocess.Popen
+    :param commands and cwd like in subprocess.Popen
     """
 
     if options.verbose:
index fe6dc4c1ffc3a84bd52ab5733f63eb5f5bbea3e1..aee6d09f3150db476fde9675b351cd4a1b55fe64 100644 (file)
@@ -466,6 +466,11 @@ def parse_metadata(metafile):
             thisinfo['comments'].append((key, comment))
         del curcomments[:]
 
+    def get_build_type(build):
+        for t in ['maven', 'gradle', 'kivy']:
+            if build.get(t, 'no') != 'no':
+                return t
+        return 'ant'
 
     thisinfo = {}
     if metafile:
@@ -620,6 +625,9 @@ def parse_metadata(metafile):
     if not thisinfo['Description']:
         thisinfo['Description'].append('No description available')
 
+    for build in thisinfo['builds']:
+        build['type'] = get_build_type(build)
+
     return thisinfo
 
 # Write a metadata file.