aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2023-10-20 15:15:40 -0700
committerMicah Lee <micah@micahflee.com>2023-10-20 15:15:40 -0700
commit0631d14d78a7feda99fa60889665bb3c64e6af93 (patch)
tree686298a4bd9f7d246c85c9f15cc4415a552fc9c5
parentc524afd87b179f62bd26c73492ff12697f53d7f1 (diff)
downloadonionshare-0631d14d78a7feda99fa60889665bb3c64e6af93.tar.gz
onionshare-0631d14d78a7feda99fa60889665bb3c64e6af93.zip
Move get_binary_arches into common, and code sign every binary in the app bundle
-rw-r--r--desktop/scripts/build-macos.py33
-rw-r--r--desktop/scripts/common.py32
-rwxr-xr-xdesktop/scripts/macos-merge-universal.py29
3 files changed, 45 insertions, 49 deletions
diff --git a/desktop/scripts/build-macos.py b/desktop/scripts/build-macos.py
index c2e4251c..c998eb0d 100644
--- a/desktop/scripts/build-macos.py
+++ b/desktop/scripts/build-macos.py
@@ -7,6 +7,8 @@ import shutil
import glob
import itertools
+from common import get_binary_arches
+
root = os.path.dirname(
os.path.dirname(
os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
@@ -54,6 +56,10 @@ def sign(path, entitlements, identity):
)
+def get_binaries():
+ pass
+
+
@click.group()
def main():
"""
@@ -159,7 +165,7 @@ def cleanup_build():
"QtSvgWidgets",
"QtUiTools",
"QtWebEngineQuick",
- "QtWebEngineQuickDelegatesQml"
+ "QtWebEngineQuickDelegatesQml",
]:
shutil.rmtree(
f"{app_path}/Contents/MacOS/lib/PySide6/Qt/lib/{framework}.framework"
@@ -229,26 +235,11 @@ def cleanup_build():
@click.argument("app_path")
def codesign(app_path):
"""Sign macOS binaries before packaging"""
- for path in itertools.chain(
- glob.glob(f"{app_path}/Contents/Resources/lib/**/*.so", recursive=True),
- glob.glob(f"{app_path}/Contents/Resources/lib/**/*.dylib", recursive=True),
- [
- f"{app_path}/Contents/Frameworks/QtCore.framework/Versions/A/QtCore",
- f"{app_path}/Contents/Frameworks/QtDBus.framework/Versions/A/QtDBus",
- f"{app_path}/Contents/Frameworks/QtGui.framework/Versions/A/QtGui",
- f"{app_path}/Contents/Frameworks/QtWidgets.framework/Versions/A/QtWidgets",
- f"{app_path}/Contents/Resources/lib/Python",
- f"{app_path}/Contents/Resources/lib/onionshare/resources/tor/meek-client",
- f"{app_path}/Contents/Resources/lib/onionshare/resources/tor/obfs4proxy",
- f"{app_path}/Contents/Resources/lib/onionshare/resources/tor/snowflake-client",
- f"{app_path}/Contents/Resources/lib/onionshare/resources/tor/tor",
- f"{app_path}/Contents/Resources/lib/onionshare/resources/tor/libevent-2.1.7.dylib",
- f"{app_path}/Contents/MacOS/onionshare",
- f"{app_path}/Contents/MacOS/onionshare-cli",
- f"{app_path}",
- ],
- ):
- sign(path, entitlements_plist_path, identity_name_application)
+ bin_universal, bin_silicon, bin_intel = get_binary_arches(app_path)
+ binaries = bin_universal + bin_silicon + bin_intel + [app_path]
+
+ for filename in binaries:
+ sign(filename, entitlements_plist_path, identity_name_application)
print(f"> Signed app bundle: {app_path}")
diff --git a/desktop/scripts/common.py b/desktop/scripts/common.py
new file mode 100644
index 00000000..acdeaa6b
--- /dev/null
+++ b/desktop/scripts/common.py
@@ -0,0 +1,32 @@
+import os
+import subprocess
+
+
+def get_binary_arches(app_dir):
+ universal = []
+ silicon = []
+ intel = []
+ for dirpath, dirnames, filenames in os.walk(app_dir):
+ for basename in filenames:
+ filename = os.path.join(dirpath, basename)
+ if os.path.isfile(filename):
+ out = subprocess.check_output(["file", filename]).decode("utf-8")
+ if (
+ "Mach-O 64-bit executable" in out
+ or "Mach-O 64-bit bundle" in out
+ or "Mach-O 64-bit dynamically linked shared library" in out
+ ):
+ arm64, x86 = False, False
+ if "arm64" in out:
+ arm64 = True
+ if "x86_64" in out:
+ x86 = True
+
+ if arm64 and x86:
+ universal.append(filename)
+ elif arm64:
+ silicon.append(filename)
+ elif x86:
+ intel.append(filename)
+
+ return universal, silicon, intel
diff --git a/desktop/scripts/macos-merge-universal.py b/desktop/scripts/macos-merge-universal.py
index 5ceb78ae..d67bf957 100755
--- a/desktop/scripts/macos-merge-universal.py
+++ b/desktop/scripts/macos-merge-universal.py
@@ -5,34 +5,7 @@ import click
import subprocess
-def get_binary_arches(app_dir):
- universal = []
- silicon = []
- intel = []
- for dirpath, dirnames, filenames in os.walk(app_dir):
- for basename in filenames:
- filename = os.path.join(dirpath, basename)
- if os.path.isfile(filename):
- out = subprocess.check_output(["file", filename]).decode("utf-8")
- if (
- "Mach-O 64-bit executable" in out
- or "Mach-O 64-bit bundle" in out
- or "Mach-O 64-bit dynamically linked shared library" in out
- ):
- arm64, x86 = False, False
- if "arm64" in out:
- arm64 = True
- if "x86_64" in out:
- x86 = True
-
- if arm64 and x86:
- universal.append(filename)
- elif arm64:
- silicon.append(filename)
- elif x86:
- intel.append(filename)
-
- return universal, silicon, intel
+from common import get_binary_arches
@click.command()