Entropy/EquoInterface:

- generate_dependency_tree: added support for PDEPENDs, which will be sorted correctly now, after the package itself
Entropy/EntropyDatabaseInterface:
- new method retrievePostDependencies, useful to retrieve PDEPENDs


git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@2904 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
lxnay
2009-01-15 17:31:06 +00:00
parent fa51b1576c
commit 5fcbef3115
2 changed files with 15 additions and 4 deletions
+13 -3
View File
@@ -2463,8 +2463,14 @@ class EquoInterface(TextInterface):
myundeps = filter(my_dep_filter,matchdb.retrieveDependenciesList(m_idpackage))
if not empty_deps:
myundeps = filter(my_dep_filter,get_unsatisfied_deps(myundeps, deep_deps, depcache = filter_unsat_cache))
for x in myundeps: mybuffer.push((treedepth,x))
# PDEPENDs support
if myundeps:
post_deps = [x for x in matchdb.retrievePostDependencies(m_idpackage) if x in myundeps]
myundeps = [x for x in myundeps if x not in post_deps]
for x in post_deps: mybuffer.push((-1,x)) # always after the package itself
for x in myundeps: mybuffer.push((treedepth,x))
mydep = mybuffer.pop()
if deps_not_found:
@@ -4230,7 +4236,7 @@ class EquoInterface(TextInterface):
for x in portage_metadata['PDEPEND'].split():
if x.startswith("!") or (x in ("(","||",")","")):
continue
data['dependencies'][x] = 1
data['dependencies'][x] = etpConst['spm']['pdepend_id']
data['conflicts'] = [x[1:] for x in portage_metadata['RDEPEND'].split()+portage_metadata['PDEPEND'].split() if x.startswith("!") and not x in ("(","||",")","")]
if (kernelstuff) and (not kernelstuff_kernel):
@@ -32655,7 +32661,11 @@ class EntropyDatabaseInterface:
return self.fetchall2set(self.cursor.fetchall())
def retrieveDependenciesList(self, idpackage):
self.cursor.execute('SELECT dependenciesreference.dependency FROM dependencies,dependenciesreference WHERE dependencies.idpackage = (?) and dependencies.iddependency = dependenciesreference.iddependency UNION SELECT "!" || conflict FROM conflicts WHERE idpackage = (?)', (idpackage,idpackage,))
self.cursor.execute('SELECT dependenciesreference.dependency FROM dependencies,dependenciesreference WHERE dependencies.idpackage = (?) AND dependencies.iddependency = dependenciesreference.iddependency UNION SELECT "!" || conflict FROM conflicts WHERE idpackage = (?)', (idpackage,idpackage,))
return self.fetchall2set(self.cursor.fetchall())
def retrievePostDependencies(self, idpackage):
self.cursor.execute('SELECT dependenciesreference.dependency FROM dependencies,dependenciesreference WHERE dependencies.idpackage = (?) AND dependencies.iddependency = dependenciesreference.iddependency AND dependencies.type = (?)', (idpackage,etpConst['spm']['pdepend_id'],))
return self.fetchall2set(self.cursor.fetchall())
def retrieveDependencies(self, idpackage, extended = False, deptype = None):
+2 -1
View File
@@ -621,7 +621,7 @@ def const_defaultSettings(rootdir):
'edbcounter': edbCOUNTER,
'filesystemdirs': ['/bin','/emul','/etc','/lib','/lib32','/lib64','/opt','/sbin','/usr','/var'], # directory of the filesystem
'filesystemdirsmask': [
'/var/cache','/var/db','/var/empty','/var/log','/var/mail','/var/tmp','/var/www', '/usr/portage', '/usr/src', '/etc/skel', '/etc/ssh', '/etc/ssl', '/var/run', '/var/spool/cron', '/var/lib/init.d', '/lib/modules', '/etc/env.d', '/etc/gconf', '/etc/runlevels', '/lib/splash/cache', '/usr/share/mime', '/etc/portage', '/var/spool', '/var/lib', '/usr/lib/locale','/lib64/splash/cache'
'/var/cache','/var/db','/var/empty','/var/log','/var/mail','/var/tmp','/var/www', '/usr/portage', '/usr/src', '/etc/skel', '/etc/ssh', '/etc/ssl', '/var/run', '/var/spool/cron', '/var/lib/init.d', '/lib/modules', '/etc/env.d', '/etc/gconf', '/etc/runlevels', '/lib/splash/cache', '/usr/share/mime', '/etc/portage', '/var/spool', '/var/lib', '/usr/lib/locale','/lib64/splash/cache'
],
'libtest_blacklist': [],
'libtest_files_blacklist': [],
@@ -655,6 +655,7 @@ def const_defaultSettings(rootdir):
'server_treeupdatescalled': set(),
'client_treeupdatescalled': set(),
'spm': {
'pdepend_id': 1,
'ebuild_file_extension': "ebuild",
'ebuild_pkg_tag_var': "ENTROPY_PROJECT_TAG",
'global_make_conf': rootdir+"/etc/make.conf",