diff options
author | Gert Wollny <gert.wollny@collabora.com> | 2018-08-03 11:47:28 +0200 |
---|---|---|
committer | Gert Wollny <gw.fossdev@gmail.com> | 2018-08-06 18:42:01 +0200 |
commit | 7a46b2d6418aa1adedf5621ad1a2a43676785851 (patch) | |
tree | 7c594f02f70a8c5b9ab3beecc54a6e2222f88c80 /bin | |
parent | 5eb4b384d93d8733004349756ada0060616789ca (diff) | |
download | mesa-7a46b2d6418aa1adedf5621ad1a2a43676785851.tar.gz mesa-7a46b2d6418aa1adedf5621ad1a2a43676785851.tar.bz2 mesa-7a46b2d6418aa1adedf5621ad1a2a43676785851.zip |
meson, install_megadrivers: Also remove stale symlinks
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.lexist and replace all instances of os.exist (Dylan Baker)
v3: handle directory check correctly (Eric Engestrom)
Fixes: f7f1b30f81e842db6057591470ce3cb6d4fb2795
("meson: extend install_megadrivers script to handle symmlinking")
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>(v2 minus dir check)
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/install_megadrivers.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py index 8d9ed9c6dce..551e385d1a5 100755 --- a/bin/install_megadrivers.py +++ b/bin/install_megadrivers.py @@ -43,13 +43,15 @@ def main(): master = os.path.join(to, os.path.basename(args.megadriver)) if not os.path.exists(to): + if os.path.lexists(to): + os.unlink(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 +62,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) |