summaryrefslogtreecommitdiff
path: root/portato/backend
diff options
context:
space:
mode:
Diffstat (limited to 'portato/backend')
-rw-r--r--portato/backend/__init__.py2
-rw-r--r--portato/backend/exceptions.py2
-rw-r--r--portato/backend/flags.py55
-rw-r--r--portato/backend/package.py2
-rw-r--r--portato/backend/portage/__init__.py2
-rw-r--r--portato/backend/portage/package.py5
-rw-r--r--portato/backend/portage/package_22.py2
-rw-r--r--portato/backend/portage/sets.py16
-rw-r--r--portato/backend/portage/settings.py2
-rw-r--r--portato/backend/portage/settings_22.py2
-rw-r--r--portato/backend/portage/system.py2
-rw-r--r--portato/backend/portage/system_22.py17
-rw-r--r--portato/backend/system_interface.py2
13 files changed, 59 insertions, 52 deletions
diff --git a/portato/backend/__init__.py b/portato/backend/__init__.py
index 4a4144a..8eae806 100644
--- a/portato/backend/__init__.py
+++ b/portato/backend/__init__.py
@@ -3,7 +3,7 @@
# File: portato/backend/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2007 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/exceptions.py b/portato/backend/exceptions.py
index 46b2a3e..f20a33e 100644
--- a/portato/backend/exceptions.py
+++ b/portato/backend/exceptions.py
@@ -3,7 +3,7 @@
# File: portato/backend/exceptions.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2007 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/flags.py b/portato/backend/flags.py
index 56df231..baa1f37 100644
--- a/portato/backend/flags.py
+++ b/portato/backend/flags.py
@@ -3,7 +3,7 @@
# File: portato/backend/flags.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
@@ -203,10 +203,10 @@ def sort_use_flag_list (flaglist):
"""
def flag_key (flag):
- if flag[0] in "+-":
- return flag[1:]
- else:
- return flag
+ if flag[0] in "+-":
+ return flag[1:]
+ else:
+ return flag
flaglist.sort(key = flag_key)
return flaglist
@@ -262,7 +262,7 @@ def set_use_flag (pkg, flag):
if pkg.matches(crit):
# we have the inverted flag in the uselist/newuselist --> delete it
if invFlag in flags or (file, line, invFlag, False) in newUseFlags[cpv] or (file, line, flag, True) in newUseFlags[cpv]:
- if added: del newUseFlags[-1] # we currently added it as an extra option - delete it
+ if added: del newUseFlags[cpv][-1] # we currently added it as an extra option - delete it
added = True
jumpOut = False
for t in ((file, line, invFlag, False),(file, line, flag, True)):
@@ -343,22 +343,22 @@ def write_use_flags ():
"""This writes our changed useflags into the file."""
global newUseFlags, useFlags
+ def combine (list):
+ """Shortcut for reverting the list into a string."""
+ return " ".join(list)+"\n"
+
def insert (flag, list):
"""Shortcut for inserting a new flag right after the package-name."""
list.insert(1,flag)
def remove (flag, list):
"""Removes a flag."""
- try:
- list.remove(flag)
- except ValueError: # flag is given as flag\n
- list.remove(flag+"\n")
- list.append("\n") #re-insert the newline
+ list.remove(flag)
# no more flags there - comment it out
- if len(list) == 1 or list[1][0] in ("#","\n"):
+ if len(list) == 1 or list[1][0] == "#":
list[0] = "#"+list[0]
- insert("#removed by portato#",list)
+ list.append("#removed by portato#")
file_cache = {} # cache for having to read the file only once: name->[lines]
for cpv in newUseFlags:
@@ -381,14 +381,14 @@ def write_use_flags ():
while i < line: # stop at the given line
lines.append(f.readline())
i += 1
- l = f.readline().split(" ")
+ l = f.readline().split()
# delete or insert
if delete:
remove(flag,l)
else:
insert(flag,l)
- lines.append(" ".join(l))
+ lines.append(combine(l))
# read the rest
lines.extend(f.readlines())
@@ -396,33 +396,34 @@ def write_use_flags ():
file_cache[file] = lines
else: # in cache
- l = file_cache[file][line-1].split(" ")
+ l = file_cache[file][line-1].split()
if delete:
remove(flag, l)
else:
- insert(flag,l)
- file_cache[file][line-1] = " ".join(l)
+ insert(flag, l)
+ file_cache[file][line-1] = combine(l)
if flagsToAdd:
# write new lines
msg = "\n#portato update#\n"
+ comb = combine(flagsToAdd)
if CONFIG["usePerVersion"]: # add on a per-version-base
- msg += "=%s %s\n" % (cpv, ' '.join(flagsToAdd))
+ msg += "=%s %s" % (cpv, comb)
else: # add on a per-package-base
list = system.split_cpv(cpv)
- msg += "%s/%s %s\n" % (list[0], list[1], ' '.join(flagsToAdd))
+ msg += "%s/%s %s" % (list[0], list[1], combine)
+
if not file in file_cache:
- f = open(file, "a")
- f.write(msg)
- f.close()
+ with open(file, "a") as f:
+ f.write(msg)
else:
file_cache[file].append(msg)
# write to disk
- for file in file_cache.keys():
- f = open(file, "w")
- f.writelines(file_cache[file])
- f.close()
+ for file in file_cache:
+ with open(file, "w") as f:
+ f.writelines(file_cache[file])
+
# reset
useFlags = {}
newUseFlags = {}
diff --git a/portato/backend/package.py b/portato/backend/package.py
index bcc209a..8a80fd5 100644
--- a/portato/backend/package.py
+++ b/portato/backend/package.py
@@ -3,7 +3,7 @@
# File: portato/backend/package.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/portage/__init__.py b/portato/backend/portage/__init__.py
index 67eebfa..1daf51b 100644
--- a/portato/backend/portage/__init__.py
+++ b/portato/backend/portage/__init__.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2007 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/portage/package.py b/portato/backend/portage/package.py
index 2c913f9..e1813bf 100644
--- a/portato/backend/portage/package.py
+++ b/portato/backend/portage/package.py
@@ -222,11 +222,14 @@ class PortagePackage (Package):
continue
if return_blocks:
+ if not blocked:
+ if not system.find_packages(dep, masked = True): continue # well - no packages affected - ignore
+
if with_criterions:
dep_pkgs.append((dep, dep))
else:
dep_pkgs.append(dep)
- else:
+ elif blocked:
raise BlockedException, (self.get_cpv(), blocked[0].get_cpv())
continue # finished with the blocking one -> next
diff --git a/portato/backend/portage/package_22.py b/portato/backend/portage/package_22.py
index 1dae1fe..ed804ce 100644
--- a/portato/backend/portage/package_22.py
+++ b/portato/backend/portage/package_22.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/package_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/portage/sets.py b/portato/backend/portage/sets.py
index 53025ab..dd8257d 100644
--- a/portato/backend/portage/sets.py
+++ b/portato/backend/portage/sets.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/sets.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
@@ -52,7 +52,7 @@ class FilterSet (Set):
t = set()
for pkg in self.get_list():
if is_regexp and key:
- if not re.match(key, pkg, re.I): continue
+ if not re.search(key, pkg, re.I): continue
if not with_version:
t.add(portage.dep.dep_getkey(pkg))
@@ -63,12 +63,11 @@ class FilterSet (Set):
class PortageSet (FilterSet):
def __init__ (self, name):
- FilterSet.__init__(self)
debug("Loading portage set '%s'", name)
- self.portageSet = system.settings.setsconfig.getSets()[name]
+ self.name = name
def get_list(self):
- return itt.imap(str, self.portageSet.getAtoms())
+ return itt.imap(str, system.settings.setsconfig.getSetAtoms(self.name))
class SystemSet (FilterSet):
@@ -86,6 +85,9 @@ class WorldSet (FilterSet):
yield cp
class InstalledSet (Set):
+ """For the moment do not use the portage-2.2 @installed set.
+ It only contains the current slot-cps - and to get the cpvs
+ via the PortageSet results in an infinite recursion :(."""
def get_pkgs (self, key, is_regexp, masked, with_version, only_cpv):
if is_regexp:
@@ -95,7 +97,7 @@ class InstalledSet (Set):
t = system.settings.vartree.dbapi.cp_all()
if key:
- t = filter(lambda x: re.match(key, x, re.I), t)
+ t = filter(lambda x: re.search(key, x, re.I), t)
return set(t)
else:
@@ -111,7 +113,7 @@ class TreeSet (Set):
t = system.settings.porttree.dbapi.cp_all()
if key:
- t = filter(lambda x: re.match(key, x, re.I), t)
+ t = filter(lambda x: re.search(key, x, re.I), t)
elif masked:
t = system.settings.porttree.dbapi.xmatch("match-all", key)
diff --git a/portato/backend/portage/settings.py b/portato/backend/portage/settings.py
index 155e847..8211f3b 100644
--- a/portato/backend/portage/settings.py
+++ b/portato/backend/portage/settings.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/settings.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2007 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/portage/settings_22.py b/portato/backend/portage/settings_22.py
index 5274b3b..bae3424 100644
--- a/portato/backend/portage/settings_22.py
+++ b/portato/backend/portage/settings_22.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/settings_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/portage/system.py b/portato/backend/portage/system.py
index 24016dc..94b5ca1 100644
--- a/portato/backend/portage/system.py
+++ b/portato/backend/portage/system.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/system.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
diff --git a/portato/backend/portage/system_22.py b/portato/backend/portage/system_22.py
index 8ce3cd9..d720a06 100644
--- a/portato/backend/portage/system_22.py
+++ b/portato/backend/portage/system_22.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/system_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
@@ -32,10 +32,10 @@ class PortageSystem_22 (PortageSystem):
self.local_use_descs = defaultdict(dict)
self.setmap = {
- self.SET_ALL : syssets.AllSet,
- self.SET_INSTALLED : syssets.InstalledSet,
- self.SET_UNINSTALLED : syssets.UninstalledSet,
- self.SET_TREE : syssets.TreeSet
+ self.SET_ALL : syssets.AllSet(),
+ self.SET_INSTALLED : syssets.InstalledSet(),
+ self.SET_UNINSTALLED : syssets.UninstalledSet(),
+ self.SET_TREE : syssets.TreeSet()
}
def get_update_option (self):
@@ -56,9 +56,10 @@ class PortageSystem_22 (PortageSystem):
s = self.setmap.get(pkgSet, None)
if s is None:
- return syssets.PortageSet(pkgSet)
- else:
- return s()
+ s = syssets.PortageSet(pkgSet)
+ self.setmap[pkgSet] = s
+
+ return s
def new_package (self, cpv):
return PortagePackage_22(cpv)
diff --git a/portato/backend/system_interface.py b/portato/backend/system_interface.py
index 6f13042..5f4c50a 100644
--- a/portato/backend/system_interface.py
+++ b/portato/backend/system_interface.py
@@ -3,7 +3,7 @@
# File: portato/backend/system_interface.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2007-2008 René 'Necoro' Neumann
+# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.