diff options
Diffstat (limited to 'bin/regenworld')
-rwxr-xr-x | bin/regenworld | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/bin/regenworld b/bin/regenworld deleted file mode 100755 index e526683..0000000 --- a/bin/regenworld +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/regenworld,v 1.11 2005/02/26 04:14:19 jstubbs Exp $ - -import sys -sys.path.insert(0, "/usr/lib/portage/pym") - -import portage, string, re - -__candidatematcher__ = re.compile("^[0-9]+: \\*\\*\\* emerge ") -__noncandidatematcher__ = re.compile(" sync( |$)| clean( |$)| search( |$)|--oneshot| unmerge( |$)") - -def issyspkg(pkgline): - return (pkgline[0] == "*") - -def iscandidate(logline): - return (__candidatematcher__.match(logline) \ - and not __noncandidatematcher__.search(logline)) - -def getpkginfo(logline): - logline = re.sub("^[0-9]+: \\*\\*\\* emerge ", "", logline) - logline = logline.strip() - logline = re.sub("(\\S+\\.(ebuild|tbz2))|(--\\S+)|inject ", "", logline) - return logline.strip() - -__uniqlist__ = [] -def isunwanted(pkgline): - if pkgline in ["world", "system", "depclean", "info", "regen", ""]: - return False - elif pkgline in __uniqlist__: - return False - elif not re.search("^[a-zA-Z<>=~]", pkgline): - return False - else: - __uniqlist__.append(pkgline) - return True - -# show a little description if we have arguments -if len(sys.argv) >= 2 and sys.argv[1] in ["-h", "--help"]: - print "This script regenerates the portage world file by checking the portage" - print "logfile for all actions that you've done in the past. It ignores any" - print "arguments except --help. It is recommended that you make a backup of" - print "your existing world file (%s) before using this tool." % portage.WORLD_FILE - sys.exit(0) - -worldlist = portage.grabfile(portage.WORLD_FILE) -syslist = portage.settings.packages -syslist = filter(issyspkg, syslist) - -logfile = portage.grabfile("/var/log/emerge.log") -biglist = filter(iscandidate, logfile) -biglist = map(getpkginfo, biglist) -tmplist = [] -for l in biglist: - tmplist += l.split() -biglist = filter(isunwanted, tmplist) -#for p in biglist: -# print p -#sys.exit(0) - -# resolving virtuals -realsyslist = [] -for mykey in syslist: - # drop the asterix - mykey = mykey[1:] - #print "candidate:",mykey - mylist=portage.db["/"]["vartree"].dbapi.match(mykey) - if mylist: - mykey=portage.cpv_getkey(mylist[0]) - if mykey not in realsyslist: - realsyslist.append(mykey) - -for mykey in biglist: - #print "checking:",mykey - try: - mylist=portage.db["/"]["vartree"].dbapi.match(mykey) - except KeyError: - if "--debug" in sys.argv: - print "* ignoring broken log entry for %s (likely injected)" % mykey - except ValueError, e: - print "* %s is an ambigous package name, candidates are:\n%s" % (mykey, e) - continue - if mylist: - #print "mylist:",mylist - myfavkey=portage.cpv_getkey(mylist[0]) - if (myfavkey not in realsyslist) and (myfavkey not in worldlist): - print "add to world:",myfavkey - worldlist.append(myfavkey) - -myfile=open(portage.WORLD_FILE, "w") -myfile.write(string.join(worldlist, '\n')+'\n') -myfile.close() |