mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-20 01:13:09 +02:00
build, qt: Align frameworks with macOS codesign tool requirements
Currently the codesign tool fails to sign copied frameworks.
This commit is contained in:
@ -245,6 +245,7 @@ def copyFramework(framework: FrameworkInfo, path: str, verbose: int) -> Optional
|
|||||||
toDir = os.path.join(path, framework.destinationDirectory)
|
toDir = os.path.join(path, framework.destinationDirectory)
|
||||||
toPath = os.path.join(toDir, framework.binaryName)
|
toPath = os.path.join(toDir, framework.binaryName)
|
||||||
|
|
||||||
|
if framework.isDylib():
|
||||||
if not os.path.exists(fromPath):
|
if not os.path.exists(fromPath):
|
||||||
raise RuntimeError(f"No file at {fromPath}")
|
raise RuntimeError(f"No file at {fromPath}")
|
||||||
|
|
||||||
@ -258,35 +259,32 @@ def copyFramework(framework: FrameworkInfo, path: str, verbose: int) -> Optional
|
|||||||
if verbose:
|
if verbose:
|
||||||
print("Copied:", fromPath)
|
print("Copied:", fromPath)
|
||||||
print(" to:", toPath)
|
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)
|
permissions = os.stat(toPath)
|
||||||
if not permissions.st_mode & stat.S_IWRITE:
|
if not permissions.st_mode & stat.S_IWRITE:
|
||||||
os.chmod(toPath, 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
|
return toPath
|
||||||
|
|
||||||
def deployFrameworks(frameworks: List[FrameworkInfo], bundlePath: str, binaryPath: str, strip: bool, verbose: int, deploymentInfo: Optional[DeploymentInfo] = None) -> DeploymentInfo:
|
def deployFrameworks(frameworks: List[FrameworkInfo], bundlePath: str, binaryPath: str, strip: bool, verbose: int, deploymentInfo: Optional[DeploymentInfo] = None) -> DeploymentInfo:
|
||||||
|
Reference in New Issue
Block a user