- imported most equoTools functions inside Equo class

git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@970 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
(no author)
2007-12-31 03:36:04 +00:00
parent ebe5f3b0aa
commit a25c62de21
12 changed files with 748 additions and 845 deletions
+4 -4
View File
@@ -145,7 +145,7 @@ class cacheHelper(TextInterface):
self.updateProgress(darkgreen("Resolving name: %s") % (
name
), importance = 0, type = "info", back = True, count = (cnt, maxlen) )
self.equoTools.atomMatch(name)
self.Equo.atomMatch(name)
maxlen = len(keys)
cnt = 0
for key in keys:
@@ -153,7 +153,7 @@ class cacheHelper(TextInterface):
self.updateProgress(darkgreen("Resolving key: %s") % (
key
), importance = 0, type = "info", back = True, count = (cnt, maxlen) )
self.equoTools.atomMatch(key)
self.Equo.atomMatch(key)
maxlen = len(atoms)
cnt = 0
for atom in atoms:
@@ -161,7 +161,7 @@ class cacheHelper(TextInterface):
self.updateProgress(darkgreen("Resolving atom: %s") % (
atom
), importance = 0, type = "info", back = True, count = (cnt, maxlen) )
self.equoTools.atomMatch(atom)
self.Equo.atomMatch(atom)
maxlen = len(depends)
cnt = 0
for depend in depends:
@@ -169,6 +169,6 @@ class cacheHelper(TextInterface):
self.updateProgress(darkgreen("Resolving dependency: %s") % (
depend
), importance = 0, type = "info", back = True, count = (cnt, maxlen) )
self.equoTools.atomMatch(depend)
self.Equo.atomMatch(depend)
self.updateProgress(darkred("Dependencies filled. Flushing to disk."), importance = 2, type = "warning")
self.Equo.save_cache()
-1
View File
@@ -142,7 +142,6 @@ def print_help():
options = sys.argv[1:]
import equoTools
import entropyTools
from clientConstants import *
+612 -662
View File
File diff suppressed because it is too large Load Diff
+32 -37
View File
@@ -478,60 +478,55 @@ def searchOrphans():
def searchRemoval(atoms, idreturn = False, deep = False):
from equoTools import generateDependsTree
import equoTools
Equo = equoTools.Equo()
if (not idreturn) and (not etpUi['quiet']):
print_info(darkred(" @@ ")+darkgreen("Removal Search..."))
try:
clientDbconn = openClientDatabase()
except Exception:
print_info(bold("\tAttention: ")+red("client database does not exist. Run ")+bold("equo database generate")+red(" or ")+bold("equo database resurrect"))
return 128
foundAtoms = []
for atom in atoms:
match = clientDbconn.atomMatch(atom)
if match[1] == 0:
foundAtoms.append(match[0])
match = Equo.clientDbconn.atomMatch(atom)
if match[1] == 0:
foundAtoms.append(match[0])
# are packages in foundAtoms?
if (len(foundAtoms) == 0):
print_error(red("No packages found."))
return 127,-1
print_error(red("No packages found."))
return 127,-1
choosenRemovalQueue = []
if (not etpUi['quiet']):
print_info(red(" @@ ")+blue("Calculating removal dependencies, please wait..."), back = True)
treeview = generateDependsTree(foundAtoms, deep = deep)
treeview = Equo.generateDependsTree(foundAtoms, deep = deep)
treelength = len(treeview[0])
if treelength > 1:
treeview = treeview[0]
for x in range(treelength)[::-1]:
for y in treeview[x]:
choosenRemovalQueue.append(y)
if (choosenRemovalQueue):
if (not etpUi['quiet']):
print_info(red(" @@ ")+blue("These are the packages that would added to the removal queue:"))
totalatoms = str(len(choosenRemovalQueue))
atomscounter = 0
for idpackage in choosenRemovalQueue:
atomscounter += 1
rematom = clientDbconn.retrieveAtom(idpackage)
if (not etpUi['quiet']):
installedfrom = clientDbconn.retrievePackageFromInstalledTable(idpackage)
repositoryInfo = bold("[")+red("from: ")+brown(installedfrom)+bold("]")
stratomscounter = str(atomscounter)
while len(stratomscounter) < len(totalatoms):
stratomscounter = " "+stratomscounter
print_info(" # "+red("(")+bold(stratomscounter)+"/"+blue(str(totalatoms))+red(")")+repositoryInfo+" "+blue(rematom))
else:
print rematom
treeview = treeview[0]
for x in range(treelength)[::-1]:
for y in treeview[x]:
choosenRemovalQueue.append(y)
if (choosenRemovalQueue):
if (not etpUi['quiet']):
print_info(red(" @@ ")+blue("These are the packages that would added to the removal queue:"))
totalatoms = str(len(choosenRemovalQueue))
atomscounter = 0
for idpackage in choosenRemovalQueue:
atomscounter += 1
rematom = Equo.clientDbconn.retrieveAtom(idpackage)
if (not etpUi['quiet']):
installedfrom = Equo.clientDbconn.retrievePackageFromInstalledTable(idpackage)
repositoryInfo = bold("[")+red("from: ")+brown(installedfrom)+bold("]")
stratomscounter = str(atomscounter)
while len(stratomscounter) < len(totalatoms):
stratomscounter = " "+stratomscounter
print_info(" # "+red("(")+bold(stratomscounter)+"/"+blue(str(totalatoms))+red(")")+repositoryInfo+" "+blue(rematom))
else:
print rematom
if (idreturn):
return treeview
return treeview
return 0
+10 -2
View File
@@ -231,10 +231,18 @@ def syncRepositories(reponames = [], forceUpdate = False):
return 128
del repoConn
rc = checkEquoUpdates()
rc = False
try:
import equoTools
Equo = equoTools.Equo()
rc = Equo.check_equo_updates()
del Equo
except:
pass
if rc:
print_warning(darkred(" !! ")+blue("A new version of ")+bold("equo")+blue(" is available. Please ")+bold("install it")+blue(" before any other package."))
return 0
def checkEquoUpdates():
+1 -1
View File
@@ -495,7 +495,7 @@ def pythonUpdater():
atomkey = entropyTools.dep_getkey(meta[0])
slot = clientDbconn.retrieveSlot(meta[1])
print_info(brown(" @@ ")+red("Matching ")+bold(atomkey)+red(":")+darkgreen(slot), back = True)
match = equoTools.atomMatch(atomkey, matchSlot = slot)
match = uiTools.Equo.atomMatch(atomkey, matchSlot = slot)
if match[0] != -1:
matchedAtoms.add((atomkey+":"+slot,match))
del atoms
+63 -125
View File
@@ -29,7 +29,7 @@ from entropyConstants import *
from clientConstants import *
from outputTools import *
import equoTools
from databaseTools import openRepositoryDatabase, openClientDatabase, openGenericDatabase, listAllAvailableBranches
from databaseTools import openRepositoryDatabase, openGenericDatabase, listAllAvailableBranches
import entropyTools
import dumpTools
import shutil
@@ -137,12 +137,6 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
if not (etpUi['quiet'] or returnQueue): print_warning(red("Running with ")+bold("--pretend")+red("..."))
etpUi['pretend'] = True
try:
clientDbconn = openClientDatabase()
except:
if not (etpUi['quiet'] or returnQueue): print_error(red("You do not have a client database."))
return 128,-1
if not resume:
# verify selected release (branch)
@@ -164,20 +158,20 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
fineList = set()
removedList = set()
# get all the installed packages
packages = clientDbconn.listAllPackages()
packages = Equo.clientDbconn.listAllPackages()
if not (etpUi['quiet'] or returnQueue): print_info(red(" @@ ")+blue("Calculating world packages..."))
for package in packages:
tainted = False
atom = package[0]
idpackage = package[1]
name = clientDbconn.retrieveName(idpackage)
category = clientDbconn.retrieveCategory(idpackage)
revision = clientDbconn.retrieveRevision(idpackage)
slot = clientDbconn.retrieveSlot(idpackage)
name = Equo.clientDbconn.retrieveName(idpackage)
category = Equo.clientDbconn.retrieveCategory(idpackage)
revision = Equo.clientDbconn.retrieveRevision(idpackage)
slot = Equo.clientDbconn.retrieveSlot(idpackage)
atomkey = category+"/"+name
# search in the packages
match = equoTools.atomMatch(atom)
match = Equo.atomMatch(atom)
if match[0] == -1: # atom has been changed, or removed?
tainted = True
else: # not changed, is the revision changed?
@@ -193,7 +187,7 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
tainted = True
if (tainted):
# Alice! use the key! ... and the slot
matchresults = equoTools.atomMatch(atomkey, matchSlot = slot, matchBranches = branches)
matchresults = Equo.atomMatch(atomkey, matchSlot = slot, matchBranches = branches)
if matchresults[0] != -1:
mdbconn = openRepositoryDatabase(matchresults[1])
matchatom = mdbconn.retrieveAtom(matchresults[0])
@@ -203,14 +197,14 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
else:
removedList.add(idpackage)
# look for packages that would match key with any slot (for eg, gcc updates), slot changes handling
matchresults = equoTools.atomMatch(atomkey, matchBranches = branches)
matchresults = Equo.atomMatch(atomkey, matchBranches = branches)
if matchresults[0] != -1:
mdbconn = openRepositoryDatabase(matchresults[1])
matchatom = mdbconn.retrieveAtom(matchresults[0])
mdbconn.closeDB()
del mdbconn
# compare versions
unsatisfied, satisfied = equoTools.filterSatisfiedDependencies((matchatom,))
unsatisfied, satisfied = Equo.filterSatisfiedDependencies((matchatom,))
if unsatisfied:
updateList.add((matchatom,matchresults))
else:
@@ -275,7 +269,7 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
etpConst['collisionprotect'] = oldcollprotect
# verify that client database idpackage still exist, validate here before passing removePackage() wrong info
removedList = [x for x in removedList if clientDbconn.isIDPackageAvailable(x)]
removedList = [x for x in removedList if Equo.clientDbconn.isIDPackageAvailable(x)]
if (removedList):
removedList = list(removedList)
@@ -287,8 +281,6 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
if human:
rc = entropyTools.askquestion(" Would you like to query them ?")
if rc == "No":
clientDbconn.closeDB()
del clientDbconn
return 0,0
# run removePackages with --nodeps
@@ -299,9 +291,6 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
else:
if not (etpUi['quiet'] or returnQueue): print_info(red(" @@ ")+blue("Nothing to remove."))
clientDbconn.closeDB()
del clientDbconn
if returnQueue:
return worldQueue,0
@@ -322,12 +311,6 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
except:
pass
try:
clientDbconn = openClientDatabase()
except:
if not (etpUi['quiet'] or returnQueue): print_error(red("You do not have a client database."))
return 128,-1
if not resume:
if (atomsdata):
@@ -335,7 +318,7 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
else:
foundAtoms = []
for package in packages:
foundAtoms.append([package,equoTools.atomMatch(package)])
foundAtoms.append([package,Equo.atomMatch(package)])
if tbz2:
for pkg in tbz2:
# create a repository for each database
@@ -422,15 +405,15 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
installedVer = "Not installed"
installedTag = "NoTag"
installedRev = "NoRev"
pkginstalled = clientDbconn.atomMatch(entropyTools.dep_getkey(pkgatom), matchSlot = pkgslot)
pkginstalled = Equo.clientDbconn.atomMatch(entropyTools.dep_getkey(pkgatom), matchSlot = pkgslot)
if (pkginstalled[1] == 0):
# found
idx = pkginstalled[0]
installedVer = clientDbconn.retrieveVersion(idx)
installedTag = clientDbconn.retrieveVersionTag(idx)
installedVer = Equo.clientDbconn.retrieveVersion(idx)
installedTag = Equo.clientDbconn.retrieveVersionTag(idx)
if not installedTag:
installedTag = "NoTag"
installedRev = clientDbconn.retrieveRevision(idx)
installedRev = Equo.clientDbconn.retrieveRevision(idx)
if not (etpUi['quiet'] or returnQueue): print_info(" # "+red("(")+bold(str(atomscounter))+"/"+blue(str(totalatoms))+red(")")+" "+bold(pkgatom)+" >>> "+red(etpRepositories[reponame]['description']))
if not (etpUi['quiet'] or returnQueue): print_info("\t"+red("Versioning:\t")+" "+blue(installedVer)+" / "+blue(installedTag)+" / "+blue(str(installedRev))+bold(" ===> ")+darkgreen(pkgver)+" / "+darkgreen(pkgtag)+" / "+darkgreen(str(pkgrev)))
@@ -471,7 +454,7 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
if (deps):
spinning = False
if not (etpUi['quiet'] or returnQueue): spinning = True
treepackages, result = equoTools.getRequiredPackages(foundAtoms, emptydeps, deepdeps, spinning = spinning)
treepackages, result = Equo.getRequiredPackages(foundAtoms, emptydeps, deepdeps, spinning = spinning)
# add dependencies, explode them
if (result == -2):
@@ -566,15 +549,15 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
installedVer = '0'
installedTag = ''
installedRev = 0
pkginstalled = clientDbconn.atomMatch(entropyTools.dep_getkey(pkgatom), matchSlot = pkgslot)
pkginstalled = Equo.clientDbconn.atomMatch(entropyTools.dep_getkey(pkgatom), matchSlot = pkgslot)
if (pkginstalled[1] == 0):
# found
idx = pkginstalled[0]
installedVer = clientDbconn.retrieveVersion(idx)
installedTag = clientDbconn.retrieveVersionTag(idx)
installedRev = clientDbconn.retrieveRevision(idx)
installedVer = Equo.clientDbconn.retrieveVersion(idx)
installedTag = Equo.clientDbconn.retrieveVersionTag(idx)
installedRev = Equo.clientDbconn.retrieveRevision(idx)
actionQueue[pkgatom]['removeidpackage'] = idx
onDiskFreedSize += clientDbconn.retrieveOnDiskSize(idx)
onDiskFreedSize += Equo.clientDbconn.retrieveOnDiskSize(idx)
if not (etpUi['ask'] or etpUi['pretend'] or etpUi['verbose']):
continue
@@ -626,7 +609,7 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
#'''
if runQueue:
myremmatch = {}
[myremmatch.update({(entropyTools.dep_getkey(clientDbconn.retrieveAtom(x)),clientDbconn.retrieveSlot(x)): x}) for x in removalQueue]
[myremmatch.update({(entropyTools.dep_getkey(Equo.clientDbconn.retrieveAtom(x)),Equo.clientDbconn.retrieveSlot(x)): x}) for x in removalQueue]
for packageInfo in runQueue:
dbconn = openRepositoryDatabase(packageInfo[1])
testtuple = (entropyTools.dep_getkey(dbconn.retrieveAtom(packageInfo[0])),dbconn.retrieveSlot(packageInfo[0]))
@@ -649,12 +632,12 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
# add depends to removalQueue that are not in runQueue
dependQueue = set()
for idpackage in removalQueue:
depends = clientDbconn.retrieveDepends(idpackage)
depends = Equo.clientDbconn.retrieveDepends(idpackage)
for depend in depends:
dependkey = clientDbconn.retrieveCategory(depend)+"/"+clientDbconn.retrieveName(depend)
dependslot = clientDbconn.retrieveSlot(depend)
dependkey = Equo.clientDbconn.retrieveCategory(depend)+"/"+Equo.clientDbconn.retrieveName(depend)
dependslot = Equo.clientDbconn.retrieveSlot(depend)
# match in repositories
match = equoTools.atomMatch(dependkey, matchSlot = dependslot)
match = Equo.atomMatch(dependkey, matchSlot = dependslot)
if match[0] != -1:
matchdbconn = openRepositoryDatabase(match[1])
matchatom = matchdbconn.retrieveAtom(match[0])
@@ -662,7 +645,7 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
del matchdbconn
if (matchatom not in actionQueue) and (depend not in removalQueue): # if the atom hasn't been pulled in, we need to remove depend
# check if the atom is already up to date
mymatch = equoTools.atomMatch(matchatom)
mymatch = Equo.atomMatch(matchatom)
print mymatch
#print matchatom
dependQueue.add(depend)
@@ -675,9 +658,9 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
if not (etpUi['quiet'] or returnQueue): print_info(red(" @@ ")+blue("These are the packages that would be ")+bold("removed")+blue(" (conflicting/substituted):"))
for idpackage in removalQueue:
pkgatom = clientDbconn.retrieveAtom(idpackage)
onDiskFreedSize += clientDbconn.retrieveOnDiskSize(idpackage)
installedfrom = clientDbconn.retrievePackageFromInstalledTable(idpackage)
pkgatom = Equo.clientDbconn.retrieveAtom(idpackage)
onDiskFreedSize += Equo.clientDbconn.retrieveOnDiskSize(idpackage)
installedfrom = Equo.clientDbconn.retrievePackageFromInstalledTable(idpackage)
repoinfo = red("[")+brown("from: ")+bold(installedfrom)+red("] ")
if not (etpUi['quiet'] or returnQueue): print_info(red(" ## ")+"["+red("W")+"] "+repoinfo+enlightenatom(pkgatom))
@@ -747,7 +730,7 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
rdbconn.closeDB()
del rdbconn
for rconflict in rconflicts:
rmatch = clientDbconn.atomMatch(rconflict)
rmatch = Equo.clientDbconn.atomMatch(rconflict)
if rmatch[0] != -1:
rconflicts_match.add(rmatch[0])
removalQueue = [x for x in rconflicts_match]
@@ -822,8 +805,6 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
for step in steps:
rc = equoTools.stepExecutor(step,infoDict,str(fetchqueue)+"/"+totalqueue)
if (rc != 0):
clientDbconn.closeDB()
del clientDbconn
dirscleanup()
return -1,rc
@@ -837,15 +818,15 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
for idpackage in removalQueue:
currentremovalqueue += 1
infoDict = {}
infoDict['removeatom'] = clientDbconn.retrieveAtom(idpackage)
infoDict['removeatom'] = Equo.clientDbconn.retrieveAtom(idpackage)
infoDict['removeidpackage'] = idpackage
infoDict['diffremoval'] = False
infoDict['removeconfig'] = True # we need to completely wipe configuration of conflicts
if not returnQueue: # must be loaded manually
infoDict['removecontent'] = clientDbconn.retrieveContent(idpackage)
etpRemovalTriggers[infoDict['removeatom']] = clientDbconn.getPackageData(idpackage)
infoDict['removecontent'] = Equo.clientDbconn.retrieveContent(idpackage)
etpRemovalTriggers[infoDict['removeatom']] = Equo.clientDbconn.getPackageData(idpackage)
etpRemovalTriggers[infoDict['removeatom']]['removecontent'] = infoDict['removecontent'].copy()
etpRemovalTriggers[infoDict['removeatom']]['trigger'] = clientDbconn.retrieveTrigger(idpackage)
etpRemovalTriggers[infoDict['removeatom']]['trigger'] = Equo.clientDbconn.retrieveTrigger(idpackage)
steps = []
steps.append("preremove")
steps.append("remove")
@@ -864,8 +845,6 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
for step in steps:
rc = equoTools.stepExecutor(step,infoDict,str(currentremovalqueue)+"/"+totalremovalqueue)
if (rc != 0):
clientDbconn.closeDB()
del clientDbconn
dirscleanup()
return -1,rc
@@ -899,18 +878,18 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
# differential remove list
if (actionQueue[pkgatom]['removeidpackage'] != -1):
# is it still available?
if clientDbconn.isIDPackageAvailable(actionQueue[pkgatom]['removeidpackage']):
if Equo.clientDbconn.isIDPackageAvailable(actionQueue[pkgatom]['removeidpackage']):
actionQueue[pkgatom]['diffremoval'] = True
actionQueue[pkgatom]['removeatom'] = clientDbconn.retrieveAtom(actionQueue[pkgatom]['removeidpackage'])
actionQueue[pkgatom]['removeatom'] = Equo.clientDbconn.retrieveAtom(actionQueue[pkgatom]['removeidpackage'])
if not returnQueue: # must be loaded manually
oldcontent = clientDbconn.retrieveContent(actionQueue[pkgatom]['removeidpackage'])
oldcontent = Equo.clientDbconn.retrieveContent(actionQueue[pkgatom]['removeidpackage'])
newcontent = dbconn.retrieveContent(idpackage)
oldcontent = oldcontent - newcontent
del newcontent
actionQueue[pkgatom]['removecontent'] = oldcontent.copy()
etpRemovalTriggers[actionQueue[pkgatom]['removeatom']] = clientDbconn.getPackageData(actionQueue[pkgatom]['removeidpackage'])
etpRemovalTriggers[actionQueue[pkgatom]['removeatom']] = Equo.clientDbconn.getPackageData(actionQueue[pkgatom]['removeidpackage'])
etpRemovalTriggers[actionQueue[pkgatom]['removeatom']]['removecontent'] = actionQueue[pkgatom]['removecontent'].copy()
etpRemovalTriggers[actionQueue[pkgatom]['removeatom']]['trigger'] = clientDbconn.retrieveTrigger(actionQueue[pkgatom]['removeidpackage'])
etpRemovalTriggers[actionQueue[pkgatom]['removeatom']]['trigger'] = Equo.clientDbconn.retrieveTrigger(actionQueue[pkgatom]['removeidpackage'])
else:
actionQueue[pkgatom]['removeidpackage'] = -1
@@ -981,8 +960,6 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
for step in steps:
rc = equoTools.stepExecutor(step,actionQueue[pkgatom],str(currentqueue)+"/"+totalqueue)
if (rc != 0):
clientDbconn.closeDB()
del clientDbconn
dirscleanup()
return -1,rc
@@ -1010,8 +987,6 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
# clear resume information
dumpTools.dumpobj(etpCache['install'],{})
clientDbconn.closeDB()
del clientDbconn
dirscleanup()
if returnQueue:
@@ -1027,21 +1002,15 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
if not (etpUi['quiet'] or returnQueue): print_warning(red("Running with ")+bold("--pretend")+red("..."))
etpUi['pretend'] = True
try:
clientDbconn = openClientDatabase()
except:
if not (etpUi['quiet'] or returnQueue): print_error(red("You do not have a client database."))
return 128,-1
if not resume:
foundAtoms = []
if (atomsdata):
for idpackage in atomsdata:
foundAtoms.append([clientDbconn.retrieveAtom(idpackage),(idpackage,0)])
foundAtoms.append([Equo.clientDbconn.retrieveAtom(idpackage),(idpackage,0)])
else:
for package in packages:
foundAtoms.append([package,clientDbconn.atomMatch(package)])
foundAtoms.append([package,Equo.clientDbconn.atomMatch(package)])
# filter packages not found
_foundAtoms = []
@@ -1069,19 +1038,19 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
for atomInfo in foundAtoms:
atomscounter += 1
idpackage = atomInfo[0]
systemPackage = clientDbconn.isSystemPackage(idpackage)
systemPackage = Equo.clientDbconn.isSystemPackage(idpackage)
# get needed info
pkgatom = clientDbconn.retrieveAtom(idpackage)
installedfrom = clientDbconn.retrievePackageFromInstalledTable(idpackage)
pkgatom = Equo.clientDbconn.retrieveAtom(idpackage)
installedfrom = Equo.clientDbconn.retrievePackageFromInstalledTable(idpackage)
if (systemPackage) and (systemPackagesCheck):
# check if the package is slotted and exist more than one installed first
sysresults = clientDbconn.atomMatch(entropyTools.dep_getkey(pkgatom), multiMatch = True)
sysresults = Equo.clientDbconn.atomMatch(entropyTools.dep_getkey(pkgatom), multiMatch = True)
slots = set()
if sysresults[1] == 0:
for x in sysresults[0]:
slots.add(clientDbconn.retrieveSlot(x))
slots.add(Equo.clientDbconn.retrieveSlot(x))
if len(slots) < 2:
if not (etpUi['quiet'] or returnQueue): print_warning(darkred(" # !!! ")+red("(")+brown(str(atomscounter))+"/"+blue(str(totalatoms))+red(")")+" "+enlightenatom(pkgatom)+red(" is a vital package. Removal forbidden."))
continue
@@ -1107,8 +1076,6 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
if rc == "No":
lookForOrphanedPackages = False
if (not deps):
clientDbconn.closeDB()
del clientDbconn
return 0,0
if (not plainRemovalQueue):
@@ -1120,7 +1087,7 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
if (lookForOrphanedPackages):
choosenRemovalQueue = []
if not (etpUi['quiet'] or returnQueue): print_info(red(" @@ ")+blue("Calculating..."))
treeview = equoTools.generateDependsTree(plainRemovalQueue, deep = deep)
treeview = Equo.generateDependsTree(plainRemovalQueue, deep = deep)
treelength = len(treeview[0])
if treelength > 1:
treeview = treeview[0]
@@ -1135,8 +1102,8 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
for idpackage in choosenRemovalQueue:
atomscounter += 1
rematom = clientDbconn.retrieveAtom(idpackage)
installedfrom = clientDbconn.retrievePackageFromInstalledTable(idpackage)
rematom = Equo.clientDbconn.retrieveAtom(idpackage)
installedfrom = Equo.clientDbconn.retrievePackageFromInstalledTable(idpackage)
repositoryInfo = bold("[")+red("from: ")+brown(installedfrom)+bold("]")
stratomscounter = str(atomscounter)
while len(stratomscounter) < len(totalatoms):
@@ -1154,8 +1121,6 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
question = " Would you like to proceed with a selective removal ?"
rc = entropyTools.askquestion(question)
if rc == "No":
clientDbconn.closeDB()
del clientDbconn
return 0,0
elif (deps):
if not (etpUi['quiet'] or returnQueue): entropyTools.countdown(what = red(" @@ ")+blue("Starting removal in "),back = True)
@@ -1191,7 +1156,7 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
invalid = set()
for idpackage in removalQueue:
try:
clientDbconn.retrieveAtom(idpackage)
Equo.clientDbconn.retrieveAtom(idpackage)
except TypeError:
invalid.add(idpackage)
removalQueue = [x for x in removalQueue if x not in invalid]
@@ -1208,13 +1173,13 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
infoDict = {}
infoDict['removeidpackage'] = idpackage
try:
infoDict['removeatom'] = clientDbconn.retrieveAtom(idpackage)
infoDict['removeatom'] = Equo.clientDbconn.retrieveAtom(idpackage)
except TypeError: # resume cache issues?
try:
# force database removal and forget about the rest
if not (etpUi['quiet'] or returnQueue): print "DEBUG: attention! entry broken probably due to a resume cache issue, forcing removal from database"
clientDbconn.removePackage(idpackage)
clientDbconn.removePackageFromInstalledTable(idpackage)
Equo.clientDbconn.removePackage(idpackage)
Equo.clientDbconn.removePackageFromInstalledTable(idpackage)
except:
pass
# update resume cache
@@ -1226,10 +1191,10 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
infoDict['removeconfig'] = configFiles
if not returnQueue: # must be loaded manually
infoDict['removecontent'] = clientDbconn.retrieveContent(idpackage)
etpRemovalTriggers[infoDict['removeatom']] = clientDbconn.getPackageData(idpackage)
infoDict['removecontent'] = Equo.clientDbconn.retrieveContent(idpackage)
etpRemovalTriggers[infoDict['removeatom']] = Equo.clientDbconn.getPackageData(idpackage)
etpRemovalTriggers[infoDict['removeatom']]['removecontent'] = infoDict['removecontent'].copy()
etpRemovalTriggers[infoDict['removeatom']]['trigger'] = clientDbconn.retrieveTrigger(idpackage)
etpRemovalTriggers[infoDict['removeatom']]['trigger'] = Equo.clientDbconn.retrieveTrigger(idpackage)
steps = []
steps.append("preremove")
@@ -1260,8 +1225,6 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
for step in steps:
rc = equoTools.stepExecutor(step,infoDict,str(currentqueue)+"/"+str(len(removalQueue)))
if (rc != 0):
clientDbconn.closeDB()
del clientDbconn
return -1,rc
# update resume cache
@@ -1274,9 +1237,6 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
if not (etpUi['quiet'] or returnQueue): print_info(red(" @@ ")+blue("All done."))
clientDbconn.closeDB()
del clientDbconn
if returnQueue:
return returnActionQueue,0
@@ -1288,10 +1248,8 @@ def dependenciesTest(clientDbconn = None, reagent = False):
if (not etpUi['quiet']):
print_info(red(" @@ ")+blue("Running dependency test..."))
closedb = True
if clientDbconn == None:
closedb = False
clientDbconn = openClientDatabase()
clientDbconn = Equo.clientDbconn
# get all the installed packages
installedPackages = clientDbconn.listAllIdpackages()
@@ -1305,7 +1263,8 @@ def dependenciesTest(clientDbconn = None, reagent = False):
if (not etpUi['quiet']):
print_info(darkred(" @@ ")+bold("(")+blue(str(count))+"/"+red(length)+bold(")")+darkgreen(" Checking ")+bold(atom), back = True)
xdeps = equoTools.getDependencies((xidpackage,0))
xdeps = clientDbconn.retrieveDependenciesList(xidpackage)
needed_deps = set()
for xdep in xdeps:
if xdep[0] == "!": # filter conflicts
@@ -1330,7 +1289,7 @@ def dependenciesTest(clientDbconn = None, reagent = False):
if reagent:
match = clientDbconn.atomMatch(dep)
else:
match = equoTools.atomMatch(dep)
match = Equo.atomMatch(dep)
if match[0] == -1:
# FIXME
if (not etpUi['quiet']):
@@ -1351,16 +1310,12 @@ def dependenciesTest(clientDbconn = None, reagent = False):
packagesNeeded.add((depatom,dep))
if (etpUi['pretend']):
clientDbconn.closeDB()
del clientDbconn
return 0, packagesNeeded
if (packagesNeeded) and (not etpUi['quiet']) and (not reagent):
if (etpUi['ask']):
rc = entropyTools.askquestion(" Would you like to install the available packages?")
if rc == "No":
clientDbconn.closeDB()
del clientDbconn
return 0,packagesNeeded
else:
print_info(red(" @@ ")+blue("Installing available packages in ")+red("10 seconds")+blue("..."))
@@ -1374,9 +1329,6 @@ def dependenciesTest(clientDbconn = None, reagent = False):
installPackages(packages, deps = False)
if not etpUi['quiet']: print_info(red(" @@ ")+blue("All done."))
if closedb:
clientDbconn.closeDB()
del clientDbconn
return 0,packagesNeeded
def librariesTest(clientDbconn = None, reagent = False, listfiles = False):
@@ -1389,10 +1341,8 @@ def librariesTest(clientDbconn = None, reagent = False, listfiles = False):
if (not etpUi['quiet']):
print_info(red(" @@ ")+blue("Running libraries test..."))
closedb = True
if clientDbconn == None:
closedb = False
clientDbconn = openClientDatabase()
clientDbconn = Equo.clientDbconn
if (not etpUi['quiet']):
print_info(red(" @@ ")+blue("Collecting linker paths..."))
@@ -1519,21 +1469,15 @@ def librariesTest(clientDbconn = None, reagent = False, listfiles = False):
print myatom
dbconn.closeDB()
del dbconn
clientDbconn.closeDB()
del clientDbconn
return 0,atomsdata
if (etpUi['pretend']):
clientDbconn.closeDB()
del clientDbconn
return 0,atomsdata
if (atomsdata) and (not reagent):
if (etpUi['ask']):
rc = entropyTools.askquestion(" Would you like to install them?")
if rc == "No":
clientDbconn.closeDB()
del clientDbconn
return 0,atomsdata
else:
print_info(red(" @@ ")+blue("Installing found packages in ")+red("10 seconds")+blue("..."))
@@ -1542,15 +1486,9 @@ def librariesTest(clientDbconn = None, reagent = False, listfiles = False):
entropyTools.applicationLockCheck("install")
rc = installPackages(atomsdata = list(atomsdata))
if closedb:
clientDbconn.closeDB()
del clientDbconn
if rc[0] == 0:
return 0,atomsdata
else:
return rc[0],atomsdata
if closedb:
clientDbconn.closeDB()
del clientDbconn
return 0,atomsdata
+14
View File
@@ -2310,6 +2310,20 @@ class etpDatabase:
self.storeInfoCache(idpackage,'retrieveProvide',provide)
return provide
def retrieveDependenciesList(self, idpackage):
cache = self.fetchInfoCache(idpackage,'retrieveDependenciesList')
if cache != None: return cache
deps = self.retrieveDependencies(idpackage)
conflicts = self.retrieveConflicts(idpackage)
for x in conflicts:
deps.add("!"+x)
del conflicts
self.storeInfoCache(idpackage,'retrieveDependenciesList',deps)
return deps
def retrieveDependencies(self, idpackage):
cache = self.fetchInfoCache(idpackage,'retrieveDependencies')
-2
View File
@@ -398,7 +398,6 @@ generateDependsTreeCache = {}
idpackageValidatorCache = {}
filterSatisfiedDependenciesCache = {}
filterSatisfiedDependenciesCmpResults = {}
getDependenciesCache = {}
generateDependencyTreeCache = {}
ververifyCache = {}
isjustnameCache = {}
@@ -428,7 +427,6 @@ def const_resetCache():
idpackageValidatorCache.clear()
filterSatisfiedDependenciesCache.clear()
filterSatisfiedDependenciesCmpResults.clear()
getDependenciesCache.clear()
generateDependencyTreeCache.clear()
ververifyCache.clear()
isjustnameCache.clear()
+7 -9
View File
@@ -28,6 +28,7 @@ import entropyTools
import equoTools
import uiTools
from databaseTools import openClientDatabase, openRepositoryDatabase, openGenericDatabase
Equo = equoTools.Equo()
def smart(options):
@@ -84,10 +85,9 @@ def QuickpkgHandler(mypackages, savedir = None):
print_error(darkred(" * ")+red("--savedir ")+savedir+red(" does not exist."))
return 4
clientDbconn = openClientDatabase()
packages = []
for opt in mypackages:
match = clientDbconn.atomMatch(opt)
match = Equo.clientDbconn.atomMatch(opt)
if match[0] != -1:
packages.append(match)
else:
@@ -102,9 +102,9 @@ def QuickpkgHandler(mypackages, savedir = None):
pkgInfo = {}
pkgData = {}
for pkg in packages:
atom = clientDbconn.retrieveAtom(pkg[0])
atom = Equo.clientDbconn.retrieveAtom(pkg[0])
pkgInfo[pkg] = atom
pkgData[pkg] = clientDbconn.getPackageData(pkg[0])
pkgData[pkg] = Equo.clientDbconn.getPackageData(pkg[0])
print_info(brown("\t[")+red("from:")+bold("installed")+brown("]")+" - "+atom)
if (not etpUi['quiet']) or (etpUi['ask']):
@@ -112,8 +112,6 @@ def QuickpkgHandler(mypackages, savedir = None):
if rc == "No":
return 0
clientDbconn.closeDB()
for pkg in packages:
if not etpUi['quiet']: print_info(brown(" * ")+red("Compressing: ")+darkgreen(pkgInfo[pkg]))
resultfile = entropyTools.quickpkg(pkgdata = pkgData[pkg], dirpath = savedir)
@@ -223,7 +221,7 @@ def smartPackagesHandler(mypackages):
packages = []
for opt in mypackages:
match = equoTools.atomMatch(opt)
match = Equo.atomMatch(opt)
if match[0] != -1:
packages.append(match)
else:
@@ -358,7 +356,7 @@ def smartappsHandler(mypackages, emptydeps = False):
packages = set()
for opt in mypackages:
match = equoTools.atomMatch(opt)
match = Equo.atomMatch(opt)
if match[0] != -1:
packages.add(match)
else:
@@ -404,7 +402,7 @@ def smartgenerator(atomInfo, emptydeps = False):
pkgfilename = os.path.basename(pkgfilepath)
pkgname = pkgfilename.split(".tbz2")[0]
pkgdependencies, result = equoTools.getRequiredPackages([atomInfo], emptydeps = emptydeps)
pkgdependencies, result = Equo.getRequiredPackages([atomInfo], emptydeps = emptydeps)
# flatten them
pkgs = []
if (result == 0):
+2
View File
@@ -31,6 +31,8 @@ import entropyTools
import repositoriesTools
import remoteTools
import cacheTools
import equoTools
Equo = equoTools.Equo()
'''
+3 -2
View File
@@ -42,7 +42,7 @@ from yumgui import *
# yumex imports
import filters
from entropyapi import GuiRepositoryController, GuiCacheHelper
from entropyapi import GuiRepositoryController, GuiCacheHelper, Equo
from gui import YumexGUI
from dialogs import *
from misc import const, YumexOptions, YumexProfile
@@ -425,6 +425,7 @@ class YumexApplication(YumexController,YumexGUI):
self.firstTime = True
#self.addPackages()
self.setPage('repos')
self.Equo = Equo
def startWorking(self):
self.isWorking = True
@@ -579,7 +580,7 @@ class YumexApplication(YumexController,YumexGUI):
else:
self.progress.set_mainLabel(_('Repositories updated successfully.'))
self.progressLog(_('Repositories updated successfully.'))
rc = repositoriesTools.checkEquoUpdates()
rc = self.Equo.check_equo_updates()
if rc:
self.progressLog(_('A new "equo" release is available. Please update it before any other package.'))
else: