Bug #211067 - Make the "portdir_overlay" and "mydir" variables contain
authorZac Medico <zmedico@gentoo.org>
Fri, 22 Feb 2008 06:48:03 +0000 (06:48 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 22 Feb 2008 06:48:03 +0000 (06:48 -0000)
paths that are consistent wrt eachother regardless of any path
irregularities that can be induced by symlinks. Consistency is achieved
by regenerating one of the paths to ensure that both paths have the exact
same mapping between inodes and paths. This consistency ensures that the
path manipulations used to calculate "repolevel" will work as intended.
(trunk r9365)

svn path=/main/branches/2.1.2/; revision=9366

bin/repoman

index 801390e7714d13384a01d310fb7168bb8246a9c9..3d079f1e76ecafc12a24d608f38d5581a404f6c0 100755 (executable)
@@ -614,12 +614,12 @@ if "PWD" in os.environ and os.environ["PWD"] != mydir and \
        # the current working directory (from the shell).
        mydir = os.environ["PWD"]
 mydir = normalize_path(mydir)
-path_ids = set()
+path_ids = {}
 p = mydir
 s = None
 while True:
        s = os.stat(p)
-       path_ids.add((s.st_dev, s.st_ino))
+       path_ids[(s.st_dev, s.st_ino)] = p
        if p == "/":
                break
        p = os.path.dirname(p)
@@ -632,10 +632,12 @@ for overlay in repoman_settings["PORTDIR_OVERLAY"].split():
                s = os.stat(overlay)
        except OSError:
                continue
-       overlay_id = (s.st_dev, s.st_ino)
+       overlay = path_ids.get((s.st_dev, s.st_ino))
+       if overlay is None:
+               continue
        if overlay[-1] != "/":
                overlay += "/"
-       if overlay_id in path_ids:
+       if True:
                portdir_overlay = overlay
                subdir = mydir[len(overlay):]
                if subdir and subdir[-1] != "/":