changeset 21634:0a2fc09f6ed6

mx: make dependency omission more strict so that a distribution that lists a non-existent project is detected
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Mon, 01 Jun 2015 15:24:37 +0200
parents 9966b358bc2b
children b311a60991da
files mxtool/mx.py
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mxtool/mx.py	Mon Jun 01 15:14:20 2015 +0200
+++ b/mxtool/mx.py	Mon Jun 01 15:24:37 2015 +0200
@@ -1214,6 +1214,7 @@
         #
         # Removed projects and libraries are also removed from
         # distributions in they are listed as dependencies.
+        ommittedDeps = set()
         for d in sorted_deps(includeLibs=True):
             if d.isLibrary():
                 if d.optional:
@@ -1226,11 +1227,13 @@
                         d.optional = True
                     if not path:
                         logv('[omitting optional library {0} as {1} does not exist]'.format(d, d.path))
+                        ommittedDeps.add(d.name)
                         del _libs[d.name]
                         self.libs.remove(d)
             elif d.isProject():
                 if java(d.javaCompliance, cancel='some projects will be omitted which may result in errrors') is None:
                     logv('[omitting project {0} as Java compliance {1} cannot be satisfied by configured JDKs]'.format(d, d.javaCompliance))
+                    ommittedDeps.add(d.name)
                     del _projects[d.name]
                     self.projects.remove(d)
                 else:
@@ -1240,17 +1243,19 @@
                             if not jreLib.is_present_in_jdk(java(d.javaCompliance)):
                                 if jreLib.optional:
                                     logv('[omitting project {0} as dependency {1} is missing]'.format(d, name))
+                                    ommittedDeps.add(d.name)
                                     del _projects[d.name]
                                     self.projects.remove(d)
                                 else:
                                     abort('JRE library {0} required by {1} not found'.format(jreLib, d))
                         elif not dependency(name, fatalIfMissing=False):
                             logv('[omitting project {0} as dependency {1} is missing]'.format(d, name))
+                            ommittedDeps.add(d.name)
                             del _projects[d.name]
                             self.projects.remove(d)
         for dist in _dists.itervalues():
             for name in list(dist.deps):
-                if not dependency(name, fatalIfMissing=False):
+                if name in ommittedDeps:
                     logv('[omitting {0} from distribution {1}]'.format(name, dist))
                     dist.deps.remove(name)