diff options
author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2018-08-17 04:02:23 +0200 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-08-24 03:25:37 +0530 |
commit | 3237fcd9b23fc2beb43e12c2e2b2b2b98b0e0b48 (patch) | |
tree | 73802425b617c03fde05f6fbebf3336d3216ea3a | |
parent | 4f53161737d766afeb40a5e8c21c52f89fafc5fd (diff) | |
download | meson-3237fcd9b23fc2beb43e12c2e2b2b2b98b0e0b48.zip meson-3237fcd9b23fc2beb43e12c2e2b2b2b98b0e0b48.tar.gz meson-3237fcd9b23fc2beb43e12c2e2b2b2b98b0e0b48.tar.bz2 |
minstall: use follow_symlinks to check executable
This could happen when setting an default install mode but with broken
symlinks.
Fixes #3914
-rw-r--r-- | mesonbuild/minstall.py | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py index ce8e34a..1ca8492 100644 --- a/mesonbuild/minstall.py +++ b/mesonbuild/minstall.py @@ -69,9 +69,9 @@ class DirMaker: for d in self.dirs: append_to_log(self.lf, d) -def is_executable(path): +def is_executable(path, follow_symlinks=False): '''Checks whether any of the "x" bits are set in the source file mode.''' - return bool(os.stat(path).st_mode & 0o111) + return bool(os.stat(path, follow_symlinks=follow_symlinks).st_mode & 0o111) def append_to_log(lf, line): lf.write(line) @@ -107,7 +107,7 @@ def set_chmod(path, mode, dir_fd=None, follow_symlinks=True): def sanitize_permissions(path, umask): if umask is None: return - new_perms = 0o777 if is_executable(path) else 0o666 + new_perms = 0o777 if is_executable(path, follow_symlinks=False) else 0o666 new_perms &= ~umask try: set_chmod(path, new_perms, follow_symlinks=False) |