Fix the "Appending to PORTDIR_OVERLAY..." feature which was
authorZac Medico <zmedico@gentoo.org>
Fri, 11 Jan 2008 02:18:39 +0000 (02:18 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 11 Jan 2008 02:18:39 +0000 (02:18 -0000)
broken by the previous commit.

svn path=/main/trunk/; revision=9165

bin/ebuild

index 1c4acef79fe70e33350bfa6f8eefabc15d5a4bc8..67c5b9cce29aafa1dc7ff15761bf95e9fd775f66 100755 (executable)
@@ -57,10 +57,17 @@ if not os.path.isabs(ebuild):
 ebuild = portage.normalize_path(ebuild)
 # portdbapi uses the canonical path for the base of the portage tree, but
 # subdirectories of the base can be built from symlinks (like crossdev does).
-ebuild_portdir = os.path.realpath(os.path.dirname(os.path.dirname(ebuild)))
-ebuild = os.path.join(ebuild_portdir, *ebuild.split(os.path.sep)[-2:])
+ebuild_portdir = os.path.realpath(
+       os.path.dirname(os.path.dirname(os.path.dirname(ebuild))))
+ebuild = os.path.join(ebuild_portdir, *ebuild.split(os.path.sep)[-3:])
 
 # Make sure that portdb.findname() returns the correct ebuild.
+if ebuild_portdir not in portage.portdb.porttrees:
+       os.environ["PORTDIR_OVERLAY"] = \
+               os.environ.get("PORTDIR_OVERLAY","") + " " + ebuild_portdir
+       print "Appending %s to PORTDIR_OVERLAY..." % ebuild_portdir
+       portage.close_portdbapi_caches()
+       reload(portage)
 del portage.portdb.porttrees[1:]
 if ebuild_portdir != portage.portdb.porttree_root:
        portage.portdb.porttrees.append(ebuild_portdir)
@@ -92,17 +99,8 @@ else:
        portage_ebuild = portage.portdb.findname(cpv)
 
        if not portage_ebuild or portage_ebuild != ebuild:
-               overlay = "/".join(ebuild_split[:-2])
-               os.environ["PORTDIR_OVERLAY"] = os.environ.get("PORTDIR_OVERLAY","") + " " + overlay
-               print "Appending %s to PORTDIR_OVERLAY..." % overlay
-               portage.close_portdbapi_caches()
-               reload(portage)
-               portage_ebuild = portage.portdb.findname(cpv)
-
-               if not portage_ebuild or portage_ebuild != ebuild:
-                       print "!!! %s does not seem to have a valid PORTDIR structure." % overlay
-                       sys.exit(1)
-
+               print "!!! %s does not seem to have a valid PORTDIR structure." % ebuild
+               sys.exit(1)
 
 if len(pargs) > 1 and "config" in pargs:
        print "config must be called on it's own, not combined with any other phase"