support configing buildserver VM per-build with sudo=

This adds the 'sudo' build field, which is just a script that is run as
root.  For more info, see the issue that this closes:

refs #318
closes #317
This commit is contained in:
Hans-Christoph Steiner 2017-06-28 23:01:45 +02:00
parent 747ac52a62
commit dfb07808d3
9 changed files with 138 additions and 14 deletions

View File

@ -30,5 +30,6 @@ metadata_v0:
-e \"/Description: ''/d\"
-e '/antifeatures:/d'
-e '/buildozer:/d'
-e '/sudo:/d'
metadata/dump_*/*.yaml"
- diff -uw metadata/dump_*

View File

@ -393,10 +393,23 @@ def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, ext
# create ..._toolsversion.log when running in builder vm
if onserver:
# before doing anything, run the sudo commands to setup the VM
if build.sudo:
logging.info("Running 'sudo' commands in %s" % os.getcwd())
p = FDroidPopen(['sudo', 'bash', '-x', '-c', build.sudo])
if p.returncode != 0:
raise BuildException("Error running sudo command for %s:%s" %
(app.id, build.versionName), p.output)
log_path = os.path.join(log_dir,
common.get_toolsversion_logname(app, build))
with open(log_path, 'w') as f:
f.write(get_android_tools_version_log(build.ndk_path()))
else:
if build.sudo:
logging.warning('%s:%s runs this on the buildserver with sudo:\n\t%s'
% (app.id, build.versionName, build.sudo))
# Prepare the source code...
root_dir, srclibpaths = common.prepare_source(vcs, app, build,

View File

@ -1317,21 +1317,21 @@ def getsrclib(spec, srclib_dir, subdir=None, basepath=False,
gradle_version_regex = re.compile(r"[^/]*'com\.android\.tools\.build:gradle:([^\.]+\.[^\.]+).*'.*")
# Prepare the source code for a particular build
# 'vcs' - the appropriate vcs object for the application
# 'app' - the application details from the metadata
# 'build' - the build details from the metadata
# 'build_dir' - the path to the build directory, usually
# 'build/app.id'
# 'srclib_dir' - the path to the source libraries directory, usually
# 'build/srclib'
# 'extlib_dir' - the path to the external libraries directory, usually
# 'build/extlib'
# Returns the (root, srclibpaths) where:
# '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, srclib_dir, extlib_dir, onserver=False, refresh=True):
""" Prepare the source code for a particular build
:param vcs: the appropriate vcs object for the application
:param app: the application details from the metadata
:param build: the build details from the metadata
:param build_dir: the path to the build directory, usually 'build/app.id'
:param srclib_dir: the path to the source libraries directory, usually 'build/srclib'
:param extlib_dir: the path to the external libraries directory, usually 'build/extlib'
Returns the (root, srclibpaths) where:
:param root: is the root directory, which may be the same as 'build_dir' or may
be a subdirectory of it.
:param srclibpaths: is information on the srclibs being used
"""
# Optionally, the actual app source can be in a subdirectory
if build.subdir:

View File

@ -204,6 +204,7 @@ build_flags_order = [
'commit',
'subdir',
'submodules',
'sudo',
'init',
'patch',
'gradle',
@ -246,6 +247,7 @@ class Build(dict):
self.commit = None
self.subdir = None
self.submodules = False
self.sudo = ''
self.init = ''
self.patch = []
self.gradle = []
@ -333,6 +335,7 @@ flagtypes = {
'gradle': TYPE_LIST,
'antcommands': TYPE_LIST,
'gradleprops': TYPE_LIST,
'sudo': TYPE_SCRIPT,
'init': TYPE_SCRIPT,
'prebuild': TYPE_SCRIPT,
'build': TYPE_SCRIPT,

View File

@ -29,6 +29,7 @@ Build:1.4,5
Build:1.5,6
commit=v1.5
gradle=yes
sudo=echo 'this is just a test'
Archive Policy:4 versions
Auto Update Mode:Version v%v

View File

@ -69,6 +69,7 @@ builds:
srclibs: []
subdir: null
submodules: false
sudo: ''
target: android-10
versionCode: '3'
versionName: '1.2'
@ -102,6 +103,7 @@ builds:
srclibs: []
subdir: null
submodules: false
sudo: ''
target: android-15
versionCode: '4'
versionName: '1.3'
@ -135,6 +137,7 @@ builds:
srclibs: []
subdir: null
submodules: false
sudo: ''
target: android-10
versionCode: '5'
versionName: '1.4'
@ -169,6 +172,7 @@ builds:
srclibs: []
subdir: null
submodules: false
sudo: echo 'this is just a test'
target: null
versionCode: '6'
versionName: '1.5'

View File

@ -90,6 +90,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '13'
versionName: '1.12'
@ -125,6 +126,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '16'
versionName: '1.15'
@ -160,6 +162,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '19'
versionName: '1.18'
@ -195,6 +198,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '20'
versionName: '1.19'
@ -230,6 +234,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '21'
versionName: '1.20'
@ -265,6 +270,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '22'
versionName: '1.21'
@ -298,6 +304,7 @@ builds:
srclibs: []
subdir: null
submodules: false
sudo: ''
target: null
versionCode: '24'
versionName: '1.23'
@ -332,6 +339,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '25'
versionName: '1.24'
@ -366,6 +374,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '26'
versionName: '1.25'
@ -400,6 +409,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '27'
versionName: '1.26'
@ -434,6 +444,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '28'
versionName: '1.27'
@ -468,6 +479,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '30'
versionName: '1.29'
@ -502,6 +514,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '33'
versionName: '1.32'
@ -535,6 +548,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '34'
versionName: '1.33'
@ -569,6 +583,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '35'
versionName: '1.34'
@ -603,6 +618,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '36'
versionName: '1.35'
@ -637,6 +653,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '37'
versionName: '1.36'
@ -671,6 +688,7 @@ builds:
srclibs: []
subdir: org_adaway/
submodules: false
sudo: ''
target: null
versionCode: '38'
versionName: '1.37'
@ -717,6 +735,7 @@ builds:
- RootCommands@c940b0e503
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '40'
versionName: '2.1'
@ -763,6 +782,7 @@ builds:
- RootCommands@c940b0e503
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '42'
versionName: '2.3'
@ -799,6 +819,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '45'
versionName: '2.6'
@ -835,6 +856,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '46'
versionName: '2.7'
@ -871,6 +893,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '47'
versionName: '2.8'
@ -907,6 +930,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '48'
versionName: 2.8.1
@ -943,6 +967,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '49'
versionName: '2.9'
@ -979,6 +1004,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '50'
versionName: 2.9.1
@ -1015,6 +1041,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '51'
versionName: 2.9.2
@ -1051,6 +1078,7 @@ builds:
srclibs: []
subdir: AdAway
submodules: false
sudo: ''
target: null
versionCode: '52'
versionName: '3.0'

View File

@ -98,6 +98,7 @@ builds:
- AospMms@android-5.1.0_r3
subdir: null
submodules: false
sudo: ''
target: null
versionCode: '5'
versionName: 0.3.3
@ -135,6 +136,7 @@ builds:
- GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '6'
versionName: 0.3.3
@ -171,6 +173,7 @@ builds:
srclibs: []
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '9'
versionName: 0.4.2
@ -207,6 +210,7 @@ builds:
srclibs: []
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '11'
versionName: 0.5.1
@ -242,6 +246,7 @@ builds:
srclibs: []
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '12'
versionName: 0.5.2
@ -277,6 +282,7 @@ builds:
srclibs: []
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '100'
versionName: 0.5.3
@ -312,6 +318,7 @@ builds:
srclibs: []
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '101'
versionName: 0.5.4
@ -347,6 +354,7 @@ builds:
srclibs: []
subdir: null
submodules: true
sudo: ''
target: null
versionCode: '102'
versionName: 0.6.0

View File

@ -91,6 +91,7 @@ builds:
srclibs: []
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '110'
versionName: 0.0.11-ARMv7
@ -127,6 +128,7 @@ builds:
srclibs: []
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '111'
versionName: 0.0.11-ARM
@ -163,6 +165,7 @@ builds:
srclibs: []
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '112'
versionName: 0.0.11-x86
@ -199,6 +202,7 @@ builds:
srclibs: []
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '113'
versionName: 0.0.11-mips
@ -234,6 +238,7 @@ builds:
- VLC@7c52aacbe
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1301'
versionName: 0.1.3-MIPS
@ -269,6 +274,7 @@ builds:
- VLC@7c52aacbe
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1302'
versionName: 0.1.3-x86
@ -304,6 +310,7 @@ builds:
- VLC@7c52aacbe
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1303'
versionName: 0.1.3-ARM
@ -339,6 +346,7 @@ builds:
- VLC@7c52aacbe
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1304'
versionName: 0.1.3-ARMv7
@ -373,6 +381,7 @@ builds:
- VLC@31ffb20309264994
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9002'
versionName: 0.9.0
@ -407,6 +416,7 @@ builds:
- VLC@31ffb20309264994
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9004'
versionName: 0.9.0
@ -441,6 +451,7 @@ builds:
- VLC@37e886d113b8b567c15208579fb2f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9102'
versionName: 0.9.1
@ -475,6 +486,7 @@ builds:
- VLC@37e886d113b8b567c15208579fb2f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9104'
versionName: 0.9.1
@ -509,6 +521,7 @@ builds:
- VLC@052600173f376ff58ff04d53746961a2
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9502'
versionName: 0.9.5
@ -543,6 +556,7 @@ builds:
- VLC@052600173f376ff58ff04d53746961a2
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9504'
versionName: 0.9.5
@ -577,6 +591,7 @@ builds:
- VLC-2.2@27f4799
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9602'
versionName: 0.9.6
@ -611,6 +626,7 @@ builds:
- VLC-2.2@27f4799
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9604'
versionName: 0.9.6
@ -645,6 +661,7 @@ builds:
- VLC-2.2@9e1c6ff
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9702'
versionName: 0.9.7
@ -679,6 +696,7 @@ builds:
- VLC-2.2@9e1c6ff
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9704'
versionName: 0.9.7
@ -713,6 +731,7 @@ builds:
- VLC-2.2@57cd36b
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9711'
versionName: 0.9.7.1
@ -747,6 +766,7 @@ builds:
- VLC-2.2@57cd36b
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9712'
versionName: 0.9.7.1
@ -781,6 +801,7 @@ builds:
- VLC-2.2@57cd36b
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9714'
versionName: 0.9.7.1
@ -815,6 +836,7 @@ builds:
- VLC-2.2@f2db364
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9802'
versionName: 0.9.8
@ -849,6 +871,7 @@ builds:
- VLC-2.2@f2db364
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9803'
versionName: 0.9.8
@ -883,6 +906,7 @@ builds:
- VLC-2.2@f2db364
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9804'
versionName: 0.9.8
@ -917,6 +941,7 @@ builds:
- VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9902'
versionName: 0.9.9
@ -951,6 +976,7 @@ builds:
- VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9903'
versionName: 0.9.9
@ -985,6 +1011,7 @@ builds:
- VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '9904'
versionName: 0.9.9
@ -1019,6 +1046,7 @@ builds:
- VLC-2.2@e33e5de
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10002'
versionName: 0.9.10
@ -1053,6 +1081,7 @@ builds:
- VLC-2.2@e33e5de
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10003'
versionName: 0.9.10
@ -1087,6 +1116,7 @@ builds:
- VLC-2.2@e33e5de
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10004'
versionName: 0.9.10
@ -1121,6 +1151,7 @@ builds:
- VLC-2.2@036010e
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10006'
versionName: 1.0.0
@ -1155,6 +1186,7 @@ builds:
- VLC-2.2@036010e
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10007'
versionName: 1.0.0
@ -1189,6 +1221,7 @@ builds:
- VLC-2.2@036010e
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10008'
versionName: 1.0.0
@ -1223,6 +1256,7 @@ builds:
- VLC-2.2@59409d5
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10102'
versionName: 1.0.1
@ -1257,6 +1291,7 @@ builds:
- VLC-2.2@59409d5
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10103'
versionName: 1.0.1
@ -1291,6 +1326,7 @@ builds:
- VLC-2.2@59409d5
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '10104'
versionName: 1.0.1
@ -1327,6 +1363,7 @@ builds:
- VLC@a9b19e4
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010303'
versionName: 1.1.3
@ -1363,6 +1400,7 @@ builds:
- VLC@a9b19e4
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010304'
versionName: 1.1.3
@ -1399,6 +1437,7 @@ builds:
- VLC@a9b19e4
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010305'
versionName: 1.1.3
@ -1435,6 +1474,7 @@ builds:
- VLC@e6b4585
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010503'
versionName: 1.1.5
@ -1471,6 +1511,7 @@ builds:
- VLC@e6b4585
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010504'
versionName: 1.1.5
@ -1507,6 +1548,7 @@ builds:
- VLC@e6b4585
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010505'
versionName: 1.1.5
@ -1543,6 +1585,7 @@ builds:
- VLC@551b670
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010603'
versionName: 1.1.6
@ -1579,6 +1622,7 @@ builds:
- VLC@551b670
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010604'
versionName: 1.1.6
@ -1615,6 +1659,7 @@ builds:
- VLC@551b670
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1010605'
versionName: 1.1.6
@ -1651,6 +1696,7 @@ builds:
- VLC@23c8d86
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020003'
versionName: 1.2.0
@ -1687,6 +1733,7 @@ builds:
- VLC@23c8d86
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020004'
versionName: 1.2.0
@ -1723,6 +1770,7 @@ builds:
- VLC@23c8d86
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020005'
versionName: 1.2.0
@ -1759,6 +1807,7 @@ builds:
- VLC@23c8d86
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020103'
versionName: 1.2.1
@ -1795,6 +1844,7 @@ builds:
- VLC@23c8d86
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020104'
versionName: 1.2.1
@ -1831,6 +1881,7 @@ builds:
- VLC@23c8d86
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020105'
versionName: 1.2.1
@ -1867,6 +1918,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020203'
versionName: 1.2.2
@ -1903,6 +1955,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020204'
versionName: 1.2.2
@ -1939,6 +1992,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020205'
versionName: 1.2.2
@ -1975,6 +2029,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020303'
versionName: 1.2.3
@ -2011,6 +2066,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020304'
versionName: 1.2.3
@ -2047,6 +2103,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020305'
versionName: 1.2.3
@ -2083,6 +2140,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020403'
versionName: 1.2.4
@ -2119,6 +2177,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020404'
versionName: 1.2.4
@ -2155,6 +2214,7 @@ builds:
- VLC@7491a5f
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020405'
versionName: 1.2.4
@ -2191,6 +2251,7 @@ builds:
- VLC@50accb8
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020503'
versionName: 1.2.5
@ -2227,6 +2288,7 @@ builds:
- VLC@50accb8
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020504'
versionName: 1.2.5
@ -2263,6 +2325,7 @@ builds:
- VLC@50accb8
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1020505'
versionName: 1.2.5
@ -2299,6 +2362,7 @@ builds:
- VLC@d59b81a
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1030003'
versionName: 1.2.6
@ -2335,6 +2399,7 @@ builds:
- VLC@d59b81a
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1030004'
versionName: 1.2.6
@ -2371,6 +2436,7 @@ builds:
- VLC@d59b81a
subdir: vlc-android
submodules: false
sudo: ''
target: null
versionCode: '1030005'
versionName: 1.2.6