From 285308f0dc73bb1af88a0c069349c4908d16cbce Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@cd1c1023-2f26-0410-ae45-c471fc1f0318> Date: Thu, 6 Dec 2007 20:11:06 +0000 Subject: [PATCH] added a workaround to handle tbz2s without COUNTER git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@808 cd1c1023-2f26-0410-ae45-c471fc1f0318 --- client/rescueTools.py | 2 ++ libraries/databaseTools.py | 26 ++++++++++++++++++++++---- libraries/entropyTools.py | 10 +++++++--- libraries/reagentTools.py | 2 ++ 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/client/rescueTools.py b/client/rescueTools.py index 32e13dcb6..57679507d 100644 --- a/client/rescueTools.py +++ b/client/rescueTools.py @@ -317,6 +317,8 @@ def database(options): # packages to be removed from the database databaseCounters = clientDbconn.listAllCounters() for x in databaseCounters: + if x[0] < 0: # skip packages without valid counter + continue if x[0] not in installedCounters: # check if the package is in toBeAdded if (toBeAdded): diff --git a/libraries/databaseTools.py b/libraries/databaseTools.py index e1580a92f..64e05c109 100644 --- a/libraries/databaseTools.py +++ b/libraries/databaseTools.py @@ -616,8 +616,22 @@ class etpDatabase: ) ) - # counter, if != -1 + etpData['counter'] = int(etpData['counter']) # cast to integer if etpData['counter'] != -1: + + 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 + try: self.cursor.execute( 'INSERT into counters VALUES ' @@ -2601,10 +2615,14 @@ class etpDatabase: self.cursor.execute('SELECT atom,idpackage,branch FROM baseinfo') return self.cursor.fetchall() - def listAllCounters(self): + def listAllCounters(self, onlycounters = False): dbLog.log(ETP_LOGPRI_INFO,ETP_LOGLEVEL_VERBOSE,"listAllCounters: called.") - self.cursor.execute('SELECT counter,idpackage FROM counters') - return self.cursor.fetchall() + if onlycounters: + self.cursor.execute('SELECT counter FROM counters') + return self.fetchall2set(self.cursor.fetchall()) + else: + self.cursor.execute('SELECT counter,idpackage FROM counters') + return self.cursor.fetchall() def listAllIdpackages(self, branch = None): dbLog.log(ETP_LOGPRI_INFO,ETP_LOGLEVEL_VERBOSE,"listAllIdpackages: called.") diff --git a/libraries/entropyTools.py b/libraries/entropyTools.py index c8f4aedf5..0be26c9a0 100644 --- a/libraries/entropyTools.py +++ b/libraries/entropyTools.py @@ -1681,9 +1681,13 @@ def extractPkgData(package, etpBranch = etpConst['branch'], silent = False): if not silent: print_info(yellow(" * ")+red(info_package+"Getting package counter..."),back = True) # Fill counter - f = open(tbz2TmpDir+dbCOUNTER,"r") - data['counter'] = f.readline().strip() - f.close() + try: + f = open(tbz2TmpDir+dbCOUNTER,"r") + data['counter'] = int(f.readline().strip()) + f.close() + except IOError: + data['counter'] = -2 # -2 values will be insterted as incremental negative values into the database + if not silent: print_info(yellow(" * ")+red(info_package+"Getting package category..."),back = True) # Fill category diff --git a/libraries/reagentTools.py b/libraries/reagentTools.py index 2bb4ea3ab..fb145ca84 100644 --- a/libraries/reagentTools.py +++ b/libraries/reagentTools.py @@ -135,6 +135,8 @@ def update(options): # packages to be removed from the database databaseCounters = dbconn.listAllCounters() for x in databaseCounters: + if x[0] < 0: + continue # skip packages without valid counter if x[0] not in installedCounters: # check if the package is in toBeAdded if (toBeAdded):