From 71b5bbf7516cf75b9dafcdf9558a64b9bfc7bd79 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 22 Feb 2008 06:46:49 +0000 Subject: Bug #211067 - Make the "portdir_overlay" and "mydir" variables contain 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. svn path=/main/trunk/; revision=9365 --- pym/repoman/utilities.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'pym') diff --git a/pym/repoman/utilities.py b/pym/repoman/utilities.py index 379e47e6d..3cefff5ec 100644 --- a/pym/repoman/utilities.py +++ b/pym/repoman/utilities.py @@ -308,12 +308,12 @@ def FindPortdir(settings): location = normalize_path(location) - path_ids = set() + path_ids = {} p = location 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) @@ -326,10 +326,12 @@ def FindPortdir(settings): 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 = location[len(overlay):] if subdir and subdir[-1] != "/": -- cgit v1.2.3-1-g7c22