mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-09 00:40:11 +01:00
Integrate scanning into build
This commit is contained in:
parent
9ba5c8cea8
commit
3317cd84d3
9
build.py
9
build.py
@ -127,6 +127,15 @@ for app in apps:
|
|||||||
javacc_path, not refreshed_source)
|
javacc_path, not refreshed_source)
|
||||||
refreshed_source = True
|
refreshed_source = True
|
||||||
|
|
||||||
|
# Scan before building...
|
||||||
|
buildprobs = common.scan_source(build_dir)
|
||||||
|
if len(buildprobs) > 0:
|
||||||
|
print 'Scanner found ' + str(len(buildprobs)) + ' problems:'
|
||||||
|
for problem in buildprobs:
|
||||||
|
print '...' + problem
|
||||||
|
raise BuildException("Can't build due to " +
|
||||||
|
str(len(buildprobs)) + " scanned problems")
|
||||||
|
|
||||||
# Build the source tarball right before we build the release...
|
# Build the source tarball right before we build the release...
|
||||||
tarname = app['id'] + '_' + thisbuild['vercode'] + '_src'
|
tarname = app['id'] + '_' + thisbuild['vercode'] + '_src'
|
||||||
tarball = tarfile.open(os.path.join(tmp_dir,
|
tarball = tarfile.open(os.path.join(tmp_dir,
|
||||||
|
39
common.py
39
common.py
@ -890,6 +890,45 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
|
|||||||
return root_dir
|
return root_dir
|
||||||
|
|
||||||
|
|
||||||
|
# Scan the source code in the given directory (and all subdirectories)
|
||||||
|
# and return a list of potential problems.
|
||||||
|
def scan_source(source_dir):
|
||||||
|
|
||||||
|
problems = []
|
||||||
|
|
||||||
|
# Scan for common known non-free blobs:
|
||||||
|
usual_suspects = ['flurryagent',
|
||||||
|
'paypal_mpl',
|
||||||
|
'libgoogleanalytics',
|
||||||
|
'admob-sdk-android',
|
||||||
|
'googleadview',
|
||||||
|
'googleadmobadssdk']
|
||||||
|
for r,d,f in os.walk(build_dir):
|
||||||
|
for curfile in f:
|
||||||
|
for suspect in usual_suspects:
|
||||||
|
if curfile.lower().find(suspect) != -1:
|
||||||
|
msg = 'Found probable non-free blob ' + os.path.join(r, curfile)
|
||||||
|
problems.append(msg)
|
||||||
|
|
||||||
|
# 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') != 'yes'):
|
||||||
|
msg = 'Found jni directory, but buildjni is not enabled'
|
||||||
|
problems.append(msg)
|
||||||
|
|
||||||
|
# Presence of these is not a problem as such, but they
|
||||||
|
# shouldn't be there and mess up our source tarballs...
|
||||||
|
if os.path.exists(os.path.join(root_dir, 'bin')):
|
||||||
|
msg = "There shouldn't be a bin directory"
|
||||||
|
problems.append(msg)
|
||||||
|
if os.path.exists(os.path.join(root_dir, 'gen')):
|
||||||
|
msg = "There shouldn't be a gen directory"
|
||||||
|
problems.append(msg)
|
||||||
|
|
||||||
|
return problems
|
||||||
|
|
||||||
|
|
||||||
class KnownApks:
|
class KnownApks:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
38
scanner.py
38
scanner.py
@ -92,39 +92,11 @@ for app in apps:
|
|||||||
not refreshed_source)
|
not refreshed_source)
|
||||||
refreshed_source = True
|
refreshed_source = True
|
||||||
|
|
||||||
# Scan for common known non-free blobs:
|
# Do the scan...
|
||||||
usual_suspects = ['flurryagent',
|
buildprobs = common.scan_source(build_dir)
|
||||||
'paypal_mpl',
|
for problem in buildprobs:
|
||||||
'libgoogleanalytics',
|
problems.append(problem +
|
||||||
'admob-sdk-android',
|
' in ' + app['id'] + ' ' + thisbuild['version'])
|
||||||
'googleadview',
|
|
||||||
'googleadmobadssdk']
|
|
||||||
for r,d,f in os.walk(build_dir):
|
|
||||||
for curfile in f:
|
|
||||||
for suspect in usual_suspects:
|
|
||||||
if curfile.lower().find(suspect) != -1:
|
|
||||||
msg = 'Found probable non-free blob ' + os.path.join(r, curfile)
|
|
||||||
msg += ' in ' + app['id'] + ' ' + thisbuild['version']
|
|
||||||
problems.append(msg)
|
|
||||||
|
|
||||||
# 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') != 'yes'):
|
|
||||||
msg = 'Found jni directory, but buildjni is not enabled'
|
|
||||||
msg += ' in ' + app['id'] + ' ' + thisbuild['version']
|
|
||||||
problems.append(msg)
|
|
||||||
|
|
||||||
# Presence of these is not a problem as such, but they
|
|
||||||
# shouldn't be there and mess up our source tarballs...
|
|
||||||
if os.path.exists(os.path.join(root_dir, 'bin')):
|
|
||||||
msg = "There shouldn't be a bin directory"
|
|
||||||
msg += ' in ' + app['id'] + ' ' + thisbuild['version']
|
|
||||||
problems.append(msg)
|
|
||||||
if os.path.exists(os.path.join(root_dir, 'gen')):
|
|
||||||
msg = "There shouldn't be a gen directory"
|
|
||||||
msg += ' in ' + app['id'] + ' ' + thisbuild['version']
|
|
||||||
problems.append(msg)
|
|
||||||
|
|
||||||
except BuildException as be:
|
except BuildException as be:
|
||||||
msg = "Could not scan app %s due to BuildException: %s" % (app['id'], be)
|
msg = "Could not scan app %s due to BuildException: %s" % (app['id'], be)
|
||||||
|
Loading…
Reference in New Issue
Block a user