add support for gradle kotlin scripts

https://guides.gradle.org/migrating-build-logic-from-groovy-to-kotlin/
Closes fdroid/fdroidserver#613

cherry-picked from Bubu/fdroidserver@7d2e9f9c
This commit is contained in:
Marcus Hoffmann 2019-12-23 02:02:28 +01:00 committed by Hans-Christoph Steiner
parent 3de2d0f56f
commit 9ae41cc1ff
5 changed files with 21 additions and 9 deletions

View File

@ -468,7 +468,7 @@ def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, ext
if f in files:
os.remove(os.path.join(root, f))
if any(f in files for f in ['build.gradle', 'settings.gradle']):
if any(f in files for f in ['build.gradle', 'build.gradle.kts', 'settings.gradle', 'settings.gradle.kts']):
# Even when running clean, gradle stores task/artifact caches in
# .gradle/ as binary files. To avoid overcomplicating the scanner,
# manually delete them, just like `gradle clean` should have removed

View File

@ -334,7 +334,7 @@ def try_init_submodules(app, last_build, vcs):
def dirs_with_manifest(startdir):
for root, dirs, files in os.walk(startdir):
if any(m in files for m in [
'AndroidManifest.xml', 'pom.xml', 'build.gradle']):
'AndroidManifest.xml', 'pom.xml', 'build.gradle', 'build.gradle.kts']):
yield root

View File

@ -1301,7 +1301,8 @@ def manifest_paths(app_dir, flavours):
[os.path.join(app_dir, 'AndroidManifest.xml'),
os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml'),
os.path.join(app_dir, 'src', 'AndroidManifest.xml'),
os.path.join(app_dir, 'build.gradle')]
os.path.join(app_dir, 'build.gradle'),
os.path.join(app_dir, 'build.gradle.kts')]
for flavour in flavours:
if flavour == 'yes':
@ -1788,9 +1789,15 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
if build.target:
n = build.target.split('-')[1]
build_gradle = os.path.join(root_dir, "build.gradle")
build_gradle_kts = build_gradle + ".kts"
if os.path.exists(build_gradle):
gradlefile = build_gradle
elif os.path.exist(build_gradle_kts):
gradlefile = build_gradle_kts
regsub_file(r'compileSdkVersion[ =]+[0-9]+',
r'compileSdkVersion %s' % n,
os.path.join(root_dir, 'build.gradle'))
gradlefile)
# Remove forced debuggable flags
remove_debuggable_flags(root_dir)
@ -2381,9 +2388,13 @@ gradle_line_matches = [
def remove_signing_keys(build_dir):
for root, dirs, files in os.walk(build_dir):
gradlefile = None
if 'build.gradle' in files:
path = os.path.join(root, 'build.gradle')
gradlefile = "build.gradle"
elif 'build.gradle.kts' in files:
gradlefile = "build.gradle.kts"
if gradlefile:
path = os.path.join(root, gradlefile)
with open(path, "r") as o:
lines = o.readlines()
@ -2421,7 +2432,7 @@ def remove_signing_keys(build_dir):
o.write(line)
if changed:
logging.info("Cleaned build.gradle of keysigning configs at %s" % path)
logging.info("Cleaned %s of keysigning configs at %s" % (gradlefile, path))
for propfile in [
'project.properties',

View File

@ -299,7 +299,8 @@ def main():
app.Categories = options.categories.split(',')
if os.path.exists(os.path.join(subdir, 'jni')):
build.buildjni = ['yes']
if os.path.exists(os.path.join(subdir, 'build.gradle')):
if os.path.exists(os.path.join(subdir, 'build.gradle')) \
or os.path.exists(os.path.join(subdir, 'build.gradle')):
build.gradle = ['yes']
package_json = os.path.join(build_dir, 'package.json') # react-native

View File

@ -174,7 +174,7 @@ if [[ -n $wrapper_ver ]]; then
fi
# Earliest takes priority
for f in {.,..}/build.gradle; do
for f in {.,..}/build.gradle{,.kts}; do
[[ -f $f ]] || continue
while IFS='' read -r line || [ -n "$line" ]; do
if [[ -z "$plugin_pver" && $line == *'com.android.tools.build:gradle:'* ]]; then