aboutsummaryrefslogtreecommitdiffstats
path: root/build_scripts/utils.py
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2018-05-07 17:19:57 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2018-05-08 08:27:57 +0000
commit928a5249dad9543a669ab07a0108aca26c0642cb (patch)
tree76be12a83fe278cfcfdfa025c5a2ed2c5982d9ce /build_scripts/utils.py
parent31e38f359e92291aa009aa91fb292928dc31b341 (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.py10
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):