mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-06 07:20:29 +03:00
Unify Build and Buildv2 parsing into one
Fixes: * Buildv2 errors * Buildv2 now checks with ordered_flags like Build * Build now has more descriptive exceptions like Buildv2
This commit is contained in:
parent
0da4667bad
commit
7f2c0e27ca
1 changed files with 31 additions and 26 deletions
|
|
@ -64,7 +64,7 @@ app_defaults = {
|
||||||
# manual, they're roughly in order of application.
|
# manual, they're roughly in order of application.
|
||||||
ordered_flags = [
|
ordered_flags = [
|
||||||
'disable', 'commit', 'subdir', 'submodules', 'init',
|
'disable', 'commit', 'subdir', 'submodules', 'init',
|
||||||
'gradle', 'maven', 'output', 'oldsdkloc', 'target',
|
'gradle', 'maven', 'kivy', 'output', 'oldsdkloc', 'target',
|
||||||
'update', 'encoding', 'forceversion', 'forcevercode', 'rm',
|
'update', 'encoding', 'forceversion', 'forcevercode', 'rm',
|
||||||
'extlibs', 'srclibs', 'patch', 'prebuild', 'scanignore',
|
'extlibs', 'srclibs', 'patch', 'prebuild', 'scanignore',
|
||||||
'scandelete', 'build', 'buildjni', 'preassemble', 'bindir',
|
'scandelete', 'build', 'buildjni', 'preassemble', 'bindir',
|
||||||
|
|
@ -484,6 +484,34 @@ def flagtype(name):
|
||||||
#
|
#
|
||||||
def parse_metadata(metafile):
|
def parse_metadata(metafile):
|
||||||
|
|
||||||
|
linedesc = None
|
||||||
|
|
||||||
|
def add_buildflag(p, thisbuild):
|
||||||
|
bv = p.split('=', 1)
|
||||||
|
if len(bv) != 2:
|
||||||
|
raise MetaDataException("Invalid build flag at {0} in {1}".
|
||||||
|
format(buildlines[0], linedesc))
|
||||||
|
pk, pv = bv
|
||||||
|
if pk in thisbuild:
|
||||||
|
raise MetaDataException("Duplicate definition on {0} in version {1} of {2}".
|
||||||
|
format(pk, thisbuild['version'], linedesc))
|
||||||
|
|
||||||
|
pk = pk.lstrip()
|
||||||
|
if pk not in ordered_flags:
|
||||||
|
raise MetaDataException("Unrecognised build flag at {0} in {1}".
|
||||||
|
format(p, linedesc))
|
||||||
|
t = flagtype(pk)
|
||||||
|
if t == 'list':
|
||||||
|
# Port legacy ';' separators
|
||||||
|
thisbuild[pk] = pv.replace(';',',').split(',')
|
||||||
|
elif t == 'string':
|
||||||
|
thisbuild[pk] = pv
|
||||||
|
elif t == 'script':
|
||||||
|
thisbuild[pk] = pv
|
||||||
|
else:
|
||||||
|
raise MetaDataException("Unrecognised build flag type '%s' at %s in %s" % (
|
||||||
|
t, p, linedesc))
|
||||||
|
|
||||||
def parse_buildline(lines):
|
def parse_buildline(lines):
|
||||||
value = "".join(lines)
|
value = "".join(lines)
|
||||||
parts = [p.replace("\\,", ",")
|
parts = [p.replace("\\,", ",")
|
||||||
|
|
@ -508,22 +536,7 @@ def parse_metadata(metafile):
|
||||||
else:
|
else:
|
||||||
thisbuild['commit'] = parts[2]
|
thisbuild['commit'] = parts[2]
|
||||||
for p in parts[3:]:
|
for p in parts[3:]:
|
||||||
pk, pv = p.split('=', 1)
|
add_buildflag(p, thisbuild)
|
||||||
pk = pk.strip()
|
|
||||||
if pk not in ordered_flags:
|
|
||||||
raise MetaDataException("Unrecognised build flag at {0} in {1}".
|
|
||||||
format(p, metafile.name))
|
|
||||||
t = flagtype(pk)
|
|
||||||
if t == 'list':
|
|
||||||
# Port legacy ';' separators
|
|
||||||
thisbuild[pk] = pv.replace(';',',').split(',')
|
|
||||||
elif t == 'string':
|
|
||||||
thisbuild[pk] = pv
|
|
||||||
elif t == 'script':
|
|
||||||
thisbuild[pk] = pv
|
|
||||||
else:
|
|
||||||
raise MetaDataException("Unrecognised build flag type '%s' at %s in %s" % (
|
|
||||||
t, p, metafile.name))
|
|
||||||
|
|
||||||
return thisbuild
|
return thisbuild
|
||||||
|
|
||||||
|
|
@ -583,15 +596,7 @@ def parse_metadata(metafile):
|
||||||
else:
|
else:
|
||||||
buildlines.append(line.lstrip())
|
buildlines.append(line.lstrip())
|
||||||
bl = ''.join(buildlines)
|
bl = ''.join(buildlines)
|
||||||
bv = bl.split('=', 1)
|
add_buildflag(bl, curbuild)
|
||||||
if len(bv) != 2:
|
|
||||||
raise MetaDataException("Invalid build flag at {0} in {1}".
|
|
||||||
format(buildlines[0], linedesc))
|
|
||||||
name, val = bv
|
|
||||||
if name in curbuild:
|
|
||||||
raise MetaDataException("Duplicate definition on {0} in version {1} of {2}".
|
|
||||||
format(name, curbuild['version'], linedesc))
|
|
||||||
curbuild[name] = val.lstrip()
|
|
||||||
buildlines = []
|
buildlines = []
|
||||||
|
|
||||||
if mode == 0:
|
if mode == 0:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue