Files
deskflow/scripts/lib/vcpkg.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

64 lines
1.9 KiB
Python

# 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 os
import git # type: ignore
import lib.env as env
import lib.cmd_utils as cmd_utils
GIT_REPO = "https://github.com/microsoft/vcpkg.git"
def install():
vcpkg_bin = ensure_vcpkg()
cmd_utils.run([vcpkg_bin, "install"], print_cmd=True)
# Install a local vcpkg even if it's already installed system-wide, so that we can cache the
# vcpkg dirs in the CI env. We also depend on the local `vcpkg/buildtrees` dir when bundling
# the `openssl.exe` binary on Windows (that said, we could also use cmake to search for it).
def ensure_vcpkg():
if not os.path.exists("vcpkg"):
get_vcpkg()
else:
print("Updating vcpkg...")
repo = git.Repo("vcpkg")
repo.remotes.origin.pull()
if env.is_windows():
vcpkg_bin = "vcpkg/vcpkg.exe"
else:
vcpkg_bin = "vcpkg/vcpkg"
if not os.path.exists(vcpkg_bin):
raise RuntimeError(f"Path not found: {vcpkg_bin}")
return vcpkg_bin
def get_vcpkg():
print("Downloading vcpkg...")
git.Repo.clone_from(GIT_REPO, "vcpkg")
os.chdir("vcpkg")
try:
if env.is_windows():
cmd_utils.run("bootstrap-vcpkg.bat", shell=True, print_cmd=True)
else:
cmd_utils.run("./bootstrap-vcpkg.sh", shell=True, print_cmd=True)
finally:
os.chdir("..")