Update GNU-stack URLs.
[portage.git] / bin / regenworld
index 354755e3068b31ac5eda5c62e4dd3ebdc479a678..f74b3dde06d42c052e446caf23578a97b3d35359 100755 (executable)
@@ -1,21 +1,17 @@
 #!/usr/bin/python
-# Copyright 1999-2006 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-# NOTE: this file does not respect ROOT
-
 from __future__ import print_function
 
 import sys
-try:
-       import portage
-except ImportError:
-       from os import path as osp
-       sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
-       import portage
-
+from os import path as osp
+pym_path = osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")
+sys.path.insert(0, pym_path)
+import portage
+portage._internal_caller = True
 from portage import os
-from portage.sets.files import StaticFileSet, WorldSelectedSet
+from portage._sets.files import StaticFileSet, WorldSelectedSet
 
 import re
 import tempfile
@@ -49,7 +45,8 @@ def isunwanted(pkgline):
                __uniqlist__.append(pkgline)
                return True
 
-world_file = os.path.join("/", portage.WORLD_FILE)
+eroot = portage.settings['EROOT']
+world_file = os.path.join(eroot, portage.WORLD_FILE)
 
 # show a little description if we have arguments
 if len(sys.argv) >= 2 and sys.argv[1] in ["-h", "--help"]:
@@ -59,10 +56,10 @@ if len(sys.argv) >= 2 and sys.argv[1] in ["-h", "--help"]:
        print("your existing world file (%s) before using this tool." % world_file)
        sys.exit(0)
 
-worldlist = portage.grabfile(os.path.join("/", portage.WORLD_FILE))
+worldlist = portage.grabfile(world_file)
 syslist = [x for x in portage.settings.packages if issyspkg(x)]
 
-logfile = portage.grabfile("/var/log/emerge.log")
+logfile = portage.grabfile(os.path.join(eroot, "var/log/emerge.log"))
 biglist = [getpkginfo(x) for x in logfile if iscandidate(x)]
 tmplist = []
 for l in biglist:
@@ -78,7 +75,7 @@ for mykey in syslist:
        # drop the asterix
        mykey = mykey[1:]
        #print("candidate:",mykey)
-       mylist=portage.db["/"]["vartree"].dbapi.match(mykey)
+       mylist = portage.db[eroot]["vartree"].dbapi.match(mykey)
        if mylist:
                mykey=portage.cpv_getkey(mylist[0])
                if mykey not in realsyslist:
@@ -87,12 +84,16 @@ for mykey in syslist:
 for mykey in biglist:
        #print("checking:",mykey)
        try:
-               mylist=portage.db["/"]["vartree"].dbapi.match(mykey)
+               mylist = portage.db[eroot]["vartree"].dbapi.match(mykey)
        except (portage.exception.InvalidAtom, KeyError):
                if "--debug" in sys.argv:
                        print("* ignoring broken log entry for %s (likely injected)" % mykey)
        except ValueError as e:
-               print("* %s is an ambigous package name, candidates are:\n%s" % (mykey, e))
+               try:
+                       print("* %s is an ambiguous package name, candidates are:\n%s" % (mykey, e))
+               except AttributeError:
+                       # FIXME: Find out what causes this (bug #344845).
+                       print("* %s is an ambiguous package name" % (mykey,))
                continue
        if mylist:
                #print "mylist:",mylist
@@ -104,7 +105,7 @@ for mykey in biglist:
 if not worldlist:
        pass
 else:
-       existing_set = WorldSelectedSet('/')
+       existing_set = WorldSelectedSet(eroot)
        existing_set.load()
 
        if not existing_set: