os.path.exists doesn't return True for stale symlinks, but they are in the way later, when a link/file with the same name is to be created. For instance it is conceivable that the pointed to file is replaced by a file with a new name, and then the symlink is dead.
To handle this check specifically for all existing symlinks to be removed. (This bugged me for some time with a link libXvMCr600.so always being in the way of installing this file) v2: use only os.path.lexist and replace all instances of os.path.exist (Dylan Baker) Fixes: f7f1b30f81e842db6057591470ce3cb6d4fb2795 ("meson: extend install_megadrivers script to handle symmlinking") Signed-off-by: Gert Wollny <gert.wol...@collabora.com> --- bin/install_megadrivers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py index 8d9ed9c6dc..3a31fddd89 100755 --- a/bin/install_megadrivers.py +++ b/bin/install_megadrivers.py @@ -42,14 +42,14 @@ def main(): master = os.path.join(to, os.path.basename(args.megadriver)) - if not os.path.exists(to): + if not os.path.lexists(to): os.makedirs(to) shutil.copy(args.megadriver, master) for driver in args.drivers: abs_driver = os.path.join(to, driver) - if os.path.exists(abs_driver): + if os.path.lexists(abs_driver): os.unlink(abs_driver) print('installing {} to {}'.format(args.megadriver, abs_driver)) os.link(master, abs_driver) @@ -60,7 +60,7 @@ def main(): name, ext = os.path.splitext(driver) while ext != '.so': - if os.path.exists(name): + if os.path.lexists(name): os.unlink(name) os.symlink(driver, name) name, ext = os.path.splitext(name) -- 2.16.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev