From: Daniel Martí Date: Fri, 2 Jan 2015 21:26:22 +0000 (+0100) Subject: Don't run a global "gradle clean" which configures all projects X-Git-Tag: 0.4.0~179 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=43092407a300c008758278a8e80982c7ae5f921a;p=fdroidserver.git Don't run a global "gradle clean" which configures all projects Also properly capitalize words for gradle tasks --- diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 677e4c88..0a503e4b 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -438,6 +438,16 @@ def adapt_gradle(build_dir): + config['build_tools'] + '"@g', path]) +def capitalize_intact(string): + """Like str.capitalize(), but leave the rest of the string intact without + switching it to lowercase.""" + if len(string) == 0: + return string + if len(string) == 1: + return string.upper() + return string[0].upper() + string[1:] + + def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver): """Do a build locally.""" @@ -457,6 +467,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 + gradletasks = [] if thisbuild['type'] == 'maven': logging.info("Cleaning Maven project...") cmd = [config['mvn3'], 'clean', '-Dandroid.sdk.path=' + config['sdk_path']] @@ -472,12 +483,27 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d elif thisbuild['type'] == 'gradle': logging.info("Cleaning Gradle project...") - cmd = [config['gradle'], 'clean'] + + if thisbuild['preassemble']: + gradletasks += thisbuild['preassemble'] + + flavours = thisbuild['gradle'] + if flavours == ['yes']: + flavours = [] + + flavours_cmd = ''.join(flavours) + if flavours_cmd: + flavours_cmd = capitalize_intact(flavours_cmd) + + gradletasks += ['assemble' + flavours_cmd + 'Release'] adapt_gradle(build_dir) for name, number, libpath in srclibpaths: adapt_gradle(libpath) + cmd = [config['gradle']] + cmd += ['clean' + capitalize_intact(task) for task in gradletasks] + p = FDroidPopen(cmd, cwd=root_dir) elif thisbuild['type'] == 'kivy': @@ -661,25 +687,14 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d elif thisbuild['type'] == 'gradle': logging.info("Building Gradle project...") - flavours = thisbuild['gradle'] - if flavours == ['yes']: - flavours = [] - - commands = [config['gradle']] - if thisbuild['preassemble']: - commands += thisbuild['preassemble'] - - flavours_cmd = ''.join(flavours) - if flavours_cmd: - flavours_cmd = flavours_cmd[0].upper() + flavours_cmd[1:] - - commands += ['assemble' + flavours_cmd + 'Release'] # Avoid having to use lintOptions.abortOnError false if thisbuild['gradlepluginver'] >= LooseVersion('0.7'): with open(os.path.join(root_dir, 'build.gradle'), "a") as f: f.write("\nandroid { lintOptions { checkReleaseBuilds false } }\n") + commands = [config['gradle']] + gradletasks + p = FDroidPopen(commands, cwd=root_dir) elif thisbuild['type'] == 'ant':