help="Spew out even more information than normal")
parser.add_option("-c", "--clean", action="store_true", default=False,
help="Build from scratch, rather than attempting to update the existing server")
-parser.add_option("--debian-mirror", default="http://http.debian.net/debian/",
- help="Use the specified Debian mirror in the box's /etc/apt/sources.list.")
options, args = parser.parse_args()
# set up default config
+cachedir = os.path.join(os.getenv('HOME'), '.cache', 'fdroidserver')
config = {
'arch64': False,
'basebox': 'jessie32',
- 'baseboxurl': 'https://f-droid.org/jessie32.box',
- 'cachedir': os.path.join(os.getenv('HOME'), '.cache', 'fdroidserver'),
+ # TODO in py3, convert this to pathlib.Path(absolute_path_string).as_uri()
+ 'baseboxurl': [
+ 'file://' + os.path.join(cachedir, 'jessie32.box'),
+ 'https://f-droid.org/jessie32.box',
+ ],
+ 'debian_mirror': 'http://http.debian.net/debian/',
+ 'apt_package_cache': False,
+ 'boot_timeout': 600,
+ 'cachedir': cachedir,
'cpus': 1,
- 'memory': 3584,
+ 'memory': 1024,
}
# load config file, if present
('gradle-2.10-bin.zip',
'https://services.gradle.org/distributions/gradle-2.10-bin.zip',
'66406247f745fc6f05ab382d3f8d3e120c339f34ef54b86f6dc5f6efc18fbb13'),
+ ('gradle-2.11-bin.zip',
+ 'https://services.gradle.org/distributions/gradle-2.11-bin.zip',
+ '8d7437082356c9fd6309a4479c8db307673965546daea445c6c72759cd6b1ed6'),
('Kivy-1.7.2.tar.gz',
'https://pypi.python.org/packages/source/K/Kivy/Kivy-1.7.2.tar.gz',
'0485e2ef97b5086df886eb01f8303cb542183d2d71a159466f99ad6c8a1d03f1'),
for f, src, shasum in cachefiles:
relpath = os.path.join(cachedir, f)
+ # if download fails to connect, it'll make a zero size file
+ if os.path.exists(relpath) and os.stat(relpath).st_size == 0:
+ os.remove(relpath)
if not os.path.exists(relpath):
print "Downloading " + f + " to cache"
if subprocess.call(['wget', src, '-O', f], cwd=cachedir) != 0:
v.customize ["modifyvm", :id, "--cpus", "{3}"]
end
+ config.vm.boot_timeout = {4}
+
config.vm.provision :shell, :path => "fixpaths.sh"
""".format(config['basebox'],
baseboxurl,
config['memory'],
- config.get('cpus', 1))
+ config.get('cpus', 1),
+ config['boot_timeout'])
if 'aptproxy' in config and config['aptproxy']:
vagrantfile += """
config.vm.provision :shell, :inline => 'sudo echo "Acquire::http {{ Proxy \\"{0}\\"; }};" > /etc/apt/apt.conf.d/02proxy && sudo apt-get update'
""".format(config['aptproxy'])
+# buildserver/ is shared to the VM's /vagrant by default so the old default
+# does not need a custom mount
+if cachedir != 'buildserver/cache':
+ vagrantfile += """
+ config.vm.synced_folder '{0}', '/vagrant/cache'
+""".format(cachedir)
+
+# cache .deb packages on the host via a mount trick
+if config['apt_package_cache']:
+ aptcachedir = cachedir + '/apt/archives'
+ vagrantfile += """
+ config.vm.synced_folder "{0}", "/var/cache/apt/archives",
+ owner: 'root', group: 'root', create: true
+""".format(aptcachedir)
+
vagrantfile += """
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
:sdk_loc => "/home/vagrant/android-sdk",
:ndk_loc => "/home/vagrant/android-ndk",
:debian_mirror => "%s",
+ :ubuntu_trusty => "%s",
:user => "vagrant"
}
}
chef.add_recipe "kivy"
end
end
-""" % (options.debian_mirror)
+""" % (config['debian_mirror'],
+ str('14.04' in os.uname()[3]).lower())
# Check against the existing Vagrantfile, and if they differ, we need to
# create a new box: