diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2023-03-01 11:08:22 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2023-03-03 18:21:54 +0000 |
commit | cc4914ff83915cf4235b0cbbf265b4d0e577bb6d (patch) | |
tree | c37bccb05430b4f98caf014944acb43386f7b91e | |
parent | 3425b55352d0853e453e6cc8a643cbd4b9d3ce9b (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>
-rw-r--r-- | scripts/common.py | 12 | ||||
-rwxr-xr-x | scripts/makedmg.py | 7 |
2 files changed, 15 insertions, 4 deletions
diff --git a/scripts/common.py b/scripts/common.py index fd57ccd2d1e..6f12395e4a0 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 749a8585ba7..3e8d3f34b91 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, |