# Deskflow -- 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 . 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(ci_env): vcpkg_bin = ensure_vcpkg(ci_env) cmd_utils.run([vcpkg_bin, "install"], print_cmd=True) def ensure_vcpkg(ci_env): # Don't use the local vcpkg if we're in CI, since this makes caching complicated. if not ci_env and cmd_utils.has_command("vcpkg"): print("Using system vcpkg") return "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("..")