Commit Graph

370 Commits

Author SHA1 Message Date
Michael Pöhn 70a827d59a makebuildserver use virsh instead of libvirt for forcing domain off 2017-05-23 20:04:08 +02:00
Michael Pöhn 8e5446068b makebuildserver debug logging when initial provisioning fails 2017-05-23 20:04:08 +02:00
Michael Pöhn 16b609215e overhauled makebuildserver libvirt vm cleanup 2017-05-23 20:04:08 +02:00
Michael Pöhn 440509cf8a makebuildserver debugging log details 2017-05-23 20:04:08 +02:00
Michael Pöhn 2aa5523011 makebuildserver prune gloabal vagrant status when purging broken VMs 2017-05-23 20:04:08 +02:00
Michael Pöhn 8cfd3ca770 delete .vagrant dir when cleaning up buildserver vm 2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 2993674aa8 calculate correct size for buildserver-box in makebuildserver
https://gitlab.com/fdroid/fdroidserver/issues/238#note_24000153
"Our hard-coded image size meta-data (1000) is for some interpreted as less
than the size of the box-image by my kvm setup. This makes grub/initrd
refuse to boot. So I've changed the metadata size to 9999 which resulted in
an actually booting vm. I can log in on the builder-vm via virt-manager
and virsh.
2017-05-23 20:04:08 +02:00
Michael Pöhn fad98eeb7f build: fixed kvm snapshot support; makebuildserver: setup kvm ssh credentials 2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 69e4b91d3f makebuildserver: package up KVM VM as a vagrant box
`vagrant package` does not work with KVM, so we have to hack together our
own until someone implements it (suppose we should do it). This is a hacked
up version based on:
d7d440ea8f/tools/create_box.sh

#238
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 988ac21e7f buildserver: make --clean destroy reliably
This prevents v.destroy() from running if Vagrantfile.yaml does not exist,
since that is required for vagrant to run: is the core config including the
name of the box, etc.  Otherwise, it would exit with an error.

This also does complete cleanup when using libvirt.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 299ed82a88 buildserver: consolidate boxfile export code into one block
This is just for clarity, and moving more code into the main() function.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner daade7656a buildserver: add copy_caches_from_host config option
For people using slow, expensive, and/or flaky internet, liberal use of
caching can make a huge difference.  The restricted environment of the
gpjenkins box has been a good test environment for this (Tor-only,
whitelist of allowed IPs to visit, home internet connection).
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 4cde71552f buildserver: run_via_vagrant_ssh() to run cmds via python-vagrant
This moves the last vagrant call in a subprocess.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 6464ec55b7 buildserver: move code into main() method to always stop thread
By running the whole program in a main() function, it can be wrapped in
try/finally in order to stop the background display thread.  This is also
done in ./fdroid, its standard practice for Python CLI utilities.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 675500ad88 buildserver: display verbose logging in a background tail 2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner 4b03c3d42d buildserver: replace custom code with python-vagrant
I ran into some annoying issues with UTF-8 output in the vagrant logs, and
it was hard to solve.  So I switched to using python-vagrant, which handles
it all for us.  Its been around since 2012, has a number of contributors,
and is still actively maintained, so it seems like a good bet. I also
packaged it for Debian, including a backport in jessie-backports.

On Debian/jessie, do `apt-get install python3-vagrant/jessie-backports`
2017-05-23 20:04:08 +02:00
Andrew Patrikalakis 9ee96117d8 Check for libvirt specific shutoff message 2017-04-29 18:38:44 -07:00
Boris Kraut 10e91d1be2 makebs: add gradle 3.5 2017-04-15 15:08:13 +02:00
Jan Christian Grünhage f637b461f0 Update support repository. 2017-03-29 10:33:38 +00:00
Boris Kraut 53be33055b makebs: update support repo to r46 2017-03-21 21:50:29 +01:00
Boris Kraut ed310f0404 makebs: add ndk r14 2017-03-19 22:27:51 +01:00
Hans-Christoph Steiner 1e9406778f buildserver: remove my silly mistake
Should have done this through a merge request... code review!
2017-03-14 20:14:06 +01:00
Hans-Christoph Steiner ee82c30cb8 buildserver: bump to android_m2repository r45 2017-03-14 20:04:50 +01:00
Boris Kraut e8d0a8ede8 makebs: add gradle 3.4.1 2017-03-10 14:29:36 +01:00
Boris Kraut add1ad6eb5 makebs: add gradle 3.4 2017-02-26 03:23:49 +01:00
Boris Kraut 687061f47e makebs: update support repo to r43, closes fdroid/rfp#49 2017-02-23 01:27:10 +01:00
Hans-Christoph Steiner 1d91a400a2 buildserver: update to latest tools and m2repository 2017-02-13 20:10:48 +01:00
Boris Kraut e382f09fd6 makebs: bump support repo to r43 2017-02-11 14:40:40 +01:00
Boris Kraut f32f4a68d1 makebs: upgrade support repo to r42 2017-02-04 15:01:15 +01:00
Hans-Christoph Steiner 4741f75f03 buildserver: update android_m2repository to latest (r41) 2017-01-12 10:19:38 +01:00
Boris Kraut d63a1fde19 makebs: install gradle 3.3 2017-01-08 21:13:24 +01:00
est31 d6da0a283d Makebs: add build tools 25.0.2 2016-12-17 23:36:48 +01:00
est31 d39f54f04d Add gradle 3.2.1 2016-12-02 08:16:04 +01:00
Boris Kraut 51083fdeb4 makebs: add buildtools 25.0.1 2016-12-01 08:44:47 +01:00
est31 ddefec33cd Add ndk 13b 2016-11-25 21:18:37 +01:00
Daniel Martí 8cdf1b0223 makebs: add gradle 3.2 2016-11-15 21:07:35 +00:00
Daniel Martí 483338843f makebs: update to support repo r40 2016-11-15 20:56:04 +00:00
Daniel Martí 82b1d7ad14 all: make newer pycodestyle happy
Apparently the "two empty lines" rule is now stricter.
2016-11-15 20:55:06 +00:00
Daniel Martí 98b7538789 makebs: bump m2repo, add api25 and build-tools 25 2016-10-23 16:47:19 +01:00
Ciaran Gultnieks aa4aa45703 Merge branch 'build-tools' into 'master'
makebs: add build-tools 24.0.3



See merge request !175
2016-10-05 18:09:46 +00:00
Daniel Martí b34cef8776 makebs: add build-tools 24.0.3 2016-10-03 09:10:41 +01:00
Hans-Christoph Steiner 1b09ab5a79 buildserver: run dir check as very first thing
No point in running any other code if the script is just going to bail
out with an error.  This assumes that ./makebuildserver is only ever
run from a git clone of fdroidserver.git.
2016-09-28 09:52:49 +02:00
Hans-Christoph Steiner a3d32c65a4 buildserver: use py3's pathlib to generate cache file URL
This should handle edge cases better, like odd characters in the path, etc.
2016-09-28 09:52:49 +02:00
est31 91c5fb567a Add qt sdk support 2016-09-27 14:36:12 +02:00
Hans-Christoph Steiner 1001e5e9b9 buildserver: bochs can also be used with KVM
jenkins.debian.net is being detected as 'bochs' rather than 'qemu'.
2016-09-23 17:41:41 +02:00
Hans-Christoph Steiner 1e8fd01c1e buildserver: only check cache permissions when using libvirt
VirtualBox runs as the same user as `fdroid`, so the cache does not need to
be accessible by the world.  On libvirt, libvirtd runs the VMs as its own
user, so in that case, the cache dirs must have permissions to let that
user access them.
2016-09-23 15:20:05 +02:00
Hans-Christoph Steiner f6a487eee4 buildserver: wipe snapshot from libvirt store on --clean 2016-09-23 15:06:41 +02:00
Ciaran Gultnieks 5667d16498 Merge branch 'buildserver-qemu-kvm' into 'master'
buildserver running in qemu/kvm to support KVM on KVM

jenkins.debian.net runs in QEMU/KVM instances, so in order to run the F-Droid buildserver there, it needs to work inside of a KVM guest.  The best way I found to do that is to create QEMU/KVM instances via KVM's "nested" virtualization support.  This collection of commits enables using QEMU/KVM as the buildserver when `./makebuildserver` detects that it is running inside of KVM.  Otherwise, the old behavior is default: running in VirtualBox.

I have run these tests inside of ubuntu/16.04 on bare metal, which uses VirtualBox, and ubuntu/16.04 KVM guest, which uses QEMU/KVM.  It'll also run on the Guardian Project jenkins box, which is Debian/jessie.

@mvdan @CiaranG @krt

See merge request !168
2016-09-23 12:25:12 +00:00
est31 56a0077183 makebs: add gradle 3.1 2016-09-23 07:50:52 +02:00
Hans-Christoph Steiner 68ec7c2e88 buildserver: auto-detect and use libvirt's QEMU+KVM
For running in QEMU/KVM guests like on jenkins.debian.net, this sets up the
whole process automatically.  This only really covers the case where this
is running in a KVM guest, and the original case of running VirtualBox on
bare metal.  It could be extended to cover more cases if someone wanted to.
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner f306e32636 buildserver: make sure cachedir is accessible to VM instance
It seems that KVM/QEMU's 9p sharing is more sensitive to file perms.  If
~/.cache is 0700, then ~/.cache/fdroidserver cannot be mounted in the guest
2016-09-19 16:33:12 +02:00
Daniel Martí 8797cc01a8 makebs: bump support repo to 38 2016-09-15 20:07:25 +01:00
Daniel Martí 02c006a685 makebs: bump tools to 25.2.2 2016-09-15 20:07:16 +01:00
Hans-Christoph Steiner 14de399bb7 buildserver: remove Kivy, unused since 2013 and out of date
This is the last thing using Chef, which adds a lot of time to the time it
takes to fully provision the buildserver.  This slows down development on
the things we are actually using, like running all builds on
jenkins.debian.net.

#210 #165
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner 91ceb5aff3 update to platform-24_r02 in ./makebuildserver 2016-08-30 19:48:07 +02:00
Hans-Christoph Steiner d831ccab20 add build-tools_r24.0.2-linux.zip to ./makebuildserver 2016-08-30 19:17:30 +02:00
Hans-Christoph Steiner bf1dff7986 new build-tools_r24.0.1.zip sha256, Google keeps changing it
I validated this versus the Google repository XML downloaded from two
separate paths from:
https://dl.google.com/android/repository/repository-12.xml

Using their SHA1:
84f18c392919a074fcbb9b1d967984e6b2fef8b4
2016-08-30 19:16:31 +02:00
Daniel Martí baea79f739 makebs: add gradle 3.0 2016-08-18 17:53:27 +02:00
Daniel Martí 8bcaed37a1 makebs: bump m2repository to r36 (24.2.0) 2016-08-18 17:48:01 +02:00
Daniel Martí 8d6375b1bb makebs: bump tools to r25.2.1 2016-08-18 17:47:49 +02:00
Boris Kraut 815961acc5 Add ndk r11c 2016-08-14 00:59:31 +02:00
Boris Kraut 840cafd151 Add gradle 2.14.1 2016-08-12 20:25:38 +02:00
Daniel Martí 059d216aff Re-add NDK r12b, now fixed. 2016-08-02 11:10:31 +02:00
Ciaran Gultnieks bf153ec247 Revert "all: add NDK r12b and set it as default"
This reverts commit 82d09560c6.

It doesn't work - the setup scripts are expecting a ".bin" file (which
is apparently a 7z archive), but what's actually got is a ".zip".

Conflicts:
	buildserver/provision-android-ndk
2016-08-01 12:38:52 +01:00
Daniel Martí 957f01f1d6 makebs: fix config crash
Without this, running makebuildserver from a clean master results in the
following:

	 $ ./makebuildserver
	Traceback (most recent call last):
	  File "./makebuildserver", line 74, in <module>
	    del(config['__builtins__'])  # added by compile/exec
	KeyError: '__builtins__'

This is because a clean checkout has no config, thus exec is never
actually ran.
2016-07-27 11:20:17 +02:00
Daniel Martí 11f30223d6 makebs: update android support repo 2016-07-25 12:45:56 +02:00
Daniel Martí 9a4af61a53 makebs: add build-tools-24.0.1
Fixes #196.
2016-07-25 12:40:44 +02:00
Daniel Martí 79a1f2919a makebs: "fix" platform v24 zip for r02
Google replaced the r01 zip instead of adding the r02 one. Oh well.
2016-07-25 12:40:17 +02:00
Daniel Martí 8a8c139aa9 makebs: revert platform-tools change in 2227cc6d
Amusingly, the commit changed more than just this so a simple git revert
is not possible.

The problem is that the zip is replaced with each point release (24.0.1
at the time of writing) and there is no way to get a URL to a single,
non-changing version. Hence any caching or checksums are completely
worthless and will break every few weeks.
2016-07-19 20:38:09 +02:00
Daniel Martí 82d09560c6 all: add NDK r12b and set it as default 2016-07-13 16:45:05 +01:00
Hans-Christoph Steiner 8b53ae0ad0 buildserver: delete corrupt files from the cache
In order to make CI and other automation easier, delete any corrupt files
from the cache if they fail the SHA-256 check.

https://jenkins.debian.net/view/reproducible/job/reproducible_setup_fdroid_build_environment_profitbricks3/112/console
2016-07-06 22:16:55 +02:00
Hans-Christoph Steiner d4c6fffb30 buildserver: buildserver/Vagrantfile is configed by .yaml file
Vagrantfile is now committed and not changed between configurations. It is
configed by translating the python config file's dict to a YAML file, which
Vagrantfile now loads and uses.  This makes it a lot easier for vagrant
users and python programmers to understand, and hopefully makes it easier
to maintain and test with.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner 2e1ec71404 buildserver: send config to vagrant via YAML file
Python can easily output dicts as YAML, and a Vagrantfile is a ruby script,
which can easily read YAML.  Going this route means that Vagrantfile can
ultimately be committed to git, and the configuration will happen all via
Python dicts output as YAML.  That makes it drastically easier to follow
the code, and to make modifications.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner 0171dd60fd buildserver: use pip instead of easy_install for caching
easy_install does not provide any download caching, while pip does. This
also moves the python module installing a shell script that takes python
packages as args.  That will allow for future uses like allowing app
metadata to include pip modules that they need.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner aafad6b909 buildserver: move apt setup to a shell script
This makes it so there is only a single `apt-get install` command run,
instead of one command per-package like with the chef script.  It also adds
`apt-get upgrade` to make sure that the base box is fully up-to-date.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner 2374b12a77 buildserver: move trusty/paramiko hack to its own shell script
This is part of the effort to remove moving parts from the whole build
server setup.  Why wrap shell scripts in ruby and chef if we can just
directly run a shell script?
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner 2227cc6d1a buildserver: download and cache latest platform-tools and m2repository
Also, by having our own checksums for all the bits means that we can safely
add support for local mirrors, like a bunch in China, for example:
http://mirrors.neusoft.edu.cn/android/repository/
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner 2daf00abb7 buildserver: remove last vestige of 32-bit buildserver 2016-07-04 23:52:52 +02:00
Daniel Martí a573688a44 makebs: flip arch64 bool
The last commit was missing this.
2016-07-04 12:01:58 +01:00
Hans-Christoph Steiner bfd80d12d9 switch to new 64-bit base box image: https://f-droid.org/jessie64.box
build-tools and other SDK bits from android-24 require 64-bit GNU/Linux
2016-07-04 12:34:00 +02:00
Daniel Martí be4953be02 Add Gradle 2.2 and 2.14 to the buildserver
2.2 can be specifically requested by an app, and in some extreme cases
those apps don't build with 2.2.1.
2016-06-24 17:06:17 +01:00
Daniel Martí 06003d3c04 Add platform-24 to the buildserver 2016-06-24 17:06:17 +01:00
Daniel Martí b026874353 all: add and switch to build-tools v24 2016-06-24 17:06:16 +01:00
Hans-Christoph Steiner 226237c5f7 buildserver: do not set NDK env vars, they are handled by `fdroid build`
`fdroid build` handles setting the NDK env vars since the NDK version can
change depending on the app being build.  Unlike ANDROID_HOME, there is no
single global NDK location.  The NDK installs are all versioned.
2016-06-21 10:29:56 +02:00
Ciaran Gultnieks 9a2e06fd5c Tone down makebuildserver terminal spamming
The progress bar updating at each 1k chunk spams the terminal to such an
extent it stops responding to keypresses (at least with a fast
connection). It also seems extremely inefficient to be writing the file
in 1k chunks. This makes it 64k, which is more reasonable but quite
probably still too small.
2016-06-17 13:39:01 +01:00
Hans-Christoph Steiner d0bb6f73bf buildserver: /vagrant/cache writeable only by root
Prevent build processes from modifying the cache, it is only needed
during provisioning anyway. A malicious build could still use sudo to
change the cache, but this is more to prevent mistaken modifications.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner 6ea2508127 buildserver: unpack gradle versions with provisioning shell script
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.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner 02a835ff95 buildserver: unpack NDK with a provisioning shell script
This makes the process closer to ./jenkins-build scripts and .gitlab-ci.yml
files.  Hopefully it uses less RAM than chef too.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner e47396b403 buildserver: use `android update sdk` to install Android SDK
`android update sdk --no-ui` is the standard command line tool for
installing the Android SDK.  By symlinking into the $ANDROID_HOME/temp dir,
the cached files can still be used.  This converts the chef recipe to a
vagrant shell provisioning script since it was all bash anyway.

Some file names no longer officially have a -linux in them, so those were
changed to keep the cache working with the default filename.
2016-06-15 15:26:35 +02:00
Hans-Christoph Steiner e449d2f583 buildserver: setup env vars using standard script
bash provides a standard file location for a script to be run when the
shell starts: /etc/profile.d/  This converts the scattered bits of code for
making ~/.bsenv into a single provisioning script to generate
/etc/profile.d/bsenv.sh, which gets automatically executed when bash starts
2016-06-15 15:26:35 +02:00
Hans-Christoph Steiner 714b3b9ff6 makebuildserver: use original names for downloaded SDK components
It will make it a lot easier to manage the cache if we use the original
file names, which often include the file version.  This also changes the
download process to be resumable if there is a partial file in the cache,
and switches from calling wget on the command line to using the python libs
'requests' and 'clint' to provide a similar experience.  While its not so
important for this particular bit of code to use those libraries, I think
those two will allow us to provide a better user experience throughout the
whole of fdroidserver.

In this case, it is already doing special tricks fetching the file size
from the server before trying to download it.  I suppose this code could
instead check if the file exists, and if so, check the hash sum.  I think
that would be slower for most people since checking the hash on large files
takes a noticeable about of time, while a HTTP HEAD request is pretty tiny.
2016-06-14 14:21:59 +02:00
Daniel Martí ec7beb8388 Bump platform-23 to r03 2016-05-27 14:08:57 +01:00
Daniel Martí d5d22dbc99 Update android sdk version
Install version 25 now. Also use the smaller tools zip. While at it,
also remove the tools re-install - it's not worth it, as long as we keep
the initial tools zip up to date.
2016-05-27 14:08:57 +01:00
Daniel Martí 1edd9cde3c Add gradle 2.13 2016-05-27 14:08:57 +01:00
Ciaran Gultnieks 4eb5fa88be Fix gradle download url for 2.12 2016-04-07 08:30:10 +01:00
Daniel Martí ec9087d057 Add and switch to build-tools 23.0.3
Also bump to the CI image which contains it.
2016-04-05 10:49:30 +01:00
Daniel Martí a345e351ba Add Gradle 2.12 to the buildserver 2016-04-05 10:49:15 +01:00
Ciaran Gultnieks 009a926ea4 Remove extra blank lines in makebuildserver output
These seem to have appeared during the py3 conversion.
2016-03-21 08:45:42 +00:00
Hans-Christoph Steiner 8f99400064 makebuildserver: buildserverid should always be a string 2016-03-14 17:35:44 +01:00
Hans-Christoph Steiner 7039d16046 always parse versions as strings, not bytes
Fixes a couple errors like:
  File "./makebuildserver", line 30, in vagrant
    out += line
  TypeError: Can't convert 'bytes' object to str implicitly

If universal_newlines=False, the default, then Popen will return bytes if
the newlines in the data do not match the system's newlines.  Setting it to
true enables auto-conversion, and then guarantees that the data is always
str.

"If universal_newlines is True, the file objects stdin, stdout and stderr
are opened as text streams in universal newlines mode, as described above
in Frequently Used Arguments, otherwise they are opened as binary streams."
https://docs.python.org/3/library/subprocess.html#subprocess.Popen
2016-03-14 12:49:38 +01:00
Ciaran Gultnieks bc131856d2 Fix python2/makebuildserver breakage 2016-03-13 20:49:38 +00:00
Daniel Martí fc0746712d Merge branch 'master' into 'master'
makebuildserver: support running VirtualBox in a VM

For debian.jenkins.net, our test environment is a kvm instance that does not expose the hardware virtualization instructions.  So this auto-detects whether the current machine, virtual or not, supports the hardware virtualization.  If not, it uses VirtualBox's software emulator, which should run everywhere, even in a kvm instance.

See merge request !108
2016-03-11 23:53:25 +00:00
Daniel Martí 49ac25270e Run 2to3 on makebuildserver
Mostly just print conversion.
2016-03-10 16:43:37 +00:00
Daniel Martí 99edd64372 Switch all headers to python3 2016-03-10 16:43:36 +00:00
Hans-Christoph Steiner 6f254ff7b6 makebuildserver: use VB software virt if hardware is not available
This checks the local CPU settings to see if it has the right virtualizing
CPU instructions, and only uses VirtualBox hardware virtualization on
setups where it is available.  VMs instances usually do not provide these
instructions.  Where the CPU features are not available, it will use VB's
software virtualization.
2016-03-10 12:28:31 +01:00
Daniel Martí da0a787879 Add gradle 2.11 2016-02-15 12:02:45 +00:00
Hans-Christoph Steiner 7f451a815b makebuildserver: add workaround to Ubuntu/trusty's old paramiko
Ubuntu trusty 14.04's paramiko does not work with jessie's openssh's
default settings, so they need to be tweaked in order to provide working
ssh to the instance.

https://stackoverflow.com/questions/7286929/paramiko-incompatible-ssh-peer-no-acceptable-kex-algorithm/32691055#32691055
2016-02-11 20:27:30 +01:00
Hans-Christoph Steiner 09daa5eee0 makebuildserver: default memory to 1024MB, so it runs on normal machines
4 gigs is still a common amount of RAM these days for laptops, if the VM
takes almost all of that, it makes the machine drag to almost a halt. Most
apps build fine in 1gig of RAM, indeed that's the default for most CI
instances, like travis-ci and gitlab-ci.
2016-02-03 14:54:14 +01:00
Hans-Christoph Steiner dd93505fce allow setting up an apt package cache for the build server setup
This creates a cache folder which will store the apt cache from the VM.
2016-02-03 14:54:14 +01:00
Hans-Christoph Steiner b6a5978b11 makebuildserver: make chef find the custom cache locations 2016-02-03 14:54:14 +01:00
Hans-Christoph Steiner 90d81eba2d makebuildserver: settable vm boot timeout, plus longer default
On slow machines or VMs like the Debian jenkins box, the VM boot timeout
needs to be a lot longer, otherwise vagrant times out before setting up
the VM.
2016-01-26 17:47:17 +01:00
Hans-Christoph Steiner 3511c44357 makebuildserver: explicitly set debian_mirror by default
There needs to be a default, otherwise it crashes.  I should have included
this in 8d66742dd7
2016-01-26 17:46:51 +01:00
Hans-Christoph Steiner 8d66742dd7 makebuildserver: set debian mirror in config file only
Setting it in the config file was not working, and right now, all of the
options are in the config file and not as command line flags, so remove
--debian-mirror to keep that consistent.
2016-01-26 11:31:40 +01:00
Hans-Christoph Steiner 82e26cf59e makebuildserver: use jessie32.box from cache, if present 2016-01-26 11:31:40 +01:00
Hans-Christoph Steiner 24a9f3b816 makebuildserver: delete cached files with zero size
If download fails to connect, it'll make a zero size file.  Then the next
run on ./makebuildserver will fail because the checksum will not be right.
2016-01-21 15:41:26 +01:00
Hans-Christoph Steiner cda8fa00f5 makebuildserver: cache defaults to ~/.cache/fdroidserver
This also provides a config option to override that default.  ~/.cache is
a standard location on GNU/Linux machines for cached content.  It is also
good to have the cache outside of the git repo in case `git clean -fdx` is
run, which would delete all files in the directory that are not part of the
git repo, including buildserver/cache/
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner 3bd8ef2c8c makebuildserver: set defaults in script so it can run without config
This makes it so that ./makebuildserver will run without any config file,
using the defaults that are embedded in the script itself.  This is like
how `fdroid` works.
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner 50713c7ce9 makebuildserver: set default Debian mirror to http.debian.net
This host automatically detects which is the closest mirror, then uses that
one.  It does so dynamically, so it'll work on machines that move too. Now
that we are pushing more people to run F-Droid build servers, the defaults
should take those use cases into account.
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner b33add9ce7 name makebuildserver config the same as the script
This keeps the numbers of names down to a minimum, and since the config
is placed right next to the script, this keeps tab completion working
nicely when the config file is in place.

The old file name is still supported.
2016-01-21 15:34:55 +01:00
Daniel Martí bd29fce13b Add Gradle 2.10 to the BS 2016-01-05 09:15:54 +01:00
Daniel Martí 73c680dfcf Add gradle 2.9 to the BS 2015-11-20 14:08:54 -08:00
Daniel Martí 882cfe3912 Install build-tools from the cache too 2015-11-20 14:08:54 -08:00
Daniel Martí 7842b08f40 Download platforms via makebuildserver 2015-11-20 12:21:31 -08:00
Daniel Martí 7d96602df2 Fix gradle-2.8 checksum
I once again did the -all.zip hash, not the -bin.zip one.
2015-10-25 10:48:17 +01:00
Daniel Martí 231339ba80 Add gradle 2.8 2015-10-24 19:05:21 +02:00
Daniel Martí 82624cd7ca Bump sdk to 24.4.1 2015-10-24 19:02:39 +02:00
Ciaran Gultnieks e3ee7ba329 Fix shasum for gradle 2.7 (see a229afe1) 2015-10-08 14:16:35 +01:00
Daniel Martí a229afe178 buildserver: Add gradle 2.7 2015-10-05 23:40:19 +02:00
Ciaran Gultnieks 9cb95d1eb5 Ensure makebuildserver provisions on an update 2015-08-27 10:12:22 +00:00
Hans-Christoph Steiner f47677ef36 makebuildserver: allow setting apt mirror from command line
On some setups, using a custom apt mirror is essential, so this adds a
command line flag to override the default one:
http://ftp.uk.debian.org/debian/

For example, someone who runs a local mirror for offline and low bandwidth
situations.

This uses a % rather than a .format() to avoid escaping { and }, which have
meaning when using .format().
2015-08-26 14:46:54 +02:00
Hans-Christoph Steiner 4b0a6ed29f makebuildserver: allow a list/tuple for baseboxurl to support local copy
config.vm.box_url can be a list/tuple of URLs, which is useful to specific
a locally cached copy.  This is needed on slow connections, so that if it
fails, the download of jessie32.box does not have to start from the
beginning of the file again.
2015-08-26 14:46:53 +02:00
Hans-Christoph Steiner 99d0c55fe9 Merge branch 'support-vagrant-cachier' into 'master'
Add optional support for vagrant-cachier plugin

Building the basebox is excruciating for people on slow connections. I'm particularly sensitive to this after living in Central America for awhile :)

This won't affect anyone who hasn't installed the plugin. For those who do, it creates a persistent shared folder for each box (ie. testing23.box) and detects directories to cache between VM builds (apt, gems, pip, chef cache, etc.)

(The only downside is that, for those following server setup does who are not aware what vagrant-cachier does, it might be unexpected that artifacts persist between vagrant destroys.)

See merge request !25
2015-08-26 12:44:36 +00:00
Daniel Martí d59ecb3d18 Add gradle 2.6 to the buildserver 2015-08-18 13:40:21 -07:00
Daniel Martí d2ccea8246 Update buildserver for android-23 2015-08-18 13:39:00 -07:00
Daniel Martí 3b43e27cb8 Add gradle 2.5, fixes #108 2015-08-13 11:28:01 -07:00
Daniel Martí e55d1450d1 Update the Android SDK to 24.3.3 2015-06-19 21:17:43 +02:00
Daniel Martí 52c2ca1fe7 Replace NDK r10d with r10e 2015-06-18 17:05:48 +02:00
Daniel Martí 5985bb4a0b Add gradle 2.4 2015-06-18 16:57:00 +02:00
Daniel Martí ed5c2fd33d Add gradle 2.3 to the buildserver
Fixes apps that explicitly require 2.3 via gradleVersion
2015-04-09 16:02:35 +02:00
Ciaran Gultnieks c6434476e9 Work when cpu count is not defined 2015-03-27 20:49:43 +00:00
Daniel Martí 92fdcd3e6a Update sdk to 24.1.2 2015-03-21 23:41:08 +01:00
Ciaran Gultnieks b71433e66b Allow buildserver CPU count to be configured 2015-02-01 09:00:04 +00:00
Daniel Martí f60f1bc59e Add NDK r10d, this time alongside r9b
Specified per-build with ndk=<version> defaulting to the oldest, r9b.
2015-01-03 00:07:01 +01:00
Daniel Martí 14f654fabc Apply some autopep8-python2 suggestions 2014-12-31 16:44:06 +01:00
Daniel Martí e10b2dd382 Update sdk to 24.0.1 2014-12-12 12:39:04 +01:00
Daniel Martí 05a7a872b6 Add gradle 2.2.1 for plugin versions 1.0.X 2014-12-12 12:29:16 +01:00
Ciaran Gultnieks 05c2d18709 Merge branch 'update-vagrantfile' into 'master'
Update Vagrantfile and docs to clarify v1.4.3 is ok

Saw in the server docs that we were recommending 1.3.x and saying 1.4.x was broken. I've confirmed that 1.4.x works, and updated things accordingly. Higher version might work, but figured minimal change to build stuff was best :)

See merge request !24
2014-11-07 14:44:58 +00:00
Daniel Martí 135e15bde3 Add support for gradle plugin version 0.13 via gradle 2.1 2014-10-07 16:36:10 +02:00
Patrick Connolly 57c6deff01 Restrict vagrant-cachier caches to only apt and chef. 2014-09-09 12:38:26 -03:00
Patrick Connolly d1b5c4353d Add optional support for vagrant-cachier plugin. 2014-09-09 12:38:26 -03:00
Patrick Connolly c08d2092f6 Update Vagrantfile and docs to clarify v1.4.3 is ok. 2014-08-27 11:35:31 -03:00
Daniel Martí ebfce778bc Update the SDK to 23.0.2, supposedly fixing all issues 2014-07-03 15:36:43 +02:00
Daniel Martí 348c6a1085 Update the SDK to version 23.0.0 2014-06-30 17:03:26 +02:00
Daniel Martí a50e6dbfbd Update sdk and build-tools 2014-06-11 22:48:12 +02:00
Daniel Martí e5854b7e13 Fix pep8 warnings in makebuildserver 2014-05-31 23:00:27 +02:00
Daniel Martí 9cb5bbd1ee Add gradle 1.12 for the plugin version 0.10
Also, use https for the gradle.org links
2014-05-20 16:40:43 +02:00
Daniel Martí 17a4f5c00f A few more PEP8 fixes 2014-05-07 16:17:46 +02:00
Daniel Martí 3003695053 Bump sdk to 22.6 2014-03-07 15:21:28 +01:00
Daniel Martí c76d2321f3 Add support for gradle 1.11 (and plugin ver 0.9) 2014-03-07 15:21:18 +01:00
Hans-Christoph Steiner 5cdb428a2f makebuildserver: use https uris whenever available
* pypi now defaults to https
* dl.google.com works well with https
2014-01-30 20:33:37 -05:00
Daniel Martí 6e537c2f37 Add gradle 1.10 with the new plugin 0.8 release 2014-01-27 13:21:44 +01:00
Daniel Martí 6daeb625ab Check sha256 sums via hashlib 2014-01-10 20:12:24 +01:00
Daniel Martí ca7cea37f8 Add our gradle wrapper script 2014-01-09 22:56:51 +01:00
Ciaran Gultnieks c31b0ccf2e Better makebuildserver verbose output
(and always delete box file, its always there, despite my earlier commit
saying it wasn't)
2014-01-09 22:56:51 +01:00
Daniel Martí db33ae75e5 Revert "Add gradle-1.10" since it's not compatible yet 2014-01-09 16:29:45 +01:00
Daniel Martí 12c05c06f2 Add gradle-1.10 2014-01-09 16:27:18 +01:00
Daniel Martí d83a723f5c Install gradle version 1.4, 1.6, 1.7, 1.8 and 1.9 to /opt/gradle 2014-01-09 16:23:49 +01:00
Ciaran Gultnieks 883d63f2c3 Only conditionally try to remove completed box 2014-01-09 16:23:49 +01:00
Daniel Martí 90c27da3ea Fix makebuildserver after rename, tidy gitignores 2014-01-09 16:23:48 +01:00
Daniel Martí 69980ed6a5 Strip unnecessary exts from updateplugin and makebuildserver 2014-01-09 16:23:48 +01:00
Renamed from makebuildserver.py (Browse further)