96 lines
2.9 KiB
Python
96 lines
2.9 KiB
Python
"""Create standalone executables from Python scripts, with the same performance
|
|
and is cross-platform.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
|
|
import setuptools
|
|
|
|
from cx_Freeze.command.build_exe import build_exe
|
|
from cx_Freeze.command.install import Install as install
|
|
from cx_Freeze.command.install_exe import install_exe
|
|
from cx_Freeze.executable import Executable, validate_executables
|
|
from cx_Freeze.finder import Module, ModuleFinder
|
|
from cx_Freeze.freezer import ConstantsModule, Freezer
|
|
|
|
__all__ = [
|
|
"build_exe",
|
|
"install",
|
|
"install_exe",
|
|
"setup",
|
|
"ConstantsModule",
|
|
"Executable",
|
|
"Freezer",
|
|
"Module",
|
|
"ModuleFinder",
|
|
"__version__",
|
|
]
|
|
|
|
if sys.platform == "win32":
|
|
from cx_Freeze.command.bdist_msi import bdist_msi
|
|
|
|
__all__ += ["bdist_msi"]
|
|
elif sys.platform == "darwin":
|
|
from cx_Freeze.command.bdist_dmg import bdist_dmg
|
|
from cx_Freeze.command.bdist_mac import bdist_mac
|
|
|
|
__all__ += ["bdist_dmg", "bdist_mac"]
|
|
else:
|
|
from cx_Freeze.command.bdist_appimage import bdist_appimage
|
|
from cx_Freeze.command.bdist_deb import bdist_deb
|
|
from cx_Freeze.command.bdist_rpm import bdist_rpm
|
|
|
|
__all__ += ["bdist_appimage", "bdist_deb", "bdist_rpm"]
|
|
|
|
|
|
__version__ = "7.2.4"
|
|
|
|
|
|
def setup(**attrs) -> setuptools.Distribution: # noqa: D103
|
|
cmdclass = attrs.setdefault("cmdclass", {})
|
|
if sys.platform == "win32":
|
|
cmdclass.setdefault("bdist_msi", bdist_msi)
|
|
elif sys.platform == "darwin":
|
|
cmdclass.setdefault("bdist_dmg", bdist_dmg)
|
|
cmdclass.setdefault("bdist_mac", bdist_mac)
|
|
else:
|
|
cmdclass.setdefault("bdist_appimage", bdist_appimage)
|
|
cmdclass.setdefault("bdist_deb", bdist_deb)
|
|
cmdclass.setdefault("bdist_rpm", bdist_rpm)
|
|
cmdclass.setdefault("build_exe", build_exe)
|
|
cmdclass.setdefault("install", install)
|
|
cmdclass.setdefault("install_exe", install_exe)
|
|
attrs.setdefault("executables", [])
|
|
return setuptools.setup(**attrs)
|
|
|
|
|
|
setup.__doc__ = setuptools.setup.__doc__
|
|
|
|
|
|
def plugin_install(dist: setuptools.Distribution) -> None:
|
|
"""Use a setuptools extension to customize Distribution options."""
|
|
if getattr(dist, "executables", None) is None:
|
|
return
|
|
validate_executables(dist, "executables", dist.executables)
|
|
|
|
# Disable package discovery (setuptools >= 61) and/or misuse of packages
|
|
dist.py_modules = []
|
|
dist.packages = []
|
|
|
|
# Add/update commands (provisional)
|
|
cmdclass = dist.cmdclass
|
|
cmdclass.setdefault("build_exe", build_exe)
|
|
cmdclass.setdefault("install", install)
|
|
cmdclass.setdefault("install_exe", install_exe)
|
|
|
|
# Add build_exe as subcommand of setuptools build (plugin)
|
|
build = dist.get_command_obj("build")
|
|
build.user_options.insert(
|
|
1,
|
|
("build-exe=", None, "[REMOVED]"),
|
|
)
|
|
build.sub_commands = [*build.sub_commands, ("build_exe", None)]
|
|
build.build_exe = None
|