From 07ffd812b135dfc6d8b48c1c98ca881322f89bae Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Fri, 11 Nov 2022 13:09:16 +0100 Subject: [PATCH] Remove hardcoded IFW version --- CMake/CreateIFWInstaller.cmake | 20 ----------- CMakeLists.txt | 3 -- Tools/build.py | 61 +++++++++++----------------------- Tools/defines.py | 12 +++++++ 4 files changed, 31 insertions(+), 65 deletions(-) diff --git a/CMake/CreateIFWInstaller.cmake b/CMake/CreateIFWInstaller.cmake index 511fe511..9cd31a98 100644 --- a/CMake/CreateIFWInstaller.cmake +++ b/CMake/CreateIFWInstaller.cmake @@ -1,25 +1,5 @@ -# Variable must be around "" to be equal! -if("${CPACK_IFW_ROOT}" STREQUAL "") - # Hardcoded Qt paths that are used by the QtMaintanance tool for now... - if(${GITLAB_CI}) - set(SCREENPLAY_IFW_ROOT "${CMAKE_SOURCE_DIR}/../aqt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}") - else() - if(WIN32) - set(SCREENPLAY_IFW_ROOT "C:/Qt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}") - elseif(UNIX) - set(SCREENPLAY_IFW_ROOT "$ENV{HOME}/Qt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}") - endif() - endif() - - message(AUTHOR_WARNING "[CPACK_IFW_ROOT] Not set. Using hardcoded value: ${SCREENPLAY_IFW_ROOT}") - message(AUTHOR_WARNING "WARNING: MAKE SURE YOU HAVE THIS EXACT VERSION INSTALLED VIA THE QTMAINTANANCE TOOL!") -else() - message(STATUS "[CPACK_IFW_ROOT] = ${SCREENPLAY_IFW_ROOT}") -endif() - message(STATUS "[IFW INSTALLER ENABLED]: Configuring. This can take some time...") - set(CPACK_COMPONENTS_GROUPING IGNORE) set(CPACK_PACKAGE_NAME "ScreenPlay") set(CPACK_PACKAGE_FILE_NAME "ScreenPlay-Installer") diff --git a/CMakeLists.txt b/CMakeLists.txt index f8b1f038..d3e87b58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,9 +48,6 @@ set(QML_IMPORT_PATH "${QML_DIRS}" CACHE STRING "Qt Creator extra qml import paths") -set(SCREENPLAY_IFW_ROOT "") -set(SCREENPLAY_IFW_VERSION "4.4") - set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlay-vcpkg") set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}") set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin") diff --git a/Tools/build.py b/Tools/build.py index 754f242c..8fc93973 100755 --- a/Tools/build.py +++ b/Tools/build.py @@ -50,8 +50,9 @@ class BuildConfig: package: bool package_command: str executable_file_ending: str - qt_path: str - qt_bin_path: str + # qt_* use either aqt or from the maintenance tool + qt_path: str # C:\Qt + qt_bin_path: str # C:\Qt\6.3.2\msvc2019_64 qt_version: str qt_ifw_version: str ifw_root_path: str @@ -142,25 +143,25 @@ def setup(build_config: BuildConfig, build_result: BuildResult) -> Tuple[BuildCo if not build_config.aqt_path.exists(): print(f"aqt path does not exist at {build_config.aqt_path}. Please make sure to run setup.py!") exit(2) - - # Set default to empty, because it is only used on mac + + build_config.qt_path = defines.AQT_PATH if build_config.use_aqt else defines.MAINTENANCE_PATH + build_config.qt_bin_path = Path(build_config.qt_path).joinpath(f"{build_config.qt_version}/{defines.QT_PLATFORM}").resolve() + build_config.ifw_root_path = Path(f"{build_config.qt_path}/Tools/QtInstallerFramework/{build_config.qt_ifw_version}").resolve() + + # Set default to empty for linux and windows, because it is only used on mac build_config.cmake_osx_architectures = "" if platform.system() == "Windows": build_config.cmake_target_triplet = "x64-windows" build_config.executable_file_ending = ".exe" - build_config.qt_path = build_config.aqt_path if build_config.use_aqt else Path( - "C:/Qt") - windows_msvc = "msvc2019_64" # This will change once prebuild Qt bins change - build_config.qt_bin_path = build_config.aqt_path.joinpath(build_config.qt_version).joinpath( - windows_msvc) if build_config.use_aqt else Path(f"C:/Qt/{build_config.qt_version}/{windows_msvc}") - vs_env_dict = get_vs_env_dict() - vs_env_dict["PATH"] = vs_env_dict["PATH"] + \ - ";" + str(build_config.qt_bin_path) + "\\bin" - os.environ.update(vs_env_dict) + env_dict = get_vs_env_dict() + env_dict["PATH"] = env_dict["PATH"] + \ + ";" + str(Path(build_config.qt_bin_path).joinpath("bin").resolve()) + \ + ";" + str(build_config.ifw_root_path.resolve()) + print(f"Using env_dict:\n{env_dict}") + os.environ.update(env_dict) # NO f string we fill it later! build_config.package_command = "windeployqt.exe --{type} --qmldir ../../{app}/qml {app}{executable_file_ending}" - build_config.aqt_install_qt_packages = f"windows desktop {build_config.qt_version} win64_msvc2019_64 -m all" build_config.aqt_install_tool_packages = "windows desktop tools_ifw" @@ -175,49 +176,25 @@ def setup(build_config: BuildConfig, build_result: BuildResult) -> Tuple[BuildCo print("MISSING BUILD ARCH: SET arm64 or x64") exit(1) build_config.executable_file_ending = ".app" - build_config.qt_path = build_config.aqt_path if build_config.use_aqt else Path( - "~/Qt/") - build_config.qt_bin_path = build_config.aqt_path.joinpath( - f"{build_config.qt_version}/macos") if build_config.use_aqt else Path(f"~/Qt/{build_config.qt_version}/macos") # NO f string we fill it later! build_config.package_command = "{prefix_path}/bin/macdeployqt {app}.app -qmldir=../../{app}/qml -executable={app}.app/Contents/MacOS/{app} -appstore-compliant" - build_config.aqt_install_qt_packages = f"mac desktop {build_config.qt_version} clang_64 -m all" build_config.aqt_install_tool_packages = "mac desktop tools_ifw" - + elif platform.system() == "Linux": build_config.cmake_target_triplet = "x64-linux" build_config.executable_file_ending = "" - build_config.qt_path = build_config.aqt_path if build_config.use_aqt else Path( - "~/Qt/") - build_config.qt_bin_path = build_config.aqt_path.joinpath( - f"{build_config.qt_version}/gcc_64") if build_config.use_aqt else Path(f"~/Qt/{build_config.qt_version}/gcc_64") build_config.aqt_install_qt_packages = f"linux desktop {build_config.qt_version} gcc_64 -m all" build_config.aqt_install_tool_packages = "linux desktop tools_ifw" - home_path = str(Path.home()) - build_config.qt_bin_path = build_config.aqt_path.joinpath( - f"{build_config.qt_version}/gcc_64") if build_config.use_aqt else Path(f"{home_path}/Qt/{build_config.qt_version}/gcc_64") else: raise NotImplementedError( "Unsupported platform, ScreenPlay only supports Windows, macOS and Linux.") - # Default to QtMaintainance installation. - if build_config.use_aqt: - print(f"qt_bin_path: {build_config.qt_bin_path}.") - if not Path(build_config.aqt_path).exists(): - print( - f"aqt path does not exist at {build_config.aqt_path}. Installing now into...") - run(f"aqt install-qt -O ../aqt {build_config.aqt_install_qt_packages}", - cwd=build_config.root_path) - run( - f"aqt install-tool -O ../aqt {build_config.aqt_install_tool_packages}", cwd=build_config.root_path) - # Prepare - build_config.cmake_toolchain_file = f"'{build_config.root_path}/../ScreenPlay-vcpkg/scripts/buildsystems/vcpkg.cmake'" - build_config.ifw_root_path = f"{build_config.qt_path}/Tools/QtInstallerFramework/{build_config.qt_ifw_version}" + build_config.cmake_toolchain_file = Path(f"{build_config.root_path}/../ScreenPlay-vcpkg/scripts/buildsystems/vcpkg.cmake").resolve() print(f"cmake_toolchain_file: {build_config.cmake_toolchain_file}") - print( - f"Starting build with type {build_config.build_type}. Qt Version: {build_config.qt_version}. Root path: {build_config.root_path}") + print(f"Starting build with type {build_config.build_type}.") + print(f"Qt Version: {build_config.qt_version}. Root path: {build_config.root_path}") # Remove old build folder to before configuring to get rid of # all cmake chaches diff --git a/Tools/defines.py b/Tools/defines.py index 51fa59b2..35e6e569 100644 --- a/Tools/defines.py +++ b/Tools/defines.py @@ -9,5 +9,17 @@ QT_VERSION = "6.3.2" QT_IFW_VERSION = "4.5" SCREENPLAY_VERSION = "0.15.0-RC3" AQT_PATH = Path("C:/aqt") if sys.platform == "win32" else Path().home().joinpath("aqt") +MAINTENANCE_PATH = Path("C:/Qt") if sys.platform == "win32" else Path().home().joinpath("Qt") +# Defined by Qt +if sys.platform == "win32": + OS = "windows" + QT_PLATFORM = "msvc2019_64" +elif sys.platform == "darwin": + OS = "mac" + QT_PLATFORM = "clang_64" +elif sys.platform == "linux": + OS = "linux" + QT_PLATFORM = "gcc_64" + PYTHON_EXECUTABLE = "python" if sys.platform == "win32" else "python3" FFMPEG_VERSION = "5.0.1" \ No newline at end of file