Files
deskflow/scripts/package.py
Nick Bolton 94d9baca2d Use vcpkg to manage openssl dep instead of choco (#7471)
* Brighter red

* Move openssl to vcpkg.exe

* Revert "Move openssl to vcpkg.exe"

This reverts commit 36f39d916f3cc2c8ce779442bd964bd6af7edd69.

* Add missing copyright

* Fix copyright dates

* Remove openssl from choco

* Install openssl using vcpkg

* Add deps for vcpkg

* Add missing vcpkg manifest

* Revert "Add deps for vcpkg"

This reverts commit c266d29c2cec4474a181b89c2f759b62ed67db10.

* Make vcpkg Windows only

* Improve comment about vcpkg

* Remove unused var

* Add caching for vcpkg

* Reorg launch.json

* Remove static env var for openssl on Windows

* Add openssl dep to vcpkg

* Update ChangeLog

* Add OpenSSL include dir

* Remove pointless choco cache

* Remove vcpkg downloads

* Remove wixtoolset for CI already installed on GitHub runners

* Use `Remove-Item` instead of `rmdir`

* Move cmake and ninja out of choco

* Revert "Move cmake and ninja out of choco (winget not supported on GitHub runner)"

This reverts commit a65c02d275e58705b8cd86fac72629284191d737.

* Move cmake and ninja to winget and don't use choco on CI

* Remove winget action

* Use scoop on CI and winget locally

* Use `seanmiddleditch/gha-setup-ninja` for Ninja

* Improve comments

* Install Ninja before deps

* Use system vcpkg if installed

* Revert "Use system vcpkg if installed"

This reverts commit 4ddee1c66e8cace458c047285a70d2f98cf9d82c.

* Add comment about why we're using local vcpkg

* Fixed comment about VC++

* Improve config comments

* Delete dead code

* Improve comment about vcpkg/buildtrees
2024-09-04 16:52:37 +01:00

108 lines
3.1 KiB
Python
Executable File

#!/usr/bin/env python3
# Synergy -- mouse and keyboard sharing utility
# Copyright (C) 2024 Symless Ltd.
#
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file LICENSE that should have accompanied this file.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import lib.env as env
env.ensure_in_venv(__file__)
import argparse
import platform
from lib.linux import PackageType
from dotenv import load_dotenv # type: ignore
env_file = ".env"
default_package_prefix = "synergy"
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"--leave-test-installed",
action="store_true",
help="Leave test package installed",
)
args = parser.parse_args()
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, args.leave_test_installed)
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, leave_test_installed):
import lib.linux as linux
extra_packages = env.get_env_bool("LINUX_EXTRA_PACKAGES", False)
linux.package(filename_base, PackageType.DISTRO, leave_test_installed)
if extra_packages:
filename_base = get_filename_base(version, use_linux_distro=False)
linux.package(filename_base, PackageType.TGZ)
if __name__ == "__main__":
main()