# HG changeset patch # User Doug Simon # Date 1363949322 -3600 # Node ID 39c7142e7aefab9da72b0387e8d4013b5a6282c0 # Parent 79539d508429fb4bde4f6f5a7f1edda4a722f7c6 added support for projects that extend a package defined in another project when canonicalizing projects diff -r 79539d508429 -r 39c7142e7aef mx/projects --- a/mx/projects Fri Mar 22 11:26:08 2013 +0100 +++ b/mx/projects Fri Mar 22 11:48:42 2013 +0100 @@ -118,7 +118,7 @@ # graal.hotspot.test project@com.oracle.graal.hotspot.test@subDir=graal project@com.oracle.graal.hotspot.test@sourceDirs=src -project@com.oracle.graal.hotspot.test@dependencies=com.oracle.graal.hotspot,com.oracle.graal.compiler.test,com.oracle.graal.replacements.test +project@com.oracle.graal.hotspot.test@dependencies=com.oracle.graal.replacements.test,com.oracle.graal.hotspot project@com.oracle.graal.hotspot.test@checkstyle=com.oracle.graal.graph project@com.oracle.graal.hotspot.test@javaCompliance=1.7 diff -r 79539d508429 -r 39c7142e7aef mxtool/mx.py --- a/mxtool/mx.py Fri Mar 22 11:26:08 2013 +0100 +++ b/mxtool/mx.py Fri Mar 22 11:48:42 2013 +0100 @@ -350,6 +350,7 @@ def _init_packages_and_imports(self): if not hasattr(self, '_defined_java_packages'): packages = set() + extendedPackages = set() depPackages = set() for d in self.all_deps([], includeLibs=False, includeSelf=False): depPackages.update(d.defined_java_packages()) @@ -363,7 +364,8 @@ if not pkg in depPackages: packages.add(pkg) else: - # A project imports a package already defined by one of it dependencies + # A project extends a package already defined by one of it dependencies + extendedPackages.add(pkg) imports.add(pkg) for n in javaSources: @@ -371,6 +373,7 @@ content = fp.read() imports.update(importRe.findall(content)) self._defined_java_packages = frozenset(packages) + self._extended_java_packages = frozenset(extendedPackages) importedPackages = set() for imp in imports: @@ -390,6 +393,11 @@ self._init_packages_and_imports() return self._defined_java_packages + def extended_java_packages(self): + """Get the immutable set of Java packages extended by the Java sources of this project""" + self._init_packages_and_imports() + return self._extended_java_packages + def imported_java_packages(self): """Get the immutable set of Java packages defined by other Java projects that are imported by the Java sources of this project.""" @@ -1720,6 +1728,8 @@ else: if pkg in dep.defined_java_packages(): ignoredDeps.discard(name) + if pkg in dep.extended_java_packages(): + ignoredDeps.discard(name) if len(ignoredDeps) != 0: candidates = set(); # Compute dependencies based on projects required by p