Files
deskflow/scripts/package.py
Nick Bolton ce3f8869e7 Reduce GUI compile time by building a GUI library (#7412)
* Call ensure_in_venv before all imports

* Create `gui` lib and link to `synergy` and test bins

* Move GUI IPC code to GUI lib

* Improve `AppConfig` members and change `minimizeOnClose` to `closeToTray`

* Group getters and setters

* Add missing `m_CloseToTray` load

* Fixed lint issue

* Add TODO comment for main window integ test

* Remove redundant comments and add override

* Remove dead code

* Update ChangeLog

* Fixed activation related compile errors

* Disable concurrency cancel jobs

* Disable fail-fast for matrix
2024-07-23 20:17:40 +01:00

86 lines
2.2 KiB
Python
Executable File

#!/usr/bin/env python3
import lib.env as env
env.ensure_in_venv(__file__)
import platform
from lib.linux import PackageType
from dotenv import load_dotenv # type: ignore
env_file = ".env"
default_package_prefix = "synergy"
def main():
load_dotenv(dotenv_path=env_file)
version = env.get_app_version()
filename_base = get_filename_base(version)
print(f"Package filename base: {filename_base}")
if env.is_windows():
windows_package(filename_base)
elif env.is_mac():
mac_package(filename_base)
elif env.is_linux():
linux_package(filename_base, version)
else:
raise RuntimeError(f"Unsupported platform: {env.get_os()}")
def get_filename_base(version, use_linux_distro=True):
os = env.get_os()
machine = platform.machine().lower()
package_base = env.get_env("SYNERGY_PACKAGE_PREFIX", default=default_package_prefix)
if os == "linux" and use_linux_distro:
distro_name, _distro_like, distro_version = env.get_linux_distro()
if not distro_name:
raise RuntimeError("Failed to detect Linux distro")
if distro_version:
version_for_filename = distro_version.replace(".", "_")
distro = f"{distro_name}-{version_for_filename}"
else:
distro = distro_name
return f"{package_base}-{distro}-{machine}-{version}"
else:
# some windows users get confused by 'amd64' and think it's 'arm64',
# so we'll use intel's 'x64' branding (even though it's wrong).
if machine == "amd64":
machine = "x64"
return f"{package_base}-{os}-{machine}-{version}"
def windows_package(filename_base):
import lib.windows as windows
windows.package(filename_base)
def mac_package(filename_base):
import lib.mac as mac
mac.package(filename_base)
def linux_package(filename_base, version):
import lib.linux as linux
extra_packages = env.get_env_bool("LINUX_EXTRA_PACKAGES", False)
linux.package(filename_base, PackageType.DISTRO)
if extra_packages:
filename_base = get_filename_base(version, use_linux_distro=False)
linux.package(filename_base, PackageType.TGZ)
linux.package(filename_base, PackageType.STGZ)
if __name__ == "__main__":
main()