diff --git a/RELEASE.md b/RELEASE.md index f2ddfaa3..39ac214d 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -238,8 +238,6 @@ Make the Apple Silicon app bundle: ```sh /Library/Frameworks/Python.framework/Versions/3.11/bin/poetry run python ./setup-freeze.py bdist_mac -rm -rf build/OnionShare.app/Contents/Resources/lib -mv build/exe.macosx-10.9-universal2-3.11/lib build/OnionShare.app/Contents/Resources/ /Library/Frameworks/Python.framework/Versions/3.11/bin/poetry run python ./scripts/build-macos.py cleanup-build ``` diff --git a/desktop/scripts/build-macos.py b/desktop/scripts/build-macos.py index 8bbadfba..0d09ac72 100644 --- a/desktop/scripts/build-macos.py +++ b/desktop/scripts/build-macos.py @@ -167,12 +167,15 @@ def cleanup_build(): "QtWebEngineQuick", "QtWebEngineQuickDelegatesQml", ]: - shutil.rmtree( - f"{app_path}/Contents/MacOS/lib/PySide6/Qt/lib/{framework}.framework" - ) - print( - f"Deleted: {app_path}/Contents/MacOS/lib/PySide6/Qt/lib/{framework}.framework" - ) + try: + shutil.rmtree( + f"{app_path}/Contents/MacOS/lib/PySide6/Qt/lib/{framework}.framework" + ) + print( + f"Deleted: {app_path}/Contents/MacOS/lib/PySide6/Qt/lib/{framework}.framework" + ) + except FileNotFoundError: + pass try: os.remove(f"{app_path}/Contents/MacOS/lib/PySide6/{framework}.abi3.so") print(f"Deleted: {app_path}/Contents/MacOS/lib/PySide6/{framework}.abi3.so") diff --git a/desktop/setup-freeze.py b/desktop/setup-freeze.py index fe58be9d..d311a942 100644 --- a/desktop/setup-freeze.py +++ b/desktop/setup-freeze.py @@ -57,6 +57,86 @@ elif platform.system() == "Linux": print("Install the patchelf package") sys.exit() + +build_exe_options = { + "packages": [ + "cffi", + "engineio", + "engineio.async_drivers.gevent", + "engineio.async_drivers.gevent_uwsgi", + "gevent", + "jinja2.ext", + "onionshare", + "onionshare_cli", + "PySide6", + "shiboken6", + "PySide6.QtCore", + "PySide6.QtGui", + "PySide6.QtWidgets", + ], + "excludes": [ + "test", + "tkinter", + "PySide6.Qt3DAnimation", + "PySide6.Qt3DCore", + "PySide6.Qt3DExtras", + "PySide6.Qt3DInput", + "PySide6.Qt3DLogic", + "PySide6.Qt3DRender", + "PySide6.QtCharts", + "PySide6.QtConcurrent", + "PySide6.QtDataVisualization", + "PySide6.QtHelp", + "PySide6.QtLocation", + "PySide6.QtMultimedia", + "PySide6.QtMultimediaWidgets", + "PySide6.QtNetwork", + "PySide6.QtOpenGL", + "PySide6.QtOpenGLFunctions", + "PySide6.QtPositioning", + "PySide6.QtPrintSupport", + "PySide6.QtQml", + "PySide6.QtQuick", + "PySide6.QtQuickControls2", + "PySide6.QtQuickWidgets", + "PySide6.QtRemoteObjects", + "PySide6.QtScript", + "PySide6.QtScriptTools", + "PySide6.QtScxml", + "PySide6.QtSensors", + "PySide6.QtSerialPort", + "PySide6.QtSql", + "PySide6.QtTest", + "PySide6.QtTextToSpeech", + "PySide6.QtUiTools", + "PySide6.QtWebChannel", + "PySide6.QtWebEngine", + "PySide6.QtWebEngineCore", + "PySide6.QtWebEngineWidgets", + "PySide6.QtWebSockets", + "PySide6.QtXml", + "PySide6.QtXmlPatterns", + ], + "include_files": include_files, + "include_msvcr": include_msvcr, +} + +# If Mac Silicon, the dependencies need to be in zip_include_packages +if platform.system() == "Darwin" and platform.processor() == "arm": + build_exe_options["zip_include_packages"] = [ + "cffi", + "engineio", + "engineio.async_drivers.gevent", + "engineio.async_drivers.gevent_uwsgi", + "gevent", + "jinja2.ext", + "PySide6", + "shiboken6", + "PySide6.QtCore", + "PySide6.QtGui", + "PySide6.QtWidgets", + ] + setup( name="onionshare", version=version, @@ -68,67 +148,7 @@ setup( ), options={ # build_exe, for Windows and macOS - "build_exe": { - "packages": [ - "cffi", - "engineio", - "engineio.async_drivers.gevent", - "engineio.async_drivers.gevent_uwsgi", - "gevent", - "jinja2.ext", - "onionshare", - "onionshare_cli", - "PySide6", - "PySide6.QtCore", - "PySide6.QtGui", - "PySide6.QtWidgets", - ], - "excludes": [ - "test", - "tkinter", - "PySide6.Qt3DAnimation", - "PySide6.Qt3DCore", - "PySide6.Qt3DExtras", - "PySide6.Qt3DInput", - "PySide6.Qt3DLogic", - "PySide6.Qt3DRender", - "PySide6.QtCharts", - "PySide6.QtConcurrent", - "PySide6.QtDataVisualization", - "PySide6.QtHelp", - "PySide6.QtLocation", - "PySide6.QtMultimedia", - "PySide6.QtMultimediaWidgets", - "PySide6.QtNetwork", - "PySide6.QtOpenGL", - "PySide6.QtOpenGLFunctions", - "PySide6.QtPositioning", - "PySide6.QtPrintSupport", - "PySide6.QtQml", - "PySide6.QtQuick", - "PySide6.QtQuickControls2", - "PySide6.QtQuickWidgets", - "PySide6.QtRemoteObjects", - "PySide6.QtScript", - "PySide6.QtScriptTools", - "PySide6.QtScxml", - "PySide6.QtSensors", - "PySide6.QtSerialPort", - "PySide6.QtSql", - "PySide6.QtTest", - "PySide6.QtTextToSpeech", - "PySide6.QtUiTools", - "PySide6.QtWebChannel", - "PySide6.QtWebEngine", - "PySide6.QtWebEngineCore", - "PySide6.QtWebEngineWidgets", - "PySide6.QtWebSockets", - "PySide6.QtXml", - "PySide6.QtXmlPatterns", - ], - "include_files": include_files, - "include_msvcr": include_msvcr, - }, + "build_exe": build_exe_options, # bdist_mac, making the macOS app bundle "bdist_mac": { "iconfile": os.path.join("onionshare", "resources", "onionshare.icns"),