changeset 8439:39c7142e7aef

added support for projects that extend a package defined in another project when canonicalizing projects
author Doug Simon <doug.simon@oracle.com>
date Fri, 22 Mar 2013 11:48:42 +0100
parents 79539d508429
children 2d0160c35f8f 83fde86ae759
files mx/projects mxtool/mx.py
diffstat 2 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- 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