Merge pull request #813 from daleglass-overte/get-vcpkg-path

Add a way to get VCPKG path and hash ID
This commit is contained in:
Julian Groß 2024-02-14 17:09:46 +01:00 committed by GitHub
commit 1221b46a59
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 42 additions and 17 deletions

View file

@ -81,7 +81,9 @@ endif()
qt_found = True
system_qt = True
print("Using system Qt")
if not self.args.quiet:
print("Using system Qt")
elif os.getenv('OVERTE_QT_PATH', "") != "":
# 2. Using an user-provided directory.
@ -92,7 +94,9 @@ endif()
self.cmakePath = os.path.join(self.fullPath, 'lib', 'cmake')
qt_found = True
print("Using Qt from " + self.fullPath)
if not self.args.quiet:
print("Using Qt from " + self.fullPath)
else:
# 3. Using a pre-built Qt.
@ -135,7 +139,8 @@ endif()
self.lockFile = os.path.join(lockDir, lockName)
if qt_found:
print("Found pre-built Qt5")
if not self.args.quiet:
print("Found pre-built Qt5")
return
if 'Windows' == system:
@ -147,8 +152,8 @@ endif()
cpu_architecture = platform.machine()
if 'x86_64' == cpu_architecture:
# `major_version()` can return blank string on rolling release distros like arch
# The `or 0` conditional assignment prevents the int parsing error from hiding the useful Qt package error
# `major_version()` can return blank string on rolling release distros like arch
# The `or 0` conditional assignment prevents the int parsing error from hiding the useful Qt package error
u_major = int( distro.major_version() or '0' )
if distro.id() == 'ubuntu' or distro.id() == 'linuxmint':
if (distro.id() == 'ubuntu' and u_major == 20) or distro.id() == 'linuxmint' and u_major == 20:

View file

@ -71,7 +71,8 @@ endif()
os.makedirs(self.basePath)
self.path = os.path.join(self.basePath, self.id)
print("Using vcpkg path {}".format(self.path))
if not self.args.quiet:
print("Using vcpkg path {}".format(self.path))
lockDir, lockName = os.path.split(self.path)
lockName += '.lock'
if not os.path.isdir(lockDir):

View file

@ -1,19 +1,19 @@
#!python
# The prebuild script is intended to simplify life for developers and dev-ops. It's repsonsible for acquiring
# tools required by the build as well as dependencies on which we rely.
#
# The prebuild script is intended to simplify life for developers and dev-ops. It's repsonsible for acquiring
# tools required by the build as well as dependencies on which we rely.
#
# By using this script, we can reduce the requirements for a developer getting started to:
#
# * A working C++ dev environment like visual studio, xcode, gcc, or clang
# * Qt
# * Qt
# * CMake
# * Python 3.x
#
# The function of the build script is to acquire, if not already present, all the other build requirements
# The build script should be idempotent. If you run it with the same arguments multiple times, that should
# have no negative impact on the subsequent build times (i.e. re-running the prebuild script should not
# trigger a header change that causes files to be rebuilt). Subsequent runs after the first run should
# The build script should be idempotent. If you run it with the same arguments multiple times, that should
# have no negative impact on the subsequent build times (i.e. re-running the prebuild script should not
# trigger a header change that causes files to be rebuilt). Subsequent runs after the first run should
# execute quickly, determining that no work is to be done
import hifi_singleton
@ -83,6 +83,10 @@ def parse_args():
parser.add_argument('--build-root', required=True, type=str, help='The location of the cmake build')
parser.add_argument('--ports-path', type=str, default=defaultPortsPath)
parser.add_argument('--ci-build', action='store_true', default=os.getenv('CI_BUILD') is not None)
parser.add_argument('--get-vcpkg-id', action='store_true', help='Get the VCPKG ID, the hash path of the full VCPKG path')
parser.add_argument('--get-vcpkg-path', action='store_true', help='Get the full VCPKG path, ID included.')
parser.add_argument('--quiet', action='store_true', default=False, help='Quiet mode with less output')
if True:
args = parser.parse_args()
else:
@ -91,7 +95,7 @@ def parse_args():
def main():
# Fixup env variables. Leaving `USE_CCACHE` on will cause scribe to fail to build
# VCPKG_ROOT seems to cause confusion on Windows systems that previously used it for
# VCPKG_ROOT seems to cause confusion on Windows systems that previously used it for
# building OpenSSL
removeEnvVars = ['VCPKG_ROOT', 'USE_CCACHE']
for var in removeEnvVars:
@ -99,6 +103,10 @@ def main():
del os.environ[var]
args = parse_args()
if not args.quiet:
print(sys.argv)
assets_url = hifi_utils.readEnviromentVariableFromFile(args.build_root, 'EXTERNAL_BUILD_ASSETS')
if args.ci_build:
@ -129,11 +137,22 @@ def main():
qt.writeConfig()
else:
if (os.environ["OVERTE_USE_SYSTEM_QT"]):
print("System Qt selected")
if not args.quiet:
print("System Qt selected")
else:
raise Exception("Internal error: System Qt not selected, but hifi_qt.py failed to return a cmake path")
pm = hifi_vcpkg.VcpkgRepo(args)
if args.get_vcpkg_id:
print(pm.id)
exit(0)
if args.get_vcpkg_path:
print(pm.path)
exit(0)
if qtInstallPath is not None:
pm.writeVar('QT_CMAKE_PREFIX_PATH', qtInstallPath)
@ -149,7 +168,7 @@ def main():
if not pm.upToDate():
pm.bootstrap()
# Always write the tag, even if we changed nothing. This
# Always write the tag, even if we changed nothing. This
# allows vcpkg to reclaim disk space by identifying directories with
# tags that haven't been touched in a long time
pm.writeTag()
@ -190,7 +209,7 @@ def main():
logger.info('end')
print(sys.argv)
try:
main()
except hifi_utils.SilentFatalError as fatal_ex: