# HG changeset patch # User Bernhard Urban # Date 1410162367 -7200 # Node ID a5dc5513ce85f8992f84cd29e5aaea628d1ccc6a # Parent 97d0508b7cf1399d55099c15c9389bd43b0b1c75 mx: add check for compliance level of a distribution diff -r 97d0508b7cf1 -r a5dc5513ce85 mx/projects --- a/mx/projects Sat Sep 06 17:20:11 2014 +0100 +++ b/mx/projects Mon Sep 08 09:46:07 2014 +0200 @@ -103,6 +103,7 @@ distribution@TRUFFLE@path=build/truffle.jar distribution@TRUFFLE@subDir=graal distribution@TRUFFLE@sourcesPath=build/truffle.src.zip +distribution@TRUFFLE@javaCompliance=1.7 distribution@TRUFFLE@dependencies=\ com.oracle.truffle.api.dsl,\ com.oracle.nfi @@ -119,6 +120,7 @@ distribution@TRUFFLE-DSL-PROCESSOR@path=build/truffle-dsl-processor.jar distribution@TRUFFLE-DSL-PROCESSOR@subDir=graal distribution@TRUFFLE-DSL-PROCESSOR@sourcesPath=build/truffle-dsl-processor.src.zip +distribution@TRUFFLE-DSL-PROCESSOR@javaCompliance=1.7 distribution@TRUFFLE-DSL-PROCESSOR@dependencies=\ com.oracle.truffle.dsl.processor distribution@TRUFFLE-DSL-PROCESSOR@distDependencies=TRUFFLE diff -r 97d0508b7cf1 -r a5dc5513ce85 mxtool/mx.py --- a/mxtool/mx.py Sat Sep 06 17:20:11 2014 +0100 +++ b/mxtool/mx.py Mon Sep 08 09:46:07 2014 +0200 @@ -64,7 +64,7 @@ A distribution is a jar or zip file containing the output from one or more Java projects. """ class Distribution: - def __init__(self, suite, name, path, sourcesPath, deps, mainClass, excludedDependencies, distDependencies): + def __init__(self, suite, name, path, sourcesPath, deps, mainClass, excludedDependencies, distDependencies, javaCompliance): self.suite = suite self.name = name self.path = path.replace('/', os.sep) @@ -75,6 +75,7 @@ self.mainClass = mainClass self.excludedDependencies = excludedDependencies self.distDependencies = distDependencies + self.javaCompliance = JavaCompliance(javaCompliance) if javaCompliance else None def sorted_deps(self, includeLibs=False, transitive=False): deps = [] @@ -169,6 +170,10 @@ if isCoveredByDependecy: continue + if self.javaCompliance: + if p.javaCompliance > self.javaCompliance: + abort("Compliance level doesn't match: Distribution {0} requires {1}, but {2} is {3}.".format(self.name, self.javaCompliance, p.name, p.javaCompliance)) + # skip a Java project if its Java compliance level is "higher" than the configured JDK jdk = java(p.javaCompliance) assert jdk @@ -930,7 +935,8 @@ mainClass = attrs.pop('mainClass', None) exclDeps = pop_list(attrs, 'exclude') distDeps = pop_list(attrs, 'distDependencies') - d = Distribution(self, name, path, sourcesPath, deps, mainClass, exclDeps, distDeps) + javaCompliance = attrs.pop('javaCompliance', None) + d = Distribution(self, name, path, sourcesPath, deps, mainClass, exclDeps, distDeps, javaCompliance) d.__dict__.update(attrs) self.dists.append(d) @@ -955,7 +961,8 @@ mainClass = None exclDeps = [] distDeps = [] - d = Distribution(self, dname, path, sourcesPath, deps, mainClass, exclDeps, distDeps) + javaCompliance = None + d = Distribution(self, dname, path, sourcesPath, deps, mainClass, exclDeps, distDeps, javaCompliance) d.subDir = os.path.relpath(os.path.dirname(p.dir), self.dir) self.dists.append(d) p.definedAnnotationProcessors = annotationProcessors