set -e
-if [ -z $ANDROID_NDK_HOME ]; then
- echo "ANDROID_NDK_HOME env var must be set!"
- exit 1
-fi
+NDK_BASE=$1
-test -e $ANDROID_NDK_HOME || mkdir -p $ANDROID_NDK_HOME
-cd $ANDROID_NDK_HOME
+test -e $NDK_BASE || mkdir -p $NDK_BASE
+cd $NDK_BASE
-if [ ! -e $ANDROID_NDK_HOME/r9b ]; then
+if [ ! -e $NDK_BASE/r9b ]; then
if [ `uname -m` == 'x86_64' ] ; then
SUFFIX='_64'
else
SUFFIX=''
fi
- tar jxvf /vagrant/cache/android-ndk-r9b-linux-x86$SUFFIX.tar.bz2
- tar jxvf /vagrant/cache/android-ndk-r9b-linux-x86$SUFFIX-legacy-toolchains.tar.bz2
+ tar xjf /vagrant/cache/android-ndk-r9b-linux-x86$SUFFIX.tar.bz2
+ tar xjf /vagrant/cache/android-ndk-r9b-linux-x86$SUFFIX-legacy-toolchains.tar.bz2
mv android-ndk-r9b r9b
fi
-if [ ! -e $ANDROID_NDK_HOME/r10e ]; then
+if [ ! -e $NDK_BASE/r10e ]; then
if [ `uname -m` == 'x86_64' ] ; then
SUFFIX='_64'
else
mv android-ndk-r10e r10e
fi
-chmod -R a+rX $ANDROID_NDK_HOME/
-find $ANDROID_NDK_HOME/ -type f -executable -print0 | xargs -0 chmod a+x
+chmod -R a+rX $NDK_BASE/
+find $NDK_BASE/ -type f -executable -print0 | xargs -0 chmod a+x
done
${ANDROID_HOME}/tools/android --silent update sdk --no-ui --all \
- --filter platform-tools,extra-android-m2repository${cached} <<EOH
+ --filter platform-tools,extra-android-m2repository${cached} > /dev/null <<EOH
y
EOH
echo "# generated on "`date` > $bsenv
echo export ANDROID_HOME=$1 >> $bsenv
-echo export ANDROID_NDK_HOME=$2 >> $bsenv
echo 'export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/gradle/bin' >> $bsenv
chmod 0644 $bsenv
# Build tools version to be used
# build_tools = "23.0.3"
+# Force all build to use the above version of build -tools, good for testing
+# builds without having all of the possible build-tools installed.
+# force_build_tools = True
+
# Command or path to binary for running Ant
# ant = "ant"
# --server option on dedicated secure build server hosts.
# build_server_always = True
-# By default, fdroid will use YAML and the custom .txt metadata formats. It
+# By default, fdroid will use YAML .yml and the custom .txt metadata formats. It
# is also possible to have metadata in JSON and XML by adding 'json' and
# 'xml'.
-# accepted_formats = ['txt', 'yaml']
+# accepted_formats = ['txt', 'yml']
# Limit in number of characters that fields can take up
# Only the fields listed here are supported, defaults shown
release_vm()
-def adapt_gradle(build_dir):
- filename = 'build.gradle'
+def force_gradle_build_tools(build_dir, build_tools):
for root, dirs, files in os.walk(build_dir):
for filename in files:
if not filename.endswith('.gradle'):
path = os.path.join(root, filename)
if not os.path.isfile(path):
continue
- logging.debug("Adapting %s at %s" % (filename, path))
+ logging.debug("Forcing build-tools %s in %s" % (build_tools, path))
common.regsub_file(r"""(\s*)buildToolsVersion([\s=]+).*""",
- r"""\1buildToolsVersion\2'%s'""" % config['build_tools'],
+ r"""\1buildToolsVersion\2'%s'""" % build_tools,
path)
gradletasks += ['assemble' + flavours_cmd + 'Release']
- adapt_gradle(build_dir)
- for name, number, libpath in srclibpaths:
- adapt_gradle(libpath)
+ if config['force_build_tools']:
+ force_gradle_build_tools(build_dir, config['build_tools'])
+ for name, number, libpath in srclibpaths:
+ force_gradle_build_tools(libpath, config['build_tools'])
cmd = [config['gradle']]
if build.gradleprops:
'r10e': "$ANDROID_NDK",
},
'build_tools': "23.0.3",
+ 'force_build_tools': False,
'java_paths': None,
'ant': "ant",
'mvn3': "mvn",
+ glob.glob('.fdroid.json')
+ glob.glob('.fdroid.xml')
+ glob.glob('.fdroid.yml')):
+ packageName, _ = fdroidserver.common.get_extension(os.path.basename(metadatapath))
+ if packageName in apps:
+ raise MetaDataException("Found multiple metadata files for " + packageName)
app = parse_metadata(metadatapath)
- if app.id in apps:
- raise MetaDataException("Found multiple metadata files for " + app.id)
check_metadata(app)
apps[app.id] = app
echo "debian_mirror = 'http://ftp.uk.debian.org/debian/'" > $WORKSPACE/makebuildserver.config.py
echo "boot_timeout = 1200" >> $WORKSPACE/makebuildserver.config.py
echo "apt_package_cache = True" >> $WORKSPACE/makebuildserver.config.py
-./makebuildserver
+./makebuildserver --verbose
# this can be handled in the jenkins job, or here:
if [ -e fdroiddata ]; then
vagrantfile += """
- config.vm.provision "shell" do |shell|
- shell.path = "setup-env-vars"
- shell.args = ["/home/vagrant/android-sdk", "/home/vagrant/android-ndk"]
- end
+ config.vm.provision "shell", path: "setup-env-vars",
+ args: ["/home/vagrant/android-sdk"]
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
end
config.vm.provision "shell", path: "provision-android-sdk"
- config.vm.provision "shell", path: "provision-android-ndk"
+ config.vm.provision "shell", path: "provision-android-ndk",
+ args: ["/home/vagrant/android-ndk"]
config.vm.provision "shell", path: "provision-gradle"
config.vm.provision "file", source: "gradle",
destination: "/opt/gradle/bin/gradle"
self.assertTrue(os.path.exists(path))
self.assertTrue(os.path.isfile(path))
- def test_adapt_gradle(self):
+ def test_force_gradle_build_tools(self):
testsbase = os.path.join(os.path.dirname(__file__), '..', '.testfiles')
if not os.path.exists(testsbase):
os.makedirs(testsbase)
shutil.copytree(os.path.join(os.path.dirname(__file__), 'source-files'),
os.path.join(testsdir, 'source-files'))
teststring = 'FAKE_VERSION_FOR_TESTING'
- fdroidserver.build.config = {}
- fdroidserver.build.config['build_tools'] = teststring
- fdroidserver.build.adapt_gradle(testsdir)
+ fdroidserver.build.force_gradle_build_tools(testsdir, teststring)
pattern = re.compile(bytes("buildToolsVersion[\s=]+'%s'\s+" % teststring, 'utf8'))
for p in ('source-files/fdroid/fdroidclient/build.gradle',
'source-files/Zillode/syncthing-silk/build.gradle',
filedata = f.read()
self.assertIsNotNone(pattern.search(filedata))
+
if __name__ == "__main__":
parser = optparse.OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,