# HG changeset patch # User Doug Simon # Date 1404737513 -7200 # Node ID 9fe3cb4630792cd1718a75ec4f0de55edb2e93a5 # Parent 4fe215bc2da508bbf2b88c2a622b896f1a841f51 mx: classpath function now accepts distributions as well (which are prepend to the class path) diff -r 4fe215bc2da5 -r 9fe3cb463079 mx/mx_graal.py --- a/mx/mx_graal.py Mon Jul 07 12:16:36 2014 +0200 +++ b/mx/mx_graal.py Mon Jul 07 14:51:53 2014 +0200 @@ -1899,7 +1899,7 @@ def sl(args): """run an SL program""" vmArgs, slArgs = _extract_VM_args(args) - vm(vmArgs + ['-cp', mx.classpath("com.oracle.truffle.sl"), "com.oracle.truffle.sl.SLMain"] + slArgs) + vm(vmArgs + ['-cp', mx.classpath(["TRUFFLE", "com.oracle.truffle.sl"]), "com.oracle.truffle.sl.SLMain"] + slArgs) def isGraalEnabled(vm): return vm != 'original' and not vm.endswith('nograal') @@ -2075,7 +2075,7 @@ cmd = ['-jar', findbugsJar, '-textui', '-low', '-maxRank', '15'] if sys.stdout.isatty(): cmd.append('-progress') - cmd = cmd + ['-auxclasspath', mx.classpath([p.name for p in nonTestProjects]), '-output', findbugsResults, '-exitcode'] + args + outputDirs + cmd = cmd + ['-auxclasspath', mx.classpath(['GRAAL'] + [p.name for p in nonTestProjects]), '-output', findbugsResults, '-exitcode'] + args + outputDirs exitcode = mx.run_java(cmd, nonZeroIsFatal=False) if exitcode != 0: with open(findbugsResults) as fp: diff -r 4fe215bc2da5 -r 9fe3cb463079 mxtool/mx.py --- a/mxtool/mx.py Mon Jul 07 12:16:36 2014 +0200 +++ b/mxtool/mx.py Mon Jul 07 14:51:53 2014 +0200 @@ -1203,18 +1203,45 @@ def classpath(names=None, resolve=True, includeSelf=True, includeBootClasspath=False): """ - Get the class path for a list of given dependencies, resolving each entry in the + Get the class path for a list of given dependencies and distributions, resolving each entry in the path (e.g. downloading a missing library) if 'resolve' is true. """ if names is None: - result = _as_classpath(sorted_deps(includeLibs=True), resolve) + deps = sorted_deps(includeLibs=True) + dists = list(_dists.values()) else: deps = [] + dists = [] if isinstance(names, types.StringTypes): names = [names] for n in names: - dependency(n).all_deps(deps, True, includeSelf) - result = _as_classpath(deps, resolve) + dep = dependency(n, fatalIfMissing=False) + if dep: + dep.all_deps(deps, True, includeSelf) + else: + dist = distribution(n) + if not dist: + abort('project, library or distribution named ' + n + ' not found') + dists.append(dist) + + if len(dists): + distsDeps = set() + for d in dists: + distsDeps.update(d.sorted_deps()) + + # remove deps covered by a dist that will be on the class path + deps = [d for d in deps if d not in distsDeps] + + result = _as_classpath(deps, resolve) + + # prepend distributions + if len(dists): + distsCp = os.pathsep.join(dist.path for dist in dists) + if len(result): + result = distsCp + os.pathsep + result + else: + result = distsCp + if includeBootClasspath: result = os.pathsep.join([java().bootclasspath(), result]) return result