is the stdout (and stderr) from vagrant
"""
p = FDroidPopen(['vagrant'] + params, cwd=cwd)
- return (p.returncode, p.stdout)
+ return (p.returncode, p.output)
def get_vagrant_sshinfo():
p = FDroidPopen(['VBoxManage', 'snapshot',
get_builder_vm_id(), 'list',
'--details'], cwd='builder')
- if 'fdroidclean' in p.stdout:
+ if 'fdroidclean' in p.output:
logging.info("...snapshot exists - resetting build server to "
"clean state")
retcode, output = vagrant(['status'], cwd='builder')
logging.info("...failed to reset to snapshot")
else:
logging.info("...snapshot doesn't exist - "
- "VBoxManage snapshot list:\n" + p.stdout)
+ "VBoxManage snapshot list:\n" + p.output)
# If we can't use the existing machine for any reason, make a
# new one from scratch.
p = FDroidPopen(['VBoxManage', 'snapshot', get_builder_vm_id(),
'list', '--details'],
cwd='builder')
- if 'fdroidclean' not in p.stdout:
+ if 'fdroidclean' not in p.output:
raise BuildException("Failed to take snapshot.")
return sshinfo
logging.info("Cleaning Gradle project...")
cmd = [config['gradle'], 'clean']
- if '@' in thisbuild['gradle']:
- gradle_dir = os.path.join(root_dir, thisbuild['gradle'].split('@', 1)[1])
- gradle_dir = os.path.normpath(gradle_dir)
- else:
- gradle_dir = root_dir
-
adapt_gradle(build_dir)
for name, number, libpath in srclibpaths:
adapt_gradle(libpath)
- p = FDroidPopen(cmd, cwd=gradle_dir)
+ p = FDroidPopen(cmd, cwd=root_dir)
elif thisbuild['type'] == 'kivy':
pass
if p is not None and p.returncode != 0:
raise BuildException("Error cleaning %s:%s" %
- (app['id'], thisbuild['version']), p.stdout)
+ (app['id'], thisbuild['version']), p.output)
logging.info("Getting rid of Gradle wrapper binaries...")
for root, dirs, files in os.walk(build_dir):
if p.returncode != 0:
raise BuildException("Error running build command for %s:%s" %
- (app['id'], thisbuild['version']), p.stdout)
+ (app['id'], thisbuild['version']), p.output)
# Build native stuff if required...
if thisbuild['buildjni'] and thisbuild['buildjni'] != ['no']:
del manifest_text
p = FDroidPopen(cmd, cwd=os.path.join(root_dir, d))
if p.returncode != 0:
- raise BuildException("NDK build failed for %s:%s" % (app['id'], thisbuild['version']), p.stdout)
+ raise BuildException("NDK build failed for %s:%s" % (app['id'], thisbuild['version']), p.output)
p = None
# Build the release...
elif thisbuild['type'] == 'gradle':
logging.info("Building Gradle project...")
- if '@' in thisbuild['gradle']:
- flavours = thisbuild['gradle'].split('@')[0].split(',')
- gradle_dir = thisbuild['gradle'].split('@')[1]
- gradle_dir = os.path.join(root_dir, gradle_dir)
- else:
- flavours = thisbuild['gradle'].split(',')
- gradle_dir = root_dir
+ flavours = thisbuild['gradle'].split(',')
if len(flavours) == 1 and flavours[0] in ['main', 'yes', '']:
flavours[0] = ''
commands += ['assemble' + flavours_cmd + 'Release']
# Avoid having to use lintOptions.abortOnError false
- # TODO: Do flavours or project names change this task name?
- if LooseVersion('0.8') <= thisbuild['gradlepluginver'] < LooseVersion('0.11'):
+ if thisbuild['gradlepluginver'] >= LooseVersion('0.8'):
commands += ['-x', 'lintVital' + flavours_cmd + 'Release']
- p = FDroidPopen(commands, cwd=gradle_dir)
+ p = FDroidPopen(commands, cwd=root_dir)
elif thisbuild['type'] == 'ant':
logging.info("Building Ant project...")
bindir = os.path.join(root_dir, 'bin')
if p is not None and p.returncode != 0:
- raise BuildException("Build failed for %s:%s" % (app['id'], thisbuild['version']), p.stdout)
+ raise BuildException("Build failed for %s:%s" % (app['id'], thisbuild['version']), p.output)
logging.info("Successfully built version " + thisbuild['version'] + ' of ' + app['id'])
if thisbuild['type'] == 'maven':
stdout_apk = '\n'.join([
- line for line in p.stdout.splitlines() if any(a in line for a in ('.apk', '.ap_'))])
+ line for line in p.output.splitlines() if any(a in line for a in ('.apk', '.ap_'))])
m = re.match(r".*^\[INFO\] .*apkbuilder.*/([^/]*)\.apk",
stdout_apk, re.S | re.M)
if not m:
src = os.path.join(dd, 'build', 'apk', name + '.apk')
elif thisbuild['type'] == 'ant':
stdout_apk = '\n'.join([
- line for line in p.stdout.splitlines() if '.apk' in line])
+ line for line in p.output.splitlines() if '.apk' in line])
src = re.match(r".*^.*Creating (.+) for release.*$.*", stdout_apk,
re.S | re.M).group(1)
src = os.path.join(bindir, src)
if not os.path.exists(src):
raise BuildException("Unsigned apk is not at expected location of " + src)
- p = SilentPopen([os.path.join(config['sdk_path'], 'build-tools',
- config['build_tools'], 'aapt'),
- 'dump', 'badging', src])
+ p = SilentPopen([config['aapt'], 'dump', 'badging', src])
vercode = None
version = None
foundid = None
nativecode = None
- for line in p.stdout.splitlines():
+ for line in p.output.splitlines():
if line.startswith("package:"):
pat = re.compile(".*name='([a-zA-Z0-9._]*)'.*")
m = pat.match(line)
elif line.startswith("native-code:"):
nativecode = line[12:]
- if thisbuild['buildjni']:
- if nativecode is None or "'" not in nativecode:
+ # Ignore empty strings or any kind of space/newline chars that we don't
+ # care about
+ if nativecode is not None:
+ nativecode = nativecode.strip()
+ nativecode = None if not nativecode else nativecode
+
+ if thisbuild['buildjni'] and thisbuild['buildjni'] != ['no']:
+ if nativecode is None:
raise BuildException("Native code should have been built but none was packaged")
if thisbuild['novcheck']:
vercode = thisbuild['vercode']
if thisbuild['disable']:
return False
- logging.info("Building version " + thisbuild['version'] + ' of ' + app['id'])
+ logging.info("Building version %s (%s) of %s" % (
+ thisbuild['version'], thisbuild['vercode'], app['id']))
if server:
# When using server mode, still keep a local cache of the repo, by
# Read all app and srclib metadata
allapps = metadata.read_metadata(xref=not options.onserver)
- metadata.read_srclibs()
apps = common.read_app_args(args, allapps, True)
apps = [app for app in apps if (options.force or not app['Disabled']) and
logfile.write(str(be))
logfile.close()
reason = str(be).split('\n', 1)[0] if options.verbose else str(be)
- print("Could not build app %s due to BuildException: %s" % (
+ logging.error("Could not build app %s due to BuildException: %s" % (
app['id'], reason))
if options.stop:
sys.exit(1)
failed_apps[app['id']] = be
wikilog = be.get_wikitext()
except VCSException as vcse:
- print("VCS error while building app %s: %s" % (app['id'], vcse))
+ reason = str(vcse).split('\n', 1)[0] if options.verbose else str(vcse)
+ logging.error("VCS error while building app %s: %s" % (
+ app['id'], reason))
if options.stop:
sys.exit(1)
failed_apps[app['id']] = vcse
wikilog = str(vcse)
except Exception as e:
- print("Could not build app %s due to unknown error: %s" % (app['id'], traceback.format_exc()))
+ logging.error("Could not build app %s due to unknown error: %s" % (
+ app['id'], traceback.format_exc()))
if options.stop:
sys.exit(1)
failed_apps[app['id']] = e