diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2018-05-07 17:19:57 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2018-05-08 08:27:57 +0000 |
commit | 928a5249dad9543a669ab07a0108aca26c0642cb (patch) | |
tree | 76be12a83fe278cfcfdfa025c5a2ed2c5982d9ce /build_scripts/utils.py | |
parent | 31e38f359e92291aa009aa91fb292928dc31b341 (diff) |
Make sure copied libclang file has write permissions
When doing a standalone rebuild on macOS, if the libclang library
copied over has no write permissions set, the install procedure will
fail with permission denied error.
Make sure to make the file owner writable, so that any subsequent
rebuilds don't cause a failure.
Change-Id: I54bb3f6e8bd8db7f8ed2de17892fcedec09b6c32
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'build_scripts/utils.py')
-rw-r--r-- | build_scripts/utils.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/build_scripts/utils.py b/build_scripts/utils.py index db95df8a8..af40916b7 100644 --- a/build_scripts/utils.py +++ b/build_scripts/utils.py @@ -39,6 +39,7 @@ import sys import os +import stat import re import stat import errno @@ -274,7 +275,8 @@ def init_msvc_env(platform_arch, build_type): log.info("Done initializing MSVC env") -def copyfile(src, dst, force=True, vars=None, force_copy_symlink=False): +def copyfile(src, dst, force=True, vars=None, force_copy_symlink=False, + make_writable_by_owner=False): if vars is not None: src = src.format(**vars) dst = dst.format(**vars) @@ -287,6 +289,9 @@ def copyfile(src, dst, force=True, vars=None, force_copy_symlink=False): if not os.path.islink(src) or force_copy_symlink: log.info("Copying file {} to {}.".format(src, dst)) shutil.copy2(src, dst) + if make_writable_by_owner: + make_file_writable_by_owner(dst) + else: linkTargetPath = os.path.realpath(src) if os.path.dirname(linkTargetPath) == os.path.dirname(src): @@ -400,6 +405,9 @@ def copydir(src, dst, filter=None, ignore=None, force=True, recursive=True, raise EnvironmentError(errors) return results +def make_file_writable_by_owner(path): + current_permissions = stat.S_IMODE(os.lstat(path).st_mode) + os.chmod(path, current_permissions | stat.S_IWUSR) def rmtree(dirname): def handleRemoveReadonly(func, path, exc): |