1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-03 17:50:11 +02:00

Merge commit 'refs/merge-requests/84' of git://gitorious.org/f-droid/fdroidserver into merge-requests/84

This commit is contained in:
Ciaran Gultnieks 2012-03-10 20:01:02 +00:00
commit 8c3ee8ca08
3 changed files with 41 additions and 17 deletions

View File

@ -149,10 +149,18 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, extlib_dir, tmp_dir,
tarball.close()
# 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")
p = subprocess.Popen([ndkbuild], cwd=root_dir,
stdout=subprocess.PIPE)
for d in jni_components:
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]
if p.returncode != 0:
print output
@ -327,9 +335,11 @@ def parse_commandline():
return options, args
options = None
def main():
global options
# Read configuration...
execfile('config.py', globals())
options, args = parse_commandline()

View File

@ -713,7 +713,7 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
raise BuildException("Error running init command")
# 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')):
parms = [os.path.join(sdk_path, 'tools', 'android'),
'update', 'project', '-p', '.']
@ -721,14 +721,17 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
if build.has_key('target'):
parms.append('-t')
parms.append(build['target'])
update_dirs = build.get('update', '.').split(';')
# 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')
if os.path.exists(buildxml):
print 'Force-removing old build.xml'
os.remove(buildxml)
if subprocess.call(parms, cwd=root_dir) != 0:
raise BuildException("Failed to update project")
for d in update_dirs:
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
# that off, because we want the unsigned apk...
@ -1000,7 +1003,7 @@ def scan_source(build_dir, root_dir, thisbuild):
# Presence of a jni directory without buildjni=yes might
# indicate a problem...
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'
problems.append(msg)

View File

@ -614,23 +614,34 @@ build.xml file. Specifying update=no bypasses that.
Specifiying update=force forces rebuilding of the build.xml file at the
same time - this is frequently needed with r14 of the Android platform
tools.
tools. Be aware of any customisations in build.xml when using
update=force.
Be aware of any customisations in build.xml when using update=force.
Otherwise, value can be a semicol-separated list of directories in
which to run 'android update project' relative to the main
application directory (which may include '@code{subdir}' parameter).
Default value is '@code{.}', and passing non-default value may be
useful for multi-component projects. Note that @code{--subprojects}
switch is automatically passed to 'android update project', so using
explicit list may be needed only for peculiar source layouts.
@item initfun=yes
Enables a selection of mad hacks to make com.funambol.android build.
Probably not useful for any other application.
@item buildjni=[no|yes|force]
@item buildjni=[yes|no|<dir list>]
Enables building of native code via the ndk-build script before doing
the main ant build. The default is @code{no}.
the main ant build. The value may be a list of directories relative
to the main application directory in which to run ndk-build, or 'yes'
which corresponds to '.' . Using explicit list may be useful to build
multi-component projects.
The build and scan processes will complain (refuse to build) if this is set
to @code{no}, but there is a @code{jni} directory present. If the native code
is being built by other means, you can specify @code{manual} here to avoid
that. However, if the native code is actually not required, remove the
directory instead.
The build and scan processes will complain (refuse to build) if this
parameter is not defined, but there is a @code{jni} directory present.
If the native code is being built by other means, you can specify
@code{no} here to avoid that. However, if the native code is actually
not required, remove the directory instead (using @code{prebuild} for
example).
@item submodules=yes
Use if the project (git only) has submodules - causes git submodule