diff --git a/.commit-template b/.commit-template index 81c72bb7853..3a3091028c1 100644 --- a/.commit-template +++ b/.commit-template @@ -10,10 +10,13 @@ # ==[ Footers: Uncomment and edit where applicable ]===================| # # One task per entry. Add a space after the colon. -# Use Fixes to automatically close an issue, and Task-number to -# reference it without further action. -# You do not need both for the same issue. +# Use Fixes to automatically close an issue, Reopens to automatically +# reopen an issue, and Task-number to reference it without further +# action. +# You do not need to include Task-Number where Fixes or Reopens is +# specified for the same issue. #Fixes: +#Reopens: #Task-number: #Coverity-Id: # diff --git a/.gitmodules b/.gitmodules index cfd27ee179e..071b8bbdf7c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,40 +1,40 @@ [submodule "qtbase"] path = qtbase url = ../qtbase.git - branch = dev + branch = 6.8 status = essential [submodule "qtsvg"] depends = qtbase path = qtsvg url = ../qtsvg.git - branch = dev + branch = 6.8 status = addon [submodule "qtdeclarative"] depends = qtbase recommends = qtimageformats qtshadertools qtsvg qtlanguageserver path = qtdeclarative url = ../qtdeclarative.git - branch = dev + branch = 6.8 status = essential [submodule "qtactiveqt"] depends = qtbase path = qtactiveqt url = ../qtactiveqt.git - branch = dev + branch = 6.8 status = addon [submodule "qtmultimedia"] depends = qtbase qtshadertools recommends = qtdeclarative qtquick3d path = qtmultimedia url = ../qtmultimedia.git - branch = dev + branch = 6.8 status = addon [submodule "qttools"] depends = qtbase recommends = qtdeclarative qtactiveqt path = qttools url = ../qttools.git - branch = dev + branch = 6.8 status = essential [submodule "qtxmlpatterns"] depends = qtbase @@ -47,7 +47,7 @@ depends = qttools path = qttranslations url = ../qttranslations.git - branch = dev + branch = 6.8 status = essential priority = 30 [submodule "qtdoc"] @@ -55,7 +55,7 @@ recommends = qtmultimedia qtshadertools qtwebengine path = qtdoc url = ../qtdoc.git - branch = dev + branch = 6.8 status = essential priority = 40 [submodule "qtrepotools"] @@ -76,21 +76,21 @@ recommends = qtdeclarative path = qtlocation url = ../qtlocation.git - branch = dev + branch = 6.8 status = preview [submodule "qtpositioning"] depends = qtbase recommends = qtdeclarative qtserialport path = qtpositioning url = ../qtpositioning.git - branch = dev + branch = 6.8 status = addon [submodule "qtsensors"] depends = qtbase recommends = qtdeclarative path = qtsensors url = ../qtsensors.git - branch = dev + branch = 6.8 status = addon [submodule "qtsystems"] depends = qtbase @@ -117,61 +117,61 @@ recommends = qtdeclarative path = qtconnectivity url = ../qtconnectivity.git - branch = dev + branch = 6.8 status = addon [submodule "qtwayland"] depends = qtbase recommends = qtdeclarative path = qtwayland url = ../qtwayland.git - branch = dev + branch = 6.8 status = addon [submodule "qt3d"] depends = qtbase recommends = qtdeclarative qtshadertools qtmultimedia path = qt3d url = ../qt3d.git - branch = dev + branch = 6.8 status = deprecated [submodule "qtimageformats"] depends = qtbase path = qtimageformats url = ../qtimageformats.git - branch = dev + branch = 6.8 status = addon [submodule "qtserialbus"] depends = qtbase recommends = qtserialport path = qtserialbus url = ../qtserialbus.git - branch = dev + branch = 6.8 status = addon [submodule "qtserialport"] depends = qtbase path = qtserialport url = ../qtserialport.git - branch = dev + branch = 6.8 status = addon [submodule "qtwebsockets"] depends = qtbase recommends = qtdeclarative path = qtwebsockets url = ../qtwebsockets.git - branch = dev + branch = 6.8 status = addon [submodule "qtwebchannel"] depends = qtbase recommends = qtdeclarative qtwebsockets path = qtwebchannel url = ../qtwebchannel.git - branch = dev + branch = 6.8 status = addon [submodule "qtwebengine"] depends = qtdeclarative recommends = qtwebchannel qttools qtpositioning path = qtwebengine url = ../qtwebengine.git - branch = dev + branch = 6.8 status = addon priority = 10 [submodule "qtcanvas3d"] @@ -185,28 +185,28 @@ recommends = qtwebengine path = qtwebview url = ../qtwebview.git - branch = dev + branch = 6.8 status = addon [submodule "qtcharts"] depends = qtbase recommends = qtdeclarative qtmultimedia path = qtcharts url = ../qtcharts.git - branch = dev + branch = 6.8 status = addon [submodule "qtdatavis3d"] depends = qtbase recommends = qtdeclarative qtmultimedia path = qtdatavis3d url = ../qtdatavis3d.git - branch = dev + branch = 6.8 status = addon [submodule "qtvirtualkeyboard"] depends = qtbase qtdeclarative qtsvg recommends = qtmultimedia path = qtvirtualkeyboard url = ../qtvirtualkeyboard.git - branch = dev + branch = 6.8 status = addon [submodule "qtgamepad"] depends = qtbase @@ -219,27 +219,27 @@ depends = qtbase qtdeclarative path = qtscxml url = ../qtscxml.git - branch = dev + branch = 6.8 status = addon [submodule "qtspeech"] depends = qtbase qtmultimedia recommends = qtdeclarative path = qtspeech url = ../qtspeech.git - branch = dev + branch = 6.8 status = addon [submodule "qtnetworkauth"] depends = qtbase path = qtnetworkauth url = ../qtnetworkauth.git - branch = dev + branch = 6.8 status = addon [submodule "qtremoteobjects"] depends = qtbase recommends = qtdeclarative path = qtremoteobjects url = ../qtremoteobjects.git - branch = dev + branch = 6.8 status = addon [submodule "qtwebglplugin"] depends = qtbase qtwebsockets @@ -252,87 +252,87 @@ depends = qtbase qtdeclarative path = qtlottie url = ../qtlottie.git - branch = dev + branch = 6.8 status = addon [submodule "qtquicktimeline"] depends = qtbase qtdeclarative path = qtquicktimeline url = ../qtquicktimeline - branch = dev + branch = 6.8 status = addon [submodule "qtquick3d"] depends = qtbase qtdeclarative qtshadertools recommends = qtquicktimeline path = qtquick3d url = ../qtquick3d.git - branch = dev + branch = 6.8 status = addon [submodule "qtshadertools"] depends = qtbase path = qtshadertools url = ../qtshadertools.git - branch = dev + branch = 6.8 status = addon [submodule "qt5compat"] depends = qtbase qtdeclarative path = qt5compat url = ../qt5compat.git - branch = dev + branch = 6.8 status = deprecated [submodule "qtcoap"] depends = qtbase path = qtcoap url = ../qtcoap.git - branch = dev + branch = 6.8 status = addon [submodule "qtmqtt"] depends = qtbase qtdeclarative path = qtmqtt url = ../qtmqtt.git - branch = dev + branch = 6.8 status = addon [submodule "qtopcua"] depends = qtbase qtdeclarative path = qtopcua url = ../qtopcua.git - branch = dev + branch = 6.8 status = addon [submodule "qtlanguageserver"] depends = qtbase path = qtlanguageserver url = ../qtlanguageserver.git - branch = dev + branch = 6.8 status = preview [submodule "qthttpserver"] depends = qtbase recommends = qtwebsockets path = qthttpserver url = ../qthttpserver.git - branch = dev - status = preview + branch = 6.8 + status = addon [submodule "qtquick3dphysics"] depends = qtbase qtdeclarative qtquick3d qtshadertools path = qtquick3dphysics url = ../qtquick3dphysics.git - branch = dev + branch = 6.8 status = addon [submodule "qtgrpc"] depends = qtbase recommends = qtdeclarative path = qtgrpc url = ../qtgrpc.git - branch = dev - status = preview + branch = 6.8 + status = addon [submodule "qtquickeffectmaker"] depends = qtbase qtdeclarative qtshadertools recommends = qtquick3d path = qtquickeffectmaker url = ../qtquickeffectmaker.git - branch = dev + branch = 6.8 status = addon [submodule "qtgraphs"] depends = qtbase qtdeclarative qtquick3d path = qtgraphs url = ../qtgraphs.git - branch = dev - status = preview + branch = 6.8 + status = addon diff --git a/.gitreview b/.gitreview new file mode 100644 index 00000000000..69388ea438a --- /dev/null +++ b/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=codereview.qt-project.org +project=qt/qt5 +defaultbranch=dev diff --git a/README.md b/README.md index ccf35c370c0..37f54aff81e 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Windows: 1. Open a command prompt. 2. Ensure that the following tools can be found in the path: - * Supported compiler (Visual Studio 2019 or later, or MinGW-builds gcc 11.2 or later) + * Supported compiler (Visual Studio 2022 or later, or MinGW-builds gcc 13.1 or later) * Python 3 ([https://www.python.org/downloads/windows/] or from Microsoft Store) ``` diff --git a/cmake/3rdparty/cmake/Copyright.txt b/cmake/3rdparty/cmake/Copyright.txt deleted file mode 100644 index 2074109b019..00000000000 --- a/cmake/3rdparty/cmake/Copyright.txt +++ /dev/null @@ -1,136 +0,0 @@ -CMake - Cross Platform Makefile Generator -Copyright 2000-2024 Kitware, Inc. and Contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of Kitware, Inc. nor the names of Contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ------------------------------------------------------------------------------- - -The following individuals and institutions are among the Contributors: - -* Aaron C. Meadows -* Adriaan de Groot -* Aleksey Avdeev -* Alexander Neundorf -* Alexander Smorkalov -* Alexey Sokolov -* Alex Merry -* Alex Turbov -* Andreas Pakulat -* Andreas Schneider -* André Rigland Brodtkorb -* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf -* Benjamin Eikel -* Bjoern Ricks -* Brad Hards -* Christopher Harvey -* Christoph Grüninger -* Clement Creusot -* Daniel Blezek -* Daniel Pfeifer -* Dawid Wróbel -* Enrico Scholz -* Eran Ifrah -* Esben Mose Hansen, Ange Optimization ApS -* Geoffrey Viola -* Google Inc -* Gregor Jasny -* Helio Chissini de Castro -* Ilya Lavrenov -* Insight Software Consortium -* Intel Corporation -* Jan Woetzel -* Jordan Williams -* Julien Schueller -* Kelly Thompson -* Konstantin Podsvirov -* Laurent Montel -* Mario Bensi -* Martin Gräßlin -* Mathieu Malaterre -* Matthaeus G. Chajdas -* Matthias Kretz -* Matthias Maennich -* Michael Hirsch, Ph.D. -* Michael Stürmer -* Miguel A. Figueroa-Villanueva -* Mike Durso -* Mike Jackson -* Mike McQuaid -* Nicolas Bock -* Nicolas Despres -* Nikita Krupen'ko -* NVIDIA Corporation -* OpenGamma Ltd. -* Patrick Stotko -* Per Øyvind Karlsen -* Peter Collingbourne -* Petr Gotthard -* Philip Lowman -* Philippe Proulx -* Raffi Enficiaud, Max Planck Society -* Raumfeld -* Roger Leigh -* Rolf Eike Beer -* Roman Donchenko -* Roman Kharitonov -* Ruslan Baratov -* Sebastian Holtermann -* Stephen Kelly -* Sylvain Joubert -* The Qt Company Ltd. -* Thomas Sondergaard -* Tobias Hunger -* Todd Gamblin -* Tristan Carel -* University of Dundee -* Vadim Zhukov -* Will Dicharry - -See version control history for details of individual contributions. - -The above copyright and license notice applies to distributions of -CMake in source and binary form. Third-party software packages supplied -with CMake under compatible licenses provide their own copyright notices -documented in corresponding subdirectories or source files. - ------------------------------------------------------------------------------- - -CMake was initially developed by Kitware with the following sponsorship: - - * National Library of Medicine at the National Institutes of Health - as part of the Insight Segmentation and Registration Toolkit (ITK). - - * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel - Visualization Initiative. - - * National Alliance for Medical Image Computing (NAMIC) is funded by the - National Institutes of Health through the NIH Roadmap for Medical Research, - Grant U54 EB005149. - - * Kitware, Inc. diff --git a/cmake/3rdparty/cmake/QtIRRunCMake.cmake b/cmake/3rdparty/cmake/QtIRRunCMake.cmake deleted file mode 100644 index dd6a10de1cd..00000000000 --- a/cmake/3rdparty/cmake/QtIRRunCMake.cmake +++ /dev/null @@ -1,349 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. -# -# Original file location was Tests/RunCMake/RunCMake.cmake - -foreach( - arg - IN ITEMS - RunCMake_GENERATOR - RunCMake_SOURCE_DIR - RunCMake_BINARY_DIR - ) - if(NOT DEFINED ${arg}) - message(FATAL_ERROR "${arg} not given!") - endif() -endforeach() - -function(run_cmake test) - if(DEFINED ENV{RunCMake_TEST_FILTER}) - set(test_and_variant "${test}${RunCMake_TEST_VARIANT_DESCRIPTION}") - if(NOT test_and_variant MATCHES "$ENV{RunCMake_TEST_FILTER}") - return() - endif() - unset(test_and_variant) - endif() - - set(top_src "${RunCMake_SOURCE_DIR}") - set(top_bin "${RunCMake_BINARY_DIR}") - if(EXISTS ${top_src}/${test}-result.txt) - file(READ ${top_src}/${test}-result.txt expect_result) - string(REGEX REPLACE "\n+$" "" expect_result "${expect_result}") - elseif(DEFINED RunCMake_TEST_EXPECT_RESULT) - set(expect_result "${RunCMake_TEST_EXPECT_RESULT}") - else() - set(expect_result 0) - endif() - - string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} platform_name) - #remove all additional bits from cygwin/msys name - if(platform_name MATCHES cygwin) - set(platform_name cygwin) - endif() - if(platform_name MATCHES msys) - set(platform_name msys) - endif() - - foreach(o IN ITEMS stdout stderr config) - if(RunCMake-${o}-file AND EXISTS ${top_src}/${RunCMake-${o}-file}) - file(READ ${top_src}/${RunCMake-${o}-file} expect_${o}) - string(REGEX REPLACE "\n+$" "" expect_${o} "${expect_${o}}") - elseif(EXISTS ${top_src}/${test}-${o}-${platform_name}.txt) - file(READ ${top_src}/${test}-${o}-${platform_name}.txt expect_${o}) - string(REGEX REPLACE "\n+$" "" expect_${o} "${expect_${o}}") - elseif(EXISTS ${top_src}/${test}-${o}.txt) - file(READ ${top_src}/${test}-${o}.txt expect_${o}) - string(REGEX REPLACE "\n+$" "" expect_${o} "${expect_${o}}") - elseif(DEFINED RunCMake_TEST_EXPECT_${o}) - string(REGEX REPLACE "\n+$" "" expect_${o} "${RunCMake_TEST_EXPECT_${o}}") - else() - unset(expect_${o}) - endif() - endforeach() - foreach(o IN ITEMS stdout stderr config) - if(DEFINED RunCMake_TEST_NOT_EXPECT_${o}) - string(REGEX REPLACE "\n+$" "" not_expect_${o} "${RunCMake_TEST_NOT_EXPECT_${o}}") - endif() - endforeach() - if (NOT expect_stderr) - if (NOT RunCMake_DEFAULT_stderr) - set(RunCMake_DEFAULT_stderr "^$") - endif() - set(expect_stderr ${RunCMake_DEFAULT_stderr}) - endif() - - if (NOT RunCMake_TEST_SOURCE_DIR) - set(RunCMake_TEST_SOURCE_DIR "${top_src}") - endif() - if(NOT RunCMake_TEST_BINARY_DIR) - set(RunCMake_TEST_BINARY_DIR "${top_bin}/${test}-build") - endif() - if(NOT RunCMake_TEST_NO_CLEAN) - file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") - endif() - file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - if(RunCMake-prep-file AND EXISTS ${top_src}/${RunCMake-prep-file}) - include(${top_src}/${RunCMake-prep-file}) - else() - include(${top_src}/${test}-prep.cmake OPTIONAL) - endif() - if(RunCMake_TEST_OUTPUT_MERGE) - set(actual_stderr_var actual_stdout) - set(actual_stderr "") - else() - set(actual_stderr_var actual_stderr) - endif() - if(DEFINED RunCMake_TEST_TIMEOUT) - set(maybe_timeout TIMEOUT ${RunCMake_TEST_TIMEOUT}) - else() - set(maybe_timeout "") - endif() - if(RunCMake-stdin-file AND EXISTS ${top_src}/${RunCMake-stdin-file}) - set(maybe_input_file INPUT_FILE ${top_src}/${RunCMake-stdin-file}) - elseif(EXISTS ${top_src}/${test}-stdin.txt) - set(maybe_input_file INPUT_FILE ${top_src}/${test}-stdin.txt) - else() - set(maybe_input_file "") - endif() - if(NOT RunCMake_TEST_COMMAND) - if(NOT DEFINED RunCMake_TEST_OPTIONS) - set(RunCMake_TEST_OPTIONS "") - endif() - if(APPLE) - list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0025=NEW) - endif() - if(RunCMake_TEST_LCC AND NOT RunCMake_TEST_NO_CMP0129) - list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0129=NEW) - endif() - if(RunCMake_MAKE_PROGRAM) - list(APPEND RunCMake_TEST_OPTIONS "-DCMAKE_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}") - endif() - set(RunCMake_TEST_COMMAND ${CMAKE_COMMAND}) - if(NOT RunCMake_TEST_NO_SOURCE_DIR) - list(APPEND RunCMake_TEST_COMMAND "${RunCMake_TEST_SOURCE_DIR}") - endif() - list(APPEND RunCMake_TEST_COMMAND -G "${RunCMake_GENERATOR}") - if(RunCMake_GENERATOR_PLATFORM) - list(APPEND RunCMake_TEST_COMMAND -A "${RunCMake_GENERATOR_PLATFORM}") - endif() - if(RunCMake_GENERATOR_TOOLSET) - list(APPEND RunCMake_TEST_COMMAND -T "${RunCMake_GENERATOR_TOOLSET}") - endif() - if(RunCMake_GENERATOR_INSTANCE) - list(APPEND RunCMake_TEST_COMMAND "-DCMAKE_GENERATOR_INSTANCE=${RunCMake_GENERATOR_INSTANCE}") - endif() - list(APPEND RunCMake_TEST_COMMAND - -DRunCMake_TEST=${test} - --no-warn-unused-cli - ) - else() - set(RunCMake_TEST_OPTIONS "") - endif() - if(NOT DEFINED RunCMake_TEST_RAW_ARGS) - set(RunCMake_TEST_RAW_ARGS "") - endif() - if(NOT RunCMake_TEST_COMMAND_WORKING_DIRECTORY) - set(RunCMake_TEST_COMMAND_WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - endif() - string(CONCAT _code [[execute_process( - COMMAND ${RunCMake_TEST_COMMAND} - ${RunCMake_TEST_OPTIONS} - ]] "${RunCMake_TEST_RAW_ARGS}\n" [[ - WORKING_DIRECTORY "${RunCMake_TEST_COMMAND_WORKING_DIRECTORY}" - OUTPUT_VARIABLE actual_stdout - ERROR_VARIABLE ${actual_stderr_var} - RESULT_VARIABLE actual_result - ENCODING UTF8 - ${maybe_timeout} - ${maybe_input_file} - )]]) - if(DEFINED ENV{PWD}) - set(old_pwd "$ENV{PWD}") - else() - set(old_pwd) - endif() - # Emulate a shell using this directory. - set(ENV{PWD} "${RunCMake_TEST_COMMAND_WORKING_DIRECTORY}") - cmake_language(EVAL CODE "${_code}") - if(DEFINED old_pwd) - set(ENV{PWD} "${old_pwd}") - else() - set(ENV{PWD}) - endif() - set(msg "") - if(NOT "${actual_result}" MATCHES "${expect_result}") - string(APPEND msg "Result is [${actual_result}], not [${expect_result}].\n") - endif() - set(config_file "${RunCMake_TEST_COMMAND_WORKING_DIRECTORY}/CMakeFiles/CMakeConfigureLog.yaml") - if(EXISTS "${config_file}") - file(READ "${config_file}" actual_config) - else() - set(actual_config "") - endif() - - # Special case: remove ninja no-op line from stderr, but not stdout. - # Test cases that look for it should use RunCMake_TEST_OUTPUT_MERGE. - string(REGEX REPLACE "(^|\r?\n)ninja: no work to do\\.\r?\n" "\\1" actual_stderr "${actual_stderr}") - - # Remove incidental content from both stdout and stderr. - string(CONCAT ignore_line_regex - "(^|\n)((==[0-9]+==" - "|BullseyeCoverage" - "|[a-z]+\\([0-9]+\\) malloc:" - "|clang[^:]*: warning: the object size sanitizer has no effect at -O0, but is explicitly enabled:" - "|flang-new: warning: argument unused during compilation: .-flang-experimental-exec." - "|icp?x: remark: Note that use of .-g. without any optimization-level option will turn off most compiler optimizations" - "|ifx: remark #10440: Note that use of a debug option without any optimization-level option will turnoff most compiler optimizations" - "|lld-link: warning: procedure symbol record for .* refers to PDB item index [0-9A-Fa-fx]+ which is not a valid function ID record" - "|Error kstat returned" - "|Hit xcodebuild bug" - "|Recompacting log\\.\\.\\." - - "|LICENSE WARNING:" - "|Your license to use PGI[^\n]*expired" - "|Please obtain a new version at" - "|contact PGI Sales at" - "|ic(p?c|l): remark #10441: The Intel\\(R\\) C\\+\\+ Compiler Classic \\(ICC\\) is deprecated" - - "|[^\n]*install_name_tool: warning: changes being made to the file will invalidate the code signature in:" - "|[^\n]*(createItemModels|_NSMainThread|Please file a bug at)" - "|[^\n]*xcodebuild[^\n]*DVTAssertions: Warning" - "|[^\n]*xcodebuild[^\n]*DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default" - "|[^\n]*xcodebuild[^\n]*DVTPlugInManager" - "|[^\n]*xcodebuild[^\n]*DVTSDK: Warning: SDK path collision for path" - "|[^\n]*xcodebuild[^\n]*Requested but did not find extension point with identifier" - "|[^\n]*xcodebuild[^\n]*nil host used in call to allows.*HTTPSCertificateForHost" - "|[^\n]*xcodebuild[^\n]*warning: file type[^\n]*is based on missing file type" - "|[^\n]*objc[^\n]*: Class [^\n]* One of the two will be used. Which one is undefined." - "|[^\n]*is a member of multiple groups" - "|[^\n]*offset in archive not a multiple of 8" - "|[^\n]*from Time Machine by path" - "|[^\n]*Bullseye Testing Technology" - ${RunCMake_TEST_EXTRA_IGNORE_LINE_REGEX} - ")[^\n]*\n)+" - ) - if(RunCMake_IGNORE_POLICY_VERSION_DEPRECATION) - string(REGEX REPLACE [[ -^CMake Deprecation Warning at [^ -]*CMakeLists.txt:1 \(cmake_minimum_required\): - Compatibility with CMake < 3\.5 will be removed from a future version of - CMake. - - Update the VERSION argument value or use a \.\.\. suffix to tell - CMake that the project does not need compatibility with older versions\. -+ -]] "" actual_stderr "${actual_stderr}") - endif() - foreach(o IN ITEMS stdout stderr config) - string(REGEX REPLACE "\r\n" "\n" actual_${o} "${actual_${o}}") - string(REGEX REPLACE "${ignore_line_regex}" "\\1" actual_${o} "${actual_${o}}") - string(REGEX REPLACE "\n+$" "" actual_${o} "${actual_${o}}") - if(DEFINED expect_${o}) - if(NOT "${actual_${o}}" MATCHES "${expect_${o}}") - string(APPEND msg "${o} does not match that expected.\n") - endif() - endif() - if(DEFINED not_expect_${o}) - if("${actual_${o}}" MATCHES "${not_expect_${o}}") - string(APPEND msg "${o} matches that not expected.\n") - endif() - endif() - endforeach() - unset(RunCMake_TEST_FAILED) - if(RunCMake-check-file AND EXISTS ${top_src}/${RunCMake-check-file}) - include(${top_src}/${RunCMake-check-file}) - else() - include(${top_src}/${test}-check.cmake OPTIONAL) - endif() - if(RunCMake_TEST_FAILED) - set(msg "${RunCMake_TEST_FAILED}\n${msg}") - endif() - if(msg) - string(REPLACE ";" "\" \"" command "\"${RunCMake_TEST_COMMAND}\"") - if(RunCMake_TEST_OPTIONS) - string(REPLACE ";" "\" \"" options "\"${RunCMake_TEST_OPTIONS}\"") - string(APPEND command " ${options}") - endif() - if(RunCMake_TEST_RAW_ARGS) - string(APPEND command " ${RunCMake_TEST_RAW_ARGS}") - endif() - string(APPEND msg "Command was:\n command> ${command}\n") - endif() - if(msg) - foreach(o IN ITEMS stdout stderr config) - if(DEFINED expect_${o}) - string(REGEX REPLACE "\n" "\n expect-${o}> " expect_${o} " expect-${o}> ${expect_${o}}") - string(APPEND msg "Expected ${o} to match:\n${expect_${o}}\n") - endif() - if(NOT o STREQUAL "config" OR DEFINED expect_${o}) - string(REGEX REPLACE "\n" "\n actual-${o}> " actual_${o} " actual-${o}> ${actual_${o}}") - string(APPEND msg "Actual ${o}:\n${actual_${o}}\n") - endif() - endforeach() - message(SEND_ERROR "${test}${RunCMake_TEST_VARIANT_DESCRIPTION} - FAILED:\n${msg}") - else() - message(STATUS "${test}${RunCMake_TEST_VARIANT_DESCRIPTION} - PASSED") - endif() -endfunction() - -function(run_cmake_command test) - set(RunCMake_TEST_COMMAND "${ARGN}") - run_cmake(${test}) -endfunction() - -function(run_cmake_script test) - set(RunCMake_TEST_COMMAND ${CMAKE_COMMAND} ${ARGN} -P ${RunCMake_SOURCE_DIR}/${test}.cmake) - run_cmake(${test}) -endfunction() - -function(run_cmake_with_options test) - set(RunCMake_TEST_OPTIONS "${ARGN}") - run_cmake(${test}) -endfunction() - -function(run_cmake_with_raw_args test args) - set(RunCMake_TEST_RAW_ARGS "${args}") - run_cmake(${test}) -endfunction() - -function(ensure_files_match expected_file actual_file) - if(NOT EXISTS "${expected_file}") - message(FATAL_ERROR "Expected file does not exist:\n ${expected_file}") - endif() - if(NOT EXISTS "${actual_file}") - message(FATAL_ERROR "Actual file does not exist:\n ${actual_file}") - endif() - file(READ "${expected_file}" expected_file_content) - file(READ "${actual_file}" actual_file_content) - if(NOT "${expected_file_content}" STREQUAL "${actual_file_content}") - message(FATAL_ERROR "Actual file content does not match expected:\n - \n - expected file: ${expected_file}\n - expected content:\n - ${expected_file_content}\n - \n - actual file: ${actual_file}\n - actual content:\n - ${actual_file_content}\n - ") - endif() -endfunction() - -# Get the user id on unix if possible. -function(get_unix_uid var) - set("${var}" "" PARENT_SCOPE) - if(UNIX) - set(ID "id") - if(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND EXISTS "/usr/xpg4/bin/id") - set (ID "/usr/xpg4/bin/id") - endif() - execute_process(COMMAND ${ID} -u $ENV{USER} OUTPUT_VARIABLE uid ERROR_QUIET - RESULT_VARIABLE status OUTPUT_STRIP_TRAILING_WHITESPACE) - if(status EQUAL 0) - set("${var}" "${uid}" PARENT_SCOPE) - endif() - endif() -endfunction() - -# Protect RunCMake tests from calling environment. -unset(ENV{MAKEFLAGS}) diff --git a/cmake/3rdparty/cmake/QtIRTestHelpers.cmake b/cmake/3rdparty/cmake/QtIRTestHelpers.cmake deleted file mode 100644 index 804e20f0f44..00000000000 --- a/cmake/3rdparty/cmake/QtIRTestHelpers.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. -# -# Original file location was Tests/RunCMake/CMakeLists.txt - -macro(add_RunCMake_test test) - set(TEST_ARGS ${ARGN}) - if ("${ARGV1}" STREQUAL "TEST_DIR") - if ("${ARGV2}" STREQUAL "") - message(FATAL_ERROR "Invalid args") - endif() - set(Test_Dir ${ARGV2}) - list(REMOVE_AT TEST_ARGS 0) - list(REMOVE_AT TEST_ARGS 0) - else() - set(Test_Dir ${test}) - endif() - if(CMAKE_C_COMPILER_ID STREQUAL "LCC") - list(APPEND TEST_ARGS -DRunCMake_TEST_LCC=1) - endif() - add_test(NAME RunCMake.${test} COMMAND ${CMAKE_CMAKE_COMMAND} - -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} - -DRunCMake_GENERATOR_IS_MULTI_CONFIG=${_isMultiConfig} - -DRunCMake_GENERATOR=${CMAKE_GENERATOR} - -DRunCMake_GENERATOR_INSTANCE=${CMAKE_GENERATOR_INSTANCE} - -DRunCMake_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} - -DRunCMake_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} - -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} - -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${Test_Dir} - -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${test} - ${${test}_ARGS} - ${TEST_ARGS} - -P "${CMAKE_CURRENT_SOURCE_DIR}/${Test_Dir}/RunCMakeTest.cmake" - ) - set_tests_properties("RunCMake.${test}" PROPERTIES LABELS "CMake;run") - if(${test} MATCHES ^CMP) - set_property(TEST "RunCMake.${test}" APPEND PROPERTY LABELS "policy") - endif() -endmacro() diff --git a/cmake/3rdparty/cmake/qt_attribution.json b/cmake/3rdparty/cmake/qt_attribution.json deleted file mode 100644 index 8ba8a1e73ac..00000000000 --- a/cmake/3rdparty/cmake/qt_attribution.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "Id": "cmake-test-modules", - "Name": "cmake-test-modules", - "QDocModule": "qtcore", - "QtUsage": "Used as part of the build system.", - "QtParts" : [ "tests" ], - - "Description": "CMake helpers for running CMake tests.", - "Homepage": "https://cmake.org/", - "Version": "3.29.0", - - "License": "BSD 3-Clause \"New\" or \"Revised\" License", - "LicenseId": "BSD-3-Clause", - "LicenseFile": "Copyright.txt", - "Copyright": "Copyright © 2000-2024 Kitware, Inc. and Contributors" -} diff --git a/cmake/QtIRCommandLineHelpers.cmake b/cmake/QtIRCommandLineHelpers.cmake index 65c5d6aabb6..d3569dd7f6e 100644 --- a/cmake/QtIRCommandLineHelpers.cmake +++ b/cmake/QtIRCommandLineHelpers.cmake @@ -59,7 +59,7 @@ endfunction() # Helper macro to parse the arguments for the command line options. macro(qt_ir_commandline_option_parse_arguments) - set(options UNSUPPORTED) + set(options UNSUPPORTED COMMON) set(oneValueArgs TYPE NAME SHORT_NAME ALIAS VALUE DEFAULT_VALUE) set(multiValueArgs VALUES MAPPING) cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -81,6 +81,7 @@ endmacro() # same value when retrieved. # DEFAULT_VALUE - the default value to be set for the option when it's not specified # on the command line +# COMMON - the argument is common for init-repository and configure scripts # # NOTE: Make sure to update the SHORT_NAME code path when adding new options. function(qt_ir_commandline_option_helper name) @@ -97,6 +98,14 @@ function(qt_ir_commandline_option_helper name) set(commandline_known_options "${commandline_known_options};${name}" PARENT_SCOPE) + if(arg_COMMON) + set(commandline_option_${name}_common "true" PARENT_SCOPE) + if(NOT "${arg_TYPE}" STREQUAL "boolean") + message(FATAL_ERROR "${name} is '${arg_TYPE}', but COMMON arguments can be" + " 'boolean' only.") + endif() + endif() + set(commandline_option_${name}_type "${arg_TYPE}" PARENT_SCOPE) if(NOT "${arg_VALUE}" STREQUAL "") @@ -137,7 +146,12 @@ macro(qt_ir_commandline_option name) AND "${commandline_option_${arg_SHORT_NAME}_type}" STREQUAL "") set(unsupported "") if(arg_UNSUPPORTED) - set(unsupported "${arg_UNSUPPORTED}") + set(unsupported "UNSUPPORTED") + endif() + + set(common "") + if(arg_COMMON) + set(common "COMMON") endif() qt_ir_commandline_option_helper("${arg_SHORT_NAME}" @@ -148,6 +162,7 @@ macro(qt_ir_commandline_option name) MAPPING ${arg_MAPPING} DEFAULT_VALUE ${arg_DEFAULT_VALUE} ${unsupported} + ${common} ) endif() endmacro() @@ -323,6 +338,9 @@ function(qt_ir_process_args_from_optfile optfile_path) qt_ir_append_unknown_args("${arg}") continue() endif() + elseif(commandline_option_${opt}_common AND arg_IGNORE_UNKNOWN_ARGS) + message(DEBUG "Common command line option '${arg}'. Collecting.") + qt_ir_append_unknown_args("${arg}") endif() if(NOT COMMAND "qt_ir_commandline_${type}") diff --git a/cmake/QtIRGitHelpers.cmake b/cmake/QtIRGitHelpers.cmake index 288f4ac78fb..d851b65a31e 100644 --- a/cmake/QtIRGitHelpers.cmake +++ b/cmake/QtIRGitHelpers.cmake @@ -93,9 +93,15 @@ function(qt_ir_run_git_submodule_init submodules working_directory) qt_ir_setup_commit_template("${working_directory}" "${working_directory}") endfunction() -# Add gerrit remotes to the repository. -function(qt_ir_add_git_remotes repo_name working_directory) - set(gerrit_ssh_base "ssh://@USER@codereview.qt-project.org@PORT@/qt/") +# Add gerrit remotes to the repository located in the working_directory. +# repo_relative_url is the relative URL of the repository. +# Examples: +# - qt5 +# - qttools.git +# - ../playground/qlitehtml.git +# - ../qt/qttools-litehtml.git +function(qt_ir_add_git_remotes repo_relative_url working_directory) + set(gerrit_ssh_base "ssh://@USER@codereview.qt-project.org@PORT@/") set(gerrit_repo_url "${gerrit_ssh_base}") qt_ir_get_option_value(codereview-username username) @@ -110,7 +116,10 @@ function(qt_ir_add_git_remotes repo_name working_directory) string(REPLACE "@PORT@" "" gerrit_repo_url "${gerrit_repo_url}") endif() - string(APPEND gerrit_repo_url "${repo_name}") + set(namespace "qt") + set(repo_relative_url_with_namespace "${namespace}/${repo_relative_url}") + qt_ir_normalize_git_url("http://github.com/$%7Brepo_relative_url_with_namespace%7D%22%20normalized_url) + string(APPEND gerrit_repo_url "${normalized_url}") qt_ir_execute_process_and_log_and_handle_error( COMMAND_ARGS git config remote.gerrit.url "${gerrit_repo_url}" @@ -193,15 +202,21 @@ function(qt_ir_clone_one_submodule submodule_name) set(submodule_base_git_path "${${prefix}_${submodule_name}_base_git_path}") set(submodule_url "${submodule_base_git_path}") - qt_ir_has_url_scheme("${submodule_url}" has_url_scheme) + qt_ir_parse_git_url( + URL "${submodule_url}" + OUT_VAR_HAS_URL_SCHEME has_url_scheme + ) + if(NOT has_url_scheme AND arg_BASE_URL) set(submodule_url "${arg_BASE_URL}${submodule_url}") + qt_ir_normalize_git_url("http://github.com/$%7Bsubmodule_url%7D%22%20submodule_url) endif() qt_ir_get_mirror(mirror_url) set(mirror "") if(NOT has_url_scheme AND mirror_url AND (should_clone OR arg_FETCH)) set(mirror "${mirror_url}${submodule_base_git_path}") + qt_ir_normalize_git_url("http://github.com/$%7Bmirror%7D%22%20mirror) endif() set(mirror_or_original_url "${submodule_url}") diff --git a/cmake/QtIRHelpers.cmake b/cmake/QtIRHelpers.cmake index 8e2af7f88c7..c305ae803b2 100644 --- a/cmake/QtIRHelpers.cmake +++ b/cmake/QtIRHelpers.cmake @@ -8,7 +8,6 @@ macro(qt_ir_include_all_helpers) include(QtIROptionsHelpers) include(QtIRParsingHelpers) include(QtIRProcessHelpers) - include(QtIRTestHelpers) include(QtTopLevelHelpers) endmacro() @@ -117,7 +116,7 @@ function(qt_ir_get_args_from_optfile_configure_filtered optfile_path out_var) if(submodules) qt_ir_get_top_level_submodules(include_submodules exclude_submodules) if(NOT include_submodules AND arg_ALREADY_INITIALIZED) - set(include_submodules "${submodules}") + string(REPLACE "," ";" include_submodules "${submodules}") endif() # qtrepotools is always implicitly cloned, but it doesn't actually diff --git a/cmake/QtIROptionsHelpers.cmake b/cmake/QtIROptionsHelpers.cmake index d87c7463a84..496ec42bdf7 100644 --- a/cmake/QtIROptionsHelpers.cmake +++ b/cmake/QtIROptionsHelpers.cmake @@ -29,7 +29,7 @@ macro(qt_ir_set_known_command_line_options) qt_ir_commandline_option(quiet SHORT_NAME q TYPE boolean) qt_ir_commandline_option(resolve-deps TYPE boolean DEFAULT_VALUE yes) qt_ir_commandline_option(update TYPE boolean DEFAULT_VALUE yes) - qt_ir_commandline_option(verbose TYPE boolean) + qt_ir_commandline_option(verbose TYPE boolean COMMON) # These are used when init-repository is called from configure. qt_ir_commandline_option(from-configure TYPE boolean) diff --git a/cmake/QtIRParsingHelpers.cmake b/cmake/QtIRParsingHelpers.cmake index d7d3f20e9d3..04a344234f5 100644 --- a/cmake/QtIRParsingHelpers.cmake +++ b/cmake/QtIRParsingHelpers.cmake @@ -40,18 +40,79 @@ function(qt_ir_get_git_config_contents out_var) set(${out_var} "${git_output}" PARENT_SCOPE) endfunction() -# Checks whether the given url has a scheme like https:// or is just a -# relative path. -function(qt_ir_has_url_scheme url out_var) - string(REGEX MATCH "^[a-z][a-z0-9+\-.]*://" has_url_scheme "${url}") +# Parses a git repo url to: +# - check if the given url has a scheme like https:// or git:// or is just a +# relative path with no scheme (possibly containing '../' segments) +# - extracts the scheme if it exists +# - extracts the url without the scheme +function(qt_ir_parse_git_url) + set(options "") + set(oneValueArgs + URL + OUT_VAR_HAS_URL_SCHEME + OUT_VAR_SCHEME + OUT_VAR_URL_WITHOUT_SCHEME + ) + set(multiValueArgs "") + cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(has_url_scheme) - set(${out_var} TRUE PARENT_SCOPE) + string(REGEX MATCH "^([a-z][a-z0-9+\-.]*://)(.+)" url_scheme_match "${arg_URL}") + + if(url_scheme_match) + set(has_url_scheme TRUE) + set(scheme "${CMAKE_MATCH_1}") + set(url_without_scheme "${CMAKE_MATCH_2}") else() - set(${out_var} FALSE PARENT_SCOPE) + set(has_url_scheme FALSE) + set(scheme "") + set(url_without_scheme "${url}") + endif() + + if(arg_OUT_VAR_HAS_URL_SCHEME) + set(${arg_OUT_VAR_HAS_URL_SCHEME} "${has_url_scheme}" PARENT_SCOPE) + endif() + + if(arg_OUT_VAR_SCHEME) + set(${arg_OUT_VAR_SCHEME} "${scheme}" PARENT_SCOPE) + endif() + + if(arg_OUT_VAR_URL_WITHOUT_SCHEME) + set(${arg_OUT_VAR_URL_WITHOUT_SCHEME} "${url_without_scheme}" PARENT_SCOPE) endif() endfunction() +# Normalizes a url that contains '../' path segments. +# Removes the '../' segments and the directories that they precede. +# Example: +# git://code.qt.io/qt/../playground/qlitehtml.git +# will be normalized to: +# git://code.qt.io/playground/qlitehtml.git +function(qt_ir_normalize_git_url url out_var) + # The exact perl code was while ($base =~ s,(?!\.\./)[^/]+/\.\./,,g) {} + # That got rid of ../ and ../../ in the path, but it broke down + # when more than two '../' segments were present. + # + # In CMake, we instead parse the url to get the non-scheme suffix, + # use get_filename_component(ABSOLUTE) to resolve the url as if it was a relative path + # and then re-add the scheme if it was present. + qt_ir_parse_git_url( + URL "${url}" + OUT_VAR_HAS_URL_SCHEME has_url_scheme + OUT_VAR_SCHEME url_scheme + OUT_VAR_URL_WITHOUT_SCHEME url_without_scheme + ) + + # Note the empty BASE_DIR is important, otherwise the path is relative to + # ${CMAKE_CURRENT_SOURCE_DIR}. + get_filename_component(normalized_url "${url_without_scheme}" ABSOLUTE BASE_DIR "") + + if(has_url_scheme) + string(PREPEND normalized_url "${url_scheme}") + endif() + + set(${out_var} "${normalized_url}" PARENT_SCOPE) +endfunction() + # Parses a key-value line from a .git/config or .gitmodules file macro(qt_ir_parse_git_key_value) string(REGEX REPLACE "^submodule\\.([^.=]+)\\.([^.=]+)=(.*)$" "\\1;\\2;\\3" @@ -79,14 +140,22 @@ endmacro() # url_value # the url where to clone a repo from # in perl script it was called $base -# e.g. '../qtbase.git', 'https://code.qt.io/playground/qlitehtml.git' +# Examples: +# - '../qtbase.git' +# - 'https://code.qt.io/playground/qlitehtml.git' +# - '../../playground/qlitehtml.git' # parent_repo_base_git_path # the base git path of the parent of the submodule # it is either a relative dir or a full url # in the perl script it was called $my_repo_base, # it was passed as first arg to git_clone_all_submodules, # it was passed the value of $subbases{$module} when doing recursive submodule cloning -# e.g. 'qt5', 'tqtc-qt5', 'qtdeclarative.git', 'https://code.qt.io/playground/qlitehtml.git' +# Examples: +# - 'qt5' +# - 'tqtc-qt5' +# - 'qtdeclarative.git' +# - 'qttools.git' +# - 'https://code.qt.io/playground/qlitehtml.git' # # Outputs # @@ -94,21 +163,21 @@ endmacro() # just the value of ${url_value} # ${out_var_prefix}_${submodule_name}_base_git_path # the whole url if it has a scheme, otherwise it's the value of -# ${url_value} relative to ${parent_repo_base_git_path}, so all the ../ are collapsed -# e.g. 'qtdeclarative.git' -# 'https://code.qt.io/playground/qlitehtml.git', +# ${url_value} relative to ${parent_repo_base_git_path}, so some of the '../' segments +# are collapsed depending on how many path segments are available in +# ${parent_repo_base_git_path}. +# Examples: +# - 'qtdeclarative.git' +# - 'https://code.qt.io/playground/qlitehtml.git' +# - '../playground/qlitehtml.git' macro(qt_ir_parse_git_url_key out_var_prefix submodule_name url_value parent_repo_base_git_path) - qt_ir_has_url_scheme("${url_value}" has_url_scheme) + qt_ir_parse_git_url( + URL "${url_value}" + OUT_VAR_HAS_URL_SCHEME has_url_scheme + ) if(NOT has_url_scheme) set(base_git_path "${parent_repo_base_git_path}/${url_value}") - - # The exact code perl code was while ($base =~ s,(?!\.\./)[^/]+/\.\./,,g) {} - # That got rid of ../ and ../../ in the path, but it broke down - # when more than two ../ were present. - # We just use ABSOLUTE to resolve the path and get rid of all ../ - # Note the empty BASE_DIR is important, otherwise the path is relative to - # ${CMAKE_CURRENT_SOURCE_DIR}. - get_filename_component(base_git_path "${base_git_path}" ABSOLUTE BASE_DIR "") + qt_ir_normalize_git_url("http://github.com/$%7Bbase_git_path%7D%22%20base_git_path) else() set(base_git_path "${url_value}") endif() diff --git a/cmake/QtIRScript.cmake b/cmake/QtIRScript.cmake index fc5ffba9c3d..bd2b97c7f23 100644 --- a/cmake/QtIRScript.cmake +++ b/cmake/QtIRScript.cmake @@ -7,7 +7,6 @@ cmake_minimum_required(VERSION 3.16) macro(qt_ir_setup_include_paths) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}" - "${CMAKE_CURRENT_LIST_DIR}/3rdparty/cmake" ) include(QtIRHelpers) endmacro() diff --git a/cmake/QtSynchronizeRepo.cmake b/cmake/QtSynchronizeRepo.cmake index eabd5c7c9a8..3876fc0a9df 100644 --- a/cmake/QtSynchronizeRepo.cmake +++ b/cmake/QtSynchronizeRepo.cmake @@ -3,13 +3,62 @@ # This script is to be called (ideally from a git-sync-to alias script): # cmake -DSYNC_TO_MODULE="$1" -DSYNC_TO_BRANCH="$2" -P cmake/QtSynchronizeRepo.cmake + # Or as follows (ideally from a git-qt-foreach alias script): # cmake -DQT_FOREACH=TRUE "-DARGS=$*" -P cmake/QtSynchronizeRepo.cmake +# +# The script can take additional options. +# +# SYNC_REF_SPEC - an alias for SYNC_TO_BRANCH, can be a tag, branch or commit sha1. +# +# REMOTE_NAME - remote name to use for fetching, default is origin. +# +# GIT_DEPTH - corresponds to git's --depth option, will be passed to git clone and git submodule +# update --init operations. +# +# SHOW_PROGRESS - passes --progress to git submodule update operations +# +# VERBOSE - enables more verbose output +# +# The script also takes the following environment variables: +# +# QT_TL_SUBMODULE_UPDATE_FLAGS - additional flags to pass to git submodule update calls. +# +# To run the script in full debug mode use: +# cmake -DSYNC_TO_MODULE="$1" -DSYNC_TO_BRANCH="$2" -DSHOW_PROGRESS=1 -DVERBOSE=1 +# -P cmake/QtSynchronizeRepo.cmake --log-level=DEBUG --trace-redirect=log.txt --trace-expand cmake_policy(VERSION 3.16) -include(cmake/QtTopLevelHelpers.cmake) +include("${CMAKE_CURRENT_LIST_DIR}/QtTopLevelHelpers.cmake") if(QT_FOREACH) qt_internal_foreach_repo_run(ARGS ${ARGS}) else() - qt_internal_sync_to(${SYNC_TO_MODULE} ${SYNC_TO_BRANCH}) + set(args "") + + if(SYNC_REF_SPEC) + set(ref_spec "${SYNC_REF_SPEC}") + elseif(SYNC_TO_BRANCH) + set(ref_spec "${SYNC_TO_BRANCH}") + endif() + + if(REMOTE_NAME) + list(APPEND args REMOTE_NAME "${REMOTE_NAME}") + endif() + + if(GIT_DEPTH) + list(APPEND args GIT_DEPTH "${GIT_DEPTH}") + endif() + + if(SHOW_PROGRESS) + list(APPEND args SHOW_PROGRESS) + endif() + + if(VERBOSE) + list(APPEND args VERBOSE) + endif() + + qt_internal_sync_to(${SYNC_TO_MODULE} + SYNC_REF ${ref_spec} + ${args} + ) endif() diff --git a/cmake/QtTopLevelConfigureScript.cmake b/cmake/QtTopLevelConfigureScript.cmake index 304bf7b751d..b0f92fa38f1 100644 --- a/cmake/QtTopLevelConfigureScript.cmake +++ b/cmake/QtTopLevelConfigureScript.cmake @@ -7,7 +7,6 @@ cmake_minimum_required(VERSION 3.16) macro(qt_tl_setup_include_paths) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}" - "${CMAKE_CURRENT_LIST_DIR}/3rdparty/cmake" ) include(QtTopLevelHelpers) endmacro() diff --git a/cmake/QtTopLevelHelpers.cmake b/cmake/QtTopLevelHelpers.cmake index 7fe21e4f42c..69873d18258 100644 --- a/cmake/QtTopLevelHelpers.cmake +++ b/cmake/QtTopLevelHelpers.cmake @@ -379,16 +379,560 @@ function(qt_internal_sort_module_dependencies modules out_all_ordered) set(${out_all_ordered} "${ordered}" PARENT_SCOPE) endfunction() -# does what it says, but also updates submodules -function(qt_internal_checkout module revision) +# Checks whether any unparsed arguments have been passed to the function at the call site. +# Use this right after `cmake_parse_arguments`. +function(qt_internal_tl_validate_all_args_are_parsed prefix) + if(DEFINED ${prefix}_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Unknown arguments: (${${prefix}_UNPARSED_ARGUMENTS})") + endif() +endfunction() + +# If VERBOSE is not set or FALSE in the parent or root scopes, swallow the git output. +# If VERBOSE is true, echo the stdout output, as well as the command run. +function(qt_internal_tl_handle_verbose_git_operations) set(swallow_output "") # unless VERBOSE, eat git output, show it in case of error if (NOT VERBOSE) list(APPEND swallow_output "OUTPUT_VARIABLE" "git_output" "ERROR_VARIABLE" "git_output") + else() + list(APPEND swallow_output COMMAND_ECHO STDOUT) + endif() + set(swallow_output "${swallow_output}" PARENT_SCOPE) +endfunction() + +# Returns true if the current working directory is a super module with a .gitmodules file. +# Likely means it's the qt5.git super repo. +function(qt_internal_tl_is_super_repo out_var) + execute_process( + COMMAND "git" "rev-parse" "--show-toplevel" + RESULT_VARIABLE git_result + OUTPUT_VARIABLE top_level_path + ERROR_VARIABLE git_stderr + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if(NOT git_result AND top_level_path AND EXISTS "${top_level_path}/.gitmodules") + set(result TRUE) + else() + set(result FALSE) + endif() + + set(${out_var} ${result} PARENT_SCOPE) +endfunction() + +# Returns whether the given git repo is shallow (cloned with --depth arg). +function(qt_internal_tl_is_git_repo_shallow out_var working_directory) + message(DEBUG "Checking if repo in '${working_directory}' is shallow") + + execute_process( + COMMAND "git" "rev-parse" "--is-shallow-repository" + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_stdout + ERROR_VARIABLE git_stderr + WORKING_DIRECTORY "${working_directory}" + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if(git_result) + message(FATAL_ERROR + "Failed to check if repo is shallow in '${working_directory}'\n" + "stdout: ${git_stdout}\n" + "stderr: ${git_stderr}") + endif() + + string(STRIP "${git_stdout}" git_stdout) + if(git_stdout) + set(value TRUE) + else() + set(value FALSE) + endif() + set(${out_var} "${value}" PARENT_SCOPE) +endfunction() + +# Returns whether the given refspec is known to the repo in the given working directory. +function(qt_internal_tl_is_git_ref_spec_known out_var refspec working_directory) + # The funny ^{commit} syntax means the refpsec resolves to a commit, as opposed to a blob or a + # tree. + execute_process( + COMMAND "git" "cat-file" "-e" "${refspec}^{commit}" + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_stdout + ERROR_VARIABLE git_stderr + WORKING_DIRECTORY "${working_directory}" + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + # A non-0 exit code means it doesn't exist. + if(git_result) + set(value FALSE) + else() + set(value TRUE) + endif() + + set(${out_var} "${value}" PARENT_SCOPE) +endfunction() + +# Unshallow the given git repo. +function(qt_internal_tl_git_unshallow_repo) + set(opt_args + SHOW_PROGRESS + ) + set(single_args + WORKING_DIRECTORY + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + set(args "") + if(arg_SHOW_PROGRESS) + list(APPEND args --progress) + endif() + + execute_process( + COMMAND "git" "fetch" "--unshallow" ${args} + RESULT_VARIABLE git_result + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + ${swallow_output} + ) + + if(git_result) + message(FATAL_ERROR + "Failed to unshallow repo in '${arg_WORKING_DIRECTORY}': ${git_stderr}") + endif() +endfunction() + +# Fetches a shallow ref spec (--depth 1) from the given remote. +function(qt_internal_tl_git_fetch_shallow_ref_spec) + set(opt_args + SHOW_PROGRESS + FATAL + ) + set(single_args + REMOTE + REF_SPEC + WORKING_DIRECTORY + OUT_VAR_RESULT + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + if(NOT arg_REF_SPEC) + message(FATAL_ERROR "REF_SPEC is required") + endif() + + if(NOT arg_REMOTE) + message(FATAL_ERROR "REMOTE is required") + endif() + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + if(NOT arg_OUT_VAR_RESULT) + message(FATAL_ERROR "OUT_VAR_RESULT is required") + endif() + + set(args "") + if(arg_SHOW_PROGRESS) + list(APPEND args --progress) + endif() + + execute_process( + COMMAND "git" "fetch" "--depth" "1" "${arg_REMOTE}" "${arg_REF_SPEC}" ${args} + RESULT_VARIABLE git_result + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + ${swallow_output} + ) + + if(git_result) + set(result FALSE) + if(arg_FATAL) + set(message_type FATAL_ERROR) + else() + set(message_type DEBUG) + endif() + message(${message_type} + "Failed to fetch shallow ref spec '${arg_REF_SPEC}' " + "in '${arg_WORKING_DIRECTORY}': ${git_stderr}") + else() + set(result TRUE) + endif() + + if(arg_OUT_VAR_RESULT) + set("${arg_OUT_VAR_RESULT}" "${result}" PARENT_SCOPE) endif() +endfunction() + +# Detects if a repo is shallow. If it is, checks if the given ref spec is known. If not, it will +# try to fetch it. If it's still unknown, will try to unshallow the repo. +function(qt_internal_tl_handle_shallow_repo) + set(opt_args + SHOW_PROGRESS + ) + set(single_args + REF_SPEC + REMOTE_NAME + WORKING_DIRECTORY + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + if(NOT arg_REF_SPEC) + message(FATAL_ERROR "REF_SPEC is required") + endif() + + if(NOT arg_REMOTE_NAME) + message(FATAL_ERROR "REMOTE_NAME is required") + endif() + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + qt_internal_tl_is_git_repo_shallow(is_shallow "${arg_WORKING_DIRECTORY}") + if(NOT is_shallow) + return() + endif() + + qt_internal_tl_is_git_ref_spec_known(is_known "${arg_REF_SPEC}" "${arg_WORKING_DIRECTORY}") + if(is_known) + return() + endif() + + set(remote "${arg_REMOTE_NAME}") + message(DEBUG + "Fetching with --depth 1 from '${remote}' due to unknown refspec '${arg_REF_SPEC}'") + + set(args "") + if(arg_SHOW_PROGRESS) + list(APPEND args SHOW_PROGRESS) + endif() + + qt_internal_tl_git_fetch_shallow_ref_spec( + REF_SPEC "${arg_REF_SPEC}" + REMOTE "${remote}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + OUT_VAR_RESULT shallow_fetch_succeeded + ${args} + ) + + # Attempt to unshallow a repo if a ref spec that we are meant to check out to, + # is not known. + if(shallow_fetch_succeeded) + return() + endif() + + message(DEBUG + "Unshallowing repo in ${arg_WORKING_DIRECTORY} due to unknown " + "refspec ${arg_REF_SPEC}") + + qt_internal_tl_git_unshallow_repo( + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + ${args} + ) +endfunction() + +# Checks if given string looks like a sha1. +function(qt_internal_tl_is_sha1_ish value out_var) + set(hex_digit "[0-9a-fA-F]") + string(REPEAT "${hex_digit}" 5 hex_5) + + set(hex_digit_maybe "${hex_digit}?") + string(REPEAT "${hex_digit_maybe}" 35 hex_35) + + # A sha1 would have at least 5 hex digits followed by 35 optional hex digits. + set(sha1_regex "^${hex_5}${hex_35}$") + + if("${value}" MATCHES "${sha1_regex}") + set(result TRUE) + else() + set(result FALSE) + endif() + + set(${out_var} "${result}" PARENT_SCOPE) +endfunction() + +# Directly updates the submodule sha in the supermodule, without having to checkout the submodule +# first. +# This is useful to be able to clone a specific revision with --depth 1 when using the "sync to +# module" feature. +# Causes the super module to have a "staged" change for the given submodule. +# Can only be used with a sha1, not a branch or tag or other refspec, because there might not be +# any repo info yet to resolve that refspec. +function(qt_internal_tl_modify_submodule_sha module revision working_directory) + qt_internal_tl_handle_verbose_git_operations() + + # This mode means 'treat path as a git submodule'. + set(mode "160000") + + execute_process( + COMMAND git update-index --add --cacheinfo "${mode},${revision},${module}" + RESULT_VARIABLE git_result + WORKING_DIRECTORY "${working_directory}" + ${swallow_output} + ) + if(git_result) + message(FATAL_ERROR "Failed to set initial submodule revision for '${module}'") + endif() +endfunction() + +# Unstages a previously staged change to the submodule sha in the supermodule. +# This should be run after qt_internal_tl_modify_submodule_sha and the submodule update operation, +# to not accidentally stage the change to the supermodule. +# It might still lieave the worktree dirty, because the checked out revision might be different +# from the one the supermodule expects, but that's fine, that's the point of the sync-to script. +function(qt_internal_tl_unstage_submodule_sha module working_directory) + qt_internal_tl_handle_verbose_git_operations() + + execute_process( + COMMAND git restore --staged "${module}" + RESULT_VARIABLE git_result + WORKING_DIRECTORY "${working_directory}" + ${swallow_output} + ) + if(git_result) + message(FATAL_ERROR "Failed to unstage submodule revision change for '${module}'") + endif() +endfunction() + +# Transforms a refspec into a commit sha1. +# Useful for git commands that can't take a refspec. +function(qt_internal_tl_get_refspec_as_sha) + set(opt_args + FATAL + ) + set(single_args + REF_SPEC + WORKING_DIRECTORY + OUT_VAR + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + if(NOT arg_REF_SPEC) + message(FATAL_ERROR "REF_SPEC is required") + endif() + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + if(NOT arg_OUT_VAR) + message(FATAL_ERROR "OUT_VAR is required") + endif() + + execute_process( + COMMAND "git" "rev-parse" "${arg_REF_SPEC}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_stdout + ERROR_VARIABLE git_stderr + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(git_result) + message(WARNING "${git_stdout}") + if(arg_FATAL) + set(message_type FATAL_ERROR) + else() + set(message_type WARNING) + endif() + message("${message_type}" + "Failed to get sha1 of ${arg_REF_SPEC} in '${arg_WORKING_DIRECTORY}': ${git_stderr}") + endif() + + string(STRIP "${git_stdout}" git_stdout) + set(${arg_OUT_VAR} "${git_stdout}" PARENT_SCOPE) +endfunction() + +# Runs `submodule update --init` for a submodule. +# +# If REF_SPEC is passed and is a valid commit sha1, sets the current active submodule sha1 in the +# super module to the given sha1. This is useful for cloning a specific sha1 with --depth 1. +# +# GIT_DEPTH passes the given --depth for the submodule update operation. +# +# SHOW_PROGRESS passes --progress to the submodule update operation. +# +# OUT_VAR_RESULT - set to TRUE or FALSE depending on whether the submodule update init succeeded. + +function(qt_internal_tl_run_submodule_update_init module) + set(opt_args + FAILURE_IS_WARNING + SHOW_PROGRESS + ) + set(single_args + REF_SPEC + GIT_DEPTH + FAILURE_MESSAGE + WORKING_DIRECTORY + OUT_VAR_RESULT + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 1 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + qt_internal_tl_handle_verbose_git_operations() + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + qt_internal_tl_is_sha1_ish("${arg_REF_SPEC}" is_sha1_revision) + + # We can only modify the submodule sha1 if we are given a sha1 reference, not any kind of + # refspec. + if(arg_REF_SPEC AND is_sha1_revision) + qt_internal_tl_modify_submodule_sha("${module}" "${arg_REF_SPEC}" + "${arg_WORKING_DIRECTORY}") + endif() + + set(args "") + set(extra_flags "$ENV{QT_TL_SUBMODULE_UPDATE_FLAGS}") + if(extra_flags) + list(APPEND args ${extra_flags}) + endif() + if(arg_GIT_DEPTH) + list(APPEND args --depth "${arg_GIT_DEPTH}") + endif() + if(arg_SHOW_PROGRESS) + list(APPEND args --progress) + endif() + + execute_process( + COMMAND "git" "submodule" "update" "--init" ${args} "${module}" + RESULT_VARIABLE git_result + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + ${swallow_output} + ) + + if(arg_REF_SPEC AND is_sha1_revision) + qt_internal_tl_unstage_submodule_sha("${module}" "${arg_WORKING_DIRECTORY}") + endif() + + if(git_result) + set(result FALSE) + + if(arg_FAILURE_IS_WARNING) + set(message_type WARNING) + else() + set(message_type FATAL_ERROR) + endif() + + message(${message_type} "${arg_FAILURE_MESSAGE}") + else() + set(result TRUE) + endif() + + if(arg_OUT_VAR_RESULT) + set("${arg_OUT_VAR_RESULT}" "${result}" PARENT_SCOPE) + endif() +endfunction() + +# Clones a 'qt/${REPO_NAME}' repo from code.qt.io. +function(qt_internal_tl_git_clone_repo) + set(opt_args + SHOW_PROGRESS + ) + set(single_args + REPO_NAME + GIT_DEPTH + REMOTE_URL_BASE + WORKING_DIRECTORY + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + qt_internal_tl_handle_verbose_git_operations() + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + if(NOT arg_REPO_NAME) + message(FATAL_ERROR "REPO_NAME is required") + endif() + + if(arg_REMOTE_URL_BASE) + set(remote_url_base "${arg_REMOTE_URL_BASE}") + else() + set(remote_url_base "https://code.qt.io/qt/") + endif() + + set(remote_url "${remote_url_base}${arg_REPO_NAME}.git") + + message(NOTICE "Cloning '${arg_REPO_NAME}' from '${remote_url}'") + + set(clone_args "") + if(arg_GIT_DEPTH) + list(APPEND clone_args --depth "${arg_GIT_DEPTH}") + endif() + if(arg_SHOW_PROGRESS) + list(APPEND clone_args --progress) + endif() + + # Note that cloning does not allow fetching a specific sha1 directly if --depth is + # specified. It can only take a branch or tag name. So we don't pass REF_SPEC here. + execute_process( + COMMAND "git" "clone" "${remote_url}" ${clone_args} + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + RESULT_VARIABLE git_result + ${swallow_output} + ) + if(git_result) + message(FATAL_ERROR + "Failed to clone '${module}' from '${remote_url}': ${git_output}") + endif() +endfunction() + +# Checks out a submodule to a given refspec, and runs 'git submodule update' in the submodule +# directory. +# If a regular checkout does not work, a detached checkout is attempted. +function(qt_internal_checkout module revision) + set(opt_args + SHOW_PROGRESS + ) + set(single_args + REMOTE_NAME + WORKING_DIRECTORY + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 2 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + qt_internal_tl_handle_verbose_git_operations() + + if(NOT arg_WORKING_DIRECTORY) + message(FATAL_ERROR "WORKING_DIRECTORY is required") + endif() + + if(NOT arg_REMOTE_NAME) + message(FATAL_ERROR "REMOTE_NAME is required") + endif() + + set(shallow_args "") + if(arg_SHOW_PROGRESS) + list(APPEND shallow_args SHOW_PROGRESS) + endif() + + qt_internal_tl_handle_shallow_repo( + REF_SPEC "${revision}" + REMOTE_NAME "${arg_REMOTE_NAME}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}/${module}" + ${shallow_args} + ) + message(NOTICE "Checking '${module}' out to revision '${revision}'") execute_process( COMMAND "git" "checkout" "${revision}" - WORKING_DIRECTORY "./${module}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}/${module}" RESULT_VARIABLE git_result ${swallow_output} ) @@ -396,7 +940,7 @@ function(qt_internal_checkout module revision) message(WARNING "${git_output}, trying detached checkout") execute_process( COMMAND "git" "checkout" "--detach" "${revision}" - WORKING_DIRECTORY "./${module}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}/${module}" RESULT_VARIABLE git_result ${swallow_output} ) @@ -404,45 +948,89 @@ function(qt_internal_checkout module revision) if (git_result) message(FATAL_ERROR "Failed to check '${module}' out to '${revision}': ${git_output}") endif() + + set(args "") + set(extra_flags "$ENV{QT_TL_SUBMODULE_UPDATE_FLAGS}") + if(extra_flags) + list(APPEND args ${extra_flags}) + endif() + if(arg_SHOW_PROGRESS) + list(APPEND args --progress) + endif() + execute_process( - COMMAND "git" "submodule" "update" - WORKING_DIRECTORY "./${module}" + COMMAND "git" "submodule" "update" ${args} + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}/${module}" RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_stdout - ERROR_VARIABLE git_stderr + ${swallow_output} ) endfunction() -# clones or creates a worktree for $dependency, using the source of $dependent +# Clones or creates a worktree, or initializes a submodule for $dependency, using the source of +# $dependent. +# Example dependent: qtdeclarative +# Example dependency: qtbase function(qt_internal_get_dependency dependent dependency) - set(swallow_output "") # unless VERBOSE, eat git output, show it in case of error - if (NOT VERBOSE) - list(APPEND swallow_output "OUTPUT_VARIABLE" "git_output" "ERROR_VARIABLE" "git_output") + set(opt_args + SHOW_PROGRESS + ) + set(single_args + GIT_DEPTH + REMOTE_NAME + REF_SPEC + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 2 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + qt_internal_tl_handle_verbose_git_operations() + + if(NOT arg_REMOTE_NAME) + message(FATAL_ERROR "REMOTE_NAME is required") endif() + set(show_progress_args "") + if(arg_SHOW_PROGRESS) + set(show_progress_args SHOW_PROGRESS) + endif() + + # This will hold the path to parent dir of the main ${dependent} worktree, regardless if it's a + # clone or a git worktree. + # So if dependent is 'src/qt6/qtshadertools' + # gitdir will be 'src/qt6' + # If dependent is 'worktrees/6.8-worktree/qtshadertools' + # gitdir will still be 'src/qt6', not 'worktrees/6.8-worktree' set(gitdir "") + + # The remote url. set(remote "") - # try to read the worktree source + # Worktree of dependent, aka who depends on dependency. + set(dependent_path "${CMAKE_CURRENT_SOURCE_DIR}/${dependent}") + + # Try to get the dependent worktree git dir. execute_process( - COMMAND "git" "rev-parse" "--git-dir" - WORKING_DIRECTORY "./${dependent}" + COMMAND "git" "rev-parse" "--absolute-git-dir" + WORKING_DIRECTORY "${dependent_path}" RESULT_VARIABLE git_result OUTPUT_VARIABLE git_stdout ERROR_VARIABLE git_stderr OUTPUT_STRIP_TRAILING_WHITESPACE ) + message(DEBUG "Original gitdir for '${dependent_path}' is '${git_stdout}'") + string(FIND "${git_stdout}" "${module}" index) string(SUBSTRING "${git_stdout}" 0 ${index} gitdir) string(FIND "${gitdir}" ".git/modules" index) if(index GREATER -1) # submodules have not been absorbed string(SUBSTRING "${gitdir}" 0 ${index} gitdir) endif() - message(DEBUG "Will look for clones in ${gitdir}") + + message(DEBUG "Will check computed '${gitdir}' for worktrees and clones.") execute_process( - COMMAND "git" "remote" "get-url" "origin" - WORKING_DIRECTORY "./${dependent}" + COMMAND "git" "remote" "get-url" "${arg_REMOTE_NAME}" + WORKING_DIRECTORY "${dependent_path}" RESULT_VARIABLE git_result OUTPUT_VARIABLE git_stdout ERROR_VARIABLE git_stderr @@ -450,67 +1038,200 @@ function(qt_internal_get_dependency dependent dependency) ) string(FIND "${git_stdout}" "${dependent}.git" index) string(SUBSTRING "${git_stdout}" 0 ${index} remote) - message(DEBUG "Will clone from ${remote}") - if(EXISTS "${gitdir}.gitmodules" AND NOT EXISTS "${gitdir}${dependency}/.git") + message(DEBUG "Original remote for '${dependent_path}' is '${git_stdout}'") + + set(maybe_super_module_path "${gitdir}") + set(maybe_submodule_path "${maybe_super_module_path}${dependency}") + set(maybe_submodule_git_path "${maybe_submodule_path}/.git") + + set(maybe_existing_worktree_path "${maybe_submodule_path}") + + if(EXISTS "${maybe_super_module_path}.gitmodules" AND NOT EXISTS "${maybe_submodule_git_path}") + set(use_submodule_init TRUE) + message(DEBUG + "Will attempt to initialize submodule using supermodule ${maybe_super_module_path}") + else() + set(use_submodule_init FALSE) + if(EXISTS "${maybe_existing_worktree_path}") + message(DEBUG "Will attempt to use worktree from ${maybe_existing_worktree_path}") + else() + message(DEBUG "Will clone from ${remote}") + endif() + endif() + + if(use_submodule_init) # super repo exists, but the submodule we need does not - try to initialize - message(NOTICE "Initializing submodule '${dependency}' from ${gitdir}") - execute_process( - COMMAND "git" "submodule" "update" "--init" "${dependency}" + message(NOTICE "Initializing submodule '${dependency}' from ${maybe_super_module_path}") + + set(args + FAILURE_MESSAGE + "Failed to initialize submodule '${dependency}' from ${maybe_super_module_path}" + + # Ignore errors, fall back to an independent clone below. + FAILURE_IS_WARNING + + OUT_VAR_RESULT submodule_update_init_result WORKING_DIRECTORY "${gitdir}" - RESULT_VARIABLE git_result - ${swallow_output} + ${show_progress_args} + ) + if(arg_GIT_DEPTH) + list(APPEND args + GIT_DEPTH "${arg_GIT_DEPTH}" + REF_SPEC "${arg_REF_SPEC}" ) - if (git_result) - # ignore errors, fall back to an independent clone instead - message(WARNING "Failed to initialize submodule '${dependency}' from ${gitdir}") endif() + qt_internal_tl_run_submodule_update_init("${dependency}" ${args}) endif() - if(EXISTS "${gitdir}${dependency}") + # If the submodule was initialized in the super repo in the code above, and the location where + # we're supposed to clone the dependency is the same, skip trying to clone the dependency or + # setting up a worktree, because it's already there. + set(new_dependency_path "${CMAKE_CURRENT_SOURCE_DIR}/${dependency}") + if(EXISTS "${new_dependency_path}" AND + "${new_dependency_path}" STREQUAL "${maybe_existing_worktree_path}") + return() + endif() + + if(EXISTS "${maybe_existing_worktree_path}") # for the module we want, there seems to be a clone parallel to what we have message(NOTICE "Adding worktree for ${dependency} from ${gitdir}${dependency}") execute_process( - COMMAND "git" "worktree" "add" "--detach" "${CMAKE_CURRENT_SOURCE_DIR}/${dependency}" - WORKING_DIRECTORY "${gitdir}/${dependency}" + COMMAND "git" "worktree" "add" "--detach" "${new_dependency_path}" + WORKING_DIRECTORY "${maybe_existing_worktree_path}" RESULT_VARIABLE git_result ${swallow_output} ) - if (git_result) - message(FATAL_ERROR "Failed to check '${module}' out to '${revision}': ${git_output}") + if(git_result) + message(FATAL_ERROR + "Failed to add worktree '${module}' from '${new_dependency_path}': ${git_output}") endif() else() - # we don't find the existing clone, so clone from the same remote - message(NOTICE "Cloning ${dependency} from ${remote}${dependency}.git") - execute_process( - COMMAND "git" "clone" "${remote}${dependency}.git" - WORKING_DIRECTORY "." - RESULT_VARIABLE git_result - ${swallow_output} - ) - if (git_result) - message(FATAL_ERROR "Failed to check '${module}' out to '${revision}': ${git_output}") + # We didn't find an existing clone or worktree, so clone from the same remote. + set(clone_args "") + if(arg_GIT_DEPTH) + list(APPEND clone_args GIT_DEPTH "${arg_GIT_DEPTH}") endif() + if(arg_SHOW_PROGRESS) + list(APPEND clone_args SHOW_PROGRESS) + endif() + + qt_internal_tl_git_clone_repo( + REPO_NAME "${dependency}" + REMOTE_URL_BASE "${remote}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ${clone_args} + ) endif() endfunction() -# evaluates the dependencies for $module, and checks all dependencies -# out so that it is a consistent set +# Syncs a submodule to a given refspec, collects its dependencies, and then checks out +# the submodule and its dependencies to a consistent set, according to the submodule +# dependencies.yaml file. +# +# A special case is when the module is ".", in which case all submodules are checked out to the +# given refspec, e.g. check out everything to origin/dev/HEAD. +# +# Initializes the submodule and any of its dependencies if they are not already initialized, when +# executed in a qt5.git checkout. +# +# Clones the specified submodule from code.qt.io if it missing, and not in a qt5.git checkout. function(qt_internal_sync_to module) - if(ARGN) - set(revision "${ARGV1}") - # special casing "." as the target module - checkout all out to $revision - if("${module}" STREQUAL ".") - qt_internal_find_modules(modules) - foreach(module IN LISTS modules) - qt_internal_checkout("${module}" "${revision}") - endforeach() - return() - endif() + set(opt_args + VERBOSE + SHOW_PROGRESS + ) + set(single_args + SYNC_REF + REMOTE_NAME + GIT_DEPTH + ) + set(multi_args "") + cmake_parse_arguments(PARSE_ARGV 1 arg "${opt_args}" "${single_args}" "${multi_args}") + qt_internal_tl_validate_all_args_are_parsed(arg) + + if(arg_VERBOSE) + # This is meant to trickle into scopes of other functions as well. + set(VERBOSE TRUE) + endif() + + set(show_progress_args "") + if(arg_SHOW_PROGRESS) + set(show_progress_args SHOW_PROGRESS) + endif() + + if(arg_REMOTE_NAME) + set(remote_name "${arg_REMOTE_NAME}") else() + set(remote_name "origin") + endif() + + set(revision "${arg_SYNC_REF}") + + # Special casing "." as the target module - checkout all initialized submodules to $revision. + # If revision is unset, check out to dev. + if("${module}" STREQUAL ".") + if(NOT revision) + set(revision "dev") + endif() + + qt_internal_find_modules(modules) + foreach(module IN LISTS modules) + qt_internal_checkout("${module}" "${revision}" ${show_progress_args} + REMOTE_NAME "${remote_name}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ) + endforeach() + return() + endif() + + # If no revision given, checkout to the HEAD as specified by the super module. + if(NOT revision) set(revision "HEAD") endif() - qt_internal_checkout("${module}" "${revision}") + + set(submodule_path "${CMAKE_CURRENT_SOURCE_DIR}/${module}") + set(submodule_git_path "${submodule_path}/.git") + + # We are in a qt5.git dir, but the requested submodule is not initialized yet, try to + # initialize it. + qt_internal_tl_is_super_repo(is_super_repo) + if(is_super_repo AND NOT EXISTS "${submodule_git_path}") + message(NOTICE "Initializing submodule '${module}' within supermodule.") + + set(args + FAILURE_MESSAGE "Failed to initialize initial submodule '${module}'" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ${show_progress_args} + ) + if(arg_GIT_DEPTH) + list(APPEND args + GIT_DEPTH "${arg_GIT_DEPTH}" + REF_SPEC "${revision}" + ) + endif() + qt_internal_tl_run_submodule_update_init("${module}" ${args}) + endif() + + # If we were in a qt5.git dir, the submodule should have been initialized by now. + # If we were in some random src/ dir, we need to manually clone the repo. + if(NOT EXISTS "${submodule_path}") + qt_internal_tl_git_clone_repo( + REPO_NAME "${module}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ${show_progress_args} + ) + endif() + + if(NOT EXISTS "${submodule_git_path}") + message(FATAL_ERROR "No worktree for '${module}' found in '${submodule_path}'") + endif() + + # Check out the submodule to the given refspec. + qt_internal_checkout("${module}" "${revision}" ${show_progress_args} + REMOTE_NAME "${remote_name}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ) qt_internal_resolve_module_dependencies(${module} initial_dependencies initial_revisions) if(initial_dependencies) @@ -524,12 +1245,12 @@ function(qt_internal_sync_to module) endif() set(revision "") - set(checkedout "1") + set(should_visit_dependencies "1") # Load all dependencies for $module, then iterate over the dependencies in reverse order, # and check out the first that isn't already at the required revision. # Repeat everything (we need to reload dependencies after each checkout) until no more checkouts # are done. - while(${checkedout}) + while(${should_visit_dependencies}) qt_internal_resolve_module_dependencies(${module} dependencies revisions) message(DEBUG "${module} dependencies: ${dependencies}") message(DEBUG "${module} revisions : ${revisions}") @@ -541,7 +1262,7 @@ function(qt_internal_sync_to module) endif() math(EXPR count "${count} - 1") - set(checkedout 0) + set(should_visit_dependencies 0) foreach(i RANGE ${count} 0 -1 ) list(GET dependencies ${i} dependency) list(GET revisions ${i} revision) @@ -550,32 +1271,53 @@ function(qt_internal_sync_to module) continue() endif() - if(NOT EXISTS "./${dependency}") - message(DEBUG "No worktree for '${dependency}' found in '${CMAKE_CURRENT_SOURCE_DIR}'") - qt_internal_get_dependency("${module}" "${dependency}") + # When in a super module, the dependency directory might exist, but is empty if the + # submodule was not yet initiallized. Check its existence and initialization state + # by looking at the existence of the .git file or directory. + if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${dependency}/.git") + message(DEBUG + "No worktree for '${dependency}' found in '${CMAKE_CURRENT_SOURCE_DIR}'. " + "Trying to acquire it." + ) + + set(args ${show_progress_args}) + if(arg_GIT_DEPTH) + list(APPEND args GIT_DEPTH "${arg_GIT_DEPTH}") + endif() + qt_internal_get_dependency("${module}" "${dependency}" + REF_SPEC "${revision}" + REMOTE_NAME "${remote_name}" + ${args} + ) + + set(should_visit_dependencies 1) endif() - execute_process( - COMMAND "git" "rev-parse" "HEAD" - WORKING_DIRECTORY "./${dependency}" - RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_stdout - ERROR_VARIABLE git_stderr - OUTPUT_STRIP_TRAILING_WHITESPACE + qt_internal_tl_get_refspec_as_sha( + REF_SPEC "HEAD" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${dependency}" + OUT_VAR head_ref ) - if (git_result) - message(WARNING "${git_stdout}") - message(FATAL_ERROR "Failed to get current HEAD of '${dependency}': ${git_stderr}") - endif() - if ("${git_stdout}" STREQUAL "${revision}") + + if("${head_ref}" STREQUAL "${revision}") + message(DEBUG + "The dependency ${dependency} is already checked out to ${revision}. " + "Continuing to next dependency." + ) continue() endif() - qt_internal_checkout("${dependency}" "${revision}") - set(checkedout 1) + qt_internal_checkout("${dependency}" "${revision}" ${show_progress_args} + REMOTE_NAME "${remote_name}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ) + set(should_visit_dependencies 1) + + # Start revisiting the dependencies in the while loop. break() endforeach() endwhile() + message(DEBUG "Module syncing finished.") endfunction() # Runs user specified command for all qt repositories in qt directory. diff --git a/coin/instructions/coin_qt_configure.yaml b/coin/instructions/coin_qt_configure.yaml index c165025642c..a8aebd7df56 100644 --- a/coin/instructions/coin_qt_configure.yaml +++ b/coin/instructions/coin_qt_configure.yaml @@ -47,3 +47,20 @@ instructions: condition: property property: features contains_value: UseConfigure +disable_if: + condition: or + conditions: + - condition: property + property: target.osVersion + in_values: [Android_ANY, QEMU, IOS_ANY, QNX_710, WebAssembly, INTEGRITY, VxWorks] + - condition: and + conditions: + - condition: property + property: target.os + equals_value: Windows + - condition: property + property: target.arch + not_equals_property: host.arch + - condition: property + property: features + not_contains_value: "DebianPackaging" diff --git a/coin/platform_configs/address_sanitizer_platforms.yaml b/coin/platform_configs/address_sanitizer_platforms.yaml index 0db6392b1f6..8878d43938f 100644 --- a/coin/platform_configs/address_sanitizer_platforms.yaml +++ b/coin/platform_configs/address_sanitizer_platforms.yaml @@ -8,5 +8,5 @@ Configurations: Configure arguments: '-nomake examples -developer-build' Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}}' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE' ] diff --git a/coin/platform_configs/cmake_platforms.yaml b/coin/platform_configs/cmake_platforms.yaml index 9d254d3e7e4..f92b25c695e 100644 --- a/coin/platform_configs/cmake_platforms.yaml +++ b/coin/platform_configs/cmake_platforms.yaml @@ -12,25 +12,25 @@ Configurations: Id: 'ubuntu-22.04-documentation' Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' Compiler: 'GCC' - Features: ['Sccache', 'Documentation', 'UseConfigure', 'DoNotRunTests'] + Features: ['Sccache', 'Documentation', 'UseConfigure', 'DoNotRunTests', 'DocsGenerationV2'] Configure arguments: '-make examples -developer-build -c++std c++20 -linker gold -qtlibinfix TestInfix -qtnamespace TestNamespace' - Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}}'] + Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE'] - Id: 'ubuntu-22.04' Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' Compiler: 'GCC' - Features: ['Sccache', 'UseConfigure', 'DoNotRunTests'] + Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON -DQT_DEPLOY_FFMPEG=TRUE' ] # Test on Ubuntu 22.04 X11 - Id: 'ubuntu-22.04-documentation-x11-tests' Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' Compiler: 'GCC' - Features: ['Sccache', 'TestDocs', 'TestOnly'] + Features: ['Sccache', 'TestDocs', 'TestOnly', 'DocsGenerationV2'] Platform dependency: 'ubuntu-22.04-documentation' - Id: 'ubuntu-22.04-x11-tests' @@ -38,24 +38,75 @@ Configurations: Compiler: 'GCC' Features: ['Sccache', 'TestOnly'] Platform dependency: 'ubuntu-22.04' -# Build on Ubuntu 24.04 ARM64 and test on both X11 and Wayland later +# Build on Ubuntu 24.04 ARM64 Wayland and test on offscreen and Wayland later +- + Id: 'ubuntu-24.04-arm64-documentation' + Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' + Compiler: 'GCC' + Features: ['Sccache', 'Documentation', 'UseConfigure', 'DoNotRunTests'] + Configure arguments: '-make examples -developer-build -c++std c++20 -linker lld -qtlibinfix TestInfix -qtnamespace TestNamespace -qpa offscreen\;xcb' + Environment variables: [ + 'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE' + ] - Id: 'ubuntu-24.04-arm64' Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' Compiler: 'GCC' - Features: ['UseConfigure', 'DoNotRunTests'] - Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' + Features: ['Sccache', 'Packaging', 'UseConfigure', 'DoNotRunTests', 'GenerateSBOM', 'VerifySBOM'] + Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput -qpa offscreen\;xcb' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON' + 'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON' ] -# Test on Ubuntu 24.04 ARM64 X11 +# Test on Ubuntu 24.04 ARM64 offscreen - - Id: 'ubuntu-24.04-arm64-x11-tests' + Id: 'ubuntu-24.04-arm64-offscreen-tests' Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' Compiler: 'GCC' - Features: ['TestOnly', 'InsignificantTests'] + Features: ['TestOnly'] + Environment variables: [ + 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', + 'QT_QPA_OFFSCREEN_NO_GLX=1', + 'QT_QPA_PLATFORM=offscreen' + ] Platform dependency: 'ubuntu-24.04-arm64' +# Build on Ubuntu 24.04 x64 Wayland and test on both X11 and Wayland (Wayland=default) +- + Id: 'ubuntu-24.04-x64-documentation' + Template: 'qtci-linux-Ubuntu-24.04-x86_64-50' + Compiler: 'GCC' + Features: ['Sccache', 'Documentation', 'UseConfigure', 'DoNotRunTests'] + Configure arguments: '-make examples -developer-build -c++std c++20 -linker gold -qtlibinfix TestInfix -qtnamespace TestNamespace' + Environment variables: [ + 'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE' + ] +- + Id: 'ubuntu-24.04-x64' + Template: 'qtci-linux-Ubuntu-24.04-x86_64-50' + Compiler: 'GCC' + Features: ['Sccache', 'UseConfigure', 'DoNotRunTests'] + Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' + Environment variables: [ + 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', + 'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON' + ] +# Test on Ubuntu 24.04 x64 X11 +- + Id: 'ubuntu-24.04-x64-documentation-x11-tests' + Template: 'qtci-linux-Ubuntu-24.04-x86_64-51' + Compiler: 'GCC' + Features: ['Sccache', 'TestOnly', 'InsignificantTests'] + Platform dependency: 'ubuntu-24.04-x64-documentation' +- + Id: 'ubuntu-24.04-x64-x11-tests' + Template: 'qtci-linux-Ubuntu-24.04-x86_64-51' + Compiler: 'GCC' + Features: ['Sccache', 'TestOnly'] + Platform dependency: 'ubuntu-24.04-x64' - Id: 'opensuse-15.5-developer-build' Template: 'qtci-linux-openSUSE-15.5-x86_64-52' @@ -65,96 +116,60 @@ Configurations: Environment variables: [ 'PATH={{.Env.CMAKE_MIN_SUPPORTED_BIN_PATH}}:{{.Env.PATH}}', 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}}' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE' ] - Id: 'sles-15_sp5-static' - Template: 'qtci-linux-SLES-15_SP5-x86_64-50' + Template: 'qtci-linux-SLES-15_SP5-x86_64-51' Compiler: 'GCC' - Features: ['Sccache', 'DisableTests', 'UseConfigure'] + Features: ['Sccache', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-nomake examples -static -no-sql-mysql' Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}}' ] -- - Id: 'windows-10_22h2-msvc2019' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' - Features: ['Sccache', "DebugAndRelease", 'UseConfigure'] - Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib' - Environment variables: [ - 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\..', - 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_msvc}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DINPUT_headersclean=ON', - 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', - ] -- - Id: 'windows-11_23H2-msvc2019' - Template: 'qtci-windows-11_23H2-x86_64-52' - Compiler: 'MSVC2019' - Features: ['Sccache', "DebugAndRelease", 'UseConfigure'] - Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib' - Environment variables: [ - 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\..', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DINPUT_headersclean=ON', - 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_msvc}}', - 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', - ] - Id: 'windows-10_22h2-msvc2022' - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Compiler: 'MSVC2022' - Features: ['Sccache', "DebugAndRelease", 'UseConfigure'] + Features: ['Sccache', "DebugAndRelease", 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib' Environment variables: [ 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\.. -DMySQL_ROOT={{.Env.ENV_MySQL_ROOT}} -DMySQL_LIBRARY_DIR={{.Env.ENV_MySQL_LIBRARY_DIR}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DFEATURE_clangcpp=OFF -DINPUT_headersclean=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_clangcpp=OFF -DINPUT_headersclean=ON', 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_msvc}}', 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', ] - Id: 'windows-11_23H2-msvc2022' - Template: 'qtci-windows-11_23H2-x86_64-52' + Template: 'qtci-windows-11_23H2-x86_64-53' Compiler: 'MSVC2022' - Features: ['Sccache', "DebugAndRelease", 'UseConfigure', 'Packaging'] - Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib -c++std c++20' + Features: ['Sccache', "DebugAndRelease", 'UseConfigure', 'Packaging', 'GenerateSBOM', 'VerifySBOM'] + Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib' Environment variables: [ 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\..', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DFEATURE_clangcpp=OFF -DINPUT_headersclean=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_clangcpp=OFF -DINPUT_headersclean=ON', 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_msvc}}', 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', ] - Id: 'windows-11_22h2-arm64-msvc2022' - Template: 'qtci-windows-11_22H2-aarch64-51' + Template: 'qtci-windows-11_22H2-aarch64-54' Compiler: 'MSVC2022' - Features: ['Packaging', 'DebugAndRelease', 'UseConfigure', 'InsignificantTests'] - Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib -c++std c++20 -no-sql-psql' + Features: ['Packaging', 'DebugAndRelease', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] + Configure arguments: '-debug-and-release -force-debug-info -headersclean -nomake examples -qt-zlib -no-sql-psql -no-opengl' Environment variables: [ 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_arm64}}\..', - 'NON_QTBASE_CMAKE_ARGS=-DFEATURE_native_grpc=OFF -DFEATURE_clangcpp=OFF -DFEATURE_qdoc=OFF', + 'NON_QTBASE_CMAKE_ARGS= -DFEATURE_clangcpp=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE', 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', ] - - Id: 'windows-10_22h2-msvc2019-developer-build' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' - Features: ['Sccache', "DebugAndRelease", 'WarningsAreErrors', 'UseConfigure'] - Configure arguments: '-debug-and-release -make examples -developer-build -force-debug-info -qt-zlib' - Environment variables: [ - 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DMySQL_ROOT={{.Env.ENV_MySQL_ROOT}} -DMySQL_LIBRARY_DIR={{.Env.ENV_MySQL_LIBRARY_DIR}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE', - 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', - 'gRPC_ROOT={{.Env.gRPC_ROOT_msvc}}', - ] -- - Id: 'windows-10_22h2-msvc2019-arm64' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' + Id: 'windows-11_23H2-msvc2022-arm64' + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' Target arch: 'arm64' - Features: ['Sccache', 'DisableTests', 'TargetBuildOnly', 'UseConfigure'] - Platform dependency: 'windows-10_22h2-msvc2019-developer-build' + Features: ['Sccache', 'DisableTests', 'TargetBuildOnly', 'Packaging', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] + Platform dependency: 'windows-11_23H2-msvc2022' Environment variables: [ 'TARGET_CONFIGURE_ARGS=-debug-and-release -force-debug-info -platform win32-arm64-msvc', 'TARGET_CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ROOT_DIR_x64_arm64}}', @@ -165,11 +180,11 @@ Configurations: 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', ] - - Id: 'windows-11_23H2-msvc2019-developer-build' - Template: 'qtci-windows-11_23H2-x86_64-52' - Compiler: 'MSVC2019' - Features: ['Sccache', "DebugAndRelease", 'WarningsAreErrors', 'UseConfigure'] - Configure arguments: '-debug-and-release -make examples -developer-build -force-debug-info -qt-zlib' + Id: 'windows-11_23H2-msvc2022-developer-build' + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' + Features: ['Sccache', 'DebugAndRelease', 'WarningsAreErrors', 'UseConfigure', 'StandaloneExamples'] + Configure arguments: '-debug-and-release -make examples -developer-build -force-debug-info -qt-zlib -c++std c++20' Environment variables: [ 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DMySQL_ROOT={{.Env.ENV_MySQL_ROOT}} -DMySQL_LIBRARY_DIR={{.Env.ENV_MySQL_LIBRARY_DIR}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE', @@ -177,134 +192,74 @@ Configurations: 'gRPC_ROOT={{.Env.gRPC_ROOT_msvc}}', ] - - Id: 'windows-11_23H2-msvc2019-arm64' - Template: 'qtci-windows-11_23H2-x86_64-52' - Compiler: 'MSVC2019' - Target arch: 'arm64' - Features: ['Sccache', 'DisableTests', 'TargetBuildOnly', 'UseConfigure'] - Platform dependency: 'windows-11_23H2-msvc2019-developer-build' - Environment variables: [ - 'TARGET_CONFIGURE_ARGS=-debug-and-release -force-debug-info -platform win32-arm64-msvc', - 'TARGET_CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE', - 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', - ] -- - Id: 'rhel-8.8' - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Id: 'rhel-8.10' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Compiler: 'GCC' - Features: ['Packaging', 'Sccache', 'UseConfigure', 'InstallQt5Dependencies'] + Features: ['Packaging', 'Sccache', 'UseConfigure', 'InstallQt5Dependencies', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-nomake examples -release -force-debug-info -headersclean -separate-debug-info -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DFEATURE_native_grpc=OFF -DINPUT_headersclean=ON' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON' ] - - Id: 'rhel-9.2' - Template: 'qtci-linux-RHEL-9.2-x86_64-51' + Id: 'rhel-9.4' + Template: 'qtci-linux-RHEL-9.4-x86_64-50' Compiler: 'GCC' - Features: ['Sccache', 'UseConfigure', 'InstallQt5Dependencies'] + Features: ['Sccache', 'UseConfigure', 'InstallQt5Dependencies', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-nomake examples -release -force-debug-info -headersclean -separate-debug-info -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DINPUT_headersclean=ON' - ] -# Build on Debian-11.6 and split test on Wayland and offscreen later -- - Id: 'debian-11.6-arm64' - Template: 'qtci-linux-Debian-11.6-aarch64-50' - Compiler: 'GCC' - Features: ['Packaging', 'UseConfigure', 'InstallQt5Dependencies', 'DoNotRunTests'] - Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -qt-libjpeg -qt-libpng -qt-pcre -qt-doubleconversion -qt-harfbuzz -no-libudev -bundled-xcb-xinput' - Environment variables: [ - 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', - ] -# Test on Debian-11.6 offscreen -- - Id: 'debian-11.6-arm64-offscreen-tests' - Template: 'qtci-linux-Debian-11.6-aarch64-50' - Compiler: 'GCC' - Features: ['Sccache', 'InsignificantTests', 'TestOnly'] - Environment variables: [ - 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', - 'QT_QPA_PLATFORM=offscreen' + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON' ] - Platform dependency: 'debian-11.6-arm64' - Id: 'ios-universal' - Template: 'qtci-macos-13-x86_64-103' + Template: 'qtci-macos-14-arm-106' Target os: 'IOS_ANY' Target arch: 'arm64' Compiler: 'Clang' Target compiler: 'Clang' Platform dependency: 'macos-universal-on-x86_64' - Features: ['Packaging', 'Sccache', 'DebugAndRelease', 'DisableTests', 'UseConfigure', 'WarningsAreErrors'] + Features: ['Packaging', 'Sccache', 'DebugAndRelease', 'DisableTests', 'UseConfigure', 'WarningsAreErrors', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-debug-and-release -nomake examples -platform macx-ios-clang', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include -DFFMPEG_DIR={{.Env.FFMPEG_DIR_IOS}}' + 'NON_QTBASE_TARGET_CMAKE_ARGS= -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include -DFFMPEG_DIR={{.Env.FFMPEG_DIR_IOS}} -DQT_DEPLOY_FFMPEG=TRUE', ] - Id: 'windows-10_22h2-mingw13' - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Compiler: 'Mingw' - Features: ['Packaging', 'Sccache', 'UseConfigure'] + Features: ['Packaging', 'Sccache', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-release -force-debug-info -separate-debug-info -nomake examples' Environment variables: [ 'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}', 'CMAKE_ARGS=-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\.. -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_mingw}}', 'Protobuf_ROOT={{.Env.Protobuf_ROOT_mingw}}', ] -- - Id: 'windows-10_22h2-llvm' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'Clang' - Features: ['Sccache', 'UseConfigure'] - Configure arguments: '-release -force-debug-info -separate-debug-info -nomake examples' - Environment variables: [ - 'Path=C:\llvm-mingw\bin;{{.Env.Path}}', - 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\.. -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c -DMySQL_ROOT={{.Env.ENV_MySQL_ROOT}} -DMySQL_LIBRARY_DIR={{.Env.ENV_MySQL_LIBRARY_DIR}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_LLVM_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', - 'LLVM_INSTALL_DIR=C:\llvm-mingw', - 'Protobuf_ROOT={{.Env.Protobuf_ROOT_llvm_mingw}}', - ] - Id: 'windows-11_23H2-llvm' - Template: 'qtci-windows-11_23H2-x86_64-52' + Template: 'qtci-windows-11_23H2-x86_64-53' Compiler: 'Clang' - Features: ['Packaging','Sccache', 'UseConfigure'] + Features: ['Packaging','Sccache', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-release -force-debug-info -separate-debug-info -nomake examples' Environment variables: [ 'Path=C:\llvm-mingw\bin;{{.Env.Path}}', 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\.. -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_LLVM_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', - 'LLVM_INSTALL_DIR=C:\llvm-mingw', + 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_llvm_mingw}}', 'Protobuf_ROOT={{.Env.Protobuf_ROOT_llvm_mingw}}', ] -- - Id: 'windows-10_22h2-mingw13-developer-build' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'Mingw' - Features: ['Sccache', 'WarningsAreErrors', 'UseConfigure'] - Configure arguments: '-developer-build -release -force-debug-info -separate-debug-info -make examples' - Environment variables: [ - 'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}', - 'CMAKE_ARGS=-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c -DMySQL_ROOT={{.Env.ENV_MySQL_ROOT}} -DMySQL_LIBRARY_DIR={{.Env.ENV_MySQL_LIBRARY_DIR}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c -DFEATURE_native_grpc=OFF', - 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_mingw}}', - 'Protobuf_ROOT={{.Env.Protobuf_ROOT_mingw}}', - ] - Id: 'windows-11_23H2-mingw13-developer-build' - Template: 'qtci-windows-11_23H2-x86_64-52' + Template: 'qtci-windows-11_23H2-x86_64-53' Compiler: 'Mingw' Features: ['Sccache', 'WarningsAreErrors', 'UseConfigure'] - Configure arguments: '-developer-build -release -force-debug-info -separate-debug-info -make examples' + Configure arguments: '-developer-build -release -force-asserts -force-debug-info -separate-debug-info -make examples' Environment variables: [ 'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}', 'CMAKE_ARGS=-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c -DMySQL_ROOT={{.Env.ENV_MySQL_ROOT}} -DMySQL_LIBRARY_DIR={{.Env.ENV_MySQL_LIBRARY_DIR}}', - 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c -DFEATURE_native_grpc=OFF', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_MINGW}} -DQT_DEPLOY_FFMPEG=TRUE -DCMAKE_IGNORE_PREFIX_PATH=C:/strawberry/c', 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_mingw}}', 'Protobuf_ROOT={{.Env.Protobuf_ROOT_mingw}}', ] @@ -334,3 +289,16 @@ Configurations: 'COIN_EXTRA_DEBIAN_REPO=deb http://archive.ubuntu.com/ubuntu/ jammy main universe multiverse', 'COIN_SKIP_DEBIAN_MODULES=qt5 qtqa qtactiveqt qtdoc qtwebengine qtwebview', ] +- + Id: 'bookworm-gles-arm64-debian-pkg-packaging' + Template: 'qtci-linux-Debian-11.6-aarch64-50' + Compiler: 'GCC' + Features: ['Packaging','DebianPackaging','DisableTests', 'Insignificant'] + Environment variables: [ + 'DEBIAN_RULES_REF=6.8_gles', + 'COIN_TARGET_DIST=tqtc-bookworm', + 'COIN_EXTRA_DEBIAN_PACKAGES={{.Env.HOME}}/debian_packages/', + 'COIN_SBUILD_CHROOT=stable-arm64-sbuild', + 'COIN_EXTRA_DEBIAN_REPO=deb http://deb.debian.org/debian/ bookworm main', + 'COIN_SKIP_DEBIAN_MODULES=qt5 qtqa qtactiveqt qtdoc qtwebengine qtwebview', + ] diff --git a/coin/platform_configs/cmake_platforms_qemu.yaml b/coin/platform_configs/cmake_platforms_qemu.yaml index 891a19df980..1dd136f2d4b 100644 --- a/coin/platform_configs/cmake_platforms_qemu.yaml +++ b/coin/platform_configs/cmake_platforms_qemu.yaml @@ -7,12 +7,12 @@ Configurations: Target arch: 'armv7' Compiler: 'GCC' Platform dependency: 'ubuntu-22.04' - Features: ['Sccache', 'UseConfigure', 'Insignificant'] + Features: ['Sccache', 'UseConfigure', 'InsignificantTests'] Environment variables: [ - 'TARGET_CONFIGURE_ARGS=-release -force-debug-info -developer-build -no-warnings-are-errors -make examples -qt-harfbuzz -device linux-imx7-g++ -device-option "CROSS_COMPILE={{.Env.QEMUARMV7_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=hard-float boot2qt" -no-feature-forkfd_pidfd', + 'TARGET_CONFIGURE_ARGS=-release -force-asserts -force-debug-info -developer-build -no-warnings-are-errors -make examples -qt-harfbuzz -device linux-imx7-g++ -device-option "CROSS_COMPILE={{.Env.QEMUARMV7_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=hard-float boot2qt" -no-feature-forkfd_pidfd', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QEMUARMV7_TOOLCHAIN_FILE}} -DQT_FORCE_BUILD_TOOLS=ON', 'QT_YOCTO_ENVSETUP={{.Env.QEMUARMV7_TOOLCHAIN_ENVSETUP}}', - "QT_CMAKE_DIR=/opt/cmake-3.27.7/bin", + "QT_CMAKE_DIR=/opt/cmake-3.30.5/bin", 'QT_SYSROOT_FOR_RUNNING_TESTS={{.Env.QEMUARMV7_TOOLCHAIN_SYSROOT}}', 'GST_PLUGIN_SCANNER={{.Env.QEMUARMV7_TOOLCHAIN_SYSROOT}}/usr/libexec/gstreamer-1.0/gst-plugin-scanner', 'QT_QUICK_BACKEND=software', @@ -24,12 +24,12 @@ Configurations: Target arch: 'arm64' Compiler: 'GCC' Platform dependency: 'ubuntu-22.04' - Features: ['Sccache', 'UseConfigure', 'Insignificant'] + Features: ['Sccache', 'UseConfigure', 'InsignificantTests'] Environment variables: [ - 'TARGET_CONFIGURE_ARGS=-release -force-debug-info -developer-build -no-warnings-are-errors -nomake examples -qt-harfbuzz -device linux-generic-g++ -device-option "CROSS_COMPILE={{.Env.QEMUARM64_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=boot2qt" -no-feature-forkfd_pidfd', + 'TARGET_CONFIGURE_ARGS=-release -force-asserts -force-debug-info -developer-build -no-warnings-are-errors -nomake examples -qt-harfbuzz -device linux-generic-g++ -device-option "CROSS_COMPILE={{.Env.QEMUARM64_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=boot2qt" -no-feature-forkfd_pidfd', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QEMUARM64_TOOLCHAIN_FILE}} -DQT_FORCE_BUILD_TOOLS=ON', 'QT_YOCTO_ENVSETUP={{.Env.QEMUARM64_TOOLCHAIN_ENVSETUP}}', - "QT_CMAKE_DIR=/opt/cmake-3.27.7/bin", + "QT_CMAKE_DIR=/opt/cmake-3.30.5/bin", 'QT_SYSROOT_FOR_RUNNING_TESTS={{.Env.QEMUARM64_TOOLCHAIN_SYSROOT}}', 'GST_PLUGIN_SCANNER={{.Env.QEMUARM64_TOOLCHAIN_SYSROOT}}/usr/libexec/gstreamer-1.0/gst-plugin-scanner', 'QT_QUICK_BACKEND=software', @@ -41,12 +41,12 @@ Configurations: Target arch: 'mips64' Compiler: 'GCC' Platform dependency: 'ubuntu-22.04' - Features: ['Sccache', 'DisableTests', 'UseConfigure'] + Features: ['Sccache', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ - 'TARGET_CONFIGURE_ARGS=-release -force-debug-info -developer-build -no-warnings-are-errors -nomake examples -qt-harfbuzz -device linux-generic-g++ -device-option "CROSS_COMPILE={{.Env.QEMUMIPS64_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=boot2qt" -no-feature-forkfd_pidfd', + 'TARGET_CONFIGURE_ARGS=-release -force-asserts -force-debug-info -developer-build -no-warnings-are-errors -nomake examples -qt-harfbuzz -device linux-generic-g++ -device-option "CROSS_COMPILE={{.Env.QEMUMIPS64_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=boot2qt" -no-feature-forkfd_pidfd', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QEMUMIPS64_TOOLCHAIN_FILE}} -DQT_FORCE_BUILD_TOOLS=ON', 'QT_YOCTO_ENVSETUP={{.Env.QEMUMIPS64_TOOLCHAIN_ENVSETUP}}', - "QT_CMAKE_DIR=/opt/cmake-3.27.7/bin", + "QT_CMAKE_DIR=/opt/cmake-3.30.5/bin", 'QT_SYSROOT_FOR_RUNNING_TESTS={{.Env.QEMUMIPS64_TOOLCHAIN_SYSROOT}}', 'GST_PLUGIN_SCANNER={{.Env.QEMUMIPS64_TOOLCHAIN_SYSROOT}}/usr/libexec/gstreamer-1.0/gst-plugin-scanner', 'QT_QUICK_BACKEND=software', diff --git a/coin/platform_configs/cmake_platforms_qemu_qnx710.yaml b/coin/platform_configs/cmake_platforms_qemu_qnx710.yaml index 21b9b30dd93..92834126fae 100644 --- a/coin/platform_configs/cmake_platforms_qemu_qnx710.yaml +++ b/coin/platform_configs/cmake_platforms_qemu_qnx710.yaml @@ -8,13 +8,13 @@ Configurations: Compiler: 'GCC' Target compiler: 'QCC' Platform dependency: 'ubuntu-22.04' - Features: ['Packaging', 'VMSize8', 'UseConfigure'] + Features: ['Packaging', 'VMSize8', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-release -force-debug-info -developer-build -no-dbus -nomake examples', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QNX_710}}/qnx-toolchain-x8664.cmake -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'QT_CMAKE_DIR=/opt/cmake-3.27.7/bin', + 'QT_CMAKE_DIR=/opt/cmake-3.30.5/bin', 'QNX_TEST_ENV=LD_LIBRARY_PATH={{.Env.QNX_QEMU_LD_LIBRARY_PATH}} QSG_RHI_BACKEND=software QT_QPA_PLATFORM=offscreen QTEST_ENVIRONMENT=ci', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF', + 'NON_QTBASE_TARGET_CMAKE_ARGS= -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', ] - Id: 'qnx-710-arm64-on-linux' @@ -24,11 +24,11 @@ Configurations: Compiler: 'GCC' Target compiler: 'QCC' Platform dependency: 'ubuntu-22.04' - Features: ['Packaging', 'DisableTests', 'UseConfigure'] + Features: ['Packaging', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-release -force-debug-info -no-dbus -nomake examples', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QNX_710}}/qnx-toolchain-aarch64le.cmake -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF', + 'NON_QTBASE_TARGET_CMAKE_ARGS= -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', ] - Id: 'qnx-710-armv7-on-linux' @@ -38,9 +38,9 @@ Configurations: Compiler: 'GCC' Target compiler: 'QCC' Platform dependency: 'ubuntu-22.04' - Features: ['Packaging', 'DisableTests', 'UseConfigure'] + Features: ['Packaging', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-release -force-debug-info -no-dbus -nomake examples', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QNX_710}}/qnx-toolchain-armv7le.cmake -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF', + 'NON_QTBASE_TARGET_CMAKE_ARGS= -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', ] diff --git a/coin/platform_configs/cmake_platforms_qemu_vxworks_buildtest.yaml b/coin/platform_configs/cmake_platforms_qemu_vxworks_buildtest.yaml new file mode 100644 index 00000000000..9fe750207f7 --- /dev/null +++ b/coin/platform_configs/cmake_platforms_qemu_vxworks_buildtest.yaml @@ -0,0 +1,15 @@ +Version: 2 +Configurations: +- + Id: 'vxworks-imx6-buildtest' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' + Target os: 'VxWorks' + Target arch: 'ARMv7' + Compiler: 'Clang' + Target compiler: 'Clang' + Platform dependency: 'ubuntu-22.04' + Features: ['VMSize8', 'UseConfigure', 'DoNotRunTests', 'DoNotUploadTests'] + Environment variables: [ + 'TARGET_CONFIGURE_ARGS=-release -developer-build -force-debug-info -qpa eglfs -nomake examples', + 'TARGET_CMAKE_ARGS=-DBUILD_SHARED_LIBS=OFF -DWARNINGS_ARE_ERRORS=OFF -DCMAKE_TOOLCHAIN_FILE="{{.Env.WIND_CC_SYSROOT}}/mk/rtp.toolchain.cmake" -DFEATURE_vulkan=OFF -DQT_QMAKE_TARGET_MKSPEC=vxworks-clang -DQT_HOST_PATH=/home/qt/work/install -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_STAGING_PREFIX:PATH=/home/qt/work/install/target' + ] diff --git a/coin/platform_configs/cmake_platforms_static_release.yaml b/coin/platform_configs/cmake_platforms_static_release.yaml new file mode 100644 index 00000000000..da28f5d03ff --- /dev/null +++ b/coin/platform_configs/cmake_platforms_static_release.yaml @@ -0,0 +1,72 @@ +Version: 2 +Configurations: + +- + Id: 'windows-11_23H2-msvc2022-minimal-static-test' + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' + Features: ['Sccache', 'UseConfigure', 'Packaging', 'MinimalStaticTests'] + Configure arguments: '-static -release -headersclean -nomake examples -qt-libjpeg -no-icu -qt-doubleconversion -qt-zlib -c++std c++20 -no-feature-sql-psql' + Environment variables: [ + 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\.. -DPostgreSQL_ROOT={{.Env.POSTGRESQL_LIB_x64}}\..', + 'NON_QTBASE_CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release -DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DFEATURE_clangcpp=OFF -DINPUT_headersclean=ON', + 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_msvc}}', + 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', + ] +- + Id: 'windows-11_22h2-arm64-msvc2022-minimal-static-test' + Template: 'qtci-windows-11_22H2-aarch64-55' + Compiler: 'MSVC2022' + Features: ['UseConfigure', 'InsignificantTests', 'Packaging', 'MinimalStaticTests'] + Configure arguments: '-static -release -headersclean -nomake examples -qt-libjpeg -no-icu -qt-doubleconversion -qt-zlib -c++std c++17 -no-sql-psql' + Environment variables: [ + 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_arm64}}\..', + 'NON_QTBASE_CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release -DFEATURE_native_grpc=OFF -DFEATURE_clangcpp=OFF -DFEATURE_qdoc=OFF', + 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', + ] +- + Id: 'rhel-8.10-minimal-static-test' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' + Compiler: 'GCC' + Features: ['Packaging', 'Sccache', 'UseConfigure', 'InstallQt5Dependencies', 'MinimalStaticTests'] + Configure arguments: '-static -nomake examples -release -qt-libjpeg -no-icu -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' + Environment variables: [ + 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}', + 'NON_QTBASE_CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release -DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DFEATURE_native_grpc=OFF' + ] +- + Id: 'ubuntu-24.04-arm64' + Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' + Compiler: 'GCC' + Features: ['Packaging', 'UseConfigure', 'InstallQt5Dependencies', 'DoNotRunTests'] + Configure arguments: '-static -nomake examples -release -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -no-libudev -bundled-xcb-xinput -no-icu -qt-doubleconversion' + Environment variables: [ + 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', + 'NON_QTBASE_CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release' + ] + +- + Id: 'macos-universal-on-x86_64-minimal-static-test' + Template: 'qtci-macos-14-x86_64-105' + Compiler: 'Clang' + Target arch: 'x86_64-arm64' + Features: ['Packaging', 'Sccache', 'DoNotRunTests', 'WarningsAreErrors', 'UseConfigure', 'MinimalStaticTests'] + Configure arguments: '-static -nomake examples -release -no-framework -no-icu -qt-doubleconversion -no-feature-sql-psql' + Environment variables: [ + 'CMAKE_ARGS=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', + 'NON_QTBASE_CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release -DFEATURE_gds=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DFEATURE_native_grpc=OFF', + 'Protobuf_ROOT=/usr/local/lib/cmake/protobuf' + ] + +- + Id: 'macos-14-minimal-static-tests-x86_64' + Template: 'qtci-macos-14-x86_64-105' + Compiler: 'Clang' + Features: ['TestOnly', 'Packaging'] + Platform dependency: 'macos-universal-on-x86_64-minimal-static-test' +- + Id: 'macos-14-minimal-static-tests-arm64' + Template: 'qtci-macos-14-arm-106' + Compiler: 'Clang' + Features: ['TestOnly', 'Packaging'] + Platform dependency: 'macos-universal-on-x86_64-minimal-static-test' diff --git a/coin/platform_configs/cmake_platforms_static_tests.yaml b/coin/platform_configs/cmake_platforms_static_tests.yaml index e6a98abb999..59f20873caa 100644 --- a/coin/platform_configs/cmake_platforms_static_tests.yaml +++ b/coin/platform_configs/cmake_platforms_static_tests.yaml @@ -2,7 +2,7 @@ Version: 2 Configurations: - Id: 'sles-15_sp5-minimal-static' - Template: 'qtci-linux-SLES-15_SP5-x86_64-50' + Template: 'qtci-linux-SLES-15_SP5-x86_64-51' Compiler: 'GCC' Features: ['Sccache', 'MinimalStaticTests', 'UseConfigure'] Configure arguments: '-nomake examples -static -no-sql-mysql' @@ -10,9 +10,9 @@ Configurations: 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_HOME}}' ] - - Id: 'windows-10_22h2-minimal-static' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' + Id: 'windows-11_23H2-minimal-static' + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' Features: ['Sccache', 'MinimalStaticTests', 'UseConfigure'] Configure arguments: '-release -force-debug-info -static -nomake examples -qt-zlib' Environment variables: [ @@ -23,7 +23,7 @@ Configurations: ] - Id: 'macos-minimal-static' - Template: 'qtci-macos-13-x86_64-103' + Template: 'qtci-macos-14-arm-106' Compiler: 'Clang' Features: ['Sccache', 'MinimalStaticTests', 'UseConfigure'] Configure arguments: '-nomake examples -release -force-debug-info -static -no-framework' diff --git a/coin/platform_configs/cmake_platforms_target_android.yaml b/coin/platform_configs/cmake_platforms_target_android.yaml index b3c940c2e5d..369bd5339c1 100644 --- a/coin/platform_configs/cmake_platforms_target_android.yaml +++ b/coin/platform_configs/cmake_platforms_target_android.yaml @@ -8,58 +8,59 @@ Configurations: Compiler: 'Clang' Target compiler: 'Clang' Platform dependency: 'macos-universal-on-x86_64' - Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure'] + Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_DEFAULT}}' ] - Id: 'android-armv7-on-windows' - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Target os: 'Android_ANY' Target arch: 'armv7' Compiler: 'Mingw' Target compiler: 'Clang' Platform dependency: 'windows-10_22h2-mingw13' - Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure'] + Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}', 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis armeabi-v7a -no-feature-pkg-config', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_DEFAULT}}' ] - Id: 'android-9-x86-on-linux' - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Target os: 'Android_ANY' Target arch: 'x86' Compiler: 'GCC' Target compiler: 'Clang' - Platform dependency: 'rhel-8.8' - Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure'] + Platform dependency: 'rhel-8.10' + Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86}} -DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_DEFAULT}}', 'ANDROID_EMULATOR=emulator_x86_api_28' ] - - Id: 'android-14-x86_64-on-linux' - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Id: 'android-15-x86_64-on-linux' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Target os: 'Android_ANY' Target arch: 'x86_64' Compiler: 'GCC' Target compiler: 'Clang' - Platform dependency: 'rhel-8.8' - Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure'] + Platform dependency: 'rhel-8.10' + Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64}}', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', 'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_DEFAULT}}', - 'ANDROID_EMULATOR=emulator_x86_64_api_34' + 'ANDROID_EMULATOR=emulator_x86_64_api_35' ] + diff --git a/coin/platform_configs/cmake_platforms_wasm.yaml b/coin/platform_configs/cmake_platforms_wasm.yaml index 34b261413b4..c39c75d9af8 100644 --- a/coin/platform_configs/cmake_platforms_wasm.yaml +++ b/coin/platform_configs/cmake_platforms_wasm.yaml @@ -14,18 +14,18 @@ Configurations: ] - Id: 'webassembly-windows' - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Target os: 'WebAssembly' Compiler: 'Mingw' Target compiler: 'Clang' Platform dependency: 'windows-10_22h2-mingw13' - Features: ['Packaging', 'Sccache', 'DisableTests', 'UseConfigure'] + Features: ['Packaging', 'Sccache', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'Path={{.Env.EMSDK_PATH}};{{.Env.MINGW_PATH}}\bin;{{.Env.Path}}', 'EM_CONFIG={{.Env.EMSDK}}/.emscripten', 'TARGET_CONFIGURE_ARGS=-release -platform wasm-emscripten -nomake examples', 'TARGET_CMAKE_ARGS=-DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_pkg_config=OFF -DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_mingw}}/include', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_pkg_config=OFF -DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_mingw}}/include', ] - Id: 'webassembly-linux-thread' @@ -33,10 +33,10 @@ Configurations: Target os: 'WebAssembly' Compiler: 'GCC' Platform dependency: 'opensuse-15.5-developer-build' - Features: ['Packaging', 'Sccache', 'DisableTests', 'UseConfigure'] + Features: ['Packaging', 'Sccache', 'DisableTests', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Environment variables: [ 'EM_CONFIG={{.Env.EMSDK}}/.emscripten', 'TARGET_CONFIGURE_ARGS=-release -platform wasm-emscripten -nomake examples -feature-thread', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', 'TARGET_CMAKE_ARGS=-DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON' ] diff --git a/coin/platform_configs/default.yaml b/coin/platform_configs/default.yaml index dff4c79e490..1ac6aa4bad3 100644 --- a/coin/platform_configs/default.yaml +++ b/coin/platform_configs/default.yaml @@ -4,4 +4,9 @@ Configurations: Id: 'ubuntu-22.04-license-check' Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' Compiler: 'GCC' - Features: ['TestOnly', 'LicenseCheck', 'UseLegacyInstructions'] + Features: ['TestOnly', 'LicenseCheckV2'] +- + Id: 'ubuntu-24.04-x64-license-check' + Template: 'qtci-linux-Ubuntu-24.04-x86_64-50' + Compiler: 'GCC' + Features: ['TestOnly', 'LicenseCheckV2'] diff --git a/coin/platform_configs/flashing-wizard.yaml b/coin/platform_configs/flashing-wizard.yaml index 18d281faca9..46354a7ea9e 100644 --- a/coin/platform_configs/flashing-wizard.yaml +++ b/coin/platform_configs/flashing-wizard.yaml @@ -1,39 +1,4 @@ Version: 2 Module only: True -Configurations: - - - Template: 'qtci-windows-10-x86_64-52' - Compiler: 'MSVC2019' - Features: ['Packaging', 'UseLegacyInstructions'] - Configure arguments: '-qmake -opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x64% -L %OPENSSL_LIB_x64% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x64% -L %MYSQL_LIB_x64% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x64% -L %POSTGRESQL_LIB_x64% -static -no-icu' - - - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' - Features: ['Packaging', 'UseLegacyInstructions'] - Configure arguments: '-qmake -opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x64% -L %OPENSSL_LIB_x64% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x64% -L %MYSQL_LIB_x64% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x64% -L %POSTGRESQL_LIB_x64% -static -no-icu' - - - Template: 'qtci-windows-10-x86_64-52' - Compiler: 'MSVC2019' - Target arch: 'x86' - Features: ['Packaging', 'UseLegacyInstructions'] - Configure arguments: '-qmake -opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -nomake examples -opengl dynamic -openssl -I %OPENSSL_INCLUDE_x86% -L %OPENSSL_LIB_x86% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x86% -L %MYSQL_LIB_x86% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x86% -L %POSTGRESQL_LIB_x86% -static -no-icu' - - - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' - Target arch: 'x86' - Features: ['Packaging', 'UseLegacyInstructions'] - Configure arguments: '-qmake -opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -nomake examples -opengl dynamic -openssl -I %OPENSSL_INCLUDE_x86% -L %OPENSSL_LIB_x86% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x86% -L %MYSQL_LIB_x86% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x86% -L %POSTGRESQL_LIB_x86% -static -no-icu' - - - Template: 'qtci-linux-RHEL-8.8-x86_64-50' - Compiler: 'GCC' - Features: ['Packaging', 'UseLegacyInstructions'] - Configure arguments: '-qmake -opensource -confirm-license -verbose -prefix /home/qt/work/install -release -nomake tests -nomake examples -no-libudev -no-use-gold-linker -force-debug-info -no-sql-mysql -plugin-sql-psql -plugin-sql-sqlite -qt-libjpeg -qt-libpng -qt-xcb -sysconfdir /etc/xdg -qt-pcre -openssl -qt-harfbuzz QMAKE_LFLAGS_APP+=-s -static -no-icu' - - - Template: 'qtci-linux-Ubuntu-18.04-x86_64-50' - Compiler: 'GCC' - Features: ['Packaging', 'UseLegacyInstructions'] - Configure arguments: '-qmake -opensource -confirm-license -verbose -prefix /home/qt/work/install -release -nomake tests -nomake examples -no-libudev -no-use-gold-linker -force-debug-info -no-sql-mysql -plugin-sql-psql -plugin-sql-sqlite -qt-libjpeg -qt-libpng -qt-xcb -sysconfdir /etc/xdg -qt-pcre -openssl -qt-harfbuzz QMAKE_LFLAGS_APP+=-s -static -no-icu' - - - Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' - Compiler: 'GCC' - Features: ['TestOnly', 'LicenseCheck', 'UseLegacyInstructions'] +Include: [cmake_platforms_static_release.yaml] +Configurations: [] diff --git a/coin/platform_configs/ios-tests.yaml b/coin/platform_configs/ios-tests.yaml index a1b6b42a96b..1cfb652f77e 100644 --- a/coin/platform_configs/ios-tests.yaml +++ b/coin/platform_configs/ios-tests.yaml @@ -2,7 +2,7 @@ Version: 2 Configurations: - Id: "ios-tests-on-macos" - Template: 'qtci-macos-13-x86_64-103' + Template: 'qtci-macos-14-arm-106' Target os: 'IOS_ANY' Target arch: 'arm64' Compiler: 'Clang' diff --git a/coin/platform_configs/linux_android_tests_developer.yaml b/coin/platform_configs/linux_android_tests_developer.yaml index 431151500b9..3488a44d73b 100644 --- a/coin/platform_configs/linux_android_tests_developer.yaml +++ b/coin/platform_configs/linux_android_tests_developer.yaml @@ -2,16 +2,16 @@ Version: 2 Configurations: - Id: 'android-x86-developer-build-testrun-on-linux' - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Target os: 'Android_ANY' Target arch: 'x86' Compiler: 'GCC' Target compiler: 'Clang' - Platform dependency: 'rhel-8.8' + Platform dependency: 'rhel-8.10' Features: ['Packaging', 'Sccache', 'AndroidTestRun', 'UseConfigure'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-nomake examples -debug -developer-build -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID}}', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF', + 'NON_QTBASE_TARGET_CMAKE_ARGS=', 'ANDROID_EMULATOR=emulator_x86_api_28'] diff --git a/coin/platform_configs/linux_android_tests_multi_abi.yaml b/coin/platform_configs/linux_android_tests_multi_abi.yaml index 95966de6dcb..8188a2ba93c 100644 --- a/coin/platform_configs/linux_android_tests_multi_abi.yaml +++ b/coin/platform_configs/linux_android_tests_multi_abi.yaml @@ -1,16 +1,16 @@ Version: 2 Configurations: - - Id: 'rhel_8.8_android_multi' - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Id: 'android-9-multi-abi' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Target os: 'Android_ANY' Target arch: 'multi' Compiler: 'GCC' Target compiler: 'Clang' Platform dependency: [ - 'rhel-8.8', + 'rhel-8.10', 'android-9-x86-on-linux', - 'android-14-x86_64-on-linux' + 'android-15-x86_64-on-linux' ] Features: [ 'Sccache', @@ -20,9 +20,9 @@ Configurations: 'InstallDepsPerPlatformSubdir' ] Environment variables: [ - 'QT_CI_ARTIFACT_ID_PATH_Android-host=QT_CI_ARTIFACT_ID_PATH_rhel-8.8', + 'QT_CI_ARTIFACT_ID_PATH_Android-host=QT_CI_ARTIFACT_ID_PATH_rhel-8.10', 'QT_CI_ARTIFACT_ID_PATH_Android-x86=QT_CI_ARTIFACT_ID_PATH_android-9-x86-on-linux', - 'QT_CI_ARTIFACT_ID_PATH_Android-x86_64=QT_CI_ARTIFACT_ID_PATH_android-14-x86_64-on-linux', + 'QT_CI_ARTIFACT_ID_PATH_Android-x86_64=QT_CI_ARTIFACT_ID_PATH_android-15-x86_64-on-linux', 'COMMON_TARGET_TEST_CMAKE_ARGS=-DQT_ANDROID_ABIS="x86;x86_64"', 'ANDROID_EMULATOR=emulator_x86_api_28' ] diff --git a/coin/platform_configs/macos.yaml b/coin/platform_configs/macos.yaml index 76052c542b3..a69b637358a 100644 --- a/coin/platform_configs/macos.yaml +++ b/coin/platform_configs/macos.yaml @@ -12,11 +12,11 @@ Configurations: Template: 'qtci-macos-14-x86_64-105' Compiler: 'Clang' Target arch: 'x86_64-arm64' - Features: ['Packaging', 'Sccache', 'DoNotRunTests', 'WarningsAreErrors', 'UseConfigure'] + Features: ['Packaging', 'Sccache', 'DoNotRunTests', 'WarningsAreErrors', 'UseConfigure', 'GenerateSBOM', 'VerifySBOM'] Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -framework' Environment variables: [ - 'CMAKE_ARGS=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DODBC_ROOT=/usr/local/opt/libiodbc -DPostgreSQL_ROOT={{.Env.POSTGRESQLBINPATH}}/.. -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', - 'NON_QTBASE_CMAKE_ARGS=-DFEATURE_gds=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DFEATURE_native_grpc=OFF -DINPUT_headersclean=ON', + 'CMAKE_ARGS=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', + 'NON_QTBASE_CMAKE_ARGS=-DFEATURE_gds=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON -DQT_FEATURE_open62541_security=OFF', 'Protobuf_ROOT=/usr/local/lib/cmake/protobuf' ] @@ -39,7 +39,7 @@ Configurations: - Id: 'macos-12-x86_64-tests' - Template: 'qtci-macos-12-x86_64-106' + Template: 'qtci-macos-12-x86_64-107' Compiler: 'Clang' Features: ['Sccache', 'TestOnly', 'Packaging'] Platform dependency: 'macos-universal-on-x86_64' @@ -60,27 +60,15 @@ Configurations: - Id: 'macos-12-arm64-tests' - Template: 'qtci-macos-12-arm64' - Compiler: 'Clang' - Features: ['TestOnly', 'Packaging'] - Platform dependency: 'macos-universal-on-x86_64' - - - Id: 'macos-12-arm64-tart-tests' Template: 'qtci-macos-12-arm-102' Compiler: 'Clang' - Features: ['TestOnly'] - Platform dependency: 'macos-universal-on-x86_64' - - - Id: 'macos-13-arm64-tests' - Template: 'qtci-macos-13-arm64' - Compiler: 'Clang' Features: ['TestOnly', 'Packaging'] Platform dependency: 'macos-universal-on-x86_64' - - Id: 'macos-13-arm64-tart-tests' + Id: 'macos-13-arm64-tests' Template: 'qtci-macos-13-arm-107' Compiler: 'Clang' - Features: ['TestOnly'] + Features: ['TestOnly', 'Packaging'] Platform dependency: 'macos-universal-on-x86_64' - Id: 'macos-14-arm64-tests' @@ -93,19 +81,13 @@ Configurations: - Id: 'macos-12-arm-on-arm64-tests' - Template: 'qtci-macos-12-arm64' - Compiler: 'Clang' - Features: ['TestOnly'] - Platform dependency: 'macos-universal-on-arm64' - - - Id: 'macos-12-arm-on-arm64-tart-tests' Template: 'qtci-macos-12-arm-102' Compiler: 'Clang' Features: ['TestOnly'] Platform dependency: 'macos-universal-on-arm64' - Id: 'macos-12-arm-on-x86_64-tests' - Template: 'qtci-macos-12-x86_64-106' + Template: 'qtci-macos-12-x86_64-107' Compiler: 'Clang' Features: ['Sccache', 'TestOnly'] Platform dependency: 'macos-universal-on-arm64' @@ -133,7 +115,7 @@ Configurations: Template: 'qtci-macos-14-x86_64-105' Compiler: 'Clang' Features: ['Sccache', 'DoNotRunTests', 'WarningsAreErrors', 'UseConfigure'] - Configure arguments: '-developer-build -release -force-debug-info -no-pch -no-framework -qtnamespace TestNamespace -make examples' + Configure arguments: '-developer-build -release -force-asserts -force-debug-info -no-pch -no-framework -qtnamespace TestNamespace -make examples' Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE', @@ -144,7 +126,7 @@ Configurations: Template: 'qtci-macos-14-arm-106' Compiler: 'Clang' Features: ['DoNotRunTests', 'WarningsAreErrors', 'UseConfigure'] - Configure arguments: '-developer-build -nomake examples -release -force-debug-info -separate-debug-info -framework' + Configure arguments: '-developer-build -nomake examples -debug -framework' Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', 'Protobuf_ROOT=/usr/local/lib/cmake/protobuf', @@ -154,24 +136,12 @@ Configurations: # Test on all supported macOS versions (deployment targets) - Id: 'macos-12-arm64-developer-build-tests' - Template: 'qtci-macos-12-arm64' - Compiler: 'Clang' - Features: ['TestOnly'] - Platform dependency: 'macos-14-arm64-developer-build' - - - Id: 'macos-12-arm64-tart-developer-build-tests' Template: 'qtci-macos-12-arm-102' Compiler: 'Clang' Features: ['TestOnly'] Platform dependency: 'macos-14-arm64-developer-build' - Id: 'macos-13-arm64-developer-build-tests' - Template: 'qtci-macos-13-arm64' - Compiler: 'Clang' - Features: ['TestOnly'] - Platform dependency: 'macos-14-arm64-developer-build' - - - Id: 'macos-13-arm64-tart-developer-build-tests' Template: 'qtci-macos-13-arm-107' Compiler: 'Clang' Features: ['TestOnly'] diff --git a/coin/platform_configs/nightly_qnx710_host_windows.yaml b/coin/platform_configs/nightly_qnx710_host_windows.yaml index e3fcb96982e..40a53fd36aa 100644 --- a/coin/platform_configs/nightly_qnx710_host_windows.yaml +++ b/coin/platform_configs/nightly_qnx710_host_windows.yaml @@ -7,7 +7,7 @@ Include: [ Configurations: - Id: 'qnx-710-arm64-on-windows' - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Target os: 'QNX_710' Target arch: 'arm64' Compiler: 'MSVC2019' diff --git a/coin/platform_configs/nightly_ubuntu_20.04_c++17.yaml b/coin/platform_configs/nightly_ubuntu_20.04_c++17.yaml index 6bbe3739da3..b9d8864e045 100644 --- a/coin/platform_configs/nightly_ubuntu_20.04_c++17.yaml +++ b/coin/platform_configs/nightly_ubuntu_20.04_c++17.yaml @@ -6,7 +6,7 @@ Configurations: Template: 'qtci-linux-Ubuntu-20.04-x86_64-50' Compiler: 'GCC' Features: ['Sccache', 'UseConfigure'] - Configure arguments: '-nomake examples -release -c++std c++17 -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' + Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput' Environment variables: [ 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DFEATURE_clangcpp=OFF -DINPUT_headersclean=ON' diff --git a/coin/platform_configs/nightly_ubuntu_22_04_xwayland.yaml b/coin/platform_configs/nightly_ubuntu_22_04_xwayland.yaml index d95746e8ad6..3caebbc2a45 100644 --- a/coin/platform_configs/nightly_ubuntu_22_04_xwayland.yaml +++ b/coin/platform_configs/nightly_ubuntu_22_04_xwayland.yaml @@ -4,7 +4,7 @@ Configurations: # cmake_platforms.yaml Template: 'qtci-linux-Ubuntu-22.04-x86_64-50' Compiler: 'GCC' - Features: ['Sccache', 'Documentation', 'TestDocs', 'UseConfigure'] + Features: ['Sccache', 'Documentation', 'TestDocs', 'UseConfigure', 'DocsGenerationV2'] Configure arguments: '-make examples -developer-build -c++std c++20 -qtlibinfix TestInfix -qtnamespace TestNamespace' - Id: 'Ubuntu-22.04-xwayland-host' diff --git a/coin/platform_configs/nightly_ubuntu_24_04_arm64_documentation.yaml b/coin/platform_configs/nightly_ubuntu_24_04_arm64_documentation.yaml deleted file mode 100644 index da7a8c17596..00000000000 --- a/coin/platform_configs/nightly_ubuntu_24_04_arm64_documentation.yaml +++ /dev/null @@ -1,18 +0,0 @@ -Version: 2 -Configurations: -# cmake_platforms.yaml -# Build on Ubuntu 24.04 ARM64 and test on both X11 and Wayland later -- - Id: 'ubuntu-24.04-arm64-documentation' - Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' - Compiler: 'GCC' - Features: ['Documentation', 'UseConfigure', 'DoNotRunTests'] - Configure arguments: '-make examples -developer-build -c++std c++20 -linker gold -qtlibinfix TestInfix -qtnamespace TestNamespace' - Environment variables: ['NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}}'] -# Test on Ubuntu 24.04 ARM64 X11 -- - Id: 'ubuntu-24.04-arm64-documentation-x11-tests' - Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' - Compiler: 'GCC' - Features: ['TestDocs', 'TestOnly', 'InsignificantTests'] - Platform dependency: 'ubuntu-24.04-arm64-documentation' diff --git a/coin/platform_configs/precheck.yaml b/coin/platform_configs/precheck.yaml index 68d8f9b7d82..cd697181ec2 100644 --- a/coin/platform_configs/precheck.yaml +++ b/coin/platform_configs/precheck.yaml @@ -5,11 +5,12 @@ Include: [ "ubuntu-22.04", "ubuntu-22.04-documentation", "ubuntu-22.04-documentation-x11-tests", - "windows-10_22h2-msvc2019-developer-build", + "windows-11_23H2-msvc2022-developer-build", "ios-universal" ], macos.yaml: [ - "macos-12-x86_64-tests", + "macos-14-arm64-developer-build", + "macos-14-arm64-developer-build-tests", ], cmake_platforms_target_android.yaml: [ "android-arm64-on-macos" diff --git a/coin/platform_configs/qdb.yaml b/coin/platform_configs/qdb.yaml index c32338426fc..46354a7ea9e 100644 --- a/coin/platform_configs/qdb.yaml +++ b/coin/platform_configs/qdb.yaml @@ -1,3 +1,4 @@ Version: 2 -Include: [cmake_platforms.yaml] +Module only: True +Include: [cmake_platforms_static_release.yaml] Configurations: [] diff --git a/coin/platform_configs/qmake2cmake.yaml b/coin/platform_configs/qmake2cmake.yaml index 73bdaff6724..deabdf009b8 100644 --- a/coin/platform_configs/qmake2cmake.yaml +++ b/coin/platform_configs/qmake2cmake.yaml @@ -2,7 +2,7 @@ Version: 2 Module only: True Configurations: - - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Compiler: 'MSVC2019' Features: ['DisableTests'] - @@ -10,7 +10,7 @@ Configurations: Compiler: 'Clang' Features: ['DisableTests'] - - Template: 'qtci-linux-RHEL-9.2-x86_64-51' + Template: 'qtci-linux-RHEL-9.4-x86_64-50' Compiler: 'GCC' Features: ['DisableTests'] - diff --git a/coin/platform_configs/qt-creator.yaml b/coin/platform_configs/qt-creator.yaml index 8b7cc6d9cbe..d1401e71d78 100644 --- a/coin/platform_configs/qt-creator.yaml +++ b/coin/platform_configs/qt-creator.yaml @@ -2,38 +2,59 @@ Version: 2 Module only: True Configurations: - - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' - Features: ['Packaging', 'Sccache', 'DebugAndRelease'] + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' + Features: ['Sccache', 'DebugAndRelease'] Configure arguments: '' Environment variables: [] - Environment script: ['%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat', 'amd64'] + Environment script: ['%ProgramFiles%\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat', 'amd64'] - - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' - Features: ['Packaging', 'Sccache', 'DebugAndRelease', 'DisableTests'] + Template: 'qtci-linux-RHEL-8.10-x86_64-51' + Compiler: 'GCC' + Features: ['Sccache', 'DebugAndRelease'] + Configure arguments: '' + Environment variables: [] +- + Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' + Compiler: 'GCC' + Features: ['Sccache', 'DebugAndRelease'] + Configure arguments: '' + Environment variables: [] +- + Template: 'qtci-macos-14-arm-106' + Compiler: 'Clang' + Features: ['Sccache', 'DebugAndRelease'] + Configure arguments: '' + Environment variables: [] +# without tests +- + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' + Features: ['Sccache', 'DebugAndRelease', 'DisableTests'] Configure arguments: '' Environment variables: [] - Environment script: ['%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat', 'amd64'] + Environment script: ['%ProgramFiles%\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat', 'amd64'] +# oldest Qt version - - Template: 'qtci-windows-10-x86-4' - Compiler: 'MSVC2019' - Features: ['Packaging', 'Sccache', 'DebugAndRelease', 'DisableTests'] + Template: 'qtci-windows-11_23H2-x86_64-53' + Compiler: 'MSVC2022' + Features: ['Sccache', 'DebugAndRelease', 'OldestQt'] Configure arguments: '' Environment variables: [] - Environment script: ['%ProgramFiles%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat', 'x86'] + Environment script: ['%ProgramFiles%\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat', 'amd64'] - - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Compiler: 'GCC' - Features: ['Packaging', 'Sccache', 'DebugAndRelease'] + Features: ['Sccache', 'DebugAndRelease', 'OldestQt'] Configure arguments: '' Environment variables: [] - - Template: 'qtci-macos-12-x86_64-106' + Template: 'qtci-macos-14-arm-106' Compiler: 'Clang' - Features: ['Packaging', 'Sccache', 'DebugAndRelease'] + Features: ['Sccache', 'DebugAndRelease', 'OldestQt'] Configure arguments: '' Environment variables: [] +# license check - Template: 'qtci-linux-Ubuntu-22.04-x86_64-51' Compiler: 'GCC' diff --git a/coin/platform_configs/qt5.yaml b/coin/platform_configs/qt5.yaml index 512c705138e..7e8e4a89d83 100644 --- a/coin/platform_configs/qt5.yaml +++ b/coin/platform_configs/qt5.yaml @@ -3,14 +3,4 @@ Include: [ cmake_platforms.yaml, address_sanitizer_platforms.yaml ] -Configurations: -# Test on Debian-11.6 Wayland -- - Id: 'debian-11.6-arm64-wayland-tests' - Template: 'qtci-linux-Debian-11.6-aarch64-50' - Compiler: 'GCC' - Features: ['Sccache', 'TestOnly', 'RunDependencyTests', 'InsignificantTests'] - Environment variables: [ - 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY' - ] - Platform dependency: 'debian-11.6-arm64' +Configurations: [] diff --git a/coin/platform_configs/qtbase-new-compiler-testing.yaml b/coin/platform_configs/qtbase-new-compiler-testing.yaml index 19361ff94f6..f75a003f855 100644 --- a/coin/platform_configs/qtbase-new-compiler-testing.yaml +++ b/coin/platform_configs/qtbase-new-compiler-testing.yaml @@ -1,9 +1,9 @@ Version: 2 Configurations: -# Test gcc-12 on RHEL 9.2 +# Test gcc-12 on RHEL 9.4 - - Id: 'rhel-9.2-gcc12' - Template: 'qtci-linux-RHEL-9.2-x86_64-51' + Id: 'rhel-9.4-gcc12' + Template: 'qtci-linux-RHEL-9.4-x86_64-50' Compiler: 'GCC' Features: ['Sccache', 'UseConfigure', 'InstallQt5Dependencies', 'DoNotRunTests'] Configure arguments: '-developer-build -nomake examples -release -force-debug-info -headersclean -separate-debug-info -qt-pcre -no-libudev -bundled-xcb-xinput' diff --git a/coin/platform_configs/qtbase.yaml b/coin/platform_configs/qtbase.yaml index 0b847e1ebcd..f9acdea8d71 100644 --- a/coin/platform_configs/qtbase.yaml +++ b/coin/platform_configs/qtbase.yaml @@ -7,7 +7,7 @@ Include: [ address_sanitizer_platforms.yaml, linux_android_tests_multi_abi.yaml, wasm_qtbase_tests.yaml, - cmake_platforms_qemu_vxworks.yaml, + cmake_platforms_qemu_vxworks_buildtest.yaml, qtlite.yaml, qtbase-new-compiler-testing.yaml ] diff --git a/coin/platform_configs/qtlite.yaml b/coin/platform_configs/qtlite.yaml index b339c0e6c40..872d44ee55f 100644 --- a/coin/platform_configs/qtlite.yaml +++ b/coin/platform_configs/qtlite.yaml @@ -1,10 +1,10 @@ Version: 2 Configurations: - - Id: 'debian-11.6-static-qtlite-arm64' - Template: 'qtci-linux-Debian-11.6-aarch64-50' + Id: 'ubuntu-24.04-arm64-static-qtlite' + Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' Compiler: 'GCC' - Features: ['UseConfigure', 'DisableTests'] + Features: ['Sccache', 'UseConfigure', 'DoNotRunTests', 'MinimalStaticTests'] Configure arguments: > -nomake examples -release @@ -147,7 +147,6 @@ Configurations: -no-feature-systemtrayicon -no-feature-tabletevent -no-feature-tablewidget - -no-feature-testlib -no-feature-textbrowser -no-feature-texthtmlparser -no-feature-textmarkdownreader diff --git a/coin/platform_configs/qtsaferenderer-runtime.yaml b/coin/platform_configs/qtsaferenderer-runtime.yaml index a95c0295fcd..6a74751978c 100644 --- a/coin/platform_configs/qtsaferenderer-runtime.yaml +++ b/coin/platform_configs/qtsaferenderer-runtime.yaml @@ -8,16 +8,16 @@ Include: [ cmake_platforms.yaml: [ "ubuntu-22.04", "ubuntu-22.04-documentation", + "ubuntu-24.04-arm64", "opensuse-15.5-developer-build", "sles-15_sp5-static", - "windows-10_22h2-msvc2019", "windows-10_22h2-msvc2022", - "windows-10_22h2-msvc2019-developer-build", - "rhel-8.8", + "rhel-8.10", "windows-10_22h2-mingw13", - "windows-10_22h2-mingw13-developer-build", - "windows-10_22h2-llvm", - "windows-11_23H2-msvc2019" + "windows-11_23H2-mingw13-developer-build", + "windows-11_23H2-llvm", + "windows-11_23H2-msvc2022", + "windows-11_22h2-arm64-msvc2022" ], cmake_platforms_qemu_qnx710.yaml: [ "qnx-710-x86_64-developer-build-on-linux", @@ -46,7 +46,7 @@ Configurations: 'TARGET_CONFIGURE_ARGS=-release -no-warnings-are-errors -nomake examples -qt-harfbuzz -device linux-generic-g++ -device-option "CROSS_COMPILE={{.Env.QEMUARM64_TOOLCHAIN_CROSS_COMPILE}}" -device-option "DISTRO_OPTS=boot2qt" -no-feature-forkfd_pidfd -qtlibinfix TestInfix', 'TARGET_CMAKE_ARGS=-DCMAKE_TOOLCHAIN_FILE={{.Env.QEMUARM64_TOOLCHAIN_FILE}} -DQT_FORCE_BUILD_TOOLS=ON', 'QT_YOCTO_ENVSETUP={{.Env.QEMUARM64_TOOLCHAIN_ENVSETUP}}', - "QT_CMAKE_DIR=/opt/cmake-3.27.7/bin", + "QT_CMAKE_DIR=/opt/cmake-3.30.5/bin", 'QT_SYSROOT_FOR_RUNNING_TESTS={{.Env.QEMUARM64_TOOLCHAIN_SYSROOT}}', 'GST_PLUGIN_SCANNER={{.Env.QEMUARM64_TOOLCHAIN_SYSROOT}}/usr/libexec/gstreamer-1.0/gst-plugin-scanner', 'QT_QUICK_BACKEND=software', diff --git a/coin/platform_configs/qtsaferenderer.yaml b/coin/platform_configs/qtsaferenderer.yaml index ec0d6832f5c..d82964f29a6 100644 --- a/coin/platform_configs/qtsaferenderer.yaml +++ b/coin/platform_configs/qtsaferenderer.yaml @@ -2,20 +2,21 @@ Version: 2 Include: [ macos.yaml: [ "macos-universal-on-x86_64", - "macos-12-x86_64-tests", - "macos-12-arm-on-arm64-tests" + "macos-14-x86_64-tests", + "macos-14-arm64-tests" ], cmake_platforms.yaml: [ "ubuntu-22.04", "ubuntu-22.04-documentation", + "ubuntu-24.04-arm64", "opensuse-15.5-developer-build", "sles-15_sp5-static", - "windows-10_22h2-msvc2019", "windows-10_22h2-msvc2022", - "rhel-8.8", + "rhel-8.10", "windows-10_22h2-mingw13", - "windows-10_22h2-llvm", - "windows-11_23H2-msvc2019" + "windows-11_23H2-llvm", + "windows-11_23H2-msvc2022", + "windows-11_22h2-arm64-msvc2022" ], cmake_platforms_qemu_qnx710.yaml: [ "qnx-710-x86_64-developer-build-on-linux", @@ -26,8 +27,8 @@ Include: [ # Static build configurations for tools Configurations: - - Id: 'macos-latest-xcode-universal-static-build' - Template: 'qtci-macos-12-x86_64-106' + Id: 'macos-latest-x code-universal-static-build' + Template: 'qtci-macos-14-arm-106' Compiler: 'Clang' Target arch: 'x86_64-arm64' Features: ['Packaging', 'Sccache', 'UseConfigure', 'MinimalStaticTests'] @@ -36,8 +37,8 @@ Configurations: 'CMAKE_ARGS=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"' ] - - Id: 'Linux-RHEL_8_8_Static' - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Id: 'Linux-RHEL_8_10_Static' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Compiler: 'GCC' Features: ['Packaging', 'Sccache', 'UseConfigure', 'MinimalStaticTests'] Configure arguments: '-static -no-icu -nomake examples -release -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput -no-sql-mysql' @@ -46,11 +47,33 @@ Configurations: 'NON_QTBASE_CMAKE_ARGS=-DINPUT_headersclean=ON' ] - - Id: 'Windows-MSVC2019_Static' - Template: 'qtci-windows-10_22H2-x86_64-51' - Compiler: 'MSVC2019' + Id: 'Ubuntu-24.04-arm64_Static' + Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' + Compiler: 'GCC' + Features: ['Packaging', 'Sccache', 'UseConfigure', 'MinimalStaticTests'] + Configure arguments: '-static -no-icu -nomake examples -release -headersclean -qt-libjpeg -qt-libpng -qt-pcre -qt-harfbuzz -qt-doubleconversion -no-libudev -bundled-xcb-xinput -no-sql-mysql' + Environment variables: [ + 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY', + 'COMMON_TEST_CMAKE_ARGS=-DQT_SKIP_DOCKER_COMPOSE=ON', + 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON' + ] +- + Id: 'Windows-MSVC2022-arm64_Static' + Template: 'qtci-windows-11_22H2-aarch64-54' + Compiler: 'MSVC2022' + Features: ['Packaging', 'UseConfigure', 'MinimalStaticTests'] + Configure arguments: '-release -headersclean -nomake examples -qt-zlib -static -no-icu -no-sql-psql -no-opengl' + Environment variables: [ + 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_arm64}}\..', + 'NON_QTBASE_CMAKE_ARGS= -DFEATURE_clangcpp=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR_MSVC_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE', + 'Protobuf_ROOT={{.Env.Protobuf_ROOT_msvc}}', + ] +- + Id: 'Windows-MSVC2022_Static' + Template: 'qtci-windows-10_22H2-x86_64-53' + Compiler: 'MSVC2022' Features: ['Packaging', 'Sccache', 'UseConfigure', 'MinimalStaticTests'] - Configure arguments: '-release -headersclean -nomake examples -qt-zlib -static -no-icu -no-sql-mysql -no-sql-odbc -no-sql-psql -plugin-sql-sqlite -plugin-sql-odbc' + Configure arguments: '-release -headersclean -nomake examples -qt-zlib -static -no-icu -no-sql-mysql -no-sql-odbc -no-sql-psql' Environment variables: [ 'CMAKE_ARGS=-DFEATURE_msvc_obj_debug_info=ON -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_INCLUDE_x64}}\..', 'LLVM_INSTALL_DIR={{.Env.LLVM_INSTALL_DIR_msvc}}', diff --git a/coin/platform_configs/qtwayland.yaml b/coin/platform_configs/qtwayland.yaml index 52d13a7d161..aad1b39711c 100644 --- a/coin/platform_configs/qtwayland.yaml +++ b/coin/platform_configs/qtwayland.yaml @@ -4,26 +4,17 @@ Include: [ address_sanitizer_platforms.yaml ] Configurations: -# Test on Ubuntu 22.04 Wayland +# Test on Ubuntu 24.04 ARM64 Wayland - - Id: 'ubuntu-22.04-documentation-wayland-tests' - Template: 'qtci-linux-Ubuntu-22.04-x86_64-50' + Id: 'ubuntu-24.04-arm64-documentation-wayland-tests' + Template: 'qtci-linux-Ubuntu-24.04-aarch64-50' Compiler: 'GCC' - Features: ['Sccache', 'TestDocs', 'TestOnly', 'RunDependencyTests', 'InsignificantTests'] - Platform dependency: 'ubuntu-22.04-documentation' + Features: ['TestOnly', 'RunDependencyTests', 'InsignificantTests'] + Platform dependency: 'ubuntu-24.04-arm64-documentation' +# Test on Ubuntu 24.04 x64 Wayland - - Id: 'ubuntu-22.04-wayland-tests' - Template: 'qtci-linux-Ubuntu-22.04-x86_64-50' + Id: 'ubuntu-24.04-x64-wayland-tests' + Template: 'qtci-linux-Ubuntu-24.04-x86_64-50' Compiler: 'GCC' - Features: ['Sccache', 'TestOnly', 'RunDependencyTests', 'InsignificantTests'] - Platform dependency: 'ubuntu-22.04' -# Test on Debian-11.6 Wayland -- - Id: 'debian-11.6-arm64-wayland-tests' - Template: 'qtci-linux-Debian-11.6-aarch64-50' - Compiler: 'GCC' - Features: ['Sccache', 'TestOnly', 'RunDependencyTests', 'InsignificantTests'] - Environment variables: [ - 'CMAKE_ARGS=-DOpenGL_GL_PREFERENCE=LEGACY' - ] - Platform dependency: 'debian-11.6-arm64' + Features: ['TestOnly', 'RunDependencyTests', 'InsignificantTests'] + Platform dependency: 'ubuntu-24.04-x64' diff --git a/coin/platform_configs/qtwebkit.yaml b/coin/platform_configs/qtwebkit.yaml index 979101939ef..d63d2c6bb96 100644 --- a/coin/platform_configs/qtwebkit.yaml +++ b/coin/platform_configs/qtwebkit.yaml @@ -1,7 +1,7 @@ Version: 2 Configurations: - - Template: 'qtci-windows-10_22H2-x86_64-51' + Template: 'qtci-windows-10_22H2-x86_64-53' Compiler: 'Mingw' Environment variables: ['PATH=C:\MINGW1120_i686\mingw32\bin;$PATH'] Features: ['Packaging', UseLegacyInstructions'] diff --git a/coin/platform_configs/tqtc-android-automotive.yaml b/coin/platform_configs/tqtc-android-automotive.yaml index 0f45f16109b..7a2df5f2edb 100644 --- a/coin/platform_configs/tqtc-android-automotive.yaml +++ b/coin/platform_configs/tqtc-android-automotive.yaml @@ -1,7 +1,7 @@ Version: 2 Include: [ cmake_platforms.yaml: [ - 'rhel-8.8', + "rhel-8.10", 'windows-10_22h2-mingw13', 'ubuntu-22.04-documentation', 'ubuntu-22.04-documentation-x11-tests' @@ -13,39 +13,39 @@ Include: [ 'android-arm64-on-macos', 'android-armv7-on-windows', 'android-9-x86-on-linux', - 'android-14-x86_64-on-linux' + 'android-15-x86_64-on-linux' ] ] Configurations: - - Id: "automotive-android-13-x86_64-on-linux" - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Id: "automotive-android-14-x86_64-on-linux" + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Target os: 'Android_ANY' Target arch: 'x86_64' Compiler: 'GCC' Target compiler: 'Clang' - Platform dependency: 'rhel-8.8' + Platform dependency: 'rhel-8.10' Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID}}', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', - 'ANDROID_EMULATOR=automotive_emulator_x86_64_api_33' + 'NON_QTBASE_TARGET_CMAKE_ARGS= -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'ANDROID_EMULATOR=automotive_emulator_x86_64_api_34' ] - Id: "automotive-android-10-x86_64-on-linux" - Template: 'qtci-linux-RHEL-8.8-x86_64-50' + Template: 'qtci-linux-RHEL-8.10-x86_64-51' Target os: 'Android_ANY' Target arch: 'x86_64' Compiler: 'GCC' Target compiler: 'Clang' - Platform dependency: 'rhel-8.8' + Platform dependency: 'rhel-8.10' Features: ['Packaging', 'Sccache', 'WarningsAreErrors', 'AndroidTestRun', 'VMSize8', 'UseConfigure'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_DEFAULT}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64', 'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_DEFAULT}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID}}', - 'NON_QTBASE_TARGET_CMAKE_ARGS=-DFEATURE_native_grpc=OFF -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', + 'NON_QTBASE_TARGET_CMAKE_ARGS= -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include', 'ANDROID_EMULATOR=automotive_emulator_x86_64_api_29' ] diff --git a/coin/platform_configs/tqtc-qtpip.yaml b/coin/platform_configs/tqtc-qtpip.yaml index 7bc0741ea73..480888ab2b4 100644 --- a/coin/platform_configs/tqtc-qtpip.yaml +++ b/coin/platform_configs/tqtc-qtpip.yaml @@ -3,7 +3,7 @@ Module only: true Include: [ cmake_platforms.yaml: [ "windows-10_22h2-msvc2019", - "rhel-8.8" + "rhel-8.10" ], macos.yaml: [ "macos-universal-on-x86_64" diff --git a/coin/platform_configs/webos.yaml b/coin/platform_configs/webos.yaml index e0f285fe1b6..46952bae3df 100644 --- a/coin/platform_configs/webos.yaml +++ b/coin/platform_configs/webos.yaml @@ -2,52 +2,52 @@ Version: 2 Module only: true Configurations: - Id: 'webos-emulator-build' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['DoNotRunTests'] Environment variables: ['BUILD_EMULATOR=enabled'] - Id: 'webos-emulator-qtbase-tests' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['TestOnly'] Environment variables: ['MODULE=qtbase'] Platform dependency: 'webos-emulator-build' - Id: 'webos-emulator-qtdeclarative-tests' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['TestOnly'] Environment variables: ['MODULE=qtdeclarative'] Platform dependency: 'webos-emulator-build' - Id: 'webos-emulator-qtwayland-tests' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['TestOnly'] Environment variables: ['MODULE=qtwayland'] Platform dependency: 'webos-emulator-build' - Id: 'webos-emulator-qtshadertools-tests' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['TestOnly'] Environment variables: ['MODULE=qtshadertools'] Platform dependency: 'webos-emulator-build' - Id: 'webos-emulator-qtgraphicaleffects-tests' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['TestOnly'] Environment variables: ['MODULE=qtgraphicaleffects'] Platform dependency: 'webos-emulator-build' - Id: 'webos-raspberry-build' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['DoNotRunTests'] Environment variables: ['BUILD_RASPBERRY=enabled'] - Id: 'webos-ndk-installer-build' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['DoNotRunTests'] Environment variables: ['BUILD_NDK_INSTALLER=enabled'] - Id: 'webos-ndk-install' - Template: 'qtci-linux-Ubuntu-20.04-x86_64-52' + Template: 'qtci-linux-Ubuntu-22.04-x86_64-52' Compiler: 'GCC' Features: ['TestOnly'] Platform dependency: ['webos-raspberry-build', 'webos-ndk-installer-build'] diff --git a/coin/pre-provisioning/qtci-linux-RHEL-8.10-x86_64/README_MANUAL_INSTALLATIONS b/coin/pre-provisioning/qtci-linux-RHEL-8.10-x86_64/README_MANUAL_INSTALLATIONS new file mode 100644 index 00000000000..12fce8ed702 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-RHEL-8.10-x86_64/README_MANUAL_INSTALLATIONS @@ -0,0 +1,62 @@ +### RED HAT ENTERPRISE LINUX 8.10 ### + +Language: English (United States) +Time & Date: Etc/Coordinated Universal Time +Software Selection: Server with GUI +Installation Destination: Automatic partitioning selected +Root Passowrd: Set +Network & Host..: Connect +User Creation +Beging Installation + +Reboot + +Licensing: Accept +Finish Configuration + +gnome-initial-setup: +Language: English (US) +Typing:English (US) +Privacy: Location Services: OFF +Connect Your Online Accounts: Skip +Start Using Red Hat Enterprise Linux + +# Add user to sudoers +Add 'qt ALL=NOPASSWD: ALL' to /etc/sudoers.d/qt + +# Configure Settings + Notifications: + * Notification Popups: OFF + * Lock Screen Notifications: OFF + Privacy: + * Screen Lock: OFF + Power: + * Blank screen: Never + Details: + * Time & Date: Time Zone: UTC + * run "sudo timedatectl set-timezone Etc/UTC" + * Users: Automatic login on + +Add 'GRUB_GFXMODE=1280x800' to /etc/default/grub +sudo grub2-mkconfig -o /etc/grub2.cfg +sudo grub2-mkconfig -o /boot/grub2/grub.cfg + +# Add support for virtio driver +su +echo "add_drivers+=\" virtio-blk \"" >> /etc/dracut.conf.d/virtio.conf +dracut -f + +# Do these from Opennebula UI! + +# Enable network connection from right upper corner + + Devices: + * Displays: Resolution 1280 x 800 + +# Fetch and run coin-setup +Download http://coin/coin/binary/linux_amd64/coin-setup +# run as qt user +chmod 755 coin-setup +run './coin-setup' + +Reboot diff --git a/coin/pre-provisioning/qtci-linux-RHEL-9.4-x86_64/01-disable-automounting.sh b/coin/pre-provisioning/qtci-linux-RHEL-9.4-x86_64/01-disable-automounting.sh new file mode 100644 index 00000000000..a99e64a78c7 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-RHEL-9.4-x86_64/01-disable-automounting.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +sudo tee -a /etc/dconf/db/local.d/00-media-automount <<"EOF" +[org/gnome/desktop/media-handling] +automount=false +automount-open=false +EOF + +sudo dconf update diff --git a/coin/pre-provisioning/qtci-linux-RHEL-9.4-x86_64/README_MANUAL_INSTALLATIONS b/coin/pre-provisioning/qtci-linux-RHEL-9.4-x86_64/README_MANUAL_INSTALLATIONS new file mode 100644 index 00000000000..71eff051d2d --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-RHEL-9.4-x86_64/README_MANUAL_INSTALLATIONS @@ -0,0 +1,54 @@ +### RHEL 9.4 ### +Hard Disk: 500G +Network: CI +Video Card: Total Video Memory: 64MB +Boot options/Firmware: BIOS +Language: English (United States) +Keyboard: English (US), Norwegian (Windows), Finnish (Windows) +Time & Date: Etc/Coordinated Universal Time +Software Selection: Server with GUI +Installation Destination: Automatic partitioning selected +Root Passowrd: Set +Network & Host..: Connected +KDUMP enabled: Memory Reservation: automatic +Begin Installation +Reboot +# Configure Settings + Notifications: + * Lock Screen Notifications: OFF + * Applications: Set notification off + * Do Not Disturb: on + Applications: + * Disable notifications from all applications + Privacy: + * Blank Screen Delay: Never + * Screen Lock: OFF + Power: + * Blank screen: Never + Displays: + * Resolution: 1280 x 800 + Users: + * Automatic login on +# Add user to sudoers +Add 'qt ALL=NOPASSWD: ALL' to /etc/sudoers.d/qt +Add 'GRUB_GFXMODE=1280x800' to /etc/default/grub +sudo grub2-mkconfig -o /etc/grub2.cfg +sudo grub2-mkconfig -o /boot/grub2/grub.cfg +# Add support for virtio driver +su +echo "add_drivers+=\" virtio-blk \"" >> /etc/dracut.conf.d/virtio.conf +dracut -f +# Do these from Opennebula UI! + +# Enable network connection from right upper corner +This is done when the VM is launched as persistent in OpenNebula. +# Fetch and run coin-setup +Download http://coin/coin/binary/linux_amd64/coin-setup +# run as qt user +run './coin-setup' +# Switch to use GNOME Classic user interface +# GNOME Classic was selected because there's an issue with Starndard (wayland display server). Autotest start failing because terminal session remains in Activities Overview. +# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3854 +First execute script ./01-disable-automounting.sh (dconf update crash in GNOME Classic) +logout -> Select user (without it the drop down menu won't appear) -> switch to 'GNOME Classic' from drop down menu in login screen +Reboot diff --git a/coin/pre-provisioning/qtci-linux-Ubuntu-24.04-x86_64/README_MANUAL_INSTALLATIONS b/coin/pre-provisioning/qtci-linux-Ubuntu-24.04-x86_64/README_MANUAL_INSTALLATIONS new file mode 100644 index 00000000000..036b5041878 --- /dev/null +++ b/coin/pre-provisioning/qtci-linux-Ubuntu-24.04-x86_64/README_MANUAL_INSTALLATIONS @@ -0,0 +1,60 @@ +### Ubuntu 24.04 ### +Hard Disk: 1TB + +Language: English (United States) +Time & Date: Etc/Coordinated Universal Time +Software Selection: Desktop image, minimal install + +Language: English (US) +Typing: English (US) +Privacy: Location Services: OFF +Connect Your Online Accounts: Skip + + +# Configure Settings + Notifications: + * Notification Popups: OFF + * Lock Screen Notifications: OFF + Privacy: + * Screen Lock: OFF + * File History & Rubbish Bin: + * File History: Off + * Diagnostics: + * Send error reports to Canonical: Never + Power: + * Blank screen: Never + * Automatic suspend: Off + Appearance: + * Auto-hide the dock: Off + Devices: + * Displays: Resolution 1280 x 800 + Details: + * Time Zone: UTC + * run "sudo timedatectl set-timezone UTC" + * Users: Automatic login on + + Software & Updates: + * Updates: + * Subscribed to: Security updates only + * Automatically check for updates: Never + * Notify me of a new Ubuntu version: Never + +# Add user to sudoers +Add 'qt ALL=NOPASSWD: ALL' to /etc/sudoers.d/qt + +Add 'GRUB_GFXMODE=1280x800' to /etc/default/grub +run 'sudo grub-mkconfig' + +# Install ssh server +run 'sudo apt install openssh-server' + +# Disable firewall +run 'sudo ufw disable' + +# Fetch and run coin-setup (in Opennebula) +Download http://coin/coin/binary/linux_amd64/coin-setup +run 'chmod +x ./coin-setup' to make it executable +run './coin-setup' + +Reboot + diff --git a/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/README_MANUAL_INSTALLATIONS b/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/README_MANUAL_INSTALLATIONS index 65241c24fe2..67a74c6ad9a 100644 --- a/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/README_MANUAL_INSTALLATIONS +++ b/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/README_MANUAL_INSTALLATIONS @@ -74,11 +74,17 @@ Reboot * Sysmain disabled: - 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\Services' - 'SysMain' - stop & disable # Don't disable Windows Update before running '01-enable-dotnet-framework.ps1'. Script requires Windows update to be enabled! +* Install msvc2019 and msvc2022 (follow the msvc2019.txt and msvc2022.txt files) + - After installation: Open Task Scheduler: Task Scheduler Library > Microsoft > VisualStudio > Updates > right-click: BackgroundDownload > disable * Windows update: - Settings - Windows Update - run available updates (Windows update2022-09 Cumulative Update for Windows 11 Version 22H2 for x64-based Systems (KB5017321)) - After reboot disable windows updates: - 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\Services' - 'Windows updates' - stop & disable * Turn windows features on or off -> Check the "SMB 1.0/CIFS File Sharing Support" +* Disable Edge update/installer + - Open services.msc: search 'Microsoft Edge Update Service (edgeupdate)' > stop and disable +* Disable Onedrive + - Open Task Manager: startup tab > Microsoft OneDrive > Disabled * (Restart Windows) * Google Chrome installed for RTA * Virus & threat protection settings: diff --git a/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/msvc2022.txt b/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/msvc2022.txt index 09764b39602..1953083eb06 100644 --- a/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/msvc2022.txt +++ b/coin/pre-provisioning/qtci-windows-10_22H2-x86_64/msvc2022.txt @@ -56,6 +56,10 @@ Windows 10 SDK (10.0.22000.0) Windows 10 SDK (10.0.22621.0) Windows Universal C Runtime +Windows SDK (10.0.26100.1742) was later downloaded and installed from: +https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ +# COIN-1206 + # NOTE! Work loads were added during installation! ############################################################ diff --git a/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/README_MANUAL_INSTALLATIONS b/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/README_MANUAL_INSTALLATIONS index abd3954dd65..2ddf733545e 100644 --- a/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/README_MANUAL_INSTALLATIONS +++ b/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/README_MANUAL_INSTALLATIONS @@ -54,10 +54,16 @@ - After reboot disable windows updates: - 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\Services' - 'Windows updates' - stop & disable * Turn windows features on or off -> Check the "SMB 1.0/CIFS File Sharing Support" +* Disable Windows Restore Points: Search 'Create a restore point' -> 'System Protection' tab -> Configure C: drive -> Disable & Delete restore points. +* Disable widgets: Right click the task bar -> 'Taskbar settings' -> toggle off anything related to widgets. * (Restart Windows) * Google Chrome installed for RTA * Virus & threat protection settings: * Check that there's no active antivirus providers +* Run .NET runtime optimization service: open terminal and run: + Start-Process -NoNewWindow -FilePath "C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" -ArgumentList ExecuteQueuedItems -Wait + - It may be needed to rerun after installing Visual Studio. Just run it until it prints: + "All compilation targets are up to date." * Activate Windows # Next diff --git a/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/msvc2022.txt b/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/msvc2022.txt index 9fd62d004ef..331a2615511 100644 --- a/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/msvc2022.txt +++ b/coin/pre-provisioning/qtci-windows-11_22H2-aarch64/msvc2022.txt @@ -1,6 +1,7 @@ ### Visual Studio Professional 2022 Official release ### Visual Studio Professional 2022 version 17.3.5 was installed manually using installer: http://ci-files01-hki.ci.qt.io/input/windows/vs_professional__msvc2022_1339502178.1525841376.exe Visual Studio Professional 2022 was updated to 17.8.2 vith Visual Studio Installer +Visual Studio Professional 2022 was updated to 17.11.2 with Visual Studio Installer Installed MSVC-2022 Components: diff --git a/coin/provisioning/common/linux/android/gradle_project/app/build.gradle b/coin/provisioning/common/linux/android/gradle_project/app/build.gradle index 745c08f8eaa..207c2dc8bf8 100644 --- a/coin/provisioning/common/linux/android/gradle_project/app/build.gradle +++ b/coin/provisioning/common/linux/android/gradle_project/app/build.gradle @@ -4,12 +4,12 @@ plugins { android { namespace 'com.example.gradle_project' - compileSdk 34 + compileSdk 35 defaultConfig { applicationId "com.example.gradle_project" - minSdk 23 - targetSdk 34 + minSdk 28 + targetSdk 35 versionCode 1 versionName "1.0" } @@ -21,6 +21,7 @@ android { } dependencies { + implementation libs.core implementation libs.appcompat implementation libs.material } diff --git a/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml b/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml index 65bc49af902..f45e66b0903 100644 --- a/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml +++ b/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml @@ -1,10 +1,12 @@ [versions] -agp = "7.4.1" +agp = "8.6.0" +core = "1.13.1" appcompat = "1.6.1" material = "1.11.0" constraintlayout = "2.1.4" [libraries] +core = { group = 'androidx.core', name = "core", version.ref = "core" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } diff --git a/coin/provisioning/common/linux/android_emulator_launcher.sh b/coin/provisioning/common/linux/android_emulator_launcher.sh index fad20148d0d..351a04f9f62 100755 --- a/coin/provisioning/common/linux/android_emulator_launcher.sh +++ b/coin/provisioning/common/linux/android_emulator_launcher.sh @@ -7,8 +7,8 @@ set -e -EMULATOR_MAX_RETRIES=5 -ADB_MAX_TIMEOUT=300 +EMULATOR_MAX_RETRIES=3 +ADB_MAX_TIMEOUT=180 EMULATOR_EXEC="$ANDROID_SDK_ROOT/emulator/emulator" ADB_EXEC="$ANDROID_SDK_ROOT/platform-tools/adb" LOGCAT_PATH="$COIN_CTEST_RESULTSDIR/emulator_logcat_%iter.txt" @@ -85,7 +85,11 @@ do echo "Waiting a few minutes for the emulator to fully boot..." emulator_status=down - for _ in $(seq ${ADB_MAX_TIMEOUT}) + + time_start=${SECONDS} + duration=0 + + while [ $duration -lt ${ADB_MAX_TIMEOUT} ] do sleep 1 @@ -94,6 +98,7 @@ do emulator_status=up break fi + duration=$(( SECONDS - time_start )) done # If emulator status is still offline after timeout period, diff --git a/coin/provisioning/common/linux/android_linux.sh b/coin/provisioning/common/linux/android_linux.sh index 98961077edf..6d38220f63a 100755 --- a/coin/provisioning/common/linux/android_linux.sh +++ b/coin/provisioning/common/linux/android_linux.sh @@ -24,24 +24,19 @@ basePath="http://ci-files01-hki.ci.qt.io/input/android" toolsVersion="2.1" toolsFile="commandlinetools-linux-6609375_latest.zip" -ndkVersionLatest="r26b" +ndkVersionLatest="r27c" ndkVersionDefault=$ndkVersionLatest -sdkBuildToolsVersion="34.0.0" -sdkApiLevel="android-34" +sdkBuildToolsVersion="35.0.1" +sdkApiLevel="android-35" toolsSha1="9172381ff070ee2a416723c1989770cf4b0d1076" -ndkSha1Latest="fdf33d9f6c1b3f16e5459d53a82c7d2201edbcc4" +ndkSha1Latest="090e8083a715fdb1a3e402d0763c388abb03fb4e" ndkSha1Default=$ndkSha1Latest -# Android 14 avd zip -android14SystemZipName="android14system_UE1A_230829_036.tar.gz" -android14SystemZipSha="ede80c6901e8fad1895c97a86542b8e072bb1ee5" -android14SystemPath="$basePath/$android14SystemZipName" - # Android Automotive max SDK level image -sdkApiLevelAutomotiveMax="android-33" +sdkApiLevelAutomotiveMax="android-34" androidAutomotiveMaxUrl="$basePath/${sdkApiLevelAutomotiveMax}_automotive.tar.gz" -androidAutomotiveMaxSha="b020a938ec46af2510047284406e9bed608cad03" +androidAutomotiveMaxSha="2cc5dae4fd0bdefb188a3b84019d0d1e65501519" # Android Automotive min SDK level image sdkApiLevelAutomotiveMin="android-29" androidAutomotiveMinUrl="$basePath/${sdkApiLevelAutomotiveMin}_automotive.tar.gz" @@ -125,7 +120,7 @@ SetEnvVar "ANDROID_NDK_HOST" "linux-x86_64" SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" # shellcheck disable=SC2129 -cat <>~/versions.txt +cat >>~/versions.txt < gradle.properties curl "$qtbaseGradleUrl/gradlew?h=$commit_sha" > gradlew curl "$qtbaseGradleUrl/gradlew.bat?h=$commit_sha" > gradlew.bat diff --git a/coin/provisioning/common/linux/axivion/axivion_config.json b/coin/provisioning/common/linux/axivion/axivion_config.json new file mode 100644 index 00000000000..36461c6af04 --- /dev/null +++ b/coin/provisioning/common/linux/axivion/axivion_config.json @@ -0,0 +1,10 @@ +{ + "_Layers": [ + "post_processing.py", + "ci_config.json", + "ci_config_common.json", + "compiler_config.json", + "rule_config.json", + "code_annotations.json" + ] +} diff --git a/coin/provisioning/common/linux/axivion/ci_config_common.json b/coin/provisioning/common/linux/axivion/ci_config_common.json new file mode 100644 index 00000000000..f637eff5b1a --- /dev/null +++ b/coin/provisioning/common/linux/axivion/ci_config_common.json @@ -0,0 +1,33 @@ +{ + "Project": { + "Git": { + "_active": true, + "sourceserver_gitdir": "/data/axivion/databases/$(env:TESTED_MODULE_COIN).git", + "sourceserver_remote_url": "ssh://codereview.qt-project.org:29418/qt/$(env:TESTED_MODULE_COIN)" + }, + "Project-GlobalOptions": { + "ci_mode": { + "clean_before": false + }, + "directory": "../work/qt/$(env:TESTED_MODULE_COIN)", + "ir": "$(env:IRNAME)", + "name": "qt_$(env:PACKAGE)_$(env:MODULE)_dev_$(env:TARGET_OS_COIN)" + } + }, + "Results": { + "Dashboard": { + "ci_mode": { + "directory": "/data/axivion/databases" + }, + "dashboard_url": "https://axivion-srv.ci.qt.io/axivion/" + } + }, + "_Format": "1.0", + "_Version": "7.6.2", + "_VersionNum": [ + 7, + 6, + 2, + 12725 + ] +} diff --git a/coin/provisioning/common/linux/axivion/code_annotations.json b/coin/provisioning/common/linux/axivion/code_annotations.json new file mode 100644 index 00000000000..62bd38bd847 --- /dev/null +++ b/coin/provisioning/common/linux/axivion/code_annotations.json @@ -0,0 +1,32 @@ +{ + "Analysis": { + "CatchMalformedComments": { + "_active": true + }, + "EnableDisable": { + "_active": true + }, + "NextLine": { + "_active": true + }, + "ReportUnclosedRestOfFileComments": { + "_active": true + }, + "ReportUnusedComments": { + "_active": true + } + }, + "Results": { + "Dashboard": { + "import_suppressed_issues": true + } + }, + "_Format": "1.0", + "_Version": "trunk-d23a11ca62e", + "_VersionNum": [ + 7, + 8, + 0, + 14394 + ] +} diff --git a/coin/provisioning/common/linux/axivion/compiler_config.json b/coin/provisioning/common/linux/axivion/compiler_config.json new file mode 100644 index 00000000000..315b01f668f --- /dev/null +++ b/coin/provisioning/common/linux/axivion/compiler_config.json @@ -0,0 +1,786 @@ +{ + "Project": { + "GNUToolchain": { + "_active": true, + "advanced": { + "no_macro_invocations_for_system_headers": false + }, + "archiver": { + "native_archiver": "/usr/bin/ar" + }, + "language_c": { + "emulated_compiler": "GNU", + "emulated_compiler_version": 90300, + "language_version": "C18", + "native_compiler": "/usr/bin/gcc", + "preprocessing": { + "predefined_macros": { + "_LP64": "1", + "_STDC_PREDEF_H": "1", + "__ATOMIC_ACQUIRE": "2", + "__ATOMIC_ACQ_REL": "4", + "__ATOMIC_CONSUME": "1", + "__ATOMIC_HLE_ACQUIRE": "65536", + "__ATOMIC_HLE_RELEASE": "131072", + "__ATOMIC_RELAXED": "0", + "__ATOMIC_RELEASE": "3", + "__ATOMIC_SEQ_CST": "5", + "__BIGGEST_ALIGNMENT__": "16", + "__BYTE_ORDER__": "__ORDER_LITTLE_ENDIAN__", + "__CHAR_BIT__": "8", + "__DBL_DECIMAL_DIG__": "17", + "__DBL_DENORM_MIN__": "((double)4.94065645841246544176568792868221372e-324L)", + "__DBL_DIG__": "15", + "__DBL_EPSILON__": "((double)2.22044604925031308084726333618164062e-16L)", + "__DBL_HAS_DENORM__": "1", + "__DBL_HAS_INFINITY__": "1", + "__DBL_HAS_QUIET_NAN__": "1", + "__DBL_MANT_DIG__": "53", + "__DBL_MAX_10_EXP__": "308", + "__DBL_MAX_EXP__": "1024", + "__DBL_MAX__": "((double)1.79769313486231570814527423731704357e+308L)", + "__DBL_MIN_10_EXP__": "(-307)", + "__DBL_MIN_EXP__": "(-1021)", + "__DBL_MIN__": "((double)2.22507385850720138309023271733240406e-308L)", + "__DEC128_EPSILON__": "1E-33DL", + "__DEC128_MANT_DIG__": "34", + "__DEC128_MAX_EXP__": "6145", + "__DEC128_MAX__": "9.999999999999999999999999999999999E6144DL", + "__DEC128_MIN_EXP__": "(-6142)", + "__DEC128_MIN__": "1E-6143DL", + "__DEC128_SUBNORMAL_MIN__": "0.000000000000000000000000000000001E-6143DL", + "__DEC32_EPSILON__": "1E-6DF", + "__DEC32_MANT_DIG__": "7", + "__DEC32_MAX_EXP__": "97", + "__DEC32_MAX__": "9.999999E96DF", + "__DEC32_MIN_EXP__": "(-94)", + "__DEC32_MIN__": "1E-95DF", + "__DEC32_SUBNORMAL_MIN__": "0.000001E-95DF", + "__DEC64_EPSILON__": "1E-15DD", + "__DEC64_MANT_DIG__": "16", + "__DEC64_MAX_EXP__": "385", + "__DEC64_MAX__": "9.999999999999999E384DD", + "__DEC64_MIN_EXP__": "(-382)", + "__DEC64_MIN__": "1E-383DD", + "__DEC64_SUBNORMAL_MIN__": "0.000000000000001E-383DD", + "__DECIMAL_BID_FORMAT__": "1", + "__DECIMAL_DIG__": "21", + "__DEC_EVAL_METHOD__": "2", + "__ELF__": "1", + "__FINITE_MATH_ONLY__": "0", + "__FLOAT_WORD_ORDER__": "__ORDER_LITTLE_ENDIAN__", + "__FLT128_DECIMAL_DIG__": "36", + "__FLT128_DENORM_MIN__": "6.47517511943802511092443895822764655e-4966F128", + "__FLT128_DIG__": "33", + "__FLT128_EPSILON__": "1.92592994438723585305597794258492732e-34F128", + "__FLT128_HAS_DENORM__": "1", + "__FLT128_HAS_INFINITY__": "1", + "__FLT128_HAS_QUIET_NAN__": "1", + "__FLT128_MANT_DIG__": "113", + "__FLT128_MAX_10_EXP__": "4932", + "__FLT128_MAX_EXP__": "16384", + "__FLT128_MAX__": "1.18973149535723176508575932662800702e+4932F128", + "__FLT128_MIN_10_EXP__": "(-4931)", + "__FLT128_MIN_EXP__": "(-16381)", + "__FLT128_MIN__": "3.36210314311209350626267781732175260e-4932F128", + "__FLT32X_DECIMAL_DIG__": "17", + "__FLT32X_DENORM_MIN__": "4.94065645841246544176568792868221372e-324F32x", + "__FLT32X_DIG__": "15", + "__FLT32X_EPSILON__": "2.22044604925031308084726333618164062e-16F32x", + "__FLT32X_HAS_DENORM__": "1", + "__FLT32X_HAS_INFINITY__": "1", + "__FLT32X_HAS_QUIET_NAN__": "1", + "__FLT32X_MANT_DIG__": "53", + "__FLT32X_MAX_10_EXP__": "308", + "__FLT32X_MAX_EXP__": "1024", + "__FLT32X_MAX__": "1.79769313486231570814527423731704357e+308F32x", + "__FLT32X_MIN_10_EXP__": "(-307)", + "__FLT32X_MIN_EXP__": "(-1021)", + "__FLT32X_MIN__": "2.22507385850720138309023271733240406e-308F32x", + "__FLT32_DECIMAL_DIG__": "9", + "__FLT32_DENORM_MIN__": "1.40129846432481707092372958328991613e-45F32", + "__FLT32_DIG__": "6", + "__FLT32_EPSILON__": "1.19209289550781250000000000000000000e-7F32", + "__FLT32_HAS_DENORM__": "1", + "__FLT32_HAS_INFINITY__": "1", + "__FLT32_HAS_QUIET_NAN__": "1", + "__FLT32_MANT_DIG__": "24", + "__FLT32_MAX_10_EXP__": "38", + "__FLT32_MAX_EXP__": "128", + "__FLT32_MAX__": "3.40282346638528859811704183484516925e+38F32", + "__FLT32_MIN_10_EXP__": "(-37)", + "__FLT32_MIN_EXP__": "(-125)", + "__FLT32_MIN__": "1.17549435082228750796873653722224568e-38F32", + "__FLT64X_DECIMAL_DIG__": "21", + "__FLT64X_DENORM_MIN__": "3.64519953188247460252840593361941982e-4951F64x", + "__FLT64X_DIG__": "18", + "__FLT64X_EPSILON__": "1.08420217248550443400745280086994171e-19F64x", + "__FLT64X_HAS_DENORM__": "1", + "__FLT64X_HAS_INFINITY__": "1", + "__FLT64X_HAS_QUIET_NAN__": "1", + "__FLT64X_MANT_DIG__": "64", + "__FLT64X_MAX_10_EXP__": "4932", + "__FLT64X_MAX_EXP__": "16384", + "__FLT64X_MAX__": "1.18973149535723176502126385303097021e+4932F64x", + "__FLT64X_MIN_10_EXP__": "(-4931)", + "__FLT64X_MIN_EXP__": "(-16381)", + "__FLT64X_MIN__": "3.36210314311209350626267781732175260e-4932F64x", + "__FLT64_DECIMAL_DIG__": "17", + "__FLT64_DENORM_MIN__": "4.94065645841246544176568792868221372e-324F64", + "__FLT64_DIG__": "15", + "__FLT64_EPSILON__": "2.22044604925031308084726333618164062e-16F64", + "__FLT64_HAS_DENORM__": "1", + "__FLT64_HAS_INFINITY__": "1", + "__FLT64_HAS_QUIET_NAN__": "1", + "__FLT64_MANT_DIG__": "53", + "__FLT64_MAX_10_EXP__": "308", + "__FLT64_MAX_EXP__": "1024", + "__FLT64_MAX__": "1.79769313486231570814527423731704357e+308F64", + "__FLT64_MIN_10_EXP__": "(-307)", + "__FLT64_MIN_EXP__": "(-1021)", + "__FLT64_MIN__": "2.22507385850720138309023271733240406e-308F64", + "__FLT_DECIMAL_DIG__": "9", + "__FLT_DENORM_MIN__": "1.40129846432481707092372958328991613e-45F", + "__FLT_DIG__": "6", + "__FLT_EPSILON__": "1.19209289550781250000000000000000000e-7F", + "__FLT_EVAL_METHOD_TS_18661_3__": "0", + "__FLT_EVAL_METHOD__": "0", + "__FLT_HAS_DENORM__": "1", + "__FLT_HAS_INFINITY__": "1", + "__FLT_HAS_QUIET_NAN__": "1", + "__FLT_MANT_DIG__": "24", + "__FLT_MAX_10_EXP__": "38", + "__FLT_MAX_EXP__": "128", + "__FLT_MAX__": "3.40282346638528859811704183484516925e+38F", + "__FLT_MIN_10_EXP__": "(-37)", + "__FLT_MIN_EXP__": "(-125)", + "__FLT_MIN__": "1.17549435082228750796873653722224568e-38F", + "__FLT_RADIX__": "2", + "__FXSR__": "1", + "__GCC_ASM_FLAG_OUTPUTS__": "1", + "__GCC_ATOMIC_BOOL_LOCK_FREE": "2", + "__GCC_ATOMIC_CHAR16_T_LOCK_FREE": "2", + "__GCC_ATOMIC_CHAR32_T_LOCK_FREE": "2", + "__GCC_ATOMIC_CHAR_LOCK_FREE": "2", + "__GCC_ATOMIC_INT_LOCK_FREE": "2", + "__GCC_ATOMIC_LLONG_LOCK_FREE": "2", + "__GCC_ATOMIC_LONG_LOCK_FREE": "2", + "__GCC_ATOMIC_POINTER_LOCK_FREE": "2", + "__GCC_ATOMIC_SHORT_LOCK_FREE": "2", + "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL": "1", + "__GCC_ATOMIC_WCHAR_T_LOCK_FREE": "2", + "__GCC_HAVE_DWARF2_CFI_ASM": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8": "1", + "__GCC_IEC_559": "2", + "__GCC_IEC_559_COMPLEX": "2", + "__GXX_ABI_VERSION": "1013", + "__HAVE_SPECULATION_SAFE_VALUE": "1", + "__INT16_C(c)": "c", + "__INT16_MAX__": "0x7fff", + "__INT16_TYPE__": "short int", + "__INT32_C(c)": "c", + "__INT32_MAX__": "0x7fffffff", + "__INT32_TYPE__": "int", + "__INT64_C(c)": "c ## L", + "__INT64_MAX__": "0x7fffffffffffffffL", + "__INT64_TYPE__": "long int", + "__INT8_C(c)": "c", + "__INT8_MAX__": "0x7f", + "__INT8_TYPE__": "signed char", + "__INTMAX_C(c)": "c ## L", + "__INTMAX_MAX__": "0x7fffffffffffffffL", + "__INTMAX_TYPE__": "long int", + "__INTMAX_WIDTH__": "64", + "__INTPTR_MAX__": "0x7fffffffffffffffL", + "__INTPTR_TYPE__": "long int", + "__INTPTR_WIDTH__": "64", + "__INT_FAST16_MAX__": "0x7fffffffffffffffL", + "__INT_FAST16_TYPE__": "long int", + "__INT_FAST16_WIDTH__": "64", + "__INT_FAST32_MAX__": "0x7fffffffffffffffL", + "__INT_FAST32_TYPE__": "long int", + "__INT_FAST32_WIDTH__": "64", + "__INT_FAST64_MAX__": "0x7fffffffffffffffL", + "__INT_FAST64_TYPE__": "long int", + "__INT_FAST64_WIDTH__": "64", + "__INT_FAST8_MAX__": "0x7f", + "__INT_FAST8_TYPE__": "signed char", + "__INT_FAST8_WIDTH__": "8", + "__INT_LEAST16_MAX__": "0x7fff", + "__INT_LEAST16_TYPE__": "short int", + "__INT_LEAST16_WIDTH__": "16", + "__INT_LEAST32_MAX__": "0x7fffffff", + "__INT_LEAST32_TYPE__": "int", + "__INT_LEAST32_WIDTH__": "32", + "__INT_LEAST64_MAX__": "0x7fffffffffffffffL", + "__INT_LEAST64_TYPE__": "long int", + "__INT_LEAST64_WIDTH__": "64", + "__INT_LEAST8_MAX__": "0x7f", + "__INT_LEAST8_TYPE__": "signed char", + "__INT_LEAST8_WIDTH__": "8", + "__INT_MAX__": "0x7fffffff", + "__INT_WIDTH__": "32", + "__LDBL_DECIMAL_DIG__": "21", + "__LDBL_DENORM_MIN__": "3.64519953188247460252840593361941982e-4951L", + "__LDBL_DIG__": "18", + "__LDBL_EPSILON__": "1.08420217248550443400745280086994171e-19L", + "__LDBL_HAS_DENORM__": "1", + "__LDBL_HAS_INFINITY__": "1", + "__LDBL_HAS_QUIET_NAN__": "1", + "__LDBL_MANT_DIG__": "64", + "__LDBL_MAX_10_EXP__": "4932", + "__LDBL_MAX_EXP__": "16384", + "__LDBL_MAX__": "1.18973149535723176502126385303097021e+4932L", + "__LDBL_MIN_10_EXP__": "(-4931)", + "__LDBL_MIN_EXP__": "(-16381)", + "__LDBL_MIN__": "3.36210314311209350626267781732175260e-4932L", + "__LONG_LONG_MAX__": "0x7fffffffffffffffLL", + "__LONG_LONG_WIDTH__": "64", + "__LONG_MAX__": "0x7fffffffffffffffL", + "__LONG_WIDTH__": "64", + "__LP64__": "1", + "__MMX__": "1", + "__NO_INLINE__": "1", + "__ORDER_BIG_ENDIAN__": "4321", + "__ORDER_LITTLE_ENDIAN__": "1234", + "__ORDER_PDP_ENDIAN__": "3412", + "__PRAGMA_REDEFINE_EXTNAME": "1", + "__PTRDIFF_MAX__": "0x7fffffffffffffffL", + "__PTRDIFF_TYPE__": "long int", + "__PTRDIFF_WIDTH__": "64", + "__REGISTER_PREFIX__": "", + "__SCHAR_MAX__": "0x7f", + "__SCHAR_WIDTH__": "8", + "__SEG_FS": "1", + "__SEG_GS": "1", + "__SHRT_MAX__": "0x7fff", + "__SHRT_WIDTH__": "16", + "__SIG_ATOMIC_MAX__": "0x7fffffff", + "__SIG_ATOMIC_MIN__": "(-__SIG_ATOMIC_MAX__ - 1)", + "__SIG_ATOMIC_TYPE__": "int", + "__SIG_ATOMIC_WIDTH__": "32", + "__SIZEOF_DOUBLE__": "8", + "__SIZEOF_FLOAT128__": "16", + "__SIZEOF_FLOAT80__": "16", + "__SIZEOF_FLOAT__": "4", + "__SIZEOF_INT128__": "16", + "__SIZEOF_INT__": "4", + "__SIZEOF_LONG_DOUBLE__": "16", + "__SIZEOF_LONG_LONG__": "8", + "__SIZEOF_LONG__": "8", + "__SIZEOF_POINTER__": "8", + "__SIZEOF_PTRDIFF_T__": "8", + "__SIZEOF_SHORT__": "2", + "__SIZEOF_SIZE_T__": "8", + "__SIZEOF_WCHAR_T__": "4", + "__SIZEOF_WINT_T__": "4", + "__SIZE_MAX__": "0xffffffffffffffffUL", + "__SIZE_TYPE__": "long unsigned int", + "__SIZE_WIDTH__": "64", + "__SSE2_MATH__": "1", + "__SSE2__": "1", + "__SSE_MATH__": "1", + "__SSE__": "1", + "__STDC_HOSTED__": "1", + "__STDC_IEC_559_COMPLEX__": "1", + "__STDC_IEC_559__": "1", + "__STDC_ISO_10646__": "201706L", + "__STDC_UTF_16__": "1", + "__STDC_UTF_32__": "1", + "__UINT16_C(c)": "c", + "__UINT16_MAX__": "0xffff", + "__UINT16_TYPE__": "short unsigned int", + "__UINT32_C(c)": "c ## U", + "__UINT32_MAX__": "0xffffffffU", + "__UINT32_TYPE__": "unsigned int", + "__UINT64_C(c)": "c ## UL", + "__UINT64_MAX__": "0xffffffffffffffffUL", + "__UINT64_TYPE__": "long unsigned int", + "__UINT8_C(c)": "c", + "__UINT8_MAX__": "0xff", + "__UINT8_TYPE__": "unsigned char", + "__UINTMAX_C(c)": "c ## UL", + "__UINTMAX_MAX__": "0xffffffffffffffffUL", + "__UINTMAX_TYPE__": "long unsigned int", + "__UINTPTR_MAX__": "0xffffffffffffffffUL", + "__UINTPTR_TYPE__": "long unsigned int", + "__UINT_FAST16_MAX__": "0xffffffffffffffffUL", + "__UINT_FAST16_TYPE__": "long unsigned int", + "__UINT_FAST32_MAX__": "0xffffffffffffffffUL", + "__UINT_FAST32_TYPE__": "long unsigned int", + "__UINT_FAST64_MAX__": "0xffffffffffffffffUL", + "__UINT_FAST64_TYPE__": "long unsigned int", + "__UINT_FAST8_MAX__": "0xff", + "__UINT_FAST8_TYPE__": "unsigned char", + "__UINT_LEAST16_MAX__": "0xffff", + "__UINT_LEAST16_TYPE__": "short unsigned int", + "__UINT_LEAST32_MAX__": "0xffffffffU", + "__UINT_LEAST32_TYPE__": "unsigned int", + "__UINT_LEAST64_MAX__": "0xffffffffffffffffUL", + "__UINT_LEAST64_TYPE__": "long unsigned int", + "__UINT_LEAST8_MAX__": "0xff", + "__UINT_LEAST8_TYPE__": "unsigned char", + "__USER_LABEL_PREFIX__": "", + "__WCHAR_MAX__": "0x7fffffff", + "__WCHAR_MIN__": "(-__WCHAR_MAX__ - 1)", + "__WCHAR_TYPE__": "int", + "__WCHAR_WIDTH__": "32", + "__WINT_MAX__": "0xffffffffU", + "__WINT_MIN__": "0U", + "__WINT_TYPE__": "unsigned int", + "__WINT_WIDTH__": "32", + "__amd64": "1", + "__amd64__": "1", + "__code_model_small__": "1", + "__gnu_linux__": "1", + "__k8": "1", + "__k8__": "1", + "__linux": "1", + "__linux__": "1", + "__unix": "1", + "__unix__": "1", + "__x86_64": "1", + "__x86_64__": "1", + "linux": "1", + "unix": "1" + }, + "sys_include_envvar": null, + "sys_include_path": [ + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include", + "/usr/local/include", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include-fixed", + "/usr/include/x86_64-linux-gnu", + "/usr/include" + ] + } + }, + "language_c.command.#": "/usr/bin/gcc", + "language_c.info.#": "Using built-in specs.\nCOLLECT_GCC=/usr/bin/gcc\nCOLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.3.0/lto-wrapper\nTarget: x86_64-pc-linux-gnu\nConfigured with: /tmp/gcc-9.3.0/configure --disable-bootstrap --enable-languages=c,c++,lto --prefix=/usr/local --program-suffix=-9.3\nThread model: posix\ngcc version 9.3.0 (GCC) \n", + "language_cxx": { + "emulated_compiler": "GNU", + "emulated_compiler_version": 90300, + "language_version": "Cpp14", + "native_compiler": "/usr/bin/g++", + "preprocessing": { + "predefined_macros": { + "_GNU_SOURCE": "1", + "_LP64": "1", + "_STDC_PREDEF_H": "1", + "__ATOMIC_ACQUIRE": "2", + "__ATOMIC_ACQ_REL": "4", + "__ATOMIC_CONSUME": "1", + "__ATOMIC_HLE_ACQUIRE": "65536", + "__ATOMIC_HLE_RELEASE": "131072", + "__ATOMIC_RELAXED": "0", + "__ATOMIC_RELEASE": "3", + "__ATOMIC_SEQ_CST": "5", + "__BIGGEST_ALIGNMENT__": "16", + "__BYTE_ORDER__": "__ORDER_LITTLE_ENDIAN__", + "__CHAR_BIT__": "8", + "__DBL_DECIMAL_DIG__": "17", + "__DBL_DENORM_MIN__": "double(4.94065645841246544176568792868221372e-324L)", + "__DBL_DIG__": "15", + "__DBL_EPSILON__": "double(2.22044604925031308084726333618164062e-16L)", + "__DBL_HAS_DENORM__": "1", + "__DBL_HAS_INFINITY__": "1", + "__DBL_HAS_QUIET_NAN__": "1", + "__DBL_MANT_DIG__": "53", + "__DBL_MAX_10_EXP__": "308", + "__DBL_MAX_EXP__": "1024", + "__DBL_MAX__": "double(1.79769313486231570814527423731704357e+308L)", + "__DBL_MIN_10_EXP__": "(-307)", + "__DBL_MIN_EXP__": "(-1021)", + "__DBL_MIN__": "double(2.22507385850720138309023271733240406e-308L)", + "__DEC128_EPSILON__": "1E-33DL", + "__DEC128_MANT_DIG__": "34", + "__DEC128_MAX_EXP__": "6145", + "__DEC128_MAX__": "9.999999999999999999999999999999999E6144DL", + "__DEC128_MIN_EXP__": "(-6142)", + "__DEC128_MIN__": "1E-6143DL", + "__DEC128_SUBNORMAL_MIN__": "0.000000000000000000000000000000001E-6143DL", + "__DEC32_EPSILON__": "1E-6DF", + "__DEC32_MANT_DIG__": "7", + "__DEC32_MAX_EXP__": "97", + "__DEC32_MAX__": "9.999999E96DF", + "__DEC32_MIN_EXP__": "(-94)", + "__DEC32_MIN__": "1E-95DF", + "__DEC32_SUBNORMAL_MIN__": "0.000001E-95DF", + "__DEC64_EPSILON__": "1E-15DD", + "__DEC64_MANT_DIG__": "16", + "__DEC64_MAX_EXP__": "385", + "__DEC64_MAX__": "9.999999999999999E384DD", + "__DEC64_MIN_EXP__": "(-382)", + "__DEC64_MIN__": "1E-383DD", + "__DEC64_SUBNORMAL_MIN__": "0.000000000000001E-383DD", + "__DECIMAL_BID_FORMAT__": "1", + "__DECIMAL_DIG__": "21", + "__DEC_EVAL_METHOD__": "2", + "__DEPRECATED": "1", + "__ELF__": "1", + "__FINITE_MATH_ONLY__": "0", + "__FLOAT_WORD_ORDER__": "__ORDER_LITTLE_ENDIAN__", + "__FLT128_DECIMAL_DIG__": "36", + "__FLT128_DENORM_MIN__": "6.47517511943802511092443895822764655e-4966F128", + "__FLT128_DIG__": "33", + "__FLT128_EPSILON__": "1.92592994438723585305597794258492732e-34F128", + "__FLT128_HAS_DENORM__": "1", + "__FLT128_HAS_INFINITY__": "1", + "__FLT128_HAS_QUIET_NAN__": "1", + "__FLT128_MANT_DIG__": "113", + "__FLT128_MAX_10_EXP__": "4932", + "__FLT128_MAX_EXP__": "16384", + "__FLT128_MAX__": "1.18973149535723176508575932662800702e+4932F128", + "__FLT128_MIN_10_EXP__": "(-4931)", + "__FLT128_MIN_EXP__": "(-16381)", + "__FLT128_MIN__": "3.36210314311209350626267781732175260e-4932F128", + "__FLT32X_DECIMAL_DIG__": "17", + "__FLT32X_DENORM_MIN__": "4.94065645841246544176568792868221372e-324F32x", + "__FLT32X_DIG__": "15", + "__FLT32X_EPSILON__": "2.22044604925031308084726333618164062e-16F32x", + "__FLT32X_HAS_DENORM__": "1", + "__FLT32X_HAS_INFINITY__": "1", + "__FLT32X_HAS_QUIET_NAN__": "1", + "__FLT32X_MANT_DIG__": "53", + "__FLT32X_MAX_10_EXP__": "308", + "__FLT32X_MAX_EXP__": "1024", + "__FLT32X_MAX__": "1.79769313486231570814527423731704357e+308F32x", + "__FLT32X_MIN_10_EXP__": "(-307)", + "__FLT32X_MIN_EXP__": "(-1021)", + "__FLT32X_MIN__": "2.22507385850720138309023271733240406e-308F32x", + "__FLT32_DECIMAL_DIG__": "9", + "__FLT32_DENORM_MIN__": "1.40129846432481707092372958328991613e-45F32", + "__FLT32_DIG__": "6", + "__FLT32_EPSILON__": "1.19209289550781250000000000000000000e-7F32", + "__FLT32_HAS_DENORM__": "1", + "__FLT32_HAS_INFINITY__": "1", + "__FLT32_HAS_QUIET_NAN__": "1", + "__FLT32_MANT_DIG__": "24", + "__FLT32_MAX_10_EXP__": "38", + "__FLT32_MAX_EXP__": "128", + "__FLT32_MAX__": "3.40282346638528859811704183484516925e+38F32", + "__FLT32_MIN_10_EXP__": "(-37)", + "__FLT32_MIN_EXP__": "(-125)", + "__FLT32_MIN__": "1.17549435082228750796873653722224568e-38F32", + "__FLT64X_DECIMAL_DIG__": "21", + "__FLT64X_DENORM_MIN__": "3.64519953188247460252840593361941982e-4951F64x", + "__FLT64X_DIG__": "18", + "__FLT64X_EPSILON__": "1.08420217248550443400745280086994171e-19F64x", + "__FLT64X_HAS_DENORM__": "1", + "__FLT64X_HAS_INFINITY__": "1", + "__FLT64X_HAS_QUIET_NAN__": "1", + "__FLT64X_MANT_DIG__": "64", + "__FLT64X_MAX_10_EXP__": "4932", + "__FLT64X_MAX_EXP__": "16384", + "__FLT64X_MAX__": "1.18973149535723176502126385303097021e+4932F64x", + "__FLT64X_MIN_10_EXP__": "(-4931)", + "__FLT64X_MIN_EXP__": "(-16381)", + "__FLT64X_MIN__": "3.36210314311209350626267781732175260e-4932F64x", + "__FLT64_DECIMAL_DIG__": "17", + "__FLT64_DENORM_MIN__": "4.94065645841246544176568792868221372e-324F64", + "__FLT64_DIG__": "15", + "__FLT64_EPSILON__": "2.22044604925031308084726333618164062e-16F64", + "__FLT64_HAS_DENORM__": "1", + "__FLT64_HAS_INFINITY__": "1", + "__FLT64_HAS_QUIET_NAN__": "1", + "__FLT64_MANT_DIG__": "53", + "__FLT64_MAX_10_EXP__": "308", + "__FLT64_MAX_EXP__": "1024", + "__FLT64_MAX__": "1.79769313486231570814527423731704357e+308F64", + "__FLT64_MIN_10_EXP__": "(-307)", + "__FLT64_MIN_EXP__": "(-1021)", + "__FLT64_MIN__": "2.22507385850720138309023271733240406e-308F64", + "__FLT_DECIMAL_DIG__": "9", + "__FLT_DENORM_MIN__": "1.40129846432481707092372958328991613e-45F", + "__FLT_DIG__": "6", + "__FLT_EPSILON__": "1.19209289550781250000000000000000000e-7F", + "__FLT_EVAL_METHOD_TS_18661_3__": "0", + "__FLT_EVAL_METHOD__": "0", + "__FLT_HAS_DENORM__": "1", + "__FLT_HAS_INFINITY__": "1", + "__FLT_HAS_QUIET_NAN__": "1", + "__FLT_MANT_DIG__": "24", + "__FLT_MAX_10_EXP__": "38", + "__FLT_MAX_EXP__": "128", + "__FLT_MAX__": "3.40282346638528859811704183484516925e+38F", + "__FLT_MIN_10_EXP__": "(-37)", + "__FLT_MIN_EXP__": "(-125)", + "__FLT_MIN__": "1.17549435082228750796873653722224568e-38F", + "__FLT_RADIX__": "2", + "__FXSR__": "1", + "__GCC_ASM_FLAG_OUTPUTS__": "1", + "__GCC_ATOMIC_BOOL_LOCK_FREE": "2", + "__GCC_ATOMIC_CHAR16_T_LOCK_FREE": "2", + "__GCC_ATOMIC_CHAR32_T_LOCK_FREE": "2", + "__GCC_ATOMIC_CHAR_LOCK_FREE": "2", + "__GCC_ATOMIC_INT_LOCK_FREE": "2", + "__GCC_ATOMIC_LLONG_LOCK_FREE": "2", + "__GCC_ATOMIC_LONG_LOCK_FREE": "2", + "__GCC_ATOMIC_POINTER_LOCK_FREE": "2", + "__GCC_ATOMIC_SHORT_LOCK_FREE": "2", + "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL": "1", + "__GCC_ATOMIC_WCHAR_T_LOCK_FREE": "2", + "__GCC_HAVE_DWARF2_CFI_ASM": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4": "1", + "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8": "1", + "__GCC_IEC_559": "2", + "__GCC_IEC_559_COMPLEX": "2", + "__GLIBCXX_BITSIZE_INT_N_0": "128", + "__GLIBCXX_TYPE_INT_N_0": "__int128", + "__GXX_ABI_VERSION": "1013", + "__GXX_WEAK__": "1", + "__HAVE_SPECULATION_SAFE_VALUE": "1", + "__INT16_C(c)": "c", + "__INT16_MAX__": "0x7fff", + "__INT16_TYPE__": "short int", + "__INT32_C(c)": "c", + "__INT32_MAX__": "0x7fffffff", + "__INT32_TYPE__": "int", + "__INT64_C(c)": "c ## L", + "__INT64_MAX__": "0x7fffffffffffffffL", + "__INT64_TYPE__": "long int", + "__INT8_C(c)": "c", + "__INT8_MAX__": "0x7f", + "__INT8_TYPE__": "signed char", + "__INTMAX_C(c)": "c ## L", + "__INTMAX_MAX__": "0x7fffffffffffffffL", + "__INTMAX_TYPE__": "long int", + "__INTMAX_WIDTH__": "64", + "__INTPTR_MAX__": "0x7fffffffffffffffL", + "__INTPTR_TYPE__": "long int", + "__INTPTR_WIDTH__": "64", + "__INT_FAST16_MAX__": "0x7fffffffffffffffL", + "__INT_FAST16_TYPE__": "long int", + "__INT_FAST16_WIDTH__": "64", + "__INT_FAST32_MAX__": "0x7fffffffffffffffL", + "__INT_FAST32_TYPE__": "long int", + "__INT_FAST32_WIDTH__": "64", + "__INT_FAST64_MAX__": "0x7fffffffffffffffL", + "__INT_FAST64_TYPE__": "long int", + "__INT_FAST64_WIDTH__": "64", + "__INT_FAST8_MAX__": "0x7f", + "__INT_FAST8_TYPE__": "signed char", + "__INT_FAST8_WIDTH__": "8", + "__INT_LEAST16_MAX__": "0x7fff", + "__INT_LEAST16_TYPE__": "short int", + "__INT_LEAST16_WIDTH__": "16", + "__INT_LEAST32_MAX__": "0x7fffffff", + "__INT_LEAST32_TYPE__": "int", + "__INT_LEAST32_WIDTH__": "32", + "__INT_LEAST64_MAX__": "0x7fffffffffffffffL", + "__INT_LEAST64_TYPE__": "long int", + "__INT_LEAST64_WIDTH__": "64", + "__INT_LEAST8_MAX__": "0x7f", + "__INT_LEAST8_TYPE__": "signed char", + "__INT_LEAST8_WIDTH__": "8", + "__INT_MAX__": "0x7fffffff", + "__INT_WIDTH__": "32", + "__LDBL_DECIMAL_DIG__": "21", + "__LDBL_DENORM_MIN__": "3.64519953188247460252840593361941982e-4951L", + "__LDBL_DIG__": "18", + "__LDBL_EPSILON__": "1.08420217248550443400745280086994171e-19L", + "__LDBL_HAS_DENORM__": "1", + "__LDBL_HAS_INFINITY__": "1", + "__LDBL_HAS_QUIET_NAN__": "1", + "__LDBL_MANT_DIG__": "64", + "__LDBL_MAX_10_EXP__": "4932", + "__LDBL_MAX_EXP__": "16384", + "__LDBL_MAX__": "1.18973149535723176502126385303097021e+4932L", + "__LDBL_MIN_10_EXP__": "(-4931)", + "__LDBL_MIN_EXP__": "(-16381)", + "__LDBL_MIN__": "3.36210314311209350626267781732175260e-4932L", + "__LONG_LONG_MAX__": "0x7fffffffffffffffLL", + "__LONG_LONG_WIDTH__": "64", + "__LONG_MAX__": "0x7fffffffffffffffL", + "__LONG_WIDTH__": "64", + "__LP64__": "1", + "__MMX__": "1", + "__NO_INLINE__": "1", + "__ORDER_BIG_ENDIAN__": "4321", + "__ORDER_LITTLE_ENDIAN__": "1234", + "__ORDER_PDP_ENDIAN__": "3412", + "__PRAGMA_REDEFINE_EXTNAME": "1", + "__PTRDIFF_MAX__": "0x7fffffffffffffffL", + "__PTRDIFF_TYPE__": "long int", + "__PTRDIFF_WIDTH__": "64", + "__REGISTER_PREFIX__": "", + "__SCHAR_MAX__": "0x7f", + "__SCHAR_WIDTH__": "8", + "__SEG_FS": "1", + "__SEG_GS": "1", + "__SHRT_MAX__": "0x7fff", + "__SHRT_WIDTH__": "16", + "__SIG_ATOMIC_MAX__": "0x7fffffff", + "__SIG_ATOMIC_MIN__": "(-__SIG_ATOMIC_MAX__ - 1)", + "__SIG_ATOMIC_TYPE__": "int", + "__SIG_ATOMIC_WIDTH__": "32", + "__SIZEOF_DOUBLE__": "8", + "__SIZEOF_FLOAT128__": "16", + "__SIZEOF_FLOAT80__": "16", + "__SIZEOF_FLOAT__": "4", + "__SIZEOF_INT128__": "16", + "__SIZEOF_INT__": "4", + "__SIZEOF_LONG_DOUBLE__": "16", + "__SIZEOF_LONG_LONG__": "8", + "__SIZEOF_LONG__": "8", + "__SIZEOF_POINTER__": "8", + "__SIZEOF_PTRDIFF_T__": "8", + "__SIZEOF_SHORT__": "2", + "__SIZEOF_SIZE_T__": "8", + "__SIZEOF_WCHAR_T__": "4", + "__SIZEOF_WINT_T__": "4", + "__SIZE_MAX__": "0xffffffffffffffffUL", + "__SIZE_TYPE__": "long unsigned int", + "__SIZE_WIDTH__": "64", + "__SSE2_MATH__": "1", + "__SSE2__": "1", + "__SSE_MATH__": "1", + "__SSE__": "1", + "__STDC_HOSTED__": "1", + "__STDC_IEC_559_COMPLEX__": "1", + "__STDC_IEC_559__": "1", + "__STDC_ISO_10646__": "201706L", + "__STDC_UTF_16__": "1", + "__STDC_UTF_32__": "1", + "__UINT16_C(c)": "c", + "__UINT16_MAX__": "0xffff", + "__UINT16_TYPE__": "short unsigned int", + "__UINT32_C(c)": "c ## U", + "__UINT32_MAX__": "0xffffffffU", + "__UINT32_TYPE__": "unsigned int", + "__UINT64_C(c)": "c ## UL", + "__UINT64_MAX__": "0xffffffffffffffffUL", + "__UINT64_TYPE__": "long unsigned int", + "__UINT8_C(c)": "c", + "__UINT8_MAX__": "0xff", + "__UINT8_TYPE__": "unsigned char", + "__UINTMAX_C(c)": "c ## UL", + "__UINTMAX_MAX__": "0xffffffffffffffffUL", + "__UINTMAX_TYPE__": "long unsigned int", + "__UINTPTR_MAX__": "0xffffffffffffffffUL", + "__UINTPTR_TYPE__": "long unsigned int", + "__UINT_FAST16_MAX__": "0xffffffffffffffffUL", + "__UINT_FAST16_TYPE__": "long unsigned int", + "__UINT_FAST32_MAX__": "0xffffffffffffffffUL", + "__UINT_FAST32_TYPE__": "long unsigned int", + "__UINT_FAST64_MAX__": "0xffffffffffffffffUL", + "__UINT_FAST64_TYPE__": "long unsigned int", + "__UINT_FAST8_MAX__": "0xff", + "__UINT_FAST8_TYPE__": "unsigned char", + "__UINT_LEAST16_MAX__": "0xffff", + "__UINT_LEAST16_TYPE__": "short unsigned int", + "__UINT_LEAST32_MAX__": "0xffffffffU", + "__UINT_LEAST32_TYPE__": "unsigned int", + "__UINT_LEAST64_MAX__": "0xffffffffffffffffUL", + "__UINT_LEAST64_TYPE__": "long unsigned int", + "__UINT_LEAST8_MAX__": "0xff", + "__UINT_LEAST8_TYPE__": "unsigned char", + "__USER_LABEL_PREFIX__": "", + "__WCHAR_MAX__": "0x7fffffff", + "__WCHAR_MIN__": "(-__WCHAR_MAX__ - 1)", + "__WCHAR_TYPE__": "int", + "__WCHAR_WIDTH__": "32", + "__WINT_MAX__": "0xffffffffU", + "__WINT_MIN__": "0U", + "__WINT_TYPE__": "unsigned int", + "__WINT_WIDTH__": "32", + "__amd64": "1", + "__amd64__": "1", + "__code_model_small__": "1", + "__gnu_linux__": "1", + "__k8": "1", + "__k8__": "1", + "__linux": "1", + "__linux__": "1", + "__unix": "1", + "__unix__": "1", + "__x86_64": "1", + "__x86_64__": "1", + "linux": "1", + "unix": "1" + }, + "sys_include_envvar": null, + "sys_include_path": [ + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../include/c++/9.3.0", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../include/c++/9.3.0/x86_64-pc-linux-gnu", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include", + "/usr/local/include", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include-fixed", + "/usr/include/x86_64-linux-gnu", + "/usr/include" + ] + } + }, + "language_cxx.command.#": "/usr/bin/g++", + "language_cxx.info.#": "Using built-in specs.\nCOLLECT_GCC=/usr/bin/g++\nCOLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.3.0/lto-wrapper\nTarget: x86_64-pc-linux-gnu\nConfigured with: /tmp/gcc-9.3.0/configure --disable-bootstrap --enable-languages=c,c++,lto --prefix=/usr/local --program-suffix=-9.3\nThread model: posix\ngcc version 9.3.0 (GCC) \n", + "linker": { + "library_path": [ + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../lib64/", + "/lib/x86_64-linux-gnu/", + "/lib/../lib64/", + "/usr/lib/x86_64-linux-gnu/", + "/usr/lib/../lib64/", + "/usr/local/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../", + "/lib/", + "/usr/lib/" + ] + }, + "types": { + "char16_t_type": "unsigned short", + "char32_t_type": "unsigned int", + "char_bits": 8, + "double_type": { + "alignof": 8, + "sizeof": 8 + }, + "float_type": { + "alignof": 4, + "sizeof": 4 + }, + "int_type": { + "alignof": 4, + "sizeof": 4 + }, + "long_double_type": { + "alignof": 16, + "sizeof": 16 + }, + "long_long_type": { + "alignof": 8, + "sizeof": 8 + }, + "long_type": { + "alignof": 8, + "sizeof": 8 + }, + "pointer_type": { + "alignof": 8, + "sizeof": 8 + }, + "ptrdiff_t_type": "signed long", + "short_type": { + "alignof": 2, + "sizeof": 2 + }, + "size_t_type": "unsigned long", + "wchar_t_type": "signed int", + "wint_t_type": "unsigned int" + } + } + }, + "_Format": "1.0", + "_Version": "7.5.0", + "_VersionNum": [ + 7, + 5, + 0, + 11376 + ] +} + diff --git a/coin/provisioning/common/linux/axivion/post_processing.py b/coin/provisioning/common/linux/axivion/post_processing.py new file mode 100644 index 00000000000..53f7223bdf4 --- /dev/null +++ b/coin/provisioning/common/linux/axivion/post_processing.py @@ -0,0 +1,34 @@ +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +import re + +import axivion.config +from axivion.analysis.post_processing import FilterAction +from bauhaus import ir + +analysis = axivion.config.get_analysis() + +qt_inline_pattern = re.compile(r"QT_.*_INLINE(_IMPL)?_SINCE\(\d+,\d+\)") +def exclude_inlined_by_qt_inline_macro(sv, ir_graph): + node = ir_graph.get_node(ir.Physical, sv.primary_sloc.pir_node_number) + + # we have to check on the token stream as the macro might expand to nothing + # -> only the invocation is in the IR, but not in the AST of the routine decl / def + preceeding_string = "" + + token = node.Token + while True: + try: + token_value = re.sub('^#\\s+', '#', token.Value) + if token_value in {';', '{', '}', '#define'}: + break + preceeding_string = token.Value + preceeding_string + token = token.prev() + except StopIteration: + break + if re.match(qt_inline_pattern, preceeding_string): + return FilterAction.exclude + return FilterAction.normal + +analysis['Qt-Generic-NoFunctionDefinitionInHeader'].post_processing.add_filter(exclude_inlined_by_qt_inline_macro, inputs=[ir.Graph]) diff --git a/coin/provisioning/common/linux/axivion/rule_config.json b/coin/provisioning/common/linux/axivion/rule_config.json new file mode 100644 index 00000000000..bc6505e4cb2 --- /dev/null +++ b/coin/provisioning/common/linux/axivion/rule_config.json @@ -0,0 +1,210 @@ +{ + "Analysis": { + "CloneDetection": { + "_active": true, + "excludes": [ + "$(splitpath:EXCLUDE_FILES)" + ] + }, + "Frameworks-QtSupport": { + "_active": true, + "exclude_qt_generated_files": true, + "qtdir": "/home/qt/work/install" + }, + "Qt-AutoUnexpectedQStringbuilder": { + "_active": true + }, + "Qt-BaseClassEvent": { + "_active": true + }, + "Qt-ChildEventQObjectCast": { + "_active": true + }, + "Qt-Connect3argLambda": { + "_active": true + }, + "Qt-ConnectByName": { + "_active": true + }, + "Qt-ConnectNonSignal": { + "_active": true + }, + "Qt-ConstSignalOrSlot": { + "_active": true + }, + "Qt-CtorMissingParentArgument": { + "_active": true + }, + "Qt-DetachingTemporary": { + "_active": true + }, + "Qt-FullyQualifiedMocTypes": { + "_active": true + }, + "Qt-FunctionArgsByValueRef": { + "_active": true + }, + "Qt-Generic-DuplicateIncludeGuard": { + "_active": true + }, + "Qt-Generic-FormatSpecifier": { + "_active": true + }, + "Qt-Generic-InitializeAllFieldsInConstructor": { + "_active": true + }, + "Qt-Generic-MissingBaseCopy": { + "_active": true + }, + "Qt-Generic-MissingIncludeGuard": { + "_active": true + }, + "Qt-Generic-NoAbsoluteInclude": { + "_active": true + }, + "Qt-Generic-NoFunctionDefinitionInHeader": { + "_active": true + }, + "Qt-Generic-NoIrregularInclude": { + "_active": true + }, + "Qt-Generic-NoMixOfClassStruct": { + "_active": true + }, + "Qt-Generic-NoOverloadedOperators": { + "_active": true + }, + "Qt-Generic-NoReferenceToLocalVariable": { + "_active": true + }, + "Qt-Generic-QNetworkReplyDeleteLater": { + "_active": true + }, + "Qt-Generic-ThrowByValueCatchByReference": { + "_active": true + }, + "Qt-Generic-TypedefCheck": { + "_active": true + }, + "Qt-Generic-WrongIncludeCasing": { + "_active": true + }, + "Qt-GlobalConstCharPointer": { + "_active": true + }, + "Qt-IncorrectEmit": { + "_active": true + }, + "Qt-InstallEventFilter": { + "_active": true + }, + "Qt-LambdaInConnect": { + "_active": true + }, + "Qt-LambdaUniqueConnection": { + "_active": true + }, + "Qt-LowercaseQmlTypeName": { + "_active": true + }, + "Qt-MissingQObjectMacro": { + "_active": true + }, + "Qt-MutableContainerKey": { + "_active": true + }, + "Qt-NonPodGlobalStatic": { + "_active": true + }, + "Qt-OldStyleConnect": { + "_active": true + }, + "Qt-OverloadedSignal": { + "_active": true + }, + "Qt-OverriddenSignal": { + "_active": true + }, + "Qt-PostEvent": { + "_active": true + }, + "Qt-QDateTimeUTC": { + "_active": true + }, + "Qt-QEnums": { + "_active": true + }, + "Qt-QLatin1StringNonAscii": { + "_active": true + }, + "Qt-QMapWithPointerKey": { + "_active": true + }, + "Qt-QPropertyWithoutNotify": { + "_active": true + }, + "Qt-QStringArg": { + "_active": true + }, + "Qt-QStringComparisonToImplicitChar": { + "_active": true + }, + "Qt-QhashNamespace": { + "_active": true + }, + "Qt-QtMacros": { + "_active": true + }, + "Qt-RangeLoopDetach": { + "_active": false + }, + "Qt-RangeLoopReference": { + "_active": true + }, + "Qt-ReturningDataFromTemporary": { + "_active": true + }, + "Qt-RuleOfThree": { + "_active": true + }, + "Qt-RuleOfTwoSoft": { + "_active": true + }, + "Qt-SkippedBaseMethod": { + "_active": true + }, + "Qt-StrictIterators": { + "_active": true + }, + "Qt-TemporaryIterator": { + "_active": true + }, + "Qt-UnusedNonTrivialVariable": { + "_active": true + }, + "Qt-VirtualSignal": { + "_active": true + }, + "Qt-WritingToTemporary": { + "_active": true + }, + "Qt-WrongQEventCast": { + "_active": true + }, + "Qt-WrongQGlobalStatic": { + "_active": true + }, + "Stylechecks": { + "excludes": [ + "$(splitpath:EXCLUDE_FILES)" + ] + } + }, + "_Format": "1.0", + "_VersionNum": [ + 7, + 8, + 0, + 15004 + ] +} diff --git a/coin/provisioning/common/linux/axivion/start_analysis.sh b/coin/provisioning/common/linux/axivion/start_analysis.sh new file mode 100755 index 00000000000..b5becfa9809 --- /dev/null +++ b/coin/provisioning/common/linux/axivion/start_analysis.sh @@ -0,0 +1,13 @@ +#!/bin/bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +$HOME/bauhaus-suite/setup.sh --non-interactive +export PATH=/home/qt/bauhaus-suite/bin:$PATH +export BAUHAUS_CONFIG=$(cd $(dirname $(readlink -f $0)) && pwd) +export AXIVION_VERSION_NAME=$(git rev-parse HEAD) +export EXCLUDE_FILES="build/*:src/3rdparty/*" +export MODULE=$TESTED_MODULE_COIN +export PACKAGE="Add-ons" +export IRNAME=build/$TESTED_MODULE_COIN.ir +axivion_ci "$@" diff --git a/coin/provisioning/common/linux/cmake_linux.sh b/coin/provisioning/common/linux/cmake_linux.sh index 5fadad249f3..dccd0b1a497 100755 --- a/coin/provisioning/common/linux/cmake_linux.sh +++ b/coin/provisioning/common/linux/cmake_linux.sh @@ -11,11 +11,11 @@ source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -majorminorversion="3.27" -version="3.27.7" +majorminorversion="3.30" +version="3.30.5" PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/cmake/cmake-$version-linux-x86_64.tar.gz" AltUrl="https://cmake.org/files/v$majorminorversion/cmake-$version-linux-x86_64.tar.gz" -SHA1="83ab00c8432a71cfc81e933ee7b3c3e14d50ad6f" +SHA1="61b339cac5f110d5ed2934f66a26c2e991945e01" targetFolder="/opt/cmake-$version" appPrefix="cmake-$version-linux-x86_64" diff --git a/coin/provisioning/common/linux/fix-bwrap-apparmor.sh b/coin/provisioning/common/linux/fix-bwrap-apparmor.sh new file mode 100644 index 00000000000..33e05b13048 --- /dev/null +++ b/coin/provisioning/common/linux/fix-bwrap-apparmor.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# See https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces +# and https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/2046844/comments/89 +sudo bash -c 'cat > /etc/apparmor.d/bwrap' << EOF +# This profile allows everything and only exists to give the +# application a name instead of having the label "unconfined" + +abi , +include + +profile bwrap /usr/bin/bwrap flags=(unconfined) { + userns, + + # Site-specific additions and overrides. See local/README for details. + include if exists +} +EOF + +sudo apparmor_parser -r /etc/apparmor.d/bwrap diff --git a/coin/provisioning/common/linux/install-dummy-alsa-device.sh b/coin/provisioning/common/linux/install-dummy-alsa-device.sh new file mode 100644 index 00000000000..b131021a8f9 --- /dev/null +++ b/coin/provisioning/common/linux/install-dummy-alsa-device.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +systemd_folder=/etc/systemd/system +systemd_file=dummysound.service +script_folder=/home/qt/bin +script_file=dummy_sound.sh + +# Ensure that script folder exists +if [ ! -d ${script_folder} ]; then + sudo mkdir ${script_folder} + sudo chmod 750 ${script_folder} +fi + + +# Create script to install dummy sound driver, +# in case no other sound driver is installed. +sudo tee "${script_folder}/${script_file}" <<"EOF" +# Check for existing sound driver +if lsmod | grep -q -i snd-dummy +then + echo "(**) Dummy sound driver already loaded. Nothing to do."; + exit 0; +fi + +# load dummy sound module +sudo modprobe snd-dummy + +# Check result +if lsmod | grep -q snd_dummy +then + echo "(**) Dummy sound driver loaded."; +else + echo "(EE) Failed to load dummy sound driver."; + exit 1; +fi +EOF + +# set permissions +sudo chmod 750 "${script_folder}/${script_file}" + +# Create service file +sudo tee "${systemd_folder}/${systemd_file}" <<"EOF" +# /etc/systemd/system/dummysound.service +# + +[Unit] +Description=Install dummy sound driver + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "/home/qt/bin/dummy_sound.sh" + +[Install] +WantedBy=multi-user.target +EOF + +# Start servive and output result, just for logging +sudo systemctl start dummysound.service +# status commented out, returns 3 on VM. +# sudo systemctl status dummysound.service + +# enable service +sudo systemctl enable dummysound.service diff --git a/coin/provisioning/common/linux/install-golang.sh b/coin/provisioning/common/linux/install-golang.sh new file mode 100755 index 00000000000..1f0f272ec2e --- /dev/null +++ b/coin/provisioning/common/linux/install-golang.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +# This script will install go 1.22.4 +version="1.22.4" + +uname_m="$(uname -m)" +case "$uname_m" in + x86_64|amd64) + sha256="ba79d4526102575196273416239cca418a651e049c2b099f3159db85e7bade7d" + pkgname="go$version.linux-amd64.tar.gz" + dirname="go$version.linux-amd64" + ;; + arm64|aarch64) + sha256="a8e177c354d2e4a1b61020aca3562e27ea3e8f8247eca3170e3fa1e0c2f9e771" + pkgname="go$version.linux-arm64.tar.gz" + dirname="go$version.linux-arm64" + ;; + *) fatal "Unknown architecture in uname: $uname_m" 43 ;; +esac + +internalUrl="http://ci-files01-hki.ci.qt.io/input/go/linux/$pkgname" +externalUrl="https://go.dev/dl/$pkgname" + +targetFile="$HOME/$pkgname" +DownloadURL "$internalUrl" "$externalUrl" "$sha256" "$targetFile" +echo "Installing Go" +tar -xzf "$targetFile" -C "$HOME" +rm "$targetFile" + +installPrefix="/opt/$dirname" +sudo mv "$HOME/go" "$installPrefix" + +SetEnvVar "PATH" "$installPrefix/bin:\$PATH" + +echo "Go = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/install-ninja.sh b/coin/provisioning/common/linux/install-ninja.sh new file mode 100755 index 00000000000..b89fc9da5b0 --- /dev/null +++ b/coin/provisioning/common/linux/install-ninja.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +# This script will install ninja +version="1.12.1" + +uname_m="$(uname -m)" +case "$uname_m" in + x86_64|amd64) + sha256="6f98805688d19672bd699fbbfa2c2cf0fc054ac3df1f0e6a47664d963d530255" + pkgname="ninja-$version-linux-x64.zip" + dirname="ninja-$version-linux-x64" + ;; + arm64|aarch64) + sha256="5c25c6570b0155e95fce5918cb95f1ad9870df5768653afe128db822301a05a1" + pkgname="ninja-$version-linux-arm64.zip" + dirname="ninja-$version-linux-arm64" + ;; + *) fatal "Unknown architecture in uname: $uname_m" 43 ;; +esac + +internalUrl="http://ci-files01-hki.ci.qt.io/input/ninja/$pkgname" +externalUrl="https://github.com/ninja-build/ninja/releases/download/v$version/$pkgname" + +targetFile="$HOME/$pkgname" +DownloadURL "$internalUrl" "$externalUrl" "$sha256" "$targetFile" +echo "Installing ninja ${version}" +sudo unzip -o -q ${targetFile} -d "${HOME}/${dirname}" +rm "$targetFile" + +installPrefix="/opt/$dirname" +sudo mv "$HOME/$dirname" "$installPrefix" + +SetEnvVar "PATH" "$installPrefix:\$PATH" + +echo "ninja = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/install-upx.sh b/coin/provisioning/common/linux/install-upx.sh new file mode 100755 index 00000000000..8659bf193be --- /dev/null +++ b/coin/provisioning/common/linux/install-upx.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +# This script will install UPX 4.2.4 +version="4.2.4" + +uname_m="$(uname -m)" +case "$uname_m" in + x86_64|amd64) + sha256="75cab4e57ab72fb4585ee45ff36388d280c7afd72aa03e8d4b9c3cbddb474193" + pkgname="upx-$version-amd64_linux.tar.xz" + dirname="upx-$version-amd64_linux" + ;; + arm64|aarch64) + sha256="6bfeae6714e34a82e63245289888719c41fd6af29f749a44ae3d3d166ba6a1c9" + pkgname="upx-$version-arm64_linux.tar.xz" + dirname="upx-$version-arm64_linux" + ;; + *) fatal "Unknown architecture in uname: $uname_m" 43 ;; +esac + +internalUrl="http://ci-files01-hki.ci.qt.io/input/upx/linux/$pkgname" +externalUrl="https://github.com/upx/upx/releases/download/v$version/$pkgname" + +targetFile="$HOME/$pkgname" +DownloadURL "$internalUrl" "$externalUrl" "$sha256" "$targetFile" +echo "Installing UPX" +tar -xJf "$targetFile" -C "$HOME" +rm "$targetFile" + +installPrefix="/opt/$dirname" +sudo mv "$HOME/$dirname" "$installPrefix" + +SetEnvVar "PATH" "$installPrefix:\$PATH" + +echo "UPX = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/install-vivid-camera.sh b/coin/provisioning/common/linux/install-vivid-camera.sh new file mode 100755 index 00000000000..1cf29b2c325 --- /dev/null +++ b/coin/provisioning/common/linux/install-vivid-camera.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +systemd_folder=/etc/systemd/system +systemd_file=vivid.service +script_folder=/home/qt/bin +script_file=vivid.sh + +# Ensure that script folder exists +if [ ! -d ${script_folder} ]; then + sudo mkdir ${script_folder} + sudo chmod 750 ${script_folder} +fi + +# Create script to install virtual video test driver module +sudo tee "${script_folder}/${script_file}" <<"EOF" +# load vivid +sudo modprobe vivid n_devs=2 # create two video devices + +# Check result +if lsmod | grep -q vivid +then + echo "(**) Virtual video test driver vivid installed."; +else + echo "(EE) Failed to load vivid driver."; + exit 1; +fi +EOF + +# set permissions +sudo chmod 750 "${script_folder}/${script_file}" + +# Create service file +sudo tee "${systemd_folder}/${systemd_file}" <<"EOF" +# /etc/systemd/system/vivid.service +# + +[Unit] +Description=Install virtual video test driver (vivid) + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "/home/qt/bin/vivid.sh" + +[Install] +WantedBy=multi-user.target +EOF + +# Start service and output result, just for logging +sudo systemctl start vivid.service + +# enable service +sudo systemctl enable vivid.service diff --git a/coin/provisioning/common/linux/sccache.sh b/coin/provisioning/common/linux/sccache.sh index 5e4969b3ad6..b7e60187b7b 100755 --- a/coin/provisioning/common/linux/sccache.sh +++ b/coin/provisioning/common/linux/sccache.sh @@ -6,7 +6,14 @@ set -ex source "${BASH_SOURCE%/*}/../unix/sccache.sh" -targetArch=x86_64-unknown-linux-musl targetVersion=0.2.14 -sha1=281680c0fc2c09173e94d12ba45d9f1b8e62e5b3 + +if [[ $(uname -m) == 'aarch64' ]]; then + targetArch=aarch64-unknown-linux-musl + sha1=0f9b57c423d77f7aa89bb642864ac7689d84d6a0 +else + targetArch=x86_64-unknown-linux-musl + sha1=281680c0fc2c09173e94d12ba45d9f1b8e62e5b3 +fi + installSccache "$targetArch" "$targetVersion" "$sha1" diff --git a/coin/provisioning/common/macos/android.sh b/coin/provisioning/common/macos/android.sh index b7dc953f8f3..57671748a97 100755 --- a/coin/provisioning/common/macos/android.sh +++ b/coin/provisioning/common/macos/android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersionLatest="r26b" +ndkVersionLatest="r27c" ndkVersionDefault="$ndkVersionLatest" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" diff --git a/coin/provisioning/common/macos/cmake.sh b/coin/provisioning/common/macos/cmake.sh index b9ff8dfbfc5..3c4ef84783f 100755 --- a/coin/provisioning/common/macos/cmake.sh +++ b/coin/provisioning/common/macos/cmake.sh @@ -11,11 +11,11 @@ source "${BASH_SOURCE%/*}/InstallAppFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -majorminorversion="3.27.7" -version="3.27.7" +majorminorversion="3.30.5" +version="3.30.5" PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/cmake/cmake-$version-macos-universal.tar.gz" AltUrl="https://cmake.org/files/v$majorminorversion/cmake-$version-macos-universal.tar.gz" -SHA1="75153b6c7a418bc7120c6217d4698c7d245d00e0" +SHA1="c81c2f7482a901c4a32a81034920c23c22233a0f" appPrefix="cmake-$version-macos-universal" InstallAppFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$appPrefix" diff --git a/coin/provisioning/common/macos/disable_spotlight.sh b/coin/provisioning/common/macos/disable_spotlight.sh index a404d3e738d..b4907ca0d65 100755 --- a/coin/provisioning/common/macos/disable_spotlight.sh +++ b/coin/provisioning/common/macos/disable_spotlight.sh @@ -2,10 +2,29 @@ # Copyright (C) 2017 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# Disable spotlight and and stop indexing -sudo mdutil -a -i off -sudo mdutil -a -i off / -# Disable spotlight indexing /Volumes -sudo mdutil -i off /Volumes -# Erase spotlight index -sudo mdutil -E / +disableSpotlight() { + # Disable spotlight and and stop indexing + sudo mdutil -a -i off + sudo mdutil -a -i off / + # Disable spotlight indexing /Volumes + sudo mdutil -i off /Volumes + # Erase spotlight index + sudo mdutil -E / +} + +# Disabling spotlight tends to be flaky, add some retry +for i in $(seq 1 5) +do + disableSpotlight + res=$? + if [[ $res -eq 0 ]] + then + echo "Spotlight disabled" + break + else + echo "Failed to disable spotlight, $i retry..." + sleep 2 + fi +done + +exit $res diff --git a/coin/provisioning/common/macos/enable_vnc.sh b/coin/provisioning/common/macos/enable_vnc.sh new file mode 100755 index 00000000000..b5aaff6ca97 --- /dev/null +++ b/coin/provisioning/common/macos/enable_vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. + +# This script enables remote management vnc +set -ex + +sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes diff --git a/coin/provisioning/common/macos/install-simulator-runtime.sh b/coin/provisioning/common/macos/install-simulator-runtime.sh new file mode 100755 index 00000000000..b3d6981339e --- /dev/null +++ b/coin/provisioning/common/macos/install-simulator-runtime.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +set -ex + +function InstallSimulatorRuntime { + url=$1 + url_alt=$2 + expectedSha1=$3 + packageName=$4 + version=$5 + + DownloadURL "$url" "$url_alt" "$expectedSha1" "/tmp/$packageName" + echo "Installing" + # macOS 14 / Xcode 15 has a different install command + if [[ $OSTYPE == "darwin23" ]]; then + xcrun simctl runtime add "/tmp/$packageName" + else + xcodebuild -importPlatform "/tmp/$packageName" + fi + + echo "Simulator Runtime = $version" >> ~/versions.txt +} diff --git a/coin/provisioning/common/macos/java.sh b/coin/provisioning/common/macos/java.sh index 1429f82410b..829b94c61da 100755 --- a/coin/provisioning/common/macos/java.sh +++ b/coin/provisioning/common/macos/java.sh @@ -1,17 +1,20 @@ #!/usr/bin/env bash -# Copyright (C) 2021 The Qt Company Ltd. +# Copyright (C) 2024 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # This script installs JDK set -ex +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" + echo "Installing Java Development Kit" -version=11.0.12 -targetFile=jdk-${version}_osx-x64_bin.dmg +version=17.0.12 +targetFile=jdk-${version}_macos-x64_bin.dmg +expectedHash="6fba2fbe5d181bd2ef7fd79e0335278c13f611cb" url=ci-files01-hki.ci.qt.io:/hdd/www/input/mac -# url_alt=https://www.oracle.com/java/technologies/downloads/#java11-linux +# url_alt=https://www.oracle.com/java/technologies/downloads/#jdk17-mac echo "Mounting $targetFile" sudo mkdir -p /Volumes/files @@ -19,6 +22,8 @@ sudo mount -o locallocks "$url" /Volumes/files sudo cp "/Volumes/files/$targetFile" /tmp sudo umount /Volumes/files +cd /tmp +VerifyHash "$targetFile" "$expectedHash" sudo hdiutil attach "/tmp/$targetFile" echo Installing JDK diff --git a/coin/provisioning/common/macos/java_arm.sh b/coin/provisioning/common/macos/java_arm.sh index 1c4b1ed10f5..2957d81a86b 100755 --- a/coin/provisioning/common/macos/java_arm.sh +++ b/coin/provisioning/common/macos/java_arm.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (C) 2021 The Qt Company Ltd. +# Copyright (C) 2024 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # This script installs JDK @@ -8,10 +8,10 @@ set -ex echo "Installing Java Development Kit" -targetFile=zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.dmg +targetFile=zulu17.54.21-ca-jdk17.0.13-macosx_aarch64.dmg url=ci-files01-hki.ci.qt.io:/hdd/www/input/mac -# url_alt=https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.dmg +# url_alt=https://cdn.azul.com/zulu/bin/zulu17.54.21-ca-jdk17.0.13-macosx_aarch64.dmg echo "Mounting $targetFile" sudo mkdir -p /Volumes/files @@ -22,12 +22,12 @@ sudo umount /Volumes/files sudo hdiutil attach "/tmp/$targetFile" echo Installing JDK -cd /Volumes/Zulu\ OpenJDK\ 15.29+15 && sudo installer -pkg Double-Click\ to\ Install\ Zulu\ 15.pkg -target / +cd /Volumes/Azul\ Zulu\ JDK\ 17.54+21 && sudo installer -pkg Double-Click\ to\ Install\ Azul\ Zulu\ JDK\ 17.pkg -target / echo "Unmounting $targetFile" -sudo hdiutil unmount /Volumes/Zulu\ OpenJDK\ 15.29+15 -force +sudo hdiutil unmount /Volumes/Azul\ Zulu\ JDK\ 17.54+21 -force echo "Disable auto update" sudo defaults write /Library/Preferences/com.oracle.java.Java-Updater JavaAutoUpdateEnabled -bool false -echo "JDK Version = 15.0.2" >> ~/versions.txt +echo "JDK Version = 17.0.13" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/libiodbc.sh b/coin/provisioning/common/macos/libiodbc.sh index 059758c8a22..e33ce98ce03 100755 --- a/coin/provisioning/common/macos/libiodbc.sh +++ b/coin/provisioning/common/macos/libiodbc.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (C) 2018 The Qt Company Ltd. +# Copyright (C) 2025 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # Install libiodbc @@ -11,12 +11,9 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" brew install --formula "${BASH_SOURCE%/*}/libiodbc.rb" "$@" -# CPLUS_INCLUDE_PATH is set so clang and configure can find libiodbc - read -r -a arr <<< "$(brew list --versions libiodbc)" version=${arr[1]} -SetEnvVar "CPLUS_INCLUDE_PATH" "/usr/local/Cellar/libiodbc/$version/include${CPLUS_INCLUDE_PATH:+:}${CPLUS_INCLUDE_PATH}" -SetEnvVar "LIBRARY_PATH" "/usr/local/Cellar/libiodbc/$version/lib${LIBRARY_PATH:+:}${LIBRARY_PATH}" +SetEnvVar "ODBC_ROOT" "$(brew --prefix libiodbc)" echo "libiodbc = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/mimersql.sh b/coin/provisioning/common/macos/mimersql.sh index 10ee1dc5a83..e1f232e040e 100755 --- a/coin/provisioning/common/macos/mimersql.sh +++ b/coin/provisioning/common/macos/mimersql.sh @@ -12,20 +12,11 @@ os="$1" source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" -mimerSqlVersion="11.0.7G" -if [ "$os" = "macos" ]; then - arch=$(uname -m) - if [ "$arch" = "x86_64" ]; then - mimerSqlPackageName="mimersql-110_x86_64.tgz" - SHA1="d748f87b72e7188c527f131db2590f552f18f544" - else - mimerSqlPackageName="mimersql-110_arm64.tgz" - SHA1="f209c97074d096e50e637441073e8aa355c5116e" - fi -else - mimerSqlPackageName="mimersql-110_universal.tgz" - SHA1="eab32be623f1cbde7c29cea0f0ca4332b8ca502b" -fi +mimerSqlVersion="11.0.8E" + +mimerSqlPackageName="mimersql-1108E_universal.tgz" +SHA1="8077db02be2b54147eb4a48ce4a7a2ff1159fb4d" + PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/$mimerSqlPackageName" AltUrl="https://install.mimer.com/qt/macOS/$mimerSqlPackageName" diff --git a/coin/provisioning/common/macos/postgresql.sh b/coin/provisioning/common/macos/postgresql.sh index 8980d28eccf..e146b018fec 100755 --- a/coin/provisioning/common/macos/postgresql.sh +++ b/coin/provisioning/common/macos/postgresql.sh @@ -37,5 +37,5 @@ umount "$mountpoint" echo "Removing $packageName" rm "/tmp/$packageName" -SetEnvVar "POSTGRESQLBINPATH" "/Applications/Postgres.app/Contents/Versions/$psqlVersion/bin" +SetEnvVar "PostgreSQL_ROOT" "/Applications/Postgres.app/Contents/Versions/$psqlVersion" echo "PostgreSQL = $psqlVersion ($psqlAppVersion)" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/python3.sh b/coin/provisioning/common/macos/python3.sh index 925a4925f14..247c6b82987 100755 --- a/coin/provisioning/common/macos/python3.sh +++ b/coin/provisioning/common/macos/python3.sh @@ -26,9 +26,11 @@ echo "Configure pip" /Library/Frameworks/Python.framework/Versions/3.9/bin/pip config --user set global.extra-index-url https://pypi.org/simple/ /Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 install virtualenv wheel html5lib +/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 install -r ${BASH_SOURCE%/*}/../shared/sbom_requirements.txt SetEnvVar "PYTHON3_PATH" "/Library/Frameworks/Python.framework/Versions/3.9/bin" SetEnvVar "PIP3_PATH" "/Library/Frameworks/Python.framework/Versions/3.9/bin" +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Library/Frameworks/Python.framework/Versions/3.9/bin" # Install Python certificates. Required at least for emsdk installation open /Applications/Python\ 3.9/Install\ Certificates.command diff --git a/coin/provisioning/common/macos/sccache.sh b/coin/provisioning/common/macos/sccache.sh index 85c4aee294b..7896edb6601 100755 --- a/coin/provisioning/common/macos/sccache.sh +++ b/coin/provisioning/common/macos/sccache.sh @@ -6,7 +6,12 @@ set -ex source "${BASH_SOURCE%/*}/../unix/sccache.sh" -targetArch=x86_64-apple-darwin targetVersion=0.2.14 -sha1=764bc1664c0ff616d9980a6d127175d0a2041781 +if [[ `arch` == arm* ]]; then + targetArch=aarch64-apple-darwin + sha1=ad10cd4b8889fa08e193a4165ac664876a27c0dc +else + targetArch=x86_64-apple-darwin + sha1=764bc1664c0ff616d9980a6d127175d0a2041781 +fi installSccache "$targetArch" "$targetVersion" "$sha1" diff --git a/coin/provisioning/common/macos/set_tcc_permissions.sh b/coin/provisioning/common/macos/set_tcc_permissions.sh index d9fb222bd97..fa9994d5b35 100755 --- a/coin/provisioning/common/macos/set_tcc_permissions.sh +++ b/coin/provisioning/common/macos/set_tcc_permissions.sh @@ -2,30 +2,111 @@ #Copyright (C) 2024 The Qt Company Ltd #SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -TCC_DATABASE="$HOME/Library/Application Support/com.apple.TCC/TCC.db" -if touch "$TCC_DATABASE"; then - # We can write to the TCC database - BOOTSTRAP_AGENT="$HOME/bootstrap-agent" - REQ_STR=$(codesign -d -r- "$BOOTSTRAP_AGENT" 2>&1 | awk -F ' => ' '/designated/{print $2}') - REQ_HEX=$(echo "$REQ_STR" | csreq -r- -b >(xxd -p | tr -d '\n')) +set -e - # shellcheck disable=SC2043 - for service in kTCCServiceMicrophone; do - sqlite3 -echo "$TCC_DATABASE" <&2 + exit 1 + fi + + if [[ -d "$client" && "${client%/}" == *.app ]]; then + info_plist="$client/Contents/Info.plist" + executable=$(defaults read $info_plist CFBundleExecutable) + executable="$client/Contents/MacOS/$executable" + client=$(defaults read $info_plist CFBundleIdentifier) + client_type="0" # Bundle ID + elif [[ -x "$client" ]]; then + executable=$client + client_type="1" # Absolute path + else + echo "Unknown or missing TCC client type '$client'!" >&2 + exit 1 + fi + + local req_str=$(codesign -d -r- "$executable" 2>&1 | awk -F ' => ' '/designated/{print $2}') + local req_hex=$(echo "$req_str" | csreq -r- -b >(xxd -p | tr -d '\n')) + + sudo sqlite3 -echo "$tcc_database" <&2 - exit 1 -fi +done diff --git a/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake index 9a207b0edd3..d787d555126 100644 --- a/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake +++ b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake @@ -24,5 +24,6 @@ set(CMAKE_CXX_COMPILER q++) set(CMAKE_CXX_COMPILER_TARGET ${_qnx_toolchain_arch}) set(CMAKE_STRIP $ENV{QNX_HOST}/usr/bin/ntoaarch64-strip) +set(CMAKE_AR $ENV{QNX_HOST}/usr/bin/ntoaarch64-ar) set(CMAKE_SYSROOT $ENV{QNX_TARGET}) diff --git a/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake index 90bd97310be..d270530b815 100644 --- a/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake +++ b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake @@ -1,5 +1,5 @@ set(CMAKE_SYSTEM_NAME QNX) -set(CMALE_SYSTEM_PROCESSOR armv7le) +set(CMAKE_SYSTEM_PROCESSOR armle-v7) if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -24,5 +24,6 @@ set(CMAKE_CXX_COMPILER q++) set(CMAKE_CXX_COMPILER_TARGET ${_qnx_toolchain_arch}) set(CMAKE_STRIP $ENV{QNX_HOST}/usr/bin/ntoarmv7-strip) +set(CMAKE_AR $ENV{QNX_HOST}/usr/bin/ntoarmv7-ar) set(CMAKE_SYSROOT $ENV{QNX_TARGET}) diff --git a/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake index e11488bc991..a7bb7b5e1c4 100644 --- a/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake +++ b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake @@ -24,5 +24,6 @@ set(CMAKE_CXX_COMPILER q++) set(CMAKE_CXX_COMPILER_TARGET ${_qnx_toolchain_arch}) set(CMAKE_STRIP $ENV{QNX_HOST}/usr/bin/ntox86_64-strip) +set(CMAKE_AR $ENV{QNX_HOST}/usr/bin/ntox86_64-ar) set(CMAKE_SYSROOT $ENV{QNX_TARGET}) diff --git a/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh b/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh new file mode 100755 index 00000000000..f3972f07221 --- /dev/null +++ b/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -x + +lib_dir="$1/lib" +additional_suffix="${2:-}" +set_rpath="${3:-yes}" + +if [ "$(uname -s)" = "Darwin" ]; then + # Under Homebrew, binutils package is not symlinked into PATH. + # This lets us use readelf provided by Homebrew. + readelf() { "$(brew --prefix binutils)/bin/readelf" "$@"; } +fi + +ffmpeg_libs=("avcodec" "avdevice" "avfilter" "avformat" "avutil" "swresample" "swscale") + +for lib_name in "${ffmpeg_libs[@]}"; do + lib_path="$lib_dir/lib$lib_name.so" + pkg_config_file_path="$lib_dir/pkgconfig/lib$lib_name.pc" + + if [ ! -f "$lib_path" ]; then + echo "FFmpeg lib $lib_path hasn't been found" + exit 1 + fi + + if [ ! -f "$pkg_config_file_path" ]; then + echo "FFmpeg pc file $pkg_config_file_path hasn't been found" + exit 1 + fi + + while read -r line; do + if [[ $line =~ .*\[(lib((ssl|crypto|va|va-x11|va-drm)(_3)?\.so(\.[0-9]+)*))\].* ]]; then + stub_name="libQt6FFmpegStub-${BASH_REMATCH[2]}" + if [[ ${BASH_REMATCH[4]} == "_3" ]]; then + stub_name="${stub_name/_3/}" # Remove "_3" from stub_name + fi + if [[ -n "$additional_suffix" ]]; then + stub_name="${stub_name%%.*}${additional_suffix}.${stub_name#*.}" # Add additional_suffix + fi + patchelf --replace-needed "${BASH_REMATCH[1]}" "${stub_name}" $lib_path + fi + done <<< "$(readelf -d $lib_path | grep '(NEEDED)' )" + + sed -i.bak -E '/^Libs.private:/s/ -l(va|va-x11|va-drm|ssl|crypto)/ -lQt6FFmpegStub-\1/g;' $pkg_config_file_path && rm -f ${pkg_config_file_path}.bak + if [[ "$set_rpath" == "yes" ]]; then + patchelf --set-rpath '$ORIGIN' $lib_path + fi +done diff --git a/coin/provisioning/common/shared/sbom_requirements.txt b/coin/provisioning/common/shared/sbom_requirements.txt new file mode 100644 index 00000000000..8eaf1238c8b --- /dev/null +++ b/coin/provisioning/common/shared/sbom_requirements.txt @@ -0,0 +1,6 @@ +# Python packages used to validate and audit Qt SBOM informaiton +spdx-tools>=0.8.0 +ntia-conformance-checker +sbomaudit +sbom2doc +reuse diff --git a/coin/provisioning/common/unix/emsdk.sh b/coin/provisioning/common/unix/emsdk.sh index 580f966faa9..b85105b5594 100755 --- a/coin/provisioning/common/unix/emsdk.sh +++ b/coin/provisioning/common/unix/emsdk.sh @@ -8,15 +8,15 @@ source "${BASH_SOURCE%/*}/SetEnvVar.sh" # shellcheck source=./DownloadURL.sh source "${BASH_SOURCE%/*}/DownloadURL.sh" -version="3.1.50" +version="3.1.56" versionNode="v16.20.0" tarBallVersion="${version//./_}" if uname -a |grep -q Darwin; then tarBallPackage="emsdk_macos_${tarBallVersion}.tar.gz" - sha="c12169ec8d22fc7a9ef1ba98027435bdf3b72729" + sha="24c49db971da4fd7c68f6b71984c3d7775fdfb84" else tarBallPackage="emsdk_linux_${tarBallVersion}.tar.gz" - sha="5d81a8f1ddcb8d74c70ba5608efd4266c857944a" + sha="410c93bb2ab3b244190c2cb5f0ff1ce5d6ac4eb5" fi cacheUrl="https://ci-files01-hki.ci.qt.io/input/emsdk/$%7BtarBallPackage%7D" target="/tmp/${tarBallPackage}" diff --git a/coin/provisioning/common/unix/install-conan.sh b/coin/provisioning/common/unix/install-conan.sh index 8fc83090674..e48a5bdd8d0 100755 --- a/coin/provisioning/common/unix/install-conan.sh +++ b/coin/provisioning/common/unix/install-conan.sh @@ -9,9 +9,10 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" # Note! Python3 is required for Conan installation os="$1" +params="$2" # Install Conan to Python user install directory (typically ~./local/) -pip3 install conan --user +pip3 install conan --user $params SetEnvVar "CONAN_REVISIONS_ENABLED" "1" SetEnvVar "CONAN_V2_MODE" "1" diff --git a/coin/provisioning/common/unix/install-ffmpeg-android.sh b/coin/provisioning/common/unix/install-ffmpeg-android.sh index 05d0b681b22..66feaf2ee89 100755 --- a/coin/provisioning/common/unix/install-ffmpeg-android.sh +++ b/coin/provisioning/common/unix/install-ffmpeg-android.sh @@ -2,7 +2,7 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# This script will build and install FFmpeg static libs +# This script will build and install FFmpeg shared libs set -ex os="$1" @@ -11,9 +11,9 @@ source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -version="n6.1.1" +version="n7.1" url_public="https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$version.tar.gz" -sha1="59e0c3c4cc48e9c60073495f8c045329bb21f446" +sha1="f008a93710a7577e3f85a90f4b632cc615164712" url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" ffmpeg_name="FFmpeg-$version" @@ -30,28 +30,36 @@ build_ffmpeg_android() { target_arch=$1 target_dir=$2 + shared="${3:-no}" sudo mkdir -p "$target_dir" openssl_include="$OPENSSL_ANDROID_HOME_DEFAULT/include" openssl_libs="" + libs_prefix="" if [ "$target_arch" == "x86_64" ]; then target_toolchain_arch="x86_64-linux-android" target_arch=x86_64 target_cpu=x86-64 openssl_libs="$OPENSSL_ANDROID_HOME_DEFAULT/x86_64" + libs_prefix="_x86_64" elif [ "$target_arch" == "x86" ]; then target_toolchain_arch="i686-linux-android" target_arch=x86 target_cpu=i686 openssl_libs="$OPENSSL_ANDROID_HOME_DEFAULT/x86" + libs_prefix="_x86" elif [ "$target_arch" == "arm64" ]; then target_toolchain_arch="aarch64-linux-android" target_arch=aarch64 target_cpu=armv8-a openssl_libs="$OPENSSL_ANDROID_HOME_DEFAULT/arm64-v8a" + libs_prefix="_arm64-v8a" fi + ln -Ffs "${openssl_libs}/libcrypto_3.so" "${openssl_libs}/libcrypto.so" + ln -Ffs "${openssl_libs}/libssl_3.so" "${openssl_libs}/libssl.so" + api_version=24 ndk_root=$ANDROID_NDK_ROOT_DEFAULT @@ -71,6 +79,9 @@ build_ffmpeg_android() { ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt") ffmpeg_config_options+=" --enable-cross-compile --target-os=android --enable-jni --enable-mediacodec --enable-openssl --enable-pthreads --enable-neon --disable-asm --disable-indev=android_camera" + if [[ "$shared" == "yes" ]]; then + ffmpeg_config_options+=" --enable-shared --disable-static" + fi ffmpeg_config_options+=" --arch=$target_arch --cpu=${target_cpu} --sysroot=${sysroot} --sysinclude=${sysroot}/usr/include/" ffmpeg_config_options+=" --cc=${cc} --cxx=${cxx} --ar=${ar} --ranlib=${ranlib}" ffmpeg_config_options+=" --extra-cflags=-I${openssl_include} --extra-ldflags=-L${openssl_libs}" @@ -83,7 +94,16 @@ build_ffmpeg_android() { sudo "$ffmpeg_source_dir/configure" $ffmpeg_config_options --prefix="$target_dir" sudo make install -j4 + popd + + rm -f "${openssl_libs}/libcrypto.so" + rm -f "${openssl_libs}/libssl.so" + + if [[ "$shared" == "yes" ]]; then + fix_dependencies="${BASH_SOURCE%/*}/../shared/fix_ffmpeg_dependencies.sh" + sudo "${fix_dependencies}" "${target_dir}" "${libs_prefix}" "no" + fi } if [ "$os" == "android-x86" ]; then @@ -103,4 +123,4 @@ elif [ "$os" == "android-arm64" ]; then SetEnvVar "FFMPEG_DIR_ANDROID_ARM64" "$target_dir" fi -build_ffmpeg_android "$target_arch" "$target_dir" +build_ffmpeg_android "$target_arch" "$target_dir" "yes" diff --git a/coin/provisioning/common/unix/install-ffmpeg-ios.sh b/coin/provisioning/common/unix/install-ffmpeg-ios.sh index e2a401a5ac8..7eacb5c9a85 100755 --- a/coin/provisioning/common/unix/install-ffmpeg-ios.sh +++ b/coin/provisioning/common/unix/install-ffmpeg-ios.sh @@ -10,9 +10,9 @@ source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -version="n6.1.1" -sha1="59e0c3c4cc48e9c60073495f8c045329bb21f446" +version="n7.1" url_public="https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$version.tar.gz" +sha1="f008a93710a7577e3f85a90f4b632cc615164712" url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" ffmpeg_name="FFmpeg-$version" @@ -28,49 +28,180 @@ fi ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt") build_ffmpeg_ios() { - local target_arch=$1 - - if [ "$target_arch" == "x86_64" ]; then - target_sdk="iphonesimulator" - target_arch="x86_64" - minos="-mios-simulator-version-min=13.0" - else - target_sdk="iphoneos" - target_arch="arm64" - minos="-miphoneos-version-min=13.0" - fi - - local build_dir="$ffmpeg_source_dir/build_ios/$target_arch" - sudo mkdir -p "$build_dir" - pushd "$build_dir" - - # shellcheck disable=SC2086 - sudo "$ffmpeg_source_dir/configure" $ffmpeg_config_options \ + local target_platform=$1 + local target_cpu_arch="" + if [ "$target_platform" == "arm64-simulator" ]; then + target_sdk="iphonesimulator" + target_cpu_arch="arm64" + minos="-mios-simulator-version-min=16.0" + elif [ "$target_platform" == "x86_64-simulator" ]; then + target_sdk="iphonesimulator" + target_cpu_arch="x86_64" + minos="-mios-simulator-version-min=16.0" + elif [ "$target_platform" == "arm64-iphoneos" ]; then + target_sdk="iphoneos" + target_cpu_arch="arm64" + minos="-miphoneos-version-min=16.0" + else + echo "Error when building FFmpeg for iOS. Unknown parameter given for target_platform: '${target_platform}'" + exit 1 + fi + + local build_dir="$ffmpeg_source_dir/build_ios/$target_platform" + sudo mkdir -p "$build_dir" + pushd "$build_dir" + + # shellcheck disable=SC2086 + sudo "$ffmpeg_source_dir/configure" $ffmpeg_config_options \ --sysroot="$(xcrun --sdk "$target_sdk" --show-sdk-path)" \ - --enable-cross-compile \ - --enable-optimizations \ - --prefix=$prefix \ - --arch=$target_arch \ - --cc="xcrun --sdk ${target_sdk} clang -arch $target_arch" \ - --cxx="xcrun --sdk ${target_sdk} clang++ -arch $target_arch" \ - --ar="$(xcrun --sdk ${target_sdk} --find ar)" \ - --ranlib="$(xcrun --sdk ${target_sdk} --find ranlib)" \ - --strip="$(xcrun --sdk ${target_sdk} --find strip)" \ - --nm="$(xcrun --sdk ${target_sdk} --find nm)" \ - --target-os=darwin \ - --extra-cflags="$minos" \ - --extra-cxxflags="$minos" \ - --enable-cross-compile \ - --enable-swscale \ - --enable-pthreads \ - --disable-audiotoolbox - - sudo make install DESTDIR="$build_dir/installed" -j - popd + --enable-cross-compile \ + --enable-optimizations \ + --prefix=$prefix \ + --arch=$target_cpu_arch \ + --cc="xcrun --sdk ${target_sdk} clang -arch $target_cpu_arch" \ + --cxx="xcrun --sdk ${target_sdk} clang++ -arch $target_cpu_arch" \ + --target-os=darwin \ + --extra-ldflags="$minos" \ + --enable-cross-compile \ + --enable-shared \ + --disable-static \ + --install-name-dir='@rpath' \ + --disable-audiotoolbox + + sudo make install DESTDIR="$build_dir/installed" -j4 + popd } -build_ffmpeg_ios "x86_64" -build_ffmpeg_ios "arm64" -sudo "${BASH_SOURCE%/*}/../macos/makeuniversal.sh" "$ffmpeg_source_dir/build_ios/x86_64/installed" "$ffmpeg_source_dir/build_ios/arm64/installed" -SetEnvVar "FFMPEG_DIR_IOS" $prefix +install_ffmpeg() { + for dir in "$@"; do + echo "Processing files in $dir ..." + pushd "$dir" >/dev/null + find . -type l -name '*.*.dylib' | while read -r f; do + dst="${f:1}" + dstdir="$(dirname "$dst")" + sudo mkdir -p "$dstdir" + + if [[ ! -f "$dst" ]]; then + echo "/dev/null 2>&1; then + echo "Lipoing $dir/$f into $dst" + sudo lipo -create -output "$dst" "$dst" "$f" + elif ! diff "$f" "$dst"; then + echo "Error: File $f in $dir doesn't match destination $dst" + exit 1 + fi + done + echo "LS" + popd >/dev/null + done + sudo cp -r $1$prefix/include $prefix +} + +build_info_plist() { + local file_path="$1" + local framework_name="$2" + local framework_id="$3" + + local minimum_version_key="MinimumOSVersion" + local minimum_os_version="16.0" + local supported_platforms="iPhoneOS" + + # TODO: This should be filled out with the actual version of FFmpeg that we are + # deploying. + info_plist=" + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${framework_name} + CFBundleIdentifier + ${framework_id} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${framework_name} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 7.0.2 + CFBundleVersion + 7.0.2 + CFBundleSignature + ???? + ${minimum_version_key} + ${minimum_os_version} + CFBundleSupportedPlatforms + + ${supported_platforms} + + NSPrincipalClass + + +" + echo $info_plist | sudo tee ${file_path} 1>/dev/null +} + +create_framework() { + # Create a 'traditional' framework from the corresponding dylib. + local framework_name="$1" + local platform="$2" # For now it's either arm64 or arm64-simulator, see below. + local ffmpeg_library_path="$ffmpeg_source_dir/build_ios/${platform}/installed/usr/local/ios/ffmpeg" + local framework_complete_path="${ffmpeg_library_path}/framework/${framework_name}.framework/${framework_name}" + + sudo mkdir -p "${ffmpeg_library_path}/framework/${framework_name}.framework" + sudo cp "${ffmpeg_library_path}/lib/${framework_name}.dylib" "${ffmpeg_library_path}/framework/${framework_name}.framework/${framework_name}" + + # Fix LC_ID_DYLIB (to be libavcodec.framework/libavcodec instead of @rpath/libavcodec.xx.yy.dylib + sudo install_name_tool -id @rpath/${framework_name}.framework/${framework_name} "${framework_complete_path}" + build_info_plist "${ffmpeg_library_path}/framework/${framework_name}.framework/Info.plist" "${framework_name}" "io.qt.ffmpegkit."${framework_name} + + # Fix all FFmpeg-related LC_LOAD_DYLIB, similar to how we fixed LC_ID_DYLIB above: + otool -L "$framework_complete_path" | awk '/\t/ {print $1}' | egrep "$dylib_regex" | while read -r dependency_path; do + found_name=$(tmp=${dependency_path/*\/}; echo ${tmp/\.*}) + if [ "$found_name" != "$framework_name" ] + then + sudo install_name_tool -change "$dependency_path" @rpath/${found_name}.framework/${found_name} "${framework_complete_path}" + fi + done + #sudo mkdir -p "$prefix/framework/" + #sudo cp -r "${ffmpeg_library_path}/framework/${framework_name}.framework" "$prefix/framework/" +} + +create_xcframework() { + # Create 'traditional' framework from the corresponding dylib, + # also creating + local framework_name="$1" + local target_platform_a="$2" + local target_platform_b="$3" + + local fw_a="$ffmpeg_source_dir/build_ios/${target_platform_a}/installed/usr/local/ios/ffmpeg/framework/${framework_name}.framework" + local fw_b="$ffmpeg_source_dir/build_ios/${target_platform_b}/installed/usr/local/ios/ffmpeg/framework/${framework_name}.framework" + + sudo mkdir -p "$prefix/framework/" + sudo xcodebuild -create-xcframework -framework $fw_a -framework $fw_b -output "${prefix}/framework/${framework_name}.xcframework" +} + +build_ffmpeg_ios "x86_64-simulator" +build_ffmpeg_ios "arm64-iphoneos" + +ffmpeg_libs="libavcodec libavdevice libavfilter libavformat libavutil libswresample libswscale" + +for name in $ffmpeg_libs; do + create_framework $name "arm64-iphoneos" + create_framework $name "x86_64-simulator" +done + +# Create corresponding (xc)frameworks containing both arm64 and arm64-simulator frameworks: +for name in $ffmpeg_libs; do + create_xcframework $name "arm64-iphoneos" "x86_64-simulator" +done + +install_ffmpeg "$ffmpeg_source_dir/build_ios/arm64-iphoneos/installed" + +SetEnvVar "FFMPEG_DIR_IOS" $prefix diff --git a/coin/provisioning/common/unix/install-ffmpeg.sh b/coin/provisioning/common/unix/install-ffmpeg.sh index 94d032ed3ab..76912c83c44 100755 --- a/coin/provisioning/common/unix/install-ffmpeg.sh +++ b/coin/provisioning/common/unix/install-ffmpeg.sh @@ -5,15 +5,21 @@ # This script will build and install FFmpeg static libs set -ex os="$1" +build_type="$2" + +if [ ! -n "$build_type" ] && [ "$build_type" != "static" ] && [ "$build_type" != "shared" ]; then + >&2 echo "Invalid build_type: $build_type. The shared build type will be used." + build_type="shared" +fi # shellcheck source=../unix/InstallFromCompressedFileFromURL.sh source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -version="n6.1.1" -url_public="https://github.com/FFmpeg/FFmpeg/archive/$version.tar.gz" -sha1="59e0c3c4cc48e9c60073495f8c045329bb21f446" +version="n7.1" +url_public="https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$version.tar.gz" +sha1="f008a93710a7577e3f85a90f4b632cc615164712" url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" ffmpeg_name="FFmpeg-$version" @@ -27,6 +33,9 @@ then fi ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt") +if [ "$build_type" != "static" ]; then + ffmpeg_config_options+=" --enable-shared --disable-static" +fi install_ff_nvcodec_headers() { nv_codec_version="11.1" # use 11.1 to ensure compatibility with 470 nvidia drivers; might be upated to 12.0 @@ -46,6 +55,35 @@ install_ff_nvcodec_headers() { export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" } +fix_openssl3_pc_files() { + # On RHEL 8, openssl3 pc files are libopenssl3.pc, libssl3.pc, libcrypto3.pc, + # and FFmpeg cannot find them. Instead, it finds FFmpeg 1.x.x if it's installed. + # The function fixes the files with copying them to a custom directory + + local openssl3_pcfiledir=$(pkg-config --variable=pcfiledir openssl3) + if [ ! -n "$openssl3_pcfiledir" ]; then + return + fi + + local pcfiles=("libssl" "libcrypto" "openssl") + + for pcfile in ${pcfiles[@]}; do + if [ ! -f "$openssl3_pcfiledir/${pcfile}3.pc" ]; then + echo "pkgconfig has found openssl3 but the file $openssl3_pcfiledir/${pcfile}3.pc does't exist" + return + fi + done + + local new_pkgconfig_dir="$ffmpeg_source_dir/openssl3_pkgconfig" + mkdir -p $new_pkgconfig_dir + + for pcfile in ${pcfiles[@]}; do + sed -E '/^Requires(\.private)?:/s/ (libssl|libcrypto)3/ \1/g;' "$openssl3_pcfiledir/${pcfile}3.pc" > "$new_pkgconfig_dir/${pcfile}.pc" + done + + export PKG_CONFIG_PATH="$new_pkgconfig_dir:$PKG_CONFIG_PATH" +} + build_ffmpeg() { local arch="$1" local prefix="$2" @@ -74,13 +112,22 @@ if [ "$os" == "linux" ]; then install_ff_nvcodec_headers ffmpeg_config_options+=" --enable-openssl" + fix_openssl3_pc_files + echo "pkg-config openssl version: $(pkg-config --modversion openssl)" + build_ffmpeg - sudo mv "$ffmpeg_source_dir/build/installed/usr/local/$ffmpeg_name" "/usr/local" + + output_dir="$ffmpeg_source_dir/build/installed/usr/local/$ffmpeg_name" + + if [ "$build_type" != "static" ]; then + fix_dependencies="${BASH_SOURCE%/*}/../shared/fix_ffmpeg_dependencies.sh" + "$fix_dependencies" "$output_dir" + fi + + sudo mv "$output_dir" "/usr/local" SetEnvVar "FFMPEG_DIR" "/usr/local/$ffmpeg_name" elif [ "$os" == "macos" ] || [ "$os" == "macos-universal" ]; then - ffmpeg_config_options+=" --enable-shared --disable-static" - brew install yasm export MACOSX_DEPLOYMENT_TARGET=12 fix_relative_dependencies="${BASH_SOURCE%/*}/../macos/fix_relative_dependencies.sh" @@ -111,3 +158,5 @@ elif [ "$os" == "macos" ] || [ "$os" == "macos-universal" ]; then SetEnvVar "FFMPEG_DIR" "/usr/local/$ffmpeg_name" fi + + diff --git a/coin/provisioning/common/unix/install-patchelf.sh b/coin/provisioning/common/unix/install-patchelf.sh new file mode 100755 index 00000000000..3779478a935 --- /dev/null +++ b/coin/provisioning/common/unix/install-patchelf.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + + +source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" +patchelf_version="0.17.2" + +url_cached="https://ci-files01-hki.ci.qt.io/input/android/patchelf/$patchelf_version.tar.gz" +url_public="https://github.com/NixOS/patchelf/archive/refs/tags/$patchelf_version.tar.gz" +sha1="ddd46a2e2a16a308245c008721d877455b23bba8" + +target_source_dir="$HOME/patchelf-$patchelf_version" + +if [ ! -d "$target_source_dir" ]; then + InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$HOME" "" +fi + +pushd "$target_source_dir" + +./bootstrap.sh +./configure +make +sudo make install + +popd diff --git a/coin/provisioning/common/unix/libclang.sh b/coin/provisioning/common/unix/libclang.sh index 5f75d7e4f6e..b720fcf7c3c 100755 --- a/coin/provisioning/common/unix/libclang.sh +++ b/coin/provisioning/common/unix/libclang.sh @@ -20,33 +20,38 @@ PROVISIONING_DIR="$(dirname "$0")/../../" # shellcheck source=./common.sourced.sh source "$PROVISIONING_DIR"/common/unix/common.sourced.sh -libclang_version="15.0.0" +libclang_version="18.1.7" if uname -a |grep -q Darwin; then version=$libclang_version url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-mac.7z" url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-mac.7z" - sha1="6d916a17459c81551dde47580ae3f071e93338a5" -elif test -f /etc/redhat-release && grep "Red Hat" /etc/redhat-release | grep -v "8" ; then + sha1="9ea511576645ef4abee6d4c27550406e929334d5" +elif test -f /etc/redhat-release && grep "Red Hat" /etc/redhat-release | grep "9" ; then version=$libclang_version - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Rhel8.4-gcc10.0-x86_64.7z" - url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Rhel8.4-gcc10.0-x86_64.7z" - sha1="6ca035bb522022d34d61759e0460845832933b5c" -elif [ "$PROVISIONING_OS_ID" = ubuntu ]; then - version=$libclang_version - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu22.04-gcc11.2-x86_64.7z" - url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu22.04-gcc11.2-x86_64.7z" - sha1="dd170ec762a7ec8ac84b4b5cac3a422514e5b030" -elif [ "$PROVISIONING_OS_ID" = debian ]; then - version=17.0.1 - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Debian11.6-gcc10.0-arm64.7z" - url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Debian11.6-gcc10.0-arm64.7z" - sha1="43f0210121b889107e3dab631e8104e661a3866b" + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Rhel9.2-gcc10.0-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Rhel9.2-gcc10.0-x86_64.7z" + sha1="32c29d8df726b035e0a97e767c5c3e392aa331e1" +elif test "$PROVISIONING_OS_ID" == "debian" && test "$PROVISIONING_ARCH" == "arm64" ; then + version=$libclang_version + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Debian11.6-gcc10.0-arm64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Debian11.6-gcc10.0-arm64.7z" + sha1="8d876f60c2fe9c55e18fbac0be2acb70bd20d5d1" +elif test "$PROVISIONING_OS_ID" == "ubuntu" && test "$PROVISIONING_ARCH" == "arm64" ; then + version=$libclang_version + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu24.04-gcc11.2-arm64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu24.04-gcc11.2-arm64.7z" + sha1="5a7bda4fbd2c52ae66557034591d977ba617482c" +elif test "$PROVISIONING_OS_ID" == "ubuntu" && test "$PROVISIONING_ARCH" == "x86_64" ; then + version=$libclang_version + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu22.04-gcc11.2-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu22.04-gcc11.2-x86_64.7z" + sha1="b9f8735a148342174d7d763b5475175cd0827441" else version=$libclang_version - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z" - url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z" - sha1="bd6615012b8bdb2720a45ede56e05f6db7191843" + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Rhel8.8-gcc10.0-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$%7Bversion%7D-based-linux-Rhel8.8-gcc10.0-x86_64.7z" + sha1="a51c5562c9b071250e7971390d55ef21924271ca" fi zip="/tmp/libclang.7z" diff --git a/coin/provisioning/common/unix/mqtt_broker.sh b/coin/provisioning/common/unix/mqtt_broker.sh index d3cce755ec6..47b3944a37e 100755 --- a/coin/provisioning/common/unix/mqtt_broker.sh +++ b/coin/provisioning/common/unix/mqtt_broker.sh @@ -8,10 +8,10 @@ source "${BASH_SOURCE%/*}/InstallFromCompressedFileFromURL.sh" source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -CommitSHA="2873885d7e840b4e06483f36f170c609eb30527d" +CommitSHA="9d7bb80bb8b9d9cfc0b52f8cb4c1916401281103" PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mqtt_broker/paho.mqtt.testing-$CommitSHA.zip" AltUrl="https://github.com/eclipse/paho.mqtt.testing/archive/$CommitSHA.zip" -SHA1="1fcc4e61b12f11a1421cc8c3f379276d732e62b7" +SHA1="c31cfd5de9329dcd25e28b306f94dccf632cc318" targetFolder="/opt/paho_broker" appPrefix="paho.mqtt.testing-$CommitSHA" diff --git a/coin/provisioning/common/unix/openssl_3_for_android.sh b/coin/provisioning/common/unix/openssl_3_for_android.sh index 0ad79315e09..a49da77f15d 100755 --- a/coin/provisioning/common/unix/openssl_3_for_android.sh +++ b/coin/provisioning/common/unix/openssl_3_for_android.sh @@ -12,12 +12,12 @@ source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" version="3.0.7" -ndkVersionLatest="r26b" +ndkVersionLatest="r27c" ndkVersionDefault=$ndkVersionLatest -prebuiltOpensslNdkShaLatest="ea925d5a5b696916fb3650403a2eb3189c52b5ce" +prebuiltOpensslNdkShaLatest="733cff853b6ee7738e78b90f46b5f028c8490e1e" prebuiltOpensslNdkShaDefault=$prebuiltOpensslNdkShaLatest -: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK 25 +: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK r27c # Source built requires GCC and Perl to be in PATH. Rhel "requires yum install perl-IPC-Cmd" exports_file="/tmp/export.sh" # source previously made environmental variables. @@ -32,7 +32,7 @@ else fi # ANDROID_NDK_ROOT is required during Configure -export ANDROID_NDK_ROOT=/opt/android/android-ndk-r26b +export ANDROID_NDK_ROOT=/opt/android/android-ndk-r27c officialUrl="https://www.openssl.org/source/openssl-$version.tar.gz" cachedUrl="http://ci-files01-hki.ci.qt.io/input/openssl/openssl-$version.tar.gz" diff --git a/coin/provisioning/common/unix/openssl_for_android.sh b/coin/provisioning/common/unix/openssl_for_android.sh index d555e0ccd9b..c7ea14021ff 100755 --- a/coin/provisioning/common/unix/openssl_for_android.sh +++ b/coin/provisioning/common/unix/openssl_for_android.sh @@ -12,12 +12,12 @@ source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" version="3.0.7" -ndkVersionLatest="r26b" +ndkVersionLatest="r27c" ndkVersionDefault=$ndkVersionLatest -prebuiltOpensslNdkShaLatest="ea925d5a5b696916fb3650403a2eb3189c52b5ce" +prebuiltOpensslNdkShaLatest="733cff853b6ee7738e78b90f46b5f028c8490e1e" prebuiltOpensslNdkShaDefault=$prebuiltOpensslNdkShaLatest -: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK r26b +: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK r27c # Source built requires GCC and Perl to be in PATH. Rhel "requires yum install perl-IPC-Cmd" exports_file="/tmp/export.sh" # source previously made environmental variables. diff --git a/coin/provisioning/common/unix/sccache.sh b/coin/provisioning/common/unix/sccache.sh index 8a403ba7474..ab4ffd3c63b 100755 --- a/coin/provisioning/common/unix/sccache.sh +++ b/coin/provisioning/common/unix/sccache.sh @@ -19,6 +19,7 @@ function installSccache { sudo mkdir -p /usr/local/sccache sudo tar -C /usr/local/sccache -x -z --totals --strip-components=1 --file="$targetFile" + sudo chmod +x /usr/local/sccache/sccache # add sccache __before__ the real compiler SetEnvVar "PATH" "/usr/local/sccache:\$PATH" @@ -32,4 +33,7 @@ function installSccache { chmod 755 "$HOME/sccache_wrapper/sccache" SetEnvVar "PATH" "$HOME/sccache_wrapper:\$PATH" + # Prevents some random network I/O errors from failing compilation + # Does not seem to affect much though + SetEnvVar "SCCACHE_IGNORE_SERVER_IO_ERROR" "1" } diff --git a/coin/provisioning/common/unix/squishInstall.sh b/coin/provisioning/common/unix/squishInstall.sh index 0195d84af84..5f9dc48b0c8 100755 --- a/coin/provisioning/common/unix/squishInstall.sh +++ b/coin/provisioning/common/unix/squishInstall.sh @@ -2,16 +2,17 @@ # Copyright (C) 2020 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# shellcheck source=./DownloadURL.sh +PROVISIONING_DIR="$(dirname "$0")/../../" source "${BASH_SOURCE%/*}/DownloadURL.sh" +source "$PROVISIONING_DIR"/common/unix/common.sourced.sh set -ex # This script will fetch and extract pre-buildt squish package for Linux and Mac. # Squish is need by Release Test Automation (RTA) -version="7.2.1" -qtBranch="66x" +version="8.0.0" +qtBranch="67x" installFolder="/opt" squishFolder="$installFolder/squish" preBuildCacheUrl="ci-files01-hki.ci.qt.io:/hdd/www/input/squish/jenkins_build/stable" @@ -22,11 +23,16 @@ licenseSHA="e84b499a2011f9bb1a6eefc7b2338d7ae770927a" testSuiteUrl="ci-files01-hki.ci.qt.io:/hdd/www/input/squish/coin/suite_test_squish" testSuiteLocal="/tmp/squish_test_suite" if uname -a |grep -q Darwin; then - compressedFolder="prebuild-squish-$version-$qtBranch-mac.tar.gz" - sha1="7467c974b65255c86b8fccaeca90e0590d4f7c96" + compressedFolder="prebuild-squish-$version-$qtBranch-mac-x64.tar.gz" + sha1="8ae422b44af9b8e5f0d15cdca08df99973b8699a" else - compressedFolder="prebuild-squish-$version-$qtBranch-linux64.tar.gz" - sha1="950a6035c777c8ce0a50a0b3ad468044d07f898b" + if [ "$PROVISIONING_ARCH" = arm64 ] ; then + compressedFolder="prebuild-squish-$version-$qtBranch-linux-arm64.tar.gz" + sha1="06d542579271f88b1527d6ddca2bfd4eaf2dade5" + else + compressedFolder="prebuild-squish-$version-$qtBranch-linux-x64.tar.gz" + sha1="db5c48f359b46a460551cdf9362c63f557cbc04f" + fi fi mountFolder="/tmp/squish" @@ -69,14 +75,6 @@ if uname -a |grep -q Darwin; then sudo xattr -r -c "$squishFolder" fi -if uname -a |grep -q "Ubuntu"; then - if [ ! -e "/usr/lib/tcl8.6" ]; then - sudo mkdir /usr/lib/tcl8.6 - #this needs to be copied only to squish_for_qt65 - sudo cp "$squishFolder/squish_for_qt66/tcl/lib/tcl8.6/init.tcl" /usr/lib/tcl8.6/ - fi -fi - echo "Download Squish license" DownloadURL "$licenseUrl" "$licenseUrl" "$licenseSHA" "$HOME/$licenseFile" diff --git a/coin/provisioning/common/windows/android-openssl.ps1 b/coin/provisioning/common/windows/android-openssl.ps1 index 3542c907691..5c431a26536 100644 --- a/coin/provisioning/common/windows/android-openssl.ps1 +++ b/coin/provisioning/common/windows/android-openssl.ps1 @@ -16,11 +16,11 @@ if (Is64BitWinHost) { # More info and building instructions can be found from http://doc.qt.io/qt-5/opensslsupport.html $openssl_version = "3.0.7" -$ndk_version_latest = "r26b" +$ndk_version_latest = "r27c" $ndk_version_default = "$ndk_version_latest" $openssl_compressed = Get-DownloadLocation ("openssl-${openssl_version}.tar.gz") $openssl_sha1 = "f20736d6aae36bcbfa9aba0d358c71601833bf27" -$prebuilt_sha1_ndk_latest = "ea925d5a5b696916fb3650403a2eb3189c52b5ce" +$prebuilt_sha1_ndk_latest = "733cff853b6ee7738e78b90f46b5f028c8490e1e" $prebuilt_sha1_ndk_default = "$prebuilt_sha1_ndk_latest" $destination_prefix = "C:\Utils\prebuilt-openssl-${openssl_version}-for-android-ndk" @@ -70,7 +70,7 @@ function Install($1, $2) { } # ANDROID_NDK_ROOT needs to be in environment variables before running this script - # Set-EnvironmentVariable "ANDROID_NDK_ROOT" "C:\Utils\Android\android-ndk-r26b" + # Set-EnvironmentVariable "ANDROID_NDK_ROOT" "C:\Utils\Android\android-ndk-r27c" $make_install = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys_bash" -ArgumentList ("-lc", "`"yes | pacman -S make`"") CheckExitCode $make_install diff --git a/coin/provisioning/common/windows/android.ps1 b/coin/provisioning/common/windows/android.ps1 index b594238c9f5..5b2039d1136 100644 --- a/coin/provisioning/common/windows/android.ps1 +++ b/coin/provisioning/common/windows/android.ps1 @@ -10,9 +10,9 @@ # That's why we need to use Andoid-21 API version in Qt 5.9. # NDK -$ndkVersionLatest = "r26b" +$ndkVersionLatest = "r27c" $ndkVersionDefault = $ndkVersionLatest -$ndkChecksumLatest = "17453c61a59e848cffb8634f2c7b322417f1732e" +$ndkChecksumLatest = "ac5f7762764b1f15341094e148ad4f847d050c38" $ndkChecksumDefault = $ndkChecksumLatest $ndkCachedUrlLatest = "\\ci-files01-hki.ci.qt.io\provisioning\android\android-ndk-$ndkVersionLatest-windows.zip" $ndkOfficialUrlLatest = "https://dl.google.com/android/repository/android-ndk-$ndkVersionLatest-windows.zip" @@ -24,8 +24,8 @@ $ndkZip = "C:\Windows\Temp\android_ndk.zip" $toolsVersion = "2.1" $toolsFile = "commandlinetools-win-6609375_latest.zip" $sdkApi = "ANDROID_API_VERSION" -$sdkApiLevel = "android-34" -$sdkBuildToolsVersion = "34.0.0" +$sdkApiLevel = "android-35" +$sdkBuildToolsVersion = "35.0.1" $toolsCachedUrl= "\\ci-files01-hki.ci.qt.io\provisioning\android\$toolsFile" $toolsOfficialUrl = "https://dl.google.com/android/repository/$toolsFile" $toolsChecksum = "e2e19c2ff584efa87ef0cfdd1987f92881323208" diff --git a/coin/provisioning/common/windows/cmake.ps1 b/coin/provisioning/common/windows/cmake.ps1 index af1e2872fde..f4c0f6ff88c 100644 --- a/coin/provisioning/common/windows/cmake.ps1 +++ b/coin/provisioning/common/windows/cmake.ps1 @@ -3,22 +3,22 @@ . "$PSScriptRoot\helpers.ps1" -$majorminorversion = "3.27" -$version = "3.27.7" +$majorminorversion = "3.30" +$version = "3.30.5" $cpu_arch = Get-CpuArchitecture Write-Host "Installing CMake for architecture $cpu_arch" switch ($cpu_arch) { arm64 { $arch = "arm64" - $sha1 = "52ee08671dcb478c5ec6e862f41717f65047c598" - $majorminorversion = "3.29" - $version = "3.29.2" + $sha1 = "408977a174476407bd660604f110a26ba41a6efd" + $majorminorversion = "3.30" + $version = "3.30.5" Break } x64 { $arch = "i386" - $sha1 = "b6147215a5f9cd1138b012265229fbf2224d02c6" + $sha1 = "d0636735c2d13a4443662605cd80c708f265eacc" } default { throw "Unknown architecture $cpu_arch" diff --git a/coin/provisioning/common/windows/emsdk.ps1 b/coin/provisioning/common/windows/emsdk.ps1 index e1b92fd3b43..b0870e8d04e 100644 --- a/coin/provisioning/common/windows/emsdk.ps1 +++ b/coin/provisioning/common/windows/emsdk.ps1 @@ -5,11 +5,11 @@ # This script will install emscripten needed by WebAssembly -$version = "3.1.50" +$version = "3.1.56" $zipVersion = $version -replace '\.', "_" $temp = "$env:tmp" $cacheUrl = "https://ci-files01-hki.ci.qt.io/input/emsdk/emsdk_windows_$%7BzipVersion%7D.zip" -$sha = "40dc636688166ecdb476da40d02c491ee5032f7b" +$sha = "ab376d218f1a66302c36770977948f74f0576a42" # Make sure python is in the path Prepend-Path "C:\Python27" diff --git a/coin/provisioning/common/windows/helpers.ps1 b/coin/provisioning/common/windows/helpers.ps1 index 9fbf27aaca2..ad01c499489 100644 --- a/coin/provisioning/common/windows/helpers.ps1 +++ b/coin/provisioning/common/windows/helpers.ps1 @@ -297,13 +297,52 @@ function DeleteSchedulerTask { SCHTASKS /DELETE /TN "Microsoft\Windows\$Task" /F } -function GetVSPath { +function GetVsProperty { Param ( - [string]$VSWhere = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe", - [string]$Component = "Microsoft.VisualStudio.Component.VC.Tools.x86.x64" + [string]$Component = 'Microsoft.VisualStudio.Component.VC.CoreIde', + [string]$Property, + [switch]$Latest ) - return (& $VSWhere -nologo -latest -products * -requires $Component -property installationPath) + $vsWhereProcessInfo = New-Object System.Diagnostics.ProcessStartInfo + $vsWhereProcessInfo.FileName = "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + $vsWhereProcessInfo.RedirectStandardError = $true + $vsWhereProcessInfo.RedirectStandardOutput = $true + $vsWhereProcessInfo.UseShellExecute = $false + + # -sort: sorts the instances from newest version and last installed to oldest + $vsWhereProcessInfo.Arguments = " -nologo -sort -products * -requires $Component -property $Property" + if ($Latest) { + # -latest: return only the newest version and last installed + $vsWhereProcessInfo.Arguments += ' -latest' + } + + $vsWhereProcess = New-Object System.Diagnostics.Process + $vsWhereProcess.StartInfo = $vsWhereProcessInfo + + $vsWhereProcess.Start() | Out-Null + $vsWhereProcess.WaitForExit() + + $standardOutput = $vsWhereProcess.StandardOutput.ReadToEnd() + if ([string]::IsNullOrEmpty($standardOutput)) { + throw "vswhere could not find property '$Property'" + } + + $exitCode = $vsWhereProcess.ExitCode + if ($exitCode -ne 0) { + $standardError = $vsWhereProcess.StandardError.ReadToEnd() + throw "vswhere failed with exit code $exitCode ($standardError)" + } + + return $standardOutput.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Select-Object -Last 1 +} + +function GetVsInstallationPath { + Param ( + [switch]$Latest + ) + + return GetVsProperty -Property 'installationPath' @PSBoundParameters } function EnterVSDevShell { @@ -312,13 +351,11 @@ function EnterVSDevShell { [string]$Arch = "amd64" ) - $vsWere = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" - $vcComponent = "Microsoft.VisualStudio.Component.VC.CoreIde" # We pick the oldest build tools we can find and use that to be compatible with it and any newer version: # If MSVC has an ABI break this will stop working, and yet another build must be added. - $VSPath = (& $vsWere -nologo -products * -requires $vcComponent -sort -format value -property installationPath | Select-Object -Last 1) + $VSPath = GetVsInstallationPath - Write-Host "Enter VisualStudio developer shell (-host_arch=$HostArch -arch=$Arch)" + Write-Host "Enter VisualStudio developer shell (-host_arch=$HostArch -arch=$Arch -VsInstallPath='$VSPath')" try { Import-Module "$VSPath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath $VSPath -DevCmdArguments "-host_arch=$HostArch -arch=$Arch -no_logo" diff --git a/coin/provisioning/common/windows/install-azure-tool.ps1 b/coin/provisioning/common/windows/install-azure-tool.ps1 index 9f82f54e014..ccd5c20d3aa 100644 --- a/coin/provisioning/common/windows/install-azure-tool.ps1 +++ b/coin/provisioning/common/windows/install-azure-tool.ps1 @@ -5,6 +5,6 @@ # This script will install Azure singtool using Dotnet SDK $dotnet = "C:\Program Files\dotnet\dotnet.exe" -$version = "2.0.17" +$version = "5.0.0" Run-Executable "$dotnet" "tool install --global AzureSignTool --version $version" diff --git a/coin/provisioning/common/windows/install-dependencywalker.ps1 b/coin/provisioning/common/windows/install-dependencywalker.ps1 index abaa4d79a06..3d541f4fe81 100644 --- a/coin/provisioning/common/windows/install-dependencywalker.ps1 +++ b/coin/provisioning/common/windows/install-dependencywalker.ps1 @@ -6,12 +6,28 @@ # This script will install Dependency Walker 2.2.6000 $version = "2.2.6000" -if (Is64BitWinHost) { - $arch = "_x64" - $sha1 = "4831D2A8376D64110FF9CD18799FE6C69509D3EA" -} else { - $arch = "_x86" - $sha1 = "bfec714057e8449b0246051be99ba46a7760bab9" +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + x64 { + $arch = "_x64" + $sha1 = "4831D2A8376D64110FF9CD18799FE6C69509D3EA" + $nuitka_arch = "x86_64" + } + arm64 { + # There is no ARM64 version of Dependency Walker + # just use the x64 version + $arch = "_x64" + $sha1 = "4831D2A8376D64110FF9CD18799FE6C69509D3EA" + $nuitka_arch = "arm64" + } + x86 { + $arch = "_x86" + $sha1 = "bfec714057e8449b0246051be99ba46a7760bab9" + $nuitka_arch = "x86" + } + default { + throw "Unknown architecture $cpu_arch" + } } $url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\depends22" + $arch + ".zip" $url_official = "http://www.dependencywalker.com/depends22" + $arch + ".zip" @@ -28,7 +44,7 @@ Extract-7Zip $dependsPackage $TARGETDIR # Copy the content also into the cache location of nuitka # This makes it usable without the need to download it again -Copy-Item -Path $TARGETDIR -Destination "$env:LOCALAPPDATA\Nuitka\Nuitka\Cache\downloads\depends\x86_64" -Recurse +Copy-Item -Path $TARGETDIR -Destination "$env:LOCALAPPDATA\Nuitka\Nuitka\Cache\downloads\depends\$nuitka_arch" -Recurse Write-Host "Cleaning $dependsPackage.." Remove "$dependsPackage" diff --git a/coin/provisioning/common/windows/install-dotnet.ps1 b/coin/provisioning/common/windows/install-dotnet.ps1 index aea40e861b5..c74849de939 100644 --- a/coin/provisioning/common/windows/install-dotnet.ps1 +++ b/coin/provisioning/common/windows/install-dotnet.ps1 @@ -4,15 +4,30 @@ # This script will install Dotnet SDK which is required for Azure installation -$version = "2.1" -if (Is64BitWinHost) { - $urlCache = "http://ci-files01-hki.ci.qt.io/input/windows/dotnet-sdk-2.1.809-win-x64.exe" - $urlOfficial = "https://download.visualstudio.microsoft.com/download/pr/c980b6fb-e570-4c73-b344-e4dae6573777/f844ac1a4c6ea5de7227a701786126fd/dotnet-sdk-2.1.809-win-x64.exe" - $sha1 = "343e80c2ab558a30696dbe03ad2288bf435d5cd8" -} else { - $urlCache = "http://ci-files01-hki.ci.qt.io/input/windows/dotnet-sdk-2.1.809-win-x86.exe" - $urlOfficial = "https://download.visualstudio.microsoft.com/download/pr/cf86a2f3-f6b2-4959-8e41-cf84b0d2f294/a61e834f56abe2dc2e12599e1a60c10b/dotnet-sdk-2.1.809-win-x86.exe" - $sha1 = "b38a4e1392f17aed110508a1687f1c65b9d86161" +$version = "8.0.300" +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $sha1 = "3e68f606b205beeb0a557dad5b01e31d4d833459" + $urlCache = "http://ci-files01-hki.ci.qt.io/input/windows/dotnet-sdk-$version-win-arm64.exe" + $urlOfficial = "https://download.visualstudio.microsoft.com/download/pr/e195e4f5-00ee-4df3-8736-199aacf00b2a/1663c4f5dc168d390aa4507f09200423/dotnet-sdk-$version-win-arm64.exe" + Break + } + x64 { + $urlCache = "http://ci-files01-hki.ci.qt.io/input/windows/dotnet-sdk-$version-win-x64.exe" + $urlOfficial = "https://download.visualstudio.microsoft.com/download/pr/90486d8a-fb5a-41be-bfe4-ad292c06153f/6673965085e00f5b305bbaa0b931cc96/dotnet-sdk-$version-win-x64.exe" + $sha1 = "527321c1eeea964a7c50f6a24473f37400514cd1" + Break + } + x86 { + $urlCache = "http://ci-files01-hki.ci.qt.io/input/windows/dotnet-sdk-$version-win-x86.exe" + $urlOfficial = "https://download.visualstudio.microsoft.com/download/pr/9736c2dc-c21d-4df6-8cb7-9365ed5461a9/4c360dc61c7cb6d26b48d2718341c68e/dotnet-sdk-$version-win-x86.exe" + $sha1 = "f8857b5e06de5c33aee2fb2242f7781f1a65c4ef" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } $installer = "C:\Windows\Temp\dotnet-sdk-$version.exe" diff --git a/coin/provisioning/common/windows/install-ffmpeg.ps1 b/coin/provisioning/common/windows/install-ffmpeg.ps1 index f8ad9f152f1..3fbfd72a7c7 100644 --- a/coin/provisioning/common/windows/install-ffmpeg.ps1 +++ b/coin/provisioning/common/windows/install-ffmpeg.ps1 @@ -6,27 +6,32 @@ # This script will install FFmpeg $msys = "C:\Utils\msys64\usr\bin\bash" -$version = "n6.1.1" -$ffmpeg_name = "ffmpeg-" + $version; -$sha1 = "7AECCED8A0366BE407329B4E176167534233DA12" +$version="n7.1" +$url_public="https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$version.tar.gz" +$sha1="f008a93710a7577e3f85a90f4b632cc615164712" +$url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" +$ffmpeg_name="FFmpeg-$version" -$url_cached = "https://ci-files01-hki.ci.qt.io/input/ffmpeg/" + $version + ".zip" -$url_public = "https://github.com/FFmpeg/FFmpeg/archive/refs/tags/" +$version + ".zip" -$download_location = "C:\Windows\Temp\" + $ffmpeg_name + ".zip" +$download_location = "C:\Windows\Temp\$ffmpeg_name.tar.gz" $unzip_location = "C:\" Write-Host "Fetching FFmpeg $version..." Download $url_public $url_cached $download_location Verify-Checksum $download_location $sha1 -Extract-7Zip $download_location $unzip_location +Extract-tar_gz $download_location $unzip_location Remove $download_location -$config = Get-Content "$PSScriptRoot\..\shared\ffmpeg_config_options.txt" -Write-Host "FFmpeg configuration $config" +function GetFfmpegDefaultConfiguration { + $defaultConfiguration = Get-Content "$PSScriptRoot\..\shared\ffmpeg_config_options.txt" + Write-Host "FFmpeg default configuration: $defaultConfiguration" + + return $defaultConfiguration +} function InstallFfmpeg { Param ( + [string]$config, [string]$buildSystem, [string]$msystem, [string]$additionalPath, @@ -35,19 +40,25 @@ function InstallFfmpeg { [bool]$shared ) - Write-Host "Configure and compile ffmpeg for $buildSystem" + Write-Host "Configure and compile FFmpeg for $buildSystem with configuration: $config" $oldPath = $env:PATH - if ($additionalPath) { $env:PATH = "$additionalPath;$env:PATH" } + if ($additionalPath) { + $env:PATH = "$additionalPath;$env:PATH" + } $env:MSYS2_PATH_TYPE = "inherit" $env:MSYSTEM = $msystem $cmd = "cd /c/$ffmpeg_name" $cmd += " && mkdir -p build/$buildSystem && cd build/$buildSystem" $cmd += " && ../../configure --prefix=installed $config" - if ($toolchain) { $cmd += " --toolchain=$toolchain" } - if ($shared) { $cmd += " --enable-shared --disable-static" } + if ($toolchain) { + $cmd += " --toolchain=$toolchain" + } + if ($shared) { + $cmd += " --enable-shared --disable-static" + } $cmd += " && make install -j" Write-Host "MSYS cmd:" @@ -57,7 +68,7 @@ function InstallFfmpeg { $env:PATH = $oldPath if ($buildResult.ExitCode) { - Write-Host "Failed to build ffmpeg for $buildSystem" + Write-Host "Failed to build FFmpeg for $buildSystem" return $false } @@ -66,13 +77,15 @@ function InstallFfmpeg { } function InstallMingwFfmpeg { + $config = GetFfmpegDefaultConfiguration $mingwPath = [System.Environment]::GetEnvironmentVariable("MINGW_PATH", [System.EnvironmentVariableTarget]::Machine) - return InstallFfmpeg -buildSystem "mingw" -msystem "MINGW" -additionalPath "$mingwPath\bin" -ffmpegDirEnvVar "FFMPEG_DIR_MINGW" -shared $true + return InstallFfmpeg -config $config -buildSystem "mingw" -msystem "MINGW" -additionalPath "$mingwPath\bin" -ffmpegDirEnvVar "FFMPEG_DIR_MINGW" -shared $true } function InstallMsvcFfmpeg { Param ( + [string]$hostArch, [bool]$isArm64 ) @@ -80,27 +93,30 @@ function InstallMsvcFfmpeg { $buildSystem = "msvc" $ffmpegDirEnvVar = "FFMPEG_DIR_MSVC" - $config = Get-Content "$PSScriptRoot\..\shared\ffmpeg_config_options.txt" + $config = GetFfmpegDefaultConfiguration if ($isArm64) { $arch = "arm64" $buildSystem += "-arm64" $ffmpegDirEnvVar += "_ARM64" - $config += " --enable-cross-compile --arch=arm64 --disable-asm" + $config += " --arch=arm64 --disable-asm" + if ($hostArch -eq "amd64") { + $config += " --enable-cross-compile" + } } - $result = EnterVSDevShell -Arch $arch + $result = EnterVSDevShell -HostArch $hostArch -Arch $arch if (-Not $result) { return $false } - $result = InstallFfmpeg -buildSystem $buildSystem -msystem "MSYS" -toolchain "msvc" -ffmpegDirEnvVar $ffmpegDirEnvVar -shared $true + $result = InstallFfmpeg -config $config -buildSystem $buildSystem -msystem "MSYS" -toolchain "msvc" -ffmpegDirEnvVar $ffmpegDirEnvVar -shared $true if ($result) { # As ffmpeg build system creates lib*.a file we have to rename them to *.lib files to be recognized by WIN32 Write-Host "Rename libraries lib*.a -> *.lib" try { - $msvcDir = [System.Environment]::GetEnvironmentVariable("FFMPEG_DIR_MSVC", [System.EnvironmentVariableTarget]::Machine) + $msvcDir = [System.Environment]::GetEnvironmentVariable($ffmpegDirEnvVar, [System.EnvironmentVariableTarget]::Machine) Get-ChildItem "$msvcDir\lib\lib*.a" | ForEach-Object { $NewName = $_.Name -replace 'lib(\w+).a$', '$1.lib' $Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName @@ -117,17 +133,18 @@ function InstallMsvcFfmpeg { function InstallLlvmMingwFfmpeg { - return InstallFfmpeg -buildSystem "llvm-mingw" -msystem "CLANG64" -ffmpegDirEnvVar "FFMPEG_DIR_LLVM_MINGW" -additionalPath "C:\llvm-mingw\bin" -shared $true + $config = GetFfmpegDefaultConfiguration + return InstallFfmpeg -config $config -buildSystem "llvm-mingw" -msystem "CLANG64" -ffmpegDirEnvVar "FFMPEG_DIR_LLVM_MINGW" -additionalPath "C:\llvm-mingw\bin" -shared $true } function InstallAndroidArmv7 { - + $shared=$true $target_toolchain_arch="armv7a-linux-androideabi" $target_arch="armv7-a" $target_cpu="armv7-a" $api_version="24" - $ndkVersionLatest = "r26b" + $ndkVersionLatest = "r27c" $ndkFolderLatest = "/c/Utils/Android/android-ndk-$ndkVersionLatest" $toolchain="${ndkFolderLatest}/toolchains/llvm/prebuilt/windows-x86_64" @@ -143,27 +160,90 @@ function InstallAndroidArmv7 { $openssl_path = [System.Environment]::GetEnvironmentVariable("OPENSSL_ANDROID_HOME_DEFAULT", [System.EnvironmentVariableTarget]::Machine) $openssl_path = $openssl_path.Replace("\", "/") - $config = Get-Content "$PSScriptRoot\..\shared\ffmpeg_config_options.txt" + New-Item -ItemType SymbolicLink -Path ${openssl_path}/armeabi-v7a/libcrypto.so -Target ${openssl_path}/armeabi-v7a/libcrypto_3.so + New-Item -ItemType SymbolicLink -Path ${openssl_path}/armeabi-v7a/libssl.so -Target ${openssl_path}/armeabi-v7a/libssl_3.so + + $config = GetFfmpegDefaultConfiguration $config += " --enable-cross-compile --target-os=android --enable-jni --enable-mediacodec --enable-openssl --enable-pthreads --enable-neon --disable-asm --disable-indev=android_camera" $config += " --arch=$target_arch --cpu=${target_cpu} --sysroot=${sysroot} --sysinclude=${sysroot}/usr/include/" $config += " --cc=${cc} --cxx=${cxx} --ar=${ar} --ranlib=${ranlib}" $config += " --extra-cflags=-I$envOPENSSL_ANDROID_HOME_DEFAULT/include --extra-ldflags=-L$env:OPENSSL_ANDROID_HOME_DEFAULT/armeabi-v7a" $config += " --extra-cflags=-I${openssl_path}/include --extra-ldflags=-L${openssl_path}/armeabi-v7a" + $config += " --strip=$strip" + + + $result= InstallFfmpeg -config $config -buildSystem "android-arm" -msystem "ANDROID_CLANG" -ffmpegDirEnvVar "FFMPEG_DIR_ANDROID_ARMV7" -shared $shared + + Remove-Item -Path ${openssl_path}/armeabi-v7a/libcrypto.so + Remove-Item -Path ${openssl_path}/armeabi-v7a/libssl.so + + if (-not $shared) { + return $result + } + + # For Shared ffmpeg we need to change dependencies to stubs + Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"pacman -Sy --noconfirm binutils`"") + Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"pacman -Sy --noconfirm autoconf`"") + Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"pacman -Sy --noconfirm automake`"") + Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"pacman -Sy --noconfirm libtool`"") - return InstallFfmpeg -buildSystem "android-arm" -msystem "ANDROID_CLANG" -ffmpegDirEnvVar "FFMPEG_DIR_ANDROID_ARMV7" + $patchelf_sha1 = "DDD46A2E2A16A308245C008721D877455B23BBA8" + $patchelf_sources = "https://ci-files01-hki.ci.qt.io/input/android/patchelf/0.17.2.tar.gz" + $patchelf_download_location = "C:\Windows\Temp\0.17.2.tar.gz" + + Invoke-WebRequest -UseBasicParsing $patchelf_sources -OutFile $patchelf_download_location + Verify-Checksum $patchelf_download_location $patchelf_sha1 + Extract-tar_gz $patchelf_download_location $unzip_location + Remove $patchelf_download_location + + Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"cd C:/patchelf-0.17.2 && ./bootstrap.sh && ./configure && make install`"") + + $command = "${PSScriptRoot}/../shared/fix_ffmpeg_dependencies.sh C:/${ffmpeg_name}/build/android-arm/installed/ _armeabi-v7a no" + $command = $command.Replace("\", "/") + Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath $msys -ArgumentList ("-lc", "`"$command`"") + + return $result +} + +function InstallFfmpegsAMD64 { + $hostArch = "amd64" + $mingwRes = InstallMingwFfmpeg + $llvmMingwRes = InstallLlvmMingwFfmpeg + $androidArmV7Res = InstallAndroidArmv7 + $msvcRes = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $false + $msvcArm64Res = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $true + + Write-Host "Ffmpeg installation results:" + Write-Host " mingw:" $(if ($mingwRes) { "OK" } else { "FAIL" }) + Write-Host " llvm-mingw:" $(if ($llvmMingwRes) { "OK" } else { "FAIL" }) + Write-Host " android-armv7:" $(if ($androidArmV7Res) { "OK" } else { "FAIL" }) + Write-Host " msvc:" $(if ($msvcRes) { "OK" } else { "FAIL" }) + Write-Host " msvc-arm64:" $(if ($msvcArm64Res) { "OK" } else { "FAIL" }) + + exit $(if ($mingwRes -and $msvcRes -and $msvcArm64Res -and $llvmMingwRes -and $androidArmV7Res) { 0 } else { 1 }) } -$mingwRes = InstallMingwFfmpeg -$llvmMingwRes = InstallLlvmMingwFfmpeg -$androidArmV7Res = InstallAndroidArmv7 -$msvcRes = InstallMsvcFfmpeg -isArm64 $false -$msvcArm64Res = InstallMsvcFfmpeg -isArm64 $true +function InstallFfmpegsARM64 { + $hostArch = "arm64" + $msvcArm64Res = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $true -Write-Host "Ffmpeg installation results:" -Write-Host " mingw:" $(if ($mingwRes) { "OK" } else { "FAIL" }) -Write-Host " msvc:" $(if ($msvcRes) { "OK" } else { "FAIL" }) -Write-Host " msvc-arm64:" $(if ($msvcArm64Res) { "OK" } else { "FAIL" }) -Write-Host " llvm-mingw:" $(if ($llvmMingwRes) { "OK" } else { "FAIL" }) -Write-Host " android-armv7:" $(if ($androidArmV7Res) { "OK" } else { "FAIL" }) + Write-Host "Ffmpeg installation results:" + Write-Host " msvc-arm64:" $(if ($msvcArm64Res) { "OK" } else { "FAIL" }) -exit $(if ($mingwRes -and $msvcRes -and $msvcArm64Res -and $llvmMingwRes -and $androidArmV7Res) { 0 } else { 1 }) + exit $(if ($msvcArm64Res) { 0 } else { 1 }) +} + +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + InstallFfmpegsARM64 + Break + } + x64 { + InstallFfmpegsAMD64 + Break + } + default { + throw "Unknown architecture $cpu_arch" + } +} diff --git a/coin/provisioning/common/windows/install-golang.ps1 b/coin/provisioning/common/windows/install-golang.ps1 new file mode 100644 index 00000000000..42a79f45ed7 --- /dev/null +++ b/coin/provisioning/common/windows/install-golang.ps1 @@ -0,0 +1,39 @@ +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +. "$PSScriptRoot\helpers.ps1" + +$version = "1.22.4" + +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + x64 { + $arch = "amd64" + $sha256 = "3c21105d7b584759b6e266383b777caf6e87142d304a10b539dbc66ab482bb5f" + break + } + x86 { + $arch = "386" + $sha256 = "5c6446e2ea80bc6a971d2b34446f16e6517e638b0ff8d3ea229228d1931790b0" + break + } + arm64 { + $arch = "arm64" + $sha256 = "553cc6c460f4e3eb4fad5b897c0bb22cd8bbeb20929f0e3eeb939420320292ce" + break + } + default { + throw "Unknown architecture $cpu_arch" + } +} + +$goPackage = "C:\Windows\Temp\Go-" + $version + $arch + ".msi" +$url_cache = "https://ci-files01-hki.ci.qt.io/input/go/windows/go" + $version + ".windows-" + $arch + ".msi" +$url_official = "https://go.dev/dl/go" + $version + ".windows-" + $arch + ".msi" + +Write-Host "Fetching Go $version..." +Download $url_official $url_cache $goPackage +Verify-Checksum $goPackage $sha256 sha256 +Write-Host "Installing Go $version..." +Run-Executable "msiexec" "/quiet /i $goPackage" +Write-Output "Go = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-jdk.ps1 b/coin/provisioning/common/windows/install-jdk.ps1 index dc19551d16d..43f8e35d171 100644 --- a/coin/provisioning/common/windows/install-jdk.ps1 +++ b/coin/provisioning/common/windows/install-jdk.ps1 @@ -4,47 +4,50 @@ . "$PSScriptRoot\helpers.ps1" # This script will install Java SE - -if (Is64BitWinHost) { - $version = "11.0.12" - $arch = "x64" - $sha1 = "135ffd1c350509729551876232a5354070732e92" - $installdir = "C:\Program Files\Java\jdk-$version" - $url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\jdk-" + $version + "-windows-" + $arch + ".exe" -} else { - $version = "11.0.11.9" - $arch = "x86-32" - $sha1 = "a861e994208ee85bf83a76105f6858feeb6fbb33" - $installdir = "C:\Program Files\AdoptOpenJDK\jdk-$version-hotspot" - $url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.11_9.msi" -} - -# NOTE! Official URL is behind login portal. It can't be used whit this script instead it need to be fetched to $url_cache first -# java 11: https://www.oracle.com/java/technologies/downloads/#java11-windows -# java 8: $official_url = "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-" + $version + "-windows-" + $arch + ".exe" -if (Is64BitWinHost) { - $javaPackage = "C:\Windows\Temp\jdk-$version.exe" -} else { - $javaPackage = "C:\Windows\Temp\jdk-$version.msi" +# https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html +$version_major = "17" +$installdir = "C:\Program Files\Java\jdk-$version_major" + +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $version = "17.0.11" + $arch = "aarch64" + $sha1 = "1c5984a185778ad91498b746e677d84e153d5918" + # Using Microsoft build version of OpenJDK from: https://learn.microsoft.com/en-us/java/openjdk/download + # as there are no available Windows ARM64 versions of JDK from Oracle + $url_official = "https://aka.ms/download-jdk/microsoft-jdk-$%7Bversion%7D-windows-$%7Barch%7D.msi" + $url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\microsoft-jdk-${version}-windows-${arch}.msi" + $javaPackage = "C:\Windows\Temp\jdk-$version.msi" + Break + } + x64 { + $version = "17.0.10" + $arch = "x64" + $sha1 = "d573091930076c3ffa9f74273cb41cb5c75c5400" + $url_official = "https://download.oracle.com/java/17/archive/jdk-$%7Bversion%7D_windows-$%7Barch%7D_bin.exe" + $url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\jdk-$version-windows-$arch.exe" + $javaPackage = "C:\Windows\Temp\jdk-$version.exe" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } -Write-Host "Fetching Java SE $version..." +Write-Host "Fetching Java SE $version" $ProgressPreference = 'SilentlyContinue' -Write-Host "...from local cache" -Download $url_cache $url_cache $javaPackage +Download $url_official $url_cache $javaPackage Verify-Checksum $javaPackage $sha1 -if (Is64BitWinHost) { +if ($javaPackage.EndsWith(".exe")) { Run-Executable "$javaPackage" "/s SPONSORS=0" } else { Run-Executable "msiexec" "/quiet /i $javaPackage" } Remove "$javaPackage" -Write-Host "Remove Java update from startup" -reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /v SunJavaUpdateSched /f - Set-EnvironmentVariable "JAVA_HOME" "$installdir" -Add-Path "$installdir\bin" +Prepend-Path "$installdir\bin" Write-Output "Java SE = $version $arch" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/install-sevenzip.ps1 b/coin/provisioning/common/windows/install-sevenzip.ps1 index 47a34e2be9d..dad34d90b42 100644 --- a/coin/provisioning/common/windows/install-sevenzip.ps1 +++ b/coin/provisioning/common/windows/install-sevenzip.ps1 @@ -5,24 +5,24 @@ # This script installs 7-Zip -$version = "23.01" -$nonDottedVersion = "2301" +$version = "24.09" +$nonDottedVersion = "2409" $cpu_arch = Get-CpuArchitecture switch ($cpu_arch) { arm64 { $arch = "-arm64" - $sha1 = "be65c2ea6119c04945c66b13413892f2bb03d9a7" + $sha1 = "2f5aaa22a4a591b01a1b06c17565233f0cd70429" Break } x64 { $arch = "-x64" - $sha1 = "7DF28D340D7084647921CC25A8C2068BB192BDBB" + $sha1 = "28b53835fe92c3fa6e0c422fc3b17c6bc1cb27e0" Break } x86 { $arch = "" - $sha1 = "D5D00E6EA8B8E68CE7A704FD478DC950E543C25C" + $sha1 = "2135a90a9f6c3202c32a87b1c5cf805ce294a497" Break } default { diff --git a/coin/provisioning/common/windows/install-upx.ps1 b/coin/provisioning/common/windows/install-upx.ps1 new file mode 100644 index 00000000000..abfb6712068 --- /dev/null +++ b/coin/provisioning/common/windows/install-upx.ps1 @@ -0,0 +1,41 @@ +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +. "$PSScriptRoot\helpers.ps1" + +$majorminorversion = "4.2" +$version = "4.2.4" + +$cpu_arch = Get-CpuArchitecture +Write-Host "Installing UPX for architecture $cpu_arch" +switch ($cpu_arch) { + x64 { + $arch = "win64" + $sha1 = "204ae110a84d0046b242222f97b19cf3f5594f4b" + } + default { + throw "Unknown architecture $cpu_arch" + } +} + +$filename = "upx-" + $version + "-" + $arch +$filename_zip = $filename + ".zip" + +$zip = Get-DownloadLocation ($filename_zip) +$officialurl = "https://github.com/upx/upx/releases/download/v" + $version + "/" + $filename_zip +$cachedurl = "https://ci-files01-hki.ci.qt.io/input/upx/windows/" + $filename_zip + +Write-Host "Removing old UPX" +Remove "C:\UPX" + +Download $officialurl $cachedurl $zip +Verify-Checksum $zip $sha1 + +Extract-7Zip $zip C: +$defaultinstallfolder = "C:\" + $filename +Rename-Item $defaultinstallfolder C:\UPX + +Add-Path "C:\UPX" + +Write-Output "UPX = $version" >> ~\versions.txt + diff --git a/coin/provisioning/common/windows/libclang.ps1 b/coin/provisioning/common/windows/libclang.ps1 index 57f420572ba..615c496bef2 100644 --- a/coin/provisioning/common/windows/libclang.ps1 +++ b/coin/provisioning/common/windows/libclang.ps1 @@ -1,11 +1,11 @@ param( - [Int32]$archVer=32, + [string]$archVer="32", [string]$toolchain="vs2019", [bool]$setDefault=$true ) . "$PSScriptRoot\helpers.ps1" -$libclang_version="15.0.0" +$libclang_version="18.1.7" Write-Output "libClang = $libclang_version" >> ~/versions.txt # PySide versions following 5.6 use a C++ parser based on Clang (http://clang.org/). @@ -36,9 +36,22 @@ function install() { $toolchainSuffix = "" +if ( $toolchain -eq "vs2022" ) { + if ( $archVer -eq "64" ) { + $sha1 = "7e51f0eabdfe8eea17aaf1dce7b2ffe1ea064f66" + } + elseif ( $archVer -eq "arm64" ) { + $sha1 = "986d4d0f253de505ef499345238c101dac1ca3a6" + } + else { + $sha1 = "" + } + $toolchainSuffix = "msvc" +} + if ( $toolchain -eq "vs2019" ) { - if ( $archVer -eq 64 ) { - $sha1 = "e7c2d27f0e99d63e49225cb1be18c76a1e2a124b" + if ( $archVer -eq "64" ) { + $sha1 = "8e0862386caef7e4537599ef980eeb6ebee8767f" } else { $sha1 = "" @@ -47,8 +60,8 @@ if ( $toolchain -eq "vs2019" ) { } if ( $toolchain -eq "mingw" ) { - if ( $archVer -eq 64 ) { - $sha1 = "6c9300051533d5648ffe3e8ae1eb00decae8e6bf" + if ( $archVer -eq "64" ) { + $sha1 = "a23cbb0822cf2eb8d1cecf26e8614ef37a7611e3" } else { $sha1 = "" @@ -56,6 +69,19 @@ if ( $toolchain -eq "mingw" ) { $toolchainSuffix = "mingw" } + +if ( $toolchain -eq "llvm-mingw" ) { + if ( $archVer -eq "64" ) { + $sha1 = "9c34f99eb575b42c2befe27829c08e6d3f01ae58" + } + else { + $sha1 = "" + } + # Due to COIN-1137 forced to use a '_' instead of '-' + $toolchainSuffix = "llvm_mingw" +} + + install $sha1 $baseDestination-$archVer if ( $setDefault ) { diff --git a/coin/provisioning/common/windows/mimersql.ps1 b/coin/provisioning/common/windows/mimersql.ps1 index b5e041d0df4..d7535c81639 100644 --- a/coin/provisioning/common/windows/mimersql.ps1 +++ b/coin/provisioning/common/windows/mimersql.ps1 @@ -16,7 +16,7 @@ $mimer_dir="c:\MimerSQL" Download $url_official $url_cache $mimersqlPackage Verify-Checksum $mimersqlPackage $sha1 -Run-Executable "$mimersqlPackage" "/install InstallFolder=$mimer_dir /passive" +Run-Executable "$mimersqlPackage" "/install InstallFolder=$mimer_dir /passive ExcludeDbVisualizer=1 ExcludeJava=1 ExcludeServer=1 ExcludeDocumentation=1 ExcludeReplication=1" Set-EnvironmentVariable "MIMERSQL_DEV_ROOT" "$mimer_dir\dev" diff --git a/coin/provisioning/common/windows/mqtt_broker.ps1 b/coin/provisioning/common/windows/mqtt_broker.ps1 index 4161ddeab4d..d59ada3f7cd 100644 --- a/coin/provisioning/common/windows/mqtt_broker.ps1 +++ b/coin/provisioning/common/windows/mqtt_broker.ps1 @@ -5,8 +5,8 @@ Write-Host "MQTT: Downloading Paho test broker..." $zip = Get-DownloadLocation "pahotest.zip" -$commitSHA = "20bad2475c27a6e1d24a56d90a9fceb40963261e" -$sha1 = "a0ac88715c2aebb9573a113dc13925a90da19233" +$commitSHA = "9d7bb80bb8b9d9cfc0b52f8cb4c1916401281103" +$sha1 = "c31cfd5de9329dcd25e28b306f94dccf632cc318" $internalUrl = "http://ci-files01-hki.ci.qt.io/input/mqtt_broker/paho.mqtt.testing-$commitSHA.zip" $externalUrl = "https://github.com/eclipse/paho.mqtt.testing/archive/$commitSHA.zip" diff --git a/coin/provisioning/common/windows/python3.ps1 b/coin/provisioning/common/windows/python3.ps1 index 46f75d7c54c..1422fc5b735 100644 --- a/coin/provisioning/common/windows/python3.ps1 +++ b/coin/provisioning/common/windows/python3.ps1 @@ -78,6 +78,19 @@ Run-Executable "$install_path\python.exe" "-m pip config --user set global.index Run-Executable "$install_path\python.exe" "-m pip config --user set global.extra-index-url https://pypi.org/simple/" Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install virtualenv wheel html5lib" +# Check if python version is higher than 3.10. +# ntia-conformance-checker requires at least 3.8 +# reuse requires at least 3.9, to avoid conflict with installed conan jinja package, +# at least until we use virtual envs. +# The lowest version available on all windows platforms that we currently run on that satisfies +# these requirements is 3.10. +if ([version]::Parse($version) -gt [version]::Parse("3.10")) { + Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install -r $PSScriptRoot\..\shared\sbom_requirements.txt" + # Set the environment variable for the build system to know which python path to use for SBOM + # processing. + Set-EnvironmentVariable "SBOM_PYTHON_APPS_PATH" "$install_path\Scripts" +} + # Install PyPDF2 for QSR documentation Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install PyPDF2" diff --git a/coin/provisioning/common/windows/squishInstall.ps1 b/coin/provisioning/common/windows/squishInstall.ps1 index ec4d240a273..4766d2e964b 100644 --- a/coin/provisioning/common/windows/squishInstall.ps1 +++ b/coin/provisioning/common/windows/squishInstall.ps1 @@ -6,8 +6,8 @@ # This script will pre-installed squish package for Windows. # Squish is need by Release Test Automation (RTA) -$version = "7.2.1" -$qtBranch = "66x" +$version = "8.0.0" +$qtBranch = "67x" $targetDir = "C:\Utils\squish" $squishPackage = "C:\Utils\rta_squish" $squishUrl = "\\ci-files01-hki.ci.qt.io\provisioning\squish\jenkins_build\stable" @@ -33,7 +33,7 @@ if (($OSVersion -eq "Windows 10 Enterprise") -or ($OSVersion -eq "Windows 10 Pro # In Windows 11 case $OSVersion is 'Windows 10 Pro' $winVersion = "win10" if (Is64BitWinHost) { - $sha1 = "eed4ed4936fbbacb11e0d8a00ff190e1ea808eeb" + $sha1 = "0f863c261f854ec38032815298f5636e99779bff" } } else { $winVersion = "n/a" diff --git a/coin/provisioning/common/windows/version.ps1 b/coin/provisioning/common/windows/version.ps1 index 7f701f637de..127393fd6be 100644 --- a/coin/provisioning/common/windows/version.ps1 +++ b/coin/provisioning/common/windows/version.ps1 @@ -4,3 +4,6 @@ Write-Host '*****************************************************' Write-Host '******************** Get-PSDrive ********************' Get-PSDrive Write-Host '*****************************************************' +Write-Host '******************** Path Content *******************' +$env:Path -split ';' +Write-Host '*****************************************************' diff --git a/coin/provisioning/common/windows/vulkansdk.ps1 b/coin/provisioning/common/windows/vulkansdk.ps1 index aeeff69669f..57fd63a1987 100644 --- a/coin/provisioning/common/windows/vulkansdk.ps1 +++ b/coin/provisioning/common/windows/vulkansdk.ps1 @@ -6,13 +6,36 @@ # This script will install Vulkan SDK # Original Download page: https://vulkan.lunarg.com/sdk/home#windows -$version = "1.2.182.0" +$cpu_arch = Get-CpuArchitecture +Write-Host "Installing $cpu_arch Vulkan SDK" +$version = "1.2.182.0" # TODO: Update to newest 1.3.296.0 +switch ($cpu_arch) { + arm64 { + $version = "1.3.296.0" + $externalUrl = "https://sdk.lunarg.com/sdk/download/$version/warm/InstallVulkanARM64-$version.exe" + $internalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\windows\InstallVulkanARM64-$version.exe" + $sha1 = "7d47d8dd10c09d363e6103925c4a032abf7b2c02" + $installArgs = "--accept-licenses --default-answer --confirm-command install" + Break + } + x64 { + $externalUrl = "https://sdk.lunarg.com/sdk/download/$version/windows/VulkanSDK-$version-Installer.exe" + $internalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\windows\VulkanSDK-$version-Installer.exe" + $sha1 = "1b662f338bfbfdd00fb9b0c09113eacb94f68a0e" + $installArgs = "/S" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } +} + $vulkanPackage = "C:\Windows\Temp\vulkan-installer-$version.exe" -$sha1 = "1b662f338bfbfdd00fb9b0c09113eacb94f68a0e" -Download "https://sdk.lunarg.com/sdk/download/1.2.182.0/windows/VulkanSDK-$version-Installer.exe" "\\ci-files01-hki.ci.qt.io\provisioning\windows\VulkanSDK-$version-Installer.exe" $vulkanPackage + +Download "$externalUrl" "$internalUrl" "$vulkanPackage" Verify-Checksum "$vulkanPackage" "$sha1" -Run-Executable $vulkanPackage "/S" +Run-Executable "$vulkanPackage" "$installArgs" Write-Host "Cleaning $vulkanPackage.." Remove "$vulkanPackage" diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/01-systemsetup.sh index 98744822c72..f0288905a2b 100755 --- a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/01-systemsetup.sh @@ -17,6 +17,8 @@ echo "Timeout for blanking the screen (0 = never)" gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set grub timeout to 0" sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub sudo update-grub diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/02-apt.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/02-apt.sh index b7919fe1997..a6ecb6ad501 100755 --- a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/02-apt.sh +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/02-apt.sh @@ -78,9 +78,17 @@ installPackages+=(libasound2-dev) installPackages+=(libgstreamer1.0-dev) installPackages+=(libgstreamer-plugins-base1.0-dev) installPackages+=(libgstreamer-plugins-bad1.0-dev) +installPackages+=(gstreamer1.0-libav) +installPackages+=(gstreamer1.0-plugins-base) +installPackages+=(gstreamer1.0-plugins-good) +installPackages+=(gstreamer1.0-plugins-bad) +installPackages+=(gstreamer1.0-plugins-rtp) +installPackages+=(gstreamer1.0-plugins-ugly) installPackages+=(libgstreamer-gl1.0-0) installPackages+=(gir1.2-gst-plugins-base-1.0) installPackages+=(gir1.2-gst-plugins-bad-1.0) +installPackages+=(libpipewire-0.3-dev) +installPackages+=(libspa-0.2-dev) ## Support for cross-building to x86 (needed by WebEngine boot2qt builds) #installPackages+=(g++-multilib) @@ -105,7 +113,7 @@ installPackages+=(libcurl4-openssl-dev) installPackages+=(libicu-dev) installPackages+=(zlib1g-dev) installPackages+=(zlib1g) -installPackages+=(openjdk-11-jdk) +installPackages+=(openjdk-17-jdk) installPackages+=(libgtk-3-dev) installPackages+=(ninja-build) installPackages+=(libssl-dev) @@ -163,6 +171,7 @@ installPackages+=(ssh) installPackages+=(diffstat) installPackages+=(binfmt-support) installPackages+=(zstd) +installPackages+=(libzstd-dev) # Vulkan is needed for examples installPackages+=(libvulkan-dev) # Needed for qtdltlogging @@ -237,7 +246,8 @@ installPackages+=(pkg-kde-tools) installPackages+=(unixodbc-dev) installPackages+=(zlib1g-dev) installPackages+=(libusb-1.0-0-dev) - +# password management support for Qt Creator +installPackages+=(libsecret-1-dev) echo "Running update for apt" waitLoop @@ -250,6 +260,12 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install cmake apt-cacher-ng -t # Disable keyring password prompt keyring --disable +pip install --user -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" + +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin" + # SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH" #OpenSSLVersion="$(openssl version |cut -b 9-14)" diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/20-sccache.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/20-sccache.sh new file mode 100755 index 00000000000..b371d947924 --- /dev/null +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/22-mqtt_broker.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/22-mqtt_broker.sh new file mode 100644 index 00000000000..b0791cb18f8 --- /dev/null +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/22-mqtt_broker.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2018 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/mqtt_broker.sh +source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh" diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/41-install-golang.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/41-install-golang.sh new file mode 100755 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/41-install-upx.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/41-install-upx.sh new file mode 100755 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/90-squish.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/90-squish.sh new file mode 100644 index 00000000000..f803ccc1fa1 --- /dev/null +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/90-squish.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/squishInstall.sh" + diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/93-download-files-for-sbuild.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/93-download-files-for-sbuild.sh index b31a86f23e7..8d0e9e70f3c 100755 --- a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/93-download-files-for-sbuild.sh +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/93-download-files-for-sbuild.sh @@ -6,7 +6,7 @@ mkdir -p /home/qt/debian_packages cd /home/qt/debian_packages || exit # Backported cmake 3.24 -wget https://ci-files01-hki.intra.qt.io/input/debian/cmake/arm64-jammy/cmake-3.24-deb.tar.gz +wget https://ci-files01-hki.ci.qt.io/input/debian/cmake/arm64-jammy/cmake-3.24-deb.tar.gz tar xzf cmake-3.24-deb.tar.gz # get rest of ready made Ubuntu arm debian packages # so that sbuild can find those diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-disable-automounting.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-disable-automounting.sh new file mode 100644 index 00000000000..c9d490b1c3b --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-disable-automounting.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +sudo tee -a /etc/dconf/db/local.d/00-media-automount <<"EOF" +[org/gnome/desktop/media-handling] +automount=false +automount-open=false +EOF + +sudo dconf update + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-disable_net_lso.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-disable_net_lso.sh new file mode 100644 index 00000000000..4da6aaaa453 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-disable_net_lso.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "ETHTOOL_OPTS='-K \${DEVICE} tso off'" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1 diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-install_telegraf.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-install_telegraf.sh new file mode 100644 index 00000000000..729f90035bc --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-install_telegraf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/unix/telegraf_install.sh diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-refresh-subscription-manager.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-refresh-subscription-manager.sh new file mode 100644 index 00000000000..51417f1b24e --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-refresh-subscription-manager.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -e + +curl --retry 5 --retry-delay 10 --retry-max-time 60 http://ci-files01-hki.ci.qt.io/input/semisecure/redhat_ak_all_versions.sh -o "/tmp/redhat_ak.sh" &>/dev/null +sudo chmod 755 /tmp/redhat_ak.sh +/tmp/redhat_ak.sh + +# refresh local certificates +sudo subscription-manager refresh + +# Attach available subscriptions to system. This is needed when subscriptions are renewed. +sudo subscription-manager attach --auto + +sudo rm -f /tmp/redhat_ak.sh diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-remove_network_manager_secret_key.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-remove_network_manager_secret_key.sh new file mode 100644 index 00000000000..7f9790ae3fe --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-remove_network_manager_secret_key.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# Ipv6 link local becomes tentative and dadfailed if two systems has the same secret_key +# New unique secret key will be created automatically during start up. +# https://access.redhat.com/solutions/3553581 +echo "Removing secret_key" +sudo rm -f "/var/lib/NetworkManager/secret_key" + + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-remove_stable-privacy.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-remove_stable-privacy.sh new file mode 100644 index 00000000000..6d59f8668a1 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-remove_stable-privacy.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +echo "Change default stable-secret to based on MAC" +sudo sed -i '/^IPV6_ADDR_GEN_MODE/d' "/etc/sysconfig/network-scripts/ifcfg-enp1s0" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-set-ulimit.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-set-ulimit.sh new file mode 100644 index 00000000000..e951e82ac2a --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-set-ulimit.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/set_ulimit.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-systemsetup.sh new file mode 100644 index 00000000000..1645670e613 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/01-systemsetup.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/shared/network_test_server_ip.txt +source "$BASEDIR/../common/shared/network_test_server_ip.txt" + +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false +echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" +echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts +echo "Set DISPLAY" +echo 'export DISPLAY=":0"' >> ~/.bashrc +# for current session +export DISPLAY=:0 + +# Set timezone to UTC. +sudo timedatectl set-timezone Etc/UTC +# disable Automatic screen lock +gsettings set org.gnome.desktop.screensaver lock-enabled false +# disable blank screen power saving +gsettings set org.gnome.desktop.session idle-delay 0 + +# Set Wayland enable as false. +echo "Setting Wayland enable as false" +sudo sed -i 's/#WaylandEnable=false/WaylandEnable=false/g' /etc/gdm/custom.conf + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/03-enable-repos.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/03-enable-repos.sh new file mode 100644 index 00000000000..292c02a1dfd --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/03-enable-repos.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +echo "set WritePreparedUpdates=false" | sudo tee -a /etc/PackageKit/PackageKit.conf +sudo systemctl stop packagekit +sudo systemctl disable packagekit +while sudo fuser /usr/libexec/packagekitd >/dev/null 2>&1; do + echo "Waiting for PackageKit to finish..." + sleep 1 +done +sudo yum -y remove PackageKit gnome-software + +sudo subscription-manager config --rhsm.manage_repos=1 +sudo subscription-manager refresh + +# List available RHEL versions and bind with correct one +sudo subscription-manager release --list +sudo subscription-manager release --set=8.10 +sudo yum clean all + +# sudo yum config-manager --enable 'rhceph-4-tools-for-rhel-8-x86_64-rpms' +sudo yum config-manager --enable 'codeready-builder-for-rhel-8-x86_64-rpms' +sudo yum config-manager --enable 'rhel-8-for-x86_64-baseos-rpms' +sudo yum config-manager --enable 'rhel-8-for-x86_64-appstream-rpms' +# Epel is required for 'double-conversion-devel', 'libsqlite3x' and 'p7zip' +sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + +sudo yum clean all +# As well as this fetching the repository data, we also get a printout of the used repos +sudo yum repolist diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/03-install-gcc-toolset.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/03-install-gcc-toolset.sh new file mode 100644 index 00000000000..dfed74894a2 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/03-install-gcc-toolset.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +sudo yum -y install gcc-toolset-10 gcc-toolset-10-libatomic-devel + +echo "source /opt/rh/gcc-toolset-10/enable" >> ~/.bashrc diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/04-install-packages.sh new file mode 100644 index 00000000000..29415002977 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/04-install-packages.sh @@ -0,0 +1,189 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Remove update notifications and packagekit running in the background +sudo yum -y remove PackageKit gnome-software + +# CI: All platforms should have up-to-date packages when new provision is made +sudo yum -y update + +installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) +installPackages+=(git) +installPackages+=(zlib-devel) +installPackages+=(glib2-devel) +installPackages+=(openssl3) +installPackages+=(openssl3-devel) +installPackages+=(freetype-devel) +installPackages+=(fontconfig-devel) +installPackages+=(curl-devel) +installPackages+=(expat-devel) +installPackages+=(gettext-devel) +installPackages+=(perl-devel) +installPackages+=(dh-autoreconf) +# cmake build +installPackages+=(ninja-build) +installPackages+=(pcre2-devel) +installPackages+=(double-conversion-devel) +installPackages+=(zstd) +installPackages+=(libzstd-devel) +# update kernel +installPackages+=(kernel) +installPackages+=(kernel-tools) +installPackages+=(kernel-devel) +installPackages+=(kernel-core) +installPackages+=(kernel-modules) +installPackages+=(kernel-headers) +# EGL support +# mesa-libraries need to use older version than 22.1.5-2 which cause Xorg to crash +installPackages+=(mesa-libEGL-devel-21.3.4-1.el8) +installPackages+=(mesa-libGL-devel-21.3.4-1.el8) +installPackages+=(mesa-dri-drivers-21.3.4-1.el8.x86_64) +installPackages+=(mesa-libgbm-21.3.4-1.el8.x86_64) +installPackages+=(mesa-vulkan-drivers-21.3.4-1.el8.x86_64) +installPackages+=(libxkbfile-devel) +# Xinput2 +installPackages+=(libXi-devel) +installPackages+=(mysql-server) +installPackages+=(mysql) +installPackages+=(mysql-devel) +installPackages+=(postgresql-devel) +installPackages+=(cups-devel) +installPackages+=(dbus-devel) +# gstreamer 1 for QtMultimedia +# Note! gstreamer1-plugins-bad-free needs to be upgraded or it will conflicts with gstreamer1-plugins-base-devel +installPackages+=(gstreamer1-plugins-bad-free) +installPackages+=(gstreamer1-devel) +installPackages+=(gstreamer1-plugins-base-devel) +# pipewire for QtMultimedia +installPackages+=(pipewire-devel) +# for QtMultimedia, ffmpeg +installPackages+=(yasm) +installPackages+=(libva-devel) +# gtk3 style for QtGui/QStyle +installPackages+=(gtk3-devel) +# libusb1 for tqtc-boot2qt/qdb +installPackages+=(libusbx-devel) +# speech-dispatcher-devel for QtSpeech, otherwise it has no backend on Linux +installPackages+=(speech-dispatcher-devel) +# Python for pyside +installPackages+=(python3.11) +installPackages+=(python3.11-pip) +installPackages+=(python3.11-devel) +# WebEngine +installPackages+=(bison) +installPackages+=(flex) +installPackages+=(gperftools-libs) +installPackages+=(gperf) +installPackages+=(alsa-lib-devel) +installPackages+=(pulseaudio-libs-devel) +installPackages+=(libdrm-devel) +installPackages+=(libva-devel) +installPackages+=(libXtst-devel) +installPackages+=(libxshmfence-devel) +installPackages+=(nspr-devel) +installPackages+=(nss-devel) +installPackages+=(python3-html5lib) +installPackages+=(libatomic) +installPackages+=(mesa-libgbm-devel-21.3.4-1.el8.x86_64) +# For Android builds +installPackages+=(java-17-openjdk-devel-17.0.9.0.9) +# For receiving shasum +installPackages+=(perl-Digest-SHA) +# INTEGRITY requirements +installPackages+=(glibc.i686) +# Enable Qt Bluetooth +installPackages+=(bluez-libs-devel) +# QtNfc +installPackages+=(pcsc-lite-devel) +# QtWebKit +installPackages+=(libxml2-devel) +installPackages+=(libxslt-devel) +# For building Wayland from source +installPackages+=(libffi-devel) +# QtWayland +#installPackages+=(mesa-libwayland-egl) +#installPackages+=(mesa-libwayland-egl-devel) +installPackages+=(libwayland-client) +installPackages+=(libwayland-cursor) +installPackages+=(libwayland-server) +# Jenkins +installPackages+=(chrpath) +# libxkbcommon +installPackages+=(libxkbcommon-devel) +installPackages+=(libxkbcommon-x11-devel) +# xcb-util-* libraries +installPackages+=(xcb-util) +installPackages+=(xcb-util-image-devel) +installPackages+=(xcb-util-keysyms-devel) +installPackages+=(xcb-util-wm-devel) +installPackages+=(xcb-util-renderutil-devel) +installPackages+=(xcb-util-cursor) +installPackages+=(xcb-util-cursor-devel) + +# ODBC support +installPackages+=(unixODBC-devel) +installPackages+=(unixODBC) +# Vulkan support +installPackages+=(vulkan-devel) +installPackages+=(vulkan-tools) +# Conan: For Python build +installPackages+=(xz-devel) +installPackages+=(zlib-devel) +installPackages+=(libffi-devel) +installPackages+=(libsqlite3x-devel) +# Build.pl +installPackages+=(perl-Data-Dumper) +# In RedHat these come with Devtoolset +installPackages+=(gcc) +installPackages+=(gcc-c++) +installPackages+=(make) +# Open source VMware Tools +installPackages+=(open-vm-tools) +# cifs-utils, for mounting smb drive +installPackages+=(keyutils) +installPackages+=(cifs-utils) +# used for reading vcpkg packages version, from vcpkg.json +installPackages+=(jq) +# zip, needed for vcpkg caching +installPackages+=(zip) +# OpenSSL requirement, built by vcpkg +installPackages+=(perl-IPC-Cmd) +# password management support for Qt Creator +installPackages+=(libsecret-devel) +# For tst_license.pl with all the machines generating SBOM +installPackages+=(perl-JSON) + +sudo yum -y install "${installPackages[@]}" + +sudo dnf -y module install nodejs:16 + +# We shouldn't use yum to install virtualenv. The one found from package repo is not +# working, but we can use installed pip +sudo pip3 install --upgrade pip +# Configure pip +sudo pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache +sudo pip config --user set global.extra-index-url https://pypi.org/simple/ + +sudo pip3 install virtualenv wheel +sudo python3.11 -m pip install virtualenv wheel +sudo python3.11 -m pip install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" +# For now we don't set QT_SBOM_PYTHON_APPS_PATH here, and rely on the build system to find the +# system python3.11. + +sudo /usr/bin/pip3 install wheel +sudo /usr/bin/pip3 install dataclasses + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + +OpenSSLVersion="$(openssl3 version |cut -b 9-14)" +echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt + +# List all available updates +sudo yum -y list updates diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/04-p7zip.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/04-p7zip.sh new file mode 100644 index 00000000000..98be8b40d10 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/04-p7zip.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +name="p7zip" +version="7-11" +sudo yum -y install "$name" + +# Link 7za to 7z so we can use existing installation scripts +sudo ln -s /usr/bin/7za /usr/bin/7z + +echo "$name = $version" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-install-ninja.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-install-ninja.sh new file mode 100644 index 00000000000..adbb6349a42 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-install-ninja.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-ninja.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-install-patchelf.sh new file mode 100644 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-libclang-v100-dyn.sh new file mode 100644 index 00000000000..2e08049dcbe --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-libclang-v100-dyn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang-v100-dyn.sh +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-libclang.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-libclang.sh new file mode 100644 index 00000000000..cc68ed1f1ad --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-libclang.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang.sh +"$BASEDIR/../common/unix/libclang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-mount-vcpkg-cache-drive.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-mount-vcpkg-cache-drive.sh new file mode 100644 index 00000000000..ed49b3a5418 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/05-mount-vcpkg-cache-drive.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/mount-vcpkg-cache-drive.sh +source "${BASH_SOURCE%/*}/../common/linux/mount-vcpkg-cache-drive.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/09-disable_selinux.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/09-disable_selinux.sh new file mode 100644 index 00000000000..17f9422fe1f --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/09-disable_selinux.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/disable_selinux.sh +source "${BASH_SOURCE%/*}/../common/linux/disable_selinux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/09-openssl.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/09-openssl.sh new file mode 100644 index 00000000000..ae8024f218a --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/09-openssl.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Required by Rhel source build +sudo yum -y install perl-IPC-Cmd + +"$(dirname "$0")/../common/unix/install-openssl.sh" "linux" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/20-sccache.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/20-sccache.sh new file mode 100644 index 00000000000..b371d947924 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/22-mqtt_broker.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/22-mqtt_broker.sh new file mode 100644 index 00000000000..fd5685377d0 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/22-mqtt_broker.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/unix/mqtt_broker.sh +source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-fbx.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-fbx.sh new file mode 100644 index 00000000000..16a9bda85d9 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-fbx.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/fbx_linux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install-conan.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install-conan.sh new file mode 100644 index 00000000000..67a4f9116ec --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install-conan.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-conan.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install-git.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install-git.sh new file mode 100644 index 00000000000..7a73f354e16 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install-git.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-git.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install_icu.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install_icu.sh new file mode 100644 index 00000000000..0effaefaa72 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/30-install_icu.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +# This script will install ICU + +icuVersion="73.2" +icuLocation="/usr/lib64" +sha1="d2bbb7b2a9a9ee00dba5cc6a68137f6c8a98c27e" +baseBinaryPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Rhel8.6-x64.7z" +baseBinaryPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel8.6-x64.7z" + +sha1Dev="edc9cba31ffeac28bf7360c52b85b5e4d2f39043" +develPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Rhel8.6-x64-devel.7z" +develPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel8.6-x64-devel.7z" + +echo "Installing custom ICU $icuVersion $sha1 packages on RHEL to $icuLocation" + +targetFile=$(mktemp) +DownloadURL "$baseBinaryPackageURL" "$baseBinaryPackageExternalURL" "$sha1" "$targetFile" +sudo 7z x -y -o/usr/lib64 "$targetFile" +sudo rm "$targetFile" + +echo "Installing custom ICU devel packages on RHEL" + +tempDir=$(mktemp -d) + +targetFile=$(mktemp) +DownloadURL "$develPackageURL" "$develPackageExternalURL" "$sha1Dev" "$targetFile" +7z x -y -o"$tempDir" "$targetFile" + +sudo cp -a "$tempDir"/lib/* /usr/lib64 +sudo cp -a "$tempDir"/* /usr/ + +sudo rm "$targetFile" +sudo rm -fr "$tempDir" + +sudo /sbin/ldconfig + +echo "ICU = $icuVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/35-install-breakpad.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/35-install-breakpad.sh new file mode 100644 index 00000000000..8a9dde56be4 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/35-install-breakpad.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-breakpad.sh +source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/40-android_linux.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/40-android_linux.sh new file mode 100644 index 00000000000..f7591d8253e --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/40-android_linux.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/android_linux.sh +source "${BASH_SOURCE%/*}/../common/linux/android_linux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/40-install-cmake.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/40-install-cmake.sh new file mode 100644 index 00000000000..7effb8d769d --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/40-install-cmake.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs CMake 3.6.2 + +set -ex + +# CMake is needed for autotests that verify that Qt can be built with CMake + +# shellcheck source=../common/linux/cmake_linux.sh +source "${BASH_SOURCE%/*}/../common/linux/cmake_linux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-golang.sh new file mode 100644 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-upx.sh new file mode 100644 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-vcpkg.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-vcpkg.sh new file mode 100644 index 00000000000..aa88364d005 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/41-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/42-install-vcpkg-ports.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/42-install-vcpkg-ports.sh new file mode 100644 index 00000000000..4bc799eb6da --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/42-install-vcpkg-ports.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +echo "Installing vcpkg ports" +echo "VCPKG_ROOT: ${VCPKG_ROOT}" +echo "ANDOID_NDK_HOME: ${ANDROID_NDK_HOME}" + +# Installing common ports +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-vcpkg-ports.sh" + +# Installing platform specific ports +"$BASEDIR/../common/linux/install-vcpkg-ports-android.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/50-openssl_for_android_linux.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/50-openssl_for_android_linux.sh new file mode 100644 index 00000000000..4e5ec7f02ad --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/50-openssl_for_android_linux.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/openssl_for_android.sh +source "${BASH_SOURCE%/*}/../common/unix/openssl_for_android.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/60-install_protobuf.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/60-install_protobuf.sh new file mode 100644 index 00000000000..ef6fdec0d19 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/60-install_protobuf.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_protobuf.sh +source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/61-install_grpc.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/61-install_grpc.sh new file mode 100644 index 00000000000..ba69ffefbe7 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/61-install_grpc.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_grpc.sh +source "${BASH_SOURCE%/*}/../common/unix/install_grpc.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/70-install_QemuGA.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/70-install_QemuGA.sh new file mode 100644 index 00000000000..62b799e050f --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/70-install_QemuGA.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs QEMU Guest Agent + +set -ex + +sudo yum -y install qemu-guest-agent +sudo systemctl start qemu-guest-agent diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/70-install_dwz.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/70-install_dwz.sh new file mode 100644 index 00000000000..3647cc48903 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/70-install_dwz.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +sudo yum -y install elfutils-libelf-devel + +# shellcheck source=../common/linux/install_dwz.sh +source "${BASH_SOURCE%/*}/../common/linux/install_dwz.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-bootstrap-autostart.sh new file mode 100644 index 00000000000..1ff4385064d --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-bootstrap-autostart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-install-ffmpeg.sh new file mode 100644 index 00000000000..2c805227332 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-install-ffmpeg.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# TODO: investigate why the FFmpeg plugin can't find shared FFmpeg on rhel-8.8 / 8.10 +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86_64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-mimer.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-mimer.sh new file mode 100644 index 00000000000..bff2a7c75d7 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-mimer.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/mimersql.sh" "openssl-1" "rpm" diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-squish.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-squish.sh new file mode 100644 index 00000000000..f803ccc1fa1 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/90-squish.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/squishInstall.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-cleanup.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-cleanup.sh new file mode 100644 index 00000000000..842cd294cef --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-cleanup.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +"$(dirname "$0")"/../common/linux/cleanup_cache.sh diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-enable_test_stacktraces.sh new file mode 100644 index 00000000000..600b7850b25 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-version.sh b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-version.sh new file mode 100644 index 00000000000..725351aeb61 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.10-x86_64/99-version.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script needs to be called last during provisioning so that the software information will show up last in provision log. + +# Storage installed RPM packages information + +set -ex + +# shellcheck disable=SC2129 +echo "*********************************************" >> ~/versions.txt +echo "***** All installed RPM packages *****" >> ~/versions.txt +rpm -q -a | sort >> ~/versions.txt +echo "*********************************************" >> ~/versions.txt + +"$(dirname "$0")/../common/linux/version.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/01-systemsetup.sh index 434c0651381..b39fe793556 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/01-systemsetup.sh @@ -8,6 +8,8 @@ BASEDIR=$(dirname "$0") # shellcheck source=../common/shared/network_test_server_ip.txt source "$BASEDIR/../common/shared/network_test_server_ip.txt" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/04-install-packages.sh index fda995ca31f..f852a9df4ee 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/04-install-packages.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/04-install-packages.sh @@ -11,6 +11,8 @@ sudo yum -y remove PackageKit gnome-software sudo yum -y update installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) installPackages+=(git) installPackages+=(zlib-devel) installPackages+=(glib2-devel) @@ -27,6 +29,7 @@ installPackages+=(ninja-build) installPackages+=(pcre2-devel) installPackages+=(double-conversion-devel) installPackages+=(zstd) +installPackages+=(libzstd-devel) # EGL support installPackages+=(mesa-libEGL-devel) installPackages+=(mesa-libGL-devel) @@ -139,5 +142,8 @@ sudo pip3 install virtualenv wheel sudo /usr/bin/pip3 install wheel +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl version |cut -b 9-14)" echo "OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.2-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/01-systemsetup.sh index b4bbc865667..46b321dda8e 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/01-systemsetup.sh @@ -8,6 +8,8 @@ BASEDIR=$(dirname "$0") # shellcheck source=../common/shared/network_test_server_ip.txt source "$BASEDIR/../common/shared/network_test_server_ip.txt" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/04-install-packages.sh index da03076aebb..30c045fd4eb 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/04-install-packages.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/04-install-packages.sh @@ -11,6 +11,8 @@ sudo yum -y remove PackageKit gnome-software sudo yum -y update installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) installPackages+=(git) installPackages+=(zlib-devel) installPackages+=(glib2-devel) @@ -28,6 +30,7 @@ installPackages+=(ninja-build) installPackages+=(pcre2-devel) installPackages+=(double-conversion-devel) installPackages+=(zstd) +installPackages+=(libzstd-devel) # EGL support installPackages+=(mesa-libEGL-devel) installPackages+=(mesa-libGL-devel) @@ -151,5 +154,8 @@ sudo python3.8 -m pip install virtualenv wheel sudo /usr/bin/pip3 install wheel +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl3 version |cut -b 9-14)" echo "OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/01-systemsetup.sh index 8d43ace0785..1645670e613 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/01-systemsetup.sh @@ -9,6 +9,8 @@ BASEDIR=$(dirname "$0") # shellcheck source=../common/shared/network_test_server_ip.txt source "$BASEDIR/../common/shared/network_test_server_ip.txt" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/04-install-packages.sh index 9a81bd12965..2114aa5f9cf 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/04-install-packages.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/04-install-packages.sh @@ -12,6 +12,8 @@ sudo yum -y remove PackageKit gnome-software sudo yum -y update installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) installPackages+=(git) installPackages+=(zlib-devel) installPackages+=(glib2-devel) @@ -29,6 +31,7 @@ installPackages+=(ninja-build) installPackages+=(pcre2-devel) installPackages+=(double-conversion-devel) installPackages+=(zstd) +installPackages+=(libzstd-devel) # update kernel installPackages+=(kernel) installPackages+=(kernel-tools) @@ -161,5 +164,8 @@ sudo python3.8 -m pip install virtualenv wheel sudo /usr/bin/pip3 install wheel sudo /usr/bin/pip3 install dataclasses +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl3 version |cut -b 9-14)" echo "OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/41-install-golang.sh new file mode 100755 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/41-install-upx.sh new file mode 100755 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.6-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/01-systemsetup.sh index 8d43ace0785..1645670e613 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/01-systemsetup.sh @@ -9,6 +9,8 @@ BASEDIR=$(dirname "$0") # shellcheck source=../common/shared/network_test_server_ip.txt source "$BASEDIR/../common/shared/network_test_server_ip.txt" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/04-install-packages.sh index d1d600dae57..b2477251e3d 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/04-install-packages.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/04-install-packages.sh @@ -12,6 +12,8 @@ sudo yum -y remove PackageKit gnome-software sudo yum -y update installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) installPackages+=(git) installPackages+=(zlib-devel) installPackages+=(glib2-devel) @@ -29,6 +31,7 @@ installPackages+=(ninja-build) installPackages+=(pcre2-devel) installPackages+=(double-conversion-devel) installPackages+=(zstd) +installPackages+=(libzstd-devel) # update kernel installPackages+=(kernel) installPackages+=(kernel-tools) @@ -57,6 +60,8 @@ installPackages+=(dbus-devel) installPackages+=(gstreamer1-plugins-bad-free) installPackages+=(gstreamer1-devel) installPackages+=(gstreamer1-plugins-base-devel) +# pipewire for QtMultimedia +installPackages+=(pipewire-devel) # for QtMultimedia, ffmpeg installPackages+=(yasm) installPackages+=(libva-devel) @@ -149,6 +154,8 @@ installPackages+=(jq) installPackages+=(zip) # OpenSSL requirement, built by vcpkg installPackages+=(perl-IPC-Cmd) +# password management support for Qt Creator +installPackages+=(libsecret-devel) sudo yum -y install "${installPackages[@]}" @@ -164,9 +171,16 @@ sudo pip config --user set global.extra-index-url https://pypi.org/simple/ sudo pip3 install virtualenv wheel # Just make sure we have virtualenv to run with python3.8 -m virtualenv sudo python3.11 -m pip install virtualenv wheel +sudo python3.11 -m pip install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" +# For now we don't set QT_SBOM_PYTHON_APPS_PATH here, and rely on the build system to find the +# system python3.11. sudo /usr/bin/pip3 install wheel sudo /usr/bin/pip3 install dataclasses +# No sbom_requirements.txt, because it requires Python 3.9 for poetry_core -> spdx_tools and we have 3.8 + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt OpenSSLVersion="$(openssl3 version |cut -b 9-14)" echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/41-install-golang.sh new file mode 100755 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/41-install-upx.sh new file mode 100755 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh index 06e28f34c7b..08d455cf5f2 100755 --- a/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-linux-RHEL-8.8-x86_64/90-install-ffmpeg.sh @@ -2,6 +2,7 @@ #Copyright (C) 2023 The Qt Company Ltd #SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +# TODO: investigate why the FFmpeg plugin can't find shared FFmpeg on rhel-8.8 source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86_64" source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-x86" diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/01-systemsetup.sh index 5e3ecb27f08..de6abd0a977 100755 --- a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/01-systemsetup.sh @@ -25,6 +25,8 @@ gsettings set org.gnome.desktop.session idle-delay 0 gsettings set org.gnome.desktop.interface enable-hot-corners false # Disable windows key from showing the GNOME Shell Activities overlay gsettings set org.gnome.mutter overlay-key "" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false # Set Wayland enable as false. echo "Setting Wayland enable as false" diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/04-install-packages.sh index 79c3476ab9e..2942dd8af54 100755 --- a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/04-install-packages.sh +++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/04-install-packages.sh @@ -11,6 +11,8 @@ sudo yum -y remove PackageKit gnome-software sudo yum -y update installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) installPackages+=(git) installPackages+=(zlib-devel) installPackages+=(glib2-devel) @@ -29,6 +31,7 @@ installPackages+=(ninja-build) installPackages+=(pcre2-devel) installPackages+=(double-conversion-devel) installPackages+=(zstd) +installPackages+=(libzstd-devel) # EGL support # mesa-libEGL-devel need to use older version than 22.1.5-2.el9 which cause Xorg to crash installPackages+=(mesa-libEGL-devel-21.3.4-2.el9) @@ -139,6 +142,8 @@ installPackages+=(nfs-utils) # cifs-utils, for mounting smb drive installPackages+=(keyutils) installPackages+=(cifs-utils) +# password management support for Qt Creator +installPackages+=(libsecret-devel) sudo yum -y install "${installPackages[@]}" @@ -163,5 +168,8 @@ sudo /usr/bin/pip3 install wheel # Make FindPython3.cmake to find python3 sudo ln -s /usr/bin/python3 /usr/local/bin/python3 +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl version |cut -b 9-14)" echo "OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/41-install-golang.sh new file mode 100755 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/41-install-upx.sh new file mode 100755 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/01-systemsetup.sh index fbd00eef436..4fd0b9e71eb 100755 --- a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/01-systemsetup.sh @@ -25,6 +25,8 @@ gsettings set org.gnome.desktop.session idle-delay 0 gsettings set org.gnome.desktop.interface enable-hot-corners false # Disable windows key from showing the GNOME Shell Activities overlay gsettings set org.gnome.mutter overlay-key "" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false # Set Wayland enable as false. echo "Setting Wayland enable as false" diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/04-install-packages.sh index 279d66a5c3a..4f17d922ea9 100755 --- a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/04-install-packages.sh +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/04-install-packages.sh @@ -11,6 +11,8 @@ sudo yum -y remove PackageKit gnome-software sudo yum -y update installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) installPackages+=(git) installPackages+=(zlib-devel) installPackages+=(glib2-devel) @@ -29,6 +31,7 @@ installPackages+=(ninja-build) installPackages+=(pcre2-devel) installPackages+=(double-conversion-devel) installPackages+=(zstd) +installPackages+=(libzstd-devel) # EGL support # mesa-libEGL-devel need to use older version than 22.1.5-2.el9 which cause Xorg to crash #installPackages+=(mesa-libEGL-devel-21.3.4-2.el9) @@ -62,6 +65,9 @@ installPackages+=(dbus-devel) installPackages+=(gstreamer1-plugins-bad-free) installPackages+=(gstreamer1-devel) installPackages+=(gstreamer1-plugins-base-devel) +installPackages+=(gstreamer1-plugin-openh264) +# pipewire for QtMultimedia +installPackages+=(pipewire-devel) # yasm for QtMultimedia installPackages+=(yasm) # gtk3 style for QtGui/QStyle @@ -159,6 +165,8 @@ installPackages+=(jq) installPackages+=(zip) # OpenSSL requirement, built by vcpkg installPackages+=(perl-IPC-Cmd) +# password management support for Qt Creator +installPackages+=(libsecret-devel) sudo yum -y install "${installPackages[@]}" @@ -176,12 +184,23 @@ sudo pip config --user set global.extra-index-url https://pypi.org/simple/ sudo pip3 install virtualenv wheel # Just make sure we have virtualenv to run with python3.8 -m virtualenv sudo python -m pip install virtualenv wheel +sudo python -m pip install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" sudo /usr/bin/pip3 install wheel +sudo /usr/bin/pip3 install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" + +# Provisioning during installation says: +# 'The script sbom2doc is installed in '/usr/local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/usr/local/bin" # Make FindPython3.cmake to find python3 sudo ln -s /usr/bin/python3 /usr/local/bin/python3 +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl version |cut -b 9-14)" echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-ninja.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-ninja.sh new file mode 100644 index 00000000000..adbb6349a42 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-ninja.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-ninja.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.sh new file mode 100755 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/41-install-golang.sh new file mode 100755 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/41-install-upx.sh new file mode 100755 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-disable_net_lso.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-disable_net_lso.sh new file mode 100644 index 00000000000..4da6aaaa453 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-disable_net_lso.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "ETHTOOL_OPTS='-K \${DEVICE} tso off'" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1 diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-install_telegraf.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-install_telegraf.sh new file mode 100644 index 00000000000..729f90035bc --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-install_telegraf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/unix/telegraf_install.sh diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-refresh-subscription-manager.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-refresh-subscription-manager.sh new file mode 100644 index 00000000000..51417f1b24e --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-refresh-subscription-manager.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -e + +curl --retry 5 --retry-delay 10 --retry-max-time 60 http://ci-files01-hki.ci.qt.io/input/semisecure/redhat_ak_all_versions.sh -o "/tmp/redhat_ak.sh" &>/dev/null +sudo chmod 755 /tmp/redhat_ak.sh +/tmp/redhat_ak.sh + +# refresh local certificates +sudo subscription-manager refresh + +# Attach available subscriptions to system. This is needed when subscriptions are renewed. +sudo subscription-manager attach --auto + +sudo rm -f /tmp/redhat_ak.sh diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-remove_network_manager_secret_key.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-remove_network_manager_secret_key.sh new file mode 100644 index 00000000000..7f9790ae3fe --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-remove_network_manager_secret_key.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# Ipv6 link local becomes tentative and dadfailed if two systems has the same secret_key +# New unique secret key will be created automatically during start up. +# https://access.redhat.com/solutions/3553581 +echo "Removing secret_key" +sudo rm -f "/var/lib/NetworkManager/secret_key" + + diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-set-ulimit.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-set-ulimit.sh new file mode 100644 index 00000000000..e951e82ac2a --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-set-ulimit.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/set_ulimit.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-systemsetup.sh new file mode 100644 index 00000000000..4fd0b9e71eb --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/01-systemsetup.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/shared/network_test_server_ip.txt +source "$BASEDIR/../common/shared/network_test_server_ip.txt" + +echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" +echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts +echo "Set DISPLAY" +echo 'export DISPLAY=":0"' >> ~/.bashrc +# for current session +export DISPLAY=:0 + +# Set timezone to UTC. +sudo timedatectl set-timezone Etc/UTC +# disable Automatic screen lock +gsettings set org.gnome.desktop.screensaver lock-enabled false +# disable blank screen power saving +gsettings set org.gnome.desktop.session idle-delay 0 +# Disable hot corner feature +gsettings set org.gnome.desktop.interface enable-hot-corners false +# Disable windows key from showing the GNOME Shell Activities overlay +gsettings set org.gnome.mutter overlay-key "" +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false + +# Set Wayland enable as false. +echo "Setting Wayland enable as false" +sudo sed -i 's/#WaylandEnable=false/WaylandEnable=false/g' /etc/gdm/custom.conf diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/02-install-xcb_util_cursor.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/02-install-xcb_util_cursor.sh new file mode 100644 index 00000000000..353297db11d --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/02-install-xcb_util_cursor.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Install xcb-util-cursor* libraries before updating repos. In updated repos these libraries are no longer available. +# QTQAINFRA-6325 +sudo yum -y install xcb-util-cursor +sudo yum -y install xcb-util-cursor-devel diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/03-enable-repos.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/03-enable-repos.sh new file mode 100644 index 00000000000..30f07320393 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/03-enable-repos.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +echo "set WritePreparedUpdates=false" | sudo tee -a /etc/PackageKit/PackageKit.conf +sudo systemctl stop packagekit +sudo systemctl mask --now packagekit +while sudo fuser /usr/libexec/packagekitd >/dev/null 2>&1; do + echo "Waiting for PackageKit to finish..." + sleep 1 + sudo systemctl stop packagekit +done +sudo yum -y remove PackageKit gnome-software + +sudo subscription-manager config --rhsm.manage_repos=1 +sudo subscription-manager refresh + +# List available RHEL versions and bind with correct one +sudo subscription-manager release --list +sudo subscription-manager release --set=9.4 +sudo yum clean all + +# sudo yum config-manager --enable 'rhceph-4-tools-for-rhel-8-x86_64-rpms' +sudo yum config-manager --enable 'codeready-builder-for-rhel-9-x86_64-rpms' +sudo yum config-manager --enable 'rhel-9-for-x86_64-baseos-rpms' +sudo yum config-manager --enable 'rhel-9-for-x86_64-appstream-rpms' +# Epel is required for 'double-conversion-devel', 'libsqlite3x' and 'p7zip' +sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + +sudo yum clean all +# As well as this fetching the repository data, we also get a printout of the used repos +sudo yum repolist diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/04-install-packages.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/04-install-packages.sh new file mode 100644 index 00000000000..15d5c3fe55d --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/04-install-packages.sh @@ -0,0 +1,212 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Remove update notifications and packagekit running in the background +sudo yum -y remove PackageKit gnome-software + +# CI: All platforms should have up-to-date packages when new provision is made +sudo yum -y update + +installPackages=() +# Make sure needed ca-certificates are available +installPackages+=(ca-certificates) +installPackages+=(git) +installPackages+=(zlib-devel) +installPackages+=(glib2-devel) +installPackages+=(openssl-devel) +installPackages+=(freetype-devel) +installPackages+=(fontconfig-devel) +installPackages+=(curl-devel) +installPackages+=(expat-devel) +installPackages+=(gettext-devel) +installPackages+=(perl-devel) +# Required by some old pkg perl script, FindBin.pm was moved to new package in perl 5.32 +installPackages+=(perl-FindBin) +installPackages+=(dh-autoreconf) +# cmake build +installPackages+=(ninja-build) +installPackages+=(pcre2-devel) +installPackages+=(double-conversion-devel) +installPackages+=(zstd) +installPackages+=(libzstd-devel) +# EGL support +# mesa-libEGL-devel need to use older version than 22.1.5-2.el9 which cause Xorg to crash +#installPackages+=(mesa-libEGL-devel-21.3.4-2.el9) +#installPackages+=(mesa-libGL-devel-21.3.4-2.el9) + +# Using same mesa libraries for RHEL 9.2 which also RHEL 8.8 had due to Xorg crash issue: +#installPackages+=(mesa-libEGL-devel-21.3.4-1.el9.x86_64) +#installPackages+=(mesa-libGL-devel-21.3.4-1.el9.x86_64) +#installPackages+=(mesa-dri-drivers-21.3.4-1.el9.x86_64) +#installPackages+=(mesa-libgbm-21.3.4-1.el9.x86_64) +#installPackages+=(mesa-vulkan-drivers-21.3.4-1.el9.x86_64) + +# Same as lines above but with -2 version which should be found for el9 +installPackages+=(mesa-libEGL-devel-21.3.4-2.el9.x86_64) +installPackages+=(mesa-libGL-devel-21.3.4-2.el9.x86_64) +installPackages+=(mesa-dri-drivers-21.3.4-2.el9.x86_64) +installPackages+=(mesa-libgbm-21.3.4-2.el9.x86_64) +installPackages+=(mesa-vulkan-drivers-21.3.4-2.el9.x86_64) + +installPackages+=(libxkbfile-devel) +# Xinput2 +installPackages+=(libXi-devel) +installPackages+=(mysql-server) +installPackages+=(mysql) +installPackages+=(mysql-devel) +installPackages+=(postgresql-devel) +installPackages+=(cups-devel) +installPackages+=(dbus-devel) +# gstreamer 1 for QtMultimedia +# Note! gstreamer1-plugins-bad-free needs to be upgraded or it will conflicts with gstreamer1-plugins-base-devel +installPackages+=(gstreamer1-plugins-bad-free) +installPackages+=(gstreamer1-devel) +installPackages+=(gstreamer1-plugins-base-devel) +installPackages+=(gstreamer1-plugin-openh264) +# pipewire for QtMultimedia +installPackages+=(pipewire-devel) +# yasm for QtMultimedia +installPackages+=(yasm) +# gtk3 style for QtGui/QStyle +installPackages+=(gtk3-devel) +# libusb1 for tqtc-boot2qt/qdb +installPackages+=(libusbx-devel) +# speech-dispatcher-devel for QtSpeech, otherwise it has no backend on Linux +installPackages+=(speech-dispatcher-devel) +# Python 2 devel and pip. python-pip requires the EPEL repository to be added +# Python 2 no longer supported +# installPackages+=(python2-devel python2-pip) +# Python 3 with python-devel, pip and virtualenv +installPackages+=(python3) +installPackages+=(python3-devel) +# WebEngine +installPackages+=(bison) +installPackages+=(flex) +installPackages+=(gperftools-libs) +installPackages+=(gperf) +installPackages+=(alsa-lib-devel) +installPackages+=(pulseaudio-libs-devel) +installPackages+=(libdrm-devel) +installPackages+=(libva-devel) +installPackages+=(libXtst-devel) +installPackages+=(libxshmfence-devel) +installPackages+=(nspr-devel) +installPackages+=(nss-devel) +installPackages+=(python3-html5lib) +installPackages+=(libstdc++-static) +installPackages+=(mesa-libgbm-devel-21.3.4-2.el9.x86_64) +# For Android builds +installPackages+=(java-17-openjdk-devel-17.0.9.0.9) +# For receiving shasum +installPackages+=(perl-Digest-SHA) +# INTEGRITY requirements +installPackages+=(glibc.i686) +# Enable Qt Bluetooth +installPackages+=(bluez-libs-devel) +# QtNfc +installPackages+=(pcsc-lite-devel) +# QtWebKit +installPackages+=(libxml2-devel) +installPackages+=(libxslt-devel) +# For building Wayland from source +installPackages+=(libffi-devel) +# QtWayland +# installPackages+=(mesa-libwayland-egl) +# installPackages+=(mesa-libwayland-egl-devel) +installPackages+=(libwayland-egl) +installPackages+=(libwayland-client) +installPackages+=(libwayland-cursor) +installPackages+=(libwayland-server) +# Jenkins +installPackages+=(chrpath) +# libxkbcommon +installPackages+=(libxkbcommon-devel) +installPackages+=(libxkbcommon-x11-devel) +# xcb-util-* libraries +installPackages+=(xcb-util) +installPackages+=(xcb-util-image-devel) +installPackages+=(xcb-util-keysyms-devel) +installPackages+=(xcb-util-wm-devel) +installPackages+=(xcb-util-renderutil-devel) +installPackages+=(xcb-util-cursor) +installPackages+=(xcb-util-cursor-devel) + +# ODBC support +installPackages+=(unixODBC-devel) +installPackages+=(unixODBC) +# Vulkan support +installPackages+=(vulkan-devel) +installPackages+=(vulkan-tools) +# Conan: For Python build +installPackages+=(xz-devel) +installPackages+=(zlib-devel) +installPackages+=(libffi-devel) +installPackages+=(libsqlite3x-devel) +# Build.pl +installPackages+=(perl-Data-Dumper) +# In RedHat these come with Devtoolset +installPackages+=(gcc) +installPackages+=(gcc-c++) +installPackages+=(make) +installPackages+=(gcc-toolset-12) +# Open source VMware Tools +installPackages+=(open-vm-tools) +# nfs-utils is needed to make mount work with ci-files01 +installPackages+=(nfs-utils) +# cifs-utils, for mounting smb drive +installPackages+=(keyutils) +installPackages+=(cifs-utils) +# used for reading vcpkg packages version, from vcpkg.json +installPackages+=(jq) +# zip, needed for vcpkg caching +installPackages+=(zip) +# OpenSSL requirement, built by vcpkg +installPackages+=(perl-IPC-Cmd) +# password management support for Qt Creator +installPackages+=(libsecret-devel) +# For Firebird in RTA +installPackages+=(libtommath-devel) +# For tst_license.pl with all the machines generating SBOM +installPackages+=(perl-JSON) + +sudo yum -y install "${installPackages[@]}" + +sudo dnf install nodejs-16.14.0-4.el9_0 -y +# Required by QtCore +sudo dnf install 'perl(English)' -y + +# We shouldn't use yum to install virtualenv. The one found from package repo is not +# working, but we can use installed pip +sudo pip3 install --upgrade pip +# Configure pip +sudo pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache +sudo pip config --user set global.extra-index-url https://pypi.org/simple/ + +sudo pip3 install virtualenv wheel +# Just make sure we have virtualenv to run with python3.8 -m virtualenv +sudo python -m pip install virtualenv wheel +sudo python -m pip install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" + +sudo /usr/bin/pip3 install wheel +sudo /usr/bin/pip3 install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" + +# Provisioning during installation says: +# 'The script sbom2doc is installed in '/usr/local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/usr/local/bin" + +# Make FindPython3.cmake to find python3 +sudo ln -s /usr/bin/python3 /usr/local/bin/python3 + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + +OpenSSLVersion="$(openssl version |cut -b 9-14)" +echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt + +# List all available updates +sudo yum -y list updates diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/04-p7zip.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/04-p7zip.sh new file mode 100644 index 00000000000..f1035285410 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/04-p7zip.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +name="p7zip" +version="7-11" +sudo yum -y install "$name" + +# Link 7za to 7z so we can use existing installation scripts +sudo ln -s /usr/bin/7za /usr/bin/7z + +echo "$name = $version" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-install-ninja.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-install-ninja.sh new file mode 100644 index 00000000000..adbb6349a42 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-install-ninja.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-ninja.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-install-patchelf.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-install-patchelf.sh new file mode 100644 index 00000000000..495e3d4ace5 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-install-patchelf.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-libclang-v100-dyn.sh new file mode 100644 index 00000000000..2e08049dcbe --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-libclang-v100-dyn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang-v100-dyn.sh +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-libclang.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-libclang.sh new file mode 100644 index 00000000000..cc68ed1f1ad --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-libclang.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang.sh +"$BASEDIR/../common/unix/libclang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-mount-vcpkg-cache-drive.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-mount-vcpkg-cache-drive.sh new file mode 100644 index 00000000000..ed49b3a5418 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/05-mount-vcpkg-cache-drive.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/mount-vcpkg-cache-drive.sh +source "${BASH_SOURCE%/*}/../common/linux/mount-vcpkg-cache-drive.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/09-disable_selinux.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/09-disable_selinux.sh new file mode 100644 index 00000000000..d044472b192 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/09-disable_selinux.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/disable_selinux.sh +source "${BASH_SOURCE%/*}/../common/linux/disable_selinux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/20-sccache.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/20-sccache.sh new file mode 100644 index 00000000000..b371d947924 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/22-mqtt_broker.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/22-mqtt_broker.sh new file mode 100644 index 00000000000..bb69e88a694 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/22-mqtt_broker.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/unix/mqtt_broker.sh +source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-fbx.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-fbx.sh new file mode 100644 index 00000000000..16a9bda85d9 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-fbx.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/fbx_linux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install-conan.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install-conan.sh new file mode 100644 index 00000000000..67a4f9116ec --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install-conan.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-conan.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install-git.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install-git.sh new file mode 100644 index 00000000000..7a73f354e16 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install-git.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-git.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install_icu.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install_icu.sh new file mode 100644 index 00000000000..8d365c9d556 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/30-install_icu.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +# This script will install ICU + +icuVersion="73.2" +icuLocation="/usr/lib64" +sha1="d2bbb7b2a9a9ee00dba5cc6a68137f6c8a98c27e" +baseBinaryPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Rhel8.6-x64.7z" +baseBinaryPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel8.6-x64.7z" + +sha1Dev="edc9cba31ffeac28bf7360c52b85b5e4d2f39043" +develPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Rhel8.6-x64-devel.7z" +develPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel8.6-x64-devel.7z" + +echo "Installing custom ICU $icuVersion $sha1 packages on RHEL to $icuLocation" + +targetFile=$(mktemp) +DownloadURL "$baseBinaryPackageURL" "$baseBinaryPackageExternalURL" "$sha1" "$targetFile" +sudo 7z x -y -o/usr/lib64 "$targetFile" +sudo rm "$targetFile" + +echo "Installing custom ICU devel packages on RHEL" + +tempDir=$(mktemp -d) + +targetFile=$(mktemp) +DownloadURL "$develPackageURL" "$develPackageExternalURL" "$sha1Dev" "$targetFile" +7z x -y -o"$tempDir" "$targetFile" + +sudo cp -a "$tempDir"/lib/* /usr/lib64 +sudo cp -a "$tempDir"/* /usr/ + +sudo rm "$targetFile" +sudo rm -fr "$tempDir" + +sudo /sbin/ldconfig + +echo "ICU = $icuVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/35-install-breakpad.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/35-install-breakpad.sh new file mode 100644 index 00000000000..8a9dde56be4 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/35-install-breakpad.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-breakpad.sh +source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/40-android_linux.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/40-android_linux.sh new file mode 100644 index 00000000000..877dfd08eb9 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/40-android_linux.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/android_linux.sh +source "${BASH_SOURCE%/*}/../common/linux/android_linux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/40-install-cmake.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/40-install-cmake.sh new file mode 100644 index 00000000000..155f6b7dcf2 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/40-install-cmake.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs CMake 3.6.2 + +set -ex + +# CMake is needed for autotests that verify that Qt can be built with CMake + +# shellcheck source=../common/linux/cmake_linux.sh +source "${BASH_SOURCE%/*}/../common/linux/cmake_linux.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-golang.sh new file mode 100644 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-upx.sh new file mode 100644 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-vcpkg.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-vcpkg.sh new file mode 100644 index 00000000000..aa88364d005 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/41-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/42-install-vcpkg-ports.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/42-install-vcpkg-ports.sh new file mode 100644 index 00000000000..71a46f9a4e6 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/42-install-vcpkg-ports.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-vcpkg-ports.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/50-openssl_for_android_linux.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/50-openssl_for_android_linux.sh new file mode 100644 index 00000000000..a71ba0a7b40 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/50-openssl_for_android_linux.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +# shellcheck source=../common/unix/openssl_for_android.sh +source "${BASH_SOURCE%/*}/../common/unix/openssl_3_for_android.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/60-install_protobuf.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/60-install_protobuf.sh new file mode 100644 index 00000000000..b07613744dd --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/60-install_protobuf.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_protobuf.sh +source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/61-install_grpc.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/61-install_grpc.sh new file mode 100644 index 00000000000..3d14832de61 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/61-install_grpc.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_grpc.sh +source "${BASH_SOURCE%/*}/../common/unix/install_grpc.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/70-install_QemuGA.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/70-install_QemuGA.sh new file mode 100644 index 00000000000..dbaed25d45c --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/70-install_QemuGA.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs QEMU Guest Agent + +set -ex + +sudo yum -y install qemu-guest-agent +sudo systemctl start qemu-guest-agent diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/70-install_dwz.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/70-install_dwz.sh new file mode 100644 index 00000000000..518c5533702 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/70-install_dwz.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 Konstantin Tokarev +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +sudo yum -y install elfutils-libelf-devel + +# shellcheck source=../common/linux/install_dwz.sh +source "${BASH_SOURCE%/*}/../common/linux/install_dwz.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-bootstrap-autostart.sh new file mode 100644 index 00000000000..1ff4385064d --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-bootstrap-autostart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-install-ffmpeg.sh new file mode 100644 index 00000000000..61da9b7b3a4 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-install-ffmpeg.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-mimer.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-mimer.sh new file mode 100644 index 00000000000..4683452a0df --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-mimer.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/mimersql.sh" "openssl-3" "rpm" diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-squish.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-squish.sh new file mode 100644 index 00000000000..f803ccc1fa1 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/90-squish.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/squishInstall.sh" + diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-cleanup.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-cleanup.sh new file mode 100644 index 00000000000..dd2682102d0 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-cleanup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +"$(dirname "$0")"/../common/linux/cleanup_cache.sh diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-enable_test_stacktraces.sh new file mode 100644 index 00000000000..600b7850b25 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-version.sh b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-version.sh new file mode 100644 index 00000000000..b12622c636c --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.4-x86_64/99-version.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script needs to be called last during provisioning so that the software information will show up last in provision log. + +# Storage installed RPM packages information + +set -ex + +# shellcheck disable=SC2129 +echo "*********************************************" >> ~/versions.txt +echo "***** All installed RPM packages *****" >> ~/versions.txt +rpm -q -a | sort >> ~/versions.txt +echo "*********************************************" >> ~/versions.txt + +"$(dirname "$0")/../common/linux/version.sh" diff --git a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/01-systemsetup.sh index 32c789bb3b1..834843897dc 100755 --- a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/01-systemsetup.sh @@ -17,6 +17,8 @@ gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false gsettings set org.gnome.desktop.lockdown disable-lock-screen 'true' +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false sudo sed -i 's|GRUB_TIMEOUT=8|GRUB_TIMEOUT=0|g' /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg diff --git a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/02-zypperpackages.sh b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/02-zypperpackages.sh index a9fab9bd669..5c492e5f581 100755 --- a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/02-zypperpackages.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/02-zypperpackages.sh @@ -99,5 +99,5 @@ sudo zypper -nq install nodejs16 # OpenSSL 3 sudo zypper -nq install openssl-3 -gccVersion="$(gcc --version |grep gcc |cut -b 17-23)" +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" echo "GCC = $gccVersion" >> versions.txt diff --git a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/08-pythondev.sh b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/08-pythondev.sh index 74a348475d1..bbe03989473 100755 --- a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/08-pythondev.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/08-pythondev.sh @@ -18,9 +18,9 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" # https://raw.githubusercontent.com/linux-on-ibm-z/scripts/master/Python3/build_python3.sh export PACKAGE_NAME="python" python2Version="2.7.18" -python3Version="3.8.16" +python3Version="3.12.3" python2Sha="678d4cf483a1c92efd347ee8e1e79326dc82810b" -python3Sha="d85dbb3774132473d8081dcb158f34a10ccad7a90b96c7e50ea4bb61f5ce4562" +python3Sha="56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1" function InstallPython { diff --git a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-install-ffmpeg.sh index 61da9b7b3a4..27ff04dc6cf 100755 --- a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-install-ffmpeg.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" "static" diff --git a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/01-systemsetup.sh index dcbbfea9c8b..4ecddc9d87c 100644 --- a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/01-systemsetup.sh @@ -17,6 +17,8 @@ gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false gsettings set org.gnome.desktop.lockdown disable-lock-screen 'true' +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false sudo sed -i 's|GRUB_TIMEOUT=8|GRUB_TIMEOUT=0|g' /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg diff --git a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/02-zypperpackages.sh b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/02-zypperpackages.sh index 275592eabdd..a9d12d4405b 100644 --- a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/02-zypperpackages.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/02-zypperpackages.sh @@ -67,7 +67,8 @@ sudo zypper -nq install libxml2-devel libxslt-devel sudo zypper -nq install yasm # GStreamer (qtwebkit and qtmultimedia), pulseaudio (qtmultimedia) -sudo zypper -nq install gstreamer-devel gstreamer-plugins-base-devel libpulse-devel +sudo zypper -nq install gstreamer-devel gstreamer-plugins-base-devel libpulse-devel \ + gstreamer-plugins-bad-devel # cups sudo zypper -nq install cups-devel @@ -106,7 +107,10 @@ sudo zypper -nq install openssl-3 # cifs-utils, for mounting smb drive sudo zypper -nq install cifs-utils -gccVersion="$(gcc --version |grep gcc |cut -b 17-23)" +# For tst_license.pl with all the machines generating SBOM +sudo zypper -nq install perl-JSON + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" echo "GCC = $gccVersion" >> versions.txt OpenSSLVersion="$(openssl-3 version |cut -b 9-14)" diff --git a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/08-pythondev.sh b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/08-pythondev.sh index 79e172eed8a..51558ea0c97 100644 --- a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/08-pythondev.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/08-pythondev.sh @@ -18,9 +18,9 @@ source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" # https://raw.githubusercontent.com/linux-on-ibm-z/scripts/master/Python3/build_python3.sh export PACKAGE_NAME="python" python2Version="2.7.18" -python3Version="3.8.16" +python3Version="3.12.3" python2Sha="678d4cf483a1c92efd347ee8e1e79326dc82810b" -python3Sha="d85dbb3774132473d8081dcb158f34a10ccad7a90b96c7e50ea4bb61f5ce4562" +python3Sha="56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1" function InstallPython { @@ -71,7 +71,13 @@ python3 --version | grep -F "$python3Version" pip3 install --user wheel pip3 install --user virtualenv +pip3 install --user -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" # shellcheck source=../common/unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" SetEnvVar "PYTHON3_PATH" "/usr/local/bin" + +# Provisioning during installation says: +# 'The script sbom2doc is installed in '/home/qt/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin" diff --git a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/90-install-ffmpeg.sh index 2a0d7258e0f..cd65475bc72 100644 --- a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/90-install-ffmpeg.sh @@ -2,4 +2,4 @@ # Copyright (C) 2023 The Qt Company Ltd # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" "static" diff --git a/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/01-systemsetup.sh index 81b42211893..ecad2f9eef4 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/01-systemsetup.sh @@ -17,6 +17,8 @@ echo "Timeout for blanking the screen (0 = never)" gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set grub timeout to 0" sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub sudo update-grub diff --git a/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/02-apt.sh index 5fed66908f8..e0bec3e54f9 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/02-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/02-apt.sh @@ -80,6 +80,12 @@ installPackages+=(libgstreamer1.0-dev) installPackages+=(libgstreamer-plugins-base1.0-dev) installPackages+=(libgstreamer-plugins-good1.0-dev) installPackages+=(libgstreamer-plugins-bad1.0-dev) +installPackages+=(gstreamer1.0-libav) +installPackages+=(gstreamer1.0-plugins-base) +installPackages+=(gstreamer1.0-plugins-good) +installPackages+=(gstreamer1.0-plugins-bad) +installPackages+=(gstreamer1.0-plugins-rtp) +installPackages+=(gstreamer1.0-plugins-ugly) installPackages+=(yasm) installPackages+=(libva-dev) # for QtMultimedia streaming tests @@ -162,6 +168,8 @@ installPackages+=(ruby) installPackages+=(libxslt1-dev) installPackages+=(libxml2-dev) installPackages+=(libhyphen-dev) +# Fix dependencies in shared ffmpeg libs +installPackages+=(patchelf) echo "Running update for apt" waitLoop diff --git a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/01-systemsetup.sh index 98744822c72..f0288905a2b 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/01-systemsetup.sh @@ -17,6 +17,8 @@ echo "Timeout for blanking the screen (0 = never)" gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set grub timeout to 0" sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub sudo update-grub diff --git a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/02-apt.sh index 72d32e8f559..817a976c8de 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/02-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/02-apt.sh @@ -96,6 +96,12 @@ installPackages+=(libgstreamer1.0-dev) installPackages+=(libgstreamer-plugins-base1.0-dev) installPackages+=(libgstreamer-plugins-good1.0-dev) installPackages+=(libgstreamer-plugins-bad1.0-dev) +installPackages+=(gstreamer1.0-libav) +installPackages+=(gstreamer1.0-plugins-base) +installPackages+=(gstreamer1.0-plugins-good) +installPackages+=(gstreamer1.0-plugins-bad) +installPackages+=(gstreamer1.0-plugins-rtp) +installPackages+=(gstreamer1.0-plugins-ugly) installPackages+=(libgstreamer-gl1.0-0) installPackages+=(gir1.2-gst-plugins-base-1.0) installPackages+=(gir1.2-gst-plugins-bad-1.0) @@ -132,8 +138,8 @@ installPackages+=(libicu-dev) installPackages+=(zlib1g-dev) installPackages+=(zlib1g) installPackages+=(openjdk-8-jdk) -#Java 11 for Android -installPackages+=(openjdk-11-jdk) +#Java 17 for Android +installPackages+=(openjdk-17-jdk) installPackages+=(libgtk-3-dev) installPackages+=(ninja-build) installPackages+=(libssl-dev) @@ -193,6 +199,7 @@ installPackages+=(ssh) installPackages+=(diffstat) installPackages+=(binfmt-support) installPackages+=(zstd) +installPackages+=(libzstd-dev) # Vulkan is needed for examples installPackages+=(libvulkan-dev) # Needed for qtdltlogging @@ -211,6 +218,8 @@ sudo dpkg --add-architecture i386 installPackages+=(nfs-kernel-server) installPackages+=(net-tools) installPackages+=(bridge-utils) +# Fix dependencies in shared ffmpeg libs +installPackages+=(patchelf) echo "Running update for apt" waitLoop diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-disable-updates.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-disable-updates.sh new file mode 100644 index 00000000000..2a64a3ee56f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-disable-updates.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Disable updates +echo "Disabling auto-upgrades" +sudo sed -i 's/"1"/"0"/g' /etc/apt/apt.conf.d/20auto-upgrades diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-systemsetup.sh index 98744822c72..f0288905a2b 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-systemsetup.sh @@ -17,6 +17,8 @@ echo "Timeout for blanking the screen (0 = never)" gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set grub timeout to 0" sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub sudo update-grub diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/02-apt.sh index b04190aea08..56c4c1a5b0c 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/02-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/02-apt.sh @@ -31,7 +31,7 @@ EOC #(ping -c 3 repo-clones.ci.qt.io && set_internal_repo) || echo "Internal package repository not found. Using public repositories." # Make sure needed ca-certificates are available -sudo apt-get install --reinstall ca-certificates +installPackages+=(ca-certificates) ## Tools # Git is not needed by builds themselves, but is nice to have @@ -42,8 +42,16 @@ installPackages+=(git) installPackages+=(p7zip-full) # Packages needed for RTA and Squish -installPackages+=(default-jdk) +installPackages+=(openjdk-17-jdk) installPackages+=(gcc) +installPackages+=(curl) +installPackages+=(libicu-dev) +installPackages+=(python3-dev) +installPackages+=(python3-pip) +installPackages+=(python3-venv) +installPackages+=(virtualenv) +# For mounting ci-files01 for Squish +installPackages+=(nfs-common) echo "Running update for apt" waitLoop @@ -55,6 +63,9 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 ins source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" # SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH" +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl version |cut -b 9-14)" echo "OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/20-sccache.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/20-sccache.sh new file mode 100755 index 00000000000..b371d947924 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/91-install-dummy-sound.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/91-install-dummy-sound.sh new file mode 100755 index 00000000000..5d280b36129 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/91-install-dummy-sound.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-dummy-alsa-device.sh +source "${BASH_SOURCE%/*}/../common/linux/install-dummy-alsa-device.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/91-install-vivid-camera.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/91-install-vivid-camera.sh new file mode 100755 index 00000000000..4c14ef03197 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/91-install-vivid-camera.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-vivid-camera.sh +source "${BASH_SOURCE%/*}/../common/linux/install-vivid-camera.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/01-systemsetup.sh index 98744822c72..f0288905a2b 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/01-systemsetup.sh @@ -17,6 +17,8 @@ echo "Timeout for blanking the screen (0 = never)" gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set grub timeout to 0" sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub sudo update-grub diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/02-apt.sh index 9a9a5ef268f..ab7c893cdbe 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/02-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/02-apt.sh @@ -98,8 +98,16 @@ installPackages+=(libgstreamer-plugins-base1.0-dev) installPackages+=(libgstreamer-plugins-good1.0-dev) installPackages+=(libgstreamer-plugins-bad1.0-dev) installPackages+=(libgstreamer-gl1.0-0) +installPackages+=(gstreamer1.0-libav) +installPackages+=(gstreamer1.0-plugins-base) +installPackages+=(gstreamer1.0-plugins-good) +installPackages+=(gstreamer1.0-plugins-bad) +installPackages+=(gstreamer1.0-plugins-rtp) +installPackages+=(gstreamer1.0-plugins-ugly) installPackages+=(gir1.2-gst-plugins-base-1.0) installPackages+=(gir1.2-gst-plugins-bad-1.0) +installPackages+=(libpipewire-0.3-dev) +installPackages+=(libspa-0.2-dev) installPackages+=(yasm) installPackages+=(libva-dev) # for QtMultimedia streaming tests @@ -134,8 +142,8 @@ installPackages+=(libicu-dev) installPackages+=(zlib1g-dev) installPackages+=(zlib1g) installPackages+=(openjdk-8-jdk) -#Java 11 for Android -installPackages+=(openjdk-11-jdk) +#Java 17 for Android, needed by RTA +installPackages+=(openjdk-17-jdk) installPackages+=(libgtk-3-dev) installPackages+=(ninja-build) installPackages+=(libssl-dev) @@ -197,6 +205,7 @@ installPackages+=(ssh) installPackages+=(diffstat) installPackages+=(binfmt-support) installPackages+=(zstd) +installPackages+=(libzstd-dev) installPackages+=(lz4) # Vulkan is needed for examples installPackages+=(libvulkan-dev) @@ -227,6 +236,11 @@ installPackages+=(uml-utilities) # used for reading vcpkg packages version, from vcpkg.json installPackages+=(jq) +installPackages+=(patchelf) + +# For tst_license.pl with all the machines generating SBOM +installPackages+=(libjson-perl) + echo "Running update for apt" waitLoop sudo apt-get update @@ -237,9 +251,18 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 ins # Configure pip pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache pip config --user set global.extra-index-url https://pypi.org/simple/ +pip install --user -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" # SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH" +# Provisioning during installation says: +# 'The script sbom2doc is installed in '/home/qt/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin" + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl version |cut -b 9-14)" echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/03-install-pulseaudio-16-bugfix-backports.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/03-install-pulseaudio-16-bugfix-backports.sh new file mode 100755 index 00000000000..8b4afb8e44b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/03-install-pulseaudio-16-bugfix-backports.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# backport of: +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/745 +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/764 +# compare: https://doc-snapshots.qt.io/qt6-6.8/qtmultimedia-gstreamer.html#limitations-and-known-issues + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +DownloadDeb () { + deb="$1" + checksum="$2" + + url="https://launchpad.net/~tim-klingt/+archive/ubuntu/pulseaudio-16-bugfixes/+files/$%7Bdeb%7D" + url_cached="http://ci-files01-hki.ci.qt.io/input/pulseaudio-16-bugfixes/jammy_amd64/$%7Bdeb%7D" + + DownloadURL $url_cached $url $checksum $deb +} + +DownloadDeb libpulse0_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb 5607f464fc73d09e2067a12b7e20d3b175d17e94 +DownloadDeb libpulse-dev_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb 674de26bb5a5148479d0c9e81c22462e2ffefa42 +DownloadDeb libpulsedsp_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb 0e06bea12c267cdeade4dce48ceba709f3a57036 +DownloadDeb libpulse-mainloop-glib0_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb 6fbb84697ac3e46664f3a9aff63bb8c04666c0a2 +DownloadDeb pulseaudio_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb 0988e8357a7024b8bf55c6fe0f51c0c0a72813e7 +DownloadDeb pulseaudio-utils_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb 667a6a570e9bf03317de6e548443ea058ad5195d +DownloadDeb pulseaudio-module-bluetooth_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb fd22382092cc45b7d717895f342fa5f5b6bc22e0 + +sudo dpkg -i \ + libpulse0_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb \ + libpulse-dev_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb \ + libpulsedsp_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb \ + libpulse-mainloop-glib0_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb \ + pulseaudio_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb \ + pulseaudio-module-bluetooth_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb \ + pulseaudio-utils_15.99.1+dfsg1-1ubuntu2.2timesmootherfix~jammy_amd64.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/41-install-golang.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/41-install-golang.sh new file mode 100755 index 00000000000..6b72bc47515 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/41-install-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-golang.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/41-install-upx.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/41-install-upx.sh new file mode 100755 index 00000000000..0bccc01efac --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/41-install-upx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/linux/install-upx.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/85-qdoc_qtattributionsscanner.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/85-qdoc_qtattributionsscanner.sh index fd2a3afddd0..d9b69da9515 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/85-qdoc_qtattributionsscanner.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/85-qdoc_qtattributionsscanner.sh @@ -11,8 +11,8 @@ set -e "${BASH_SOURCE%/*}/../common/unix/check_and_set_proxy.sh" # shellcheck source=../common/unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" -version="68bdc5764da2d4e442181b408751b6572f36fa74" -sha1="dac76e8f6cb69990661e7d814bea6f32fea29bf4" +version="57a554131c468f45f36d7501d777fcc7bba597b0" +sha1="add45e09655314db4295a2d459ef2b13e1b6268f" url="https://download.qt.io/development_releases/prebuilt/qdoc/qt/qdoc-qtattributionsscanner_$%7Bversion///%7D-based-linux-Ubuntu22.04-gcc11.4-x86_64.7z" url_cached="http://ci-files01-hki.ci.qt.io/input/qdoc/qt/qdoc-qtattributionsscanner_$%7Bversion///%7D-based-linux-Ubuntu22.04-gcc11.4-x86_64.7z" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/91-install-dummy-sound.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/91-install-dummy-sound.sh new file mode 100755 index 00000000000..5d280b36129 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/91-install-dummy-sound.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-dummy-alsa-device.sh +source "${BASH_SOURCE%/*}/../common/linux/install-dummy-alsa-device.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/91-install-vivid-camera.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/91-install-vivid-camera.sh new file mode 100755 index 00000000000..4c14ef03197 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/91-install-vivid-camera.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-vivid-camera.sh +source "${BASH_SOURCE%/*}/../common/linux/install-vivid-camera.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-axivion-bauhaus-suite.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-axivion-bauhaus-suite.sh index 8cecbbc3788..6a0c4127858 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-axivion-bauhaus-suite.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-axivion-bauhaus-suite.sh @@ -1,6 +1,39 @@ #!/bin/bash -#Copyright (C) 2023 The Qt Company Ltd +#Copyright (C) 2024 The Qt Company Ltd #SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -# shellcheck source=../common/linux/axivion-bauhaus-suite.sh -source "${BASH_SOURCE%/*}/../common/linux/axivion-bauhaus-suite.sh" +# This script installs Axivion Bauhaus Suite tool. + +set -ex + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +DownloadAndExtract () { + url=$1 + sha=$2 + file=$3 + + DownloadURL "$url" "$url" "$sha" "$file" + tar -xzvf "$file" + + rm -rf "$file" +} + + +# Axivion Bauhaus Suite +sourceFile="http://ci-files01-hki.ci.qt.io/input/axivion/bauhaus-suite-7_9_1-x86_64-gnu_linux.tar.gz" +targetFile="bauhaus-suite-7_9_1-x86_64-gnu_linux.tar.gz" +sha1="43d18d55087ce02009b850553405af55ba4e37e2" +cd "$HOME" +DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$HOME" + +mkdir "$HOME/.bauhaus" +cd "$HOME/.bauhaus" +wget http://ci-files01-hki.ci.qt.io/input/axivion/QT_11427439_2025-10-07.key +cd "$HOME" + +#Axivion configuration +cp -r "${BASH_SOURCE%/*}/../common/linux/axivion/" "$HOME/" + +echo "Axivion Bauhaus Suite = 7.9.1" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-download-files-for-sbuild.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-download-files-for-sbuild.sh index 8b8530a3424..d344956b70b 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-download-files-for-sbuild.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/93-download-files-for-sbuild.sh @@ -6,7 +6,7 @@ mkdir -p /home/qt/debian_packages cd /home/qt/debian_packages || exit # Backported cmake 3.24 -wget https://ci-files01-hki.intra.qt.io/input/debian/cmake/amd64-jammy/cmake-3.24-deb.tar.gz +wget https://ci-files01-hki.ci.qt.io/input/debian/cmake/amd64-jammy/cmake-3.24-deb.tar.gz tar xzf cmake-3.24-deb.tar.gz rm -rf cmake-3.24-deb.tar.gz # get rest of ready made Ubuntu jammy arm debian packages diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/01-systemsetup.sh index 98744822c72..f0288905a2b 100644 --- a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/01-systemsetup.sh @@ -17,6 +17,8 @@ echo "Timeout for blanking the screen (0 = never)" gsettings set org.gnome.desktop.session idle-delay 0 echo "Prevents screen lock when screesaver goes active." gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set grub timeout to 0" sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub sudo update-grub diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/02-apt.sh index 6c4b86a4227..4f4cdc7a9b4 100644 --- a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/02-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/02-apt.sh @@ -95,14 +95,24 @@ installPackages+=(libgstreamer1.0-dev) installPackages+=(libgstreamer-plugins-base1.0-dev) installPackages+=(libgstreamer-plugins-good1.0-dev) installPackages+=(libgstreamer-plugins-bad1.0-dev) +installPackages+=(gstreamer1.0-libav) +installPackages+=(gstreamer1.0-plugins-base) +installPackages+=(gstreamer1.0-plugins-good) +installPackages+=(gstreamer1.0-plugins-bad) +installPackages+=(gstreamer1.0-plugins-rtp) +installPackages+=(gstreamer1.0-plugins-ugly) installPackages+=(libgstreamer-gl1.0-0) installPackages+=(gir1.2-gst-plugins-base-1.0) installPackages+=(gir1.2-gst-plugins-bad-1.0) +installPackages+=(libpipewire-0.3-dev) +installPackages+=(libspa-0.2-dev) installPackages+=(yasm) installPackages+=(libva-dev) # for QtMultimedia streaming tests installPackages+=(vlc-bin) installPackages+=(vlc-plugin-base) +# for tst_qfloat16format, see also QTQAINFRA-6390 +installPackages+=(locales-all) # Support for cross-building to x86 (needed by WebEngine boot2qt builds) #installPackages+=(g++-multilib) @@ -111,6 +121,7 @@ installPackages+=(g++-multilib-powerpc-linux-gnu) # python3 development package installPackages+=(python3-dev) installPackages+=(python3-pip) +installPackages+=(python3-venv) installPackages+=(virtualenv) installPackages+=(python3-wheel) installPackages+=(python-is-python3) @@ -135,9 +146,7 @@ installPackages+=(libcurl4-openssl-dev) installPackages+=(libicu-dev) installPackages+=(zlib1g-dev) installPackages+=(zlib1g) -installPackages+=(openjdk-8-jdk) -#Java 11 for Android -installPackages+=(openjdk-11-jdk) +installPackages+=(openjdk-17-jdk) installPackages+=(libgtk-3-dev) installPackages+=(ninja-build) installPackages+=(libssl-dev) @@ -196,6 +205,7 @@ installPackages+=(ssh) installPackages+=(diffstat) installPackages+=(binfmt-support) installPackages+=(zstd) +installPackages+=(libzstd-dev) installPackages+=(lz4) # Vulkan is needed for examples installPackages+=(libvulkan-dev) @@ -217,6 +227,14 @@ installPackages+=(uml-utilities) installPackages+=(jq) # For building installPackages+=(cmake) +# extra linkers +installPackages+=(lld) +# Fix dependencies in shared ffmpeg libs +installPackages+=(patchelf) +# For qp-apps/qdb +installPackages+=(libusb-1.0-0-dev) +# password management support for Qt Creator +installPackages+=(libsecret-1-dev) echo "Running update for apt" waitLoop @@ -228,9 +246,20 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 ins # Configure pip pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache pip config --user set global.extra-index-url https://pypi.org/simple/ +# Ubuntu 24.04 comes with a newer pip that disallows installing into the system site-packages, +# so we explicitly ask it to allow it. +pip install --user -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" --break-system-packages source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" # SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH" +# Provisioning during installation says: +# 'The script sbom2doc is installed in '/home/qt/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin" + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + OpenSSLVersion="$(openssl version |cut -b 9-14)" echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-fix-bwrap-apparmor.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-fix-bwrap-apparmor.sh new file mode 100644 index 00000000000..e155338ab4d --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-fix-bwrap-apparmor.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/fix-bwrap-apparmor.sh +source "${BASH_SOURCE%/*}/../common/linux/fix-bwrap-apparmor.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-install-nodejs.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-install-nodejs.sh new file mode 100644 index 00000000000..981ca727230 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-install-nodejs.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/install-nodejs.sh +source "${BASH_SOURCE%/*}/../common/linux/install-nodejs.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-install-pulseaudio-16-bugfix-backports.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-install-pulseaudio-16-bugfix-backports.sh new file mode 100755 index 00000000000..4fe4451f9de --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/03-install-pulseaudio-16-bugfix-backports.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# backport of: +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/745 +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/764 +# compare: https://doc-snapshots.qt.io/qt6-6.8/qtmultimedia-gstreamer.html#limitations-and-known-issues + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +DownloadDeb () { + deb="$1" + checksum="$2" + + url="https://launchpad.net/~tim-klingt/+archive/ubuntu/pulseaudio-16-bugfixes/+files/$%7Bdeb%7D" + url_cached="http://ci-files01-hki.ci.qt.io/input/pulseaudio-16-bugfixes/noble_arm64/$%7Bdeb%7D" + + DownloadURL $url_cached $url $checksum $deb +} + +DownloadDeb libpulse0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_arm64.deb 4fa467972542a3851aad892833dc0149efe5c6f3 +DownloadDeb libpulse-dev_16.1+dfsg1-2ubuntu10timesmootherfix~noble_arm64.deb 20045425b0522ec39adc0231d6727146ce910dd4 +DownloadDeb libpulse-mainloop-glib0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_arm64.deb cd94fd91e6f5a4b67ccd148c50e93a9dc9a59b33 + +sudo dpkg -i \ + libpulse0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_arm64.deb \ + libpulse-dev_16.1+dfsg1-2ubuntu10timesmootherfix~noble_arm64.deb \ + libpulse-mainloop-glib0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_arm64.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/04-libclang.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/04-libclang.sh new file mode 100755 index 00000000000..fac8d4e77f9 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/04-libclang.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/20-sccache.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/20-sccache.sh new file mode 100755 index 00000000000..b371d947924 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/22-mqtt_broker.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/22-mqtt_broker.sh new file mode 100644 index 00000000000..b0791cb18f8 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/22-mqtt_broker.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2018 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/mqtt_broker.sh +source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/30-install_icu.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/30-install_icu.sh new file mode 100644 index 00000000000..b565e686c97 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/30-install_icu.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +# This script will install ICU + +icuVersion="73.2" +icuLocationLib="/usr/local/lib" +icuLocationInclude="/usr/local/include" +sha1="82f3ed54fd7ea8ff469d9000164e4dc23378fc8c" +baseBinaryPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Ubuntu24.04-aarch64.7z" +baseBinaryPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Ubuntu24.04-aarch64.7z" + +sha1Dev="37c2528df9d2b5cba1765fe8036e69b7c326a1e1" +develPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Ubuntu24.04-aarch64-devel.7z" +develPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Ubuntu24.04-aarch64-devel.7z" + +echo "Installing custom ICU $icuVersion $sha1 packages on Ubuntu to $icuLocationLib" + +targetFile=$(mktemp) +sudo mkdir -p "$icuLocationLib" +sudo mkdir -p "$icuLocationInclude" +DownloadURL "$baseBinaryPackageURL" "$baseBinaryPackageExternalURL" "$sha1" "$targetFile" +sudo 7z x -y -o$icuLocationLib "$targetFile" +sudo rm "$targetFile" + +echo "Installing custom ICU devel packages on Ubuntu" + +tempDir=$(mktemp -d) + +targetFile=$(mktemp) +DownloadURL "$develPackageURL" "$develPackageExternalURL" "$sha1Dev" "$targetFile" +7z x -y -o"$tempDir" "$targetFile" + +sudo cp -a "$tempDir"/lib/* "$icuLocationLib" +sudo cp -a "$tempDir"/include/* "$icuLocationInclude" + +sudo rm "$targetFile" +sudo rm -fr "$tempDir" + +sudo /sbin/ldconfig + +echo "ICU = $icuVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/60-install_protobuf.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/60-install_protobuf.sh new file mode 100644 index 00000000000..3e2b8921878 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/60-install_protobuf.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2018 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_protobuf.sh +source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/90-install-ffmpeg.sh new file mode 100644 index 00000000000..61da9b7b3a4 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/90-install-ffmpeg.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/90-squish.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/90-squish.sh new file mode 100644 index 00000000000..f803ccc1fa1 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/90-squish.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/squishInstall.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/91-install-dummy-sound.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/91-install-dummy-sound.sh new file mode 100755 index 00000000000..5d280b36129 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/91-install-dummy-sound.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-dummy-alsa-device.sh +source "${BASH_SOURCE%/*}/../common/linux/install-dummy-alsa-device.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/91-install-vivid-camera.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/91-install-vivid-camera.sh new file mode 100755 index 00000000000..4c14ef03197 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-aarch64/91-install-vivid-camera.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-vivid-camera.sh +source "${BASH_SOURCE%/*}/../common/linux/install-vivid-camera.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-disable-updates.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-disable-updates.sh new file mode 100644 index 00000000000..4c9adc5fb4f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-disable-updates.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Disalbe updates +echo "Disabling auto-upgrades" +sudo sed -i 's/"1"/"0"/g' /etc/apt/apt.conf.d/20auto-upgrades diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-disable_net_lso.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-disable_net_lso.sh new file mode 100644 index 00000000000..81e7d13797e --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-disable_net_lso.sh @@ -0,0 +1,6 @@ +#!/bin/sh +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +echo "ethtool -K \${DEVICE_IFACE} tso off" | sudo tee -a /etc/NetworkManager/dispatcher.d/pre-up.d/net_tso_off +sudo chmod +x /etc/NetworkManager/dispatcher.d/pre-up.d/net_tso_off diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-install_telegraf.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-install_telegraf.sh new file mode 100644 index 00000000000..729f90035bc --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-install_telegraf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/unix/telegraf_install.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-set-ulimit.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-set-ulimit.sh new file mode 100644 index 00000000000..e951e82ac2a --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-set-ulimit.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/set_ulimit.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-systemsetup.sh new file mode 100644 index 00000000000..f0288905a2b --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/01-systemsetup.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# Copyright (C) 2017 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script modifies system settings for automated use + +set -ex + +# shellcheck source=../common/unix/check_and_set_proxy.sh +source "${BASH_SOURCE%/*}/../common/unix/check_and_set_proxy.sh" + +NTS_IP=10.212.2.216 + +echo "Set timezone to UTC." +sudo timedatectl set-timezone Etc/UTC +echo "Timeout for blanking the screen (0 = never)" +gsettings set org.gnome.desktop.session idle-delay 0 +echo "Prevents screen lock when screesaver goes active." +gsettings set org.gnome.desktop.screensaver lock-enabled false +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false +echo "Set grub timeout to 0" +sudo sed -i 's|GRUB_TIMEOUT=10|GRUB_TIMEOUT=0|g' /etc/default/grub +sudo update-grub + +# https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624320 +# Checking if Ubuntu 20.04 works without this +#echo "Setting up workaround for Ubuntu systemd resolve bug" +#sudo rm -f /etc/resolv.conf +#sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf + +# remove hostname to get unique based on IP address +sudo rm /etc/hostname + +echo "Set Network Test Server address to $NTS_IP in /etc/hosts" +echo "$NTS_IP qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts + +echo 'LC_ALL=en_US.UTF8' | sudo tee /etc/default/locale + +if [ "$http_proxy" != "" ]; then + echo "Acquire::http::Proxy \"$proxy\";" | sudo tee -a /etc/apt/apt.conf +fi + +# This script diverts qtlogging.ini file so we don't get debugging related auto-test failures. +sudo dpkg-divert --divert /etc/xdg/QtProject/qtlogging.ini.foo --rename /etc/xdg/QtProject/qtlogging.ini diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-apt.sh new file mode 100644 index 00000000000..877542017ec --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-apt.sh @@ -0,0 +1,270 @@ +#!/usr/bin/env bash +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# Install required packages with APT + +# shellcheck source=../common/linux/apt_wait_loop.sh +source "${BASH_SOURCE%/*}/../common/linux/apt_wait_loop.sh" + +echo "Disabling auto update" +sudo sed -i 's/APT::Periodic::Update-Package-Lists "1";/APT::Periodic::Update-Package-Lists "0";/' /etc/apt/apt.conf.d/10periodic +for service in apt-daily.timer apt-daily-upgrade.timer apt-daily.service apt-daily-upgrade.service; do + sudo systemctl stop $service + sudo systemctl disable $service +done + +function set_internal_repo { + + # Stop fetching the dep-11 metadata, since our mirrors do not handle them well + sudo mv /etc/apt/apt.conf.d/50appstream{,.disabled} + + sudo tee "/etc/apt/sources.list.d/ubuntu.list" > /dev/null <<-EOC + deb [arch=amd64] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble main restricted universe multiverse + deb [arch=amd64] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble-updates main restricted universe multiverse + deb [arch=amd64] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble-backports main restricted universe + deb [arch=amd64] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble-security main restricted universe multiverse + deb [arch=i386] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble main restricted + deb [arch=i386] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble-updates main restricted + deb [arch=i386] http://repo-clones.ci.qt.io/apt-mirror/mirror/ubuntu/ noble universe +EOC +} + +#(ping -c 3 repo-clones.ci.qt.io && set_internal_repo) || echo "Internal package repository not found. Using public repositories." +echo "Internal package repository not loading Translation en package (QTQAINFRA-6297). Using public repositories." + +# Make sure needed ca-certificates are available +sudo apt-get install --reinstall ca-certificates + +# Git is not needed by builds themselves, but is nice to have +# immediately as one starts debugging +installPackages+=(git) +# 7zip is a needed decompressing tool +installPackages+=(p7zip-full) +# To be able to mount yocto-cache during builds +installPackages+=(nfs-common) +# libssl-dev provides headers for OpenSSL +installPackages+=(libssl-dev) +# Needed libraries for X11 support accordingly to https://wiki.qt.io/Building_Qt_5_from_Git +installPackages+=("^libxcb.*") +installPackages+=(libxkbcommon-dev) +installPackages+=(libxkbcommon-x11-dev) +installPackages+=(libx11-xcb-dev) +installPackages+=(libglu1-mesa-dev) +installPackages+=(libxrender-dev) +installPackages+=(libxi-dev) +# Enable linking to system dbus +installPackages+=(libdbus-1-dev) +# Needed libraries for WebEngine +installPackages+=(udev) +installPackages+=(libudev-dev) +installPackages+=(libdrm-dev) +installPackages+=(libegl1-mesa-dev) +installPackages+=(libfontconfig1-dev) +installPackages+=(libgbm-dev) +installPackages+=(liblcms2-dev) +installPackages+=(libpci-dev) +installPackages+=(libre2-dev) +installPackages+=(libsnappy-dev) +installPackages+=(libva-dev) +installPackages+=(libvpx-dev) +installPackages+=(libxkbfile-dev) +installPackages+=(libxshmfence-dev) +installPackages+=(libxss-dev) +# installPackages+=(nodejs) too old +installPackages+=(python3-html5lib) + +# Common event loop handling +installPackages+=(libglib2.0-dev) +# MySQL support +installPackages+=(libmysqlclient-dev) +# PostgreSQL support +installPackages+=(libpq-dev) +# SQLite support +installPackages+=(libsqlite3-dev) +# ODBC support +installPackages+=(unixodbc-dev) +# Support for FreeType font engine +installPackages+=(libfreetype6-dev) +# Enable the usage of system jpeg libraries +installPackages+=(libjpeg-dev) +# Enable support for printer driver +installPackages+=(libcups2-dev) +# Enable support for printer test +installPackages+=(cups-pdf) +# Install libraries needed for QtMultimedia to be able to support all plugins +installPackages+=(libasound2-dev) +installPackages+=(libgstreamer1.0-dev) +installPackages+=(libgstreamer-plugins-base1.0-dev) +installPackages+=(libgstreamer-plugins-good1.0-dev) +installPackages+=(libgstreamer-plugins-bad1.0-dev) +installPackages+=(libgstreamer-gl1.0-0) +installPackages+=(gstreamer1.0-libav) +installPackages+=(gstreamer1.0-plugins-base) +installPackages+=(gstreamer1.0-plugins-good) +installPackages+=(gstreamer1.0-plugins-bad) +installPackages+=(gstreamer1.0-plugins-rtp) +installPackages+=(gstreamer1.0-plugins-ugly) +installPackages+=(gir1.2-gst-plugins-base-1.0) +installPackages+=(gir1.2-gst-plugins-bad-1.0) +installPackages+=(yasm) +installPackages+=(libva-dev) +# for QtMultimedia streaming tests +installPackages+=(vlc-bin) +installPackages+=(vlc-plugin-base) + +# Support for cross-building to x86 (needed by WebEngine boot2qt builds) +installPackages+=(g++-multilib) +# python3 development package +installPackages+=(python3-dev) +installPackages+=(python3-pip) +installPackages+=(python3-venv) +installPackages+=(virtualenv) +installPackages+=(python3-wheel) +installPackages+=(python-is-python3) +# TODO: Ubuntu 24.04 Removal - not available +# python2 development package +#installPackages+=(python2-dev) + +# Automates interactive applications (Needed by RTA to automate configure testing) +installPackages+=(expect) +installPackages+=(mesa-common-dev) + +# TODO: Ubuntu 24.04 Replacement +#installPackages+=(libgl1-mesa-glx) +installPackages+=(libglx-mesa0) + +installPackages+=(libgl1-mesa-dev) +installPackages+=(libegl1-mesa-dev) +installPackages+=(libegl1) +installPackages+=(libegl-mesa0) +installPackages+=(libegl-dev) +installPackages+=(libglvnd-dev) +installPackages+=(libgles2-mesa-dev) +installPackages+=(curl) +installPackages+=(libcurl4-openssl-dev) +installPackages+=(libicu-dev) +installPackages+=(zlib1g-dev) +installPackages+=(zlib1g) +installPackages+=(openjdk-8-jdk) +#Java 17 for Android, needed by RTA +installPackages+=(openjdk-17-jdk) +installPackages+=(libgtk-3-dev) +installPackages+=(ninja-build) +installPackages+=(libssl-dev) +installPackages+=(libxcursor-dev) +installPackages+=(libxcomposite-dev) +installPackages+=(libxdamage-dev) +installPackages+=(libxrandr-dev) +installPackages+=(libfontconfig1-dev) +installPackages+=(libsrtp2-dev) +installPackages+=(libwebp-dev) +installPackages+=(libjsoncpp-dev) +installPackages+=(libopus-dev) +installPackages+=(libminizip-dev) +installPackages+=(libavutil-dev) +installPackages+=(libavformat-dev) +installPackages+=(libavcodec-dev) +installPackages+=(libevent-dev) +installPackages+=(bison) +installPackages+=(flex) +installPackages+=(gperf) +installPackages+=(libasound2-dev) +installPackages+=(libpulse-dev) +installPackages+=(libxtst-dev) +installPackages+=(libnspr4-dev) +installPackages+=(libnss3-dev) +installPackages+=(libnss3) +installPackages+=(libopenal-dev) +installPackages+=(libbluetooth-dev) +#VirtualBox for RTA +installPackages+=(virtualbox) +installPackages+=(dkms) +# Needed for qtspeech +installPackages+=(libspeechd-dev) +#Pypdf for PDF reading in RTA tests +installPackages+=(python3-pypdf2) +# Needed for b2qt +installPackages+=(git-lfs) +installPackages+=(chrpath) +installPackages+=(gawk) +installPackages+=(texinfo) +# Needed for Poppler test in QtWebEngine +installPackages+=(libpoppler-cpp-dev) +# Needed for QtCore +installPackages+=(libdouble-conversion-dev) +installPackages+=(libpcre2-dev) +# Needed for testlib selftests +installPackages+=(valgrind) +# Needed for qtgampepad +installPackages+=(libsdl2-2.0) +installPackages+=(libsdl2-dev) +# Needed for qtwebkit +installPackages+=(ruby) +installPackages+=(libxslt1-dev) +installPackages+=(libxml2-dev) +installPackages+=(libhyphen-dev) +# For remote access +installPackages+=(ssh) +# For bitbake +installPackages+=(diffstat) +installPackages+=(binfmt-support) +installPackages+=(zstd) +installPackages+=(lz4) +# Vulkan is needed for examples +installPackages+=(libvulkan-dev) +# Needed for qtdltlogging +installPackages+=(libdlt-dev) +# For integrity +installPackages+=(libc6:i386) +# TODO: Ubuntu 24.04 Removal - not available +#installPackages+=(libncurses5:i386) + +installPackages+=(libstdc++6:i386) +installPackages+=(libx11-6:i386) +installPackages+=(lib32z1) +installPackages+=(linux-libc-dev:i386) +installPackages+=(libxcursor1:i386) +installPackages+=(libc6-dev-i386) +sudo dpkg --add-architecture i386 +# For QNX +installPackages+=(nfs-kernel-server) +installPackages+=(net-tools) +installPackages+=(bridge-utils) +# For Debian packaging +installPackages+=(sbuild) +installPackages+=(ubuntu-dev-tools) +# cifs-utils, for mounting smb drive +installPackages+=(keyutils) +installPackages+=(cifs-utils) +# VxWorks QEMU network setup (tunctl) +installPackages+=(uml-utilities) +# used for reading vcpkg packages version, from vcpkg.json +installPackages+=(jq) + +installPackages+=(patchelf) + +echo "Running update for apt" +waitLoop +sudo apt-get update +echo "Installing packages" +waitLoop +sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 install "${installPackages[@]}" + +# Configure pip +pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache +pip config --user set global.extra-index-url https://pypi.org/simple/ + +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" +# SetEnvVar "PATH" "/usr/lib/nodejs-mozilla/bin:\$PATH" + +# Provisioning during installation says: +# 'The script sbom2doc is installed in '/home/qt/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin" + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" +echo "GCC = $gccVersion" >> versions.txt + +OpenSSLVersion="$(openssl version |cut -b 9-14)" +echo "System's OpenSSL = $OpenSSLVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-disable-notifications.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-disable-notifications.sh new file mode 100644 index 00000000000..1b9ed6c91dc --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-disable-notifications.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/disable-notifications.sh +source "${BASH_SOURCE%/*}/../common/linux/disable-notifications.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-disable-ntp.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-disable-ntp.sh new file mode 100644 index 00000000000..1995aa144c1 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-disable-ntp.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/disable-ntp_linux.sh +source "${BASH_SOURCE%/*}/../common/linux/disable-ntp_linux.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-remove-apport.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-remove-apport.sh new file mode 100644 index 00000000000..879f3ffb402 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-remove-apport.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/remove-apport.sh +source "${BASH_SOURCE%/*}/../common/linux/remove-apport.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-remove-update_notifier.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-remove-update_notifier.sh new file mode 100644 index 00000000000..f4a5119fda2 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/02-remove-update_notifier.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/remove-update_notifier.sh +source "${BASH_SOURCE%/*}/../common/linux/remove-update_notifier.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-fix-bwrap-apparmor.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-fix-bwrap-apparmor.sh new file mode 100644 index 00000000000..e155338ab4d --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-fix-bwrap-apparmor.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/fix-bwrap-apparmor.sh +source "${BASH_SOURCE%/*}/../common/linux/fix-bwrap-apparmor.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-install-nodejs.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-install-nodejs.sh new file mode 100644 index 00000000000..07121a361d7 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-install-nodejs.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/install-nodejs.sh +source "${BASH_SOURCE%/*}/../common/linux/install-nodejs.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-install-pulseaudio-16-bugfix-backports.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-install-pulseaudio-16-bugfix-backports.sh new file mode 100755 index 00000000000..938b7a85609 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-install-pulseaudio-16-bugfix-backports.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# backport of: +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/745 +# https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/764 +# compare: https://doc-snapshots.qt.io/qt6-6.8/qtmultimedia-gstreamer.html#limitations-and-known-issues + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +DownloadDeb () { + deb="$1" + checksum="$2" + + url="https://launchpad.net/~tim-klingt/+archive/ubuntu/pulseaudio-16-bugfixes/+files/$%7Bdeb%7D" + url_cached="http://ci-files01-hki.ci.qt.io/input/pulseaudio-16-bugfixes/noble_amd64/$%7Bdeb%7D" + + DownloadURL $url_cached $url $checksum $deb +} + +DownloadDeb libpulse0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_amd64.deb 65458740897d0e939d07cf1c892060c381e68441 +DownloadDeb libpulse-dev_16.1+dfsg1-2ubuntu10timesmootherfix~noble_amd64.deb a998bd30f4ca13ad9e66a2a8fb4b9bfe9aade8e2 +DownloadDeb libpulse-mainloop-glib0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_amd64.deb 326baf3c11a4f490dac6dad2d4e56c0821b31b80 + +sudo dpkg -i \ + libpulse0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_amd64.deb \ + libpulse-dev_16.1+dfsg1-2ubuntu10timesmootherfix~noble_amd64.deb \ + libpulse-mainloop-glib0_16.1+dfsg1-2ubuntu10timesmootherfix~noble_amd64.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-mount-vcpkg-cache-drive.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-mount-vcpkg-cache-drive.sh new file mode 100644 index 00000000000..ed49b3a5418 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-mount-vcpkg-cache-drive.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/mount-vcpkg-cache-drive.sh +source "${BASH_SOURCE%/*}/../common/linux/mount-vcpkg-cache-drive.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-qemu.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-qemu.sh new file mode 100644 index 00000000000..5ed06f29120 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/03-qemu.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +# First test using QFont fails if fonts-noto-cjk is installed. This happens because +# running fontcache for that font takes > 5 mins when run on QEMU. Running fc-cache +# doesn't help since host version creates cache for a wrong architecture and running +# armv7 fc-cache segfaults on QEMU. +sudo DEBIAN_FRONTEND=noninteractive apt-get -y remove fonts-noto-cjk + +# Disable QtWayland window decorations, as they cause flakiness when used inside qemu (QTBUG-66173) +qemu_env="QT_WAYLAND_DISABLE_WINDOWDECORATION=1" + +SetEnvVar "QEMU_SET_ENV" "\"${qemu_env}\"" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-libclang-v100-dyn.sh new file mode 100644 index 00000000000..85c261ee879 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-libclang-v100-dyn.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-libclang.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-libclang.sh new file mode 100644 index 00000000000..fac8d4e77f9 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-libclang.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-yocto.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-yocto.sh new file mode 100644 index 00000000000..26430c71dfc --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/04-yocto.sh @@ -0,0 +1,125 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs the Yocto toolchain + +set -ex + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +primaryBaseUrlPath="http://ci-files01-hki.ci.qt.io/input/boot2qt/gatesgarth" +altBaseUrlPath="http://download.qt.io/development_releases/prebuilt/boot2qt/gatesgarth" + +echo "Installing Yocto toolchain for 32-bit b2qt ARMV7..." + +versionARM="3.2" +package="b2qt-x86_64-meta-toolchain-b2qt-ci-sdk-qemuarm-a9d5156a.sh" +PrimaryUrl="$primaryBaseUrlPath/$package" +AltUrl="$altBaseUrlPath/$package" +SHA1="f9f7d51656067a1cc9d7ab92ddcddb219886ab22" +yoctoInstaller="/tmp/yocto-toolchain-ARMv7.sh" +yoctoLocationARMv7="/opt/b2qt/$versionARM" +sysrootARMv7="armv7vet2hf-neon-poky-linux-gnueabi" +crosscompileARMv7="sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-" +envSetupARMv7="environment-setup-$sysrootARMv7" +toolchainFileARMv7="sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake" + +DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller" +chmod +x "$yoctoInstaller" + +/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationARMv7" +rm -rf "$yoctoInstaller" + +echo "Installing Yocto toolchain for 64-bit b2qt ARM64..." + +versionARM64="3.2" +package="b2qt-x86_64-meta-toolchain-b2qt-ci-sdk-qemuarm64-a9d5156a.sh" +PrimaryUrl="$primaryBaseUrlPath/$package" +AltUrl="$altBaseUrlPath/$package" +SHA1="f490cbcc4e0d5a87f4e07607a71013aeeabce94a" +yoctoInstaller="/tmp/yocto-toolchain-ARM64.sh" +yoctoLocationARM64="/opt/b2qt/$versionARM64" +sysrootARM64="cortexa57-poky-linux" +crosscompileARM64="sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-" +envSetupARM64="environment-setup-$sysrootARM64" +toolchainFileARM64="sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake" + +DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller" +chmod +x "$yoctoInstaller" + +/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationARM64" +rm -rf "$yoctoInstaller" + +echo "Installing Yocto toolchain for 64-bit b2qt MIPS64..." + +versionMIPS64="3.2" +package="b2qt-x86_64-meta-toolchain-b2qt-ci-sdk-qemumips64-a9d5156a.sh" +PrimaryUrl="$primaryBaseUrlPath/$package" +AltUrl="$altBaseUrlPath/$package" +SHA1="5d3a8bb4384de273937286d275d1dab36f969951" +yoctoInstaller="/tmp/yocto-toolchain-mips64.sh" +yoctoLocationMIPS64="/opt/b2qt/$versionMIPS64" +sysrootMIPS64="mips64r2-poky-linux" +crosscompileMIPS64="sysroots/x86_64-pokysdk-linux/usr/bin/mips64-poky-linux/mips64-poky-linux-" +envSetupMIPS64="environment-setup-$sysrootMIPS64" +toolchainFileMIPS64="sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake" + +DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller" +chmod +x "$yoctoInstaller" + +/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationMIPS64" +rm -rf "$yoctoInstaller" + + + +if [ -e "$yoctoLocationARMv7/sysroots/$sysrootARMv7" ] && [ -e "$yoctoLocationARMv7/${crosscompileARMv7}g++" ] && \ + [ -e "$yoctoLocationARMv7/$envSetupARMv7" ] && [ -e "$yoctoLocationARMv7/$toolchainFileARMv7" ] && \ + [ -e "$yoctoLocationARM64/sysroots/$sysrootARM64" ] && [ -e "$yoctoLocationARM64/${crosscompileARM64}g++" ] && \ + [ -e "$yoctoLocationARM64/$envSetupARM64" ] && [ -e "$yoctoLocationARM64/$toolchainFileARM64" ] && \ + [ -e "$yoctoLocationMIPS64/sysroots/$sysrootMIPS64" ] && [ -e "$yoctoLocationMIPS64/${crosscompileMIPS64}g++" ] && \ + [ -e "$yoctoLocationMIPS64/$envSetupMIPS64" ] && [ -e "$yoctoLocationMIPS64/$toolchainFileMIPS64" ]; then + SetEnvVar "QEMUARMV7_TOOLCHAIN_SYSROOT" "$yoctoLocationARMv7/sysroots/$sysrootARMv7" + SetEnvVar "QEMUARMV7_TOOLCHAIN_CROSS_COMPILE" "$yoctoLocationARMv7/$crosscompileARMv7" + SetEnvVar "QEMUARMV7_TOOLCHAIN_ENVSETUP" "$yoctoLocationARMv7/$envSetupARMv7" + SetEnvVar "QEMUARMV7_TOOLCHAIN_FILE" "$yoctoLocationARMv7/$toolchainFileARMv7" + SetEnvVar "QEMUARM64_TOOLCHAIN_SYSROOT" "$yoctoLocationARM64/sysroots/$sysrootARM64" + SetEnvVar "QEMUARM64_TOOLCHAIN_CROSS_COMPILE" "$yoctoLocationARM64/$crosscompileARM64" + SetEnvVar "QEMUARM64_TOOLCHAIN_ENVSETUP" "$yoctoLocationARM64/$envSetupARM64" + SetEnvVar "QEMUARM64_TOOLCHAIN_FILE" "$yoctoLocationARM64/$toolchainFileARM64" + SetEnvVar "QEMUMIPS64_TOOLCHAIN_SYSROOT" "$yoctoLocationMIPS64/sysroots/$sysrootMIPS64" + SetEnvVar "QEMUMIPS64_TOOLCHAIN_CROSS_COMPILE" "$yoctoLocationMIPS64/$crosscompileMIPS64" + SetEnvVar "QEMUMIPS64_TOOLCHAIN_ENVSETUP" "$yoctoLocationMIPS64/$envSetupMIPS64" + SetEnvVar "QEMUMIPS64_TOOLCHAIN_FILE" "$yoctoLocationMIPS64/$toolchainFileMIPS64" +else + echo "Error! Couldn't find installation paths for Yocto toolchain. Aborting provisioning." 1>&2 + exit 1 +fi + +cat << EOB >> ~/versions.txt +Yocto ARMv7 toolchain = $versionARM +Yocto ARM64 toolchain = $versionARM64 +Yocto MIPS64 toolchain = $versionMIPS64 +EOB + +# List qt user in qemu toolchain sysroots +sudo sh -c "grep ^qt /etc/passwd >> $yoctoLocationARMv7/sysroots/$sysrootARMv7/etc/passwd" +sudo sh -c "grep ^qt /etc/group >> $yoctoLocationARMv7/sysroots/$sysrootARMv7/etc/group" +sudo sh -c "grep ^qt /etc/passwd >> $yoctoLocationARM64/sysroots/$sysrootARM64/etc/passwd" +sudo sh -c "grep ^qt /etc/group >> $yoctoLocationARM64/sysroots/$sysrootARM64/etc/group" + +# Fix mdns to support both docker and network tests +# See also https://bugreports.qt.io/browse/QTBUG-106013 +sudo sh -c "sed -i '/^hosts:/s/.*/hosts: files myhostname mdns_minimal [NOTFOUND=return] dns mdns4/' $yoctoLocationARMv7/sysroots/$sysrootARMv7/etc/nsswitch.conf" +sudo sh -c "sed -i '/^hosts:/s/.*/hosts: files myhostname mdns_minimal [NOTFOUND=return] dns mdns4/' $yoctoLocationARM64/sysroots/$sysrootARM64/etc/nsswitch.conf" + +# Install qemu binfmt for 32bit and 64bit arm architectures +sudo update-binfmts --package qemu-arm --install arm $yoctoLocationARMv7/sysroots/x86_64-pokysdk-linux/usr/bin/qemu-arm \ +--magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \ +--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" +sudo update-binfmts --package qemu-aarch64 --install aarch64 $yoctoLocationARM64/sysroots/x86_64-pokysdk-linux/usr/bin/qemu-aarch64 \ +--magic "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00" \ +--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/08-integrity.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/08-integrity.sh new file mode 100644 index 00000000000..0e8dbb392a3 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/08-integrity.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2017 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/integrity.sh +source "${BASH_SOURCE%/*}/../common/linux/integrity.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/20-sccache.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/20-sccache.sh new file mode 100644 index 00000000000..b371d947924 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/20-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/sccache.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/22-mqtt_broker.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/22-mqtt_broker.sh new file mode 100644 index 00000000000..b0791cb18f8 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/22-mqtt_broker.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2018 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/mqtt_broker.sh +source "${BASH_SOURCE%/*}/../common/unix/mqtt_broker.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-fbx.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-fbx.sh new file mode 100644 index 00000000000..16a9bda85d9 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-fbx.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/fbx_linux.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-install-conan.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-install-conan.sh new file mode 100644 index 00000000000..d24cb24282f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-install-conan.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-conan.sh" "linux" "--break-system-packages" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-install_icu.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-install_icu.sh new file mode 100644 index 00000000000..260dc55a938 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/30-install_icu.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../common/unix/DownloadURL.sh" + +set -ex + +# This script will install ICU + +icuVersion="73.2" +icuLocationLib="/opt/icu/lib64" +icuLocationInclude="/opt/icu/include" +sha1="5699987afcceb0390e52fb860bb3b4ab8b39cabe" +baseBinaryPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Ubuntu22.04-x64.7z" +baseBinaryPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Ubuntu22.04-x64.7z" + +sha1Dev="6b9da2fa5fd88db88e9957ee5e3cf9dbcd08fe6b" +develPackageURL="http://ci-files01-hki.ci.qt.io/input/icu/$icuVersion/icu-linux-g++-Ubuntu22.04-x64-devel.7z" +develPackageExternalURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Ubuntu22.04-x64-devel.7z" + +echo "Installing custom ICU $icuVersion $sha1 packages on CentOS to $icuLocationLib" + +targetFile=$(mktemp) +sudo mkdir -p "$icuLocationLib" +sudo mkdir -p "$icuLocationInclude" +DownloadURL "$baseBinaryPackageURL" "$baseBinaryPackageExternalURL" "$sha1" "$targetFile" +sudo 7z x -y -o$icuLocationLib "$targetFile" +sudo rm "$targetFile" + +echo "Installing custom ICU devel packages on CentOS" + +tempDir=$(mktemp -d) + +targetFile=$(mktemp) +DownloadURL "$develPackageURL" "$develPackageExternalURL" "$sha1Dev" "$targetFile" +7z x -y -o"$tempDir" "$targetFile" + +sudo cp -a "$tempDir"/lib/* "$icuLocationLib" +sudo cp -a "$tempDir"/* /opt/icu/ + +sudo rm "$targetFile" +sudo rm -fr "$tempDir" + +sudo /sbin/ldconfig + +echo "ICU = $icuVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/35-install-breakpad.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/35-install-breakpad.sh new file mode 100644 index 00000000000..8a9dde56be4 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/35-install-breakpad.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-breakpad.sh +source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/40-android_linux.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/40-android_linux.sh new file mode 100644 index 00000000000..2526bc6d3ee --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/40-android_linux.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Copyright (C) 2017 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/android_linux.sh +source "${BASH_SOURCE%/*}/../common/linux/android_linux.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/40-install-cmake.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/40-install-cmake.sh new file mode 100644 index 00000000000..a418e4c5452 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/40-install-cmake.sh @@ -0,0 +1,7 @@ +#!/bin/bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/cmake_linux.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/41-install-vcpkg.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/41-install-vcpkg.sh new file mode 100644 index 00000000000..aa88364d005 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/41-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/42-install-vcpkg-ports.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/42-install-vcpkg-ports.sh new file mode 100644 index 00000000000..71a46f9a4e6 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/42-install-vcpkg-ports.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-vcpkg-ports.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/45-install-cpdb.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/45-install-cpdb.sh new file mode 100644 index 00000000000..40497ee0a89 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/45-install-cpdb.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script install cpdb from sources. +# Requires GCC and Perl to be in PATH. +set -ex + +# Install the dependencies +sudo apt install -y make autoconf autopoint libglib2.0-dev libdbus-1-dev libtool + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/install-cpdb.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/50-openssl_for_android_linux.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/50-openssl_for_android_linux.sh new file mode 100644 index 00000000000..fd1151d97e5 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/50-openssl_for_android_linux.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/openssl_for_android.sh +source "${BASH_SOURCE%/*}/../common/unix/openssl_for_android.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/60-install_protobuf.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/60-install_protobuf.sh new file mode 100644 index 00000000000..3e2b8921878 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/60-install_protobuf.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2018 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_protobuf.sh +source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/61-install_grpc.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/61-install_grpc.sh new file mode 100644 index 00000000000..ecd6a51f230 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/61-install_grpc.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_grpc.sh +source "${BASH_SOURCE%/*}/../common/unix/install_grpc.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-install_QemuGA.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-install_QemuGA.sh new file mode 100644 index 00000000000..9a80fc0b8cc --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-install_QemuGA.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Copyright (C) 2020 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs QEMU Guest Agent + +set -ex + +sudo apt -y install qemu-guest-agent +sudo systemctl start qemu-guest-agent diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-qnx710.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-qnx710.sh new file mode 100644 index 00000000000..08eeb57bb60 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-qnx710.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/qnx_710.sh +source "${BASH_SOURCE%/*}/../common/linux/qnx_710.sh" + +# setup NFS +sudo bash -c "echo '/home/qt/work ${qemuNetwork}/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000)' >> /etc/exports" +sudo exportfs -a +sudo systemctl restart nfs-kernel-server diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-vxworks.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-vxworks.sh new file mode 100644 index 00000000000..3bb48d11cb0 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/70-vxworks.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/vx_works.sh +source "${BASH_SOURCE%/*}/../common/linux/vx_works.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/80-docker.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/80-docker.sh new file mode 100644 index 00000000000..049e61f61d3 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/80-docker.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -e + +PROVISIONING_DIR="$(dirname "$0")/../" +# shellcheck source=../common/unix/common.sourced.sh +source "$PROVISIONING_DIR"/common/unix/common.sourced.sh +# shellcheck source=../common/unix/DownloadURL.sh +source "$PROVISIONING_DIR"/common/unix/DownloadURL.sh + +localRepo=http://ci-files01-hki.ci.qt.io/input/docker +# upstreamRepo=https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64 +#upstreamRepo=https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64 +upstreamRepo=https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64 +echo ' + 57c62933ad2dc07a3a79efd5b464ea84fa80c773 containerd.io_1.6.31-1_amd64.deb + cbcd536345e052b9221a0240caa451e1b687a05e docker-ce_26.1.0-1~ubuntu.24.04~noble_amd64.deb + 6f0989763692b88b748444174e70b6069c781533 docker-ce-cli_26.1.0-1~ubuntu.24.04~noble_amd64.deb +' \ + | xargs -n2 | while read -r sha f +do + DownloadURL "$localRepo/$f" "$upstreamRepo/$f" "$sha" +done + +sudo apt-get -y install ./containerd.io_*.deb ./docker-ce_*.deb ./docker-ce-cli_*.deb +rm -f ./containerd.io_*.deb ./docker-ce_*.deb ./docker-ce-cli_*.deb + +sudo usermod -a -G docker "$USER" +sudo docker --version + +# Download and install the docker-compose extension from https://github.com/docker/compose/releases +f=docker-compose-$(uname -s)-$(uname -m) +DownloadURL \ + "$localRepo/$f-1.24.1" \ + "https://github.com/docker/compose/releases/download/1.24.1/$f" \ + cfb3439956216b1248308141f7193776fcf4b9c9b49cbbe2fb07885678e2bb8a +sudo install -m 755 ./docker-compose* /usr/local/bin/docker-compose +sudo docker-compose --version +rm ./docker-compose* + +# Install Avahi to discover Docker containers in the test network +sudo apt-get install avahi-daemon -y + +# Add registry mirror for docker images +sudo tee -a /etc/docker/daemon.json <<"EOF" +{ + "registry-mirrors": ["http://repo-clones.ci.qt.io:5000/"] +} +EOF + +echo "Restart Docker" +sudo systemctl daemon-reload +sudo systemctl restart docker + +# Start testserver provisioning +sudo "$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")/../common/shared/testserver/docker_testserver.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/81-fix_mdns_docker_resolution.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/81-fix_mdns_docker_resolution.sh new file mode 100644 index 00000000000..30fe71ca198 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/81-fix_mdns_docker_resolution.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# The new version of libnss-mdns resolver library automatically rejects all +# hostnames with more than two labels (i.e. subdomains deep), for example +# vsftpd.test-net.qt.local is automatically rejected. The changes here fix +# this, see also https://github.com/lathiat/nss-mdns#etcmdnsallow + +cat < /dev/null; then + sudo 7zr x "$zip" "-o$destination/" +else + sudo 7z x "$zip" "-o$destination/" +fi +sudo chown -R qt:users "$destination" +rm -rf "$zip" + +echo -e "qdoc = $version\nqtattributionsscanner = $version" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-bootstrap-autostart.sh new file mode 100644 index 00000000000..1ff4385064d --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-bootstrap-autostart.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-install-ffmpeg.sh new file mode 100644 index 00000000000..61da9b7b3a4 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-install-ffmpeg.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-mimer.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-mimer.sh new file mode 100644 index 00000000000..f06ca1c84f3 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-mimer.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/mimersql.sh" "openssl-3" "deb" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-squish.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-squish.sh new file mode 100644 index 00000000000..f803ccc1fa1 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/90-squish.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/squishInstall.sh" + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-install-dummy-sound.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-install-dummy-sound.sh new file mode 100755 index 00000000000..5d280b36129 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-install-dummy-sound.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-dummy-alsa-device.sh +source "${BASH_SOURCE%/*}/../common/linux/install-dummy-alsa-device.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-install-vivid-camera.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-install-vivid-camera.sh new file mode 100755 index 00000000000..4c14ef03197 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-install-vivid-camera.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/linux/install-vivid-camera.sh +source "${BASH_SOURCE%/*}/../common/linux/install-vivid-camera.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-squish-coco.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-squish-coco.sh new file mode 100644 index 00000000000..e42a53730fd --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/91-squish-coco.sh @@ -0,0 +1,6 @@ +#!/bin/bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/squish-coco.sh +source "${BASH_SOURCE%/*}/../common/linux/squish-coco.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/92-sbuild.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/92-sbuild.sh new file mode 100644 index 00000000000..d538d7837b7 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/92-sbuild.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# Setups sbuild environment + +tee ~/.sbuildrc << EOF +############################################################################## +# PACKAGE BUILD RELATED (additionally produce _source.changes) +############################################################################## +# -d +\$distribution = 'stable'; +# -A +\$build_arch_all = 1; +# -s +\$build_source = 1; +# -v +\$verbose = 1; +# parallel build +\$ENV{'DEB_BUILD_OPTIONS'} = 'parallel=8'; +############################################################################## +# POST-BUILD RELATED (turn off functionality by setting variables to 0) +############################################################################## +\$run_lintian = 1; +\$lintian_opts = ['-i', '-I']; +\$run_piuparts = 0; +\$piuparts_opts = ['--schroot', 'stable-amd64-sbuild', '--no-eatmydata']; +\$run_autopkgtest = 0; +\$autopkgtest_root_args = ''; +\$autopkgtest_opts = [ '--', 'schroot', '%r-%a-sbuild' ]; + +############################################################################## +# PERL MAGIC +############################################################################## +1; +EOF + +# Add user group +sudo sbuild-adduser "$LOGNAME" +newgrp sbuild + +# Create chroot +sudo sbuild-createchroot --include=eatmydata,ccache,gnupg,ca-certificates stable /srv/chroot/stable-amd64 + +# For ubuntu 24.04 +echo "Create chroot for Ubuntu Noble" +## ccache can't be found with Jammy (TODO: but now we have Noble - this should be tested) +sudo sbuild-createchroot --include=eatmydata,gnupg,ca-certificates noble /srv/chroot/noble-amd64 http://archive.ubuntu.com/ubuntu/ +echo "Done creating chroot for Ubuntu Noble" + +# Update chroot. +sudo sbuild-update -udcar stable + + + + + diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-axivion-bauhaus-suite.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-axivion-bauhaus-suite.sh new file mode 100644 index 00000000000..8cecbbc3788 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-axivion-bauhaus-suite.sh @@ -0,0 +1,6 @@ +#!/bin/bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# shellcheck source=../common/linux/axivion-bauhaus-suite.sh +source "${BASH_SOURCE%/*}/../common/linux/axivion-bauhaus-suite.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-download-files-for-sbuild.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-download-files-for-sbuild.sh new file mode 100644 index 00000000000..8f53319ca83 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-download-files-for-sbuild.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# Get required deb files for sbuild to build qt debian packages for Ubuntu jammy +mkdir -p /home/qt/debian_packages +cd /home/qt/debian_packages || exit +# Backported cmake 3.24 +wget https://ci-files01-hki.ci.qt.io/input/debian/cmake/amd64-jammy/cmake-3.24-deb.tar.gz +tar xzf cmake-3.24-deb.tar.gz +rm -rf cmake-3.24-deb.tar.gz +# TODO: Adapt this from jammy to noble Ubuntu 24.04: +# get rest of ready made Ubuntu jammy arm debian packages +# so that sbuild can find those + +#wget http://ci-files01-hki.ci.qt.io/input/debian/icu/amd64-jammy/libicu-56.1-qt_56.1-1_amd64.deb +#wget http://ci-files01-hki.ci.qt.io/input/debian/icu/amd64-jammy/libicu-56.1-qt-dev_56.1-1_amd64.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-lcov.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-lcov.sh new file mode 100644 index 00000000000..de4a74d555f --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/93-lcov.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# Install lcov 2.0 from 24.04/noble numbat + +echo "Installing lcov" +wget https://ci-files01-hki.ci.qt.io/input/lcov/lcov_2.0-4ubuntu1_all.deb +sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o DPkg::Lock::Timeout=300 install -f ./lcov_2.0-4ubuntu1_all.deb diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-cleanup.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-cleanup.sh new file mode 100644 index 00000000000..4d6e16ea2bf --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-cleanup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +"$(dirname "$0")"/../common/linux/cleanup_cache.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-enable_test_stacktraces.sh new file mode 100644 index 00000000000..600b7850b25 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-version.sh b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-version.sh new file mode 100644 index 00000000000..31821f6b957 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-24.04-x86_64/99-version.sh @@ -0,0 +1,6 @@ +#!/bin/bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/linux/ubuntu-version.sh" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/01-systemsetup.sh index 13e5c31d455..1108ba0276d 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/01-systemsetup.sh @@ -18,6 +18,8 @@ sed -i '$ a\[Daemon\]\nAutolock=false\nLockOnResume=false' ~/.config/kscreenlock sudo sed -i 's|GRUB_TIMEOUT=8|GRUB_TIMEOUT=0|g' /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/04-zypperpackages.sh b/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/04-zypperpackages.sh index 49d2333da5f..3d82dade54c 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/04-zypperpackages.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.3-x86_64/04-zypperpackages.sh @@ -66,7 +66,10 @@ sudo zypper -nq install make # Tools to build Git sudo zypper -nq install autoconf libcurl-devel libexpat-devel -gccVersion="$(gcc --version |grep gcc |cut -b 17-23)" +# Java +sudo zypper -nq install java-17-openjdk + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" echo "GCC = $gccVersion" >> versions.txt OpenSSLVersion="$(openssl version |cut -b 9-14)" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/01-systemsetup.sh index f89ed0c62ad..d60ccd7f420 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/01-systemsetup.sh @@ -18,6 +18,8 @@ sed -i '$ a\[Daemon\]\nAutolock=false\nLockOnResume=false' ~/.config/kscreenlock sudo sed -i 's|GRUB_TIMEOUT=8|GRUB_TIMEOUT=0|g' /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/04-zypperpackages.sh b/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/04-zypperpackages.sh index f55387b4827..eab1d584ae1 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/04-zypperpackages.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/04-zypperpackages.sh @@ -72,7 +72,10 @@ sudo zypper -nq install openssl-3 # Valgrind (Needed for testlib selftests) sudo zypper -nq install valgrind-devel -gccVersion="$(gcc --version |grep gcc |cut -b 17-23)" +# Java +sudo zypper -nq install java-17-openjdk + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" echo "GCC = $gccVersion" >> versions.txt OpenSSLVersion="$(openssl-3 version |cut -b 9-14)" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/01-systemsetup.sh b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/01-systemsetup.sh index f3334d07049..01c8a0483c2 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/01-systemsetup.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/01-systemsetup.sh @@ -17,6 +17,8 @@ sed -i '$ a\[Daemon\]\nAutolock=false\nLockOnResume=false' ~/.config/kscreenlock sudo sed -i 's|GRUB_TIMEOUT=8|GRUB_TIMEOUT=0|g' /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg +echo "Disable window animations." +gsettings set org.gnome.desktop.interface enable-animations false echo "Set Network Test Server address to $network_test_server_ip in /etc/hosts" echo "$network_test_server_ip qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts echo "Set DISPLAY" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/04-zypperpackages.sh b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/04-zypperpackages.sh index afea0ff88bc..cc68792bc09 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/04-zypperpackages.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/04-zypperpackages.sh @@ -48,8 +48,8 @@ sudo zypper -nq install libxml2-devel libxslt-devel # yasm (for ffmpeg in multimedia) sudo zypper -nq install yasm -# GStreamer (qtwebkit and qtmultimedia), pulseaudio (qtmultimedia) -sudo zypper -nq install gstreamer-devel gstreamer-plugins-base-devel libpulse-devel +# pulseaudio (qtmultimedia) +sudo zypper -nq install libpulse-devel pipewire-devel # cups sudo zypper -nq install cups-devel @@ -78,7 +78,13 @@ sudo zypper -nq install valgrind-devel # cifs-utils, for mounting smb drive sudo zypper -nq install cifs-utils -gccVersion="$(gcc --version |grep gcc |cut -b 17-23)" +# Java +sudo zypper -nq install java-17-openjdk + +# For tst_license.pl with all the machines generating SBOM +sudo zypper -nq install perl-JSON + +gccVersion="$(gcc --version |grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' |head -n 1)" echo "GCC = $gccVersion" >> versions.txt OpenSSLVersion="$(openssl-3 version |cut -b 9-14)" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/08-pythondev.sh b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/08-pythondev.sh index 82101c9ba91..e6b15cb97bf 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/08-pythondev.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/08-pythondev.sh @@ -14,5 +14,11 @@ sudo zypper -nq install python-devel python-xml # install python3 sudo zypper -nq install python311-base python311-devel python311-pip python311-virtualenv python311-wheel python3.11 -m pip install selenium netifaces scache webdriver-manager +python3.11 -m pip install -r "${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt" SetEnvVar "PYTHON3_EXECUTABLE" "/usr/bin/python3.11" + +# Provisioning during installation says: +# 'Defaulting to user installation because normal site-packages is not writeable' +# So it implicitly uses pip install --user, hence the path. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/home/qt/.local/bin" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/91-install-dummy-sound.sh b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/91-install-dummy-sound.sh index 345c5efac06..5d280b36129 100755 --- a/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/91-install-dummy-sound.sh +++ b/coin/provisioning/qtci-linux-openSUSE-15.5-x86_64/91-install-dummy-sound.sh @@ -1,60 +1,8 @@ #!/usr/bin/env bash -# Copyright (C) 2023 The Qt Company Ltd. +# Copyright (C) 2024 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only set -ex -systemd_folder=/etc/systemd/system -systemd_file=dummysound.service -script_folder=/home/qt/bin -script_file=dummy_sound.sh - -# Create script to install dummy sound driver, -# in case no other sound driver is installed. -sudo tee "${script_folder}/${script_file}" <<"EOF" -# Check for existing sound driver -if lsmod | grep -q -i snd -then - echo "(**) Sound driver already loaded. Nothing to do."; - exit 0; -fi - -# load dummy sound module -sudo modprobe snd-dummy - -# Check result -if lsmod | grep -q snd_dummy -then - echo "(**) Dummy sound driver loaded."; -else - echo "(EE) Failed to load dummy sound driver."; - exit 1; -fi -EOF - -# set permissions -sudo chmod 750 "${script_folder}/${script_file}" - -# Create service file -sudo tee "${systemd_folder}/${systemd_file}" <<"EOF" -# /etc/systemd/system/dummysound.service -# - -[Unit] -Description=Install dummy sound driver - -[Service] -Type=oneshot -ExecStart=/bin/sh -c "/home/qt/bin/dummy_sound.sh" - -[Install] -WantedBy=multi-user.target -EOF - -# Start servive and output result, just for logging -sudo systemctl start dummysound.service -# status commented out, returns 3 on VM. -# sudo systemctl status dummysound.service - -# enable service -sudo systemctl enable dummysound.service +# shellcheck source=../common/linux/install-dummy-alsa-device.sh +source "${BASH_SOURCE%/*}/../common/linux/install-dummy-alsa-device.sh" diff --git a/coin/provisioning/qtci-macos-10.15-x86_64/25-postgresql.sh b/coin/provisioning/qtci-macos-10.15-x86_64/25-postgresql.sh index 95460b553ba..2c1e4b8faf0 100755 --- a/coin/provisioning/qtci-macos-10.15-x86_64/25-postgresql.sh +++ b/coin/provisioning/qtci-macos-10.15-x86_64/25-postgresql.sh @@ -22,5 +22,5 @@ appPrefix="" InstallAppFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$appPrefix" -SetEnvVar "POSTGRESQLBINPATH" "/Applications/Postgres.app/Contents/Versions/9.6/bin" +SetEnvVar "PostgreSQL_ROOT" "/Applications/Postgres.app/Contents/Versions/9.6" echo "PostgreSQL = $psqlVersion" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-10.15-x86_64/30-android.sh b/coin/provisioning/qtci-macos-10.15-x86_64/30-android.sh index 3ae2cbf6cbf..e164cb9545a 100755 --- a/coin/provisioning/qtci-macos-10.15-x86_64/30-android.sh +++ b/coin/provisioning/qtci-macos-10.15-x86_64/30-android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersion="r26b" +ndkVersion="r27c" ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" ndkSourceFile="$basePath/$ndkFile" diff --git a/coin/provisioning/qtci-macos-11-arm/25-python3.sh b/coin/provisioning/qtci-macos-11-arm/25-python3.sh index 5a0df739559..bbf8cad196a 100755 --- a/coin/provisioning/qtci-macos-11-arm/25-python3.sh +++ b/coin/provisioning/qtci-macos-11-arm/25-python3.sh @@ -10,7 +10,7 @@ source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" pyenv install 3.9.7 -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user install virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" diff --git a/coin/provisioning/qtci-macos-11-arm/30-android.sh b/coin/provisioning/qtci-macos-11-arm/30-android.sh index 3ae2cbf6cbf..e164cb9545a 100755 --- a/coin/provisioning/qtci-macos-11-arm/30-android.sh +++ b/coin/provisioning/qtci-macos-11-arm/30-android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersion="r26b" +ndkVersion="r27c" ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" ndkSourceFile="$basePath/$ndkFile" diff --git a/coin/provisioning/qtci-macos-11-arm/55-signtools.sh b/coin/provisioning/qtci-macos-11-arm/55-signtools.sh deleted file mode 100755 index ff5a977a7a1..00000000000 --- a/coin/provisioning/qtci-macos-11-arm/55-signtools.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env sh -# Copyright (C) 2020 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - -# Install tools for singing packages -# This script assume that OS is vanilla. Target machine dosen't have any signing certificates installed. - -set -ex - -cache="http://ci-files01-hki.ci.qt.io/input" -cacheSigningTools="$cache/mac/sign_tools" -targetFolder="/Users/qt" -keychains="$targetFolder/Library/Keychains" - -Install() { - - url=$1 - targetFile=$2 - expectedSha1=$3 - - echo "Fetching $targetFile from $url..." - curl --retry 5 --retry-delay 10 --retry-max-time 60 "$url" -o "$targetFile" - shasum "$targetFile" |grep "$expectedSha1" - -} - -# qt-license -sha1QtLicense="9d59241d16f68d914f1c7aa1dc23e05faa169e8d" -Install "$cache/semisecure/.qt-license" "$targetFolder/.qt-license" $sha1QtLicense - -# Login keychain -sha1LoginKeychainPassword="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -Install "$cacheSigningTools/login_keychain_password.txt" "$targetFolder/login_keychain_password.txt" "$sha1LoginKeychainPassword" -{ loginKeychainPassword=$(cat "$targetFolder/login_keychain_password.txt"); } 2> /dev/null -loginKeychain=$keychains/login.keychain - -echo "Setting login.keychain as default keychain.." -security default-keychain -s $loginKeychain* -echo "Unlocking Login keychain with password.." -{ security unlock-keychain -p "$loginKeychainPassword" $loginKeychain*; } 2> /dev/null - -echo "remove the "Lock after X minutes of inactivity" from login.keychain" -security set-keychain-settings $loginKeychain - -# Apple Worldwide Developer Relations Certification Authority -> https://developer.apple.com/certificationauthority/AppleWWDRCA.cer -sha1AppleWWDRCA="ff6797793a3cd798dc5b2abef56f73edc9f83a64" -Install "$cacheSigningTools/AppleWWDRCA.cer" "$targetFolder/AppleWWDRCA.cer" $sha1AppleWWDRCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/AppleWWDRCA.cer" - -# Developer ID Certification Authority -> https://www.apple.com/certificateauthority/DeveloperIDCA.cer -sha1DeveloperIDCA="3b166c3b7dc4b751c9fe2afab9135641e388e186" -Install "$cacheSigningTools/DeveloperIDCA.cer" "$targetFolder/DeveloperIDCA.cer" $sha1DeveloperIDCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/DeveloperIDCA.cer" - -# Create script to unlock keychain 'security unlock-keychain -p 'password' Developer_ID_TheQtCompany.keychain' -sha1UnLockKeychain="4398870e3f558ad28c80566b5f70e24dc29ea724" -unlockKeychain=$targetFolder/unlock-keychain.sh -{ Install "$cacheSigningTools/unlock-keychain.sh" "$unlockKeychain" $sha1UnLockKeychain; } 2> /dev/null -sudo chmod 755 "$unlockKeychain" - -# Codesigning requirements file. The bundle identifier in the requirements file should match the identifier of the application that is signed. -shaCsreq="2c3f00b1845a0f475673fd6934ba25ea51d1f910" -csreq=$targetFolder/csreq_qt_company.txt -Install "$cacheSigningTools/csreq_qt_company.txt" "$csreq" $shaCsreq -chmod 755 "$csreq" - -# iOS signing tools -devIDKeychain="Developer_ID_TheQtCompany.keychain-db" -shaDevIdKeychain="972cca1879cdaeeb6042f9879756c748a8d1eddc" -Install "$cacheSigningTools/$devIDKeychain" "$keychains/$devIDKeychain" $shaDevIdKeychain -echo "Opening $devIDKeychain.." -open "$keychains/$devIDKeychain" - -sha1DeveloperIDTheQtCompanyKeychainPassword="d758e067736bbda7a91ffaec66cd38afdaf68ea6" -Install "$cacheSigningTools/Developer_ID_TheQtCompany_keychain_password.txt" "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt" "$sha1DeveloperIDTheQtCompanyKeychainPassword" -{ DeveloperIDTheQtCompanyKeychainPassword=$(cat "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt"); } 2> /dev/null - -echo "Unlocking $devIDKeychain with password.." -{ security unlock-keychain -p "$DeveloperIDTheQtCompanyKeychainPassword" $keychains/Developer_ID_TheQtCompany.keychain; } 2> /dev/null -security set-keychain-settings $keychains/Developer_ID_TheQtCompany.keychain - -sha1Ios="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -{ Install "$cacheSigningTools/ios_password.txt" "$targetFolder/ios_password.txt" $sha1Ios; } 2> /dev/null -{ iosPassword=$(cat "$targetFolder/ios_password.txt"); } 2> /dev/null - -iPhoneDeveloper="iPhoneDeveloperCiTeam2020.p12" -shaIPhoneDeveloper="73136e44fed850f398e85908e4a73f20a6bdd8a2" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDeveloper" "$targetFolder/$iPhoneDeveloper" $shaIPhoneDeveloper -echo "Importing $iPhoneDeveloper.." -{ security import $targetFolder/$iPhoneDeveloper -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -iPhoneDistribution="iPhoneDistributionCiTeam2020.p12" -shaIPhoneDistribution="36215c3cbc6bfee48e86aafbd53c56282fe36d8d" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDistribution" "$targetFolder/$iPhoneDistribution" $shaIPhoneDistribution -echo "Importing $iPhoneDistribution.." -{ security import "$targetFolder/$iPhoneDistribution" -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -# Mobileprovision -echo "Creating directory $targetFolder/Library/MobileDevice/Provisioning Profiles.." -mkdir "$targetFolder/Library/MobileDevice" -mkdir "$targetFolder/Library/MobileDevice/Provisioning Profiles" -shaMobileprovision="ec9697276253ca7bf4401912236f0e6fde4214da" -Install "$cacheSigningTools/latest_ios_cert_2020/iOS_Dev_2020_citeam.mobileprovision" "$targetFolder/Library/MobileDevice/Provisioning Profiles/iOS_Dev_2020_citeam.mobileprovision" $shaMobileprovision - -# Removing password files -rm -fr "$targetFolder/login_keychain_password.txt" - diff --git a/coin/provisioning/qtci-macos-11-x86_64/30-android.sh b/coin/provisioning/qtci-macos-11-x86_64/30-android.sh index 11bcf7ad809..b1568e4d368 100755 --- a/coin/provisioning/qtci-macos-11-x86_64/30-android.sh +++ b/coin/provisioning/qtci-macos-11-x86_64/30-android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersion="r26b" +ndkVersion="r27c" ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" ndkSourceFile="$basePath/$ndkFile" diff --git a/coin/provisioning/qtci-macos-12-arm/01-set_tcc_permissions.sh b/coin/provisioning/qtci-macos-12-arm/01-set_tcc_permissions.sh new file mode 100755 index 00000000000..da38f582c40 --- /dev/null +++ b/coin/provisioning/qtci-macos-12-arm/01-set_tcc_permissions.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex +source "${BASH_SOURCE%/*}/../common/macos/set_tcc_permissions.sh" diff --git a/coin/provisioning/qtci-macos-12-arm/10-enable-vnc.sh b/coin/provisioning/qtci-macos-12-arm/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-12-arm/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-12-arm/25-python.sh b/coin/provisioning/qtci-macos-12-arm/25-python.sh index 9bfb6384b8b..bc0857a56fe 100755 --- a/coin/provisioning/qtci-macos-12-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-12-arm/25-python.sh @@ -10,13 +10,19 @@ source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" pyenv install 3.9.7 -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user install virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" # Use 3.9 as a default python SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" +# Provisioning during installation says: +# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/qt/.local/bin" + # QtWebengine still requires python2 pyenv install 2.7.18 SetEnvVar "PYTHON2_PATH" "/Users/qt/.pyenv/versions/2.7.18/bin/" diff --git a/coin/provisioning/qtci-macos-12-arm/30-android.sh b/coin/provisioning/qtci-macos-12-arm/30-android.sh index 6259b71ed12..acd2d4b9e88 100755 --- a/coin/provisioning/qtci-macos-12-arm/30-android.sh +++ b/coin/provisioning/qtci-macos-12-arm/30-android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersion="r26b" +ndkVersion="r27c" ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" ndkSourceFile="$basePath/$ndkFile" diff --git a/coin/provisioning/qtci-macos-12-arm/30-nodejs.sh b/coin/provisioning/qtci-macos-12-arm/30-nodejs.sh index 8f73b2d69a0..4d487cfc7db 100755 --- a/coin/provisioning/qtci-macos-12-arm/30-nodejs.sh +++ b/coin/provisioning/qtci-macos-12-arm/30-nodejs.sh @@ -2,7 +2,10 @@ #Copyright (C) 2023 The Qt Company Ltd #SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -set -ex +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" -brew install nodejs +set -ex +brew install node@22 +SetEnvVar "PATH" "/opt/homebrew/opt/node@22/bin:\$PATH" diff --git a/coin/provisioning/qtci-macos-12-arm/55-signtools.sh b/coin/provisioning/qtci-macos-12-arm/55-signtools.sh deleted file mode 100755 index ff5a977a7a1..00000000000 --- a/coin/provisioning/qtci-macos-12-arm/55-signtools.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env sh -# Copyright (C) 2020 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - -# Install tools for singing packages -# This script assume that OS is vanilla. Target machine dosen't have any signing certificates installed. - -set -ex - -cache="http://ci-files01-hki.ci.qt.io/input" -cacheSigningTools="$cache/mac/sign_tools" -targetFolder="/Users/qt" -keychains="$targetFolder/Library/Keychains" - -Install() { - - url=$1 - targetFile=$2 - expectedSha1=$3 - - echo "Fetching $targetFile from $url..." - curl --retry 5 --retry-delay 10 --retry-max-time 60 "$url" -o "$targetFile" - shasum "$targetFile" |grep "$expectedSha1" - -} - -# qt-license -sha1QtLicense="9d59241d16f68d914f1c7aa1dc23e05faa169e8d" -Install "$cache/semisecure/.qt-license" "$targetFolder/.qt-license" $sha1QtLicense - -# Login keychain -sha1LoginKeychainPassword="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -Install "$cacheSigningTools/login_keychain_password.txt" "$targetFolder/login_keychain_password.txt" "$sha1LoginKeychainPassword" -{ loginKeychainPassword=$(cat "$targetFolder/login_keychain_password.txt"); } 2> /dev/null -loginKeychain=$keychains/login.keychain - -echo "Setting login.keychain as default keychain.." -security default-keychain -s $loginKeychain* -echo "Unlocking Login keychain with password.." -{ security unlock-keychain -p "$loginKeychainPassword" $loginKeychain*; } 2> /dev/null - -echo "remove the "Lock after X minutes of inactivity" from login.keychain" -security set-keychain-settings $loginKeychain - -# Apple Worldwide Developer Relations Certification Authority -> https://developer.apple.com/certificationauthority/AppleWWDRCA.cer -sha1AppleWWDRCA="ff6797793a3cd798dc5b2abef56f73edc9f83a64" -Install "$cacheSigningTools/AppleWWDRCA.cer" "$targetFolder/AppleWWDRCA.cer" $sha1AppleWWDRCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/AppleWWDRCA.cer" - -# Developer ID Certification Authority -> https://www.apple.com/certificateauthority/DeveloperIDCA.cer -sha1DeveloperIDCA="3b166c3b7dc4b751c9fe2afab9135641e388e186" -Install "$cacheSigningTools/DeveloperIDCA.cer" "$targetFolder/DeveloperIDCA.cer" $sha1DeveloperIDCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/DeveloperIDCA.cer" - -# Create script to unlock keychain 'security unlock-keychain -p 'password' Developer_ID_TheQtCompany.keychain' -sha1UnLockKeychain="4398870e3f558ad28c80566b5f70e24dc29ea724" -unlockKeychain=$targetFolder/unlock-keychain.sh -{ Install "$cacheSigningTools/unlock-keychain.sh" "$unlockKeychain" $sha1UnLockKeychain; } 2> /dev/null -sudo chmod 755 "$unlockKeychain" - -# Codesigning requirements file. The bundle identifier in the requirements file should match the identifier of the application that is signed. -shaCsreq="2c3f00b1845a0f475673fd6934ba25ea51d1f910" -csreq=$targetFolder/csreq_qt_company.txt -Install "$cacheSigningTools/csreq_qt_company.txt" "$csreq" $shaCsreq -chmod 755 "$csreq" - -# iOS signing tools -devIDKeychain="Developer_ID_TheQtCompany.keychain-db" -shaDevIdKeychain="972cca1879cdaeeb6042f9879756c748a8d1eddc" -Install "$cacheSigningTools/$devIDKeychain" "$keychains/$devIDKeychain" $shaDevIdKeychain -echo "Opening $devIDKeychain.." -open "$keychains/$devIDKeychain" - -sha1DeveloperIDTheQtCompanyKeychainPassword="d758e067736bbda7a91ffaec66cd38afdaf68ea6" -Install "$cacheSigningTools/Developer_ID_TheQtCompany_keychain_password.txt" "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt" "$sha1DeveloperIDTheQtCompanyKeychainPassword" -{ DeveloperIDTheQtCompanyKeychainPassword=$(cat "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt"); } 2> /dev/null - -echo "Unlocking $devIDKeychain with password.." -{ security unlock-keychain -p "$DeveloperIDTheQtCompanyKeychainPassword" $keychains/Developer_ID_TheQtCompany.keychain; } 2> /dev/null -security set-keychain-settings $keychains/Developer_ID_TheQtCompany.keychain - -sha1Ios="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -{ Install "$cacheSigningTools/ios_password.txt" "$targetFolder/ios_password.txt" $sha1Ios; } 2> /dev/null -{ iosPassword=$(cat "$targetFolder/ios_password.txt"); } 2> /dev/null - -iPhoneDeveloper="iPhoneDeveloperCiTeam2020.p12" -shaIPhoneDeveloper="73136e44fed850f398e85908e4a73f20a6bdd8a2" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDeveloper" "$targetFolder/$iPhoneDeveloper" $shaIPhoneDeveloper -echo "Importing $iPhoneDeveloper.." -{ security import $targetFolder/$iPhoneDeveloper -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -iPhoneDistribution="iPhoneDistributionCiTeam2020.p12" -shaIPhoneDistribution="36215c3cbc6bfee48e86aafbd53c56282fe36d8d" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDistribution" "$targetFolder/$iPhoneDistribution" $shaIPhoneDistribution -echo "Importing $iPhoneDistribution.." -{ security import "$targetFolder/$iPhoneDistribution" -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -# Mobileprovision -echo "Creating directory $targetFolder/Library/MobileDevice/Provisioning Profiles.." -mkdir "$targetFolder/Library/MobileDevice" -mkdir "$targetFolder/Library/MobileDevice/Provisioning Profiles" -shaMobileprovision="ec9697276253ca7bf4401912236f0e6fde4214da" -Install "$cacheSigningTools/latest_ios_cert_2020/iOS_Dev_2020_citeam.mobileprovision" "$targetFolder/Library/MobileDevice/Provisioning Profiles/iOS_Dev_2020_citeam.mobileprovision" $shaMobileprovision - -# Removing password files -rm -fr "$targetFolder/login_keychain_password.txt" - diff --git a/coin/provisioning/qtci-macos-12-arm/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-12-arm/90-install-ffmpeg.sh index 23cb13e141c..4d4169bb657 100755 --- a/coin/provisioning/qtci-macos-12-arm/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-macos-12-arm/90-install-ffmpeg.sh @@ -5,3 +5,5 @@ set -ex source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal" +#source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-12-x86_64/10-enable-vnc.sh b/coin/provisioning/qtci-macos-12-x86_64/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-12-x86_64/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-12-x86_64/27-binutils.sh b/coin/provisioning/qtci-macos-12-x86_64/27-binutils.sh new file mode 100755 index 00000000000..04d3c5bf26a --- /dev/null +++ b/coin/provisioning/qtci-macos-12-x86_64/27-binutils.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# binutlis is installed with an error: The formula built, but is not symlinked into /usr/local +# To avoid stopping the configuration due to this problem, "|| true" is added. +brew install binutils || true + diff --git a/coin/provisioning/qtci-macos-12-x86_64/28-patchelf.sh b/coin/provisioning/qtci-macos-12-x86_64/28-patchelf.sh new file mode 100755 index 00000000000..17a1b0c6f12 --- /dev/null +++ b/coin/provisioning/qtci-macos-12-x86_64/28-patchelf.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" + diff --git a/coin/provisioning/qtci-macos-12-x86_64/31-golang.sh b/coin/provisioning/qtci-macos-12-x86_64/31-golang.sh new file mode 100755 index 00000000000..0348d7eb0e1 --- /dev/null +++ b/coin/provisioning/qtci-macos-12-x86_64/31-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install go diff --git a/coin/provisioning/qtci-macos-12-x86_64/31-upx.sh b/coin/provisioning/qtci-macos-12-x86_64/31-upx.sh new file mode 100755 index 00000000000..519900f6dab --- /dev/null +++ b/coin/provisioning/qtci-macos-12-x86_64/31-upx.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# The package was disabled in brew +#brew install upx diff --git a/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh index 8f6da818626..dfdc1022c27 100755 --- a/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh @@ -6,3 +6,4 @@ set -ex source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal" source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-13-arm/01-set_tcc_permissions.sh b/coin/provisioning/qtci-macos-13-arm/01-set_tcc_permissions.sh new file mode 100755 index 00000000000..da38f582c40 --- /dev/null +++ b/coin/provisioning/qtci-macos-13-arm/01-set_tcc_permissions.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex +source "${BASH_SOURCE%/*}/../common/macos/set_tcc_permissions.sh" diff --git a/coin/provisioning/qtci-macos-13-arm/10-enable-vnc.sh b/coin/provisioning/qtci-macos-13-arm/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-13-arm/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-13-arm/25-python.sh b/coin/provisioning/qtci-macos-13-arm/25-python.sh index 9bfb6384b8b..bc0857a56fe 100755 --- a/coin/provisioning/qtci-macos-13-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-13-arm/25-python.sh @@ -10,13 +10,19 @@ source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" pyenv install 3.9.7 -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user install virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" # Use 3.9 as a default python SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" +# Provisioning during installation says: +# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/qt/.local/bin" + # QtWebengine still requires python2 pyenv install 2.7.18 SetEnvVar "PYTHON2_PATH" "/Users/qt/.pyenv/versions/2.7.18/bin/" diff --git a/coin/provisioning/qtci-macos-13-arm/30-android.sh b/coin/provisioning/qtci-macos-13-arm/30-android.sh index 6259b71ed12..acd2d4b9e88 100755 --- a/coin/provisioning/qtci-macos-13-arm/30-android.sh +++ b/coin/provisioning/qtci-macos-13-arm/30-android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersion="r26b" +ndkVersion="r27c" ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" ndkSourceFile="$basePath/$ndkFile" diff --git a/coin/provisioning/qtci-macos-13-arm/55-signtools.sh b/coin/provisioning/qtci-macos-13-arm/55-signtools.sh deleted file mode 100755 index ff5a977a7a1..00000000000 --- a/coin/provisioning/qtci-macos-13-arm/55-signtools.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env sh -# Copyright (C) 2020 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - -# Install tools for singing packages -# This script assume that OS is vanilla. Target machine dosen't have any signing certificates installed. - -set -ex - -cache="http://ci-files01-hki.ci.qt.io/input" -cacheSigningTools="$cache/mac/sign_tools" -targetFolder="/Users/qt" -keychains="$targetFolder/Library/Keychains" - -Install() { - - url=$1 - targetFile=$2 - expectedSha1=$3 - - echo "Fetching $targetFile from $url..." - curl --retry 5 --retry-delay 10 --retry-max-time 60 "$url" -o "$targetFile" - shasum "$targetFile" |grep "$expectedSha1" - -} - -# qt-license -sha1QtLicense="9d59241d16f68d914f1c7aa1dc23e05faa169e8d" -Install "$cache/semisecure/.qt-license" "$targetFolder/.qt-license" $sha1QtLicense - -# Login keychain -sha1LoginKeychainPassword="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -Install "$cacheSigningTools/login_keychain_password.txt" "$targetFolder/login_keychain_password.txt" "$sha1LoginKeychainPassword" -{ loginKeychainPassword=$(cat "$targetFolder/login_keychain_password.txt"); } 2> /dev/null -loginKeychain=$keychains/login.keychain - -echo "Setting login.keychain as default keychain.." -security default-keychain -s $loginKeychain* -echo "Unlocking Login keychain with password.." -{ security unlock-keychain -p "$loginKeychainPassword" $loginKeychain*; } 2> /dev/null - -echo "remove the "Lock after X minutes of inactivity" from login.keychain" -security set-keychain-settings $loginKeychain - -# Apple Worldwide Developer Relations Certification Authority -> https://developer.apple.com/certificationauthority/AppleWWDRCA.cer -sha1AppleWWDRCA="ff6797793a3cd798dc5b2abef56f73edc9f83a64" -Install "$cacheSigningTools/AppleWWDRCA.cer" "$targetFolder/AppleWWDRCA.cer" $sha1AppleWWDRCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/AppleWWDRCA.cer" - -# Developer ID Certification Authority -> https://www.apple.com/certificateauthority/DeveloperIDCA.cer -sha1DeveloperIDCA="3b166c3b7dc4b751c9fe2afab9135641e388e186" -Install "$cacheSigningTools/DeveloperIDCA.cer" "$targetFolder/DeveloperIDCA.cer" $sha1DeveloperIDCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/DeveloperIDCA.cer" - -# Create script to unlock keychain 'security unlock-keychain -p 'password' Developer_ID_TheQtCompany.keychain' -sha1UnLockKeychain="4398870e3f558ad28c80566b5f70e24dc29ea724" -unlockKeychain=$targetFolder/unlock-keychain.sh -{ Install "$cacheSigningTools/unlock-keychain.sh" "$unlockKeychain" $sha1UnLockKeychain; } 2> /dev/null -sudo chmod 755 "$unlockKeychain" - -# Codesigning requirements file. The bundle identifier in the requirements file should match the identifier of the application that is signed. -shaCsreq="2c3f00b1845a0f475673fd6934ba25ea51d1f910" -csreq=$targetFolder/csreq_qt_company.txt -Install "$cacheSigningTools/csreq_qt_company.txt" "$csreq" $shaCsreq -chmod 755 "$csreq" - -# iOS signing tools -devIDKeychain="Developer_ID_TheQtCompany.keychain-db" -shaDevIdKeychain="972cca1879cdaeeb6042f9879756c748a8d1eddc" -Install "$cacheSigningTools/$devIDKeychain" "$keychains/$devIDKeychain" $shaDevIdKeychain -echo "Opening $devIDKeychain.." -open "$keychains/$devIDKeychain" - -sha1DeveloperIDTheQtCompanyKeychainPassword="d758e067736bbda7a91ffaec66cd38afdaf68ea6" -Install "$cacheSigningTools/Developer_ID_TheQtCompany_keychain_password.txt" "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt" "$sha1DeveloperIDTheQtCompanyKeychainPassword" -{ DeveloperIDTheQtCompanyKeychainPassword=$(cat "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt"); } 2> /dev/null - -echo "Unlocking $devIDKeychain with password.." -{ security unlock-keychain -p "$DeveloperIDTheQtCompanyKeychainPassword" $keychains/Developer_ID_TheQtCompany.keychain; } 2> /dev/null -security set-keychain-settings $keychains/Developer_ID_TheQtCompany.keychain - -sha1Ios="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -{ Install "$cacheSigningTools/ios_password.txt" "$targetFolder/ios_password.txt" $sha1Ios; } 2> /dev/null -{ iosPassword=$(cat "$targetFolder/ios_password.txt"); } 2> /dev/null - -iPhoneDeveloper="iPhoneDeveloperCiTeam2020.p12" -shaIPhoneDeveloper="73136e44fed850f398e85908e4a73f20a6bdd8a2" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDeveloper" "$targetFolder/$iPhoneDeveloper" $shaIPhoneDeveloper -echo "Importing $iPhoneDeveloper.." -{ security import $targetFolder/$iPhoneDeveloper -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -iPhoneDistribution="iPhoneDistributionCiTeam2020.p12" -shaIPhoneDistribution="36215c3cbc6bfee48e86aafbd53c56282fe36d8d" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDistribution" "$targetFolder/$iPhoneDistribution" $shaIPhoneDistribution -echo "Importing $iPhoneDistribution.." -{ security import "$targetFolder/$iPhoneDistribution" -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -# Mobileprovision -echo "Creating directory $targetFolder/Library/MobileDevice/Provisioning Profiles.." -mkdir "$targetFolder/Library/MobileDevice" -mkdir "$targetFolder/Library/MobileDevice/Provisioning Profiles" -shaMobileprovision="ec9697276253ca7bf4401912236f0e6fde4214da" -Install "$cacheSigningTools/latest_ios_cert_2020/iOS_Dev_2020_citeam.mobileprovision" "$targetFolder/Library/MobileDevice/Provisioning Profiles/iOS_Dev_2020_citeam.mobileprovision" $shaMobileprovision - -# Removing password files -rm -fr "$targetFolder/login_keychain_password.txt" - diff --git a/coin/provisioning/qtci-macos-13-arm/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-13-arm/90-install-ffmpeg.sh index 23cb13e141c..4d4169bb657 100755 --- a/coin/provisioning/qtci-macos-13-arm/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-macos-13-arm/90-install-ffmpeg.sh @@ -5,3 +5,5 @@ set -ex source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal" +#source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-13-x86_64/10-enable-vnc.sh b/coin/provisioning/qtci-macos-13-x86_64/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-13-x86_64/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-13-x86_64/27-binutils.sh b/coin/provisioning/qtci-macos-13-x86_64/27-binutils.sh new file mode 100755 index 00000000000..04d3c5bf26a --- /dev/null +++ b/coin/provisioning/qtci-macos-13-x86_64/27-binutils.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# binutlis is installed with an error: The formula built, but is not symlinked into /usr/local +# To avoid stopping the configuration due to this problem, "|| true" is added. +brew install binutils || true + diff --git a/coin/provisioning/qtci-macos-13-x86_64/28-patchelf.sh b/coin/provisioning/qtci-macos-13-x86_64/28-patchelf.sh new file mode 100755 index 00000000000..f60a7cdcbf0 --- /dev/null +++ b/coin/provisioning/qtci-macos-13-x86_64/28-patchelf.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-macos-13-x86_64/90-docker.sh b/coin/provisioning/qtci-macos-13-x86_64/90-docker.sh new file mode 100755 index 00000000000..1ab281cbaea --- /dev/null +++ b/coin/provisioning/qtci-macos-13-x86_64/90-docker.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/docker.sh +source "${BASH_SOURCE%/*}/../common/macos/docker.sh" "amd64" + diff --git a/coin/provisioning/qtci-macos-14-arm/10-enable-vnc.sh b/coin/provisioning/qtci-macos-14-arm/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-14-arm/22-install-simulator-runtime.sh b/coin/provisioning/qtci-macos-14-arm/22-install-simulator-runtime.sh new file mode 100755 index 00000000000..69e3a52d13b --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/22-install-simulator-runtime.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/install-simulator-runtime.sh +source "${BASH_SOURCE%/*}/../common/macos/install-simulator-runtime.sh" +version="17.4" +packageName=iOS_"$version"_Simulator_Runtime.dmg +url="http://ci-files01-hki.ci.qt.io/input/mac/$packageName" +sha1="7b930c544403806f3a4f99bb48e80f4ef1533f50" + +InstallSimulatorRuntime $url $url $sha1 $packageName $version diff --git a/coin/provisioning/qtci-macos-14-arm/25-python.sh b/coin/provisioning/qtci-macos-14-arm/25-python.sh index 5a0df739559..37c61881cc8 100755 --- a/coin/provisioning/qtci-macos-14-arm/25-python.sh +++ b/coin/provisioning/qtci-macos-14-arm/25-python.sh @@ -10,11 +10,17 @@ source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" pyenv install 3.9.7 -/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user install virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" # Use 3.9 as a default python SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" +# Provisioning during installation says: +# 'The script sbom2doc is installed in '$HOME/.local/bin' which is not on PATH.' +# hence the explicit assignment to SBOM_PYTHON_APPS_PATH. +SetEnvVar "SBOM_PYTHON_APPS_PATH" "/Users/qt/.local/bin" + echo "python3 = 3.9.7" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-14-arm/29-libusb.sh b/coin/provisioning/qtci-macos-14-arm/29-libusb.sh new file mode 100755 index 00000000000..5562889ed11 --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/29-libusb.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") + +"$BASEDIR/../common/macos/libusb.sh" diff --git a/coin/provisioning/qtci-macos-14-arm/30-android.sh b/coin/provisioning/qtci-macos-14-arm/30-android.sh index 6259b71ed12..acd2d4b9e88 100755 --- a/coin/provisioning/qtci-macos-14-arm/30-android.sh +++ b/coin/provisioning/qtci-macos-14-arm/30-android.sh @@ -20,11 +20,11 @@ toolsVersion="2.1" # toolsFile dertermines tools version toolsFile="commandlinetools-mac-6609375_latest.zip" -ndkVersion="r26b" +ndkVersion="r27c" ndkFile="android-ndk-$ndkVersion-darwin.zip" -sdkBuildToolsVersion="34.0.0" +sdkBuildToolsVersion="35.0.1" # this is compile sdk version -sdkApiLevel="android-34" +sdkApiLevel="android-35" toolsSourceFile="$basePath/$toolsFile" ndkSourceFile="$basePath/$ndkFile" diff --git a/coin/provisioning/qtci-macos-14-arm/31-golang.sh b/coin/provisioning/qtci-macos-14-arm/31-golang.sh new file mode 100755 index 00000000000..0348d7eb0e1 --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/31-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install go diff --git a/coin/provisioning/qtci-macos-14-arm/31-upx.sh b/coin/provisioning/qtci-macos-14-arm/31-upx.sh new file mode 100755 index 00000000000..519900f6dab --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/31-upx.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# The package was disabled in brew +#brew install upx diff --git a/coin/provisioning/qtci-macos-14-arm/55-signtools.sh b/coin/provisioning/qtci-macos-14-arm/55-signtools.sh deleted file mode 100755 index ff5a977a7a1..00000000000 --- a/coin/provisioning/qtci-macos-14-arm/55-signtools.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env sh -# Copyright (C) 2020 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - -# Install tools for singing packages -# This script assume that OS is vanilla. Target machine dosen't have any signing certificates installed. - -set -ex - -cache="http://ci-files01-hki.ci.qt.io/input" -cacheSigningTools="$cache/mac/sign_tools" -targetFolder="/Users/qt" -keychains="$targetFolder/Library/Keychains" - -Install() { - - url=$1 - targetFile=$2 - expectedSha1=$3 - - echo "Fetching $targetFile from $url..." - curl --retry 5 --retry-delay 10 --retry-max-time 60 "$url" -o "$targetFile" - shasum "$targetFile" |grep "$expectedSha1" - -} - -# qt-license -sha1QtLicense="9d59241d16f68d914f1c7aa1dc23e05faa169e8d" -Install "$cache/semisecure/.qt-license" "$targetFolder/.qt-license" $sha1QtLicense - -# Login keychain -sha1LoginKeychainPassword="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -Install "$cacheSigningTools/login_keychain_password.txt" "$targetFolder/login_keychain_password.txt" "$sha1LoginKeychainPassword" -{ loginKeychainPassword=$(cat "$targetFolder/login_keychain_password.txt"); } 2> /dev/null -loginKeychain=$keychains/login.keychain - -echo "Setting login.keychain as default keychain.." -security default-keychain -s $loginKeychain* -echo "Unlocking Login keychain with password.." -{ security unlock-keychain -p "$loginKeychainPassword" $loginKeychain*; } 2> /dev/null - -echo "remove the "Lock after X minutes of inactivity" from login.keychain" -security set-keychain-settings $loginKeychain - -# Apple Worldwide Developer Relations Certification Authority -> https://developer.apple.com/certificationauthority/AppleWWDRCA.cer -sha1AppleWWDRCA="ff6797793a3cd798dc5b2abef56f73edc9f83a64" -Install "$cacheSigningTools/AppleWWDRCA.cer" "$targetFolder/AppleWWDRCA.cer" $sha1AppleWWDRCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/AppleWWDRCA.cer" - -# Developer ID Certification Authority -> https://www.apple.com/certificateauthority/DeveloperIDCA.cer -sha1DeveloperIDCA="3b166c3b7dc4b751c9fe2afab9135641e388e186" -Install "$cacheSigningTools/DeveloperIDCA.cer" "$targetFolder/DeveloperIDCA.cer" $sha1DeveloperIDCA -sudo security add-certificates -k $loginKeychain* "$targetFolder/DeveloperIDCA.cer" - -# Create script to unlock keychain 'security unlock-keychain -p 'password' Developer_ID_TheQtCompany.keychain' -sha1UnLockKeychain="4398870e3f558ad28c80566b5f70e24dc29ea724" -unlockKeychain=$targetFolder/unlock-keychain.sh -{ Install "$cacheSigningTools/unlock-keychain.sh" "$unlockKeychain" $sha1UnLockKeychain; } 2> /dev/null -sudo chmod 755 "$unlockKeychain" - -# Codesigning requirements file. The bundle identifier in the requirements file should match the identifier of the application that is signed. -shaCsreq="2c3f00b1845a0f475673fd6934ba25ea51d1f910" -csreq=$targetFolder/csreq_qt_company.txt -Install "$cacheSigningTools/csreq_qt_company.txt" "$csreq" $shaCsreq -chmod 755 "$csreq" - -# iOS signing tools -devIDKeychain="Developer_ID_TheQtCompany.keychain-db" -shaDevIdKeychain="972cca1879cdaeeb6042f9879756c748a8d1eddc" -Install "$cacheSigningTools/$devIDKeychain" "$keychains/$devIDKeychain" $shaDevIdKeychain -echo "Opening $devIDKeychain.." -open "$keychains/$devIDKeychain" - -sha1DeveloperIDTheQtCompanyKeychainPassword="d758e067736bbda7a91ffaec66cd38afdaf68ea6" -Install "$cacheSigningTools/Developer_ID_TheQtCompany_keychain_password.txt" "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt" "$sha1DeveloperIDTheQtCompanyKeychainPassword" -{ DeveloperIDTheQtCompanyKeychainPassword=$(cat "$targetFolder/Developer_ID_TheQtCompany_keychain_password.txt"); } 2> /dev/null - -echo "Unlocking $devIDKeychain with password.." -{ security unlock-keychain -p "$DeveloperIDTheQtCompanyKeychainPassword" $keychains/Developer_ID_TheQtCompany.keychain; } 2> /dev/null -security set-keychain-settings $keychains/Developer_ID_TheQtCompany.keychain - -sha1Ios="aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" -{ Install "$cacheSigningTools/ios_password.txt" "$targetFolder/ios_password.txt" $sha1Ios; } 2> /dev/null -{ iosPassword=$(cat "$targetFolder/ios_password.txt"); } 2> /dev/null - -iPhoneDeveloper="iPhoneDeveloperCiTeam2020.p12" -shaIPhoneDeveloper="73136e44fed850f398e85908e4a73f20a6bdd8a2" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDeveloper" "$targetFolder/$iPhoneDeveloper" $shaIPhoneDeveloper -echo "Importing $iPhoneDeveloper.." -{ security import $targetFolder/$iPhoneDeveloper -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -iPhoneDistribution="iPhoneDistributionCiTeam2020.p12" -shaIPhoneDistribution="36215c3cbc6bfee48e86aafbd53c56282fe36d8d" -Install "$cacheSigningTools/latest_ios_cert_2020/$iPhoneDistribution" "$targetFolder/$iPhoneDistribution" $shaIPhoneDistribution -echo "Importing $iPhoneDistribution.." -{ security import "$targetFolder/$iPhoneDistribution" -k $loginKeychain* -P "$iosPassword" -T /usr/bin/codesign; } 2> /dev/null - -# Mobileprovision -echo "Creating directory $targetFolder/Library/MobileDevice/Provisioning Profiles.." -mkdir "$targetFolder/Library/MobileDevice" -mkdir "$targetFolder/Library/MobileDevice/Provisioning Profiles" -shaMobileprovision="ec9697276253ca7bf4401912236f0e6fde4214da" -Install "$cacheSigningTools/latest_ios_cert_2020/iOS_Dev_2020_citeam.mobileprovision" "$targetFolder/Library/MobileDevice/Provisioning Profiles/iOS_Dev_2020_citeam.mobileprovision" $shaMobileprovision - -# Removing password files -rm -fr "$targetFolder/login_keychain_password.txt" - diff --git a/coin/provisioning/qtci-macos-14-arm/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-14-arm/90-install-ffmpeg.sh index 23cb13e141c..4d4169bb657 100755 --- a/coin/provisioning/qtci-macos-14-arm/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-macos-14-arm/90-install-ffmpeg.sh @@ -5,3 +5,5 @@ set -ex source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal" +#source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-14-x86_64/10-enable-vnc.sh b/coin/provisioning/qtci-macos-14-x86_64/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-14-x86_64/22-install-simulator-runtime.sh b/coin/provisioning/qtci-macos-14-x86_64/22-install-simulator-runtime.sh new file mode 100755 index 00000000000..69e3a52d13b --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/22-install-simulator-runtime.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/install-simulator-runtime.sh +source "${BASH_SOURCE%/*}/../common/macos/install-simulator-runtime.sh" +version="17.4" +packageName=iOS_"$version"_Simulator_Runtime.dmg +url="http://ci-files01-hki.ci.qt.io/input/mac/$packageName" +sha1="7b930c544403806f3a4f99bb48e80f4ef1533f50" + +InstallSimulatorRuntime $url $url $sha1 $packageName $version diff --git a/coin/provisioning/qtci-macos-14-x86_64/28-patchelf.sh b/coin/provisioning/qtci-macos-14-x86_64/28-patchelf.sh new file mode 100755 index 00000000000..f60a7cdcbf0 --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/28-patchelf.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-macos-14-x86_64/31-golang.sh b/coin/provisioning/qtci-macos-14-x86_64/31-golang.sh new file mode 100755 index 00000000000..0348d7eb0e1 --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/31-golang.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install go diff --git a/coin/provisioning/qtci-macos-14-x86_64/31-upx.sh b/coin/provisioning/qtci-macos-14-x86_64/31-upx.sh new file mode 100755 index 00000000000..f3637b0e9ff --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/31-upx.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# The package was disabled in brew +# brew install upx diff --git a/coin/provisioning/qtci-macos-14-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-14-x86_64/90-install-ffmpeg.sh index 23cb13e141c..dfdc1022c27 100755 --- a/coin/provisioning/qtci-macos-14-x86_64/90-install-ffmpeg.sh +++ b/coin/provisioning/qtci-macos-14-x86_64/90-install-ffmpeg.sh @@ -5,3 +5,5 @@ set -ex source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/01-disable-app-reopen.sh b/coin/provisioning/qtci-macos-15-arm/01-disable-app-reopen.sh new file mode 100755 index 00000000000..382fb40ca40 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-disable-app-reopen.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/macos/disable-app-reopen.sh diff --git a/coin/provisioning/qtci-macos-15-arm/01-disable-net-lso.sh b/coin/provisioning/qtci-macos-15-arm/01-disable-net-lso.sh new file mode 100755 index 00000000000..659ebe96f91 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-disable-net-lso.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/disable_net_lso.sh diff --git a/coin/provisioning/qtci-macos-15-arm/01-disable-notifications_and_warnings.sh b/coin/provisioning/qtci-macos-15-arm/01-disable-notifications_and_warnings.sh new file mode 100755 index 00000000000..27efbb6280e --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-disable-notifications_and_warnings.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/disable-notifications_and_warnings.sh diff --git a/coin/provisioning/qtci-macos-15-arm/01-disable-updates.sh b/coin/provisioning/qtci-macos-15-arm/01-disable-updates.sh new file mode 100755 index 00000000000..a2b2a0f0997 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-disable-updates.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/system_updates.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/01-increase_limits.sh b/coin/provisioning/qtci-macos-15-arm/01-increase_limits.sh new file mode 100755 index 00000000000..08669e524a9 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-increase_limits.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/increase_limits.sh diff --git a/coin/provisioning/qtci-macos-15-arm/01-mount-vcpkg-cache-drive.sh b/coin/provisioning/qtci-macos-15-arm/01-mount-vcpkg-cache-drive.sh new file mode 100755 index 00000000000..2739f40fbac --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-mount-vcpkg-cache-drive.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/mount-vcpkg-cache-drive.sh +source "${BASH_SOURCE%/*}/../common/macos/mount-vcpkg-cache-drive.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/01-set_tcc_permissions.sh b/coin/provisioning/qtci-macos-15-arm/01-set_tcc_permissions.sh new file mode 100755 index 00000000000..da38f582c40 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-set_tcc_permissions.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex +source "${BASH_SOURCE%/*}/../common/macos/set_tcc_permissions.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/01-sha1sum-compatibility.sh b/coin/provisioning/qtci-macos-15-arm/01-sha1sum-compatibility.sh new file mode 100755 index 00000000000..e52367c8613 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/01-sha1sum-compatibility.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Copyright (C) 2020 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#!/usr/bin/env bash + +set -ex + +# shellcheck source=../common/macos/sha1sum-compatibility.sh +source "${BASH_SOURCE%/*}/../common/macos/sha1sum-compatibility.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/03-bashprofile.sh b/coin/provisioning/qtci-macos-15-arm/03-bashprofile.sh new file mode 100755 index 00000000000..4eed8433b6c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/03-bashprofile.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Read .bashrc if exist +printf -- "# Get the aliases and functions\nif [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi\n" >> ~/.bash_profile + diff --git a/coin/provisioning/qtci-macos-15-arm/05-systemsetup.sh b/coin/provisioning/qtci-macos-15-arm/05-systemsetup.sh new file mode 100755 index 00000000000..1d8b7f097ff --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/05-systemsetup.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# This script modified system settings for automated use + +targetFile="$HOME/vncpw.txt" + +# Fetch password +curl --retry 5 --retry-delay 10 --retry-max-time 60 "http://ci-files01-hki.ci.qt.io/input/semisecure/vncpw.txt" -o "$targetFile" +shasum "$targetFile" |grep "a795fccaa8f277e62ec08e6056c544b8b63924a0" + +{ VNCPassword=$(cat "$targetFile"); } 2> /dev/null +NTS_IP=10.212.2.216 + +echo "Disable Screensaver" +# For current session +defaults -currentHost write com.apple.screensaver idleTime 0 + +echo "Disable sleep" +sudo pmset sleep 0 displaysleep 0 + +# For session after a reboot +mkdir -p "$HOME/Library/LaunchAgents" +sudo tee -a "$HOME/Library/LaunchAgents/no-screensaver.plist" < + + + + + Label + org.qt.io.screensaver_disable + ProgramArguments + + defaults + -currentHost + write + com.apple.screensaver + idleTime + 0 + + RunAtLoad + + KeepAlive + + + +EOT + +defaults write com.apple.screensaver askForPassword -int 0 + +echo "Set keyboard type rates and delays" +# normal minimum is 15 (225 ms) +defaults write -g InitialKeyRepeat -int 15 +# normal minimum is 2 (30 ms) +defaults write -g KeyRepeat -int 2 + +set +x +echo "Enable remote desktop sharing" +sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes -clientopts -setvncpw -vncpw "$VNCPassword" -restart -agent -privs -all +set -x + +echo "Set Network Test Server address to $NTS_IP in /etc/hosts" +echo "$NTS_IP qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts + +sudo systemsetup settimezone GMT +sudo systemsetup setusingnetworktime on +sudo rm -f "$targetFile" + +# Enable automount for nfs shares +sudo sed -i'.orig' -e 's:^#/net:/net:' -e 's:hidefromfinder,nosuid:hidefromfinder,nosuid,locallocks,nocallback:' /etc/auto_master || sudo curl -o /etc/auto_master http://ci-files01-hki.ci.qt.io/input/mac/arm/auto_master +sudo automount -cv + +# Disable multicast advertisements +sudo defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true + +# Enable Use keyboard navigation to move focus between controls +defaults write -g AppleKeyboardUIMode -int 2 diff --git a/coin/provisioning/qtci-macos-15-arm/06-crashreporter.sh b/coin/provisioning/qtci-macos-15-arm/06-crashreporter.sh new file mode 100755 index 00000000000..b66bbc38afa --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/06-crashreporter.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +defaults write com.apple.CrashReporter DialogType server + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +SetEnvVar "SWIFT_BACKTRACE" "enable=yes,output-to=stderr,preset=medium,interactive=false" diff --git a/coin/provisioning/qtci-macos-15-arm/06-disable_spotlight.sh b/coin/provisioning/qtci-macos-15-arm/06-disable_spotlight.sh new file mode 100755 index 00000000000..ab85a26250e --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/06-disable_spotlight.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +# shellcheck source=../common/macos/disable_spotlight.sh +source "${BASH_SOURCE%/*}/../common/macos/disable_spotlight.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/06-disable_update_downloads.sh b/coin/provisioning/qtci-macos-15-arm/06-disable_update_downloads.sh new file mode 100755 index 00000000000..18cb98eaf0a --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/06-disable_update_downloads.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/macos/disable_update_downloads.sh diff --git a/coin/provisioning/qtci-macos-15-arm/07-SSL_keychain.sh b/coin/provisioning/qtci-macos-15-arm/07-SSL_keychain.sh new file mode 100755 index 00000000000..e14dcee9571 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/07-SSL_keychain.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +# Enables the usage of temporary keychains for SSL autotests +SetEnvVar "QT_SSL_USE_TEMPORARY_KEYCHAIN" "1" diff --git a/coin/provisioning/qtci-macos-15-arm/10-enable-vnc.sh b/coin/provisioning/qtci-macos-15-arm/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/15-xz.sh b/coin/provisioning/qtci-macos-15-arm/15-xz.sh new file mode 100755 index 00000000000..b7e00a204a6 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/15-xz.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs XZ-Utils + +# XZ-Utils are needed for uncompressing xz-compressed files + +# pkg was self builded. +# wget https://downloads.sourceforge.net/project/lzmautils/xz-5.2.5.tar.gz +# tar -xzf xz-5.2.5.tar.gz -C /tmp +# cd /tmp/xz-5.2.5 +# ./configure +# make +# ./configure prefix=/tmp/destination_root +# make install +# cd /tmp +# pkgbuild --root destination_root --identifier io.qt.xz.pkg xz-arm64.pkg + +set -ex + +# shellcheck source=../common/macos/InstallPKGFromURL.sh +source "${BASH_SOURCE%/*}/../common/macos/InstallPKGFromURL.sh" +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/macos_11.0_big_sur_arm/xz-arm64.pkg" +# SourceUrl="https://tukaani.org/xz/xz-5.2.5.tar.gz" + +SHA1="1afc327965d4af33399ae28f22c4b8e5a9e98dc2" +DestDir="/" + +InstallPKGFromURL "$PrimaryUrl" "$PrimaryUrl" "$SHA1" "$DestDir" + +echo "XZ = 5.2.5" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-15-arm/20-java.sh b/coin/provisioning/qtci-macos-15-arm/20-java.sh new file mode 100755 index 00000000000..00c867f42b9 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/20-java.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/java_arm.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/20-xcode.sh b/coin/provisioning/qtci-macos-15-arm/20-xcode.sh new file mode 100755 index 00000000000..ed8b4e9a426 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/20-xcode.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs Xcode +# Prerequisites: Have Xcode prefetched to local cache as xz compressed. +# This can be achieved by fetching Xcode_9.xip from Apple Store. +# Uncompress it with 'xar -xf Xcode_9.xip' +# Then get https://gist.githubusercontent.com/pudquick/ff412bcb29c9c1fa4b8d/raw/24b25538ea8df8d0634a2a6189aa581ccc6a5b4b/parse_pbzx2.py +# with which you can run 'python parse_pbzx2.py Content'. +# This will give you five files called "Content.part<00..05>.cpio.xz". +# Extract those that have the extension .xz with xz. +# "cat" together all the content files "cat file1, file2, file3, file4, file5 >file_new" +# Compress the new file with xz back to something like Xcode_9.xz +# Upload the file to temporary storage for this script to use. + +set -ex + +# shellcheck source=../common/macos/install_xcode.sh +source "${BASH_SOURCE%/*}/../common/macos/install_xcode.sh" + +InstallXCode /net/ci-files01-hki.ci.qt.io/hdd/www/input/mac/Xcode_16.xip 16 diff --git a/coin/provisioning/qtci-macos-15-arm/21-install-commandlinetools.sh b/coin/provisioning/qtci-macos-15-arm/21-install-commandlinetools.sh new file mode 100755 index 00000000000..3f7148c99b9 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/21-install-commandlinetools.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/install-commandlinetools.sh +source "${BASH_SOURCE%/*}/../common/macos/install-commandlinetools.sh" +version="16" +packageName="Command_Line_Tools_for_Xcode_$version.dmg" +url="http://ci-files01-hki.ci.qt.io/input/mac/$packageName" +sha1="c6f1a7521d5da50c2bba3d83c0f3ee7df6d87d28" + +InstallCommandLineTools $url $url $sha1 $packageName $version diff --git a/coin/provisioning/qtci-macos-15-arm/22-install-simulator-runtime.sh b/coin/provisioning/qtci-macos-15-arm/22-install-simulator-runtime.sh new file mode 100755 index 00000000000..470bae9011b --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/22-install-simulator-runtime.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/install-simulator-runtime.sh +source "${BASH_SOURCE%/*}/../common/macos/install-simulator-runtime.sh" +version="18.0" +packageName=iOS_"$version"_Simulator_Runtime.dmg +url="http://ci-files01-hki.ci.qt.io/input/mac/$packageName" +sha1="f29778313459b3a2a497ffd711b9dfa212241183" + +InstallSimulatorRuntime $url $url $sha1 $packageName $version diff --git a/coin/provisioning/qtci-macos-15-arm/23-homebrew.sh b/coin/provisioning/qtci-macos-15-arm/23-homebrew.sh new file mode 100755 index 00000000000..0c4ee4fc6a5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/23-homebrew.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +#Copyright (C) 2025 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +INSTALLTYPE="PKG" + +BASEDIR=$(dirname "$0") +# Usage "$BASEDIR/../common/macos/homebrew.sh" "$INSTALLTYPE" "$HOMEBREW_VERSION" "$HOMEBREW_HASH" +# Specify HOMEBREW_VERSION and HOMEBREW_HASH only if defaults set in homebrew.sh are not suitable for this platform +"$BASEDIR/../common/macos/homebrew.sh" "$INSTALLTYPE" diff --git a/coin/provisioning/qtci-macos-15-arm/24-pyenv.sh b/coin/provisioning/qtci-macos-15-arm/24-pyenv.sh new file mode 100755 index 00000000000..3a7a8f77de3 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/24-pyenv.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +############################################################################# +## +## Copyright (C) 2021 The Qt Company Ltd. +## Copyright (C) 2017 Pelagicore AG +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the provisioning scripts of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +# This script installs python3 + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +# Try with default +/opt/homebrew/bin/brew install pyenv diff --git a/coin/provisioning/qtci-macos-15-arm/24-sccache.sh b/coin/provisioning/qtci-macos-15-arm/24-sccache.sh new file mode 100755 index 00000000000..358b23fbf45 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/24-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/macos/sccache.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/25-cmake.sh b/coin/provisioning/qtci-macos-15-arm/25-cmake.sh new file mode 100755 index 00000000000..3309588000c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/25-cmake.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/cmake.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/25-mysql.sh b/coin/provisioning/qtci-macos-15-arm/25-mysql.sh new file mode 100755 index 00000000000..0be1e6e8324 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/25-mysql.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# Copyright (C) 2020 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs MySQL + +# MySQL is needed for Qt to be able to support MySQL + +set -ex + +# shellcheck source=../common/macos/InstallAppFromCompressedFileFromURL.sh +source "${BASH_SOURCE%/*}/../common/macos/InstallAppFromCompressedFileFromURL.sh" +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/macos_10.12_sierra/mysql-5.7.15-osx10.11-x86_64.tar.gz" +AltUrl="https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.15-osx10.11-x86_64.tar.gz" +SHA1="07949bd42f350b0504a1536b8830b809b4a34fca" +appPrefix="" +targetDir="/opt/mysql57/" + +sudo mkdir -p "/opt" + +InstallAppFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$appPrefix" "$targetDir" + +SetEnvVar "MYSQLBINPATH" "/opt/mysql57/bin" +echo "MySQL = 5.7.15" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-15-arm/25-pip.sh b/coin/provisioning/qtci-macos-15-arm/25-pip.sh new file mode 100755 index 00000000000..3fc865d0e52 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/25-pip.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/pip.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/25-postgresql.sh b/coin/provisioning/qtci-macos-15-arm/25-postgresql.sh new file mode 100755 index 00000000000..06cae6ef601 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/25-postgresql.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/postgresql.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/25-python.sh b/coin/provisioning/qtci-macos-15-arm/25-python.sh new file mode 100755 index 00000000000..36bbc0e14ab --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/25-python.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Copyright (C) 2021 The Qt Company Ltd. +# Copyright (C) 2017 Pelagicore AG +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs python3 + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +pyenv install 3.9.7 + +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user virtualenv wheel html5lib +/Users/qt/.pyenv/versions/3.9.7/bin/pip3 install --user -r ${BASH_SOURCE%/*}/../common/shared/sbom_requirements.txt + +SetEnvVar "PYTHON3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" +SetEnvVar "PIP3_PATH" "/Users/qt/.pyenv/versions/3.9.7/bin/" +# Use 3.9 as a default python +SetEnvVar "PATH" "\$PYTHON3_PATH:\$PATH" + +echo "python3 = 3.9.7" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-15-arm/26-freetype.sh b/coin/provisioning/qtci-macos-15-arm/26-freetype.sh new file mode 100755 index 00000000000..fa0790f840c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/26-freetype.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install freetype diff --git a/coin/provisioning/qtci-macos-15-arm/26-jq.sh b/coin/provisioning/qtci-macos-15-arm/26-jq.sh new file mode 100755 index 00000000000..4dffcb969ac --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/26-jq.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -ex + +brew install jq diff --git a/coin/provisioning/qtci-macos-15-arm/26-ninja.sh b/coin/provisioning/qtci-macos-15-arm/26-ninja.sh new file mode 100755 index 00000000000..4443eeb486f --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/26-ninja.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/ninja.sh +source "${BASH_SOURCE%/*}/../common/macos/ninja.sh" + + diff --git a/coin/provisioning/qtci-macos-15-arm/26-odbc.sh b/coin/provisioning/qtci-macos-15-arm/26-odbc.sh new file mode 100755 index 00000000000..2b6b013a5ee --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/26-odbc.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +# Install libiodbc + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/libiodbc.sh" --with-universal diff --git a/coin/provisioning/qtci-macos-15-arm/26-p7zip.sh b/coin/provisioning/qtci-macos-15-arm/26-p7zip.sh new file mode 100755 index 00000000000..8cdcd0c367d --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/26-p7zip.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +# Install 7z to be used from command line + +set -ex + +brew update +brew install p7zip diff --git a/coin/provisioning/qtci-macos-15-arm/26-pcre2.sh b/coin/provisioning/qtci-macos-15-arm/26-pcre2.sh new file mode 100755 index 00000000000..c10d6206b6d --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/26-pcre2.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install pcre2 diff --git a/coin/provisioning/qtci-macos-15-arm/27-libclang.sh b/coin/provisioning/qtci-macos-15-arm/27-libclang.sh new file mode 100755 index 00000000000..cc025e6e441 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/27-libclang.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +# There is only one mac package and common script uses it as a default +"$BASEDIR/../common/unix/libclang.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/28-libclang-v100-dyn.sh b/coin/provisioning/qtci-macos-15-arm/28-libclang-v100-dyn.sh new file mode 100755 index 00000000000..d95e7e00cd0 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/28-libclang-v100-dyn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/29-install-pkgconfig.sh b/coin/provisioning/qtci-macos-15-arm/29-install-pkgconfig.sh new file mode 100755 index 00000000000..33e115801d5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/29-install-pkgconfig.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/pkgconfig.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/30-android.sh b/coin/provisioning/qtci-macos-15-arm/30-android.sh new file mode 100755 index 00000000000..acd2d4b9e88 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/30-android.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +# Copyright (C) 2020 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script install Android sdk and ndk. + +# It also runs update for SDK API, latest SDK tools, latest platform-tools and build-tools version + +set -ex + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +targetFolder="/opt/android" +sdkTargetFolder="$targetFolder/sdk" + +basePath="/net/ci-files01-hki.ci.qt.io/hdd/www/input/android" + +toolsVersion="2.1" +# toolsFile dertermines tools version +toolsFile="commandlinetools-mac-6609375_latest.zip" + +ndkVersion="r27c" +ndkFile="android-ndk-$ndkVersion-darwin.zip" +sdkBuildToolsVersion="35.0.1" +# this is compile sdk version +sdkApiLevel="android-35" + +toolsSourceFile="$basePath/$toolsFile" +ndkSourceFile="$basePath/$ndkFile" + +echo "Unzipping Android NDK to '$targetFolder'" +sudo unzip -q "$ndkSourceFile" -d "$targetFolder" +echo "Unzipping Android Tools to '$sdkTargetFolder'" +sudo unzip -q "$toolsSourceFile" -d "$sdkTargetFolder" + +echo "Changing ownership of Android files." +sudo chown -R qt:wheel "$targetFolder" + +# Run the following command under `eval` or `sh -c` so that the shell properly splits it +sdkmanager_no_progress_bar_cmd="tr '\r' '\n' | grep -v '^\[[ =]*\]'" + +sudo mkdir "$sdkTargetFolder/cmdline-tools" +sudo mv "$sdkTargetFolder/tools" "$sdkTargetFolder/cmdline-tools" + +echo "Running SDK manager for platforms;$sdkApiLevel, platform-tools and build-tools;$sdkBuildToolsVersion." +(echo "y"; echo "y") | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" "--sdk_root=$sdkTargetFolder" \ + "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ + | eval "$sdkmanager_no_progress_bar_cmd" + +echo "Checking the contents of Android SDK..." +ls -l "$sdkTargetFolder" + +SetEnvVar "ANDROID_SDK_ROOT" "$sdkTargetFolder" +SetEnvVar "ANDROID_NDK_ROOT" "$targetFolder/android-ndk-$ndkVersion" +SetEnvVar "ANDROID_NDK_HOST" "darwin-x86_64" +SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" + +cat << EOB >> ~/versions.txt +Android SDK tools = $toolsVersion +Android SDK Build Tools = $sdkBuildToolsVersion +Android SDK API level = $sdkApiLevel +Android NDK = $ndkVersion +EOB diff --git a/coin/provisioning/qtci-macos-15-arm/30-fbx.sh b/coin/provisioning/qtci-macos-15-arm/30-fbx.sh new file mode 100755 index 00000000000..e991bc083a5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/30-fbx.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/fbx_macos.sh" + diff --git a/coin/provisioning/qtci-macos-15-arm/30-install-conan.sh b/coin/provisioning/qtci-macos-15-arm/30-install-conan.sh new file mode 100755 index 00000000000..67a4f9116ec --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/30-install-conan.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-conan.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/30-nodejs.sh b/coin/provisioning/qtci-macos-15-arm/30-nodejs.sh new file mode 100755 index 00000000000..8f73b2d69a0 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/30-nodejs.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install nodejs + diff --git a/coin/provisioning/qtci-macos-15-arm/35-install-breakpad.sh b/coin/provisioning/qtci-macos-15-arm/35-install-breakpad.sh new file mode 100755 index 00000000000..8a9dde56be4 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/35-install-breakpad.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-breakpad.sh +source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/35-install_protobuf.sh b/coin/provisioning/qtci-macos-15-arm/35-install_protobuf.sh new file mode 100755 index 00000000000..ecb5f835377 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/35-install_protobuf.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2020 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_protobuf.sh +source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh" + diff --git a/coin/provisioning/qtci-macos-15-arm/35-openssl.sh b/coin/provisioning/qtci-macos-15-arm/35-openssl.sh new file mode 100755 index 00000000000..c86788db992 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/35-openssl.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-openssl.sh +source "${BASH_SOURCE%/*}/../common/unix/install-openssl.sh" "macos-universal" + diff --git a/coin/provisioning/qtci-macos-15-arm/36-emsdk.sh b/coin/provisioning/qtci-macos-15-arm/36-emsdk.sh new file mode 100755 index 00000000000..c8aec444d4c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/36-emsdk.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/emsdk.sh +source "${BASH_SOURCE%/*}/../common/unix/emsdk.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/36-install_grpc.sh b/coin/provisioning/qtci-macos-15-arm/36-install_grpc.sh new file mode 100755 index 00000000000..d2860845100 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/36-install_grpc.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_grpc.sh +# Temporarily disabled due to OpenSSL linking errors +#source "${BASH_SOURCE%/*}/../common/unix/install_grpc.sh" + diff --git a/coin/provisioning/qtci-macos-15-arm/40-qnx700.sh b/coin/provisioning/qtci-macos-15-arm/40-qnx700.sh new file mode 100755 index 00000000000..48286a6799e --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/40-qnx700.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright (C) 2020 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs QNX 7. + +targetFolder="/opt/" +sourceFile="/net/ci-files01-hki.ci.qt.io/hdd/www/input/qnx/qnx700-20190325-2-macos.tar.xz" +folderName="qnx700" + +sudo mkdir -p "$targetFolder" + +echo "Extracting QNX 7" +sudo tar -C "$targetFolder" -Jxf $sourceFile + +sudo chown -R qt:wheel "$targetFolder"/"$folderName" + +# Verify that we have last file in zip +if [ ! -f $targetFolder/$folderName/qnxsdp-env.sh ]; then + exit 1 +fi + +# Set env variables +echo "export QNX_700=$targetFolder/$folderName" >> ~/.bashrc +echo "QNX SDP = 7.0.0" >> ~/versions.txt diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-disable_auto_suspend.sh b/coin/provisioning/qtci-macos-15-arm/80-screenresolution.sh similarity index 63% rename from coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-disable_auto_suspend.sh rename to coin/provisioning/qtci-macos-15-arm/80-screenresolution.sh index 8ad69bfaf3b..ed905a33d4b 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-22.04-aarch64/01-disable_auto_suspend.sh +++ b/coin/provisioning/qtci-macos-15-arm/80-screenresolution.sh @@ -2,5 +2,5 @@ #Copyright (C) 2023 The Qt Company Ltd #SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target +"$(dirname "$0")"/../common/macos/screenresolution.sh diff --git a/coin/provisioning/qtci-macos-15-arm/81-bluetooth.sh b/coin/provisioning/qtci-macos-15-arm/81-bluetooth.sh new file mode 100755 index 00000000000..c58b9a34354 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/81-bluetooth.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install blueutil + +#Disable Bluetooth +blueutil -p 0 diff --git a/coin/provisioning/qtci-macos-15-arm/90-docker.sh b/coin/provisioning/qtci-macos-15-arm/90-docker.sh new file mode 100755 index 00000000000..f03971a9f80 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/90-docker.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/docker.sh +source "${BASH_SOURCE%/*}/../common/macos/docker.sh" "arm64" + diff --git a/coin/provisioning/qtci-macos-15-arm/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-15-arm/90-install-ffmpeg.sh new file mode 100755 index 00000000000..e6b40aa1d8a --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/90-install-ffmpeg.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/macos/install-ffmpeg-macos.sh" "macos-universal" +#source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/90-vlc.sh b/coin/provisioning/qtci-macos-15-arm/90-vlc.sh new file mode 100644 index 00000000000..4924fe5c42c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/90-vlc.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# for QtMM streaming tests +brew install --cask vlc diff --git a/coin/provisioning/qtci-macos-15-arm/97-set-locale.sh b/coin/provisioning/qtci-macos-15-arm/97-set-locale.sh new file mode 100755 index 00000000000..bc966cbf8e6 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/97-set-locale.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/set-locale.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/98-mimersql.sh b/coin/provisioning/qtci-macos-15-arm/98-mimersql.sh new file mode 100755 index 00000000000..70d5bc1d458 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/98-mimersql.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/mimersql.sh" "macos-universal" diff --git a/coin/provisioning/qtci-macos-15-arm/99-mac-version.sh b/coin/provisioning/qtci-macos-15-arm/99-mac-version.sh new file mode 100755 index 00000000000..b9b5aeb0c1c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/99-mac-version.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/macos-version.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-disable-net-lso.sh b/coin/provisioning/qtci-macos-15-x86_64/01-disable-net-lso.sh new file mode 100755 index 00000000000..659ebe96f91 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-disable-net-lso.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/disable_net_lso.sh diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-disable-notifications_and_warnings.sh b/coin/provisioning/qtci-macos-15-x86_64/01-disable-notifications_and_warnings.sh new file mode 100755 index 00000000000..27efbb6280e --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-disable-notifications_and_warnings.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/disable-notifications_and_warnings.sh diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-disable-updates.sh b/coin/provisioning/qtci-macos-15-x86_64/01-disable-updates.sh new file mode 100755 index 00000000000..a2b2a0f0997 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-disable-updates.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/system_updates.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-enable_zsh_history_and_viminfo.sh b/coin/provisioning/qtci-macos-15-x86_64/01-enable_zsh_history_and_viminfo.sh new file mode 100755 index 00000000000..6004b1401fa --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-enable_zsh_history_and_viminfo.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -ex + +# shellcheck source=../common/macos/enable_zsh_history_and_viminfo.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_zsh_history_and_viminfo.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-increase_limits.sh b/coin/provisioning/qtci-macos-15-x86_64/01-increase_limits.sh new file mode 100755 index 00000000000..08669e524a9 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-increase_limits.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/increase_limits.sh diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-install_telegraf.sh b/coin/provisioning/qtci-macos-15-x86_64/01-install_telegraf.sh new file mode 100755 index 00000000000..abd9ba0d5ad --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-install_telegraf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(dirname "$0")"/../common/macos/telegraf_install.sh diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-mount-vcpkg-cache-drive.sh b/coin/provisioning/qtci-macos-15-x86_64/01-mount-vcpkg-cache-drive.sh new file mode 100755 index 00000000000..2739f40fbac --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-mount-vcpkg-cache-drive.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/mount-vcpkg-cache-drive.sh +source "${BASH_SOURCE%/*}/../common/macos/mount-vcpkg-cache-drive.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/01-sha1sum-compatibility.sh b/coin/provisioning/qtci-macos-15-x86_64/01-sha1sum-compatibility.sh new file mode 100755 index 00000000000..e31fe48ba29 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/01-sha1sum-compatibility.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#!/usr/bin/env bash + +set -ex + +# shellcheck source=../common/macos/sha1sum-compatibility.sh +source "${BASH_SOURCE%/*}/../common/macos/sha1sum-compatibility.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/03-bashprofile.sh b/coin/provisioning/qtci-macos-15-x86_64/03-bashprofile.sh new file mode 100755 index 00000000000..4eed8433b6c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/03-bashprofile.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# Read .bashrc if exist +printf -- "# Get the aliases and functions\nif [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi\n" >> ~/.bash_profile + diff --git a/coin/provisioning/qtci-macos-15-x86_64/05-systemsetup.sh b/coin/provisioning/qtci-macos-15-x86_64/05-systemsetup.sh new file mode 100755 index 00000000000..d7f079552c5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/05-systemsetup.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# This script modifies system settings for automated use + +targetFile="$HOME/vncpw.txt" + +# Fetch password +curl --retry 5 --retry-delay 10 --retry-max-time 60 \ + "http://ci-files01-hki.ci.qt.io/input/semisecure/vncpw.txt" \ + -o "$targetFile" +shasum "$targetFile" |grep "a795fccaa8f277e62ec08e6056c544b8b63924a0" + +{ VNCPassword=$(cat "$targetFile"); } 2> /dev/null +NTS_IP=10.212.2.216 + +echo "Disable Screensaver" +# For current session +defaults -currentHost write com.apple.screensaver idleTime 0 + +echo "Disable sleep" +sudo pmset sleep 0 displaysleep 0 + +# For session after a reboot +mkdir -p "$HOME/Library/LaunchAgents" +sudo tee -a "$HOME/Library/LaunchAgents/no-screensaver.plist" < + + + + + Label + org.qt.io.screensaver_disable + ProgramArguments + + defaults + -currentHost + write + com.apple.screensaver + idleTime + 0 + + RunAtLoad + + KeepAlive + + + +EOT + +defaults write com.apple.screensaver askForPassword -int 0 + +echo "Set keyboard type rates and delays" +# normal minimum is 15 (225 ms) +defaults write -g InitialKeyRepeat -int 15 +# normal minimum is 2 (30 ms) +defaults write -g KeyRepeat -int 2 + +set +x +echo "Enable remote desktop sharing" +sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \ + -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes -clientopts \ + -setvncpw -vncpw "$VNCPassword" -restart -agent -privs -all +set -x + +echo "Set Network Test Server address to $NTS_IP in /etc/hosts" +echo "$NTS_IP qt-test-server qt-test-server.qt-test-net" | sudo tee -a /etc/hosts + +sudo systemsetup settimezone GMT +sudo systemsetup setusingnetworktime off +sudo rm -f "$targetFile" + +# Enable automount for nfs shares +sudo sed -i'.orig' -e 's:^#/net:/net:' -e 's:hidefromfinder,nosuid:hidefromfinder,nosuid,locallocks,nocallback:' /etc/auto_master +sudo automount -cv + +# Disable multicast advertisements +sudo defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true + +# Enable Use keyboard navigation to move focus between controls +defaults write -g AppleKeyboardUIMode -int 2 diff --git a/coin/provisioning/qtci-macos-15-x86_64/06-crashreporter.sh b/coin/provisioning/qtci-macos-15-x86_64/06-crashreporter.sh new file mode 100755 index 00000000000..b66bbc38afa --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/06-crashreporter.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +defaults write com.apple.CrashReporter DialogType server + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +SetEnvVar "SWIFT_BACKTRACE" "enable=yes,output-to=stderr,preset=medium,interactive=false" diff --git a/coin/provisioning/qtci-macos-15-x86_64/06-disable_spotlight.sh b/coin/provisioning/qtci-macos-15-x86_64/06-disable_spotlight.sh new file mode 100755 index 00000000000..ab85a26250e --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/06-disable_spotlight.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +# shellcheck source=../common/macos/disable_spotlight.sh +source "${BASH_SOURCE%/*}/../common/macos/disable_spotlight.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/06-disable_update_downloads.sh b/coin/provisioning/qtci-macos-15-x86_64/06-disable_update_downloads.sh new file mode 100755 index 00000000000..18cb98eaf0a --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/06-disable_update_downloads.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/macos/disable_update_downloads.sh diff --git a/coin/provisioning/qtci-macos-15-x86_64/07-SSL_keychain.sh b/coin/provisioning/qtci-macos-15-x86_64/07-SSL_keychain.sh new file mode 100755 index 00000000000..e14dcee9571 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/07-SSL_keychain.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +# Enables the usage of temporary keychains for SSL autotests +SetEnvVar "QT_SSL_USE_TEMPORARY_KEYCHAIN" "1" diff --git a/coin/provisioning/qtci-macos-15-x86_64/10-enable-vnc.sh b/coin/provisioning/qtci-macos-15-x86_64/10-enable-vnc.sh new file mode 100755 index 00000000000..27a1a13a61f --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/10-enable-vnc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd + +set -ex + +# shellcheck source=../common/macos/enable_vnc.sh +source "${BASH_SOURCE%/*}/../common/macos/enable_vnc.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/15-xz.sh b/coin/provisioning/qtci-macos-15-x86_64/15-xz.sh new file mode 100755 index 00000000000..9abb7f53936 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/15-xz.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs XZ-Utils + +# XZ-Utils are needed for uncompressing xz-compressed files + +set -ex + +# shellcheck source=../common/macos/InstallPKGFromURL.sh +source "${BASH_SOURCE%/*}/../common/macos/InstallPKGFromURL.sh" + +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/macos_10.12_sierra/XZ.pkg" +AltUrl="http://sourceforge.net/projects/macpkg/files/XZ/5.0.7/XZ.pkg" +SHA1="f0c1f82ebcffe0bd4b8b57b6a77805db56b2de67" +DestDir="/" + +InstallPKGFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$DestDir" + +echo "XZ = 5.0.7" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-15-x86_64/20-java.sh b/coin/provisioning/qtci-macos-15-x86_64/20-java.sh new file mode 100755 index 00000000000..325fee6360d --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/20-java.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/java.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/20-xcode.sh b/coin/provisioning/qtci-macos-15-x86_64/20-xcode.sh new file mode 100755 index 00000000000..ed8b4e9a426 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/20-xcode.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs Xcode +# Prerequisites: Have Xcode prefetched to local cache as xz compressed. +# This can be achieved by fetching Xcode_9.xip from Apple Store. +# Uncompress it with 'xar -xf Xcode_9.xip' +# Then get https://gist.githubusercontent.com/pudquick/ff412bcb29c9c1fa4b8d/raw/24b25538ea8df8d0634a2a6189aa581ccc6a5b4b/parse_pbzx2.py +# with which you can run 'python parse_pbzx2.py Content'. +# This will give you five files called "Content.part<00..05>.cpio.xz". +# Extract those that have the extension .xz with xz. +# "cat" together all the content files "cat file1, file2, file3, file4, file5 >file_new" +# Compress the new file with xz back to something like Xcode_9.xz +# Upload the file to temporary storage for this script to use. + +set -ex + +# shellcheck source=../common/macos/install_xcode.sh +source "${BASH_SOURCE%/*}/../common/macos/install_xcode.sh" + +InstallXCode /net/ci-files01-hki.ci.qt.io/hdd/www/input/mac/Xcode_16.xip 16 diff --git a/coin/provisioning/qtci-macos-15-x86_64/21-install-commandlinetools.sh b/coin/provisioning/qtci-macos-15-x86_64/21-install-commandlinetools.sh new file mode 100755 index 00000000000..3f7148c99b9 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/21-install-commandlinetools.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/install-commandlinetools.sh +source "${BASH_SOURCE%/*}/../common/macos/install-commandlinetools.sh" +version="16" +packageName="Command_Line_Tools_for_Xcode_$version.dmg" +url="http://ci-files01-hki.ci.qt.io/input/mac/$packageName" +sha1="c6f1a7521d5da50c2bba3d83c0f3ee7df6d87d28" + +InstallCommandLineTools $url $url $sha1 $packageName $version diff --git a/coin/provisioning/qtci-macos-15-x86_64/22-install-simulator-runtime.sh b/coin/provisioning/qtci-macos-15-x86_64/22-install-simulator-runtime.sh new file mode 100755 index 00000000000..470bae9011b --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/22-install-simulator-runtime.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/install-simulator-runtime.sh +source "${BASH_SOURCE%/*}/../common/macos/install-simulator-runtime.sh" +version="18.0" +packageName=iOS_"$version"_Simulator_Runtime.dmg +url="http://ci-files01-hki.ci.qt.io/input/mac/$packageName" +sha1="f29778313459b3a2a497ffd711b9dfa212241183" + +InstallSimulatorRuntime $url $url $sha1 $packageName $version diff --git a/coin/provisioning/qtci-macos-15-x86_64/24-sccache.sh b/coin/provisioning/qtci-macos-15-x86_64/24-sccache.sh new file mode 100755 index 00000000000..358b23fbf45 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/24-sccache.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +source "${BASH_SOURCE%/*}/../common/macos/sccache.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-cmake.sh b/coin/provisioning/qtci-macos-15-x86_64/25-cmake.sh new file mode 100755 index 00000000000..3309588000c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-cmake.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/cmake.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-homebrew.sh b/coin/provisioning/qtci-macos-15-x86_64/25-homebrew.sh new file mode 100755 index 00000000000..0c4ee4fc6a5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-homebrew.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +#Copyright (C) 2025 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +INSTALLTYPE="PKG" + +BASEDIR=$(dirname "$0") +# Usage "$BASEDIR/../common/macos/homebrew.sh" "$INSTALLTYPE" "$HOMEBREW_VERSION" "$HOMEBREW_HASH" +# Specify HOMEBREW_VERSION and HOMEBREW_HASH only if defaults set in homebrew.sh are not suitable for this platform +"$BASEDIR/../common/macos/homebrew.sh" "$INSTALLTYPE" diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-mysql.sh b/coin/provisioning/qtci-macos-15-x86_64/25-mysql.sh new file mode 100755 index 00000000000..b9f0c0aea36 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-mysql.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +# This script installs MySQL + +# MySQL is needed for Qt to be able to support MySQL + +set -ex + +# shellcheck source=../common/macos/InstallAppFromCompressedFileFromURL.sh +source "${BASH_SOURCE%/*}/../common/macos/InstallAppFromCompressedFileFromURL.sh" +# shellcheck source=../common/unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../common/unix/SetEnvVar.sh" + +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/macos_10.12_sierra/mysql-5.7.15-osx10.11-x86_64.tar.gz" +AltUrl="https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.15-osx10.11-x86_64.tar.gz" +SHA1="07949bd42f350b0504a1536b8830b809b4a34fca" +appPrefix="" +targetDir="/opt/mysql57/" + +sudo mkdir -p "/opt" + +InstallAppFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$appPrefix" "$targetDir" + +SetEnvVar "MYSQLBINPATH" "/opt/mysql57/bin" +echo "MySQL = 5.7.15" >> ~/versions.txt diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-pip.sh b/coin/provisioning/qtci-macos-15-x86_64/25-pip.sh new file mode 100755 index 00000000000..3fc865d0e52 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-pip.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/pip.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-postgresql.sh b/coin/provisioning/qtci-macos-15-x86_64/25-postgresql.sh new file mode 100755 index 00000000000..06cae6ef601 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-postgresql.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/postgresql.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-python2.sh b/coin/provisioning/qtci-macos-15-x86_64/25-python2.sh new file mode 100755 index 00000000000..4c88a413a30 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-python2.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +# shellcheck source=../common/macos/python2.sh +source "${BASH_SOURCE%/*}/../common/macos/python2.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/25-python3.sh b/coin/provisioning/qtci-macos-15-x86_64/25-python3.sh new file mode 100755 index 00000000000..8fee606c917 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/25-python3.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +# shellcheck source=../common/macos/python3.sh +source "${BASH_SOURCE%/*}/../common/macos/python3.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/26-freetype.sh b/coin/provisioning/qtci-macos-15-x86_64/26-freetype.sh new file mode 100755 index 00000000000..fa0790f840c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/26-freetype.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install freetype diff --git a/coin/provisioning/qtci-macos-15-x86_64/26-jq.sh b/coin/provisioning/qtci-macos-15-x86_64/26-jq.sh new file mode 100755 index 00000000000..4dffcb969ac --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/26-jq.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -ex + +brew install jq diff --git a/coin/provisioning/qtci-macos-15-x86_64/26-ninja.sh b/coin/provisioning/qtci-macos-15-x86_64/26-ninja.sh new file mode 100755 index 00000000000..4443eeb486f --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/26-ninja.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/ninja.sh +source "${BASH_SOURCE%/*}/../common/macos/ninja.sh" + + diff --git a/coin/provisioning/qtci-macos-15-x86_64/26-odbc.sh b/coin/provisioning/qtci-macos-15-x86_64/26-odbc.sh new file mode 100755 index 00000000000..2b6b013a5ee --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/26-odbc.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +# Install libiodbc + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/libiodbc.sh" --with-universal diff --git a/coin/provisioning/qtci-macos-15-x86_64/26-p7zip.sh b/coin/provisioning/qtci-macos-15-x86_64/26-p7zip.sh new file mode 100755 index 00000000000..8cdcd0c367d --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/26-p7zip.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +# Install 7z to be used from command line + +set -ex + +brew update +brew install p7zip diff --git a/coin/provisioning/qtci-macos-15-x86_64/26-pcre2.sh b/coin/provisioning/qtci-macos-15-x86_64/26-pcre2.sh new file mode 100755 index 00000000000..c10d6206b6d --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/26-pcre2.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install pcre2 diff --git a/coin/provisioning/qtci-macos-15-x86_64/27-libclang.sh b/coin/provisioning/qtci-macos-15-x86_64/27-libclang.sh new file mode 100755 index 00000000000..cc025e6e441 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/27-libclang.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +# There is only one mac package and common script uses it as a default +"$BASEDIR/../common/unix/libclang.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/28-libclang-v100-dyn.sh b/coin/provisioning/qtci-macos-15-x86_64/28-libclang-v100-dyn.sh new file mode 100755 index 00000000000..d95e7e00cd0 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/28-libclang-v100-dyn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/28-patchelf.sh b/coin/provisioning/qtci-macos-15-x86_64/28-patchelf.sh new file mode 100755 index 00000000000..f60a7cdcbf0 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/28-patchelf.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2024 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/unix/install-patchelf.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/29-install-pkgconfig.sh b/coin/provisioning/qtci-macos-15-x86_64/29-install-pkgconfig.sh new file mode 100755 index 00000000000..33e115801d5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/29-install-pkgconfig.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/pkgconfig.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/29-libusb.sh b/coin/provisioning/qtci-macos-15-x86_64/29-libusb.sh new file mode 100755 index 00000000000..e9e9e2383d3 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/29-libusb.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") + +"$BASEDIR/../common/macos/libusb.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/30-android.sh b/coin/provisioning/qtci-macos-15-x86_64/30-android.sh new file mode 100755 index 00000000000..ddb3aec037d --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/30-android.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/macos/android.sh +source "${BASH_SOURCE%/*}/../common/macos/android.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/30-fbx.sh b/coin/provisioning/qtci-macos-15-x86_64/30-fbx.sh new file mode 100755 index 00000000000..e991bc083a5 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/30-fbx.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/fbx_macos.sh" + diff --git a/coin/provisioning/qtci-macos-15-x86_64/30-install-conan.sh b/coin/provisioning/qtci-macos-15-x86_64/30-install-conan.sh new file mode 100755 index 00000000000..8d90ef37a97 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/30-install-conan.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-conan.sh" "macos" diff --git a/coin/provisioning/qtci-macos-15-x86_64/30-nodejs.sh b/coin/provisioning/qtci-macos-15-x86_64/30-nodejs.sh new file mode 100755 index 00000000000..a5cf7d4d264 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/30-nodejs.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/nodejs.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/35-install-breakpad.sh b/coin/provisioning/qtci-macos-15-x86_64/35-install-breakpad.sh new file mode 100755 index 00000000000..8a9dde56be4 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/35-install-breakpad.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-breakpad.sh +source "${BASH_SOURCE%/*}/../common/unix/install-breakpad.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/35-install_protobuf.sh b/coin/provisioning/qtci-macos-15-x86_64/35-install_protobuf.sh new file mode 100755 index 00000000000..b07613744dd --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/35-install_protobuf.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install_protobuf.sh +source "${BASH_SOURCE%/*}/../common/unix/install_protobuf.sh" + diff --git a/coin/provisioning/qtci-macos-15-x86_64/35-openssl.sh b/coin/provisioning/qtci-macos-15-x86_64/35-openssl.sh new file mode 100755 index 00000000000..c86788db992 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/35-openssl.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/install-openssl.sh +source "${BASH_SOURCE%/*}/../common/unix/install-openssl.sh" "macos-universal" + diff --git a/coin/provisioning/qtci-macos-15-x86_64/36-emsdk.sh b/coin/provisioning/qtci-macos-15-x86_64/36-emsdk.sh new file mode 100755 index 00000000000..c8aec444d4c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/36-emsdk.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# shellcheck source=../common/unix/emsdk.sh +source "${BASH_SOURCE%/*}/../common/unix/emsdk.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/50-openssl_for_android_darwin.sh b/coin/provisioning/qtci-macos-15-x86_64/50-openssl_for_android_darwin.sh new file mode 100755 index 00000000000..8cb78e85613 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/50-openssl_for_android_darwin.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +# shellcheck source=../common/unix/openssl_for_android.sh +source "${BASH_SOURCE%/*}/../common/unix/openssl_for_android.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/80-screenresolution.sh b/coin/provisioning/qtci-macos-15-x86_64/80-screenresolution.sh new file mode 100755 index 00000000000..ed905a33d4b --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/80-screenresolution.sh @@ -0,0 +1,6 @@ +#!/bin/sh +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +"$(dirname "$0")"/../common/macos/screenresolution.sh + diff --git a/coin/provisioning/qtci-macos-15-x86_64/81-bluetooth.sh b/coin/provisioning/qtci-macos-15-x86_64/81-bluetooth.sh new file mode 100755 index 00000000000..c58b9a34354 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/81-bluetooth.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +brew install blueutil + +#Disable Bluetooth +blueutil -p 0 diff --git a/coin/provisioning/qtci-macos-15-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-15-x86_64/90-install-ffmpeg.sh new file mode 100755 index 00000000000..c36eda4526b --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/90-install-ffmpeg.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +source "${BASH_SOURCE%/*}/../common/macos/install-ffmpeg-macos.sh" "macos-universal" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-android.sh" "android-arm64" +source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg-ios.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/90-squish.sh b/coin/provisioning/qtci-macos-15-x86_64/90-squish.sh new file mode 100755 index 00000000000..c2658d0e7c7 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/90-squish.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/squishInstall.sh" + diff --git a/coin/provisioning/qtci-macos-15-x86_64/90-vlc.sh b/coin/provisioning/qtci-macos-15-x86_64/90-vlc.sh new file mode 100755 index 00000000000..4924fe5c42c --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/90-vlc.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +# for QtMM streaming tests +brew install --cask vlc diff --git a/coin/provisioning/qtci-macos-15-x86_64/97-set-locale.sh b/coin/provisioning/qtci-macos-15-x86_64/97-set-locale.sh new file mode 100755 index 00000000000..4ac0fd1337a --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/97-set-locale.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/macos/set-locale.sh diff --git a/coin/provisioning/qtci-macos-15-x86_64/98-mimersql.sh b/coin/provisioning/qtci-macos-15-x86_64/98-mimersql.sh new file mode 100755 index 00000000000..70d5bc1d458 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/98-mimersql.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/macos/mimersql.sh" "macos-universal" diff --git a/coin/provisioning/qtci-macos-15-x86_64/99-mac-version.sh b/coin/provisioning/qtci-macos-15-x86_64/99-mac-version.sh new file mode 100755 index 00000000000..d145d1e99c6 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/99-mac-version.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/macos/macos-version.sh diff --git a/coin/provisioning/qtci-windows-10_22H2-x86_64/08-libclang.ps1 b/coin/provisioning/qtci-windows-10_22H2-x86_64/08-libclang.ps1 index 7681f01a44e..88247275d9b 100644 --- a/coin/provisioning/qtci-windows-10_22H2-x86_64/08-libclang.ps1 +++ b/coin/provisioning/qtci-windows-10_22H2-x86_64/08-libclang.ps1 @@ -1,3 +1,4 @@ # Do not set the default LLVM_INSTALL_DIR for mingw, leave it with msvc for compat . "$PSScriptRoot\..\common\windows\libclang.ps1" 64 mingw $False +. "$PSScriptRoot\..\common\windows\libclang.ps1" 64 llvm-mingw $False . "$PSScriptRoot\..\common\windows\libclang.ps1" 64 vs2019 diff --git a/coin/provisioning/qtci-windows-10_22H2-x86_64/12-install-golang.ps1 b/coin/provisioning/qtci-windows-10_22H2-x86_64/12-install-golang.ps1 new file mode 100644 index 00000000000..c68f16a154e --- /dev/null +++ b/coin/provisioning/qtci-windows-10_22H2-x86_64/12-install-golang.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-golang.ps1" diff --git a/coin/provisioning/qtci-windows-10_22H2-x86_64/12-install-upx.ps1 b/coin/provisioning/qtci-windows-10_22H2-x86_64/12-install-upx.ps1 new file mode 100644 index 00000000000..768a15d7714 --- /dev/null +++ b/coin/provisioning/qtci-windows-10_22H2-x86_64/12-install-upx.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-upx.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/08-install-jdk.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/08-install-jdk.ps1 new file mode 100644 index 00000000000..15065b55c71 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/08-install-jdk.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-jdk.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/08-libclang.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/08-libclang.ps1 new file mode 100644 index 00000000000..516adaf0643 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/08-libclang.ps1 @@ -0,0 +1,2 @@ +# Do not set the default LLVM_INSTALL_DIR for mingw, leave it with msvc for compat +. "$PSScriptRoot\..\common\windows\libclang.ps1" arm64 vs2022 diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/08-python3.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/08-python3.ps1 index 5ca364917b8..74cb6997fff 100644 --- a/coin/provisioning/qtci-windows-11_22H2-aarch64/08-python3.ps1 +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/08-python3.ps1 @@ -5,5 +5,5 @@ # - version # - Optional true/false if set as default with PYTHON3/PIP3_PATH variables, default false -# Downloading https://www.python.org/ftp/python/3.12.3/python-3.12.3-arm64.exe -. "$PSScriptRoot\..\common\windows\python3.ps1" 64 "a7fe973fd406c0db2b982d83e9feb30f8fde704f" "C:\Python312_64" "3.12.3" $true +# Downloading https://www.python.org/ftp/python/3.11.9/python-3.11.9-arm64.exe +. "$PSScriptRoot\..\common\windows\python3.ps1" 64 "9e0487af5f0472978b7b6d4f4d3d8fd56865ff97" "C:\Python311_64" "3.11.9" $true diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/09-install-dependencywalker.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/09-install-dependencywalker.ps1 new file mode 100644 index 00000000000..331de489564 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/09-install-dependencywalker.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-dependencywalker.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/10-install-msys2.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/10-install-msys2.ps1 new file mode 100644 index 00000000000..be9a36349c8 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/10-install-msys2.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-msys2.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/12-install-golang.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/12-install-golang.ps1 new file mode 100644 index 00000000000..c68f16a154e --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/12-install-golang.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-golang.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/90-install-dotnet.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/90-install-dotnet.ps1 new file mode 100644 index 00000000000..a2ecfba2b81 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/90-install-dotnet.ps1 @@ -0,0 +1,2 @@ +. "$PSScriptRoot\..\common\windows\install-dotnet.ps1" + diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/90-install-ffmpeg.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/90-install-ffmpeg.ps1 new file mode 100644 index 00000000000..cd8df72f926 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/90-install-ffmpeg.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-ffmpeg.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/90-squish.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/90-squish.ps1 new file mode 100644 index 00000000000..ff758845941 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/90-squish.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\squishInstall.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-aarch64/91-install-azure-tool.ps1 b/coin/provisioning/qtci-windows-11_22H2-aarch64/91-install-azure-tool.ps1 new file mode 100644 index 00000000000..f1d5acc390e --- /dev/null +++ b/coin/provisioning/qtci-windows-11_22H2-aarch64/91-install-azure-tool.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-azure-tool.ps1" diff --git a/coin/provisioning/qtci-windows-11_22H2-x86_64/08-libclang.ps1 b/coin/provisioning/qtci-windows-11_22H2-x86_64/08-libclang.ps1 index 7681f01a44e..88247275d9b 100644 --- a/coin/provisioning/qtci-windows-11_22H2-x86_64/08-libclang.ps1 +++ b/coin/provisioning/qtci-windows-11_22H2-x86_64/08-libclang.ps1 @@ -1,3 +1,4 @@ # Do not set the default LLVM_INSTALL_DIR for mingw, leave it with msvc for compat . "$PSScriptRoot\..\common\windows\libclang.ps1" 64 mingw $False +. "$PSScriptRoot\..\common\windows\libclang.ps1" 64 llvm-mingw $False . "$PSScriptRoot\..\common\windows\libclang.ps1" 64 vs2019 diff --git a/coin/provisioning/qtci-windows-11_23H2-x86_64/08-libclang.ps1 b/coin/provisioning/qtci-windows-11_23H2-x86_64/08-libclang.ps1 index 7681f01a44e..88247275d9b 100644 --- a/coin/provisioning/qtci-windows-11_23H2-x86_64/08-libclang.ps1 +++ b/coin/provisioning/qtci-windows-11_23H2-x86_64/08-libclang.ps1 @@ -1,3 +1,4 @@ # Do not set the default LLVM_INSTALL_DIR for mingw, leave it with msvc for compat . "$PSScriptRoot\..\common\windows\libclang.ps1" 64 mingw $False +. "$PSScriptRoot\..\common\windows\libclang.ps1" 64 llvm-mingw $False . "$PSScriptRoot\..\common\windows\libclang.ps1" 64 vs2019 diff --git a/coin/provisioning/qtci-windows-11_23H2-x86_64/12-install-golang.ps1 b/coin/provisioning/qtci-windows-11_23H2-x86_64/12-install-golang.ps1 new file mode 100644 index 00000000000..c68f16a154e --- /dev/null +++ b/coin/provisioning/qtci-windows-11_23H2-x86_64/12-install-golang.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-golang.ps1" diff --git a/coin/provisioning/qtci-windows-11_23H2-x86_64/12-install-upx.ps1 b/coin/provisioning/qtci-windows-11_23H2-x86_64/12-install-upx.ps1 new file mode 100644 index 00000000000..768a15d7714 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_23H2-x86_64/12-install-upx.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\install-upx.ps1" diff --git a/coin/provisioning/qtci-windows-11_23H2-x86_64/40-qnx710.ps1 b/coin/provisioning/qtci-windows-11_23H2-x86_64/40-qnx710.ps1 new file mode 100644 index 00000000000..826cc5b2f73 --- /dev/null +++ b/coin/provisioning/qtci-windows-11_23H2-x86_64/40-qnx710.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\windows\qnx710.ps1" diff --git a/qt3d b/qt3d index 7436bbf6c57..2a738b498c6 160000 --- a/qt3d +++ b/qt3d @@ -1 +1 @@ -Subproject commit 7436bbf6c57f288dea560a5eb90d8ab5b722834a +Subproject commit 2a738b498c6143f381ba099b20dd928ec42d61a9 diff --git a/qt5compat b/qt5compat index 29a070f6273..16dd58372a2 160000 --- a/qt5compat +++ b/qt5compat @@ -1 +1 @@ -Subproject commit 29a070f62732e14ffbdcad316f571a75e2c9b4ea +Subproject commit 16dd58372a291ff24fbb5efe9714e6220bda9769 diff --git a/qtactiveqt b/qtactiveqt index a2e0cba59db..3c62ddb8abf 160000 --- a/qtactiveqt +++ b/qtactiveqt @@ -1 +1 @@ -Subproject commit a2e0cba59db7d7d879ed0dca5cc854e3f4bf56ad +Subproject commit 3c62ddb8abf4f8b9ead6254f69afe11ad85b4916 diff --git a/qtbase b/qtbase index 244964d06a3..b93d9dc01a0 160000 --- a/qtbase +++ b/qtbase @@ -1 +1 @@ -Subproject commit 244964d06a3ffcfea922f79c726ba9182149e2c7 +Subproject commit b93d9dc01a068d719e0f06b59b4b566cd6f00163 diff --git a/qtcharts b/qtcharts index 5d1e1c71de4..df07b220a54 160000 --- a/qtcharts +++ b/qtcharts @@ -1 +1 @@ -Subproject commit 5d1e1c71de4f44b6765b2dc08624933a9e8be536 +Subproject commit df07b220a54bc2b3c8f62b1910a558700acc79e4 diff --git a/qtcoap b/qtcoap index c110a072cf6..cb090961fc1 160000 --- a/qtcoap +++ b/qtcoap @@ -1 +1 @@ -Subproject commit c110a072cf63fc1f6a54b2333696e60b18ca8ae2 +Subproject commit cb090961fc19bab648ef7e6e9bb99f38615adf9c diff --git a/qtconnectivity b/qtconnectivity index 3676fe7bede..9c1cda4fce1 160000 --- a/qtconnectivity +++ b/qtconnectivity @@ -1 +1 @@ -Subproject commit 3676fe7bede8cae706d58db15ceb38ef80d0e2c4 +Subproject commit 9c1cda4fce114266fdd76e092950320ffe008963 diff --git a/qtdatavis3d b/qtdatavis3d index 97bf0819686..a3cad249b96 160000 --- a/qtdatavis3d +++ b/qtdatavis3d @@ -1 +1 @@ -Subproject commit 97bf08196865d742ce1e032ec50b6b10e44cb1a7 +Subproject commit a3cad249b961e05fa15edc48a93d544872b1fd65 diff --git a/qtdeclarative b/qtdeclarative index 4ad3d0c6096..f9e719687fe 160000 --- a/qtdeclarative +++ b/qtdeclarative @@ -1 +1 @@ -Subproject commit 4ad3d0c6096e6caefec74681eed86c2fa92149fd +Subproject commit f9e719687fe5160894203a5030bbb2e33ab0cf6f diff --git a/qtdoc b/qtdoc index b395157ee6e..31dde6c66c6 160000 --- a/qtdoc +++ b/qtdoc @@ -1 +1 @@ -Subproject commit b395157ee6e932ccb3bd05e64e9e4a5fffe779bd +Subproject commit 31dde6c66c694bf305b30bde7c60e599f79ae647 diff --git a/qtgraphs b/qtgraphs index 0569f02599f..535b3184ef0 160000 --- a/qtgraphs +++ b/qtgraphs @@ -1 +1 @@ -Subproject commit 0569f02599f25d705898de0c673140765b999884 +Subproject commit 535b3184ef0747eac38aaa7e0e83db8788253a9d diff --git a/qtgrpc b/qtgrpc index 4e619fc2fcd..d972d611395 160000 --- a/qtgrpc +++ b/qtgrpc @@ -1 +1 @@ -Subproject commit 4e619fc2fcd6dc4d7d0928e9a2db034c8b68223f +Subproject commit d972d6113952064bc659de6dea2b85b00d12011c diff --git a/qthttpserver b/qthttpserver index 9472e2b3de6..379ebe62abd 160000 --- a/qthttpserver +++ b/qthttpserver @@ -1 +1 @@ -Subproject commit 9472e2b3de6427648d4af82ac4c5f9138531131d +Subproject commit 379ebe62abd97f6c2f0be654e5ac81fbbfd73c34 diff --git a/qtimageformats b/qtimageformats index 14970083d07..a9a8cbbcdbf 160000 --- a/qtimageformats +++ b/qtimageformats @@ -1 +1 @@ -Subproject commit 14970083d0702de4f2ec162a07c8d97717c392f7 +Subproject commit a9a8cbbcdbfda7e7e4d482bdf3fa28a9003b416e diff --git a/qtlanguageserver b/qtlanguageserver index 70898fe27b8..1260ed909dd 160000 --- a/qtlanguageserver +++ b/qtlanguageserver @@ -1 +1 @@ -Subproject commit 70898fe27b8c28e41d38b46b68049d278ef3162f +Subproject commit 1260ed909ddfac44443dc9a3c19b6ecb50a1cd6f diff --git a/qtlocation b/qtlocation index c9f12395bac..d08bb041ff9 160000 --- a/qtlocation +++ b/qtlocation @@ -1 +1 @@ -Subproject commit c9f12395bac82d0f0f2aa45caec765d1ed3bb5f0 +Subproject commit d08bb041ff989fba159b99ba089351b1306b9540 diff --git a/qtlottie b/qtlottie index 2d6ec04ddd0..fbd91fc9c99 160000 --- a/qtlottie +++ b/qtlottie @@ -1 +1 @@ -Subproject commit 2d6ec04ddd0567c901239a54fe7f909ba8b8aaa6 +Subproject commit fbd91fc9c9999993ab0845da526882db009dd117 diff --git a/qtmqtt b/qtmqtt index 22cc223fa0e..8a8a689ec05 160000 --- a/qtmqtt +++ b/qtmqtt @@ -1 +1 @@ -Subproject commit 22cc223fa0e3bf2b6def5ae01c3744fb475efc5d +Subproject commit 8a8a689ec0539d089a746a81ed99511d82f233e0 diff --git a/qtmultimedia b/qtmultimedia index c8ba076f80d..b99460983eb 160000 --- a/qtmultimedia +++ b/qtmultimedia @@ -1 +1 @@ -Subproject commit c8ba076f80d1c100d237343a19887db51e091117 +Subproject commit b99460983eb3a0fae024a27ee7a31d290e0366bf diff --git a/qtnetworkauth b/qtnetworkauth index b0e66587434..7a9d47fd31d 160000 --- a/qtnetworkauth +++ b/qtnetworkauth @@ -1 +1 @@ -Subproject commit b0e6658743494e097257a3c1b619abd116aaed9b +Subproject commit 7a9d47fd31d4e88ff3f5a1ad5aa1bae7ca8ab593 diff --git a/qtopcua b/qtopcua index f5d9e4116be..acb7aa618a8 160000 --- a/qtopcua +++ b/qtopcua @@ -1 +1 @@ -Subproject commit f5d9e4116be209b22ba812744178fe7a068e817f +Subproject commit acb7aa618a8e654e9d8568d53d1e316aeab6351c diff --git a/qtpositioning b/qtpositioning index 413ede61f32..8277b8175e3 160000 --- a/qtpositioning +++ b/qtpositioning @@ -1 +1 @@ -Subproject commit 413ede61f32da23c446654a98f285ce06ef035c8 +Subproject commit 8277b8175e31ae6c81a79d8677a42c5e84db6261 diff --git a/qtqa b/qtqa index b77c911a9c6..5f3716fc8fb 160000 --- a/qtqa +++ b/qtqa @@ -1 +1 @@ -Subproject commit b77c911a9c68d9c2956130e8c108dad8052573ee +Subproject commit 5f3716fc8fbdd6c7b609e265c4dcb97aca63f470 diff --git a/qtquick3d b/qtquick3d index cf8859dcdc2..f82379f34ec 160000 --- a/qtquick3d +++ b/qtquick3d @@ -1 +1 @@ -Subproject commit cf8859dcdc2aede907dc36a138a527719dca016a +Subproject commit f82379f34ec73a9c088d291523a8997e14d44b7e diff --git a/qtquick3dphysics b/qtquick3dphysics index 4cce79cd159..c3ab0685b52 160000 --- a/qtquick3dphysics +++ b/qtquick3dphysics @@ -1 +1 @@ -Subproject commit 4cce79cd1594770dfcb280aabcb91ff360da38dc +Subproject commit c3ab0685b526ab8048935b9d2d9afe2fe071c127 diff --git a/qtquickeffectmaker b/qtquickeffectmaker index 1173eb435a6..22bb16e3540 160000 --- a/qtquickeffectmaker +++ b/qtquickeffectmaker @@ -1 +1 @@ -Subproject commit 1173eb435a6033453f2e49fca0c9d81c77ee6293 +Subproject commit 22bb16e3540e4f0d80027a46cefc527abbc0a19c diff --git a/qtquicktimeline b/qtquicktimeline index dae240097b0..a18a7090583 160000 --- a/qtquicktimeline +++ b/qtquicktimeline @@ -1 +1 @@ -Subproject commit dae240097b0dc1749e038565f56406efd646855a +Subproject commit a18a7090583daea8943d141273dfb84e3f763d97 diff --git a/qtremoteobjects b/qtremoteobjects index dcacf5c7aa5..7cc450c51b1 160000 --- a/qtremoteobjects +++ b/qtremoteobjects @@ -1 +1 @@ -Subproject commit dcacf5c7aa5b9ada58d256e206a8792294ce5462 +Subproject commit 7cc450c51b1c2b0a5a408e146ac0a388d63c7aea diff --git a/qtrepotools b/qtrepotools index 141876182b9..557cbde5d11 160000 --- a/qtrepotools +++ b/qtrepotools @@ -1 +1 @@ -Subproject commit 141876182b9431a7f847f877188bd5e1c0407dea +Subproject commit 557cbde5d1130fc9469cee46f21ea84c22237add diff --git a/qtscxml b/qtscxml index a5c6c03fb27..003145fabdf 160000 --- a/qtscxml +++ b/qtscxml @@ -1 +1 @@ -Subproject commit a5c6c03fb27e00ce8155ab774808b585ccb70bb1 +Subproject commit 003145fabdf5c7e2f15177bbc235b553304dee50 diff --git a/qtsensors b/qtsensors index 03368c437ae..7e479ce98ad 160000 --- a/qtsensors +++ b/qtsensors @@ -1 +1 @@ -Subproject commit 03368c437aebb46968635cbd5ea1f754e69297b0 +Subproject commit 7e479ce98adb8e6994610a0bdd24b0d2f49d9806 diff --git a/qtserialbus b/qtserialbus index d2ef492af98..2266b01cc0b 160000 --- a/qtserialbus +++ b/qtserialbus @@ -1 +1 @@ -Subproject commit d2ef492af98c8cc25951e4d049742ea44cfa19ff +Subproject commit 2266b01cc0bcefbd8fd40fe00bcba1f635054498 diff --git a/qtserialport b/qtserialport index fbf728e5890..856c383ba6e 160000 --- a/qtserialport +++ b/qtserialport @@ -1 +1 @@ -Subproject commit fbf728e58909a3952f3ba5d283db1ada7f463883 +Subproject commit 856c383ba6ec02a470674b1a04b9968825d2dccd diff --git a/qtshadertools b/qtshadertools index 50f1193245c..45903247484 160000 --- a/qtshadertools +++ b/qtshadertools @@ -1 +1 @@ -Subproject commit 50f1193245c47cadef4e74ee6d261c038d9796dc +Subproject commit 45903247484c4adb5802a0e36fd1a3b71d103aef diff --git a/qtspeech b/qtspeech index 4d7355d6da3..c26f7e8911c 160000 --- a/qtspeech +++ b/qtspeech @@ -1 +1 @@ -Subproject commit 4d7355d6da376d84b377034d514b259a9a650645 +Subproject commit c26f7e8911c6d69c4ef88b13455b8620bf6dc1ba diff --git a/qtsvg b/qtsvg index 7c255093fa4..2cfc9d5ae5f 160000 --- a/qtsvg +++ b/qtsvg @@ -1 +1 @@ -Subproject commit 7c255093fa41d9885767a276e5a344c8780b9502 +Subproject commit 2cfc9d5ae5ffa663c5a632c67be12d4f3f718913 diff --git a/qttools b/qttools index 49438275bdf..77db9c95047 160000 --- a/qttools +++ b/qttools @@ -1 +1 @@ -Subproject commit 49438275bdf6b08ba46e2ea2d89753f1f9c63d76 +Subproject commit 77db9c950477d9aa89d583b025f01c9e13e3ae44 diff --git a/qttranslations b/qttranslations index 937ab6d3d95..74e6bfc5d0e 160000 --- a/qttranslations +++ b/qttranslations @@ -1 +1 @@ -Subproject commit 937ab6d3d95aec88f80d72432f7cf07fc582e635 +Subproject commit 74e6bfc5d0e8913043677ee54ab19b7ce36beec3 diff --git a/qtvirtualkeyboard b/qtvirtualkeyboard index fe318ca5ead..771e99e43a4 160000 --- a/qtvirtualkeyboard +++ b/qtvirtualkeyboard @@ -1 +1 @@ -Subproject commit fe318ca5eada301d8bc19d2eebc23679607c970f +Subproject commit 771e99e43a4c20789df289dbedf98a201bfe06aa diff --git a/qtwayland b/qtwayland index d72cd58a3f1..e98390fe0ec 160000 --- a/qtwayland +++ b/qtwayland @@ -1 +1 @@ -Subproject commit d72cd58a3f1e97a4e9be78d16536821c969c3569 +Subproject commit e98390fe0ec6ef8fca62645521aa30905b4ab75a diff --git a/qtwebchannel b/qtwebchannel index 9f1ca1c6bdd..36e6623be61 160000 --- a/qtwebchannel +++ b/qtwebchannel @@ -1 +1 @@ -Subproject commit 9f1ca1c6bdde6adedeb215e487ebdb05a17ad2d0 +Subproject commit 36e6623be61e4d12376dcc1ed4c9ae059fa64bc3 diff --git a/qtwebengine b/qtwebengine index ebf9ad043da..c36197b11e9 160000 --- a/qtwebengine +++ b/qtwebengine @@ -1 +1 @@ -Subproject commit ebf9ad043daa53c310ea2d5ee9987afbc615e4cd +Subproject commit c36197b11e99d91f4f7dc56fb44f1457e3aea3bf diff --git a/qtwebsockets b/qtwebsockets index 9ee34de492e..352369b04a9 160000 --- a/qtwebsockets +++ b/qtwebsockets @@ -1 +1 @@ -Subproject commit 9ee34de492ef99c518b5db34877cdc5ae652a883 +Subproject commit 352369b04a95cdebc6aaa346689f562401c09c78 diff --git a/qtwebview b/qtwebview index 3c5af32f153..e070f3c5bd8 160000 --- a/qtwebview +++ b/qtwebview @@ -1 +1 @@ -Subproject commit 3c5af32f1534f60ab2fc028fd02bb7c71b464046 +Subproject commit e070f3c5bd8d3069acdf0f0d2d820ecb4f80ea46 diff --git a/tests/manual/RunCMake/Common.cmake b/tests/manual/RunCMake/Common.cmake index c4e782d765d..63418cfda45 100644 --- a/tests/manual/RunCMake/Common.cmake +++ b/tests/manual/RunCMake/Common.cmake @@ -3,15 +3,23 @@ set(top_repo_dir_path "${CMAKE_CURRENT_LIST_DIR}/../../..") get_filename_component(top_repo_dir_path "${top_repo_dir_path}" ABSOLUTE) +if(NOT IS_DIRECTORY ${top_repo_dir_path}/qtbase/cmake/3rdparty/cmake) + message(FATAL_ERROR + "qtbase submodule is not initialized or it is missing the QtRunCMakeTestHelpers.\n" + " Cannot run these tests without them." + ) +endif() macro(qt_ir_setup_test_include_paths) set(ir_script_path "${top_repo_dir_path}/cmake") list(APPEND CMAKE_MODULE_PATH "${ir_script_path}" - "${ir_script_path}/3rdparty/cmake" + "${top_repo_dir_path}/qtbase/cmake/3rdparty/cmake" ) include(QtIRHelpers) qt_ir_include_all_helpers() + # RunCMakeTestHelpers from qtbase/cmake/3rdparty/cmake + include(QtRunCMakeTestHelpers) endmacro() qt_ir_setup_test_include_paths()