if 'mvnflags' in thisbuild:
mvncmd += thisbuild['mvnflags']
- p = FDroidPopen(mvncmd, cwd=maven_dir, apkoutput=True)
+ p = FDroidPopen(mvncmd, cwd=maven_dir)
elif 'gradle' in thisbuild:
print "Building Gradle project..."
cmd += [thisbuild['antcommand']]
else:
cmd += ['release']
- p = FDroidPopen(cmd, cwd=root_dir, apkoutput=True)
+ p = FDroidPopen(cmd, cwd=root_dir)
if p.returncode != 0:
raise BuildException("Build failed for %s:%s" % (app['id'], thisbuild['version']), p.stdout, p.stderr)
else:
bindir = os.path.join(root_dir, 'bin')
if 'maven' in thisbuild:
+ stdout_apk = '\n'.join([
+ line for line in p.stdout.splitlines() if 'apk' in line])
m = re.match(r".*^\[INFO\] .*apkbuilder.*/([^/]*)\.apk",
- p.stdout_apk, re.S|re.M)
+ stdout_apk, re.S|re.M)
if not m:
m = re.match(r".*^\[INFO\] Creating additional unsigned apk file .*/([^/]+)\.apk[^l]",
- p.stdout_apk, re.S|re.M)
+ stdout_apk, re.S|re.M)
if not m:
# This format is found in com.github.mobile, com.yubico.yubitotp and com.botbrew.basil for example...
m = re.match(r'.*^\[INFO\] [^$]*aapt \[package,[^$]*' + bindir + '/([^/]+)\.ap[_k][,\]]',
- p.stdout_apk, re.S|re.M)
+ stdout_apk, re.S|re.M)
if not m:
raise BuildException('Failed to find output')
src = m.group(1)
name = '-'.join([os.path.basename(dd), flavour, 'release', 'unsigned'])
src = os.path.join(dd, 'build', 'apk', name+'.apk')
else:
- src = re.match(r".*^.*Creating (.+) for release.*$.*", p.stdout_apk,
+ stdout_apk = '\n'.join([
+ line for line in p.stdout.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)
and build.get('gradle', 'no') == 'no'):
parms = [os.path.join(sdk_path, 'tools', 'android'),
'update', 'project']
- if 'target' in build:
- parms.append('-t')
- parms.append(build['target'])
+ if 'target' in build and build['target']:
+ parms += ['-t', build['target']]
update_dirs = None
if updatemode == 'auto':
update_dirs = ['.'] + ant_subprojects(root_dir)
else:
apps[appid] = added
sortedapps = sorted(apps.iteritems(), key=operator.itemgetter(1))[-num:]
- lst = []
- for app, added in sortedapps:
- lst.append(app)
+ lst = [app for app,added in sortedapps]
lst.reverse()
return lst
stderr = ''
stdout_apk = ''
-def FDroidPopen(commands, cwd,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE,
- apkoutput=False):
+def FDroidPopen(commands, cwd):
"""
Runs a command the FDroid way and returns return code and output
- :param commands, cwd, stdout, stderr: like subprocess.Popen
+ :param commands, cwd: like subprocess.Popen
"""
if options.verbose:
print " > %s" % ' '.join(commands)
result = PopenResult()
- p = subprocess.Popen(commands, cwd=cwd, stdout=stdout, stderr=stderr)
+ p = subprocess.Popen(commands, cwd=cwd,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout_queue = Queue.Queue()
stdout_reader = AsynchronousFileReader(p.stdout, stdout_queue)
# Output directly to console
sys.stdout.write(line)
sys.stdout.flush()
- if apkoutput and 'apk' in line:
- result.stdout_apk += line
result.stdout += line
# Show what we received from standard error