- adding support for transforming packages into injected, useful for tagged ones
git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1176 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
+25
-22
@@ -925,16 +925,7 @@ class etpDatabase(TextInterface):
|
||||
|
||||
if etpData['counter'] <= -2:
|
||||
# special cases
|
||||
|
||||
try:
|
||||
mycounters = list(self.listAllCounters(onlycounters = True))
|
||||
mycounter = min(mycounters)
|
||||
if mycounter >= -1:
|
||||
etpData['counter'] = -2
|
||||
else:
|
||||
etpData['counter'] = mycounter-1
|
||||
except:
|
||||
etpData['counter'] = -2
|
||||
etpData['counter'] = self.getNewNegativeCounter()
|
||||
|
||||
try:
|
||||
self.cursor.execute(
|
||||
@@ -1034,19 +1025,9 @@ class etpDatabase(TextInterface):
|
||||
|
||||
# injected?
|
||||
if etpData['injected']:
|
||||
try:
|
||||
self.cursor.execute(
|
||||
'INSERT into injected VALUES '
|
||||
'(?)'
|
||||
, ( idpackage, )
|
||||
)
|
||||
except: # FIXME: remove this before 1.0
|
||||
if not self.doesTableExist("injected"):
|
||||
self.createInjectedTable()
|
||||
self.cursor.execute(
|
||||
'INSERT into injected VALUES '
|
||||
'(?)'
|
||||
, ( idpackage, )
|
||||
)
|
||||
self.setInjected(idpackage)
|
||||
|
||||
# compile messages
|
||||
if not self.doesTableExist("messages"):
|
||||
@@ -1505,6 +1486,15 @@ class etpDatabase(TextInterface):
|
||||
raise exceptionTools.CorruptionError("CorruptionError: I tried to insert compile flags but then, fetching it returned -1. There's something broken.")
|
||||
self.commitChanges()
|
||||
|
||||
def setInjected(self, idpackage):
|
||||
self.checkReadOnly()
|
||||
if not self.isInjected(idpackage):
|
||||
self.cursor.execute(
|
||||
'INSERT into injected VALUES '
|
||||
'(?)'
|
||||
, ( idpackage, )
|
||||
)
|
||||
|
||||
# date expressed the unix way
|
||||
def setDateCreation(self, idpackage, date):
|
||||
self.checkReadOnly()
|
||||
@@ -1797,6 +1787,19 @@ class etpDatabase(TextInterface):
|
||||
self.cursor.execute('DELETE FROM dependenciesreference WHERE iddependency = '+str(iddep))
|
||||
self.commitChanges()
|
||||
|
||||
def getNewNegativeCounter(self):
|
||||
counter = -2
|
||||
try:
|
||||
mycounters = list(self.listAllCounters(onlycounters = True))
|
||||
mycounter = min(mycounters)
|
||||
if mycounter >= -1:
|
||||
counter = -2
|
||||
else:
|
||||
counter = mycounter-1
|
||||
except:
|
||||
pass
|
||||
return counter
|
||||
|
||||
def getIDPackage(self, atom, branch = etpConst['branch']):
|
||||
self.cursor.execute('SELECT "IDPACKAGE" FROM baseinfo WHERE atom = "'+atom+'" AND branch = "'+branch+'"')
|
||||
idpackage = -1
|
||||
|
||||
@@ -137,6 +137,7 @@ def update(options):
|
||||
installedCounters = set()
|
||||
toBeAdded = set()
|
||||
toBeRemoved = set()
|
||||
toBeInjected = set()
|
||||
|
||||
# packages to be added
|
||||
for x in installedPackages[0]:
|
||||
@@ -153,13 +154,14 @@ def update(options):
|
||||
if x[0] not in installedCounters:
|
||||
# check if the package is in toBeAdded
|
||||
if (toBeAdded):
|
||||
#print x
|
||||
|
||||
atom = dbconn.retrieveAtom(x[1])
|
||||
atomkey = Entropy.entropyTools.dep_getkey(atom)
|
||||
atomtag = Entropy.entropyTools.dep_gettag(atom)
|
||||
atomslot = dbconn.retrieveSlot(x[1])
|
||||
|
||||
add = True
|
||||
tagfound = False
|
||||
for pkgdata in toBeAdded:
|
||||
addslot = getPackageSlot(pkgdata[0])
|
||||
addkey = Entropy.entropyTools.dep_getkey(pkgdata[0])
|
||||
@@ -173,13 +175,38 @@ def update(options):
|
||||
if add:
|
||||
toBeRemoved.add(x[1])
|
||||
else:
|
||||
toBeRemoved.add(x[1])
|
||||
if dbconn.retrieveVersionTag(x[1]) != None:
|
||||
if not dbconn.isInjected(x[1]):
|
||||
toBeInjected.add(x[1])
|
||||
else:
|
||||
toBeRemoved.add(x[1])
|
||||
|
||||
if (not toBeRemoved) and (not toBeAdded):
|
||||
if (not toBeRemoved) and (not toBeAdded) and (not toBeInjected):
|
||||
print_info(brown(" * ")+red("Nothing to do, check later."))
|
||||
# then exit gracefully
|
||||
return 0
|
||||
|
||||
if (toBeInjected):
|
||||
print_info(brown(" @@ ")+blue("These are the packages that would be changed to injected status:"))
|
||||
for x in toBeInjected:
|
||||
atom = dbconn.retrieveAtom(x)
|
||||
print_info(brown(" # ")+red(atom))
|
||||
if reagentRequestAsk:
|
||||
rc = Entropy.askQuestion(">> Would you like to transform them now ?")
|
||||
else:
|
||||
rc = "Yes"
|
||||
if rc == "Yes":
|
||||
rwdbconn = Entropy.databaseTools.openServerDatabase(readOnly = False, noUpload = True)
|
||||
for x in toBeInjected:
|
||||
atom = rwdbconn.retrieveAtom(x)
|
||||
print_info(brown(" <> ")+blue("Transforming from database: ")+red(atom))
|
||||
# get new counter
|
||||
counter = rwdbconn.getNewNegativeCounter()
|
||||
rwdbconn.setCounter(x,counter)
|
||||
rwdbconn.setInjected(x)
|
||||
rwdbconn.closeDB()
|
||||
print_info(brown(" @@ ")+blue("Database transform complete."))
|
||||
|
||||
if (toBeRemoved):
|
||||
print_info(brown(" @@ ")+blue("These are the packages that would be removed from the database:"))
|
||||
for x in toBeRemoved:
|
||||
|
||||
Reference in New Issue
Block a user