From 13a764c91ec94b15dd38b0fdbaf3a6054d46598d Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 13 Mar 2021 13:09:46 +0100 Subject: [PATCH] makewheel: Don't run codesign --remove-signature on files without signature See #927 --- makepanda/makewheel.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/makepanda/makewheel.py b/makepanda/makewheel.py index a8fbb1d3e3..aaf7efa24e 100644 --- a/makepanda/makewheel.py +++ b/makepanda/makewheel.py @@ -404,6 +404,7 @@ class WheelFile(object): # Now add dependencies. On macOS, fix @loader_path references. if sys.platform == "darwin": + is_unsigned = subprocess.call(['codesign', '-d', temp.name], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) if source_path.endswith('deploy-stubw'): deps_path = '@executable_path/../Frameworks' else: @@ -444,13 +445,14 @@ class WheelFile(object): remove_signature = True # Replace the codesign signature if we modified the library. - if remove_signature: - if self.platform.endswith("_arm64"): - subprocess.call(["codesign", "-f", "-s", "-", temp.name]) - else: - subprocess.call(["codesign", "--remove-signature", temp.name]) - if self.platform.endswith("_universal2"): - subprocess.call(["codesign", "-a", "arm64", "-s", "-", temp.name]) + if self.platform.endswith("_arm64") and (is_unsigned or remove_signature): + subprocess.call(["codesign", "-f", "-s", "-", temp.name]) + elif remove_signature and not is_unsigned: + if GetVerbose(): + print("Removing code signature from {0}".format(source_path)) + subprocess.call(["codesign", "--remove-signature", temp.name]) + if self.platform.endswith("_universal2"): + subprocess.call(["codesign", "-a", "arm64", "-s", "-", temp.name]) else: # On other unixes, we just add dependencies normally. for dep in deps: