aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2023-03-01 11:08:22 +0100
committerTim Jenssen <tim.jenssen@qt.io>2023-03-03 18:21:54 +0000
commitcc4914ff83915cf4235b0cbbf265b4d0e577bb6d (patch)
treec37bccb05430b4f98caf014944acb43386f7b91e /scripts
parent3425b55352d0853e453e6cc8a643cbd4b9d3ce9b (diff)
scripts: add ignore-codesign-paths feature
QtDesignStudio packages Qt into the dmg which is already codesigned. Change-Id: I8d0f0d6df1e8792e44ef93ab6f871e6eecad7183 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/common.py12
-rwxr-xr-xscripts/makedmg.py7
2 files changed, 15 insertions, 4 deletions
diff --git a/scripts/common.py b/scripts/common.py
index fd57ccd2d1..6f12395e4a 100644
--- a/scripts/common.py
+++ b/scripts/common.py
@@ -228,16 +228,22 @@ def conditional_sign_recursive(path, filter):
if is_mac_platform():
os_walk(path, filter, lambda fp: codesign_executable(fp))
-def codesign(app_path):
+def is_filtered(path, ignore_paths):
+ for ignore_path in ignore_paths:
+ if path.startswith(ignore_path):
+ return True
+ return False
+
+def codesign(app_path, filter_paths):
codesign = codesign_call()
if not codesign or not is_mac_platform():
return
# sign all executables in Resources
conditional_sign_recursive(os.path.join(app_path, 'Contents', 'Resources'),
- lambda ff: os.access(ff, os.X_OK))
+ lambda ff: os.access(ff, os.X_OK) and not is_filtered(ff, filter_paths))
# sign all libraries in Imports
conditional_sign_recursive(os.path.join(app_path, 'Contents', 'Imports'),
- lambda ff: ff.endswith('.dylib'))
+ lambda ff: ff.endswith('.dylib') and not is_filtered(ff, filter_paths))
# sign the whole bundle
entitlements_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'dist',
diff --git a/scripts/makedmg.py b/scripts/makedmg.py
index 749a8585ba..3e8d3f34b9 100755
--- a/scripts/makedmg.py
+++ b/scripts/makedmg.py
@@ -19,6 +19,8 @@ def parse_arguments():
parser.add_argument('source_directory', help='directory with the Qt Creator sources')
parser.add_argument('binary_directory', help='directory that contains the Qt Creator.app')
parser.add_argument('--dmg-size', default='1500m', required=False)
+ parser.add_argument('--ignore-codesign-paths', default=None, required=False, help='A list of paths separated by "," relative from the binary_directory. ' +
+ 'example ignore-codesign-paths for content that is already signed: "installed/Qt DesignStudio.app/Resources/qt6_design_studio_reduced_version"')
return parser.parse_args()
def main():
@@ -29,7 +31,10 @@ def main():
common.copytree(arguments.binary_directory, tempdir, symlinks=True, ignore=common.is_debug)
if common.is_mac_platform():
app_path = [app for app in os.listdir(tempdir) if app.endswith('.app')][0]
- common.codesign(os.path.join(tempdir, app_path))
+ if arguments.ignore_codesign_paths:
+ ignore_codesign_paths = arguments.ignore_codesign_paths.split(',')
+ ignore_codesign_paths = [os.path.join(tempdir_base, path) for path in ignore_codesign_paths]
+ common.codesign(os.path.join(tempdir, app_path), ignore_codesign_paths)
os.symlink('/Applications', os.path.join(tempdir, 'Applications'))
shutil.copy(os.path.join(arguments.source_directory, 'LICENSE.GPL3-EXCEPT'), tempdir)
dmg_cmd = ['hdiutil', 'create', '-srcfolder', tempdir, '-volname', arguments.dmg_volumename,