aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalph Sennhauser <sera@gentoo.org>2013-02-08 15:40:13 +0000
committerRalph Sennhauser <sera@gentoo.org>2013-02-08 15:40:13 +0000
commit6cdf52cca1f613ec1b9c265687fd333adadcf606 (patch)
tree9d208f843fe10e226a5aa492a191f26ff435dfb0
parentAllow running tests from everywhere (diff)
downloadjava-config-6cdf52cca1f613ec1b9c265687fd333adadcf606.tar.gz
java-config-6cdf52cca1f613ec1b9c265687fd333adadcf606.tar.bz2
java-config-6cdf52cca1f613ec1b9c265687fd333adadcf606.zip
Drop EnvironmentManager singlton hack and so really fix VersionManager to not lock on the active JVM. #402315
svn path=/projects/java-config-2/trunk/; revision=9182
-rwxr-xr-xsrc/depend-java-query2
-rwxr-xr-xsrc/gjl8
-rw-r--r--src/java_config_2/EnvironmentManager.py3
-rw-r--r--src/java_config_2/VersionManager.py84
-rw-r--r--src/java_config_2/Virtual.py2
-rw-r--r--tests/testsuite/VersionManager.py7
-rw-r--r--tests/testsuite2/VersionManager.py4
7 files changed, 48 insertions, 62 deletions
diff --git a/src/depend-java-query b/src/depend-java-query
index 2df5b70..64f7b5d 100755
--- a/src/depend-java-query
+++ b/src/depend-java-query
@@ -66,7 +66,7 @@ if __name__ == '__main__':
global printer, manager, verman
printer = OutputFormatter(True, True)
manager = EnvironmentManager()
- verman = VersionManager()
+ verman = VersionManager(manager)
usage = "depend-java-query [options]\n\n"
usage += "Java Dep Query Utility Version " + str(__version__) + "\n"
diff --git a/src/gjl b/src/gjl
index df185a4..17cd9ea 100755
--- a/src/gjl
+++ b/src/gjl
@@ -25,7 +25,7 @@ atom_parser = re.compile(r"([<>=]+)virtual/(jre|jdk)-([0-9\.*]+)")
def get_needed_target(pkg):
highest_target = ""
needs_jdk = False
- for pkg in get_needed_packages(pkg):
+ for pkg in verman.get_needed_packages(pkg):
pkg_needs_jdk = False
x = pkg.query("TARGET")
try:
@@ -45,7 +45,7 @@ def get_needed_target(pkg):
def get_needed_target2(pkg):
highest_target = ""
needs_jdk = set()
- for pkg in get_needed_packages(pkg):
+ for pkg in verman.get_needed_packages(pkg):
target = pkg.target()
if highest_target < target:
highest_target = target
@@ -76,7 +76,7 @@ def abort(msg):
def get_needed_vms(pkg):
virtuals = set()
vms = set()
- for pkg in get_needed_packages(pkg):
+ for pkg in verman.get_needed_packages(pkg):
try:
x = pkg.query("VM")
if atom_parser.match( x ):
@@ -251,7 +251,7 @@ if __name__ == '__main__':
global printer, manager, verman
printer = OutputFormatter(True, True)
manager = EnvironmentManager()
- verman = VersionManager()
+ verman = VersionManager(manager)
if not options.package:
abort("Too dumb todo anything without -p")
diff --git a/src/java_config_2/EnvironmentManager.py b/src/java_config_2/EnvironmentManager.py
index c26f9ef..dd387bb 100644
--- a/src/java_config_2/EnvironmentManager.py
+++ b/src/java_config_2/EnvironmentManager.py
@@ -488,7 +488,4 @@ class EnvironmentManager(object):
self.set_active_vm(storeVM)
return result
-# Singleton hack
-EnvironmentManager = EnvironmentManager()
-
# vim:set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap:
diff --git a/src/java_config_2/VersionManager.py b/src/java_config_2/VersionManager.py
index 3e568e0..f6f91d4 100644
--- a/src/java_config_2/VersionManager.py
+++ b/src/java_config_2/VersionManager.py
@@ -58,13 +58,10 @@ class VersionManager:
default_pref_file = '/usr/share/java-config-2/config/jdk-defaults.conf'
_prefs = None
- def __init__(self):
- pass
+ def __init__(self, env_manager):
+ self.env_manager = env_manager
def get_prefs(self):
- from java_config_2.EnvironmentManager import EnvironmentManager
- envman = EnvironmentManager()
-
if self._prefs:
return self._prefs
else:
@@ -73,9 +70,9 @@ class VersionManager:
if os.path.exists(self.user_pref_file):
self._prefs += PrefsFileParser(self.user_pref_file).get_config()
# then try system vm
- sys_vm = envman.system_vm_name()
+ sys_vm = self.env_manager.system_vm_name()
if sys_vm is not None:
- self._prefs.append(['*', [sys_vm]])
+ self._prefs.append(['*', [sys_vm]])
# then try the build defaults
if os.path.exists(self.default_pref_file):
self._prefs += PrefsFileParser(self.default_pref_file).get_config()
@@ -194,8 +191,6 @@ class VersionManager:
def get_target_from_pkg_deps(self, matches):
""" Get the lowest virtual machine version from a packages dependencies."""
- from java_config_2.EnvironmentManager import EnvironmentManager
- manager = EnvironmentManager()
highest = None
pkg_name = None
@@ -206,12 +201,12 @@ class VersionManager:
if match['slot'] and match['slot'] != '0':
pkg_name += '-' + match['slot']
try:
- pkg = manager.get_package(pkg_name)
+ pkg = self.manager.get_package(pkg_name)
pkgs.append(pkg)
except:
pass
- deep_pkgs = get_needed_packages(*pkgs)
+ deep_pkgs = self.get_needed_packages(*pkgs)
for pkg in deep_pkgs:
try:
@@ -228,8 +223,6 @@ class VersionManager:
return pkg_name, highest
def get_vm(self, atoms, allow_build_only = False):
- from java_config_2.EnvironmentManager import EnvironmentManager
-
pkg_name, highest_pkg_target = self.get_target_from_pkg_deps(self.parse_depend_packages(atoms))
matched_atoms = self.parse_depend(atoms)
@@ -250,7 +243,7 @@ class VersionManager:
for gvm in self.find_vm(vmProviderString, atom, highest_pkg_target, allow_build_only):
if need_virtual: # Package we are finding a vm for needs a virtual
# New, correct way of searching for virtuals
- if EnvironmentManager().have_provider(need_virtual, gvm, self): # We have a package available that provides it, will use that
+ if self.env_manager.have_provider(need_virtual, gvm, self): # We have a package available that provides it, will use that
return gvm
else:
return gvm # use it!
@@ -260,7 +253,7 @@ class VersionManager:
for atom in matched_atoms:
for gvm in self.find_vm("", atom, highest_pkg_target, allow_build_only):
if need_virtual: # Package we are finding a vm for needs a virtual
- if EnvironmentManager().have_provider(need_virtual, gvm, self):
+ if self.env_manager.have_provider(need_virtual, gvm, self):
return gvm
else:
return gvm
@@ -281,8 +274,7 @@ class VersionManager:
def find_vm(self, vmProviderString, atom, min_package_target, allow_build_only = True):
- from java_config_2.EnvironmentManager import EnvironmentManager
- vm_list = EnvironmentManager().find_vm(vmProviderString)
+ vm_list = self.env_manager.find_vm(vmProviderString)
vm_list.sort()
vm_list.reverse()
for vm in vm_list:
@@ -333,44 +325,40 @@ class VersionManager:
return 0
-def get_needed_packages(*packages):
- from java_config_2.EnvironmentManager import EnvironmentManager
-
- manager = EnvironmentManager()
-
- unresolved = set()
- for package in packages:
- unresolved.add(package)
-
- resolved = set()
-
- while len(unresolved) > 0:
- pkg = unresolved.pop()
- resolved.add(pkg)
- # dep is in the form of (jar, pkg)
- for dep in manager.get_pkg_deps(pkg):
- dep_pkg = dep[-1]
- p = manager.get_package(dep_pkg)
- if p is None:
- if ',' in dep_pkg:
- msg = """
+ def get_needed_packages(self, *packages):
+ unresolved = set()
+ for package in packages:
+ unresolved.add(package)
+
+ resolved = set()
+
+ while len(unresolved) > 0:
+ pkg = unresolved.pop()
+ resolved.add(pkg)
+ # dep is in the form of (jar, pkg)
+ for dep in self.env_manager.get_pkg_deps(pkg):
+ dep_pkg = dep[-1]
+ p = self.env_manager.get_package(dep_pkg)
+ if p is None:
+ if ',' in dep_pkg:
+ msg = """
Package %s has a broken DEPEND entry in package.env. Please reinstall it.
If this does not fix it, please report this to http://bugs.gentoo.org
"""
- msg = msg % pkg
- else:
- msg = """
+ msg = msg % pkg
+ else:
+ msg = """
Package %s not found in the system. This package is listed as a
dependency of %s. Please run emerge -1Da %s and if it does not bring in the
needed dependency, report this to http://bugs.gentoo.org.
"""
- msg = msg % (dep_pkg,pkg,pkg)
- abort(msg)
-
- if p not in resolved:
- unresolved.add(p)
-
- return resolved
+ msg = msg % (dep_pkg,pkg,pkg)
+ abort(msg)
+
+ if p not in resolved:
+ unresolved.add(p)
+
+ return resolved
#vator=VersionManager()
#for i in [
diff --git a/src/java_config_2/Virtual.py b/src/java_config_2/Virtual.py
index 30f6431..ea862d4 100644
--- a/src/java_config_2/Virtual.py
+++ b/src/java_config_2/Virtual.py
@@ -65,7 +65,7 @@ class Virtual(Package):
if not element in self._packages:
self._packages.append(element)
- verman = VersionManager()
+ verman = VersionManager(self._manager)
vmachines = self._manager.get_virtual_machines()
for vm in vmachines:
if verman.version_satisfies(" ".join(vms), vmachines[vm]):
diff --git a/tests/testsuite/VersionManager.py b/tests/testsuite/VersionManager.py
index c5c69bd..4c9d1a5 100644
--- a/tests/testsuite/VersionManager.py
+++ b/tests/testsuite/VersionManager.py
@@ -1,10 +1,11 @@
import unittest
import os
from java_config_2.VersionManager import VersionManager
-from java_config_2.EnvironmentManager import EnvironmentManager as em
+from java_config_2.EnvironmentManager import EnvironmentManager
class TestVersionManager(unittest.TestCase):
- verman = VersionManager()
+ envman = EnvironmentManager()
+ verman = VersionManager(envman)
def setUp(self):
self.example_dep_vanilla = ">=virtual/jdk-1.5* dev-java/ant-core java-virtuals/jaf"
@@ -49,7 +50,7 @@ class TestVersionManager(unittest.TestCase):
self.assertEqual(self.verman.filter_depend(self.example_dep_use), rmatch)
def test_version_satisfies(self):
- vm = em.get_vm('sun-jdk-1.6')
+ vm = self.envman.get_vm('sun-jdk-1.6')
self.assertTrue(self.verman.version_satisfies('>=virtual/jdk-1.5', vm))
self.assertFalse(self.verman.version_satisfies('>=virtual/jdk-1.7', vm))
self.assertTrue(self.verman.version_satisfies('|| ( =virtual/jdk-1.6 =virtual/jdk-1.5 )', vm))
diff --git a/tests/testsuite2/VersionManager.py b/tests/testsuite2/VersionManager.py
index c578dc1..3b5b3ac 100644
--- a/tests/testsuite2/VersionManager.py
+++ b/tests/testsuite2/VersionManager.py
@@ -1,10 +1,10 @@
import unittest
import os
from java_config_2.VersionManager import VersionManager
-from java_config_2.EnvironmentManager import EnvironmentManager as em
+from java_config_2.EnvironmentManager import EnvironmentManager
class TestVersionManager(unittest.TestCase):
- verman = VersionManager()
+ verman = VersionManager(EnvironmentManager())
def test_get_vm(self):
vm = self.verman.get_vm("virtual/jdk:1.6 java-virtuals/jdk-with-com-sun dev-java/ant-contrib:0 app-arch/xz-utils >=dev-java/java-config-2.1.9-r1 source? ( app-arch/zip ) >=dev-java/ant-core-1.7.0 dev-java/ant-nodeps >=dev-java/javatoolkit-0.3.0-r2 >=dev-lang/python-2.4")