From ca7cea37f81a591e24617c1436acd7da8c216250 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Thu, 9 Jan 2014 18:30:35 +0100 Subject: [PATCH] Add our gradle wrapper script --- .../cookbooks/gradle/recipes/default.rb | 99 ++++++++++++++++++- makebuildserver | 1 + 2 files changed, 95 insertions(+), 5 deletions(-) diff --git a/buildserver/cookbooks/gradle/recipes/default.rb b/buildserver/cookbooks/gradle/recipes/default.rb index 2a64e21a..89f5144c 100644 --- a/buildserver/cookbooks/gradle/recipes/default.rb +++ b/buildserver/cookbooks/gradle/recipes/default.rb @@ -1,11 +1,18 @@ user = node[:settings][:user] -script "add-gradle-dir" do +script "add-gradle-bindir" do cwd "/tmp" interpreter "bash" - code "mkdir -p /opt/gradle" - not_if "test -d /opt/gradle" + code "mkdir -p /opt/gradle/bin" + not_if "test -d /opt/gradle/bin" +end + +script "add-gradle-verdir" do + cwd "/tmp" + interpreter "bash" + code "mkdir -p /opt/gradle/versions" + not_if "test -d /opt/gradle/versions" end %w{1.4 1.6 1.7 1.8 1.9}.each do |ver| @@ -14,9 +21,91 @@ end interpreter "bash" code " unzip /vagrant/cache/gradle-#{ver}-bin.zip - mv gradle-#{ver} /opt/gradle/#{ver} + mv gradle-#{ver} /opt/gradle/versions/#{ver} " - not_if "test -d /opt/gradle/#{ver}" + not_if "test -d /opt/gradle/versions/#{ver}" end end +script "add-gradle-wrapper" do + cwd "/tmp" + interpreter "bash" + code %{cat << EOF > /opt/gradle/bin/gradle +#!/bin/bash + +bindir=$(dirname $0) +basedir=$(dirname $bindir) +verdir="${basedir}/versions" +args=("$@") +pushd "${verdir}" &>/dev/null + +v_all=(*/) +v_all=(${v_all[@]%/}) + +v_def=${v_all[-1]} +echo "Available gradle versions: ${v_all[@]}" + +popd &>/dev/null + +run_gradle() { + ${verdir}/${v_found}/bin/gradle "${args[@]}" + exit $? +} + +# key-value pairs of what gradle version each gradle plugin version +# should accept +d_plugin_k=(0.7 0.6 0.5 0.4 0.3 0.2) +d_plugin_v=(1.9 1.8 1.6 1.6 1.4 1.4) + +# Latest takes priority +files=(build.gradle) + +for f in ${files[@]}; do + [[ -f $f ]] || continue + while read l; do + if [[ "$l" == *'com.android.tools.build:gradle:'* ]]; then + plugin_pver=$(echo -n "$l" | sed "s/.*com.android.tools.build:gradle:\\([0-9\\.\\+]\\+\\).*/\\1/") + elif [[ "$l" == *'gradleVersion'* ]]; then + wrapper_ver=$(echo -n "$l" | sed "s/.*gradleVersion[ ]*=[ ]*[\"']\\([0-9\\.]\\+\\)[\"'].*/\\1/") + fi + done < $f +done + +if [[ -n $wrapper_ver ]]; then + v_found=$wrapper_ver + echo "Found $v_found via gradleVersion" + run_gradle +fi + +if [[ -n $plugin_pver ]]; then + i=0 + match=false + for k in ${d_plugin_k[@]}; do + if [[ $plugin_pver == ${k}* ]]; then + plugin_ver=${d_plugin_v[$i]} + match=true + break + fi + let i++ + done + if $match; then + v_found=$plugin_ver + echo "Found $v_found via gradle plugin version ${k}*" + fi +fi + +[[ -n $v_found ]] && run_gradle + +echo "No suitable gradle version found - defaulting to $v_def" +v_found=$v_def +run_gradle + +EOF + } +end + +execute "add-android-ndk-path" do + user user + command "echo \"export PATH=\\$PATH:/opt/gradle/bin #PATH-GRADLE\" >> /home/#{user}/.bsenv" + not_if "grep PATH-GRADLE /home/#{user}/.bsenv" +end diff --git a/makebuildserver b/makebuildserver index adaacc4f..55c5aa1f 100755 --- a/makebuildserver +++ b/makebuildserver @@ -147,6 +147,7 @@ vagrantfile += """ chef.add_recipe "fdroidbuild-general" chef.add_recipe "android-sdk" chef.add_recipe "android-ndk" + chef.add_recipe "gradle" chef.add_recipe "kivy" end end -- 2.30.2