[Mesa-dev] [PATCH v2] meson, install_megadrivers: Also remove stale symlinks
Eric Engestrom
eric.engestrom at intel.com
Mon Aug 6 15:59:00 UTC 2018
On Monday, 2018-08-06 09:41:48 +0200, Gert Wollny wrote:
> 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.wollny at 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)
I'm not convinced on this one: if the `to` destination is a symlink but
the destination of the symlink doesn't exist, we shouldn't just consider
that the folder has already been created and is ready for use.
I think here we should either just ignore that case, or if we want to
handle it then it should be:
if not exists(to):
if lexists(to):
unlink(to)
makedirs(to)
The other two below are
Reviewed-by: Eric Engestrom <eric.engestrom at intel.com>
> 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list