diff --git a/client/equoTools.py b/client/equoTools.py index 39bd6175d..f0e4b9e81 100644 --- a/client/equoTools.py +++ b/client/equoTools.py @@ -881,37 +881,8 @@ def getDependencies(packageInfo): if dep.startswith("!"): continue # FIXME: add conflicts SUPPORT + _depend.append(dep) - if dep.find("|or|") != -1: - deps = dep.split("|or|") - # find the best - versions = [] - for x in deps: - if x.find("|and|"): - anddeps = x.split("|and|") - outanddeps = anddeps[:] - for y in anddeps: - ykey = dep_getkey(y) - ycat = ykey.split("/")[0] - yname = ykey.split("/")[1] - yresult = dbconn.searchPackagesByNameAndCategory(yname,ycat) - if (yresult): - outanddeps.remove(y) - if (not outanddeps): - # all dependencies are found and ok - for y in anddeps: - _depend.append(y) - break - - key = dep_getkey(deps[0]) - cat = key.split("/")[0] - name = key.split("/")[1] - result = dbconn.searchPackagesByNameAndCategory(name,cat) - if (result): - _depend.append(x) - break - else: - _depend.append(dep) depend = _depend dbconn.closeDB() diff --git a/libraries/portageTools.py b/libraries/portageTools.py index 92e615fb7..f6894884d 100644 --- a/libraries/portageTools.py +++ b/libraries/portageTools.py @@ -747,7 +747,40 @@ def synthetizeRoughDependencies(roughDependencies, useflags = None): dependencies = '' for i in tmpDeps: tmpData.append(i) - dependencies = string.join(tmpData," ") + + # now filter |or| and |and| + _tmpData = [] + for dep in tmpData: + + if dep.find("|or|") != -1: + deps = dep.split("|or|") + # find the best + results = [] + for x in deps: + if x.find("|and|") != -1: + anddeps = x.split("|and|") + results.append(anddeps) + else: + if x: + results.append([x]) + + # now parse results + for result in results: + outdeps = result[:] + for y in result: + yresult = getInstalledAtoms(y) + if (yresult != None): + outdeps.remove(y) + if (not outdeps): + # find it + for y in result: + _tmpData.append(y) + break + + else: + _tmpData.append(dep) + + dependencies = string.join(_tmpData," ") return dependencies, conflicts