aboutsummaryrefslogtreecommitdiff
path: root/contrib/macdeploy
diff options
context:
space:
mode:
authorHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2021-07-25 18:17:15 +0300
committerHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2022-02-17 14:10:11 +0200
commitc26a0a5af76bed9c2eb65f1a19725508c55299e8 (patch)
tree93851e8d66dd901e672d4503cc6ce24a1cd22688 /contrib/macdeploy
parentdf0825046acc7cb496c47666e36af18118beb030 (diff)
build, qt: Align frameworks with macOS codesign tool requirements
Currently the codesign tool fails to sign copied frameworks.
Diffstat (limited to 'contrib/macdeploy')
-rwxr-xr-xcontrib/macdeploy/macdeployqtplus74
1 files changed, 36 insertions, 38 deletions
diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus
index 3b76108034..b8f5705b41 100755
--- a/contrib/macdeploy/macdeployqtplus
+++ b/contrib/macdeploy/macdeployqtplus
@@ -244,49 +244,47 @@ def copyFramework(framework: FrameworkInfo, path: str, verbose: int) -> Optional
fromPath = framework.sourceFilePath
toDir = os.path.join(path, framework.destinationDirectory)
toPath = os.path.join(toDir, framework.binaryName)
-
- if not os.path.exists(fromPath):
- raise RuntimeError(f"No file at {fromPath}")
-
- if os.path.exists(toPath):
- return None # Already there
-
- if not os.path.exists(toDir):
- os.makedirs(toDir)
-
- shutil.copy2(fromPath, toPath)
- if verbose:
- print("Copied:", fromPath)
- print(" to:", toPath)
+
+ if framework.isDylib():
+ if not os.path.exists(fromPath):
+ raise RuntimeError(f"No file at {fromPath}")
+
+ if os.path.exists(toPath):
+ return None # Already there
+
+ if not os.path.exists(toDir):
+ os.makedirs(toDir)
+
+ shutil.copy2(fromPath, toPath)
+ if verbose:
+ print("Copied:", fromPath)
+ print(" to:", toPath)
+ else:
+ to_dir = os.path.join(path, "Contents", "Frameworks", framework.frameworkName)
+ if os.path.exists(to_dir):
+ return None # Already there
+
+ from_dir = framework.frameworkPath
+ if not os.path.exists(from_dir):
+ raise RuntimeError(f"No directory at {from_dir}")
+
+ shutil.copytree(from_dir, to_dir, symlinks=True)
+ if verbose:
+ print("Copied:", from_dir)
+ print(" to:", to_dir)
+
+ headers_link = os.path.join(to_dir, "Headers")
+ if os.path.exists(headers_link):
+ os.unlink(headers_link)
+
+ headers_dir = os.path.join(to_dir, framework.binaryDirectory, "Headers")
+ if os.path.exists(headers_dir):
+ shutil.rmtree(headers_dir)
permissions = os.stat(toPath)
if not permissions.st_mode & stat.S_IWRITE:
os.chmod(toPath, permissions.st_mode | stat.S_IWRITE)
- if not framework.isDylib(): # Copy resources for real frameworks
-
- linkfrom = os.path.join(path, "Contents","Frameworks", framework.frameworkName, "Versions", "Current")
- linkto = framework.version
- if not os.path.exists(linkfrom):
- os.symlink(linkto, linkfrom)
- print("Linked:", linkfrom, "->", linkto)
- fromResourcesDir = framework.sourceResourcesDirectory
- if os.path.exists(fromResourcesDir):
- toResourcesDir = os.path.join(path, framework.destinationResourcesDirectory)
- shutil.copytree(fromResourcesDir, toResourcesDir, symlinks=True)
- if verbose:
- print("Copied resources:", fromResourcesDir)
- print(" to:", toResourcesDir)
- fromContentsDir = framework.sourceVersionContentsDirectory
- if not os.path.exists(fromContentsDir):
- fromContentsDir = framework.sourceContentsDirectory
- if os.path.exists(fromContentsDir):
- toContentsDir = os.path.join(path, framework.destinationVersionContentsDirectory)
- shutil.copytree(fromContentsDir, toContentsDir, symlinks=True)
- if verbose:
- print("Copied Contents:", fromContentsDir)
- print(" to:", toContentsDir)
-
return toPath
def deployFrameworks(frameworks: List[FrameworkInfo], bundlePath: str, binaryPath: str, strip: bool, verbose: int, deploymentInfo: Optional[DeploymentInfo] = None) -> DeploymentInfo: