mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-10 01:10:11 +01:00
Add extra build commands that can run after scan/tarball
Commands used in the 'build' section are for actual building that produces binary output. Some existing stuff will need to move from 'prebuild' to this. See manual for more information.
This commit is contained in:
parent
4b472aed5a
commit
64729ba9fe
@ -772,6 +772,11 @@ insert literal commas, or as the last character on a line to join that
|
|||||||
line with the next. It has no special meaning in other contexts; in
|
line with the next. It has no special meaning in other contexts; in
|
||||||
particular, literal backslashes should not be escaped.
|
particular, literal backslashes should not be escaped.
|
||||||
|
|
||||||
|
Note that nothing should be build during this prebuild phase - scanning
|
||||||
|
of the code and building of the source tarball, for example, take place
|
||||||
|
after this. For custom actions that actually build things, use 'build'
|
||||||
|
instead.
|
||||||
|
|
||||||
You can use $$name$$ to substitute the path to a referenced srclib - see
|
You can use $$name$$ to substitute the path to a referenced srclib - see
|
||||||
the @code{srclib} directory for details of this.
|
the @code{srclib} directory for details of this.
|
||||||
|
|
||||||
@ -785,6 +790,15 @@ takes place.
|
|||||||
You can use $$SDK$$, $$NDK$$ and $$MVN3$$ to substitute the paths to the
|
You can use $$SDK$$, $$NDK$$ and $$MVN3$$ to substitute the paths to the
|
||||||
android SDK and NDK directories, and maven 3 executable respectively.
|
android SDK and NDK directories, and maven 3 executable respectively.
|
||||||
|
|
||||||
|
@item build=xxxx
|
||||||
|
As for 'prebuild', but runs during the actual build phase (but before the
|
||||||
|
main ant/maven build). Use this only for actions that do actual building.
|
||||||
|
Any prepartion of the source code should be done using 'init' or 'prebuild'.
|
||||||
|
|
||||||
|
You can use $$SDK$$, $$NDK$$ and $$MVN3$$ to substitute the paths to the
|
||||||
|
android SDK and NDK directories, and maven 3 executable respectively.
|
||||||
|
|
||||||
|
|
||||||
@item novcheck=yes
|
@item novcheck=yes
|
||||||
Don't check that the version name and code in the resulting apk are
|
Don't check that the version name and code in the resulting apk are
|
||||||
correct by looking at the build output - assume the metadata is
|
correct by looking at the build output - assume the metadata is
|
||||||
|
@ -265,7 +265,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, extlib_dir, tmp_dir,
|
|||||||
"""Do a build locally."""
|
"""Do a build locally."""
|
||||||
|
|
||||||
# Prepare the source code...
|
# Prepare the source code...
|
||||||
root_dir = common.prepare_source(vcs, app, thisbuild,
|
root_dir, srclibpaths = common.prepare_source(vcs, app, thisbuild,
|
||||||
build_dir, extlib_dir, sdk_path, ndk_path,
|
build_dir, extlib_dir, sdk_path, ndk_path,
|
||||||
javacc_path, mvn3, verbose)
|
javacc_path, mvn3, verbose)
|
||||||
|
|
||||||
@ -291,6 +291,22 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, extlib_dir, tmp_dir,
|
|||||||
tarball.add(build_dir, tarname, exclude=tarexc)
|
tarball.add(build_dir, tarname, exclude=tarexc)
|
||||||
tarball.close()
|
tarball.close()
|
||||||
|
|
||||||
|
# Run a build command if one is required...
|
||||||
|
if 'build' in thisbuild:
|
||||||
|
prebuild = build['build']
|
||||||
|
# Substitute source library paths into prebuild commands...
|
||||||
|
for name, libpath in srclibpaths:
|
||||||
|
libpath = os.path.relpath(libpath, root_dir)
|
||||||
|
prebuild = prebuild.replace('$$' + name + '$$', libpath)
|
||||||
|
prebuild = prebuild.replace('$$SDK$$', sdk_path)
|
||||||
|
prebuild = prebuild.replace('$$NDK$$', ndk_path)
|
||||||
|
prebuild = prebuild.replace('$$MVN3$$', mvn3)
|
||||||
|
p = subprocess.Popen(prebuild, cwd=root_dir, shell=True,
|
||||||
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
out, err = p.communicate()
|
||||||
|
if p.returncode != 0:
|
||||||
|
raise BuildException("Error running build command", out, err)
|
||||||
|
|
||||||
# Build native stuff if required...
|
# Build native stuff if required...
|
||||||
if thisbuild.get('buildjni') not in (None, 'no'):
|
if thisbuild.get('buildjni') not in (None, 'no'):
|
||||||
jni_components = thisbuild.get('buildjni')
|
jni_components = thisbuild.get('buildjni')
|
||||||
|
@ -1642,8 +1642,10 @@ def getsrclib(spec, extlib_dir, sdk_path, basepath=False):
|
|||||||
# 'javacc_path' - the path to javacc
|
# 'javacc_path' - the path to javacc
|
||||||
# 'mvn3' - the path to the maven 3 executable
|
# 'mvn3' - the path to the maven 3 executable
|
||||||
# 'verbose' - optional: verbose or not (default=False)
|
# 'verbose' - optional: verbose or not (default=False)
|
||||||
# Returns the root directory, which may be the same as 'build_dir' or may
|
# Returns the (root, srclibpaths) where:
|
||||||
# be a subdirectory of it.
|
# 'root' is the root directory, which may be the same as 'build_dir' or may
|
||||||
|
# be a subdirectory of it.
|
||||||
|
# 'srclibpaths' is information on the srclibs being used
|
||||||
def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, javacc_path, mvn3, verbose=False):
|
def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, javacc_path, mvn3, verbose=False):
|
||||||
|
|
||||||
# Optionally, the actual app source can be in a subdirectory...
|
# Optionally, the actual app source can be in a subdirectory...
|
||||||
@ -1970,7 +1972,7 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
|
|||||||
'build.properties'], cwd=root_dir) !=0:
|
'build.properties'], cwd=root_dir) !=0:
|
||||||
raise BuildException("Failed to amend build.properties")
|
raise BuildException("Failed to amend build.properties")
|
||||||
|
|
||||||
return root_dir
|
return (root_dir, srclibpaths)
|
||||||
|
|
||||||
|
|
||||||
# Scan the source code in the given directory (and all subdirectories)
|
# Scan the source code in the given directory (and all subdirectories)
|
||||||
|
@ -98,7 +98,7 @@ def main():
|
|||||||
print "..scanning version " + thisbuild['version']
|
print "..scanning version " + thisbuild['version']
|
||||||
|
|
||||||
# Prepare the source code...
|
# Prepare the source code...
|
||||||
root_dir = common.prepare_source(vcs, app, thisbuild,
|
root_dir, _ = common.prepare_source(vcs, app, thisbuild,
|
||||||
build_dir, extlib_dir, sdk_path, ndk_path, javacc_path, mvn3, options.verbose)
|
build_dir, extlib_dir, sdk_path, ndk_path, javacc_path, mvn3, options.verbose)
|
||||||
|
|
||||||
# Do the scan...
|
# Do the scan...
|
||||||
|
Loading…
Reference in New Issue
Block a user