Mercurial > hg > truffle
diff mx/mx_graal.py @ 14883:54fa8e06831c
Merge.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 17 Mar 2014 16:43:34 +0100 |
parents | 942c4daa9db9 |
children | ff2095ec7bdb |
line wrap: on
line diff
--- a/mx/mx_graal.py Wed Mar 12 02:49:45 2014 +0100 +++ b/mx/mx_graal.py Mon Mar 17 16:43:34 2014 +0100 @@ -718,6 +718,9 @@ if vm is None: vm = _get_vm() + if 'client' in vm and len(platform.mac_ver()[0]) != 0: + mx.abort("Client VM not supported: java launcher on Mac OS X translates '-client' to '-server'") + if cwd is None: cwd = _vm_cwd elif _vm_cwd is not None and _vm_cwd != cwd: @@ -1635,6 +1638,38 @@ valueMap = parser.parse(output.getvalue()) return valueMap +def findbugs(args): + '''run FindBugs against non-test Java projects''' + findBugsHome = mx.get_env('FINDBUGS_HOME', None) + if findBugsHome: + findbugsJar = join(findBugsHome, 'lib', 'findbugs.jar') + else: + findbugsLib = join(_graal_home, 'lib', 'findbugs-3.0.0') + if not exists(findbugsLib): + tmp = tempfile.mkdtemp(prefix='findbugs-download-tmp', dir=_graal_home) + try: + findbugsDist = join(tmp, 'findbugs.zip') + mx.download(findbugsDist, ['http://sourceforge.net/projects/findbugs/files/findbugs/3.0.0/findbugs-3.0.0-dev-20131204-e3cbbd5.zip']) + with zipfile.ZipFile(findbugsDist) as zf: + candidates = [e for e in zf.namelist() if e.endswith('/lib/findbugs.jar')] + assert len(candidates) == 1, candidates + libDirInZip = os.path.dirname(candidates[0]) + zf.extractall(tmp) + shutil.copytree(join(tmp, libDirInZip), findbugsLib) + finally: + shutil.rmtree(tmp) + findbugsJar = join(findbugsLib, 'findbugs.jar') + assert exists(findbugsJar) + nonTestProjects = [p for p in mx.projects() if not p.name.endswith('.test') and not p.name.endswith('.jtt')] + outputDirs = [p.output_dir() for p in nonTestProjects] + findbugsResults = join(_graal_home, 'findbugs.results') + exitcode = mx.run_java(['-jar', findbugsJar, '-textui', '-low', '-maxRank', '15', '-exclude', join(_graal_home, 'graal', 'findbugsExcludeFilter.xml'), + '-auxclasspath', mx.classpath([p.name for p in nonTestProjects]), '-output', findbugsResults, '-progress', '-exitcode'] + args + outputDirs, nonZeroIsFatal=False) + if exitcode != 0: + with open(findbugsResults) as fp: + mx.log(fp.read()) + os.unlink(findbugsResults) + return exitcode def mx_init(suite): commands = { @@ -1643,6 +1678,7 @@ 'buildvms': [buildvms, '[-options]'], 'c1visualizer' : [c1visualizer, ''], 'clean': [clean, ''], + 'findbugs': [findbugs, ''], 'generateZshCompletion' : [generateZshCompletion, ''], 'hsdis': [hsdis, '[att]'], 'hcfdis': [hcfdis, ''],