mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 22:42:29 +03:00
Allow 'update' and 'buildjni' to accept list of subdir paths to run tools within.
This is useful for multi-component projects (main app + libraries in separate dirs). Older adhoc values (update=no, buildjni=yes) for both options are retained, except that to ignore jni/ directory, buildjni=no instead of buildjni=manual should be used now. Also, if --verbose is given, print message about runnibg ndk-build - native libraries can be quite big and process long, so this is useful to keep user in loop. To achieve this, had to global'ize options.
This commit is contained in:
parent
22f9895927
commit
d26f2d1ffa
2 changed files with 21 additions and 8 deletions
16
build.py
16
build.py
|
@ -149,10 +149,18 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, extlib_dir, tmp_dir,
|
||||||
tarball.close()
|
tarball.close()
|
||||||
|
|
||||||
# Build native stuff if required...
|
# Build native stuff if required...
|
||||||
if thisbuild.get('buildjni', 'no') == 'yes':
|
if thisbuild.get('buildjni') not in (None, 'no'):
|
||||||
|
jni_components = thisbuild.get('buildjni')
|
||||||
|
if jni_components == 'yes':
|
||||||
|
jni_components = ['']
|
||||||
|
else:
|
||||||
|
jni_components = jni_components.split(';')
|
||||||
ndkbuild = os.path.join(ndk_path, "ndk-build")
|
ndkbuild = os.path.join(ndk_path, "ndk-build")
|
||||||
p = subprocess.Popen([ndkbuild], cwd=root_dir,
|
for d in jni_components:
|
||||||
stdout=subprocess.PIPE)
|
if options.verbose:
|
||||||
|
print "Running ndk-build in " + root_dir + '/' + d
|
||||||
|
p = subprocess.Popen([ndkbuild], cwd=root_dir + '/' + d,
|
||||||
|
stdout=subprocess.PIPE)
|
||||||
output = p.communicate()[0]
|
output = p.communicate()[0]
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
print output
|
print output
|
||||||
|
@ -327,9 +335,11 @@ def parse_commandline():
|
||||||
|
|
||||||
return options, args
|
return options, args
|
||||||
|
|
||||||
|
options = None
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
|
global options
|
||||||
# Read configuration...
|
# Read configuration...
|
||||||
execfile('config.py', globals())
|
execfile('config.py', globals())
|
||||||
options, args = parse_commandline()
|
options, args = parse_commandline()
|
||||||
|
|
13
common.py
13
common.py
|
@ -687,7 +687,7 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
|
||||||
raise BuildException("Error running init command")
|
raise BuildException("Error running init command")
|
||||||
|
|
||||||
# Generate (or update) the ant build file, build.xml...
|
# Generate (or update) the ant build file, build.xml...
|
||||||
if (build.get('update', 'yes') != 'no' and
|
if (build.get('update', '.') != 'no' and
|
||||||
not build.has_key('maven')):
|
not build.has_key('maven')):
|
||||||
parms = [os.path.join(sdk_path, 'tools', 'android'),
|
parms = [os.path.join(sdk_path, 'tools', 'android'),
|
||||||
'update', 'project', '-p', '.']
|
'update', 'project', '-p', '.']
|
||||||
|
@ -695,14 +695,17 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
|
||||||
if build.has_key('target'):
|
if build.has_key('target'):
|
||||||
parms.append('-t')
|
parms.append('-t')
|
||||||
parms.append(build['target'])
|
parms.append(build['target'])
|
||||||
|
update_dirs = build.get('update', '.').split(';')
|
||||||
# Force build.xml update if necessary...
|
# Force build.xml update if necessary...
|
||||||
if build.get('update', 'yes') == 'force' or build.has_key('target'):
|
if build.get('update', '.') == 'force' or build.has_key('target'):
|
||||||
|
update_dirs = ['.']
|
||||||
buildxml = os.path.join(root_dir, 'build.xml')
|
buildxml = os.path.join(root_dir, 'build.xml')
|
||||||
if os.path.exists(buildxml):
|
if os.path.exists(buildxml):
|
||||||
print 'Force-removing old build.xml'
|
print 'Force-removing old build.xml'
|
||||||
os.remove(buildxml)
|
os.remove(buildxml)
|
||||||
if subprocess.call(parms, cwd=root_dir) != 0:
|
for d in update_dirs:
|
||||||
raise BuildException("Failed to update project")
|
if subprocess.call(parms, cwd=root_dir + '/' + d) != 0:
|
||||||
|
raise BuildException("Failed to update project")
|
||||||
|
|
||||||
# If the app has ant set up to sign the release, we need to switch
|
# If the app has ant set up to sign the release, we need to switch
|
||||||
# that off, because we want the unsigned apk...
|
# that off, because we want the unsigned apk...
|
||||||
|
@ -974,7 +977,7 @@ def scan_source(build_dir, root_dir, thisbuild):
|
||||||
# Presence of a jni directory without buildjni=yes might
|
# Presence of a jni directory without buildjni=yes might
|
||||||
# indicate a problem...
|
# indicate a problem...
|
||||||
if (os.path.exists(os.path.join(root_dir, 'jni')) and
|
if (os.path.exists(os.path.join(root_dir, 'jni')) and
|
||||||
thisbuild.get('buildjni', 'no') == 'no'):
|
thisbuild.get('buildjni') is None):
|
||||||
msg = 'Found jni directory, but buildjni is not enabled'
|
msg = 'Found jni directory, but buildjni is not enabled'
|
||||||
problems.append(msg)
|
problems.append(msg)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue