From 306552d004f90734f5ded47b684bd865903af2d2 Mon Sep 17 00:00:00 2001 From: lxnay Date: Fri, 16 May 2008 07:28:45 +0000 Subject: [PATCH] Entropy: - updated TODO - some slight speed improvements here and there - allow to configure activator packages expiration days in ENV by setting ETP_EXPIRATION_DAYS git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1937 cd1c1023-2f26-0410-ae45-c471fc1f0318 --- TODO | 1 + libraries/databaseTools.py | 101 +++++++++++++--------------------- libraries/entropy.py | 7 +-- libraries/entropyConstants.py | 20 +++++-- server/reagent | 2 +- server/trigger | 4 +- 6 files changed, 61 insertions(+), 74 deletions(-) diff --git a/TODO b/TODO index 9cdca5dc4..6131b8209 100644 --- a/TODO +++ b/TODO @@ -8,6 +8,7 @@ TODO list - server-side: write a ncurses interface to manage entropy database + spm interface + GLSA - server-side: check rdepend function with pandodl - server-side: move officialrepositoryid settings away from repositories.conf + - make.profile support (saving profile information into the db) - implement pdepend support in dependencies sorting - implement package sets (meta packages list) - Community repositories diff --git a/libraries/databaseTools.py b/libraries/databaseTools.py index c2867e5b7..2d77672d5 100644 --- a/libraries/databaseTools.py +++ b/libraries/databaseTools.py @@ -1771,13 +1771,13 @@ class etpDatabase: flags, licenses WHERE - baseinfo.idpackage = '"""+str(idpackage)+"""' + baseinfo.idpackage = (?) and baseinfo.idpackage = extrainfo.idpackage and baseinfo.idcategory = categories.idcategory and extrainfo.idflags = flags.idflags and baseinfo.idlicense = licenses.idlicense """ - self.cursor.execute(sql) + self.cursor.execute(sql, (idpackage,)) return self.cursor.fetchone() def getTriggerInfo(self, idpackage): @@ -1804,76 +1804,56 @@ class etpDatabase: def getPackageData(self, idpackage, get_content = True): data = {} - mydata = self.getBaseData(idpackage) + atom, data['name'], data['version'], data['versiontag'], \ + data['description'], data['category'], data['chost'], \ + data['cflags'], data['cxxflags'],data['homepage'], \ + data['license'], data['branch'], data['download'], \ + data['digest'], data['slot'], data['etpapi'], \ + data['datecreation'], data['size'], data['revision'] = self.getBaseData(idpackage) - data['name'] = mydata[1] - data['version'] = mydata[2] - data['versiontag'] = mydata[3] - data['description'] = mydata[4] - data['category'] = mydata[5] - - data['chost'] = mydata[6] - data['cflags'] = mydata[7] - data['cxxflags'] = mydata[8] - - data['homepage'] = mydata[9] - data['useflags'] = self.retrieveUseflags(idpackage) - data['license'] = mydata[10] - - data['keywords'] = self.retrieveKeywords(idpackage) - - data['branch'] = mydata[11] - data['download'] = mydata[12] - data['digest'] = mydata[13] - data['sources'] = self.retrieveSources(idpackage) - data['counter'] = self.retrieveCounter(idpackage) # cannot insert into the sql above + ### risky to add to the sql above + data['counter'] = self.retrieveCounter(idpackage) data['messages'] = self.retrieveMessages(idpackage) - data['trigger'] = self.retrieveTrigger(idpackage) #FIXME: needed for now because of new column + data['trigger'] = self.retrieveTrigger(idpackage) + data['disksize'] = self.retrieveOnDiskSize(idpackage) - if (self.isSystemPackage(idpackage)): - data['systempackage'] = 'xxx' - else: - data['systempackage'] = '' + data['injected'] = self.isInjected(idpackage) + data['systempackage'] = False + if self.isSystemPackage(idpackage): + data['systempackage'] = True data['config_protect'] = self.retrieveProtect(idpackage) data['config_protect_mask'] = self.retrieveProtectMask(idpackage) - + data['useflags'] = self.retrieveUseflags(idpackage) + data['keywords'] = self.retrieveKeywords(idpackage) + data['sources'] = self.retrieveSources(idpackage) data['eclasses'] = self.retrieveEclasses(idpackage) data['needed'] = self.retrieveNeeded(idpackage, extended = True) + data['provide'] = self.retrieveProvide(idpackage) + data['conflicts'] = self.retrieveConflicts(idpackage) + data['licensedata'] = self.retrieveLicensedata(idpackage) mirrornames = set() for x in data['sources']: if x.startswith("mirror://"): - mirrorname = x.split("/")[2] - mirrornames.add(mirrorname) + mirrornames.add(x.split("/")[2]) data['mirrorlinks'] = [] for mirror in mirrornames: - mirrorlinks = self.retrieveMirrorInfo(mirror) - data['mirrorlinks'].append([mirror,mirrorlinks]) + data['mirrorlinks'].append([mirror,self.retrieveMirrorInfo(mirror)]) - data['slot'] = mydata[14] - data['injected'] = self.isInjected(idpackage) data['content'] = {} if get_content: + mydc = {} mycontent = self.retrieveContent(idpackage, extended = True) - for xfile,filetype in mycontent: - data['content'][xfile] = filetype + for xfile, filetype in mycontent: + mydc[xfile] = filetype + data['content'] = mydc - data['dependencies'] = {} + mydeps = {} depdata = self.retrieveDependencies(idpackage, extended = True) for dep,deptype in depdata: - data['dependencies'][dep] = deptype - data['provide'] = self.retrieveProvide(idpackage) - data['conflicts'] = self.retrieveConflicts(idpackage) - - data['etpapi'] = mydata[15] - data['datecreation'] = mydata[16] - data['size'] = mydata[17] - data['revision'] = mydata[18] - # cannot do this too, for backward compat - data['disksize'] = self.retrieveOnDiskSize(idpackage) - - data['licensedata'] = self.retrieveLicensedata(idpackage) + mydeps[dep] = deptype + data['dependencies'] = mydeps return data @@ -2547,16 +2527,11 @@ class etpDatabase: return False def isInjected(self,idpackage): - try: - self.cursor.execute('SELECT idpackage FROM injected WHERE idpackage = (?)', (idpackage,)) - except: - # readonly database? - return False + self.cursor.execute('SELECT idpackage FROM injected WHERE idpackage = (?)', (idpackage,)) result = self.cursor.fetchone() - rslt = False if result: - rslt = True - return rslt + return True + return False def areCompileFlagsAvailable(self,chost,cflags,cxxflags): @@ -3846,15 +3821,15 @@ class etpDatabase: count += 1 if output: self.updateProgress( - red("Resolving %s") % (darkgreen(atom),), + red("Resolving %s") % (atom,), importance = 0, type = "info", back = True, count = (count,total) ) - match = self.atomMatch(atom) - if (match[0] != -1): - self.addDependRelationToDependsTable(iddep,match[0]) + idpackage, rc = self.atomMatch(atom) + if (idpackage != -1): + self.addDependRelationToDependsTable(iddep,idpackage) del depends # now validate dependstable self.sanitizeDependsTable() diff --git a/libraries/entropy.py b/libraries/entropy.py index 9c9f21cd7..1793ebc48 100644 --- a/libraries/entropy.py +++ b/libraries/entropy.py @@ -3460,14 +3460,14 @@ class EquoInterface(TextInterface): back = True ) # write only if it's a systempackage - data['systempackage'] = '' + data['systempackage'] = False systemPackages = Spm.get_atoms_in_system() for x in systemPackages: x = self.entropyTools.dep_getkey(x) y = data['category']+"/"+data['name'] if x == y: # found - data['systempackage'] = "xxx" + data['systempackage'] = True break if not silent: @@ -12366,8 +12366,7 @@ class ServerInterface(TextInterface): ), importance = 1, type = "info", - header = brown(" @@ "), - back = True + header = brown(" @@ ") ) dbconn.removePackage(idpackage) self.close_server_database(dbconn) diff --git a/libraries/entropyConstants.py b/libraries/entropyConstants.py index de4417c0e..fb7b4826c 100644 --- a/libraries/entropyConstants.py +++ b/libraries/entropyConstants.py @@ -487,14 +487,11 @@ def initConfig_entropyConstants(rootdir): etpConst.update(backed_up_settings) etpConst['backed_up'] = backed_up_settings.copy() - shell_repoid = os.getenv('ETP_REPO') - if shell_repoid: - etpConst['officialrepositoryid'] = shell_repoid + const_setupWithEnvironment() def initConfig_clientConstants(): const_readEquoSettings() - def const_defaultSettings(rootdir): ETP_DIR = rootdir+"/var/lib/entropy" @@ -1294,6 +1291,21 @@ def const_configureServerRepoPaths(): )+"/" +def const_setupWithEnvironment(): + + shell_repoid = os.getenv('ETP_REPO') + if shell_repoid: + etpConst['officialrepositoryid'] = shell_repoid + + expiration_days = os.getenv('ETP_EXPIRATION_DAYS') + if expiration_days: + try: + expiration_days = int(expiration_days) + etpConst['packagesexpirationdays'] = expiration_days + except ValueError: + pass + + def const_setup_perms(mydir, gid): if gid == None: return diff --git a/server/reagent b/server/reagent index ef386d002..949d1cdbc 100644 --- a/server/reagent +++ b/server/reagent @@ -175,7 +175,7 @@ elif (options[0] == "deptest"): elif (options[0] == "libtest"): import server_reagent rc = server_reagent.Entropy.libraries_test() - server_reagent.Entropy.close_server_databases() + x = server_reagent.Entropy.close_server_databases() sys.exit(rc) # deptest tool diff --git a/server/trigger b/server/trigger index 1776a2885..ffe536165 100644 --- a/server/trigger +++ b/server/trigger @@ -48,7 +48,7 @@ 'cxxflags': u'-Os -march=x86-64 -pipe', 'dependencies': set([]), 'chost': u'x86_64-pc-linux-gnu', - 'systempackage': 'xxx', + 'systempackage': True, 'name': u'zlib', 'license': u'ZLIB', 'counter': 14629, @@ -90,4 +90,4 @@ def my_ext_printhello(): run the selected function ''' global my_ext_status -my_ext_status = eval("ext_"+stage)(pkgdata) \ No newline at end of file +my_ext_status = eval("ext_"+stage)(pkgdata)