aboutsummaryrefslogtreecommitdiff
path: root/desktop/setup-freeze.py
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/setup-freeze.py')
-rw-r--r--desktop/setup-freeze.py177
1 files changed, 49 insertions, 128 deletions
diff --git a/desktop/setup-freeze.py b/desktop/setup-freeze.py
index f293b554..7e4af3aa 100644
--- a/desktop/setup-freeze.py
+++ b/desktop/setup-freeze.py
@@ -26,85 +26,6 @@ import cx_Freeze
from cx_Freeze import setup, Executable
from setuptools import find_packages
-# There's an obscure cx_Freeze bug that I'm hitting that's preventing the macOS
-# package from getting built. This is some monkeypatching to fix it.
-
-if platform.system() == "Darwin" or platform.system() == "Linux":
- import importlib_metadata
- import pathlib
- from pathlib import Path
- from tempfile import TemporaryDirectory
-
- class CustomPackagePath(pathlib.PurePosixPath):
- def __init__(self, filename):
- self.long_filename = str(filename)
- self.short_filename = "/".join(filename.as_posix().split("/")[-2:])
- super(CustomPackagePath, self).__init__()
-
- def read_text(self, encoding="utf-8"):
- with self.locate().open(encoding=encoding) as stream:
- return stream.read()
-
- def read_binary(self):
- with self.locate().open("rb") as stream:
- return stream.read()
-
- def locate(self):
- return Path(self.long_filename)
-
- def as_posix(self):
- return self.short_filename
-
- class DistributionCache(importlib_metadata.PathDistribution):
- _cachedir = TemporaryDirectory(prefix="cxfreeze-")
-
- @staticmethod
- def at(path):
- return DistributionCache(Path(path))
-
- at.__doc__ = importlib_metadata.PathDistribution.at.__doc__
-
- @classmethod
- def from_name(cls, name):
- distribution = super().from_name(name)
- temp_dir = Path(cls._cachedir.name)
- dist_dir = None
- files = distribution.files or []
- prep = importlib_metadata.Prepared(distribution.name)
- normalized = prep.normalized
- legacy_normalized = prep.legacy_normalized
- for file in files:
- # patch: the onionshare and onionshare_cli files are using absolute paths, which break everything
- if name in ["onionshare", "onionshare_cli"]:
- if ".dist-info" not in file.as_posix():
- continue
-
- file = CustomPackagePath(file)
-
- if (
- not file.match(f"{name}-*.dist-info/*")
- and not file.match(f"{distribution.name}-*.dist-info/*")
- and not file.match(f"{normalized}-*.dist-info/*")
- and not file.match(f"{legacy_normalized}-*.dist-info/*")
- ):
- continue
- src_path = file.locate()
- if not src_path.exists():
- continue
- dst_path = temp_dir / file.as_posix()
- if dist_dir is None:
- dist_dir = dst_path.parent
- dist_dir.mkdir(exist_ok=True)
- shutil.copy2(src_path, dst_path)
- if dist_dir is None:
- raise importlib_metadata.PackageNotFoundError(name)
- return cls.at(dist_dir)
-
- from_name.__doc__ = importlib_metadata.PathDistribution.from_name.__doc__
-
- cx_Freeze.module.DistributionCache = DistributionCache
-
-
# Discover the version
with open(os.path.join("..", "cli", "onionshare_cli", "resources", "version.txt")) as f:
version = f.read().strip()
@@ -123,20 +44,20 @@ if platform.system() == "Windows":
exec_icon = os.path.join("onionshare", "resources", "onionshare.ico")
elif platform.system() == "Darwin":
- import PySide2
- import shiboken2
+ import PySide6
+ import shiboken6
include_msvcr = False
gui_base = None
exec_icon = None
include_files += [
(
- os.path.join(PySide2.__path__[0], "libpyside2.abi3.5.15.dylib"),
- "libpyside2.abi3.5.15.dylib",
+ os.path.join(PySide6.__path__[0], "libpyside6.abi3.6.4.dylib"),
+ "libpyside6.abi3.6.4.dylib",
),
(
- os.path.join(shiboken2.__path__[0], "libshiboken2.abi3.5.15.dylib"),
- "libshiboken2.abi3.5.15.dylib",
+ os.path.join(shiboken6.__path__[0], "libshiboken6.abi3.6.4.dylib"),
+ "libshiboken6.abi3.6.4.dylib",
),
]
@@ -170,53 +91,53 @@ setup(
"jinja2.ext",
"onionshare",
"onionshare_cli",
- "PySide2",
- "PySide2.QtCore",
- "PySide2.QtGui",
- "PySide2.QtWidgets",
+ "PySide6",
+ "PySide6.QtCore",
+ "PySide6.QtGui",
+ "PySide6.QtWidgets",
],
"excludes": [
"test",
"tkinter",
- "PySide2.Qt3DAnimation",
- "PySide2.Qt3DCore",
- "PySide2.Qt3DExtras",
- "PySide2.Qt3DInput",
- "PySide2.Qt3DLogic",
- "PySide2.Qt3DRender",
- "PySide2.QtCharts",
- "PySide2.QtConcurrent",
- "PySide2.QtDataVisualization",
- "PySide2.QtHelp",
- "PySide2.QtLocation",
- "PySide2.QtMultimedia",
- "PySide2.QtMultimediaWidgets",
- "PySide2.QtNetwork",
- "PySide2.QtOpenGL",
- "PySide2.QtOpenGLFunctions",
- "PySide2.QtPositioning",
- "PySide2.QtPrintSupport",
- "PySide2.QtQml",
- "PySide2.QtQuick",
- "PySide2.QtQuickControls2",
- "PySide2.QtQuickWidgets",
- "PySide2.QtRemoteObjects",
- "PySide2.QtScript",
- "PySide2.QtScriptTools",
- "PySide2.QtScxml",
- "PySide2.QtSensors",
- "PySide2.QtSerialPort",
- "PySide2.QtSql",
- "PySide2.QtTest",
- "PySide2.QtTextToSpeech",
- "PySide2.QtUiTools",
- "PySide2.QtWebChannel",
- "PySide2.QtWebEngine",
- "PySide2.QtWebEngineCore",
- "PySide2.QtWebEngineWidgets",
- "PySide2.QtWebSockets",
- "PySide2.QtXml",
- "PySide2.QtXmlPatterns",
+ "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,