aboutsummaryrefslogtreecommitdiffstats
path: root/build_scripts
diff options
context:
space:
mode:
Diffstat (limited to 'build_scripts')
-rw-r--r--build_scripts/main.py7
-rw-r--r--build_scripts/utils.py10
2 files changed, 15 insertions, 2 deletions
diff --git a/build_scripts/main.py b/build_scripts/main.py
index a98a254e0..eb1a12ac2 100644
--- a/build_scripts/main.py
+++ b/build_scripts/main.py
@@ -1211,7 +1211,12 @@ class pyside_build(_build):
'pyside_package'))
if os.path.exists(clang_lib_path):
log.info('Copying libclang shared library to the package folder.')
- copyfile(clang_lib_path, destination_dir)
+ basename = os.path.basename(clang_lib_path)
+ destination_path = os.path.join(destination_dir, basename)
+
+ # Need to modify permissions in case file is not writable
+ # (a reinstall would cause a permission denied error).
+ copyfile(clang_lib_path, destination_path, make_writable_by_owner=True)
else:
raise RuntimeError("Error copying libclang library "
"from {} to {}. ".format(
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):