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://ftp.uk.debian.org/debian/",
- help="Use the specified Debian mirror in the box's /etc/apt/sources.list.")
options, args = parser.parse_args()
-config = {}
-execfile('makebs.config.py', config)
+# set up default config
+cachedir = os.path.join(os.getenv('HOME'), '.cache', 'fdroidserver')
+config = {
+ 'arch64': False,
+ 'basebox': 'jessie32',
+ # 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',
+ ],
+ 'cachedir': cachedir,
+ 'cpus': 1,
+ 'memory': 3584,
+}
+
+# load config file, if present
+if os.path.exists('makebuildserver.config.py'):
+ execfile('makebuildserver.config.py', config)
+elif os.path.exists('makebs.config.py'):
+ # this is the old name for the config file
+ execfile('makebs.config.py', config)
if not os.path.exists('makebuildserver') or not os.path.exists(serverdir):
print 'This must be run from the correct directory!'
vagrant(['destroy', '-f'], cwd=serverdir, printout=options.verbose)
# Update cached files.
-cachedir = os.path.join('buildserver', 'cache')
+cachedir = config['cachedir']
if not os.path.exists(cachedir):
- os.mkdir(cachedir)
+ os.makedirs(cachedir, 0755)
cachefiles = [
('android-sdk_r24.4.1-linux.tgz',
('build-tools-23.0.2.zip',
'https://dl.google.com/android/repository/build-tools_r23.0.2-linux.zip',
'82754f551a6e36eaf516fbdd00c95ff0ccd19f81d1e134125b6ac4916f7ed9b6'),
+ # the binaries that Google uses are here:
+ # https://android.googlesource.com/platform/tools/external/gradle/+/studio-1.5/
('gradle-1.4-bin.zip',
'https://services.gradle.org/distributions/gradle-1.4-bin.zip',
'cd99e85fbcd0ae8b99e81c9992a2f10cceb7b5f009c3720ef3a0078f4f92e94e'),
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:
chef.add_recipe "kivy"
end
end
-""" % (options.debian_mirror)
+""" % (config['debian_mirror'])
# Check against the existing Vagrantfile, and if they differ, we need to
# create a new box: