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
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)
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] != "/":