chiark / gitweb /
buildserver: unpack gradle versions with provisioning shell script
authorHans-Christoph Steiner <hans@eds.org>
Wed, 15 Jun 2016 13:25:57 +0000 (15:25 +0200)
committerHans-Christoph Steiner <hans@eds.org>
Wed, 15 Jun 2016 14:35:00 +0000 (16:35 +0200)
This was not using anything special from chef, so do it in a shell script
instead.  This makes the script easier for the python/shell people, and
probably uses less memory, since chef is a memory hog.  This might even
make the provision go faster since it uploads the whole script as a file to
the VM, then runs it there.  I think chef sends each command via SSH.

buildserver/cookbooks/gradle/recipes/default.rb [deleted file]
buildserver/gradle [moved from buildserver/cookbooks/gradle/recipes/gradle with 100% similarity]
buildserver/provision-gradle [new file with mode: 0644]
makebuildserver

diff --git a/buildserver/cookbooks/gradle/recipes/default.rb b/buildserver/cookbooks/gradle/recipes/default.rb
deleted file mode 100644 (file)
index 2c2a495..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-
-user = node[:settings][:user]
-
-gradle_script = IO.read(File.join(
-       File.expand_path(File.dirname(__FILE__)), "gradle"))
-
-script "add-gradle-bindir" do
-  cwd "/tmp"
-  interpreter "bash"
-  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 1.10 1.11 1.12 2.1 2.2.1 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13}.each do |ver|
-  script "install-gradle-#{ver}" do
-    cwd "/tmp"
-    interpreter "bash"
-    code "
-      unzip /vagrant/cache/gradle-#{ver}-bin.zip
-      mv gradle-#{ver} /opt/gradle/versions/#{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
-#{gradle_script}
-EOF
-    chmod a+x /opt/gradle/bin/gradle
-  "
-end
diff --git a/buildserver/provision-gradle b/buildserver/provision-gradle
new file mode 100644 (file)
index 0000000..124b99a
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+set -e
+
+test -e /opt/gradle/versions || mkdir -p /opt/gradle/versions
+cd /opt/gradle/versions
+for f in /vagrant/cache/gradle-*.zip; do
+    ver=`echo $f | sed 's,.*gradle-\([0-9][0-9.]*\).*\.zip,\1,'`
+    if [ ! -d /opt/gradle/versions/${ver} ]; then
+        unzip -qq $f
+        mv gradle-${ver} /opt/gradle/versions/${ver}
+    fi
+done
+
+chmod -R a+rX /opt/gradle
+
+test -e /opt/gradle/bin || mkdir -p /opt/gradle/bin
+touch /opt/gradle/bin/gradle
+chown vagrant.vagrant /opt/gradle/bin/gradle
+chmod 0755 /opt/gradle/bin/gradle
index bfe7f149f5dc58d47c620804a424697e9a774f33..d44e559d9b8ebd41e448b256acafc17c06dc6146 100755 (executable)
@@ -392,12 +392,14 @@ vagrantfile += """
       }
     }
     chef.add_recipe "fdroidbuild-general"
-    chef.add_recipe "gradle"
     chef.add_recipe "kivy"
   end
 
   config.vm.provision "shell", path: "provision-android-sdk"
   config.vm.provision "shell", path: "provision-android-ndk"
+  config.vm.provision "shell", path: "provision-gradle"
+  config.vm.provision "file", source: "gradle",
+    destination: "/opt/gradle/bin/gradle"
 
 end
 """ % (config['debian_mirror'],