1
0
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:
Ciaran Gultnieks 2012-02-02 22:13:31 +00:00
parent 9ba5c8cea8
commit 3317cd84d3
3 changed files with 53 additions and 33 deletions

View File

@ -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,

View File

@ -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):

View File

@ -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)