aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlistair Bush <ali_bush@gentoo.org>2008-01-13 05:50:44 +0000
committerAlistair Bush <ali_bush@gentoo.org>2008-01-13 05:50:44 +0000
commite0d516e129ebb082634ffb2da7a83395cd73d063 (patch)
treed8210a1eabb151f2ce2ddb1de2400f6868ffb019 /src/java_config_2
parentFxi syntax error. (diff)
downloadjava-config-e0d516e129ebb082634ffb2da7a83395cd73d063.tar.gz
java-config-e0d516e129ebb082634ffb2da7a83395cd73d063.tar.bz2
java-config-e0d516e129ebb082634ffb2da7a83395cd73d063.zip
Added further fixes, now virtuals can handle slot depends etc.
svn path=/projects/java-config-2/trunk/; revision=5915
Diffstat (limited to 'src/java_config_2')
-rw-r--r--src/java_config_2/Errors.py7
-rw-r--r--src/java_config_2/VersionManager.py18
-rw-r--r--src/java_config_2/Virtual.py4
3 files changed, 19 insertions, 10 deletions
diff --git a/src/java_config_2/Errors.py b/src/java_config_2/Errors.py
index d4a870c..564e874 100644
--- a/src/java_config_2/Errors.py
+++ b/src/java_config_2/Errors.py
@@ -40,6 +40,10 @@ class ProviderUnavailableError(Exception):
def vms(self):
return self._vms
+ def __str__(self):
+ return """No provider is available for """ + self._virtual + """
+ Please check your environment."""
+
class MissingOptionalsError(Exception):
"""
Some optional utilities are missing from a valid VM
@@ -57,4 +61,7 @@ class UnexistingPackageError(Exception):
def __init__(self, package):
self.package = package
+ def __str__(self):
+ return "Package %s was not found!" % self.package
+
# 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 a1527aa..e795b28 100644
--- a/src/java_config_2/VersionManager.py
+++ b/src/java_config_2/VersionManager.py
@@ -26,7 +26,8 @@ class VersionManager:
"""
atom_parser = re.compile(r"([<>=]+)virtual/(jre|jdk)-([0-9\.*]+)")
#virtuals_parser = re.compile(r"([<>=]+)?java-virtuals/(.*?)")
- virtuals_parser = re.compile(r"([<>=~]+)?java-virtuals/(.+)[\-:]([0-9\.*]+)")
+ #virtuals_parser = re.compile(r"([<>=~]+)?java-virtuals/(.+)[\-:]([0-9\.*]+)")
+ virtuals_parser = re.compile(r"([<>=~]+)?java-virtuals/([\w\-\.:]+)")
pref_files = ['/etc/java-config-2/build/jdk.conf', '/usr/share/java-config-2/config/jdk-defaults.conf']
_prefs = None
@@ -45,8 +46,10 @@ class VersionManager:
def parse_depend(self, atoms):
"""Filter the dependency string for useful information"""
-
+
+ matched_atoms = []
atoms = self.filter_depend(atoms)
+ #print atoms
matches = self.atom_parser.findall(atoms)
virtuals_matches = self.virtuals_parser.findall(atoms)
@@ -61,7 +64,6 @@ class VersionManager:
def filter_depend( self, atoms ):
"""Filter the dependency string for useful information"""
- new_atoms=""
import os
# gjl does not use use flags
@@ -76,19 +78,19 @@ class VersionManager:
atoms = " ".join(atoms.split())
# Remove conditional depends that are not turned on
- new_atoms = " ".join(flatten(use_reduce(paren_reduce(atoms),uselist=use)))
+ atoms = " ".join(flatten(use_reduce(paren_reduce(atoms),uselist=use)))
except KeyError:
pass
- return new_atoms
+ return atoms
def parse_depend_virtuals(self, atoms):
"""Filter the dependency string for useful information"""
- atoms=self.filter_atoms(atoms)
+ atoms=self.filter_depend(atoms)
virtuals_matches = self.virtuals_parser.findall(atoms)
matched_virtuals = ""
for match in virtuals_matches:
- matched_virtuals += " " + match[1] + "-" + match[2]
+ matched_virtuals += " " + match[1].replace(':', '-')
return matched_virtuals
@@ -140,7 +142,7 @@ class VersionManager:
def get_vm(self, atoms, need_virtual = None):
matched_atoms = self.parse_depend(atoms)
matched_virtuals = self.parse_depend_virtuals(atoms)
- print "matched_virtuals=" + matched_virtuals
+ #print "matched_virtuals=" + matched_virtuals
if len(matched_atoms) == 0:
return None
if len(matched_virtuals) == 0:
diff --git a/src/java_config_2/Virtual.py b/src/java_config_2/Virtual.py
index 47dacb6..050f9bf 100644
--- a/src/java_config_2/Virtual.py
+++ b/src/java_config_2/Virtual.py
@@ -77,8 +77,8 @@ class Virtual(Package):
for vm in vms:
if self._manager.get_vm(vm):
self._vms.append(vm)
- #if not self._packages and not self._vms:
- raise ProviderUnavailableError( self._name, self.providing_vms, self.providing_packages )
+ if not self._packages and not self._vms:
+ raise ProviderUnavailableError( self._name, self.providing_vms, self.providing_packages )
def file(self):
# Investigate if anything uses this