diff --git a/buildserver/.gitignore b/buildserver/.gitignore index 8000dd9d..4de7cdb2 100644 --- a/buildserver/.gitignore +++ b/buildserver/.gitignore @@ -1 +1,2 @@ .vagrant +up.log diff --git a/fdroidserver/build.py b/fdroidserver/build.py index bfe35446..2d9e736b 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -87,8 +87,9 @@ def build_server(app, thisbuild, vcs, build_dir, output_dir, sdk_path, force): # Open SSH connection to make sure it's working and ready... print "Connecting to virtual machine..." - subprocess.call('vagrant ssh-config >sshconfig', - cwd='builder', shell=True) + if subprocess.call('vagrant ssh-config >sshconfig', + cwd='builder', shell=True) != 0: + raise BuildException("Error getting ssh config") vagranthost = 'default' # Host in ssh config file sshconfig = ssh.SSHConfig() sshf = open('builder/sshconfig', 'r') @@ -191,7 +192,8 @@ def build_server(app, thisbuild, vcs, build_dir, output_dir, sdk_path, force): for lib in thisbuild['extlibs'].split(';'): lp = lib.split('/') for d in lp[:-1]: - ftp.mkdir(d) + if d not in ftp.listdir(): + ftp.mkdir(d) ftp.chdir(d) ftp.put(os.path.join('build/extlib', lib), lp[-1]) for _ in lp[:-1]: @@ -351,6 +353,10 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, extlib_dir, tmp_dir, # This format is found in com.github.mobile for example... m = re.match(r".*^\[INFO\] [^$]*aapt \[package,[^$]*" + app['id'] + "/app/target/([^$]+)\.ap_\]", output, re.S|re.M) + if not m: + # This format is found in com.yubico.yubitotp and com.botbrew.basil for example... + m = re.match(r".*^\[INFO\] [^$]*aapt \[package,[^$]*" + app['id'] + "/" + thisbuild['bindir'] + "/([^$]+)\.ap_,", + output, re.S|re.M) if not m: print output raise BuildException('Failed to find output') diff --git a/makebuildserver.py b/makebuildserver.py index fbfeef87..0c23c588 100755 --- a/makebuildserver.py +++ b/makebuildserver.py @@ -24,10 +24,11 @@ if os.path.exists(boxfile): vagrant(['halt'], serverdir) print "Configuring build server VM" returncode, out, err = vagrant(['up'], serverdir) +with open(os.path.join(serverdir, 'up.log'), 'w') as log: + log.write('==stdout==\n' + out + '\n\n') + log.write('==stderr==\n' + err + '\n\n') if returncode != 0: print "Failed to configure server" - print out - print err print "Stopping build server VM" vagrant(['halt'], serverdir)