1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
diff -ru --exclude .svn tags/2.0.33/src/gjl trunk/src/gjl
--- tags/2.0.33/src/gjl 2007-05-26 11:10:15.000000000 +0200
+++ trunk/src/gjl 2007-05-28 13:59:52.000000000 +0200
@@ -34,7 +34,7 @@
pkg = unresolved.pop()
resolved.add(pkg)
# dep is in the form of (jar, pkg)
- for dep in pkg.deps():
+ for dep in manager.get_pkg_deps(pkg):
dep_pkg = dep[-1]
p = manager.get_package(dep_pkg)
if p is None:
diff -ru --exclude .svn tags/2.0.33/src/java_config/EnvironmentManager.py trunk/src/java_config/EnvironmentManager.py
--- tags/2.0.33/src/java_config/EnvironmentManager.py 2007-05-26 11:10:15.000000000 +0200
+++ trunk/src/java_config/EnvironmentManager.py 2007-05-28 11:40:03.000000000 +0200
@@ -263,6 +263,19 @@
def build_classpath(self, pkgs):
return self.build_path(pkgs, "CLASSPATH")
+ def get_pkg_deps(self, pkg):
+ """
+ Returns list of package's deps and optional deps.
+ Filters out optional deps that are not present.
+ """
+ deps = pkg.deps();
+ for opt_dep in pkg.opt_deps():
+ p = self.get_package(opt_dep[-1])
+ if p:
+ deps.append(opt_dep)
+
+ return deps
+
def add_dep_classpath(self, pkg, dep, classpath):
pkg_cp = pkg.classpath()
if pkg_cp:
@@ -295,7 +308,7 @@
lpath = pkg.query(query)
self.add_path_elements(lpath, path)
- for dep in pkg.deps():
+ for dep in self.get_pkg_deps(pkg):
p = self.get_package(dep[-1])
if p:
@@ -344,7 +357,7 @@
self.add_pkg_env_vars(pkg, env)
- for dep in pkg.deps():
+ for dep in self.get_pkg_deps(pkg):
p = self.get_package(dep[-1])
if p:
diff -ru --exclude .svn tags/2.0.33/src/java_config/Package.py trunk/src/java_config/Package.py
--- tags/2.0.33/src/java_config/Package.py 2007-05-26 11:10:15.000000000 +0200
+++ trunk/src/java_config/Package.py 2007-05-28 11:36:50.000000000 +0200
@@ -55,11 +55,13 @@
"""
Return all packages this package depends on
"""
- depstr = self.query("DEPEND")
- if depstr:
- return [dep.split("@") for dep in depstr.split(":")]
- else:
- return []
+ return self.__get_deps("DEPEND")
+
+ def opt_deps(self):
+ """
+ Return all packages this package optionally depends on
+ """
+ return self.__get_deps("OPTIONAL_DEPEND")
def provides(self):
"""
@@ -69,5 +71,18 @@
if pv:
return pv.split(" ")
return []
+
+ def __get_deps(self, query):
+ """
+ Internal function to get package's (optional) dependencies;
+ @param query: variable to read from package.env
+ """
+ depstr = self.query(query)
+ if depstr:
+ return [dep.split("@") for dep in depstr.split(":")]
+ else:
+ return []
+
+
# vim:set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap:
diff -ru --exclude .svn tags/2.0.33/src/java_config/VersionManager.py trunk/src/java_config/VersionManager.py
--- tags/2.0.33/src/java_config/VersionManager.py 2007-05-26 11:10:15.000000000 +0200
+++ trunk/src/java_config/VersionManager.py 2007-05-27 17:43:01.000000000 +0200
@@ -127,6 +127,7 @@
prefs = self.get_prefs()
+ # first try to find vm based on preferences
low = self.get_lowest(atoms) # Lowest vm version we can use
for atom in matched_atoms:
for pref in prefs:
@@ -143,12 +144,14 @@
else:
return gvm # use it!
- low = self.get_lowest_atom(matched_atoms)
- vm = self.find_vm("", low)
- if vm:
- return vm
- else:
- raise Exception("Couldn't find suitable VM. Possible invalid dependency string.")
+ # no match in preferences, find anything we have
+ for atom in matched_atoms:
+ vm = self.find_vm("", atom)
+ if vm:
+ return vm
+
+ # nothing found
+ raise Exception("Couldn't find suitable VM. Possible invalid dependency string.")
def find_vm(self, vm, atom):
vm_list = EnvironmentManager().find_vm(vm)
|