mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
Some more build capabilities, and an optimisation for SVN when doing tag checkouts
This commit is contained in:
parent
ed8f0ca147
commit
a855e38fff
4
README
4
README
@ -118,6 +118,10 @@ configuration to the build. These are:
|
||||
AndroidManifest.xml.
|
||||
antcommand=xxx - Specify an alternate ant command (target) instead of the
|
||||
default 'release'.
|
||||
insertversion=x - If specified, the pattern 'x' in the AndroidManifest.xml is
|
||||
replaced with the version number for the build.
|
||||
insertvercode=x - If specified, the pattern 'x' in the AndroidManifest.xml is
|
||||
replaced with the version code for the build.
|
||||
|
||||
Another example, using extra parameters:
|
||||
|
||||
|
35
build.py
35
build.py
@ -25,6 +25,7 @@ import re
|
||||
import zipfile
|
||||
import tarfile
|
||||
import md5
|
||||
import shlex
|
||||
from xml.dom.minidom import Document
|
||||
from optparse import OptionParser
|
||||
|
||||
@ -125,19 +126,26 @@ for app in apps:
|
||||
|
||||
|
||||
# Optionally, the actual app source can be in a subdirectory...
|
||||
doupdate = True
|
||||
if thisbuild.has_key('subdir'):
|
||||
if app['repotype'] == 'svn' and repo.endswith("*"):
|
||||
root_dir = build_dir
|
||||
if subprocess.call(['svn', 'checkout',
|
||||
repo[:-1] + thisbuild['subdir'],
|
||||
'-r', thisbuild['commit'],
|
||||
build_dir] + repouserargs) != 0:
|
||||
print "Svn checkout failed"
|
||||
sys.exit(1)
|
||||
# Because we're checking out for every version we build,
|
||||
# we've already checked out the repo at the correct revision
|
||||
# and don't need to update to it...
|
||||
doupdate = False
|
||||
else:
|
||||
root_dir = os.path.join(build_dir, thisbuild['subdir'])
|
||||
else:
|
||||
root_dir = build_dir
|
||||
|
||||
if doupdate:
|
||||
if app['repotype'] == 'git':
|
||||
if subprocess.call(['git', 'checkout', thisbuild['commit']],
|
||||
cwd=build_dir) != 0:
|
||||
@ -176,7 +184,7 @@ for app in apps:
|
||||
print "Failed to amend build.properties"
|
||||
sys.exit(1)
|
||||
|
||||
#Update the local.properties file...
|
||||
# Update the local.properties file...
|
||||
locprops = os.path.join(root_dir, 'local.properties')
|
||||
f = open(locprops, 'r')
|
||||
props = f.read()
|
||||
@ -194,11 +202,32 @@ for app in apps:
|
||||
f.write(props)
|
||||
f.close()
|
||||
|
||||
#Delete unwanted file...
|
||||
# Insert version code and number into the manifest if necessary...
|
||||
if thisbuild.has_key('insertversion'):
|
||||
if subprocess.call(['sed','-i','s/' + thisbuild['insertversion'] +
|
||||
'/' + thisbuild['version'] +'/g',
|
||||
'AndroidManifest.xml'], cwd=root_dir) !=0:
|
||||
print "Failed to amend manifest"
|
||||
sys.exit(1)
|
||||
if thisbuild.has_key('insertvercode'):
|
||||
if subprocess.call(['sed','-i','s/' + thisbuild['insertvercode'] +
|
||||
'/' + thisbuild['vercode'] +'/g',
|
||||
'AndroidManifest.xml'], cwd=root_dir) !=0:
|
||||
print "Failed to amend manifest"
|
||||
sys.exit(1)
|
||||
|
||||
# Delete unwanted file...
|
||||
if thisbuild.has_key('rm'):
|
||||
os.remove(os.path.join(build_dir, thisbuild['rm']))
|
||||
|
||||
#Build the source tarball right before we build the relase...
|
||||
# Run a pre-build command if one is required...
|
||||
if thisbuild.has_key('prebuild'):
|
||||
if subprocess.call(shlex.split(thisbuild['prebuild']),
|
||||
cwd=root_dir) != 0:
|
||||
print "Error running pre-build command"
|
||||
sys.exit(1)
|
||||
|
||||
# Build the source tarball right before we build the release...
|
||||
tarname = app['id'] + '_' + thisbuild['vercode'] + '_src'
|
||||
tarball = tarfile.open(os.path.join(built_dir,
|
||||
tarname + '.tar.gz'), "w:gz")
|
||||
|
Loading…
Reference in New Issue
Block a user