Last modified: 2012-12-02 17:42:21 UTC
To build the Wikipedia and Wiktionary nightly builds, I have manually installed the Android SDK on gallium. We need to properly puppetize it, specially when it comes to listing the SDK we we want to have installed. Android SDK rely on a graphical interface to install package which we can not use with puppet. You have to pass the -u switch to disable guy. Some SDK are obsolete though we still want to use them. Use the -o, for obsolete, flag to list / update them. From my private install notes: # To list available packages including their shortnames and obsolete ones: android list sdk --extended -o Names in the --filter below comes from the above 'list sdk --extended' command. # Bootstrap: android update sdk -u --filter platform-tools # Install SDK 10: android update sdk -u --filter android-10, platform-tools,addon-google_apis-google_inc_-10 # Install SDK 8: android update sdk -u --filter android-8 To install an obsolete SDK (such as android-7 as of this writing): update sdk -u -o --filter android-7 So we should be able to write a nice puppet function to install the android tool + the basic platform tools. Then another dependent puppet function can be used to install a given API or even make sure we always have the latest one. When building an android project with ant, we have to add the SDK directory to a local.properties file such as: sdk.dir=/home/androidsdk/android/android-sdk-linux
And for later reference, we probably want to use sun java: JAVA_HOME=/usr/lib/jvm/java-6-sun/ ant debug
Need to find out a way to deploy the Android SDK on production. By discussing about it with operations we do not want to download directly from the third party nor want to provide the files via Puppet. Marking as blocking gallium upgrade since we need Android SDK on that server. Tagging for ops since we need their input.
Puppet approach : https://gerrit.wikimedia.org/r/#/c/28216/ Shell one : https://gist.github.com/3900138 I have sent a mail to ops to get more input and a clear path.
This really need to be fixed by installing a Debian package. There is none yet although some Debian folks are considering building one. For now, we are using a local install which is good enough for our CI needs.