repoman: samefile for repo location comparison
authorZac Medico <zmedico@gentoo.org>
Tue, 25 Jun 2013 03:26:15 +0000 (20:26 -0700)
committerZac Medico <zmedico@gentoo.org>
Tue, 25 Jun 2013 03:26:15 +0000 (20:26 -0700)
This ensures correct behavior with symlinks.

bin/repoman

index 5de554cd586ad4f9cf6daeb343bf523646036186..610744910bcb571990ba64a660d92a04ff7dca15 100755 (executable)
@@ -614,7 +614,15 @@ portdir = portdb.porttrees[0]
 commit_env = os.environ.copy()
 # list() is for iteration on a copy.
 for repo in list(repoman_settings.repositories):
-       if repo.location not in [portdir_overlay] + [x.location for x in repo_config.masters]:
+       found = False
+       for location in [portdir_overlay] + [x.location for x in repo_config.masters]:
+               try:
+                       if os.path.samefile(location, repo.location):
+                               found = True
+                               break
+               except OSError:
+                       pass
+       if not found:
                del repoman_settings.repositories[repo.name]
 
 if repo_config.allow_provide_virtual: