diff options
Diffstat (limited to 'coin/provisioning/common')
230 files changed, 4652 insertions, 5527 deletions
diff --git a/coin/provisioning/common/linux/android/gradle_project/.gitignore b/coin/provisioning/common/linux/android/gradle_project/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/coin/provisioning/common/linux/android/gradle_project/README.md b/coin/provisioning/common/linux/android/gradle_project/README.md new file mode 100644 index 00000000..439cd362 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/README.md @@ -0,0 +1,20 @@ +# Android Gradle Project for COIN + +This project is used to at provisioning time to do an Android Gradle build that +will download Gradle binaries and AGP dependencies, then they will be cached +allowing consecutive builds, i.e. at test runs to not redownload the Gradle +binaries which tend to run into network issues and thus improving the +reliability of the Android integrations on COIN. + +The project is a basic empty views Android project that can be created by +Android Studio, it's Java based. Below is some extra details on relevant files +that might need updates in the future: + +- settings.gradle: mainly sets the the project name +- under app/src/main/ res/layout/activity_main.xml and src/*/*.java: sets the + layout and logic of the app, this shouldn't need to be touched. +- AndroidManifest.xml / app/build.gradle: Sets project settings like target version. +- gradle/libs.versions.toml: This sets the version numbers of various dependencies. + +Other files required for the project build are gradle wrapper and scripts which +are fetched by android_linux.sh from qtbase. diff --git a/coin/provisioning/common/linux/android/gradle_project/app/.gitignore b/coin/provisioning/common/linux/android/gradle_project/app/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/coin/provisioning/common/linux/android/gradle_project/app/build.gradle b/coin/provisioning/common/linux/android/gradle_project/app/build.gradle new file mode 100644 index 00000000..7f6b66ac --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/app/build.gradle @@ -0,0 +1,27 @@ +plugins { + alias(libs.plugins.androidApplication) +} + +android { + namespace 'com.example.gradle_project' + compileSdk 34 + + defaultConfig { + applicationId "com.example.gradle_project" + minSdk 28 + targetSdk 34 + versionCode 1 + versionName "1.0" + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation libs.core + implementation libs.appcompat + implementation libs.material +} diff --git a/coin/provisioning/common/linux/android/gradle_project/app/src/main/AndroidManifest.xml b/coin/provisioning/common/linux/android/gradle_project/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..492c2115 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/app/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <application + android:allowBackup="true" + android:label="gradle_project" + android:supportsRtl="true" + tools:targetApi="34"> + <activity + android:name=".MainActivity" + android:exported="true"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> diff --git a/coin/provisioning/common/linux/android/gradle_project/app/src/main/java/com/example/gradle_project/MainActivity.java b/coin/provisioning/common/linux/android/gradle_project/app/src/main/java/com/example/gradle_project/MainActivity.java new file mode 100644 index 00000000..d3575ef9 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/app/src/main/java/com/example/gradle_project/MainActivity.java @@ -0,0 +1,16 @@ +// 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 + +package com.example.gradle_project; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +public class MainActivity extends AppCompatActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + } +} diff --git a/coin/provisioning/common/linux/android/gradle_project/app/src/main/res/layout/activity_main.xml b/coin/provisioning/common/linux/android/gradle_project/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..c75d0576 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".MainActivity"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Hello World!" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/coin/provisioning/common/linux/android/gradle_project/build.gradle b/coin/provisioning/common/linux/android/gradle_project/build.gradle new file mode 100644 index 00000000..602be027 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/build.gradle @@ -0,0 +1,4 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { +alias(libs.plugins.androidApplication) apply false +} 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 new file mode 100644 index 00000000..85d2f8de --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/gradle/libs.versions.toml @@ -0,0 +1,18 @@ +[versions] +agp = "8.4.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" } + +[plugins] +androidApplication = { id = "com.android.application", version.ref = "agp" } + +[bundles] + diff --git a/coin/provisioning/common/linux/android/gradle_project/settings.gradle b/coin/provisioning/common/linux/android/gradle_project/settings.gradle new file mode 100644 index 00000000..ca34c7e7 --- /dev/null +++ b/coin/provisioning/common/linux/android/gradle_project/settings.gradle @@ -0,0 +1,17 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "gradle_project" +include ':app' diff --git a/coin/provisioning/common/linux/android_emulator_launcher.sh b/coin/provisioning/common/linux/android_emulator_launcher.sh new file mode 100755 index 00000000..fad20148 --- /dev/null +++ b/coin/provisioning/common/linux/android_emulator_launcher.sh @@ -0,0 +1,120 @@ +#!/bin/bash +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +# This util launches the Android emulator and ensures it doesn't stuck/freeze +# by detecting that and restarting it + +set -e + +EMULATOR_MAX_RETRIES=5 +ADB_MAX_TIMEOUT=300 +EMULATOR_EXEC="$ANDROID_SDK_ROOT/emulator/emulator" +ADB_EXEC="$ANDROID_SDK_ROOT/platform-tools/adb" +LOGCAT_PATH="$COIN_CTEST_RESULTSDIR/emulator_logcat_%iter.txt" +EMULATOR_RUN_LOG_PATH="$COIN_CTEST_RESULTSDIR/emulator_run_log_%iter.txt" + +if [ -z "${ANDROID_EMULATOR}" ]; then + echo "No AVD name provided via ANDROID_EMULATOR env variable. Aborting!" + exit 1 +fi + +function check_for_android_device +{ + $ADB_EXEC devices | awk 'NR==2{print $2}' | grep -qE '^(online|device)$' +} + +# WARNING: On the very first boot of the emulator it happens that the device +# "finishes" booting and getprop shows bootanim=stopped and +# boot_completed=1. But sometimes not all packages have been installed (`pm +# list packages` shows only 16 packages installed), and after around half a +# minute the boot animation starts spinning (bootanim=running) again despite +# boot_completed=1 all the time. After some minutes the boot animation stops +# again and the list of packages contains 80 packages. Only then the device is +# fully booted, and only then is dev.bootcomplete=1. +# +# To reproduce the emulator booting as the first time, you have to delete the +# cached images found inside $HOME/.android/avd/{avd_name}.avd/ especially the +# "userdata-qemu.img.qcow2" file. +function check_if_fully_booted +{ + # The "getprop" command separates lines with \r\n so we trim them + bootanim=$( timeout 1 "$ADB_EXEC" shell getprop init.svc.bootanim | tr -d '\r\n') + boot_completed=$(timeout 1 "$ADB_EXEC" shell getprop sys.boot_completed | tr -d '\r\n') + bootcomplete=$( timeout 1 "$ADB_EXEC" shell getprop dev.bootcomplete | tr -d '\r\n') + echo "bootanim=$bootanim boot_completed=$boot_completed bootcomplete=$bootcomplete" + [ "$bootanim" = stopped ] && [ "$boot_completed" = 1 ] && [ "$bootcomplete" = 1 ] +} + +for counter in $(seq ${EMULATOR_MAX_RETRIES}) +do + $ADB_EXEC kill-server + $ADB_EXEC start-server + + if check_for_android_device + then + echo "Emulator is already running but it shouldn't be. Terminating it now..." + pkill '^qemu-system-' || true + sleep 5 + fi + + LOGCAT_PATH=${LOGCAT_PATH//%iter/${counter}} + EMULATOR_RUN_LOG_PATH=${EMULATOR_RUN_LOG_PATH//%iter/${counter}} + + echo "Starting emulator ${ANDROID_EMULATOR}, try ${counter}/${EMULATOR_MAX_RETRIES}" \ + | tee "${EMULATOR_RUN_LOG_PATH}" + $EMULATOR_EXEC -avd "$ANDROID_EMULATOR" \ + -gpu swiftshader_indirect -no-audio -no-window -no-boot-anim \ + -cores 4 -memory 16000 -partition-size 4096 \ + -detect-image-hang -restart-when-stalled -no-snapshot-save \ + -no-nested-warnings -logcat '*:v' -logcat-output "${LOGCAT_PATH}" \ + </dev/null >"${EMULATOR_RUN_LOG_PATH}" 2>&1 & + emulator_pid=$! + disown $emulator_pid + + echo "Waiting ${ADB_MAX_TIMEOUT} seconds for emulated device to appear..." + timeout ${ADB_MAX_TIMEOUT} "$ADB_EXEC" wait-for-device + + # Due to some bug in Coin/Go, we can't have the emulator command stream + # the output to the console while in the background, as Coin will continue + # waiting for it. So, rely on re-directing all output to a log file and + # then printing it out after the emulator is started. + echo "######## Printing out the emulator command logs ########" + cat "${EMULATOR_RUN_LOG_PATH}" + echo "########################################################" + + echo "Waiting a few minutes for the emulator to fully boot..." + emulator_status=down + for _ in $(seq ${ADB_MAX_TIMEOUT}) + do + sleep 1 + + if check_for_android_device && check_if_fully_booted + then + emulator_status=up + break + fi + done + + # If emulator status is still offline after timeout period, + # we can assume it's stuck, and we must restart it + if [ $emulator_status = up ] + then + echo "Emulator started successfully" + break + else + if [ "$counter" -lt "$EMULATOR_MAX_RETRIES" ] + then + echo "Emulator failed to start," \ + "forcefully killing current instance and re-starting emulator" + kill $emulator_pid || true + sleep 5 + elif [ "$counter" -eq "$EMULATOR_MAX_RETRIES" ] + then + echo "Emulator failed to start, reached maximum number of retries. Aborting\!" + exit 2 + fi + fi +done + +exit 0 diff --git a/coin/provisioning/common/linux/android_linux.sh b/coin/provisioning/common/linux/android_linux.sh index 35e39951..fbdb75cf 100755 --- a/coin/provisioning/common/linux/android_linux.sh +++ b/coin/provisioning/common/linux/android_linux.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 install Android sdk and ndk. @@ -55,32 +18,74 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" targetFolder="/opt/android" sdkTargetFolder="$targetFolder/sdk" -basePath="http://ci-files01-hki.intra.qt.io/input/android" +sudo mkdir -p "$sdkTargetFolder" + +basePath="http://ci-files01-hki.ci.qt.io/input/android" toolsVersion="2.1" toolsFile="commandlinetools-linux-6609375_latest.zip" -ndkVersion="r22b" -ndkFile="android-ndk-$ndkVersion-linux-x86_64.zip" -sdkBuildToolsVersion="31.0.0" -sdkApiLevel="android-31" +ndkVersionLatest="r26b" +ndkVersionDefault=$ndkVersionLatest +sdkBuildToolsVersion="34.0.0" +sdkApiLevel="android-34" toolsSha1="9172381ff070ee2a416723c1989770cf4b0d1076" -ndkSha1="9ece64c7f19763dd67320d512794969930fce9dc" +ndkSha1Latest="fdf33d9f6c1b3f16e5459d53a82c7d2201edbcc4" +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" +androidAutomotiveMaxUrl="$basePath/${sdkApiLevelAutomotiveMax}_automotive.tar.gz" +androidAutomotiveMaxSha="b020a938ec46af2510047284406e9bed608cad03" +# Android Automotive min SDK level image +sdkApiLevelAutomotiveMin="android-29" +androidAutomotiveMinUrl="$basePath/${sdkApiLevelAutomotiveMin}_automotive.tar.gz" +androidAutomotiveMinSha="e6092585c00f87eb3b20a2eb7fdf6add42342d2f" toolsTargetFile="/tmp/$toolsFile" toolsSourceFile="$basePath/$toolsFile" -ndkTargetFile="/tmp/$ndkFile" -ndkSourceFile="$basePath/$ndkFile" +echo "Download and unzip Android SDK" DownloadURL "$toolsSourceFile" "$toolsSourceFile" "$toolsSha1" "$toolsTargetFile" -DownloadURL "$ndkSourceFile" "$ndkSourceFile" "$ndkSha1" "$ndkTargetFile" -echo "Unzipping Android NDK to '$targetFolder'" -sudo unzip -q "$ndkTargetFile" -d "$targetFolder" echo "Unzipping Android Tools to '$sdkTargetFolder'" sudo unzip -q "$toolsTargetFile" -d "$sdkTargetFolder" -rm "$ndkTargetFile" rm "$toolsTargetFile" +function InstallNdk() { + + ndkVersion=$1 + ndkSha1=$2 + + ndkFile="android-ndk-$ndkVersion-linux.zip" + ndkTargetFile="/tmp/$ndkFile" + ndkSourceFile="$basePath/$ndkFile" + + DownloadURL "$ndkSourceFile" "$ndkSourceFile" "$ndkSha1" "$ndkTargetFile" + echo "Unzipping Android NDK to '$targetFolder'" + # Get the package base directory name as string + zipBase=$(sudo zipinfo -1 "$ndkTargetFile" 2>/dev/null | awk '!seen {sub("/.*",""); print; seen=1}') + sudo unzip -q "$ndkTargetFile" -d "$targetFolder" + rm "$ndkTargetFile" + androidNdkRoot="${targetFolder}/${zipBase}" +} + +InstallNdk $ndkVersionDefault $ndkSha1Default +SetEnvVar "ANDROID_NDK_ROOT_DEFAULT" "$androidNdkRoot" + +if [ "$ndkVersionDefault" != "$ndkVersionLatest" ]; then + InstallNdk $ndkVersionLatest $ndkSha1Latest +fi +SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$androidNdkRoot" + +# To be used by vcpkg +SetEnvVar "ANDROID_NDK_HOME" "$targetFolder/android-ndk-$ndkVersionDefault" +export ANDROID_NDK_HOME="$targetFolder/android-ndk-$ndkVersionDefault" + echo "Changing ownership of Android files." if uname -a |grep -q "el7"; then sudo chown -R qt:wheel "$targetFolder" @@ -105,37 +110,96 @@ if [ "$http_proxy" != "" ]; then echo "y" | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" --sdk_root=$sdkTargetFolder \ --no_https --proxy=http --proxy_host="$proxy_host" --proxy_port="$proxy_port" \ "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ - | eval $sdkmanager_no_progress_bar_cmd + | eval "$sdkmanager_no_progress_bar_cmd" else echo "y" | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" --sdk_root=$sdkTargetFolder \ "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ - | eval $sdkmanager_no_progress_bar_cmd + | eval "$sdkmanager_no_progress_bar_cmd" fi 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" "linux-x86_64" SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" # shellcheck disable=SC2129 -echo "Android SDK tools = $toolsVersion" >> ~/versions.txt -echo "Android SDK Build Tools = $sdkBuildToolsVersion" >> ~/versions.txt -echo "Android SDK API level = $sdkApiLevel" >> ~/versions.txt -echo "Android NDK = $ndkVersion" >> ~/versions.txt +cat >>~/versions.txt <<EOB +Android SDK tools = $toolsVersion +Android SDK Build Tools = $sdkBuildToolsVersion +Android SDK API level = $sdkApiLevel +Android NDK = $ndkVersion +EOB cd "$sdkTargetFolder/cmdline-tools/tools/bin" -./sdkmanager --install "emulator" --sdk_root=$sdkTargetFolder \ - | eval $sdkmanager_no_progress_bar_cmd -echo "y" | ./sdkmanager --install "system-images;android-23;google_apis;x86" \ - | eval $sdkmanager_no_progress_bar_cmd - +./sdkmanager --install "emulator" --sdk_root="$sdkTargetFolder" \ + | eval "$sdkmanager_no_progress_bar_cmd" + +echo "Download and unzip Android Emulator version 34.1.19" +emulatorFileName="emulator-linux_x64-11525734.zip" +emulatorCiUrl="https://ci-files01-hki.ci.qt.io/input/android/$emulatorFileName" +emulatorUrl="http://dl.google.com/android/repository/$emulatorFileName" +emulatorTargetFile="$sdkTargetFolder/$emulatorFileName" +emulatorSha1="d6cc94109b081c5f6042dcb71a453144f7e62ce7" +DownloadURL "$emulatorCiUrl" "$emulatorUrl" "$emulatorSha1" "$emulatorTargetFile" +echo "Unzipping the Android Emulator to '$sdkTargetFolder'" +sudo unzip -o -q "$emulatorTargetFile" -d "$sdkTargetFolder" +rm "$emulatorTargetFile" + +echo "y" | ./sdkmanager --install "system-images;android-28;google_apis;x86" \ + | eval "$sdkmanager_no_progress_bar_cmd" + +echo "Extract stored Android 14 Beta $android14SystemZipName" +DownloadURL "$android14SystemPath" "$android14SystemPath" "$android14SystemZipSha" \ + "/tmp/$android14SystemZipName" +sudo tar -xzf "/tmp/$android14SystemZipName" -C "$sdkTargetFolder/system-images" echo "Checking the contents of Android SDK again..." ls -l "$sdkTargetFolder" -echo "no" | ./avdmanager create avd -n x86emulator -k "system-images;android-23;google_apis;x86" -c 2048M -f +echo "no" | ./avdmanager create avd -n emulator_x86_api_28 -c 2048M -f \ + -k "system-images;android-28;google_apis;x86" + +echo "no" | ./avdmanager create avd -n emulator_x86_64_api_34 -c 2048M -f \ + -k "system-images;android-34;google_apis;x86_64" + +echo "Install maximum supported SDK level image for Android Automotive $sdkApiLevelAutomotiveMax" +DownloadURL "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxUrl" "$androidAutomotiveMaxSha" \ + "/tmp/${sdkApiLevelAutomotiveMax}_automotive.tar.gz" +sudo tar -xzf "/tmp/${sdkApiLevelAutomotiveMax}_automotive.tar.gz" -C "$sdkTargetFolder/system-images" +echo "no" | ./avdmanager create avd -n automotive_emulator_x86_64_api_33 -c 2048M -f \ + -k "system-images;${sdkApiLevelAutomotiveMax};android-automotive;x86_64" + +echo "Install minimum supported SDK level image for Android Automotive $sdkApiLevelAutomotiveMin" +DownloadURL "$androidAutomotiveMinUrl" "$androidAutomotiveMinUrl" "$androidAutomotiveMinSha" \ + "/tmp/${sdkApiLevelAutomotiveMin}_automotive.tar.gz" +sudo tar -xzf "/tmp/${sdkApiLevelAutomotiveMin}_automotive.tar.gz" -C $sdkTargetFolder/system-images +echo "no" | ./avdmanager create avd -n automotive_emulator_x86_64_api_29 -c 2048M -f \ + -k "system-images;${sdkApiLevelAutomotiveMin};android-automotive;x86_64" + # Purely informative, show the list of avd devices ./avdmanager list avd + +# To be used by the VMs to start the emulator for tests +emulator_script_filename="android_emulator_launcher.sh" +scripts_dir_name="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" +cp "${scripts_dir_name}/${emulator_script_filename}" "${HOME}" +ANDROID_EMULATOR_RUNNER="${HOME}/${emulator_script_filename}" +SetEnvVar "ANDROID_EMULATOR_RUNNER" "$ANDROID_EMULATOR_RUNNER" + +# Gradle Caching +cp -r "${scripts_dir_name}/android/gradle_project" /tmp/gradle_project +cd /tmp/gradle_project +# Get Gradle files from qtbase +qtbaseGradleUrl="https://code.qt.io/cgit/qt/qtbase.git/plain/src/3rdparty/gradle" +commit_sha="f22e9795d9a32fc4e9f4d6f2a70c2f831028342b" +curl "$qtbaseGradleUrl/gradle.properties?h=$commit_sha" > gradle.properties +curl "$qtbaseGradleUrl/gradlew?h=$commit_sha" > gradlew +curl "$qtbaseGradleUrl/gradlew.bat?h=$commit_sha" > gradlew.bat +mkdir -p gradle/wrapper +curl "$qtbaseGradleUrl/gradle/wrapper/gradle-wrapper.jar?h=$commit_sha" > gradle/wrapper/gradle-wrapper.jar +curl "$qtbaseGradleUrl/gradle/wrapper/gradle-wrapper.properties?h=$commit_sha" > gradle/wrapper/gradle-wrapper.properties +# Run Gradle +chmod +x gradlew +ANDROID_SDK_ROOT="$sdkTargetFolder" sh gradlew build diff --git a/coin/provisioning/common/linux/apt_wait_loop.sh b/coin/provisioning/common/linux/apt_wait_loop.sh index 3614f2df..60d5d5ed 100755 --- a/coin/provisioning/common/linux/apt_wait_loop.sh +++ b/coin/provisioning/common/linux/apt_wait_loop.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 diff --git a/coin/provisioning/common/linux/axivion-bauhaus-suite.sh b/coin/provisioning/common/linux/axivion-bauhaus-suite.sh new file mode 100755 index 00000000..ab4ce5ef --- /dev/null +++ b/coin/provisioning/common/linux/axivion-bauhaus-suite.sh @@ -0,0 +1,44 @@ +#!/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 Axivion Bauhaus Suite tool. + +set -ex + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +# source "${BASH_SOURCE%/*}/../unix/SetEnvVar.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_7_4-x86_64-gnu_linux.tar.gz" +targetFile="bauhaus-suite-7_7_4-x86_64-gnu_linux.tar.gz" +sha1="df17ac0521864a7f1c0b5b3bfded1817cbf47bae" +cd "$HOME" +DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$HOME" + +mkdir "$HOME/.bauhaus" +cd "$HOME/.bauhaus" +wget http://ci-files01-hki.ci.qt.io/input/axivion/Qt_Evaluation_QSR_INTERN_20250118.key +cd "$HOME" + +#Axivion configuration +configurationFile="http://ci-files01-hki.ci.qt.io/input/axivion/axivion_config_771_new.tar.gz" +configurationTargetFile="axivion_config.tar.gz" +configSha1="db77f376e0b3ee0f7a74701790d1c8abe792bebe" +DownloadAndExtract "$configurationFile" "$configSha1" "$configurationTargetFile" "$HOME" + +echo "Axivion Bauhaus Suite = 7.7.4" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/bootstrap-autostart.sh b/coin/provisioning/common/linux/bootstrap-autostart.sh new file mode 100755 index 00000000..d590069e --- /dev/null +++ b/coin/provisioning/common/linux/bootstrap-autostart.sh @@ -0,0 +1,89 @@ +#!/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 + +# Make bootstap agent run in background without terminal view +# Terminal view can cause issues with Autotests + +# Create shell wrapper to pass environment variables +wrapper="${HOME}/bootstrap-agent.sh" +autostart_folder="${HOME}/.config/autostart" +# This directory should exist. Created in base image (tier 1) +mkdir -p "${autostart_folder}" + +# Create autostart desktop file and shell wrapper +sudo tee "${autostart_folder}/coin-bootstrap-agent.desktop" <<"EOF" +[Desktop Entry] +Type=Application +Exec=/home/qt/bootstrap-agent.sh +Hidden=false +X-GNOME-Autostart-enabled=true +Name=Coin +EOF + +sudo tee "$wrapper" <<"EOF" +#!/bin/sh +# Wait for network to come up +x=0 +while ! cat "/etc/resolv.conf" | grep -v "#" | grep "nameserver" > /dev/null ; do + echo "(WW) wating for network ($x/20)..." >> /home/qt/bootstrap-agent.txt + x=$((x+1)) + sleep 1 + if [ "$x" -gt 20 ]; then + echo "(EE) netowrk down. Exiting bootstrap." >> /home/qt/bootstrap-agent.txt + exit 1 + fi +done +echo "(**) network found." >> /home/qt/bootstrap-agent.txt + +# Wait for context to be mounted +x=0 +while ! ([ -f "/media/qt/CONTEXT/context.sh" ] || [ -f "/media/CONTEXT/context.sh" ] || [ -f "/run/media/qt/CONTEXT/context.sh" ]); do + echo "(WW) waiting for context file to be mounted ($x/20)..." >> /home/qt/bootstrap-agent.txt + x=$((x+1)) + sleep 1 + if [ "$x" -gt 20 ]; then + echo "(WW) no context file found. Mounting manually." >> /home/qt/bootstrap-agent.txt + break + fi +done + +# establish mount path (differs per distro) +if ! ([ -f "/media/qt/CONTEXT/context.sh" ] || [ -f "/media/CONTEXT/context.sh" ] || [ -f "/run/media/qt/CONTEXT/context.sh" ]); then + MOUNTPATH="invalid" + if [ -d "/run/media/qt/CONTEXT" ]; then + MOUNTPATH="/run/media/qt/CONTEXT" + fi + if [ -d "/media/qt/CONTEXT" ]; then + MOUNTPATH="/media/qt/CONTEXT" + fi + if [ -d "/media/CONTEXT" ]; then + MOUNTPATH="/media/CONTEXT" + fi + + # try mounting if unmounted + if [ -d "$MOUNTPATH" ]; then + if ! mount | grep "$MOUNTPATH" > /dev/null ; then + echo "(WW) context file not mounted..." >> /home/qt/bootstrap-agent.txt + echo "(WW) waiting 1 minute" >> /home/qt/bootstrap-agent.txt + sleep 60 + echo "(**) mount /dev/sr0 $MOUNTPATH" >> /home/qt/bootstrap-agent.txt + sudo mount -r /dev/sr0 $MOUNTPATH + fi + fi +fi + +if ([ -f "/media/qt/CONTEXT/context.sh" ] || [ -f "/media/CONTEXT/context.sh" ] || [ -f "/run/media/qt/CONTEXT/context.sh" ]); then + echo "(**) context found." >> /home/qt/bootstrap-agent.txt +else + echo "(EE) context not found. Starting bootstrap anyway." >> /home/qt/bootstrap-agent.txt +fi + +/home/qt/bootstrap-agent /dev/ttyS0 +EOF + +# set owner and permissions +sudo chown qt:users "$wrapper" +sudo chmod 755 "$wrapper" diff --git a/coin/provisioning/common/linux/cleanup_cache.sh b/coin/provisioning/common/linux/cleanup_cache.sh new file mode 100755 index 00000000..acb85965 --- /dev/null +++ b/coin/provisioning/common/linux/cleanup_cache.sh @@ -0,0 +1,58 @@ +#!/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 + +# This script needs to be called at the end of provisioning, to clean the cache directory + +set -e +set -f +QT_USER="qt" +CACHE=".cache" + +echo "---- starting cache cleanup." + +# skip if user qt does not exist +echo "---- checking user $QT_USER" +if grep -q "^$QT_USER:" /etc/passwd; then + echo "(**) found user $QT_USER" +else + echo "(WW) user $QT_USER not found." + echo "---- skipping cache cleanup." + exit 0 +fi + +# assume /home/qt as ~ won't expand into sudo +CACHEDIR="/home/$QT_USER/$CACHE" + +# delete files from a directory if it exists +echo "---- checking cache directory $CACHEDIR" +if sudo [ -d "$CACHEDIR" ]; then + if [ "$(sudo ls -A $CACHEDIR)" ]; then + echo "(WW) cache in $CACHEDIR is not empty." + echo "---- removing content:" + + # List files and delete in a loop as wildcard won't expand into sudo + sudo ls -A1 "$CACHEDIR" | while read -r FILE + do + echo "--- rm -rf $FILE" + sudo rm -rf "$CACHEDIR/$FILE" + done + else + echo "(**) cache in $CACHEDIR is empty." + fi +else + if sudo [ -f "$CACHEDIR" ]; then + # replace a cache file with a directory + echo "(WW) $CACHEDIR is a file." + echo "---- removing $CACHEDIR." + sudo rm -r "$CACHEDIR" + else + echo "(WW) cache directory $CACHEDIR not found." + fi + + # create new cache directory and assign rights + echo "---- creating cache director $CACHEDIR." + sudo mkdir "$CACHEDIR" + sudo chown $QT_USER:users $CACHEDIR + sudo chmod 700 $CACHEDIR +fi diff --git a/coin/provisioning/common/linux/cmake_linux.sh b/coin/provisioning/common/linux/cmake_linux.sh index c17d40e9..5fadad24 100755 --- a/coin/provisioning/common/linux/cmake_linux.sh +++ b/coin/provisioning/common/linux/cmake_linux.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2016 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2016 The 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 @@ -48,11 +11,11 @@ source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -majorminorversion="3.21" -version="3.21.1" -PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/cmake/cmake-$version-linux-x86_64.tar.gz" +majorminorversion="3.27" +version="3.27.7" +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="591e3b0729ae07c37c1fa3c6adde7cc21387059d" +SHA1="83ab00c8432a71cfc81e933ee7b3c3e14d50ad6f" targetFolder="/opt/cmake-$version" appPrefix="cmake-$version-linux-x86_64" diff --git a/coin/provisioning/common/linux/cmake_min_supported.sh b/coin/provisioning/common/linux/cmake_min_supported.sh new file mode 100755 index 00000000..4c64299b --- /dev/null +++ b/coin/provisioning/common/linux/cmake_min_supported.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# Copyright (C) 2016 The 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 minimum supported CMake to build Qt + +# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh +source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +majorminorversion="3.16" +version="3.16.8" +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="a4d2f96f475ccc8e1ae1d97cf6c8ce39abaa9d7c" +targetFolder="/opt/cmake-$version" +appPrefix="cmake-$version-Linux-x86_64" + +InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$targetFolder" "$appPrefix" + +SetEnvVar "CMAKE_MIN_SUPPORTED_BIN_PATH" "$targetFolder/bin" + +echo "CMake Min Supported = $version" >> ~/versions.txt + diff --git a/coin/provisioning/common/linux/cmake_toolchain_files/integrity_toolchain.cmake b/coin/provisioning/common/linux/cmake_toolchain_files/integrity_toolchain.cmake index def72e20..63cbc985 100644 --- a/coin/provisioning/common/linux/cmake_toolchain_files/integrity_toolchain.cmake +++ b/coin/provisioning/common/linux/cmake_toolchain_files/integrity_toolchain.cmake @@ -13,7 +13,7 @@ set(CMAKE_ASM_COMPILER cxintarm64) set(EGL_FOUND True) set(UNIX True) -set (CMAKE_C_COMPILE_FEATURES c_std_99) +set (CMAKE_C_COMPILE_FEATURES c_std_11) set (CMAKE_CXX_COMPILE_FEATURES cxx_alias_templates cxx_alignas @@ -59,38 +59,58 @@ endif() set(CMAKE_FIND_ROOT_PATH ${TARGET_ROOT_PATH}) +#graphical lib paths +set(EGL_LIBRARY_GRAPHIC_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics) +set(EGL_LIBRARY_CHK_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/integrity/libs/arm64/chk) +set(EGL_LIBRARY_PREBUILD_PATH ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt) + #base -set(CMAKE_C_FLAGS "-bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -non_shared -startfile_dir=$ENV{INTEGRITY_DIR}/libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/arm64/$ENV{INTEGRITY_BUILD_TARGET} -bigswitch -DINTEGRITY -llibivfs.a -llibposix.a -llibpaged_alloc.a -llibnet.a -llibsocket.a") +set(CMAKE_C_FLAGS "-bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -non_shared -startfile_dir=$ENV{INTEGRITY_DIR}/libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/arm64/$ENV{INTEGRITY_BUILD_TARGET} -bigswitch -DINTEGRITY -llibposix.a") set(CMAKE_C_FLAGS_DEBUG "-g -Omaxdebug") -set(CMAKE_C_FLAGS_RELEASE "-Ospeed -Olink -Omax") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --signed_fields --diag_suppress=1,82,228,236,381,611,961,997,1795,1931,1974,3148 --c++17 --thread_local_storage --exceptions --defer_parse_function_templates") +set(CMAKE_C_FLAGS_RELEASE "-Ospeed -Olink -Omax -no_uvfd") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --signed_fields --diag_suppress=1,82,228,236,381,611,961,997,1795,1931,1974,3148,1721,1424,193,940,620,111,128,185,826,186,68,830,177,554,550,175,1441,546 -std=c11 --c++17 --thread_local_storage --exceptions --defer_parse_function_templates") -set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} --signed_fields --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor -I $ENV{QC_MULTIMEDIA_INC_DIR}") +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -frigor=accurate --signed_fields --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor --commons -I $ENV{QC_MULTIMEDIA_INC_DIR}") set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${TARGET_ROOT_PATH} -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display/ --commons") - set(CMAKE_FIND_LIBRARY_PREFIXES "lib") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(BUILD_SHARED_LIBS OFF) -set(CMAKE_EXE_LINKER_FLAGS "") - -set(QT_CFLAGS_OPTIMIZE_FULL "-Ospeed -olink -Omax") +set(QT_CFLAGS_OPTIMIZE_FULL "-Ospeed -Olink -Omax") set(GLSLANG_OSDEP_PATH ../3rdparty/glslang/glslang/OSDependent/Unix) - -#set(QT_DEBUG_OPTIMIZATION_FLAGS "1") -#set (QT_CMAKE_DEBUG_EXTEND_TARGET "1") - -set(EGL_INCLUDE_DIR $ENV{GL_INC_DIR}) +set(GL_INC_DIR ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public) set(PKG_EGL_LIBRARY_DIRS ${TARGET_ROOT_PATH}) -set(EGL_LIBRARY ${TARGET_ROOT_PATH}/../libeglmegapack.a) - -#set(EGL_LIBRARY libESXEGL_Adreno.a libadreno_utils.a libESXGLESv2_Adreno.a libadreno_utils.a libGSLUser.a libOSUser.a libpanel.a libivfs.a libposix.a libpmem.a libtzbsp.a libpaged_alloc.a libglnext-llvm.a libopenwfd.a libplanedef.a liblogger.a libnet.a libsocket.a librfs_client.a libshm_client.a libmmosalrfs.a libmmosalfile.a libOSAbstraction.a) - -set(GLESv2_LIBRARY ${EGL_LIBRARY}) -set(GLESv2_INCLUDE_DIR $ENV{GL_INC_DIR}) -set(OPENGL_INCLUDE_DIR $ENV{GL_INC_DIR}) +set(EGL_INCLUDE_DIR ${GL_INC_DIR}) + +set(EGL_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libESXEGL_Adreno.a") + +set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) +set(GLESv2_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libESXGLESv2_Adreno.a") + +set(IntegrityPlatformGraphics_INCLUDE_DIR ${GL_INC_DIR}) +set(IntegrityPlatformGraphics_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libadreno_utils.a") +set(IntegrityPlatformGraphics_LIBRARIES_PACK + "${EGL_LIBRARY_GRAPHIC_PATH}/libplanedef.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libmmosalfile.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libOSAbstraction.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libopenwfd.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libOSUser.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libpanel.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libGSLUser.a" + "${EGL_LIBRARY_PREBUILD_PATH}/libglnext-llvm.a" + "${EGL_LIBRARY_GRAPHIC_PATH}/libpmem.a" + "${EGL_LIBRARY_CHK_PATH}/libposix.a" + "${EGL_LIBRARY_CHK_PATH}/libivfs.a" +) + +list(APPEND _qt_igy_gui_libs + "${GLESv2_LIBRARY}" + "${IntegrityPlatformGraphics_LIBRARY}" + "${IntegrityPlatformGraphics_LIBRARIES_PACK}") + +set(OPENGL_INCLUDE_DIR ${GL_INC_DIR}) +set(OPENGL_opengl_LIBRARY ${EGL_LIBRARY}) diff --git a/coin/provisioning/common/linux/disable-cracklib.sh b/coin/provisioning/common/linux/disable-cracklib.sh index e6cfc7a5..c4a5f9ba 100755 --- a/coin/provisioning/common/linux/disable-cracklib.sh +++ b/coin/provisioning/common/linux/disable-cracklib.sh @@ -1,4 +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 sudo chmod -x /etc/cron.daily/cracklib-runtime diff --git a/coin/provisioning/common/linux/disable-notifications.sh b/coin/provisioning/common/linux/disable-notifications.sh index 28d21656..802f986c 100755 --- a/coin/provisioning/common/linux/disable-notifications.sh +++ b/coin/provisioning/common/linux/disable-notifications.sh @@ -1,4 +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 gsettings set org.gnome.desktop.notifications.application:/update-manager/ enable false gsettings set org.gnome.desktop.notifications show-banners false diff --git a/coin/provisioning/common/linux/disable-ntp_linux.sh b/coin/provisioning/common/linux/disable-ntp_linux.sh index 85159331..f0712f48 100755 --- a/coin/provisioning/common/linux/disable-ntp_linux.sh +++ b/coin/provisioning/common/linux/disable-ntp_linux.sh @@ -1,53 +1,16 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 echo "Disable Network Time Protocol (NTP)" -if uname -a |grep -q "Ubuntu"; then +if uname -a |grep -q "Ubuntu\|Debian" ; then sudo timedatectl set-ntp false -elif cat /etc/os-release | grep "PRETTY_NAME" | grep -q "Leap 15"; then +elif grep "PRETTY_NAME" /etc/os-release | grep -q "Leap 15"; then (sudo systemctl stop chronyd && sudo systemctl disable chronyd) -elif cat /etc/os-release |grep "SUSE Linux Enterprise Server 15"; then +elif grep -q "SUSE Linux Enterprise Server 15" /etc/os-release; then sudo timedatectl set-ntp false else sudo systemctl disable ntpd || sudo /sbin/chkconfig ntpd off diff --git a/coin/provisioning/common/linux/disable_kwin_overview.sh b/coin/provisioning/common/linux/disable_kwin_overview.sh new file mode 100755 index 00000000..988c64c5 --- /dev/null +++ b/coin/provisioning/common/linux/disable_kwin_overview.sh @@ -0,0 +1,43 @@ +#!/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 +set -f +QT_USER="qt" +CONFDIR=".config" +KWINRC="kwinrc" +KWC5=$(which kwriteconfig5) + +if [ -z "$KWC5" ]; then + echo "(WW) kwriteconfig5 script not found." + echo "---- skipping overview disabling." + exit 0; +fi + +echo "---- ensuring window overview is disabled in kwin." + +# skip if user qt does not exist +echo "---- checking user $QT_USER" +if grep -q "^$QT_USER:" /etc/passwd; then + echo "(**) found user $QT_USER" +else + echo "(WW) user $QT_USER not found." + echo "---- skipping overview disabling." + exit 0; +fi + +CONFIGFILE="/home/$QT_USER/$CONFDIR/$KWINRC" + +# Check kwinrc existence +echo "---- checking for kwinrc." +if [ -f "$CONFIGFILE" ]; then + echo "(**) found kwinrc at $CONFIGFILE. Disabling overview." + + $KWC5 --file "$CONFIGFILE" --group Effect-windowview --key BorderActivateAll "9" + $KWC5 --file "$CONFIGFILE" --group Plugins --key windowOverview "false" + +else + echo "(WW) no kwinrc found at $CONFIGFILE." + echo "(WW) exiting." +fi diff --git a/coin/provisioning/common/linux/disable_selinux.sh b/coin/provisioning/common/linux/disable_selinux.sh index 64852e79..a788818e 100755 --- a/coin/provisioning/common/linux/disable_selinux.sh +++ b/coin/provisioning/common/linux/disable_selinux.sh @@ -1,4 +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 # We need to disable selinux while we are overwriting some binaries # required by it. If this is not done, ICU provisioning will create diff --git a/coin/provisioning/common/linux/docker.sh b/coin/provisioning/common/linux/docker.sh index d63a7c34..27673698 100755 --- a/coin/provisioning/common/linux/docker.sh +++ b/coin/provisioning/common/linux/docker.sh @@ -1,77 +1,42 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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")/../../" -. "$PROVISIONING_DIR"/common/unix/common.sourced.sh -. "$PROVISIONING_DIR"/common/unix/DownloadURL.sh - - -localRepo=http://ci-files01-hki.intra.qt.io/input/docker -upstreamRepo=https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64 - -echo ' - f4c941807310e3fa470dddfb068d599174a3daec containerd.io_1.2.10-3_amd64.deb - ee640d9258fd4d3f4c7017ab2a71da63cbbead55 docker-ce_19.03.4~3-0~ubuntu-bionic_amd64.deb - 09402bf5dac40f0c50f1071b17f38f6584a42ad1 docker-ce-cli_19.03.4~3-0~ubuntu-bionic_amd64.deb -' \ - | xargs -n2 | while read sha f -do - DownloadURL $localRepo/$f $upstreamRepo/$f $sha -done +# shellcheck source=../unix/common.sourced.sh +source "$PROVISIONING_DIR"/common/unix/common.sourced.sh +# shellcheck source=../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/focal/pool/stable/amd64/ + +function getEachUpstream () { + while read -r sha f + do DownloadURL "$localRepo/$f" "$upstreamRepo/$f" "$sha" + done +} +cat <<EOF | getEachUpstream +2666840157bab3b77a850236fbf323c423fb564a containerd.io_1.6.9-1_amd64.deb +ec6a1ad99b19b6a674349fb13bcc10d62c54c404 docker-ce_23.0.0-1~ubuntu.20.04~focal_amd64.deb +130774916fa7e2c9997b8fcb4e7696a343f12fb0 docker-ce-cli_23.0.0-1~ubuntu.20.04~focal_amd64.deb +EOF 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 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) +dockerComposeVersion="v2.15.1" DownloadURL \ - $localRepo/$f-1.24.1 \ - https://github.com/docker/compose/releases/download/1.24.1/$f \ - cfb3439956216b1248308141f7193776fcf4b9c9b49cbbe2fb07885678e2bb8a + "$localRepo/$f-${dockerComposeVersion}" \ + "https://github.com/docker/compose/releases/download/${dockerComposeVersion}/$f" \ + bcfd9ea51dee4c19dccdfaeef0e7956ef68bf14f3d175933742061a7271ef0f5 sudo install -m 755 ./docker-compose* /usr/local/bin/docker-compose sudo docker-compose --version rm ./docker-compose* @@ -80,4 +45,4 @@ rm ./docker-compose* sudo apt-get install avahi-daemon -y # Start testserver provisioning -sudo "$(readlink -f $(dirname ${BASH_SOURCE[0]}))/../shared/testserver/docker_testserver.sh" +sudo "$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")/../shared/testserver/docker_testserver.sh" diff --git a/coin/provisioning/common/linux/enable_test_stacktraces.sh b/coin/provisioning/common/linux/enable_test_stacktraces.sh new file mode 100755 index 00000000..7b5871db --- /dev/null +++ b/coin/provisioning/common/linux/enable_test_stacktraces.sh @@ -0,0 +1,35 @@ +#!/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 + +### Enable automatic stacktraces in case of fatal errors in QTest. +# This requires that gdb can be found in PATH, and that no +# kernel security settings like yama.ptrace_scope prevent it. + + +PROVISIONING_DIR="$(dirname "$0")/../.." +# shellcheck source=../unix/common.sourced.sh +source "$PROVISIONING_DIR/common/unix/common.sourced.sh" + + +f="/etc/sysctl.d/10-ptrace.conf" +if [ -f $f ] +then + echo "Modifying $f ..." + sudo sed -i '/^kernel\.yama\.ptrace_scope *= *[1-9]$/s/[1-9]$/0/' $f + # Reload the modified setting, so that we can verify it right afterwards. + sudo sysctl -p $f +fi + +# Verify that yama.ptrace_scope = 0, if it's supported by the kernel. +ptrace_scope_value=$(sudo sysctl kernel.yama.ptrace_scope 2>/dev/null | sed -E 's/.*([0-9])$/\1/') +if [ -n "$ptrace_scope_value" ] && [ "$ptrace_scope_value" != 0 ] +then + fatal "kernel.yama.ptrace_scope = $ptrace_scope_value \ + which means that QTest automatic stacktraces will not work" +else + echo kernel.yama.ptrace_scope = "$ptrace_scope_value" +fi + + +$CMD_PKG_INSTALL gdb diff --git a/coin/provisioning/common/linux/fbx_linux.sh b/coin/provisioning/common/linux/fbx_linux.sh index 6241ec5c..0c1176d1 100755 --- a/coin/provisioning/common/linux/fbx_linux.sh +++ b/coin/provisioning/common/linux/fbx_linux.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 installs FBX SDK @@ -49,7 +12,7 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" set -e tarballName="fbx20161_2_fbxsdk_linux.tar.gz" targetFolder="/opt/fbx" -cachedUrl="http://ci-files01-hki.intra.qt.io/input/fbx/$tarballName" +cachedUrl="http://ci-files01-hki.ci.qt.io/input/fbx/$tarballName" officialUrl="http://download.autodesk.com/us/fbx_release_older/2016.1.2/$tarballName" sha1="b0a08778de025e2c6e90d6fbdb6531f74a3da605" tmpFolder="/tmp" 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 00000000..4c8b68f9 --- /dev/null +++ b/coin/provisioning/common/linux/fix-bwrap-apparmor.sh @@ -0,0 +1,21 @@ +#!/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 <abi/4.0>, +include <tunables/global> + +profile bwrap /usr/bin/bwrap flags=(unconfined) { + userns, + + # Site-specific additions and overrides. See local/README for details. + include if exists <local/bwrap> +} +EOF + diff --git a/coin/provisioning/common/linux/gcc.sh b/coin/provisioning/common/linux/gcc.sh index 10a7ffa7..243b9ff6 100755 --- a/coin/provisioning/common/linux/gcc.sh +++ b/coin/provisioning/common/linux/gcc.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 builds GCC from sources @@ -56,20 +19,20 @@ function InstallGCC() { tmpFolder="/tmp" - prebuiltGCC="http://ci-files01-hki.intra.qt.io/input/gcc/gcc-$version-prebuilt.tar.gz" + prebuiltGCC="http://ci-files01-hki.ci.qt.io/input/gcc/gcc-$version-prebuilt.tar.gz" prebuiltTarget="$tmpFolder/gcc-$version-prebuilt.tar.gz" installPrefix="/usr/local" suffixVersion=$(echo "$version" | cut -d "." -f1,2) sourceFile="gcc-$version.tar.xz" - cachedUrl="http://ci-files01-hki.intra.qt.io/input/gcc/$sourceFile" + cachedUrl="http://ci-files01-hki.ci.qt.io/input/gcc/$sourceFile" officialUrl="https://gcc.gnu.org/pub/gcc/releases/gcc-$version/gcc-$version.tar.xz" targetFile="$tmpFolder/$sourceFile" buildFolder="$HOME/gcc_build" echo "Fetching prebuilt GCC." - curl --fail -L --retry 5 --retry-delay 5 -o "$prebuiltTarget" "$prebuiltGCC" || ( + DownloadURL "$prebuiltGCC" "" "$prebuiltSHA1" "$prebuiltTarget" || ( echo "Fetching prebuilt GCC failed. Building from sources." DownloadURL "$cachedUrl" "$officialUrl" "$sourcesSHA1" "$targetFile" ) diff --git a/coin/provisioning/common/linux/install-cpdb.sh b/coin/provisioning/common/linux/install-cpdb.sh new file mode 100755 index 00000000..3a7ae3b9 --- /dev/null +++ b/coin/provisioning/common/linux/install-cpdb.sh @@ -0,0 +1,26 @@ +#!/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 cpdb from sources. +# Requires GCC and Perl to be in PATH. +# The following dependencies should be pre-installed: +# make, autoconf, autopoint, libglib2.0-dev, libdbus-1-dev, libtool +set -ex + +repName="cpdb-libs" +gitUrl="https://github.com/openprinting/$repName.git" +tmpdir="/tmp" +repDir="$tmpdir/$repName" +prefix="/usr" +rm -rf "$repDir" +cd "$tmpdir" +git clone -q "$gitUrl" +cd "$repDir" +# cpdb-libs v2.0b4 with build bug fixed +git checkout -q ce848f1571a82ec03881fce127ff28bec8da239e +./autogen.sh > /dev/null +./configure --prefix="$prefix" > /dev/null +make "-j$(nproc)" > /dev/null && sudo make install > /dev/null +sudo ldconfig +rm -rf "$repDir" diff --git a/coin/provisioning/common/linux/install-flite.sh b/coin/provisioning/common/linux/install-flite.sh new file mode 100755 index 00000000..2f89e94e --- /dev/null +++ b/coin/provisioning/common/linux/install-flite.sh @@ -0,0 +1,26 @@ +#!/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 + +# This script installs flite from sources. +# Requires make, GCC and git to be in PATH. +set -ex + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +repName="flite" +gitUrl="https://github.com/festvox/$repName.git" +tmpdir="/tmp" +repDir="$tmpdir/$repName" +prefix="/usr" +rm -rf "$repDir" +cd "$tmpdir" +git clone -q "$gitUrl" +cd "$repDir" +git checkout -q v2.2 +./configure --with-pic --enable-shared --prefix="$prefix" > /dev/null +make "-j$(nproc)" > /dev/null && sudo make install > /dev/null +rm -rf "$repDir" diff --git a/coin/provisioning/common/linux/install-git.sh b/coin/provisioning/common/linux/install-git.sh new file mode 100755 index 00000000..9e2804db --- /dev/null +++ b/coin/provisioning/common/linux/install-git.sh @@ -0,0 +1,33 @@ +#!/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 + +# This script install git from sources. +# Requires GCC and Perl to be in PATH. +set -ex + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +version="2.36.1" +officialUrl="https://github.com/git/git/archive/refs/tags/v$version.tar.gz" +cachedUrl="http://ci-files01-hki.ci.qt.io/input/git/git-$version.tar.gz" +targetFile="/tmp/git-$version.tar.gz" +sha="a17c11da2968f280a13832d97f48e9039edac354" +DownloadURL "$cachedUrl" "$officialUrl" "$sha" "$targetFile" +sourceDir="/tmp/git-$version-source" +mkdir "$sourceDir" +tar -xzf "$targetFile" -C "$sourceDir" + +cd "$sourceDir/git-$version" +installDir="$HOME/git" +make configure +./configure --prefix="$installDir" +make all +sudo make install + +SetEnvVar "PATH" "\"$installDir/bin:\$PATH\"" + +"$installDir/bin/git" --version diff --git a/coin/provisioning/common/linux/install-nodejs.sh b/coin/provisioning/common/linux/install-nodejs.sh new file mode 100755 index 00000000..95a8a0e5 --- /dev/null +++ b/coin/provisioning/common/linux/install-nodejs.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 node.js 18.16.0 +version="18.16.0" + +uname_m="$(uname -m)" +case "$uname_m" in + x86_64|amd64) + sha256="44d93d9b4627fe5ae343012d855491d62c7381b236c347f7666a7ad070f26548" + pkgname="node-v$version-linux-x64.tar.xz" + dirname="node-v$version-linux-x64" + ;; + arm64|aarch64) + sha256="c81dfa0bada232cb4583c44d171ea207934f7356f85f9184b32d0dde69e2e0ea" + pkgname="node-v$version-linux-arm64.tar.xz" + dirname="node-v$version-linux-arm64" + ;; + *) fatal "Unknown architecture in uname: $uname_m" 43 ;; +esac + +internalUrl="http://ci-files01-hki.ci.qt.io/input/nodejs/$pkgname" +externalUrl="https://nodejs.org/dist/v$version/$pkgname" + +targetFile="$HOME/$pkgname" +DownloadURL "$internalUrl" "$externalUrl" "$sha256" "$targetFile" +echo "Installing nodejs" +tar -xJf "$targetFile" -C "$HOME" +rm "$targetFile" + +installPrefix="/opt/$dirname" +sudo mv "$HOME/$dirname" "$installPrefix" + +SetEnvVar "PATH" "$installPrefix/bin:\$PATH" + +echo "nodejs = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/install-vcpkg-ports-android.sh b/coin/provisioning/common/linux/install-vcpkg-ports-android.sh new file mode 100755 index 00000000..4733e9aa --- /dev/null +++ b/coin/provisioning/common/linux/install-vcpkg-ports-android.sh @@ -0,0 +1,24 @@ +#!/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 android ports" + +pushd "${BASH_SOURCE%/*}/vcpkg" || exit +cp "${BASH_SOURCE%/*}/../shared/vcpkg-configuration.json" . + +"$VCPKG_ROOT/vcpkg" install --triplet x86-android-qt --x-install-root x86-android-qt-tmp --debug +"$VCPKG_ROOT/vcpkg" install --triplet x86_64-android-qt --x-install-root x86_64-android-qt-tmp --debug + +mkdir -p "$VCPKG_ROOT/installed" +cp -R x86-android-qt-tmp/* "$VCPKG_ROOT/installed/" +cp -R x86_64-android-qt-tmp/* "$VCPKG_ROOT/installed/" + +versions=$(jq -r '.overrides[] | "vcpkg \(.name) for android = \(.version)"' vcpkg.json) +versions="${versions//vcpkg/\\nvcpkg}" +echo "$versions" >> ~/versions.txt + +rm -rf x86-android-qt-tmp +rm -rf x86_64-android-qt-tmp + +popd || exit diff --git a/coin/provisioning/common/linux/install-vcpkg-ports.sh b/coin/provisioning/common/linux/install-vcpkg-ports.sh new file mode 100755 index 00000000..90257841 --- /dev/null +++ b/coin/provisioning/common/linux/install-vcpkg-ports.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 + +echo "Installing vcpkg ports" + +pushd "${BASH_SOURCE%/*}/vcpkg" || exit +cp "${BASH_SOURCE%/*}/../shared/vcpkg-configuration.json" . + +"$VCPKG_ROOT/vcpkg" install --triplet x64-linux-qt --x-install-root x64-linux-qt-tmp --debug + +mkdir -p "$VCPKG_ROOT/installed" +cp -R x64-linux-qt-tmp/* "$VCPKG_ROOT/installed/" + +versions=$(jq -r '.overrides[] | "vcpkg \(.name) = \(.version)"' vcpkg.json) +versions="${versions//vcpkg/\\nvcpkg}" +echo "$versions" >> ~/versions.txt + +rm -rf x64-linux-qt-tmp + +popd || exit diff --git a/coin/provisioning/common/linux/install-vcpkg.sh b/coin/provisioning/common/linux/install-vcpkg.sh new file mode 100755 index 00000000..80917beb --- /dev/null +++ b/coin/provisioning/common/linux/install-vcpkg.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 + +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh +source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" + +vcpkgVersion=$(grep 'vcpkg_version=' "${BASH_SOURCE%/*}/../shared/vcpkg_version.txt" | cut -d '=' -f 2) + +vcpkgRoot="$HOME/vcpkg-$vcpkgVersion" +vcpkgRepo=$(head -n 1 "${BASH_SOURCE%/*}/../shared/vcpkg_registry_mirror.txt") + +echo "Cloning the vcpkg repo" +git clone "$vcpkgRepo" "$vcpkgRoot" +git -C "$vcpkgRoot" checkout "tags/$vcpkgVersion" + +vcpkgToolReleaseTag=$(grep 'vcpkg_tool_release_tag=' "${BASH_SOURCE%/*}/../shared/vcpkg_tool_release_tag.txt" | cut -d '=' -f 2) +nonDottedReleaseTag=${vcpkgVersion//-/} + +vcpkgToolOfficialUrl="https://github.com/microsoft/vcpkg-tool/archive/refs/tags/$vcpkgToolReleaseTag.tar.gz" +vcpkgToolCacheUrl="http://ci-files01-hki.ci.qt.io/input/vcpkg/vcpkg-tool-$nonDottedReleaseTag.tar.gz" +vcpkgToolSHA1="c6029714fca0304779f10c9c1cbe4b061a2fd945" +vcpkgToolSourceFolder="$HOME/vcpkg-tool-$vcpkgToolReleaseTag" +vcpkgToolBuildFolder="$HOME/vcpkg-tool-$vcpkgToolReleaseTag/build" + +InstallFromCompressedFileFromURL "$vcpkgToolCacheUrl" "$vcpkgToolOfficialUrl" "$vcpkgToolSHA1" "$HOME" "" +cmake -S "$vcpkgToolSourceFolder" -B "$vcpkgToolBuildFolder" -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=OFF +cmake --build "$vcpkgToolBuildFolder" --parallel + +cp "$vcpkgToolBuildFolder/vcpkg" "$vcpkgRoot/" +rm -rf "$vcpkgToolSourceFolder" + +if [ ! -f "$vcpkgRoot/vcpkg" ] +then + echo "Can't find $vcpkgRoot/vcpkg." + exit 1 +fi + +chmod 755 "$vcpkgRoot/vcpkg" +touch "$vcpkgRoot/vcpkg.disable-metrics" + +# Setting VCPKG_ROOT using Set-EnvVar makes the variable only +# available during build time. In order to make it available during the +# provisioning, we need to directly set it via $env:VCPKG_ROOT as well. +SetEnvVar "VCPKG_ROOT" "$vcpkgRoot" +export VCPKG_ROOT="$vcpkgRoot" + +# Set a source for vcpkg Binary and Asset Cache +# The `coin/provisioning/common/linux/mount-vcpkg-cache-drive.sh` script is +# mounting the SMB share located in `vcpkg-server.ci.qt.io/vcpkg` to +# $HOME/vcpkg-cache/ +export VCPKG_BINARY_SOURCES="files,$HOME/vcpkg-cache/binaries,readwrite" +export X_VCPKG_ASSET_SOURCES="x-azurl,file:///$HOME/vcpkg-cache/assets,,readwrite" + +echo "vcpkg = $vcpkgVersion" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/install_dwz.sh b/coin/provisioning/common/linux/install_dwz.sh index 8c035529..2d8af4ff 100755 --- a/coin/provisioning/common/linux/install_dwz.sh +++ b/coin/provisioning/common/linux/install_dwz.sh @@ -1,44 +1,7 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## Copyright (C) 2020 Konstantin Tokarev <annulen@yandex.ru> -## 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$ -## -############################################################################# +# Copyright (C) 2018 The Qt Company Ltd. +# Copyright (C) 2020 Konstantin Tokarev <annulen@yandex.ru> +# 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" @@ -49,7 +12,7 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" version="0.13" sha1="21e6d5878bb84ac6c9ad07b00ed248d8c547bc7d" -internalUrl="http://ci-files01-hki.intra.qt.io/input/centos/dwz-$version.tar.xz" +internalUrl="http://ci-files01-hki.ci.qt.io/input/centos/dwz-$version.tar.xz" externalUrl="https://www.sourceware.org/ftp/dwz/releases/dwz-$version.tar.xz" targetDir="$HOME/dwz" diff --git a/coin/provisioning/common/linux/integrity.sh b/coin/provisioning/common/linux/integrity.sh index 650dbb37..e0d95681 100755 --- a/coin/provisioning/common/linux/integrity.sh +++ b/coin/provisioning/common/linux/integrity.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 needed toolchains for INTEGRITY @@ -48,9 +11,9 @@ source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -urlToolchainEs7="http://ci-files01-hki.intra.qt.io/input/integrity/integrity_toolchain_es7_25102021.zip" -urlLibeglmegapack="http://ci-files01-hki.intra.qt.io/input/integrity/integrity_libeglmegapack.zip" -SHA1_toolchainEs7="13f634213187d94f70d184c6af38eb38f0bf44f0" +urlToolchainEs7="http://ci-files01-hki.ci.qt.io/input/integrity/integrity_toolchain_es7_05102022.zip" +urlLibeglmegapack="http://ci-files01-hki.ci.qt.io/input/integrity/integrity_libeglmegapack.zip" +SHA1_toolchainEs7="a95e11996d89218ac93493484e483d169976f565" SHA1_Libeglmegapack="7f8ca64132eaea66202ea8db7f71f3300aab0777" targetFolder="$HOME" appPrefix="" @@ -63,7 +26,7 @@ InstallFromCompressedFileFromURL "$urlToolchainEs7" "$urlToolchainEs7" "$SHA1_to echo "Install Integrity toolchain addons" DownloadURL "$urlLibeglmegapack" "$urlLibeglmegapack" "$SHA1_Libeglmegapack" "/tmp/integrity_libeglmegapack.zip" unzip "/tmp/integrity_libeglmegapack.zip" -d "/tmp" -mv /tmp/toolchain/* $targetFolder/toolchain -mv $targetFolder/toolchain $targetFolder/integrity_toolchain -cp $toolchain_file "$targetFolder/integrity_toolchain/toolchain.cmake" +mv /tmp/toolchain/* "$targetFolder/toolchain" +mv "$targetFolder/toolchain" "$targetFolder/integrity_toolchain" +cp "$toolchain_file" "$targetFolder/integrity_toolchain/toolchain.cmake" sudo rm -fr /tmp/toolchain diff --git a/coin/provisioning/common/linux/mimersql.sh b/coin/provisioning/common/linux/mimersql.sh new file mode 100755 index 00000000..957ad492 --- /dev/null +++ b/coin/provisioning/common/linux/mimersql.sh @@ -0,0 +1,42 @@ +#!/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 -e + +SSL_VER=$1 +PACK_TYPE=$2 +PROVISIONING_DIR="$(dirname "$0")/../../" +# shellcheck source=../unix/common.sourced.sh +source "${BASH_SOURCE%/*}/../unix/common.sourced.sh" +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" + + +localRepo=http://ci-files01-hki.ci.qt.io/input/docker +upstreamRepo=http://install.mimer.com/qt +if [ "$SSL_VER" = "openssl-3" ]; then + if [ "$PACK_TYPE" = "rpm" ]; then + packageFile=mimersqlsrv-11.0.x86_64-openssl3.rpm + sha=5f21d440a12cddcc786ddff3a136bef821f1bf64 + else + packageFile=mimersqlsrv_11.0_amd64-openssl3.deb + sha=3239b593724c564862d3bbfb70fed16909a93959 + fi +else + if [ "$PACK_TYPE" = "rpm" ]; then + packageFile=mimersqlsrv-11.0.x86_64-openssl1.rpm + sha=34533347424ba540b36d0a6ae2f416b901d8bafb + else + packageFile=mimersqlsrv_11.0_amd64-openssl1.deb + sha=f4ac939a190ef048150b06cecc7a392386b6e132 + fi +fi +DownloadURL $localRepo/$packageFile $upstreamRepo/$packageFile $sha /tmp/$packageFile + +if [ "$PACK_TYPE" = "rpm" ]; then + sudo rpm -U /tmp/$packageFile +else + sudo apt-get -y install /tmp/$packageFile +fi +rm -f /tmp/$packageFile diff --git a/coin/provisioning/common/linux/mount-vcpkg-cache-drive.sh b/coin/provisioning/common/linux/mount-vcpkg-cache-drive.sh new file mode 100755 index 00000000..6a3a5211 --- /dev/null +++ b/coin/provisioning/common/linux/mount-vcpkg-cache-drive.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 + +set -e + +targetDir="$HOME/vcpkg-cache" + +# Specify the path to the credential file +credentialsFile="$HOME/samba_credentials" + +sudo mkdir -p "$targetDir" + +# Mount the SMB share +# Check if the mount was successful +if sudo mount -t cifs //vcpkg-server.ci.qt.io/vcpkg "$targetDir" -o credentials="$credentialsFile",uid="$(id -u)",gid="$(id -g)" +then + echo "SMB share mounted successfully!" +else + echo "Failed to mount SMB share." +fi diff --git a/coin/provisioning/common/linux/qnx_710.sh b/coin/provisioning/common/linux/qnx_710.sh index ccce51f0..41d2d103 100755 --- a/coin/provisioning/common/linux/qnx_710.sh +++ b/coin/provisioning/common/linux/qnx_710.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 QNX 7. @@ -55,14 +18,14 @@ DownloadAndExtract () { folder=$4 DownloadURL "$url" "$url" "$sha" "$file" - sudo tar -C $folder -Jxf $file + sudo tar -C "$folder" -Jxf "$file" - rm -rf $file + rm -rf "$file" } -aarch64le_toolchain="${BASH_SOURCE%/*}/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake" -armv7le_toolchain="${BASH_SOURCE%/*}/cmake_toolchain_files/qnx-toolchain-armv7le.cmake" -x8664_toolchain="${BASH_SOURCE%/*}/cmake_toolchain_files/qnx-toolchain-x8664.cmake" +aarch64le_toolchain="${BASH_SOURCE%/*}/../shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake" +armv7le_toolchain="${BASH_SOURCE%/*}/../shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake" +x8664_toolchain="${BASH_SOURCE%/*}/../shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake" QNX_qemu_bld_files_dir="${BASH_SOURCE%/*}/qnx_qemu_build_files/" targetFolder="/opt/" @@ -70,33 +33,50 @@ folderName="qnx710" targetPath="$targetFolder$folderName" qemuTargetPath="$HOME/QNX" qemuIpAddress="172.31.1.10" -qemuNetwork="172.31.1.1" +export qemuNetwork="172.31.1.1" qemuSSHuser="root" qemuSSHurl="$qemuSSHuser@$qemuIpAddress" qemuLDpath="/proc/boot:/system/lib:/system/lib/dll:/home/qt/work/install/target/lib" if [ ! -d "$targetFolder" ]; then - mkdir -p $targetFolder + mkdir -p "$targetFolder" fi # QNX SDP -sourceFile="http://ci-files01-hki.intra.qt.io/input/qnx/qnx710-20211207-linux.tar.xz" +sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx710-windows-linux-20240417.tar.xz" targetFile="qnx710.tar.xz" -sha1="03f87bad1c5522d6aefcc74dd5ccacd43240ded3" +sha1="cd2d35004fb2798089e29d9e1226691426632da0" +DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$targetFolder" + +sudo cp "$aarch64le_toolchain" "$targetPath" +sudo cp "$armv7le_toolchain" "$targetPath" +sudo cp "$x8664_toolchain" "$targetPath" +cp -R "$QNX_qemu_bld_files_dir" "$qemuTargetPath" +# fc-match tool is missing from QNX SDP and tst_qfont requires it to work corretly +# Download code-only package from https://www.iana.org/time-zones and follow README +# to build tools for QNX x86_64. If need to build new tool create new qnx_qemu_utils +# package which contains it and update required info below +sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx_qemu_utils_20211208.tar.xz" +targetFile="qnx_qemu_utils.tar.xz" +targetFolder="$qemuTargetPath/local/misc_files" +sha1="7653f5d50f61f1591d7785c3ec261228ecc9dd22" + +mkdir -p "$targetFolder" + DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$targetFolder" -sudo cp $aarch64le_toolchain $targetPath -sudo cp $armv7le_toolchain $targetPath -sudo cp $x8664_toolchain $targetPath -cp -R $QNX_qemu_bld_files_dir $qemuTargetPath +# Add ssl certificates. Expects Ubuntu 20.04 LTS with ca-certificates package installed +cp -R /usr/share/ca-certificates "$targetFolder" +mkdir -p "$targetFolder/etc/ssl/certs" +cp -PR /etc/ssl/certs/* "$targetFolder/etc/ssl/certs" sudo chown -R qt:users "$targetPath" # Verify that we have last files in tars -if [ ! -f $targetPath/qnxsdp-env.sh ] || [ ! -f $targetPath/qnx-toolchain-x8664.cmake ] +if [ ! -f "$targetPath/qnxsdp-env.sh" ] || [ ! -f "$targetPath/qnx-toolchain-x8664.cmake" ] then echo "QNX toolchain installation failed!" - exit -1 + exit 1 fi # Set env variables diff --git a/coin/provisioning/common/linux/qnx_800.sh b/coin/provisioning/common/linux/qnx_800.sh new file mode 100755 index 00000000..52545d41 --- /dev/null +++ b/coin/provisioning/common/linux/qnx_800.sh @@ -0,0 +1,85 @@ +#!/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 QNX 8. + +set -ex + +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +DownloadAndExtract () { + url=$1 + sha=$2 + file=$3 + folder=$4 + + DownloadURL "$url" "$url" "$sha" "$file" + sudo tar -C "$folder" -Jxf "$file" + + rm -rf "$file" +} + +aarch64le_toolchain="${BASH_SOURCE%/*}/../shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake" +armv7le_toolchain="${BASH_SOURCE%/*}/../shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake" +x8664_toolchain="${BASH_SOURCE%/*}/../shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake" +QNX_qemu_bld_files_dir="${BASH_SOURCE%/*}/qnx_qemu_build_files/" + +targetFolder="/opt/" +folderName="qnx800" +targetPath="$targetFolder$folderName" +qemuTargetPath="$HOME/QNX" +qemuIpAddress="172.31.1.10" +export qemuNetwork="172.31.1.1" +qemuSSHuser="root" +qemuSSHurl="$qemuSSHuser@$qemuIpAddress" +qemuLDpath="/proc/boot:/system/lib:/system/lib/dll:/home/qt/work/install/target/lib" + +if [ ! -d "$targetFolder" ]; then + mkdir -p "$targetFolder" +fi + +# QNX SDP +sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx800-linux-20240510.tar.xz" +targetFile="qnx800.tar.xz" +sha1="93245a5bc11b88563328f0763573942fd25b5e18" +DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$targetFolder" + +sudo cp "$aarch64le_toolchain" "$targetPath" +sudo cp "$armv7le_toolchain" "$targetPath" +sudo cp "$x8664_toolchain" "$targetPath" +cp -R "$QNX_qemu_bld_files_dir" "$qemuTargetPath" +# fc-match tool is missing from QNX SDP and tst_qfont requires it to work corretly +# Download code-only package from https://www.iana.org/time-zones and follow README +# to build tools for QNX x86_64. If need to build new tool create new qnx_qemu_utils +# package which contains it and update required info below +sourceFile="http://ci-files01-hki.ci.qt.io/input/qnx/qnx_qemu_utils_20211208.tar.xz" +targetFile="qnx_qemu_utils.tar.xz" +targetFolder="$qemuTargetPath/local/misc_files" +sha1="7653f5d50f61f1591d7785c3ec261228ecc9dd22" + +mkdir -p "$targetFolder" + +DownloadAndExtract "$sourceFile" "$sha1" "$targetFile" "$targetFolder" + +# Add ssl certificates. Expects Ubuntu 22.04 LTS with ca-certificates package installed +cp -R /usr/share/ca-certificates "$targetFolder" +mkdir -p "$targetFolder/etc/ssl/certs" +cp -PR /etc/ssl/certs/* "$targetFolder/etc/ssl/certs" + +sudo chown -R qt:users "$targetPath" + +# Verify that we have last files in tars +if [ ! -f "$targetPath/qnxsdp-env.sh" ] || [ ! -f "$targetPath/qnx-toolchain-x8664.cmake" ] +then + echo "QNX toolchain installation failed!" + exit 1 +fi + +# Set env variables +SetEnvVar "QNX_800" "$targetPath" + +echo "QNX SDP = 8.0.0" >> ~/versions.txt diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/misc_files/etc/hosts b/coin/provisioning/common/linux/qnx_qemu_build_files/local/misc_files/etc/hosts new file mode 100644 index 00000000..58b8d5a1 --- /dev/null +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/misc_files/etc/hosts @@ -0,0 +1,19 @@ +# Need to add all testserver names statically +# as current Docker uses Multicast DNS (mDNS) (avahi) +# Which does not work with QNX qemu +172.31.1.1 apache2 apache2.test-net.qt.local +172.31.1.1 squid squid.test-net.qt.local +172.31.1.1 vsftpd vsftpd.test-net.qt.local +172.31.1.1 ftp-proxy ftp-proxy.test-net.qt.local +172.31.1.1 danted danted.test-net.qt.local +172.31.1.1 cyrus cyrus.test-net.qt.local +172.31.1.1 echo echo.test-net.qt.local +172.31.1.1 iptables iptables.test-net.qt.local + +# For network test server which is still used on some test +# like networkselftest for local dns resolution +172.31.1.1 qt-test-server + +# QtCoap testservers +172.31.1.1 californium californium.test-net.qt.local +172.31.1.1 freecoap freecoap.test-net.qt.local diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/misc_files/etc/resolv.conf b/coin/provisioning/common/linux/qnx_qemu_build_files/local/misc_files/etc/resolv.conf new file mode 100644 index 00000000..6765c11f --- /dev/null +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/misc_files/etc/resolv.conf @@ -0,0 +1,2 @@ +search test-net.qt.local +nameserver 172.31.1.1 diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/opt_scripts/opt_nfs_qt b/coin/provisioning/common/linux/qnx_qemu_build_files/local/opt_scripts/opt_nfs_qt index 53063373..13db322b 100755 --- a/coin/provisioning/common/linux/qnx_qemu_build_files/local/opt_scripts/opt_nfs_qt +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/opt_scripts/opt_nfs_qt @@ -25,7 +25,7 @@ function configure() cat >output/option_files/post_start.opt_nfs <<EOF echo "---> Starting NFS" -STARTU_P(fs_nfs3_t,__FS_NFS3_ID__) fs-nfs3 172.31.1.1:$OPT_NFS_QT $OPT_NFS_QT +STARTU_P(fs_nfs3_t,__FS_NFS3_ID__) fs-nfs3 -t 172.31.1.1:$OPT_NFS_QT $OPT_NFS_QT EOF fi diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/options b/coin/provisioning/common/linux/qnx_qemu_build_files/local/options index a124af1e..bf1a413e 100644 --- a/coin/provisioning/common/linux/qnx_qemu_build_files/local/options +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/options @@ -10,7 +10,7 @@ OPT_CRYPTODEV='no' DEF_OPT_CRYPTODEV='no' OPT_DATA_INODES='3000' DEF_OPT_DATA_INODES='3000' -OPT_DATA_SIZE='60' +OPT_DATA_SIZE='512' DEF_OPT_DATA_SIZE='60' OPT_EXTRA_DIRS='none' DEF_OPT_EXTRA_DIRS='none' diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/data_files.custom b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/data_files.custom index c36fb391..cba74f1f 100644 --- a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/data_files.custom +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/data_files.custom @@ -3,7 +3,7 @@ home/root/.ssh/environment = { TERM=qansi -PATH=__IFS_PATH__:/system/xbin +PATH=__IFS_PATH__:/system/xbin:. #LD_LIBRARY_PATH=__PROC_LIB__:/home/qt/work/install/target/lib #QSG_RHI_BACKEND=software #QT_QPA_PLATFORM=offscreen @@ -11,3 +11,15 @@ PATH=__IFS_PATH__:/system/xbin [uid=0 gid=0 dperms=755 type=dir] var/share var/share/zoneinfo=usr/share/zoneinfo + +[uid=0 gid=0 dperms=755 type=dir] var/share/fonts +var/etc/fontconfig/fonts.conf=etc/fontconfig/fonts.conf +var/share/fonts=usr/share/fonts + +var/etc/hosts=local/misc_files/etc/hosts +var/etc/resolv.conf=local/misc_files/etc/resolv.conf +var/etc/nsswitch.conf=etc/nsswitch.conf + +[uid=0 gid=0 dperms=755 type=dir] var/etc/ssl/certs +var/share/ca-certificates=local/misc_files/ca-certificates +var/etc/ssl/certs=local/misc_files/etc/ssl/certs diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/ifs_env.custom b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/ifs_env.custom index 5b15a26c..253e61c6 100644 --- a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/ifs_env.custom +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/ifs_env.custom @@ -6,3 +6,7 @@ HOME=/home/root TZ=Europe/Oslo procmgr_symlink /data/var/share /usr/share procmgr_symlink /data/var/share/zoneinfo/Europe/Oslo /data/var/etc/localtime + +# fontconfig +procmgr_symlink /data/var/etc/fontconfig/fonts.conf /etc/fontconfig/fonts.conf +procmgr_symlink /data/var/share/fonts /usr/share/fonts diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/post_start.custom b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/post_start.custom index 81899afb..5a260488 100644 --- a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/post_start.custom +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/post_start.custom @@ -12,3 +12,14 @@ # resource manager supports a -U option for switching to non-root. echo "---> Starting Filesystem event manager (fsevmgr)" STARTU_P(fsevmg_t,__FSEVMG_ID__) fsevmgr -d -F __DEVB_ID__ -N __DEVB_ID__ + +echo "---> Remove large fonts" +rm -rf /data/var/share/fonts/NotoSansCJK* +rm -rf /data/var/share/fonts/NotoSansMonoCJK* +echo "---> Create fontconfig cache" +fc-cache & + +# Add default route so QNX knows where to send +# requests for unknown network +echo "---> Add default route" +route add default 172.31.1.1 diff --git a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/system_files.custom b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/system_files.custom index ad13398b..37cbd96d 100644 --- a/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/system_files.custom +++ b/coin/provisioning/common/linux/qnx_qemu_build_files/local/snippets/system_files.custom @@ -19,10 +19,10 @@ lib/libicudata.so.67=usr/lib/libicudata.so.67 lib/libicui18n.so.67=usr/lib/libicui18n.so.67 lib/libGLESv2.so.1=usr/lib/libGLESv2.so.1 lib/libEGL.so.1=usr/lib/libEGL.so.1 -lib/libfontconfig.so.1=usr/lib/libfontconfig.so.1 lib/libz.so.2=usr/lib/libz.so.2 lib/libxml2.so.2=usr/lib/libxml2.so.2 -lib/libfreetype.so.1=usr/lib/libfreetype.so.1 +lib/libfreetype.so.24=usr/lib/libfreetype.so.24 +lib/libbz2.so.1=usr/lib/libbz2.so.1 lib/liblzma.so.5=usr/lib/liblzma.so.5 lib/libbacktrace.so.1=usr/lib/libbacktrace.so.1 lib/libm.so.3=lib/libm.so.3 @@ -44,3 +44,21 @@ lib/dll/img_codec_tif.so=lib/dll/img_codec_tif.so # for inotify xbin/fsevmgr=sbin/fsevmgr + +############################################## +### MM support +############################################## +lib/libstrm.so.1=usr/lib/libstrm.so.1 +lib/libcamapi.so.1=usr/lib/libcamapi.so.1 +lib/libmmrndclient.so.1=usr/lib/libmmrndclient.so.1 +lib/libscreen.so.1=usr/lib/libscreen.so.1 + +# for fontconfig +lib/libfontconfig.so.1=usr/lib/libfontconfig.so.1 +xbin/fc-cache=bin/fc-cache +xbin/fc-match=local/misc_files/fc-match + +# network +lib/libssl.so=usr/lib/libssl.so +xbin/nslookup=usr/bin/nslookup +xbin/curl=usr/bin/curl diff --git a/coin/provisioning/common/linux/remove-update_notifier.sh b/coin/provisioning/common/linux/remove-update_notifier.sh index 4ee32d61..383f242d 100755 --- a/coin/provisioning/common/linux/remove-update_notifier.sh +++ b/coin/provisioning/common/linux/remove-update_notifier.sh @@ -1,3 +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 -sudo apt -q -y remove update-notifier update-manager python3-distupgrade python3-update-manager ubuntu-release-upgrader-core update-manager-core +installPackages+=(update-notifier) + +if uname -a |grep -q "Ubuntu" ; then +installPackages+=(update-manager-core) +installPackages+=(update-manager) +installPackages+=(python3-distupgrade) +installPackages+=(python3-update-manager) +installPackages+=(ubuntu-release-upgrader-core) +fi + +sudo apt -q -y remove "${installPackages[@]}" diff --git a/coin/provisioning/common/linux/sccache.sh b/coin/provisioning/common/linux/sccache.sh index 4bf53a3b..5e4969b3 100755 --- a/coin/provisioning/common/linux/sccache.sh +++ b/coin/provisioning/common/linux/sccache.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 diff --git a/coin/provisioning/common/linux/set_ulimit.sh b/coin/provisioning/common/linux/set_ulimit.sh index 568f88af..e384fe32 100755 --- a/coin/provisioning/common/linux/set_ulimit.sh +++ b/coin/provisioning/common/linux/set_ulimit.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 will set ulimit size for open files # Linker for Qt Webengine builds needs to open a multiple files. Without this it will hit the limit. diff --git a/coin/provisioning/common/linux/squish-coco.sh b/coin/provisioning/common/linux/squish-coco.sh index e56e5306..eda200d8 100755 --- a/coin/provisioning/common/linux/squish-coco.sh +++ b/coin/provisioning/common/linux/squish-coco.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # This script installs Squish Coco @@ -52,7 +15,7 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" version="4.2.2" sha1="a44f0f039f3712c715eea63c4021d08bf17a44c6" package="SquishCocoSetup_${version}_Linux_x86_64.run" -url="http://ci-files01-hki.intra.qt.io/input/coco//$package" +url="http://ci-files01-hki.ci.qt.io/input/coco//$package" echo "Enable license for Coco" diff --git a/coin/provisioning/common/linux/ubuntu-version.sh b/coin/provisioning/common/linux/ubuntu-version.sh index 23f711f8..2d02bb22 100755 --- a/coin/provisioning/common/linux/ubuntu-version.sh +++ b/coin/provisioning/common/linux/ubuntu-version.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # This script needs to be called last during provisioning so that the software information will show up last in provision log. diff --git a/coin/provisioning/common/linux/vcpkg/vcpkg.json b/coin/provisioning/common/linux/vcpkg/vcpkg.json new file mode 100644 index 00000000..70cb16fb --- /dev/null +++ b/coin/provisioning/common/linux/vcpkg/vcpkg.json @@ -0,0 +1,12 @@ +{ + "overrides": [ + { + "name": "openssl", + "version": "3.0.7", + "port-version": 2 + } + ], + "dependencies": [ + "openssl" + ] +} diff --git a/coin/provisioning/common/linux/version.sh b/coin/provisioning/common/linux/version.sh index ea2cf73d..4e0443fe 100755 --- a/coin/provisioning/common/linux/version.sh +++ b/coin/provisioning/common/linux/version.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2016 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2016 The 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 print all installed software to provision log. # Script needs to be named so that it will be ran at last during provisioning diff --git a/coin/provisioning/common/linux/vx_works.sh b/coin/provisioning/common/linux/vx_works.sh new file mode 100755 index 00000000..ed0bef0c --- /dev/null +++ b/coin/provisioning/common/linux/vx_works.sh @@ -0,0 +1,51 @@ +#!/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 vxworks libs and toolchain. + +set -ex + +# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh +source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +VXWORKS_VER="23_09" +######### VXworks libs ######### +# Installs to /opt/vxworks +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_no_source_patched_$VXWORKS_VER.tar.gz" +AltUrl="" +sha1="35a457999b310a6128e3bd7de3103c2235063071" +targetFolder="/opt/" +InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" "" +SetEnvVar "VXWORKS_HOME" "/opt/vxworks" + +VXWORKS_BUILD_VER="20240326" +######### VXworks toolchain ######### +# Installs to /opt/fsl_imx6_2_0_6_2_VSB +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_vsb_${VXWORKS_BUILD_VER}_2.tar.gz" +AltUrl="" +sha1="415359ac124e11198a3911c9c4b923269d8da83a" +targetFolder="/opt/" +InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" "" +SetEnvVar "WIND_CC_SYSROOT" "/opt/fsl_imx6_2_0_6_2_VSB" + +######### VXworks VIP kernel ######### +# Installs to /opt/fsl_imx6_2_0_6_2_VIP_QEMU +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_vip_${VXWORKS_BUILD_VER}.tar.gz" +AltUrl="" +sha1="a6019012a8c7af760469959e2df89875f5ff4e9a" +targetFolder="/opt/" +InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" "" + +SetEnvVar "VXWORKS_SSH" "WindRiver@10.0.2.4" + +# Setup NFS exports that are needed by VxWorks qemu +sudo bash -c "echo '/home/qt/work 10.0.2.4/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000)' >> /etc/exports" +sudo bash -c "echo '/opt/fsl_imx6_2_0_6_2_VSB 10.0.2.4/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000)' >> /etc/exports" +sudo exportfs -a + +# Copy start script in place +cp "${BASH_SOURCE%/*}/../linux/vxworks_qemu_launcher.sh" "${HOME}" +SetEnvVar "VXWORKS_EMULATOR" "${HOME}/vxworks_qemu_launcher.sh" diff --git a/coin/provisioning/common/linux/vxworks_qemu_launcher.sh b/coin/provisioning/common/linux/vxworks_qemu_launcher.sh new file mode 100755 index 00000000..39a68676 --- /dev/null +++ b/coin/provisioning/common/linux/vxworks_qemu_launcher.sh @@ -0,0 +1,39 @@ +#!/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 + +# Setup bridge if not exist for VxWorks QEMU +if ! ip link show br0 >/dev/null 2>&1; then + sudo brctl addbr br0 + sudo brctl stp br0 off + sudo ifconfig br0 10.0.2.1 netmask 255.255.255.0 promisc up + sudo tunctl -u qt -t tap0 + sudo ifconfig tap0 promisc up + sudo brctl addif br0 tap0 +fi + +QEMU_LOG_PATH="/home/qt/work/vxworks_qemu_log.txt" +qemu-system-arm \ + -machine sabrelite \ + -smp 4 \ + -m 1G \ + -nographic \ + -monitor none \ + -serial null \ + -serial stdio \ + -kernel /opt/fsl_imx6_2_0_6_2_VIP_QEMU/default/uVxWorks \ + -dtb /opt/fsl_imx6_2_0_6_2_VIP_QEMU/default/imx6q-sabrelite.dtb \ + -append "enet(0,0)host:vxWorks h=10.0.2.1 g=10.0.2.1 e=10.0.2.4 u=target pw=vxTarget s=/romfs/startup_script_arm.txt" \ + -nic "tap,ifname=tap0,script=no" >"${QEMU_LOG_PATH}" 2>&1 & + +for _ in $(seq 30) +do + status=$(ssh -o BatchMode=yes -o HostKeyAlgorithms=+ssh-rsa -o ConnectTimeout=1 "${VXWORKS_SSH}" echo emulator up) + if [[ $status == *"emulator up"* ]] ; then + echo "VXWORKS QEMU SSH server up" + break + else + echo "Waiting VXWORKS QEMU SSH server" + sleep 1 + fi +done diff --git a/coin/provisioning/common/macos/InstallAppFromCompressedFileFromURL.sh b/coin/provisioning/common/macos/InstallAppFromCompressedFileFromURL.sh index 00c6d308..03454485 100755 --- a/coin/provisioning/common/macos/InstallAppFromCompressedFileFromURL.sh +++ b/coin/provisioning/common/macos/InstallAppFromCompressedFileFromURL.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 receives URLs to a compressed file. It then downloads it, # uncompresses it and installs it by default diff --git a/coin/provisioning/common/macos/InstallPKGFromURL.sh b/coin/provisioning/common/macos/InstallPKGFromURL.sh index eeeb450d..62ae9db5 100755 --- a/coin/provisioning/common/macos/InstallPKGFromURL.sh +++ b/coin/provisioning/common/macos/InstallPKGFromURL.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 @@ -48,7 +11,7 @@ function InstallPKGFromURL { targetDirectory=$4 echo "Creating temporary file" - package_basename=$(echo "$url" | sed 's|^.*/||') + package_basename="${url/*\//}" tmpdir=$(mktemp -d) targetFile="$tmpdir/$package_basename" echo "Downloading PKG from primary URL '$url'" diff --git a/coin/provisioning/common/macos/android.sh b/coin/provisioning/common/macos/android.sh new file mode 100755 index 00000000..b7dc953f --- /dev/null +++ b/coin/provisioning/common/macos/android.sh @@ -0,0 +1,78 @@ +#!/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 + +# 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=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../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" + +ndkVersionLatest="r26b" +ndkVersionDefault="$ndkVersionLatest" +sdkBuildToolsVersion="34.0.0" +# this is compile sdk version +sdkApiLevel="android-34" + +toolsSourceFile="$basePath/$toolsFile" + +function InstallNdk() { + + ndkVersion=$1 + + if [[ ! -d "${targetFolder}/android-ndk-${ndkVersion}" ]]; then + echo "Unzipping Android NDK $ndkVersion to '${targetFolder}'" + ndkSourceFile="$basePath/android-ndk-$ndkVersion-darwin*.zip" + sudo unzip -q "$ndkSourceFile" -d "$targetFolder" + fi + +} + +InstallNdk $ndkVersionDefault +InstallNdk $ndkVersionLatest + +echo "Unzipping Android Tools to '$sdkTargetFolder'" +sudo unzip -q "$toolsSourceFile" -d "$sdkTargetFolder" + +echo "Changing ownership of Android files." +sudo chown -R qt:wheel "$targetFolder" +sudo chmod -R 755 $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_DEFAULT" "$targetFolder/android-ndk-$ndkVersionDefault" +SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$targetFolder/android-ndk-$ndkVersionLatest" +SetEnvVar "ANDROID_NDK_HOST" "darwin-x86_64" +SetEnvVar "ANDROID_API_VERSION" "$sdkApiLevel" + +cat << EOT >>~/versions.txt +Android SDK tools = $toolsVersion +Android SDK Build Tools = $sdkBuildToolsVersion +Android SDK API level = $sdkApiLevel +Android NDK = $ndkVersionDefault +EOT diff --git a/coin/provisioning/common/macos/cmake.sh b/coin/provisioning/common/macos/cmake.sh index 416e9400..b9ff8dfb 100755 --- a/coin/provisioning/common/macos/cmake.sh +++ b/coin/provisioning/common/macos/cmake.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 installs CMake @@ -48,11 +11,11 @@ source "${BASH_SOURCE%/*}/InstallAppFromCompressedFileFromURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -majorminorversion="3.21" -version="3.21.1" -PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/cmake/cmake-$version-macos-universal.tar.gz" +majorminorversion="3.27.7" +version="3.27.7" +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="5845da632d0f073c7761df4e78efb4405e00ac5a" +SHA1="75153b6c7a418bc7120c6217d4698c7d245d00e0" appPrefix="cmake-$version-macos-universal" InstallAppFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$appPrefix" diff --git a/coin/provisioning/common/macos/disable-app-reopen.sh b/coin/provisioning/common/macos/disable-app-reopen.sh new file mode 100755 index 00000000..139f6d04 --- /dev/null +++ b/coin/provisioning/common/macos/disable-app-reopen.sh @@ -0,0 +1,12 @@ +#!/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 + +# Prevent applications from re-opening after re-boot. +# This is needed only with physical mac mini machines used in ci. + + +set -e + +sudo chown root ~/Library/Preferences/ByHost/com.apple.loginwindow* +sudo chmod 000 ~/Library/Preferences/ByHost/com.apple.loginwindow* diff --git a/coin/provisioning/common/macos/disable-notifications_and_warnings.sh b/coin/provisioning/common/macos/disable-notifications_and_warnings.sh index e189e098..13c0a480 100755 --- a/coin/provisioning/common/macos/disable-notifications_and_warnings.sh +++ b/coin/provisioning/common/macos/disable-notifications_and_warnings.sh @@ -1,4 +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 "Unload notificationcenterui.plist" launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist diff --git a/coin/provisioning/common/macos/disable_net_lso.sh b/coin/provisioning/common/macos/disable_net_lso.sh index 328ac308..7c51a486 100755 --- a/coin/provisioning/common/macos/disable_net_lso.sh +++ b/coin/provisioning/common/macos/disable_net_lso.sh @@ -1,45 +1,9 @@ #!/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 -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# - -echo """<?xml version=\"1.0\" encoding=\"UTF-8\"?> +sudo tee -a /Library/LaunchDaemons/net_tcp_tso_off.plist > /dev/null <<EOB +<?xml version=\"1.0\" encoding=\"UTF-8\"?> <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"> <plist version=\"1.0\"> <dict> @@ -67,4 +31,4 @@ echo """<?xml version=\"1.0\" encoding=\"UTF-8\"?> <true/> </dict> </plist> -""" | sudo tee -a /Library/LaunchDaemons/net_tcp_tso_off.plist +EOB diff --git a/coin/provisioning/common/macos/disable_spotlight.sh b/coin/provisioning/common/macos/disable_spotlight.sh index 915d7fd3..a404d3e7 100755 --- a/coin/provisioning/common/macos/disable_spotlight.sh +++ b/coin/provisioning/common/macos/disable_spotlight.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 diff --git a/coin/provisioning/common/macos/docker.sh b/coin/provisioning/common/macos/docker.sh new file mode 100755 index 00000000..7ae9cdd5 --- /dev/null +++ b/coin/provisioning/common/macos/docker.sh @@ -0,0 +1,37 @@ +#!/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 + +# shellcheck source=./../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" + +# This script will install Docker which is needed by RTA + +chip=$1 + +if [[ $chip == "amd64" ]]; then + sha="158eae1d2f81cc8a0754d2ea3af8c6e6e555f69b" +else + sha="6adf6cc8558af69296208b045187406a95b020bf" +fi + +echo "Installing Docker for $chip chip" +urlOccifical="https://desktop.docker.com/mac/main/${chip}/Docker.dmg?utm_source=docker" +urlCache="http://ci-files01-hki.ci.qt.io/input/mac/Docker_${chip}.dmg" + +DownloadURL "$urlCache" "$urlOccifical" "$sha" "/tmp/Docker_${chip}.dmg" + +sudo hdiutil attach "/tmp/Docker_${chip}.dmg" +sudo /Volumes/Docker/Docker.app/Contents/MacOS/install --accept-license --user qt +sudo hdiutil detach /Volumes/Docker + +# Add registry mirror for docker images +mkdir "$HOME/.docker" +sudo tee -a "$HOME/.docker/daemon.json" <<"EOF" +{ + "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, + "experimental": false, + "features": { "buildkit": true }, + "registry-mirrors": ["http://repo-clones.ci.qt.io:5000"] +} +EOF diff --git a/coin/provisioning/common/macos/enable_zsh_history_and_viminfo.sh b/coin/provisioning/common/macos/enable_zsh_history_and_viminfo.sh new file mode 100755 index 00000000..98daf16d --- /dev/null +++ b/coin/provisioning/common/macos/enable_zsh_history_and_viminfo.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Copyright (C) 2023 The Qt Company Ltd. + +if [ -f /Users/qt/.zsh_history ] +then + sudo chown qt:staff /Users/qt/.zsh_history +fi + +if [ -f /Users/qt/.viminfo ] +then + sudo chown qt:staff /Users/qt/.viminfo +fi diff --git a/coin/provisioning/common/macos/fbx_macos.sh b/coin/provisioning/common/macos/fbx_macos.sh index 020c49d8..62d643ee 100755 --- a/coin/provisioning/common/macos/fbx_macos.sh +++ b/coin/provisioning/common/macos/fbx_macos.sh @@ -1,42 +1,6 @@ #!/usr/bin/env bash -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # This script installs FBX SDK @@ -45,16 +9,16 @@ set -ex # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -version="2016.1.2" +#version="2016.1.2" fileName="fbx20161_2_fbxsdk_clang_mac.pkg_nospace.tgz" -cachedUrl="/net/ci-files01-hki.intra.qt.io/hdd/www/input/fbx/$fileName" +cachedUrl="/net/ci-files01-hki.ci.qt.io/hdd/www/input/fbx/$fileName" # officialUrl="http://download.autodesk.com/us/fbx_release_older/$version/fbx20161_2_fbxsdk_clang_mac.pkg.tgz" targetFolder="/tmp" echo "Extracting '$cachedUrl'" tar -xzf "$cachedUrl" -C "$targetFolder" -rm -rf "$targetFolder/$fileName" +rm -rf "${targetFolder:?}/${fileName}" echo "Copying preinstalled FBX SDK to Applications" sudo cp -r "$targetFolder/Autodesk" /Applications diff --git a/coin/provisioning/common/macos/fix_relative_dependencies.sh b/coin/provisioning/common/macos/fix_relative_dependencies.sh new file mode 100755 index 00000000..e67a00c4 --- /dev/null +++ b/coin/provisioning/common/macos/fix_relative_dependencies.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 + +set -e + +# realpath is not included to macOS <= 12. +# dir=$(realpath "$1") +dir=$(cd "$1" && pwd) + +dir_length=${#dir} +dylib_regex="^$dir/.*\.dylib$" + +find "$dir" -type f -name '*.dylib' | while read -r library_path; do + install_name=$(otool -D "$library_path" | sed -n '2p' | grep -E "$dylib_regex" ) + if [ -n "$install_name" ]; then + fixed_install_name="@rpath${install_name:dir_length}" + install_name_tool -id "$fixed_install_name" "$library_path" + fi + + otool -L "$library_path" | awk '/\t/ {print $1}' | grep -E "$dylib_regex" | while read -r dependency_path; do + fixed_dependency_path="@loader_path${dependency_path:dir_length}" + install_name_tool -change "$dependency_path" "$fixed_dependency_path" "$library_path" + done +done diff --git a/coin/provisioning/common/macos/homebrew.sh b/coin/provisioning/common/macos/homebrew.sh index 66463c44..4f3a93ba 100755 --- a/coin/provisioning/common/macos/homebrew.sh +++ b/coin/provisioning/common/macos/homebrew.sh @@ -1,4 +1,6 @@ -#!/bin/sh +#!/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 # Will install homebrew package manager for macOS. @@ -7,11 +9,11 @@ set -e -. "$(dirname "$0")"/../../common/unix/DownloadURL.sh +source "$(dirname "$0")"/../../common/unix/DownloadURL.sh DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/mac/homebrew-install.c744a716f9845988d01e6e238eee7117b8c366c9.rb \ + http://ci-files01-hki.ci.qt.io/input/mac/homebrew-install.c744a716f9845988d01e6e238eee7117b8c366c9.rb \ https://raw.githubusercontent.com/Homebrew/install/c744a716f9845988d01e6e238eee7117b8c366c9/install \ b9782cc0b550229de77b429b56ffce04157e60486ab9df00461ccf3dad565b0a \ /tmp/homebrew_install diff --git a/coin/provisioning/common/macos/homebrew_for_arm_mac.sh b/coin/provisioning/common/macos/homebrew_for_arm_mac.sh new file mode 100755 index 00000000..e84621ff --- /dev/null +++ b/coin/provisioning/common/macos/homebrew_for_arm_mac.sh @@ -0,0 +1,30 @@ +#!/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 + +# Will install homebrew package manager for macOS. +# WARNING: Requires commandlinetools + + +set -e + +. "$(dirname "$0")"/../unix/DownloadURL.sh +. "$(dirname "$0")"/../unix/SetEnvVar.sh + + +DownloadURL \ + http://ci-files01-hki.ci.qt.io/input/mac/homebrew/be699a568315f57b65519df576d7fc5840b8a5cc/install.sh \ + https://raw.githubusercontent.com/Homebrew/install/be699a568315f57b65519df576d7fc5840b8a5cc/install \ + f20e4a577f0cafbab5a44b4d239886d725b3b985 \ + /tmp/homebrew_install.sh + +DownloadURL "http://ci-files01-hki.ci.qt.io/input/semisecure/sign/pw" "http://ci-files01-hki.ci.qt.io/input/semisecure/sign/pw" "aae58d00d0a1b179a09f21cfc67f9d16fb95ff36" "/Users/qt/pw" +{ pw=$(cat "/Users/qt/pw"); } 2> /dev/null +sudo chmod 755 /tmp/homebrew_install.sh +{ (echo "$pw" | /tmp/homebrew_install.sh); } 2> /dev/null +rm -f "/Users/qt/pw" + +# No need to manually do `brew update`, the homebrew installer script does it. +### brew update + +SetEnvVar "PATH" "\$PATH:/opt/homebrew/bin" diff --git a/coin/provisioning/common/macos/increase_limits.sh b/coin/provisioning/common/macos/increase_limits.sh index 48abca21..58b20f49 100755 --- a/coin/provisioning/common/macos/increase_limits.sh +++ b/coin/provisioning/common/macos/increase_limits.sh @@ -1,43 +1,6 @@ -#!/bin/sh - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +#!/bin/bash +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # Increase the soft and hard RLIMIT_NOFILE and RLIMIT_NPROC limits. @@ -48,16 +11,16 @@ set -e PROVISIONING_DIR="$(dirname "$0")/../../" -. "$PROVISIONING_DIR"/common/unix/common.sourced.sh - +# shellcheck source=../unix/common.sourced.sh +source "$PROVISIONING_DIR"/common/unix/common.sourced.sh echo "Current limits are:" ulimit -a launchctl limit $CMD_INSTALL -m 644 -o root -g wheel \ - $PROVISIONING_DIR/common/macos/limit.maxfiles.plist \ - $PROVISIONING_DIR/common/macos/limit.maxproc.plist \ + "$PROVISIONING_DIR/common/macos/limit.maxfiles.plist" \ + "$PROVISIONING_DIR/common/macos/limit.maxproc.plist" \ /Library/LaunchDaemons/ # Activate the new limits immediately (not for the current session though) diff --git a/coin/provisioning/common/macos/install-commandlinetools.sh b/coin/provisioning/common/macos/install-commandlinetools.sh index 146da684..f74eaca0 100755 --- a/coin/provisioning/common/macos/install-commandlinetools.sh +++ b/coin/provisioning/common/macos/install-commandlinetools.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # shellcheck source=../unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" set -ex diff --git a/coin/provisioning/common/macos/install-git.sh b/coin/provisioning/common/macos/install-git.sh new file mode 100755 index 00000000..45ac2817 --- /dev/null +++ b/coin/provisioning/common/macos/install-git.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 git diff --git a/coin/provisioning/common/macos/install_xcode.sh b/coin/provisioning/common/macos/install_xcode.sh index f5124568..440f19b9 100755 --- a/coin/provisioning/common/macos/install_xcode.sh +++ b/coin/provisioning/common/macos/install_xcode.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # shellcheck source=./../unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" @@ -62,7 +25,7 @@ function InstallXCode() { cd /Applications/ && sudo tar -zxf "$sourceFile" elif [[ $sourceFile =~ "xip" ]]; then if [[ $sourceFile =~ "http" ]]; then - Download $sourceFile /Applications/Xcode_$version.xip + Download "$sourceFile" "/Applications/Xcode_$version.xip" cd /Applications/ && xip -x "Xcode_$version.xip" else cd /Applications/ && xip -x "$sourceFile" @@ -72,12 +35,12 @@ function InstallXCode() { fi echo "Versioning application bundle" - majorVersion=$(echo $version | cut -d '.' -f 1) + majorVersion=$(echo "$version" | cut -d '.' -f 1) versionedAppBundle="/Applications/Xcode${majorVersion}.app" - sudo mv /Applications/Xcode.app ${versionedAppBundle} + sudo mv /Applications/Xcode*.app "${versionedAppBundle}" echo "Selecting Xcode" - sudo xcode-select --switch ${versionedAppBundle} + sudo xcode-select --switch "${versionedAppBundle}" echo "Accept license" sudo xcodebuild -license accept diff --git a/coin/provisioning/common/macos/java.sh b/coin/provisioning/common/macos/java.sh index faf450f0..1429f824 100755 --- a/coin/provisioning/common/macos/java.sh +++ b/coin/provisioning/common/macos/java.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 JDK @@ -47,7 +10,7 @@ echo "Installing Java Development Kit" version=11.0.12 targetFile=jdk-${version}_osx-x64_bin.dmg -url=ci-files01-hki.intra.qt.io:/hdd/www/input/mac +url=ci-files01-hki.ci.qt.io:/hdd/www/input/mac # url_alt=https://www.oracle.com/java/technologies/downloads/#java11-linux echo "Mounting $targetFile" diff --git a/coin/provisioning/common/macos/java_arm.sh b/coin/provisioning/common/macos/java_arm.sh index fb603918..1c4b1ed1 100755 --- a/coin/provisioning/common/macos/java_arm.sh +++ b/coin/provisioning/common/macos/java_arm.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 JDK @@ -47,7 +10,7 @@ echo "Installing Java Development Kit" targetFile=zulu15.29.15-ca-jdk15.0.2-macosx_aarch64.dmg -url=ci-files01-hki.intra.qt.io:/hdd/www/input/mac +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 echo "Mounting $targetFile" diff --git a/coin/provisioning/common/macos/libiodbc.sh b/coin/provisioning/common/macos/libiodbc.sh index 62872b63..059758c8 100755 --- a/coin/provisioning/common/macos/libiodbc.sh +++ b/coin/provisioning/common/macos/libiodbc.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # Install libiodbc @@ -46,11 +9,11 @@ set -ex # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -brew install ${BASH_SOURCE%/*}/libiodbc.rb $* +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) +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}" diff --git a/coin/provisioning/common/macos/libusb.sh b/coin/provisioning/common/macos/libusb.sh index dc30e4fe..2abe6cbf 100755 --- a/coin/provisioning/common/macos/libusb.sh +++ b/coin/provisioning/common/macos/libusb.sh @@ -1,49 +1,35 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 libusb set -ex source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" brew install libusb -read -r -a arr <<< $(brew list --versions libusb) +read -r -a arr <<< "$(brew list --versions libusb)" version=${arr[1]} echo "libusb = $version" >> ~/versions.txt + +mkdir /tmp/arm64/ +mkdir /tmp/amd64/ + +case $(sw_vers -productVersion) in + 11*) codename=big_sur;; + 12*) codename=monterey;; + 13*) codename=ventura;; + 14*) codename=sonoma;; +esac + +brew fetch --bottle-tag=arm64_"${codename}" libusb +brew fetch --bottle-tag="${codename}" libusb +tar xf "$(brew --cache --bottle-tag=arm64_"${codename}" libusb)" -C /tmp/arm64/ +tar xf "$(brew --cache --bottle-tag="${codename}" libusb)" -C /tmp/amd64 +for f in /tmp/arm64/libusb/"$version"/lib/* ; do + if lipo -info "$f" >/dev/null 2>&1; then + file="$(basename "$f")" + lipo -create -output "$(brew --cellar)/libusb/$version/lib/$file" \ + "/tmp/arm64/libusb/$version/lib/$file" \ + "/tmp/amd64/libusb/$version/lib/$file" + fi +done diff --git a/coin/provisioning/common/macos/macos-version.sh b/coin/provisioning/common/macos/macos-version.sh index 4bf8eea8..182c1161 100755 --- a/coin/provisioning/common/macos/macos-version.sh +++ b/coin/provisioning/common/macos/macos-version.sh @@ -1,57 +1,20 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2016 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2016 The 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. set -ex # Print all build machines versions to provision log -echo "*********************************************" >> ~/versions.txt -echo "***** macOS version *****" >> ~/versions.txt -sw_vers >> ~/versions.txt -echo "***** All installed packages *****" >> ~/versions.txt -echo "***** HomeBrew *****" >> ~/versions.txt -brew list --versions >> ~/versions.txt -echo "***** Apple's installer *****" >> ~/versions.txt -pkgutil --pkgs >> ~/versions.txt -echo "*********************************************" >> ~/versions.txt - +( echo "*********************************************" + echo "***** macOS version *****" + sw_vers + echo "***** All installed packages *****" + echo "***** HomeBrew *****" + brew list --versions + echo "***** Apple's installer *****" + pkgutil --pkgs + echo "*********************************************" +) >> ~/versions.txt "$(dirname "$0")/version.sh" diff --git a/coin/provisioning/common/macos/makeuniversal.sh b/coin/provisioning/common/macos/makeuniversal.sh index cca42db7..0f5fc6a0 100755 --- a/coin/provisioning/common/macos/makeuniversal.sh +++ b/coin/provisioning/common/macos/makeuniversal.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # Copies or lipos files from the given DESTDIR dirs to the respective install dir @@ -45,18 +8,24 @@ set -e for dir in "$@"; do echo "Processing files in $dir ..." - pushd $dir >/dev/null - find . -type f | while read f; do + pushd "$dir" >/dev/null + find . -type f -or -type l | while read -r f; do dst="${f:1}" - dstdir=$(dirname $dst) - mkdir -p $dstdir - if [[ ! -f $dst ]]; then + dstdir="$(dirname "$dst")" + mkdir -p "$dstdir" + + if [[ -L "$f" ]]; then + if [[ ! -L "$dst" && ! -d "$dst" && ! -f "$dst" ]]; then + echo "Copying symlink $dir/$f to $dst" + cp -P -n "$f" "$dst" + fi + elif [[ ! -f "$dst" ]]; then echo "Copying $dir/$f to $dst" - cp -c $f $dst - elif lipo -info $f >/dev/null 2>&1; then + cp -c "$f" "$dst" + elif lipo -info "$f" >/dev/null 2>&1; then echo "Lipoing $dir/$f into $dst" - lipo -create -output $dst $dst $f - elif ! diff $f $dst; then + 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 diff --git a/coin/provisioning/common/macos/mimersql.sh b/coin/provisioning/common/macos/mimersql.sh new file mode 100755 index 00000000..10ee1dc5 --- /dev/null +++ b/coin/provisioning/common/macos/mimersql.sh @@ -0,0 +1,56 @@ +#!/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 Mimer SQL + +# Mimer SQL is needed for Qt to be able to support Mimer SQL + +set -ex +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 + +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/$mimerSqlPackageName" +AltUrl="https://install.mimer.com/qt/macOS/$mimerSqlPackageName" + +DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "/tmp/$mimerSqlPackageName" + +echo "Installing $mimerSqlPackageName" +if [ -e /tmp/mimersql_${mimerSqlVersion} ]; then + rm -r /tmp/mimersql_${mimerSqlVersion} +fi +mkdir /tmp/mimersql_${mimerSqlVersion} +tar -C /tmp/mimersql_${mimerSqlVersion} -zxf /tmp/$mimerSqlPackageName +if [ ! -e /usr/local/include ]; then + sudo mkdir -p /usr/local/include + sudo chmod 777 /usr/local/include +fi +if [ ! -e /usr/local/lib ]; then + sudo mkdir -p /usr/local/lib + sudo chmod 777 /usr/local/lib +fi +sudo cp /tmp/mimersql_${mimerSqlVersion}/include/*.h /usr/local/include/ +sudo chmod 755 /usr/local/include/mimer*.h +sudo cp /tmp/mimersql_${mimerSqlVersion}/lib/libmimerapi.dylib /usr/local/lib/ +sudo chmod 755 /usr/local/lib/libmimerapi.dylib +echo "Removing $mimerSqlPackageName" +rm "/tmp/$mimerSqlPackageName" +rm -r /tmp/mimersql_${mimerSqlVersion} +echo "Mimer SQL = $mimerSqlVersion" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/mount-vcpkg-cache-drive.sh b/coin/provisioning/common/macos/mount-vcpkg-cache-drive.sh new file mode 100755 index 00000000..8a3e1f69 --- /dev/null +++ b/coin/provisioning/common/macos/mount-vcpkg-cache-drive.sh @@ -0,0 +1,28 @@ +#!/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 + +# Avoid leaking secrets in the logs +set +x + +targetDir="$HOME/vcpkg-cache" + +# Specify the path to the credential file +credentialFile="$HOME/samba_credentials" +username=$(grep '^username=' "$credentialFile" | cut -d '=' -f 2) +password=$(grep '^password=' "$credentialFile" | cut -d '=' -f 2) + +mkdir -p "$targetDir" + +# Mount the SMB share +# Check if the mount was successful +if mount -v -t smbfs -o -N "//${username}:${password}@vcpkg-server.ci.qt.io/vcpkg" "$targetDir" +then + echo "SMB share mounted successfully!" +else + echo "Failed to mount SMB share." +fi + +set -x diff --git a/coin/provisioning/common/macos/ninja.sh b/coin/provisioning/common/macos/ninja.sh index 2cb05aa2..66ac8324 100755 --- a/coin/provisioning/common/macos/ninja.sh +++ b/coin/provisioning/common/macos/ninja.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 will install ninja binary @@ -45,7 +8,7 @@ source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh" version="1.10.2" -internalUrl="http://ci-files01-hki.intra.qt.io/input/mac/ninja-mac_v${version}.zip" +internalUrl="http://ci-files01-hki.ci.qt.io/input/mac/ninja-mac_v${version}.zip" externalUrl="https://github.com/ninja-build/ninja/releases/download/v${version}/ninja-mac.zip" SHA1="95d0ca5e7c67ab7181c87e6a6ec59d11b1ff2d30" DestDir="/usr/local/bin/" diff --git a/coin/provisioning/common/macos/nodejs.sh b/coin/provisioning/common/macos/nodejs.sh index 27382fbe..ac927110 100755 --- a/coin/provisioning/common/macos/nodejs.sh +++ b/coin/provisioning/common/macos/nodejs.sh @@ -1,55 +1,18 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # shellcheck source=./../unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" # This script will install Nodejs -version="14.16.1" -urlCache="http://ci-files01-hki.intra.qt.io/input/nodejs/node-v$version.pkg" +version="18.16.0" +urlCache="http://ci-files01-hki.ci.qt.io/input/nodejs/node-v$version.pkg" urlOffcial="https://nodejs.org/dist/v$version/node-v$version.pkg" -sha1="4720274971c40fe51b2c647060f77c45fb4949a7" +sha256="156aa5b9580288fb0b3c6134eb8fac64e50745d78d33eebe9e29eb7ff87b8e1e" -DownloadURL $urlCache $urlOffcial $sha1 "/tmp/node-v$version.pkg" +DownloadURL $urlCache $urlOffcial $sha256 "/tmp/node-v$version.pkg" sudo installer -pkg "/tmp/node-v$version.pkg" -target / echo "Nodejs = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/pip.sh b/coin/provisioning/common/macos/pip.sh index b1c9a864..ce73d283 100755 --- a/coin/provisioning/common/macos/pip.sh +++ b/coin/provisioning/common/macos/pip.sh @@ -1,4 +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=../unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" @@ -9,9 +11,9 @@ function InstallPip { # Will install pip utility for python if [[ $python == "python2.7" ]]; then - DownloadURL "http://ci-files01-hki.intra.qt.io/input/mac/python27/get-pip.py" "https://bootstrap.pypa.io/2.7/get-pip.py" "c4c5f74586cffe49804f167d95d1710b9750ddf0" + DownloadURL "http://ci-files01-hki.ci.qt.io/input/mac/python27/get-pip.py" "https://bootstrap.pypa.io/2.7/get-pip.py" "c4c5f74586cffe49804f167d95d1710b9750ddf0" else - DownloadURL "http://ci-files01-hki.intra.qt.io/input/mac/get-pip.py" "https://bootstrap.pypa.io/get-pip.py" "209ddf0bb8d1cf06a1f17dd9f21970c76b3d2be2" + DownloadURL "http://ci-files01-hki.ci.qt.io/input/mac/get-pip.py" "https://bootstrap.pypa.io/get-pip.py" "209ddf0bb8d1cf06a1f17dd9f21970c76b3d2be2" fi sudo "$python" get-pip.py rm get-pip.py diff --git a/coin/provisioning/common/macos/pkgconfig.sh b/coin/provisioning/common/macos/pkgconfig.sh index 5bae9330..5b849821 100755 --- a/coin/provisioning/common/macos/pkgconfig.sh +++ b/coin/provisioning/common/macos/pkgconfig.sh @@ -1,49 +1,12 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 pkgconfig set -ex source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" brew install pkgconfig -read -r -a arr <<< $(brew list --versions pkgconfig) +read -r -a arr <<< "$(brew list --versions pkgconfig)" version=${arr[1]} echo "pkgconfig = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/postgresql.sh b/coin/provisioning/common/macos/postgresql.sh index b20e4f4e..8980d28e 100755 --- a/coin/provisioning/common/macos/postgresql.sh +++ b/coin/provisioning/common/macos/postgresql.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 PostgreSQL @@ -45,9 +8,9 @@ set -ex -# shellcheck source=../common/unix/SetEnvVar.sh +# shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -# shellcheck source=../common/unix/DownloadURL.sh +# shellcheck source=../unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" psqlAppVersion="2.5" @@ -55,10 +18,9 @@ psqlVersion="14" packageName="Postgres-$psqlAppVersion-$psqlVersion.dmg" -PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/mac/macos_10.12_sierra/$packageName" +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/macos_10.12_sierra/$packageName" AltUrl="https://github.com/PostgresApp/PostgresApp/releases/download/v$psqlAppVersion/$packageName" SHA1="04cb6939704c5ede5646c1da8a686da3ded98a26" -appPrefix="" DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "/tmp/$packageName" diff --git a/coin/provisioning/common/macos/python2.sh b/coin/provisioning/common/macos/python2.sh index 6d811bd8..2da8b463 100755 --- a/coin/provisioning/common/macos/python2.sh +++ b/coin/provisioning/common/macos/python2.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # This script installs python2 @@ -48,7 +11,7 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" # shellcheck source=./pip.sh source "${BASH_SOURCE%/*}/pip.sh" -PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/mac/python-2.7.16-macosx10.6.pkg" +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/python-2.7.16-macosx10.6.pkg" AltUrl="https://www.python.org/ftp/python/2.7.16/python-2.7.16-macosx10.6.pkg" SHA1="895a8327a58e7c0e58852638ab3d84843643535b" DestDir="/" @@ -57,6 +20,10 @@ InstallPKGFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$DestDir" InstallPip python2.7 +echo "Configure pip" +/Library/Frameworks/Python.framework/Versions/2.7/bin/pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache +/Library/Frameworks/Python.framework/Versions/2.7/bin/pip config --user set global.extra-index-url https://pypi.org/simple/ + /Library/Frameworks/Python.framework/Versions/2.7/bin/pip install virtualenv SetEnvVar "PATH" "/Library/Frameworks/Python.framework/Versions/2.7/bin/:\$PATH" diff --git a/coin/provisioning/common/macos/python3.sh b/coin/provisioning/common/macos/python3.sh index 75d76c95..1a8809d6 100755 --- a/coin/provisioning/common/macos/python3.sh +++ b/coin/provisioning/common/macos/python3.sh @@ -1,44 +1,7 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 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$ -## -############################################################################# +# Copyright (C) 2019 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 @@ -49,25 +12,23 @@ source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" # shellcheck source=./pip.sh source "${BASH_SOURCE%/*}/pip.sh" -PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/mac/python-3.9.6-macos11.pkg" -AltUrl="https://www.python.org/ftp/python/3.9.6/python-3.9.6-macos11.pkg" -SHA1="2af5277c2e197719eb4b820430dee5d89e2577b6" +PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/mac/python-3.11.9-macos11.pkg" +AltUrl="https://www.python.org/ftp/python/3.11.9/python-3.11.9-macos11.pkg" +SHA1="d156e22e4f8902c0ebdf466a3a01832e0f0a85d8" DestDir="/" InstallPKGFromURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$DestDir" -InstallPip python3.9 - -/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 install virtualenv wheel html5lib +echo "Configure pip" +/Library/Frameworks/Python.framework/Versions/3.11/bin/pip3 config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache +/Library/Frameworks/Python.framework/Versions/3.11/bin/pip3 config --user set global.extra-index-url https://pypi.org/simple/ -SetEnvVar "PYTHON3_PATH" "/Library/Frameworks/Python.framework/Versions/3.9/bin" -SetEnvVar "PIP3_PATH" "/Library/Frameworks/Python.framework/Versions/3.9/bin" +/Library/Frameworks/Python.framework/Versions/3.11/bin/pip3 install virtualenv wheel html5lib -# Install all needed packages in a special wheel cache directory -/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 wheel --wheel-dir $HOME/python3-wheels -r ${BASH_SOURCE%/*}/../shared/requirements.txt -SetEnvVar "PYTHON3_WHEEL_CACHE" "$HOME/python3-wheels" +SetEnvVar "PYTHON3_PATH" "/Library/Frameworks/Python.framework/Versions/3.11/bin" +SetEnvVar "PIP3_PATH" "/Library/Frameworks/Python.framework/Versions/3.11/bin" # Install Python certificates. Required at least for emsdk installation -open /Applications/Python\ 3.9/Install\ Certificates.command +open /Applications/Python\ 3.11/Install\ Certificates.command -echo "python3 = 3.9.6" >> ~/versions.txt +echo "python3 = 3.11.9" >> ~/versions.txt diff --git a/coin/provisioning/common/macos/sccache.sh b/coin/provisioning/common/macos/sccache.sh index fe3a68df..85c4aee2 100755 --- a/coin/provisioning/common/macos/sccache.sh +++ b/coin/provisioning/common/macos/sccache.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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 diff --git a/coin/provisioning/common/macos/screenresolution.sh b/coin/provisioning/common/macos/screenresolution.sh index dd29a0f1..1b552e88 100755 --- a/coin/provisioning/common/macos/screenresolution.sh +++ b/coin/provisioning/common/macos/screenresolution.sh @@ -1,43 +1,6 @@ #!/bin/bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 screenresolution and set correct resolution at boot diff --git a/coin/provisioning/common/macos/set-locale.sh b/coin/provisioning/common/macos/set-locale.sh index 057d1414..bede1e00 100755 --- a/coin/provisioning/common/macos/set-locale.sh +++ b/coin/provisioning/common/macos/set-locale.sh @@ -1,44 +1,7 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 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$ -## -############################################################################# +# Copyright (C) 2019 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 sets the macOS locale to UTF-8 set -ex diff --git a/coin/provisioning/common/macos/set_tcc_permissions.sh b/coin/provisioning/common/macos/set_tcc_permissions.sh new file mode 100755 index 00000000..d9fb222b --- /dev/null +++ b/coin/provisioning/common/macos/set_tcc_permissions.sh @@ -0,0 +1,31 @@ +#!/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 + +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')) + + # shellcheck disable=SC2043 + for service in kTCCServiceMicrophone; do + sqlite3 -echo "$TCC_DATABASE" <<EOF + DELETE from access WHERE client = '$BOOTSTRAP_AGENT' AND service = '$service'; + INSERT INTO access (service, client, client_type, auth_value, auth_reason, auth_version, csreq, flags) VALUES ( + '$service', -- service + '$BOOTSTRAP_AGENT', -- client + 1, -- client_type (1 - absolute path) + 2, -- auth_value (2 - allowed) + 4, -- auth_reason (4 - "System Set") + 1, -- auth_version + X'$REQ_HEX', -- csreq + 0 -- flags + ); +EOF + done +else + echo "TCC database is not writable. Is SIP disabled?" >&2 + exit 1 +fi diff --git a/coin/provisioning/common/macos/sha1sum-compatibility.sh b/coin/provisioning/common/macos/sha1sum-compatibility.sh index 8527ec69..65685371 100755 --- a/coin/provisioning/common/macos/sha1sum-compatibility.sh +++ b/coin/provisioning/common/macos/sha1sum-compatibility.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # On macOS the sha1 tool is named 'shasum' while on all other unix systems it is called 'sha1sum'. # In order to make all unix provioning scripts run on macOS without special case handling diff --git a/coin/provisioning/common/macos/system_updates.sh b/coin/provisioning/common/macos/system_updates.sh index 649cdbad..8cc9410e 100755 --- a/coin/provisioning/common/macos/system_updates.sh +++ b/coin/provisioning/common/macos/system_updates.sh @@ -1,46 +1,12 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # Disable "Download newly available updates in the background" from App Store sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -boolean FALSE # Disable "Install system data files and security updates" from App Store sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CriticalUpdateInstall -boolean FALSE + +# Disable "Automatic checks" +sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool FALSE diff --git a/coin/provisioning/common/macos/telegraf-ioping.sh b/coin/provisioning/common/macos/telegraf-ioping.sh index eee1372b..9b6d3851 100755 --- a/coin/provisioning/common/macos/telegraf-ioping.sh +++ b/coin/provisioning/common/macos/telegraf-ioping.sh @@ -1,4 +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 # Measure I/O latency once, return data in InfluxDB format # @@ -12,7 +14,7 @@ set -e -[ x"$1" = x ] && echo "$0 takes a path as a first argument" && exit 1 +[ -z "$1" ] && echo "$0 takes a path as a first argument" && exit 1 # Try to run in high priority to avoid slow-downs because of # factors other than I/O. @@ -22,5 +24,5 @@ renice -n -10 -p $$ >/dev/null 2>&1 || true rlatency="$(/usr/local/bin/ioping -B -k -c 3 -i 0.1 "$1" | cut -d " " -f 5)" wlatency="$(/usr/local/bin/ioping -B -k -c 3 -i 0.1 -W "$1" | cut -d " " -f 5)" -printf "ioping,path=$1 read_latency_ns=%u,write_latency_ns=%u\n" \ - $rlatency $wlatency +printf "ioping,path=$1 read_latency_ns=%u,write_latency_ns=%u\n" \ + "$rlatency" "$wlatency" diff --git a/coin/provisioning/common/macos/telegraf_install.sh b/coin/provisioning/common/macos/telegraf_install.sh index f2b83a24..f9658d83 100755 --- a/coin/provisioning/common/macos/telegraf_install.sh +++ b/coin/provisioning/common/macos/telegraf_install.sh @@ -1,44 +1,6 @@ -#!/bin/sh - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# - +#!/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 # This script installs telegraf and ioping and our script telegraf-ioping.sh # to the /usr/bin directory. @@ -52,11 +14,12 @@ ######################## BOILERPLATE ########################### set -e - PROVISIONING_DIR="$(dirname "$0")/../../" -. "$PROVISIONING_DIR"/common/unix/common.sourced.sh -. "$PROVISIONING_DIR"/common/unix/DownloadURL.sh +# shellcheck source=../unix/common.sourced.sh +source "${BASH_SOURCE%/*}/../unix/common.sourced.sh" +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" is_script_executed telegraf_install.sh \ || fatal "Script telegraf_install.sh should be executed, not sourced" @@ -67,7 +30,7 @@ is_script_executed telegraf_install.sh \ [ "$PROVISIONING_OS" = linux ] \ && ioping_sha256=259abf04bcb84f4126ff97c04b6651e1cf5ea6d8a9ff364c769a26c95b6eeb44 \ || ioping_sha256=55de6a2f1a5343e0ce8df31d82d47a9e79c7e612edbc6dfb39b5fc6fb358b2e3 -DownloadURL "http://ci-files01-hki.intra.qt.io/input/ioping/ioping.${PROVISIONING_OS}-${PROVISIONING_ARCH}" \ +DownloadURL "http://ci-files01-hki.ci.qt.io/input/ioping/ioping.${PROVISIONING_OS}-${PROVISIONING_ARCH}" \ '' "$ioping_sha256" ioping /usr/bin/sudo mkdir -p /usr/local/bin/ $CMD_INSTALL -m 755 ./ioping /usr/local/bin/ @@ -78,14 +41,14 @@ $CMD_INSTALL -m 755 "$PROVISIONING_DIR"/common/macos/telegraf-ioping.sh /usr/l # 3. Download and install telegraf -[ x"$PROVISIONING_OS" = xmacos ] && os=darwin || os=linux -[ x"$PROVISIONING_ARCH" = xx86 ] && arch=i386 || arch=amd64 +[ "$PROVISIONING_OS" = macos ] && os=darwin || os=linux +[ "$PROVISIONING_ARCH" = x86 ] && arch=i386 || arch=amd64 package_filename=telegraf-1.12.6_${os}_${arch}.tar.gz package_sha256_list="$PROVISIONING_DIR"/common/shared/telegraf/telegraf_packages.sha256.txt package_sha256=$(sed -n "s/.*$package_filename *//p" "$package_sha256_list") DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/telegraf/"$package_filename" \ + http://ci-files01-hki.ci.qt.io/input/telegraf/"$package_filename" \ https://dl.influxdata.com/telegraf/releases/"$package_filename" \ "$package_sha256" \ telegraf.tar.gz diff --git a/coin/provisioning/common/macos/version.sh b/coin/provisioning/common/macos/version.sh index 7346bcf2..8e3cde83 100755 --- a/coin/provisioning/common/macos/version.sh +++ b/coin/provisioning/common/macos/version.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2016 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2016 The 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 print all installed software to provision log. # Script needs to be named so that it will be ran at last during provisioning diff --git a/coin/provisioning/common/linux/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake index 3e3ee6e8..9a207b0e 100644 --- a/coin/provisioning/common/linux/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake +++ b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-aarch64le.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_NAME QNX) +set(CMAKE_SYSTEM_PROCESSOR aarch64le) if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -13,7 +14,7 @@ if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() -set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET}/target/qnx7/) +set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}) set(_qnx_toolchain_arch gcc_ntoaarch64le) @@ -22,4 +23,6 @@ set(CMAKE_C_COMPILER_TARGET ${_qnx_toolchain_arch}) 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_SYSROOT $ENV{QNX_TARGET}) diff --git a/coin/provisioning/common/linux/cmake_toolchain_files/qnx-toolchain-armv7le.cmake b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake index b441859a..90bd9731 100644 --- a/coin/provisioning/common/linux/cmake_toolchain_files/qnx-toolchain-armv7le.cmake +++ b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-armv7le.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_NAME QNX) +set(CMALE_SYSTEM_PROCESSOR armv7le) if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -13,7 +14,7 @@ if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() -set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET}/target/qnx7/) +set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}) set(_qnx_toolchain_arch gcc_ntoarmv7le) @@ -22,4 +23,6 @@ set(CMAKE_C_COMPILER_TARGET ${_qnx_toolchain_arch}) 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_SYSROOT $ENV{QNX_TARGET}) diff --git a/coin/provisioning/common/linux/cmake_toolchain_files/qnx-toolchain-x8664.cmake b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake index bec28b06..e11488bc 100644 --- a/coin/provisioning/common/linux/cmake_toolchain_files/qnx-toolchain-x8664.cmake +++ b/coin/provisioning/common/shared/cmake_toolchain_files/qnx-toolchain-x8664.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_NAME QNX) +set(CMAKE_SYSTEM_PROCESSOR x86_64) if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -13,7 +14,7 @@ if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() -set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET}/target/qnx7/) +set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}) set(_qnx_toolchain_arch gcc_ntox86_64) @@ -22,4 +23,6 @@ set(CMAKE_C_COMPILER_TARGET ${_qnx_toolchain_arch}) 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_SYSROOT $ENV{QNX_TARGET}) diff --git a/coin/provisioning/common/shared/ffmpeg_config_options.txt b/coin/provisioning/common/shared/ffmpeg_config_options.txt new file mode 100644 index 00000000..52f79c14 --- /dev/null +++ b/coin/provisioning/common/shared/ffmpeg_config_options.txt @@ -0,0 +1 @@ +--disable-programs --disable-doc --disable-debug --enable-network --disable-lzma --enable-pic --disable-vulkan --disable-v4l2-m2m --disable-decoder=truemotion1 diff --git a/coin/provisioning/common/shared/requirements.txt b/coin/provisioning/common/shared/requirements.txt deleted file mode 100644 index 863707da..00000000 --- a/coin/provisioning/common/shared/requirements.txt +++ /dev/null @@ -1,19 +0,0 @@ -# This file holds all python3 packages need for a certain qt module -# When adding new packages here, first add a comment with the name of the module -# Then all the packages. Duplicates are wanted as every module should install -# all packages it needs and shouldn't depend on a package from another module -# -# qtinterfaceframework -antlr4-python3-runtime==4.9.2 -argh==0.26.2 -click==8.0.1 -coloredlogs==15.0.1 -humanfriendly==10.0 -Jinja2==3.0.1 -MarkupSafe==2.0.1 -path.py==12.5.0 -pathtools==0.1.2 -PyYAML==5.4.1 -six==1.16.0 -typing==3.7.4 -watchdog==2.1.5 diff --git a/coin/provisioning/common/shared/telegraf/telegraf-ioping.sh b/coin/provisioning/common/shared/telegraf/telegraf-ioping.sh index ad95eadc..528047ce 100644..100755 --- a/coin/provisioning/common/shared/telegraf/telegraf-ioping.sh +++ b/coin/provisioning/common/shared/telegraf/telegraf-ioping.sh @@ -1,4 +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 # Measure I/O latency once, return data in InfluxDB format # @@ -12,7 +14,7 @@ set -e -[ x"$1" = x ] && echo "$0 takes a path as a first argument" && exit 1 +[ -z "$1" ] && echo "$0 takes a path as a first argument" && exit 1 # Try to run in high priority to avoid slow-downs because of # factors other than I/O. @@ -23,4 +25,4 @@ rlatency="$(ioping -B -k -c 3 -i 0.1 "$1" | cut -d " " -f 5)" wlatency="$(ioping -B -k -c 3 -i 0.1 -W "$1" | cut -d " " -f 5)" printf "ioping,path=$1 read_latency_ns=%u,write_latency_ns=%u\n" \ - $rlatency $wlatency + "$rlatency" "$wlatency" diff --git a/coin/provisioning/common/shared/testserver/californium/Dockerfile b/coin/provisioning/common/shared/testserver/californium/Dockerfile index 041c3ef4..81d27f9b 100644 --- a/coin/provisioning/common/shared/testserver/californium/Dockerfile +++ b/coin/provisioning/common/shared/testserver/californium/Dockerfile @@ -1,5 +1,5 @@ FROM qt_ubuntu_18.04 -ARG packages="avahi-daemon maven default-jdk" +ARG packages="avahi-daemon maven default-jdk patch" RUN apt-get update && apt-get -y install $packages # Get californium-based CoAP test server @@ -7,6 +7,8 @@ WORKDIR /root/src ADD californium-*.tar.gz . RUN mv californium-* californium WORKDIR /root/src/californium +ADD qt_changes.patch ./ +RUN patch -p1 < qt_changes.patch RUN mvn clean install -q -DskipTests WORKDIR / diff --git a/coin/provisioning/common/shared/testserver/californium/qt_changes.patch b/coin/provisioning/common/shared/testserver/californium/qt_changes.patch new file mode 100644 index 00000000..732c0daa --- /dev/null +++ b/coin/provisioning/common/shared/testserver/californium/qt_changes.patch @@ -0,0 +1,43 @@ +diff -ruN californium_3.8.0/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java californium/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java +--- californium_3.8.0/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java 2023-07-21 11:16:21.142201240 +0200 ++++ californium/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java 2023-07-21 11:16:51.074210378 +0200 +@@ -100,6 +100,14 @@ + import org.eclipse.californium.unixhealth.NetSocketHealthLogger; + import org.eclipse.californium.unixhealth.NetStatLogger; + ++import org.eclipse.californium.scandium.DTLSConnector; ++import org.eclipse.californium.scandium.config.DtlsConnectorConfig; ++import org.eclipse.californium.scandium.dtls.pskstore.AdvancedSinglePskStore; ++import org.eclipse.californium.core.network.CoapEndpoint; ++ ++import java.net.InetSocketAddress; ++import java.net.InetAddress; ++ + import picocli.CommandLine; + import picocli.CommandLine.ArgGroup; + import picocli.CommandLine.Command; +@@ -437,7 +445,23 @@ + // server.addEndpoint(new CoAPEndpoint(new InetSocketAddress("127.0.0.1", port))); + // server.addEndpoint(new CoAPEndpoint(new InetSocketAddress("2a01:c911:0:2010::10", port))); + // server.addEndpoint(new CoAPEndpoint(new InetSocketAddress("10.200.1.2", port))); +- server.addEndpoints(config); ++ // server.addEndpoints(config); ++ ++ CoapEndpoint.Builder endpointBuilder = new CoapEndpoint.Builder(); ++ endpointBuilder.setPort(5683); ++ server.addEndpoint(endpointBuilder.build()); ++ ++ AdvancedSinglePskStore pskStore = new AdvancedSinglePskStore("Client_identity", "secretPSK".getBytes()); ++ ++ DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder(new Configuration()); ++ builder.setAddress(new InetSocketAddress(5684)); ++ builder.setAdvancedPskStore(pskStore); ++ DTLSConnector dtlsConnector = new DTLSConnector(builder.build()); ++ ++ endpointBuilder = new CoapEndpoint.Builder(); ++ endpointBuilder.setConnector(dtlsConnector); ++ server.addEndpoint(endpointBuilder.build()); ++ + if (server.getEndpoints().isEmpty()) { + System.err.println("no endpoint available!"); + System.exit(ERR_INIT_FAILED); diff --git a/coin/provisioning/common/shared/testserver/docker_images.sh b/coin/provisioning/common/shared/testserver/docker_images.sh index 8c731c52..e4782a72 100755 --- a/coin/provisioning/common/shared/testserver/docker_images.sh +++ b/coin/provisioning/common/shared/testserver/docker_images.sh @@ -1,51 +1,14 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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")/../../../" -. "$PROVISIONING_DIR"/common/unix/common.sourced.sh -. "$PROVISIONING_DIR"/common/unix/DownloadURL.sh - +# 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 # Sort files by their SHA-1, and then return the accumulated result sha1tree () { @@ -53,14 +16,14 @@ sha1tree () { [ -x "$(command -v sha1sum)" ] || SHASUM=shasum find "$@" -type f -print0 | \ - xargs -0 ${SHASUM-sha1sum} | cut -d ' ' -f 1 | \ - sort | ${SHASUM-sha1sum} | cut -d ' ' -f 1 + xargs -0 "${SHASUM-sha1sum}" | cut -d ' ' -f 1 | \ + sort | "${SHASUM-sha1sum}" | cut -d ' ' -f 1 } SERVER_PATH="$PROVISIONING_DIR/common/shared/testserver" -. "$SERVER_PATH/settings.sh" +source "$SERVER_PATH/settings.sh" # Download all necessary dependencies outside of the dockerfiles, so that we @@ -70,32 +33,33 @@ SERVER_PATH="$PROVISIONING_DIR/common/shared/testserver" echo 'Downloading support files for the docker images' DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/docker/rfc3252.txt \ + http://ci-files01-hki.ci.qt.io/input/docker/rfc3252.txt \ https://tools.ietf.org/rfc/rfc3252.txt \ 50c323dedce95e4fdc2db35cd1b8ebf9d74711bf5296ef438b88d186d7dd082d cp rfc3252.txt "$SERVER_PATH/vsftpd/" cp rfc3252.txt "$SERVER_PATH/apache2/" DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/docker/dante-server_1.4.1-1_amd64.deb \ + http://ci-files01-hki.ci.qt.io/input/docker/dante-server_1.4.1-1_amd64.deb \ http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/dante/dante-server_1.4.1-1_amd64.deb \ 674a06f356cebd92c64920cec38a6687650a6f880198fbbad05aaaccca5c0a21 mv dante-server_1.4.1-1_amd64.deb "$SERVER_PATH/danted/" DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/docker/FreeCoAP-0.7.tar.gz \ + http://ci-files01-hki.ci.qt.io/input/docker/FreeCoAP-0.7.tar.gz \ https://github.com/keith-cullen/FreeCoAP/archive/v0.7.tar.gz \ fa6602e27dc8eaee6e34ff53400c0519da0c5c7cd47bf6f13acb564f52a693ee \ FreeCoAP-0.7.tar.gz mv FreeCoAP-0.7.tar.gz "$SERVER_PATH/freecoap/" -# Custom fork of Eclipse Californium with changes not upstream +# Eclipse Californium 3.8.0, requires to apply a custom patch from +# $SERVER_PATH/californium/ before usage DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/docker/californium-secure-test-server.tar.gz \ - https://github.com/sonakur/californium/archive/secure-test-server.tar.gz \ - 0ee7f5d4366b9e31f6d2d42e389cb7a66d2db54987b700a38a3a31e8f38a7a19 \ - californium-secure-test-server.tar.gz -mv californium-secure-test-server.tar.gz "$SERVER_PATH/californium/" + http://ci-files01-hki.ci.qt.io/input/docker/californium-3.8.0.tar.gz \ + https://github.com/eclipse-californium/californium/archive/refs/tags/3.8.0.tar.gz \ + 24f8ca393f26c922739462e4586b8ced1ff75f99bfa795defa34a967b5a4a5a0 \ + californium-3.8.0.tar.gz +mv californium-3.8.0.tar.gz "$SERVER_PATH/californium/" echo 'Building the docker images...' @@ -123,10 +87,10 @@ do # backwards-incompatible changes across repositories. context="$SERVER_PATH/$server" - tag=$(sha1tree $context) - docker build -t qt-test-server-$server:latest \ - -t qt-test-server-$server:$tag \ - $context + tag=$(sha1tree "$context") + docker build -t "qt-test-server-$server:latest" \ + -t "qt-test-server-$server:$tag" \ + "$context" done docker images diff --git a/coin/provisioning/common/shared/testserver/docker_machine.sh b/coin/provisioning/common/shared/testserver/docker_machine.sh index 313b5652..9abf0caa 100755 --- a/coin/provisioning/common/shared/testserver/docker_machine.sh +++ b/coin/provisioning/common/shared/testserver/docker_machine.sh @@ -1,59 +1,22 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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 TestMachine='qt-test-server' # Deploy docker virtual machine (Boot2Docker) into VirtualBox only if it doesn't exist -if [ -z $(docker-machine ls -q --filter "name=$TestMachine") ] +if [ -z "$(docker-machine ls -q --filter "name=$TestMachine")" ] then - docker-machine create $@ $TestMachine - docker-machine ip $TestMachine + docker-machine create "$@" "$TestMachine" + docker-machine ip "$TestMachine" else # Otherwise, start the docker machine and update with new TLS certificates. - docker-machine start $TestMachine && docker-machine regenerate-certs -f $TestMachine + docker-machine start "$TestMachine" && docker-machine regenerate-certs -f "$TestMachine" fi # Switch the docker engine to $TestMachine -eval $(docker-machine env $TestMachine) +eval "$(docker-machine env "$TestMachine")" docker-machine ls diff --git a/coin/provisioning/common/shared/testserver/docker_testserver.sh b/coin/provisioning/common/shared/testserver/docker_testserver.sh index 18d9aeb8..7e743a80 100755 --- a/coin/provisioning/common/shared/testserver/docker_testserver.sh +++ b/coin/provisioning/common/shared/testserver/docker_testserver.sh @@ -1,47 +1,10 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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 -[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]} +[ -x "$(command -v realpath)" ] && FILE=$(realpath "${BASH_SOURCE[0]}") || FILE="${BASH_SOURCE[0]}" case $FILE in */*) SERVER_PATH="${FILE%/*}" ;; *) SERVER_PATH="." ;; @@ -60,4 +23,4 @@ esac docker info # Create images -$SERVER_PATH/docker_images.sh +"$SERVER_PATH/docker_images.sh" diff --git a/coin/provisioning/common/shared/testserver/settings.sh b/coin/provisioning/common/shared/testserver/settings.sh index fc21d46b..03276eeb 100644..100755 --- a/coin/provisioning/common/shared/testserver/settings.sh +++ b/coin/provisioning/common/shared/testserver/settings.sh @@ -1,41 +1,6 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +#!/usr/bin/env bash +# Copyright (C) 2019 The 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 diff --git a/coin/provisioning/common/shared/triplets/arm64-windows-qt.cmake b/coin/provisioning/common/shared/triplets/arm64-windows-qt.cmake new file mode 100644 index 00000000..4d9d5d69 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/arm64-windows-qt.cmake @@ -0,0 +1,7 @@ +set(VCPKG_TARGET_ARCHITECTURE arm64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +# Qt custom per-port customizations diff --git a/coin/provisioning/common/shared/triplets/armeabi-v7a-android-qt.cmake b/coin/provisioning/common/shared/triplets/armeabi-v7a-android-qt.cmake new file mode 100644 index 00000000..fba6a00a --- /dev/null +++ b/coin/provisioning/common/shared/triplets/armeabi-v7a-android-qt.cmake @@ -0,0 +1,15 @@ +set(VCPKG_TARGET_ARCHITECTURE arm) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_CRT_LINKAGE dynamic) + set(VCPKG_LIBRARY_LINKAGE dynamic) +endif() + +set(VCPKG_CMAKE_SYSTEM_NAME Android) +set(VCPKG_MAKE_BUILD_TRIPLET "--host=armv7a-linux-androideabi") +set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=armeabi-v7a -DANDROID_ARM_NEON=ON) diff --git a/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake b/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake new file mode 100644 index 00000000..95cc1934 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake @@ -0,0 +1,13 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_LIBRARY_LINKAGE dynamic) + set(VCPKG_FIXUP_ELF_RPATH ON) +endif() + +set(VCPKG_CMAKE_SYSTEM_NAME Linux) diff --git a/coin/provisioning/common/shared/triplets/x64-windows-qt.cmake b/coin/provisioning/common/shared/triplets/x64-windows-qt.cmake new file mode 100644 index 00000000..856b756e --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x64-windows-qt.cmake @@ -0,0 +1,7 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +# Qt custom per-port customizations diff --git a/coin/provisioning/common/shared/triplets/x86-android-qt.cmake b/coin/provisioning/common/shared/triplets/x86-android-qt.cmake new file mode 100644 index 00000000..a4b74012 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x86-android-qt.cmake @@ -0,0 +1,15 @@ +set(VCPKG_TARGET_ARCHITECTURE x86) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_CRT_LINKAGE dynamic) + set(VCPKG_LIBRARY_LINKAGE dynamic) +endif() + +set(VCPKG_CMAKE_SYSTEM_NAME Android) +set(VCPKG_MAKE_BUILD_TRIPLET "--host=i686-linux-android") +set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=x86) diff --git a/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake b/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake new file mode 100644 index 00000000..47afae58 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake @@ -0,0 +1,15 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_CRT_LINKAGE dynamic) + set(VCPKG_LIBRARY_LINKAGE dynamic) +endif() + +set(VCPKG_CMAKE_SYSTEM_NAME Android) +set(VCPKG_MAKE_BUILD_TRIPLET "--host=x86_64-linux-android") +set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=x86_64) diff --git a/coin/provisioning/common/shared/vcpkg-configuration.json b/coin/provisioning/common/shared/vcpkg-configuration.json new file mode 100644 index 00000000..83f4f440 --- /dev/null +++ b/coin/provisioning/common/shared/vcpkg-configuration.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json", + "default-registry": { + "kind": "git", + "repository": "https://git.qt.io/mrmsdbdl/vcpkg-mirror", + "baseline": "8eb57355a4ffb410a2e94c07b4dca2dffbee8e50" + }, + "overlay-triplets": [ "./../../shared/triplets" ] +} diff --git a/coin/provisioning/common/shared/vcpkg_registry_mirror.txt b/coin/provisioning/common/shared/vcpkg_registry_mirror.txt new file mode 100644 index 00000000..546ef5b6 --- /dev/null +++ b/coin/provisioning/common/shared/vcpkg_registry_mirror.txt @@ -0,0 +1 @@ +https://git.qt.io/mrmsdbdl/vcpkg-mirror.git diff --git a/coin/provisioning/common/shared/vcpkg_tool_release_tag.txt b/coin/provisioning/common/shared/vcpkg_tool_release_tag.txt new file mode 100644 index 00000000..3faa2683 --- /dev/null +++ b/coin/provisioning/common/shared/vcpkg_tool_release_tag.txt @@ -0,0 +1 @@ +vcpkg_tool_release_tag=2023-11-16 diff --git a/coin/provisioning/common/shared/vcpkg_version.txt b/coin/provisioning/common/shared/vcpkg_version.txt new file mode 100644 index 00000000..d2aa3aa3 --- /dev/null +++ b/coin/provisioning/common/shared/vcpkg_version.txt @@ -0,0 +1 @@ +vcpkg_version=2023.10.19 diff --git a/coin/provisioning/common/unix/DownloadURL.sh b/coin/provisioning/common/unix/DownloadURL.sh index d8698522..455d65d3 100755 --- a/coin/provisioning/common/unix/DownloadURL.sh +++ b/coin/provisioning/common/unix/DownloadURL.sh @@ -1,43 +1,6 @@ -#!/bin/sh - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +#!/bin/bash +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # A helper script used for downloading a file from a URL or an alternative @@ -58,9 +21,12 @@ Download () { url="$1" targetFile="$2" - command -v curl >/dev/null \ - && curl --fail -L --retry 5 --retry-delay 5 -o "$targetFile" "$url" \ - || wget --tries 5 -O "$targetFile" "$url" + if command -v curl >/dev/null + then + curl --fail -L --retry 5 --retry-delay 5 -o "$targetFile" "$url" + else + wget --tries 5 -O "$targetFile" "$url" + fi } VerifyHash () { @@ -81,10 +47,10 @@ VerifyHash () { 65) sha256sum "$file" ;; 97) sha384sum "$file" ;; 129) sha512sum "$file" ;; - *) echo "FATAL! Unknown hash length: $hashLength" 1>&2 && exit 1 ;; + *) echo "FATAL! Unknown hash length: $hashLength" 1>&2 ;; esac | cut -d ' ' -f 1` - if [ ! "$expectedHash" = "$hash" ] + if [ -z "$hash" ] || [ ! "$expectedHash" = "$hash" ] then echo "FAIL! wrong file hash: $file $hash" 1>&2 return 1 @@ -98,10 +64,10 @@ DownloadURL () { url2=$2 expectedHash=$3 # Optional argument $4: destination filename - if [ x"$4" = x ] + if [ -z "$4" ] then # defaults to the last component of $url - targetFile=$(echo $url | sed 's|^.*/||') + targetFile="${url/*\//}" else targetFile=$4 fi diff --git a/coin/provisioning/common/unix/InstallFromCompressedFileFromURL.sh b/coin/provisioning/common/unix/InstallFromCompressedFileFromURL.sh index 41b14c0b..c1358fdd 100755 --- a/coin/provisioning/common/unix/InstallFromCompressedFileFromURL.sh +++ b/coin/provisioning/common/unix/InstallFromCompressedFileFromURL.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 diff --git a/coin/provisioning/common/unix/SetEnvVar.sh b/coin/provisioning/common/unix/SetEnvVar.sh index 88a2d193..3f457bb4 100755 --- a/coin/provisioning/common/unix/SetEnvVar.sh +++ b/coin/provisioning/common/unix/SetEnvVar.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # A helper script used for setting environment variables on Unix systems @@ -49,10 +12,17 @@ function SetEnvVar { echo "Setting environment variable $name to $path." - if uname -a |grep -q "Ubuntu"; then - echo "export $name=$path" >> ~/.profile + if uname -a |grep -q -E "Ubuntu|Debian"; then + if lsb_release -a |grep "Ubuntu 22.04"; then + echo "export $name=$path" >> ~/.bashrc + echo "export $name=$path" >> ~/.bash_profile + else + echo "export $name=$path" >> ~/.profile + fi else echo "export $name=$path" >> ~/.bashrc echo "export $name=$path" >> ~/.zshrc + echo "export $name=$path" >> ~/.zshenv + echo "export $name=$path" >> ~/.zprofile fi } diff --git a/coin/provisioning/common/unix/check_and_set_proxy.sh b/coin/provisioning/common/unix/check_and_set_proxy.sh index c2e59b6b..59598205 100755 --- a/coin/provisioning/common/unix/check_and_set_proxy.sh +++ b/coin/provisioning/common/unix/check_and_set_proxy.sh @@ -1,42 +1,6 @@ #!/usr/bin/env bash -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 diff --git a/coin/provisioning/common/unix/common.sourced.sh b/coin/provisioning/common/unix/common.sourced.sh index aba0f78e..c15d9453 100755 --- a/coin/provisioning/common/unix/common.sourced.sh +++ b/coin/provisioning/common/unix/common.sourced.sh @@ -1,44 +1,6 @@ #!/bin/sh - - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # Script to be sourced from everywhere you need a common environment. Defines: @@ -75,7 +37,7 @@ fatal () { # Takes one argument which should be the filename of this script. Returns true # if the script is being sourced, false if the script is being executed. is_script_executed () { - [ x"$(basename $(echo "$0" | sed s/^-//))" = x"$1" ] + [ "$(basename "$(echo "$0" | sed s/^-//)")" = "$1" ] } @@ -86,6 +48,7 @@ is_script_executed common.sourced.sh \ _detect_linux_OS_ID () { if [ -f /etc/os-release ] then + # shellcheck source=/dev/null . /etc/os-release PROVISIONING_OS_ID="$ID" elif [ -f /etc/redhat-release ] @@ -107,7 +70,7 @@ set_common_environment () { # script in a portable way # PROVISIONING_DIR="$(dirname "$0")/../../" - [ x"$PROVISIONING_DIR" = x ] \ + [ -z "$PROVISIONING_DIR" ] \ && fatal "PROVISIONING_DIR variable needs to be set before calling set_common_environment" uname_s="$(uname -s)" @@ -145,7 +108,7 @@ set_common_environment () { uname_m="$(uname -m)" case "$uname_m" in x86_64|amd64) PROVISIONING_ARCH=amd64 ;; - arm64) PROVISIONING_ARCH=arm64 ;; + aarch64|arm64)PROVISIONING_ARCH=arm64 ;; i[3456]86) PROVISIONING_ARCH=x86 ;; *) fatal "Unknown architecture in uname: $uname_m" 43 ;; esac diff --git a/coin/provisioning/common/unix/disable-ntp_macos.sh b/coin/provisioning/common/unix/disable-ntp_macos.sh index f9ec7e1f..fd490e43 100755 --- a/coin/provisioning/common/unix/disable-ntp_macos.sh +++ b/coin/provisioning/common/unix/disable-ntp_macos.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 diff --git a/coin/provisioning/common/unix/emsdk.sh b/coin/provisioning/common/unix/emsdk.sh index efeedbac..580f966f 100755 --- a/coin/provisioning/common/unix/emsdk.sh +++ b/coin/provisioning/common/unix/emsdk.sh @@ -1,55 +1,40 @@ #!/usr/bin/env bash -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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=./SetEnvVar.sh source "${BASH_SOURCE%/*}/SetEnvVar.sh" -version="3.0.0" -versionNode="v14.15.5" +# shellcheck source=./DownloadURL.sh +source "${BASH_SOURCE%/*}/DownloadURL.sh" + +version="3.1.50" +versionNode="v16.20.0" +tarBallVersion="${version//./_}" +if uname -a |grep -q Darwin; then + tarBallPackage="emsdk_macos_${tarBallVersion}.tar.gz" + sha="c12169ec8d22fc7a9ef1ba98027435bdf3b72729" +else + tarBallPackage="emsdk_linux_${tarBallVersion}.tar.gz" + sha="5d81a8f1ddcb8d74c70ba5608efd4266c857944a" +fi +cacheUrl="https://ci-files01-hki.ci.qt.io/input/emsdk/${tarBallPackage}" +target="/tmp/${tarBallPackage}" mkdir -p /opt cd /opt -sudo git clone https://github.com/emscripten-core/emsdk.git -cd emsdk -sudo ./emsdk install $version -sudo ./emsdk activate $version +echo "URL: $cacheUrl" + +if DownloadURL "$cacheUrl" "" "$sha" "$target"; then + sudo tar -xzf "$target" -C /opt/ + sudo rm -f "$target" +else + echo "Emsdk isn't cached. Cloning it" + sudo git clone https://github.com/emscripten-core/emsdk.git + cd emsdk + sudo ./emsdk install "$version" + sudo ./emsdk activate "$version" +fi # platform-specific toolchain and node binaries. urls obtained from "emsdk install" if uname -a |grep -q Darwin; then @@ -58,9 +43,12 @@ else pathNodeExecutable="node-$versionNode-linux-x64/bin/node" fi -SetEnvVar "PATH" "\"\$PATH:/opt/emsdk/emscripten-$version/\"" -SetEnvVar "EMSCRIPTEN" "/opt/emsdk/emscripten-$version" -SetEnvVar "EMSDK" "/opt/emsdk" -SetEnvVar "EMSDK_NODE" "/opt/emsdk/$pathNodeExecutable" +emsdkPath="/opt/emsdk/" +emscriptenPath="${emsdkPath}upstream/emscripten/" + +SetEnvVar "PATH" "\"\$PATH:${emscriptenPath}\"" +SetEnvVar "EMSCRIPTEN" "${emscriptenPath}" +SetEnvVar "EMSDK" "${emsdkPath}" +SetEnvVar "EMSDK_NODE" "${emsdkPath}${pathNodeExecutable}" echo "Emsdk = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/unix/install-breakpad.sh b/coin/provisioning/common/unix/install-breakpad.sh index b8d268e8..7c3a34fb 100755 --- a/coin/provisioning/common/unix/install-breakpad.sh +++ b/coin/provisioning/common/unix/install-breakpad.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################ -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################ +# Copyright (C) 2019 The 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" @@ -48,12 +11,12 @@ set -ex breakpad_commit_sha="b988fa74ec18de6214b18f723e48331d9a7802ae" breakpad_tar="breakpad_$breakpad_commit_sha.tar.gz" -breakpad_tar_url="http://ci-files01-hki.intra.qt.io/input/breakpad/$breakpad_tar" +breakpad_tar_url="http://ci-files01-hki.ci.qt.io/input/breakpad/$breakpad_tar" breakpad_tar_sha="a2d404d2aebc947cdac5840a9bccd65dfafae24c" linux_syscall_support_commit_sha1="93426bda6535943ff1525d0460aab5cc0870ccaf" linux_syscall_support_tar="linux-syscall-support_$linux_syscall_support_commit_sha1.tar.gz" -linux_syscall_support_tar_url="http://ci-files01-hki.intra.qt.io/input/linux-syscall-support/$linux_syscall_support_tar" +linux_syscall_support_tar_url="http://ci-files01-hki.ci.qt.io/input/linux-syscall-support/$linux_syscall_support_tar" linux_syscall_support_tar_sha="62565be0920f3661e138d68026b79fbbdc2a11e4" targetBreakpad="/tmp/$breakpad_tar" diff --git a/coin/provisioning/common/unix/install-conan.sh b/coin/provisioning/common/unix/install-conan.sh index f30a2300..e48a5bdd 100755 --- a/coin/provisioning/common/unix/install-conan.sh +++ b/coin/provisioning/common/unix/install-conan.sh @@ -1,4 +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=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" @@ -7,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 new file mode 100755 index 00000000..05d0b681 --- /dev/null +++ b/coin/provisioning/common/unix/install-ffmpeg-android.sh @@ -0,0 +1,106 @@ +#!/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 + +# This script will build and install FFmpeg static libs +set -ex +os="$1" + +# 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/refs/tags/$version.tar.gz" +sha1="59e0c3c4cc48e9c60073495f8c045329bb21f446" +url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" +ffmpeg_name="FFmpeg-$version" + +target_dir="$HOME" +app_prefix="" +ffmpeg_source_dir="$target_dir/$ffmpeg_name" + +if [ ! -d "$ffmpeg_source_dir" ]; +then + InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$target_dir" "$app_prefix" +fi + +build_ffmpeg_android() { + + target_arch=$1 + target_dir=$2 + + sudo mkdir -p "$target_dir" + + openssl_include="$OPENSSL_ANDROID_HOME_DEFAULT/include" + openssl_libs="" + 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" + elif [ "$target_arch" == "x86" ]; then + target_toolchain_arch="i686-linux-android" + target_arch=x86 + target_cpu=i686 + openssl_libs="$OPENSSL_ANDROID_HOME_DEFAULT/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" + fi + + api_version=24 + + ndk_root=$ANDROID_NDK_ROOT_DEFAULT + if uname -a |grep -q "Darwin"; then + ndk_host=darwin-x86_64 + else + ndk_host=linux-x86_64 + fi + + toolchain=${ndk_root}/toolchains/llvm/prebuilt/${ndk_host} + toolchain_bin=${toolchain}/bin + sysroot=${toolchain}/sysroot + cxx=${toolchain_bin}/${target_toolchain_arch}${api_version}-clang++ + cc=${toolchain_bin}/${target_toolchain_arch}${api_version}-clang + ar=${toolchain_bin}/llvm-ar + ranlib=${toolchain_bin}/llvm-ranlib + + 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" + 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}" + + local build_dir="$ffmpeg_source_dir/build/$target_arch" + sudo mkdir -p "$build_dir" + pushd "$build_dir" + + # shellcheck disable=SC2086 + sudo "$ffmpeg_source_dir/configure" $ffmpeg_config_options --prefix="$target_dir" + + sudo make install -j4 + popd +} + +if [ "$os" == "android-x86" ]; then + target_arch=x86 + target_dir="/usr/local/android/ffmpeg-x86" + + SetEnvVar "FFMPEG_DIR_ANDROID_X86" "$target_dir" +elif [ "$os" == "android-x86_64" ]; then + target_arch=x86_64 + target_dir="/usr/local/android/ffmpeg-x86_64" + + SetEnvVar "FFMPEG_DIR_ANDROID_X86_64" "$target_dir" +elif [ "$os" == "android-arm64" ]; then + target_arch=arm64 + target_dir="/usr/local/android/ffmpeg-arm64" + + SetEnvVar "FFMPEG_DIR_ANDROID_ARM64" "$target_dir" +fi + +build_ffmpeg_android "$target_arch" "$target_dir" diff --git a/coin/provisioning/common/unix/install-ffmpeg-ios.sh b/coin/provisioning/common/unix/install-ffmpeg-ios.sh new file mode 100755 index 00000000..e2a401a5 --- /dev/null +++ b/coin/provisioning/common/unix/install-ffmpeg-ios.sh @@ -0,0 +1,76 @@ +#!/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 will build and install FFmpeg static libs +set -ex + +# 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" +sha1="59e0c3c4cc48e9c60073495f8c045329bb21f446" +url_public="https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$version.tar.gz" +url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" +ffmpeg_name="FFmpeg-$version" + +target_dir="$HOME" +ffmpeg_source_dir="$target_dir/$ffmpeg_name" +prefix="/usr/local/ios/ffmpeg" + +if [ ! -d "$ffmpeg_source_dir" ]; +then + InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$target_dir" +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 \ + --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 +} + +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 + diff --git a/coin/provisioning/common/unix/install-ffmpeg.sh b/coin/provisioning/common/unix/install-ffmpeg.sh new file mode 100755 index 00000000..94d032ed --- /dev/null +++ b/coin/provisioning/common/unix/install-ffmpeg.sh @@ -0,0 +1,113 @@ +#!/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 will build and install FFmpeg static libs +set -ex +os="$1" + +# 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" +url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/$version.tar.gz" +ffmpeg_name="FFmpeg-$version" + +target_dir="$HOME" +app_prefix="" +ffmpeg_source_dir="$target_dir/$ffmpeg_name" + +if [ ! -d "$ffmpeg_source_dir" ] +then + InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$target_dir" "$app_prefix" +fi + +ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt") + +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 + nv_codec_url_public="https://github.com/FFmpeg/nv-codec-headers/archive/refs/heads/sdk/$nv_codec_version.zip" + nv_codec_url_cached="http://ci-files01-hki.ci.qt.io/input/ffmpeg/nv-codec-headers/nv-codec-headers-sdk-$nv_codec_version.zip" + nv_codec_sha1="ceb4966ab01b2e41f02074675a8ac5b331bf603e" + #nv_codec_sha1="4f30539f8dd31945da4c3da32e66022f9ca59c08" // 12.0 + nv_codec_dir="$target_dir/nv-codec-headers-sdk-$nv_codec_version" + if [ ! -d "$nv_codec_dir" ] + then + InstallFromCompressedFileFromURL "$nv_codec_url_cached" "$nv_codec_url_public" "$nv_codec_sha1" "$target_dir" "" + fi + + sudo make -C "$nv_codec_dir" install -j + + # Might be not detected by default on RHEL + export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" +} + +build_ffmpeg() { + local arch="$1" + local prefix="$2" + local build_dir="$ffmpeg_source_dir/build/$arch" + mkdir -p "$build_dir" + pushd "$build_dir" + + if [ -z "$prefix" ] + then prefix="/usr/local/$ffmpeg_name" + fi + + if [ -n "$arch" ] + then cc="clang -arch $arch" + fi + + # shellcheck disable=SC2086 + if [ -n "$arch" ] + then "$ffmpeg_source_dir/configure" $ffmpeg_config_options --prefix="$prefix" --enable-cross-compile --arch="$arch" --cc="$cc" + else "$ffmpeg_source_dir/configure" $ffmpeg_config_options --prefix="$prefix" + fi + make install DESTDIR="$build_dir/installed" -j4 + popd +} + +if [ "$os" == "linux" ]; then + install_ff_nvcodec_headers + + ffmpeg_config_options+=" --enable-openssl" + build_ffmpeg + sudo mv "$ffmpeg_source_dir/build/installed/usr/local/$ffmpeg_name" "/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" + + xcode_major_version=$(xcodebuild -version | awk 'NR==1 {split($2, a, "."); print a[1]}') + if [ "$xcode_major_version" -ge 15 ]; then + # fix the error: duplicate symbol '_av_ac3_parse_header' + ffmpeg_config_options+=" --extra-ldflags=-Wl,-ld_classic" + fi + + if [ "$os" == "macos" ]; then + build_ffmpeg + install_dir="$ffmpeg_source_dir/build/installed" + "$fix_relative_dependencies" "$install_dir/usr/local/$ffmpeg_name/lib" + sudo mv "$install_dir/usr/local/$ffmpeg_name" "/usr/local" + else + build_ffmpeg "arm64" + build_ffmpeg "x86_64" + + arm64_install_dir="$ffmpeg_source_dir/build/arm64/installed" + x86_64_install_dir="$ffmpeg_source_dir/build/x86_64/installed" + + "$fix_relative_dependencies" "$arm64_install_dir/usr/local/$ffmpeg_name/lib" + "$fix_relative_dependencies" "$x86_64_install_dir/usr/local/$ffmpeg_name/lib" + + sudo "${BASH_SOURCE%/*}/../macos/makeuniversal.sh" "$arm64_install_dir" "$x86_64_install_dir" + fi + + SetEnvVar "FFMPEG_DIR" "/usr/local/$ffmpeg_name" +fi diff --git a/coin/provisioning/common/unix/install-openssl.sh b/coin/provisioning/common/unix/install-openssl.sh index 479245d6..3b3353fb 100755 --- a/coin/provisioning/common/unix/install-openssl.sh +++ b/coin/provisioning/common/unix/install-openssl.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 install OpenSSL from sources. # Requires GCC and Perl to be in PATH. @@ -48,11 +11,11 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -version="1.1.1k" +version="3.0.7" officialUrl="https://www.openssl.org/source/openssl-$version.tar.gz" -cachedUrl="http://ci-files01-hki.intra.qt.io/input/openssl/openssl-$version.tar.gz" +cachedUrl="http://ci-files01-hki.ci.qt.io/input/openssl/openssl-$version.tar.gz" targetFile="/tmp/openssl-$version.tar.gz" -sha="bad9dc4ae6dcc1855085463099b5dacb0ec6130b" +sha="f20736d6aae36bcbfa9aba0d358c71601833bf27" opensslHome="${HOME}/openssl-${version}" opensslSource="${opensslHome}-src" DownloadURL "$cachedUrl" "$officialUrl" "$sha" "$targetFile" @@ -62,16 +25,21 @@ cd "$opensslSource" pwd if [[ "$os" == "linux" ]]; then - ./Configure --prefix="$opensslHome" shared no-ssl3-method enable-ec_nistp_64_gcc_128 linux-x86_64 "-Wa,--noexecstack" + if [ $(uname -m) = aarch64 ]; then + arch=$(uname -m) + else + arch="x86_64" + fi + ./Configure --prefix="$opensslHome" shared enable-ec_nistp_64_gcc_128 "linux-$arch" "-Wa,--noexecstack" make && make install_sw install_ssldirs SetEnvVar "OPENSSL_HOME" "$opensslHome" - if uname -a |grep -q "Ubuntu"; then - echo "export LD_LIBRARY_PATH=$opensslHome/lib:$LD_LIBRARY_PATH" >> ~/.bash_profile + SetEnvVar "PATH" "\"$opensslHome/bin:\$PATH\"" + if uname -a |grep -q "Debian"; then + SetEnvVar "LD_LIBRARY_PATH" "\"$opensslHome/lib:$LD_LIBRARY_PATH\"" else - echo "export LD_LIBRARY_PATH=$opensslHome/lib:$LD_LIBRARY_PATH" >> ~/.bashrc + SetEnvVar "LD_LIBRARY_PATH" "\"$opensslHome/lib64:$LD_LIBRARY_PATH\"" fi - -elif [ "$os" == "macos" -o "$os" == "macos-universal" ]; then +elif [ "$os" == "macos" ] || [ "$os" == "macos-universal" ]; then # Below target location has been hard coded into Coin. # QTQAINFRA-1195 echo "prefix=$prefix" @@ -81,13 +49,13 @@ elif [ "$os" == "macos" -o "$os" == "macos-universal" ]; then openssl_install_dir="$prefix/openssl-$version" opensslTargetLocation="$prefix/opt/openssl" - commonFlags="no-tests shared no-ssl3-method enable-ec_nistp_64_gcc_128 -Wa,--noexecstack" + commonFlags=(no-tests shared no-ssl3-method enable-ec_nistp_64_gcc_128 "-Wa,--noexecstack") - export MACOSX_DEPLOYMENT_TARGET=10.14 + export MACOSX_DEPLOYMENT_TARGET=12 opensslBuild="${opensslHome}-build" opensslDestdir="${opensslHome}-destdir" - mkdir -p $opensslBuild + mkdir -p "$opensslBuild" if [ "$os" == "macos-universal" ]; then archs="x86_64 arm64" @@ -96,10 +64,10 @@ elif [ "$os" == "macos" -o "$os" == "macos-universal" ]; then fi for arch in $archs; do - cd $opensslBuild + cd "$opensslBuild" echo "Configuring OpenSSL for $arch" - mkdir -p $arch && cd $arch - $opensslSource/Configure --prefix=$openssl_install_dir $commonFlags darwin64-$arch-cc + mkdir -p "$arch" && cd "$arch" + "$opensslSource/Configure" --prefix="$openssl_install_dir" "${commonFlags[@]}" "darwin64-$arch-cc" echo "Building OpenSSL for $arch in $PWD" make >> /tmp/openssl_make.log 2>&1 @@ -111,19 +79,19 @@ elif [ "$os" == "macos" -o "$os" == "macos-universal" ]; then destdir="" fi # shellcheck disable=SC2024 - sudo make install_sw install_ssldirs DESTDIR=$destdir >> /tmp/openssl_make_install.log 2>&1 + sudo make install_sw install_ssldirs DESTDIR="$destdir" >> /tmp/openssl_make_install.log 2>&1 done if [ "$os" == "macos-universal" ]; then echo "Making universal OpenSSL package" # shellcheck disable=SC2024 sudo rm -Rf "$openssl_install_dir" - sudo ${SCRIPT_DIR}/../macos/makeuniversal.sh "$opensslDestdir/x86_64" $opensslDestdir/arm64 + sudo "${SCRIPT_DIR}/../macos/makeuniversal.sh" "$opensslDestdir/x86_64" "$opensslDestdir/arm64" fi path=$(echo "$opensslTargetLocation" | sed -E 's/(.*)\/.*$/\1/') sudo mkdir -p "$path" - sudo ln -s $openssl_install_dir $opensslTargetLocation + sudo ln -s "$openssl_install_dir" "$opensslTargetLocation" SetEnvVar "PATH" "\"$opensslTargetLocation/bin:\$PATH\"" SetEnvVar "MANPATH" "\"$opensslTargetLocation/share/man:\$MANPATH\"" @@ -132,8 +100,8 @@ elif [ "$os" == "macos" -o "$os" == "macos-universal" ]; then SetEnvVar "OPENSSL_INCLUDE" "\"$openssl_install_dir/include\"" SetEnvVar "OPENSSL_LIB" "\"$openssl_install_dir/lib\"" - security find-certificate -a -p /Library/Keychains/System.keychain | sudo tee -a $opensslTargetLocation/ssl/cert.pem > /dev/null - security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain | sudo tee -a $opensslTargetLocation/ssl/cert.pem > /dev/null + security find-certificate -a -p /Library/Keychains/System.keychain | sudo tee -a "$opensslTargetLocation/ssl/cert.pem" > /dev/null + security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain | sudo tee -a "$opensslTargetLocation/ssl/cert.pem" > /dev/null fi diff --git a/coin/provisioning/common/unix/install_grpc.sh b/coin/provisioning/common/unix/install_grpc.sh new file mode 100755 index 00000000..3b94816a --- /dev/null +++ b/coin/provisioning/common/unix/install_grpc.sh @@ -0,0 +1,84 @@ +#!/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 + +# This script installs gRPC from sources. +set -ex + +# shellcheck source=./DownloadURL.sh +source "${BASH_SOURCE%/*}/DownloadURL.sh" +# shellcheck source=./SetEnvVar.sh +source "${BASH_SOURCE%/*}/SetEnvVar.sh" + +# Extract cmake path from the environment +if uname -a |grep -q "Ubuntu"; then + if lsb_release -a |grep -q "Ubuntu 22.04"; then +# shellcheck source=/dev/null + source ~/.bash_profile + else +# shellcheck source=/dev/null + source ~/.profile + fi +else +# shellcheck source=/dev/null + source ~/.bashrc +fi + +version="1.50.1" +sha1="be1b0c3dbfbc9714824921f50dffb7cf044da5ab" +internalUrl="http://ci-files01-hki.ci.qt.io/input/automotive_suite/grpc-all-$version.zip" +externalUrl="" +installPrefix="$HOME/install-grpc-$version" + +targetDir="$HOME/grpc-$version" +targetFile="$targetDir.zip" +DownloadURL "$internalUrl" "$externalUrl" "$sha1" "$targetFile" +unzip -q "$targetFile" -d "$HOME" +sudo rm "$targetFile" + +# devtoolset is needed when running configuration +if uname -a |grep -qv "Darwin"; then + export PATH="/opt/rh/devtoolset-7/root/usr/bin:$PATH" +fi + +if uname -a |grep -q Darwin; then + extraCMakeArgs=("-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=12) + SetEnvVar PATH "\$PATH:$installPrefix/bin" +fi + +# MacOS +if [[ -n "$OPENSSL_DIR" ]]; then + extraOpenSslArg=-DOPENSSL_ROOT_DIR=$OPENSSL_DIR +# Linux +elif [[ -n "$OPENSSL_HOME" ]]; then + extraOpenSslArg=-DOPENSSL_ROOT_DIR=$OPENSSL_HOME +fi + +echo "Configuring and building gRPC" + +buildDir="$HOME/build-grpc-$version" +mkdir -p "$buildDir" +cd "$buildDir" +cmake "$targetDir" -G"Ninja Multi-Config" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_CONFIGURATION_TYPES="Release;Debug;RelWithDebugInfo" \ + -DCMAKE_INSTALL_PREFIX="$installPrefix" \ + "${extraCMakeArgs[@]}" \ + "$extraOpenSslArg" \ + -DgRPC_BUILD_TESTS=OFF \ + -DgRPC_PROTOBUF_PROVIDER="package" \ + -DgRPC_SSL_PROVIDER="package" \ + -DgRPC_ZLIB_PROVIDER="package" +ninja all + +sudo env "PATH=$PATH" ninja install +# Refresh shared library cache if OS isn't macOS +if uname -a |grep -qv "Darwin"; then + sudo ldconfig +fi + +SetEnvVar "gRPC_ROOT" "$installPrefix" +SetEnvVar "absl_ROOT" "$installPrefix" + +sudo rm -rf "$targetDir" +sudo rm -rf "$buildDir" diff --git a/coin/provisioning/common/unix/install_protobuf.sh b/coin/provisioning/common/unix/install_protobuf.sh new file mode 100755 index 00000000..110d8b9c --- /dev/null +++ b/coin/provisioning/common/unix/install_protobuf.sh @@ -0,0 +1,101 @@ +#!/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 + +# shellcheck source=./DownloadURL.sh +source "${BASH_SOURCE%/*}/DownloadURL.sh" +# shellcheck source=./SetEnvVar.sh +source "${BASH_SOURCE%/*}/SetEnvVar.sh" + +# Extract cmake path from the environment +if uname -a |grep -q "Ubuntu"; then + if lsb_release -a |grep "Ubuntu 22.04"; then + source ~/.bash_profile + else + source ~/.profile + fi +else + source ~/.bashrc +fi + +# This script will install Google's Protocal Buffers + +version="21.9" +sha1="3226a0e49d048759b702ae524da79387c59f05cc" +internalUrl="http://ci-files01-hki.ci.qt.io/input/automotive_suite/protobuf-all-$version.zip" +externalUrl="https://github.com/protocolbuffers/protobuf/releases/download/v$version/protobuf-all-$version.zip" + +targetDir="$HOME/protobuf-$version" +targetFile="$targetDir.zip" +DownloadURL "$internalUrl" "$externalUrl" "$sha1" "$targetFile" +unzip "$targetFile" -d "$HOME" +sudo rm "$targetFile" + +cd $targetDir + +if uname -a |grep -q "Ubuntu"; then + echo 'diff --git a/cmake/conformance.cmake b/cmake/conformance.cmake +index d6c435ac3..d6fb3a7df 100644 +--- a/cmake/conformance.cmake ++++ b/cmake/conformance.cmake +@@ -24,6 +24,8 @@ add_executable(conformance_test_runner + ${protobuf_SOURCE_DIR}/conformance/conformance.pb.cc + ${protobuf_SOURCE_DIR}/conformance/conformance_test.cc + ${protobuf_SOURCE_DIR}/conformance/conformance_test_runner.cc ++ ${protobuf_SOURCE_DIR}/conformance/conformance_test_main.cc ++ ${protobuf_SOURCE_DIR}/conformance/text_format_conformance_suite.cc + ${protobuf_SOURCE_DIR}/conformance/third_party/jsoncpp/json.h + ${protobuf_SOURCE_DIR}/conformance/third_party/jsoncpp/jsoncpp.cpp + ${protobuf_SOURCE_DIR}/src/google/protobuf/test_messages_proto2.pb.cc +@@ -36,6 +38,10 @@ add_executable(conformance_cpp + ${protobuf_SOURCE_DIR}/src/google/protobuf/test_messages_proto2.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/test_messages_proto3.pb.cc + ) ++install(TARGETS conformance_test_runner ++ RUNTIME DESTINATION COMPONENT conformance ++ LIBRARY DESTINATION COMPONENT conformance ++ ARCHIVE DESTINATION COMPONENT conformance) + + target_include_directories( + conformance_test_runner' | patch -p1 + extraCMakeArgs=("-Dprotobuf_BUILD_CONFORMANCE=ON") +fi + +# devtoolset is needed when running configuration +if uname -a |grep -qv "Darwin"; then + export PATH="/opt/rh/devtoolset-7/root/usr/bin:$PATH" +fi + +echo "Configuring and building protobuf" + +installPrefix="/usr/local" +if uname -a |grep -q Darwin; then + extraCMakeArgs=("-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=12) + SetEnvVar PATH "\$PATH:$installPrefix/bin" +fi + +buildDir="$HOME/build-protobuf-$version" +mkdir "$buildDir" +cd "$buildDir" +cmake "$targetDir" -G"Ninja Multi-Config" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_INSTALL_PREFIX=$installPrefix \ + "${extraCMakeArgs[@]}" \ + -Dprotobuf_BUILD_TESTS=OFF \ + -Dprotobuf_BUILD_EXAMPLES=OFF \ + -Dprotobuf_BUILD_PROTOC_BINARIES=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -Dprotobuf_WITH_ZLIB=OFF \ + -DCMAKE_CONFIGURATION_TYPES="Release;Debug;RelWithDebugInfo" \ + -DCMAKE_CROSS_CONFIGS=all \ + -DCMAKE_DEFAULT_CONFIGS=all +ninja all:all +sudo env "PATH=$PATH" ninja install:all + +# Refresh shared library cache if OS isn't macOS +if uname -a |grep -qv "Darwin"; then + sudo ldconfig +fi + +sudo rm -r "$targetDir" +sudo rm -r "$buildDir" diff --git a/coin/provisioning/common/unix/install_protobuff.sh b/coin/provisioning/common/unix/install_protobuff.sh deleted file mode 100755 index fb5ae853..00000000 --- a/coin/provisioning/common/unix/install_protobuff.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# - -# shellcheck source=./DownloadURL.sh -source "${BASH_SOURCE%/*}/DownloadURL.sh" -# shellcheck source=./SetEnvVar.sh -source "${BASH_SOURCE%/*}/SetEnvVar.sh" - -# This script will install Google's Protocal Buffers which is needed by Automotive Suite - -version="3.6.1" -sha1="44b8ba225f3b4dc45fb56d5881ec6a91329802b6" -internalUrl="http://ci-files01-hki.intra.qt.io/input/automotive_suite/protobuf-all-$version.zip" -externalUrl="https://github.com/protocolbuffers/protobuf/releases/download/v$version/protobuf-all-$version.zip" - -targetDir="$HOME/protobuf-$version" -targetFile="$targetDir.zip" -DownloadURL "$internalUrl" "$externalUrl" "$sha1" "$targetFile" -unzip "$targetFile" -d "$HOME" -sudo rm "$targetFile" - -# devtoolset is needed when running configuration -if uname -a |grep -qv "Darwin"; then - export PATH="/opt/rh/devtoolset-7/root/usr/bin:$PATH" -fi - -echo "Configuring and building protobuf" -cd "$targetDir" -if uname -a |grep -q Darwin; then - ./configure --prefix "$(xcrun --sdk macosx --show-sdk-path)/usr/local" - SetEnvVar PATH "\$PATH:$(xcrun --sdk macosx --show-sdk-path)/usr/local/bin" -else - ./configure -fi -make -j5 -sudo make install - -# Refresh shared library cache if OS isn't macOS -if uname -a |grep -qv "Darwin"; then - sudo ldconfig -fi - -sudo rm -r "$targetDir" diff --git a/coin/provisioning/common/unix/libclang-v100-dyn.sh b/coin/provisioning/common/unix/libclang-v100-dyn.sh index ee982973..14194f55 100755 --- a/coin/provisioning/common/unix/libclang-v100-dyn.sh +++ b/coin/provisioning/common/unix/libclang-v100-dyn.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # PySide versions following 5.6 use a C++ parser based on Clang (http://clang.org/). # The Clang library (C-bindings), version 3.9 or higher is required for building. @@ -59,23 +22,23 @@ if uname -a |grep -q Darwin; then version=$libclang_version url="https://download.qt.io/development_releases/prebuilt/libclang/libclang-release_${version//\./}-based-mac.7z" sha1="0fe1fa50b1b469d2c05acc3a3468bc93a66f1e5a" - url_cached="http://ci-files01-hki.intra.qt.io/input/libclang/dynamic/libclang-release_${version//\./}-based-mac.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/dynamic/libclang-release_${version//\./}-based-mac.7z" elif test -f /etc/redhat-release || /etc/centos-release; then version=$libclang_version url="https://download.qt.io/development_releases/prebuilt/libclang/libclang-release_${version//\./}-based-linux-Rhel7.6-gcc5.3-x86_64.7z" sha1="1d2e265502fc0832a854f989d757105833fbd179" - url_cached="http://ci-files01-hki.intra.qt.io/input/libclang/dynamic/libclang-release_${version//\./}-based-linux-Rhel7.6-gcc5.3-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/dynamic/libclang-release_${version//\./}-based-linux-Rhel7.6-gcc5.3-x86_64.7z" else version=$libclang_version url="https://download.qt.io/development_releases/prebuilt/libclang/dynamic/libclang-release_${version//\./}-based-linux-Ubuntu18.04-gcc9.2-x86_64.7z" sha1="c1580acb3a82e193acf86f18afb52427c5e67de8" - url_cached="http://ci-files01-hki.intra.qt.io/input/libclang/libclang-release_${version//\./}-based-linux-Ubuntu18.04-gcc9.2-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/libclang-release_${version//\./}-based-linux-Ubuntu18.04-gcc9.2-x86_64.7z" fi zip="/tmp/libclang.7z" destination="/usr/local/libclang-dynlibs-$version" -DownloadURL $url_cached $url $sha1 $zip +DownloadURL "$url_cached" "$url" "$sha1" "$zip" if command -v 7zr &> /dev/null; then sudo 7zr x $zip -o/usr/local/ else @@ -85,5 +48,5 @@ sudo mv /usr/local/libclang "$destination" rm -rf $zip -echo "export LLVM_DYNAMIC_LIBS_100=$destination" >> ~/.bash_profile +SetEnvVar "LLVM_DYNAMIC_LIBS_100" "$destination" echo "libClang for QtForPython= $version" >> ~/versions.txt diff --git a/coin/provisioning/common/unix/libclang.sh b/coin/provisioning/common/unix/libclang.sh index 53a76469..5f75d7e4 100755 --- a/coin/provisioning/common/unix/libclang.sh +++ b/coin/provisioning/common/unix/libclang.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # PySide versions following 5.6 use a C++ parser based on Clang (http://clang.org/). # The Clang library (C-bindings), version 3.9 or higher is required for building. @@ -53,23 +16,37 @@ source "${BASH_SOURCE%/*}/SetEnvVar.sh" # shellcheck source=./DownloadURL.sh source "${BASH_SOURCE%/*}/DownloadURL.sh" -libclang_version=12.0 +PROVISIONING_DIR="$(dirname "$0")/../../" +# shellcheck source=./common.sourced.sh +source "$PROVISIONING_DIR"/common/unix/common.sourced.sh + +libclang_version="15.0.0" if uname -a |grep -q Darwin; then version=$libclang_version - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_${version//\./}-based-mac.7z" - url_cached="http://ci-files01-hki.intra.qt.io/input/libclang/qt/libclang-release_${version//\./}-based-mac.7z" - sha1="bb9223450c1c36ee37d8c91e876dba82db117a7a" -elif test -f /etc/redhat-release && cat /etc/redhat-release | grep "Red Hat" | grep -v "8" ; then + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_${version}-based-mac.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_${version}-based-mac.7z" + sha1="6d916a17459c81551dde47580ae3f071e93338a5" +elif test -f /etc/redhat-release && grep "Red Hat" /etc/redhat-release | grep -v "8" ; then version=$libclang_version - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_${version//\./}-based-linux-CentOS8.3-gcc9.2-x86_64.7z" - url_cached="http://ci-files01-hki.intra.qt.io/input/libclang/qt/libclang-release_${version//\./}-based-linux-CentOS8.3-gcc9.2-x86_64.7z" - sha1="d02e4dd30fe3f810c3a0cdcbed5870dec56ed91b" + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_${version}-based-linux-Rhel8.4-gcc10.0-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_${version}-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_${version}-based-linux-Ubuntu22.04-gcc11.2-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_${version}-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_${version}-based-linux-Debian11.6-gcc10.0-arm64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_${version}-based-linux-Debian11.6-gcc10.0-arm64.7z" + sha1="43f0210121b889107e3dab631e8104e661a3866b" else version=$libclang_version - url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_${version//\./}-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z" - url_cached="http://ci-files01-hki.intra.qt.io/input/libclang/qt/libclang-release_${version//\./}-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z" - sha1="81b3e640befa23b5cdebd59e206dc79e4de20ba3" + url="https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_${version}-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z" + url_cached="http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_${version}-based-linux-Ubuntu20.04-gcc9.3-x86_64.7z" + sha1="bd6615012b8bdb2720a45ede56e05f6db7191843" fi zip="/tmp/libclang.7z" @@ -85,9 +62,5 @@ sudo mv /usr/local/libclang "$destination" rm -rf $zip -echo "export LLVM_INSTALL_DIR=$destination" >> ~/.bash_profile +SetEnvVar "LLVM_INSTALL_DIR" "$destination" echo "libClang = $version" >> ~/versions.txt - -# This is a hacked static build of libclang which requires special -# handling on the qdoc side. -SetEnvVar "QDOC_USE_STATIC_LIBCLANG" "1" diff --git a/coin/provisioning/common/unix/mqtt_broker.sh b/coin/provisioning/common/unix/mqtt_broker.sh index 21da3776..d3cce755 100755 --- a/coin/provisioning/common/unix/mqtt_broker.sh +++ b/coin/provisioning/common/unix/mqtt_broker.sh @@ -1,43 +1,6 @@ #!/bin/bash - -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 installs paho testing broker @@ -46,7 +9,7 @@ source "${BASH_SOURCE%/*}/InstallFromCompressedFileFromURL.sh" source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" CommitSHA="2873885d7e840b4e06483f36f170c609eb30527d" -PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/mqtt_broker/paho.mqtt.testing-$CommitSHA.zip" +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" targetFolder="/opt/paho_broker" diff --git a/coin/provisioning/common/unix/openssl_3_for_android.sh b/coin/provisioning/common/unix/openssl_3_for_android.sh new file mode 100755 index 00000000..0ad79315 --- /dev/null +++ b/coin/provisioning/common/unix/openssl_3_for_android.sh @@ -0,0 +1,76 @@ +#!/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 prebuilt OpenSSL which was built against Android NDK 25. +# OpenSSL build will fail with Android NDK 22, because it's missing platforms and sysroot directories + +set -ex +# shellcheck source=../unix/DownloadURL.sh +source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" +# shellcheck source=../unix/SetEnvVar.sh +source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" + +version="3.0.7" +ndkVersionLatest="r26b" +ndkVersionDefault=$ndkVersionLatest +prebuiltOpensslNdkShaLatest="ea925d5a5b696916fb3650403a2eb3189c52b5ce" +prebuiltOpensslNdkShaDefault=$prebuiltOpensslNdkShaLatest + +: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK 25 +# 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. +if uname -a |grep -q "Ubuntu"; then + # shellcheck disable=SC1090 + grep -e "^export" "$HOME/.profile" > $exports_file && source $exports_file + rm -rf "$exports_file" +else + # shellcheck disable=SC1090 + grep -e "^export" "$HOME/.bashrc" > $exports_file && source $exports_file + rm -rf "$exports_file" +fi + +# ANDROID_NDK_ROOT is required during Configure +export ANDROID_NDK_ROOT=/opt/android/android-ndk-r26b + +officialUrl="https://www.openssl.org/source/openssl-$version.tar.gz" +cachedUrl="http://ci-files01-hki.ci.qt.io/input/openssl/openssl-$version.tar.gz" +targetFile="/tmp/openssl-$version.tar.gz" +sha="f20736d6aae36bcbfa9aba0d358c71601833bf27" +opensslHome="${HOME}/openssl/android/openssl-${version}" +DownloadURL "$cachedUrl" "$officialUrl" "$sha" "$targetFile" +mkdir -p "${HOME}/openssl/android/" +tar -xzf "$targetFile" -C "${HOME}/openssl/android/" +if uname -a |grep -q "Darwin"; then + TOOLCHAIN=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/bin +else + TOOLCHAIN=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin +fi +cd "$opensslHome" +PATH=$TOOLCHAIN:$PATH CC=clang ./Configure android-arm +PATH=$TOOLCHAIN:$PATH CC=clang make build_generated +EOB + +function InstallPrebuiltOpenssl() { + + ndkVersion=$1 + sha=$2 + + opensslHome="${HOME}/prebuilt-openssl-${version}-for-android-ndk-${ndkVersion}" + if [[ ! -d ${opensslHome} ]]; then + prebuiltUrl="http://ci-files01-hki.ci.qt.io/input/openssl/prebuilt-openssl-${version}-for-android-ndk-${ndkVersion}.zip" + targetFile="/tmp/prebuilt-openssl-${version}-for-android-ndk-${ndkVersion}.zip" + + DownloadURL "$prebuiltUrl" "$prebuiltUrl" "$sha" "$targetFile" + unzip -o "$targetFile" -d "${HOME}" + sudo rm -f "$targetFile" + fi +} + +InstallPrebuiltOpenssl $ndkVersionDefault $prebuiltOpensslNdkShaDefault +SetEnvVar "OPENSSL_ANDROID_HOME_DEFAULT" "$opensslHome" +InstallPrebuiltOpenssl $ndkVersionLatest $prebuiltOpensslNdkShaLatest +SetEnvVar "OPENSSL_ANDROID_HOME_LATEST" "$opensslHome" + +echo "OpenSSL for Android = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/unix/openssl_for_android.sh b/coin/provisioning/common/unix/openssl_for_android.sh index e2cb4395..d555e0cc 100755 --- a/coin/provisioning/common/unix/openssl_for_android.sh +++ b/coin/provisioning/common/unix/openssl_for_android.sh @@ -1,45 +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 -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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 install prebuilt OpenSSL which was built against Android NDK 21. +# This script install prebuilt OpenSSL which was built against Android NDK 25. # OpenSSL build will fail with Android NDK 22, because it's missing platforms and sysroot directories set -ex @@ -48,9 +11,14 @@ source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" # shellcheck source=../unix/SetEnvVar.sh source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh" -version="1.1.1k" -: ' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK 21 -# Source built requires GCC and Perl to be in PATH. +version="3.0.7" +ndkVersionLatest="r26b" +ndkVersionDefault=$ndkVersionLatest +prebuiltOpensslNdkShaLatest="ea925d5a5b696916fb3650403a2eb3189c52b5ce" +prebuiltOpensslNdkShaDefault=$prebuiltOpensslNdkShaLatest + +: <<'EOB' SOURCE BUILD INSTRUCTIONS - Openssl prebuilt was made using Android NDK r26b +# 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. if uname -a |grep -q "Ubuntu"; then @@ -64,9 +32,9 @@ else fi officialUrl="https://www.openssl.org/source/openssl-$version.tar.gz" -cachedUrl="http://ci-files01-hki.intra.qt.io/input/openssl/openssl-$version.tar.gz" +cachedUrl="http://ci-files01-hki.ci.qt.io/input/openssl/openssl-$version.tar.gz" targetFile="/tmp/openssl-$version.tar.gz" -sha="bad9dc4ae6dcc1855085463099b5dacb0ec6130b" +sha="f20736d6aae36bcbfa9aba0d358c71601833bf27" opensslHome="${HOME}/openssl/android/openssl-${version}" DownloadURL "$cachedUrl" "$officialUrl" "$sha" "$targetFile" mkdir -p "${HOME}/openssl/android/" @@ -79,20 +47,27 @@ fi cd "$opensslHome" PATH=$TOOLCHAIN:$PATH CC=clang ./Configure android-arm PATH=$TOOLCHAIN:$PATH CC=clang make build_generated -' +EOB -if uname -a |grep -q "Darwin"; then - prebuiltUrl="http://ci-files01-hki.intra.qt.io/input/openssl/prebuilt-openssl-1_1_1_k_for-android-ndk-21_darwin.tar.gz" - sha="6e3e48441ff58596f25bc27fdc05ae43e5a7581d" -else - prebuiltUrl="http://ci-files01-hki.intra.qt.io/input/openssl/prebuilt-openssl-1_1_1_k_for-android-ndk-21.tar.gz" - sha="8c4db1eb8460d749c998a0e033b3939123cbc5ac" -fi -targetFile="/tmp/prebuilt-openssl-$version.tar.gz" -DownloadURL "$prebuiltUrl" "$prebuiltUrl" "$sha" "$targetFile" -tar -xzf "$targetFile" -C "${HOME}" +function InstallPrebuiltOpenssl() { -opensslHome="${HOME}/openssl/android/openssl-${version}" -SetEnvVar "OPENSSL_ANDROID_HOME" "$opensslHome" + ndkVersion=$1 + sha=$2 + + opensslHome="${HOME}/prebuilt-openssl-${version}-for-android-ndk-${ndkVersion}" + if [[ ! -d ${opensslHome} ]]; then + prebuiltUrl="http://ci-files01-hki.ci.qt.io/input/openssl/prebuilt-openssl-${version}-for-android-ndk-${ndkVersion}.zip" + targetFile="/tmp/prebuilt-openssl-${version}-for-android-ndk-${ndkVersion}.zip" + + DownloadURL "$prebuiltUrl" "$prebuiltUrl" "$sha" "$targetFile" + unzip -o "$targetFile" -d "${HOME}" + sudo rm -f "$targetFile" + fi +} + +InstallPrebuiltOpenssl $ndkVersionDefault $prebuiltOpensslNdkShaDefault +SetEnvVar "OPENSSL_ANDROID_HOME_DEFAULT" "$opensslHome" +InstallPrebuiltOpenssl $ndkVersionLatest $prebuiltOpensslNdkShaLatest +SetEnvVar "OPENSSL_ANDROID_HOME_LATEST" "$opensslHome" echo "OpenSSL for Android = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/unix/pyenv.rb b/coin/provisioning/common/unix/pyenv.rb new file mode 100644 index 00000000..0c2781ff --- /dev/null +++ b/coin/provisioning/common/unix/pyenv.rb @@ -0,0 +1,80 @@ +class Pyenv < Formula + desc "Python version management" + homepage "https://github.com/pyenv/pyenv" + url "https://github.com/pyenv/pyenv/archive/refs/tags/v2.3.15.tar.gz" + sha256 "cf6499e1c8f18fb3473c2afdf5f14826fd42a1c4b051219faea104e38036e4bb" + license "MIT" + version_scheme 1 + head "https://github.com/pyenv/pyenv.git", branch: "master" + + livecheck do + url :stable + regex(/^v?(\d+(?:\.\d+)+(-\d+)?)$/i) + end + + bottle do + sha256 cellar: :any, arm64_ventura: "ff68efd633ee282abb0c0a6ba72f90d5248644f3143f40e15841b6ae7996e3cd" + sha256 cellar: :any, arm64_monterey: "af7621550cc7c005549d96218d2606a521e12595f2efc9ae9d8523cc46d318ba" + sha256 cellar: :any, arm64_big_sur: "69d69ceeea16fe45346d8856bf213c0a0e48220097635cf17d40b98fa8e12f83" + sha256 cellar: :any, ventura: "48fb21656dc11dc0a6ef25eb7cb5e8829485c1e1fac7d1ca596a46771a9ad91d" + sha256 cellar: :any, monterey: "96ba1d1702b7620dd9d0d2fe030af4d31c83504afea1b119910ab2e9c9fbb08c" + sha256 cellar: :any, big_sur: "f96dfcecefb40d4794a8ea3ef5981bdeab6e64c412f18f0c128b1d64fe87d913" + sha256 cellar: :any_skip_relocation, x86_64_linux: "83737a776f4828a7fb5eb289b10418b7cf829cccca3fc634d7dfe7c96aff4e7e" + end + + depends_on "autoconf" + depends_on "openssl@3" + depends_on "pkg-config" + depends_on "readline" + + uses_from_macos "python" => :test + uses_from_macos "bzip2" + uses_from_macos "libffi" + uses_from_macos "ncurses" + uses_from_macos "xz" + uses_from_macos "zlib" + + def install + inreplace "libexec/pyenv", "/usr/local", HOMEBREW_PREFIX + inreplace "libexec/pyenv-rehash", "$(command -v pyenv)", opt_bin/"pyenv" + inreplace "pyenv.d/rehash/source.bash", "$(command -v pyenv)", opt_bin/"pyenv" + + system "src/configure" + system "make", "-C", "src" + + prefix.install Dir["*"] + %w[pyenv-install pyenv-uninstall python-build].each do |cmd| + bin.install_symlink "#{prefix}/plugins/python-build/bin/#{cmd}" + end + + share.install prefix/"man" + + # Do not manually install shell completions. See: + # - pyenv/pyenv#1056#issuecomment-356818337 + # - Homebrew/homebrew-core#22727 + end + + test do + # Create a fake python version and executable. + pyenv_root = Pathname(shell_output("#{bin}/pyenv root").strip) + python_bin = pyenv_root/"versions/1.2.3/bin" + foo_script = python_bin/"foo" + foo_script.write "echo hello" + chmod "+x", foo_script + + # Test versions. + versions = shell_output("eval \"$(#{bin}/pyenv init --path)\" " \ + "&& eval \"$(#{bin}/pyenv init -)\" " \ + "&& #{bin}/pyenv versions").split("\n") + assert_equal 2, versions.length + assert_match(/\* system/, versions[0]) + assert_equal(" 1.2.3", versions[1]) + + # Test rehash. + system bin/"pyenv", "rehash" + refute_match "Cellar", (pyenv_root/"shims/foo").read + assert_equal "hello", shell_output("eval \"$(#{bin}/pyenv init --path)\" " \ + "&& eval \"$(#{bin}/pyenv init -)\" " \ + "&& PYENV_VERSION='1.2.3' foo").chomp + end +end diff --git a/coin/provisioning/common/unix/python_modules.sh b/coin/provisioning/common/unix/python_modules.sh index c4b60867..00009836 100755 --- a/coin/provisioning/common/unix/python_modules.sh +++ b/coin/provisioning/common/unix/python_modules.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # needed by packaging scripts pip3 install bs4 diff --git a/coin/provisioning/common/unix/sccache.sh b/coin/provisioning/common/unix/sccache.sh index 7adfed32..8a403ba7 100755 --- a/coin/provisioning/common/unix/sccache.sh +++ b/coin/provisioning/common/unix/sccache.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 @@ -50,7 +13,7 @@ function installSccache { targetVersion=$2 sha1=$3 targetFile=sccache-$targetVersion-$targetArch.tar.gz - primaryUrl=http://ci-files01-hki.intra.qt.io/input/sccache/$targetFile + primaryUrl=http://ci-files01-hki.ci.qt.io/input/sccache/$targetFile cacheUrl=https://github.com/mozilla/sccache/releases/download/$targetVersion/$targetFile DownloadURL "$primaryUrl" "$cacheUrl" "$sha1" "$targetFile" @@ -62,4 +25,11 @@ function installSccache { # disable sccache server from shutting down after being idle SetEnvVar "SCCACHE_IDLE_TIMEOUT" "0" + + # copy sccache wrapper and place as a first in PATH + mkdir -p "$HOME/sccache_wrapper" + cp "${BASH_SOURCE%/*}/sccache_wrapper" "$HOME/sccache_wrapper/sccache" + chmod 755 "$HOME/sccache_wrapper/sccache" + SetEnvVar "PATH" "$HOME/sccache_wrapper:\$PATH" + } diff --git a/coin/provisioning/common/unix/sccache_wrapper b/coin/provisioning/common/unix/sccache_wrapper new file mode 100755 index 00000000..52e39513 --- /dev/null +++ b/coin/provisioning/common/unix/sccache_wrapper @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Call real sccache with original arguments +# sccache /opt/android/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none ...... +real_sccache=/usr/local/sccache/sccache +$real_sccache "$@" +retval=$? + +if test $retval -ne 0 +then + echo "Sccache command failed, re-try calling build tool directly" + "$@" + retval=$? +fi +exit $retval diff --git a/coin/provisioning/common/unix/squishInstall.sh b/coin/provisioning/common/unix/squishInstall.sh index 6f165e8b..0195d84a 100755 --- a/coin/provisioning/common/unix/squishInstall.sh +++ b/coin/provisioning/common/unix/squishInstall.sh @@ -1,43 +1,6 @@ #!/usr/bin/env bash - -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 source "${BASH_SOURCE%/*}/DownloadURL.sh" @@ -47,46 +10,50 @@ 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="6.7.1" -qtBranch="62x" +version="7.2.1" +qtBranch="66x" installFolder="/opt" squishFolder="$installFolder/squish" -preBuildCacheUrl="ci-files01-hki.intra.qt.io:/hdd/www/input/squish/jenkins_build/stable" -licenseUrl="http://ci-files01-hki.intra.qt.io/input/squish/coin/515x/.squish-3-license" -licenseSHA="e000d2f95b30b82f405b9dcbeb233cd43710a41a" +preBuildCacheUrl="ci-files01-hki.ci.qt.io:/hdd/www/input/squish/jenkins_build/stable" +licenseFile=".squish-license" +licenseBranch="squish_license" +licenseUrl="http://ci-files01-hki.ci.qt.io/input/squish/coin/$licenseBranch/$licenseFile" +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-515x-macx86_64.tar.gz" - sha1="1526d4d57f8025f83aad836a43e8fa0317dbddc2" + compressedFolder="prebuild-squish-$version-$qtBranch-mac.tar.gz" + sha1="7467c974b65255c86b8fccaeca90e0590d4f7c96" else compressedFolder="prebuild-squish-$version-$qtBranch-linux64.tar.gz" - sha1="d412c3389d95a65341b51d2e14cba47ce3b54a86" + sha1="950a6035c777c8ce0a50a0b3ad468044d07f898b" fi mountFolder="/tmp/squish" sudo mkdir "$mountFolder" +sudo mkdir "$testSuiteLocal" # Check which platform if uname -a |grep -q Darwin; then usersGroup="staff" - squishLicenseDir="/Users/qt" elif uname -a |grep -q "el7"; then usersGroup="qt" - squishLicenseDir="/root" elif uname -a |grep -q "Ubuntu"; then usersGroup="users" - squishLicenseDir="/home/qt" else usersGroup="users" - squishLicenseDir="/root" fi targetFileMount="$mountFolder"/"$compressedFolder" -echo "Mounting $preBuildCacheUrl to $mountFolder" +echo "Mounting Squish packages from $preBuildCacheUrl to $mountFolder" +echo "Mounting Squish test suite from $testSuiteUrl to $testSuiteLocal" if uname -a |grep -q Darwin; then sudo mount -o locallocks "$preBuildCacheUrl" "$mountFolder" + sudo mount -o locallocks "$testSuiteUrl" "$testSuiteLocal" else sudo mount "$preBuildCacheUrl" "$mountFolder" + sudo mount "$testSuiteUrl" "$testSuiteLocal" fi echo "Create $installFolder if needed" if [ ! -d "$installFolder" ]; then @@ -98,10 +65,6 @@ VerifyHash "$targetFileMount" "$sha1" echo "Uncompress $compressedFolder" sudo tar -xzf "$targetFileMount" --directory "$installFolder" -echo "Unmounting $mountFolder" -sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder" - -sudo mv "$installFolder/rta_squish_$version" "$squishFolder" if uname -a |grep -q Darwin; then sudo xattr -r -c "$squishFolder" fi @@ -109,40 +72,35 @@ 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_qt6 - sudo cp "$squishFolder/squish_for_qt6/tcl/lib/tcl8.6/init.tcl" /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 -DownloadURL "$licenseUrl" "$licenseUrl" "$licenseSHA" "$HOME/.squish-3-license" +echo "Download Squish license" +DownloadURL "$licenseUrl" "$licenseUrl" "$licenseSHA" "$HOME/$licenseFile" echo "Changing ownerships" sudo chown -R qt:$usersGroup "$squishFolder" -sudo chown qt:$usersGroup "$HOME/.squish-3-license" +sudo chown qt:$usersGroup "$HOME/$licenseFile" -echo "Set commands for environment variables in .bashrc" -if uname -a |grep -q "Ubuntu"; then - echo "export SQUISH_PATH=$squishFolder/squish_for_qt6" >> ~/.profile - echo "export PATH=\$PATH:$squishFolder/squish_for_qt6/bin" >> ~/.profile -else - echo "export SQUISH_PATH=$squishFolder/squish_for_qt6" >> ~/.bashrc - echo "export PATH=\$PATH:$squishFolder/squish_for_qt6/bin" >> ~/.bashrc -fi echo "Verifying Squish, available installations:" ls -la $squishFolder - -if "$squishFolder/squish_for_qt5/bin/squishrunner" --testsuite "$squishFolder/suite_test_squish" | grep "Squish test run successfully" ; then - echo "Squish for Qt5 installation tested successfully" -else - echo "Squish for Qt5 test failed! Package wasn't installed correctly." - exit 1 -fi -if "$squishFolder/squish_for_qt6/bin/squishrunner" --testsuite "$squishFolder/suite_test_squish" | grep "Squish test run successfully" ; then - echo "Squish for Qt6 installation tested successfully" -else - echo "Squish for Qt6 test failed! Package wasn't installed correctly." - exit 1 -fi - - +cd $squishFolder + +for squishInstallation in */ ; do + if "$squishInstallation/bin/squishrunner" --testsuite "$testSuiteLocal" | grep "Squish test run successfully" ; then + echo "Squish in $squishInstallation tested successfully" + else + echo "Testing Squish in $squishInstallation failed! Squish wasn't installed correctly." + exit 1 + fi +done + +echo "Clean up installation temp dirs" +echo "- Unmounting $mountFolder" +sudo diskutil unmount force "$mountFolder" || sudo umount -f "$mountFolder" || true + +echo "- Unmounting $testSuiteLocal" +sudo diskutil unmount force "$testSuiteLocal" || sudo umount -f "$testSuiteLocal" || true diff --git a/coin/provisioning/common/unix/telegraf_install.sh b/coin/provisioning/common/unix/telegraf_install.sh index 6436c8f8..7e1f8a47 100755 --- a/coin/provisioning/common/unix/telegraf_install.sh +++ b/coin/provisioning/common/unix/telegraf_install.sh @@ -1,43 +1,6 @@ -#!/bin/sh - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +#!/bin/bash +# Copyright (C) 2019 The 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 telegraf and ioping and our script telegraf-ioping.sh @@ -52,46 +15,56 @@ ######################## BOILERPLATE ########################### set -e - PROVISIONING_DIR="$(dirname "$0")/../../" -. "$PROVISIONING_DIR"/common/unix/common.sourced.sh - -. "$PROVISIONING_DIR"/common/unix/DownloadURL.sh +# shellcheck source=./common.sourced.sh +source "$PROVISIONING_DIR"/common/unix/common.sourced.sh +# shellcheck source=./DownloadURL.sh +source "$PROVISIONING_DIR"/common/unix/DownloadURL.sh -is_script_executed telegraf_install.sh \ +is_script_executed telegraf_install.sh \ || fatal "Script telegraf_install.sh should be executed, not sourced" ################################################################ -[ "$PROVISIONING_OS" = linux ] \ - && ioping_sha256=259abf04bcb84f4126ff97c04b6651e1cf5ea6d8a9ff364c769a26c95b6eeb44 \ - || ioping_sha256=55de6a2f1a5343e0ce8df31d82d47a9e79c7e612edbc6dfb39b5fc6fb358b2e3 -DownloadURL "http://ci-files01-hki.intra.qt.io/input/ioping/ioping.${PROVISIONING_OS}-${PROVISIONING_ARCH}" \ - '' "$ioping_sha256" ioping +if [ "$PROVISIONING_OS" = linux ] +then ioping_sha256=259abf04bcb84f4126ff97c04b6651e1cf5ea6d8a9ff364c769a26c95b6eeb44 +else ioping_sha256=55de6a2f1a5343e0ce8df31d82d47a9e79c7e612edbc6dfb39b5fc6fb358b2e3 +fi + +DownloadURL "http://ci-files01-hki.ci.qt.io/input/ioping/ioping.${PROVISIONING_OS}-${PROVISIONING_ARCH}" \ + '' "$ioping_sha256" ioping $CMD_INSTALL -m 755 ./ioping /usr/bin/ rm -f ioping # 2. Install custom ioping monitoring script -$CMD_INSTALL -m 755 "$PROVISIONING_DIR"/common/shared/telegraf/telegraf-ioping.sh /usr/bin/ +$CMD_INSTALL -m 755 "$PROVISIONING_DIR"/common/shared/telegraf/telegraf-ioping.sh /usr/bin/ # 3. Download and install telegraf -[ x"$PROVISIONING_OS" = xmacos ] && os=darwin || os=linux -[ x"$PROVISIONING_ARCH" = xx86 ] && arch=i386 || arch=amd64 +if [ "$PROVISIONING_OS" = macos ] +then os=darwin +else os=linux +fi + +if [ "$PROVISIONING_ARCH" = x86 ] +then arch=i386 +else arch=amd64 +fi + package_filename=telegraf-1.12.6_${os}_${arch}.tar.gz package_sha256_list="$PROVISIONING_DIR"/common/shared/telegraf/telegraf_packages.sha256.txt package_sha256=$(sed -n "s/.*$package_filename *//p" "$package_sha256_list") -DownloadURL \ - http://ci-files01-hki.intra.qt.io/input/telegraf/"$package_filename" \ - https://dl.influxdata.com/telegraf/releases/"$package_filename" \ - "$package_sha256" \ +DownloadURL \ + http://ci-files01-hki.ci.qt.io/input/telegraf/"$package_filename" \ + https://dl.influxdata.com/telegraf/releases/"$package_filename" \ + "$package_sha256" \ telegraf.tar.gz tar -xzf ./telegraf.tar.gz -C /tmp telegraf_binary=$(find /tmp/telegraf* -name telegraf -type f | grep /bin/ | head -1) -$CMD_INSTALL -m 755 "$telegraf_binary" /usr/bin/ +$CMD_INSTALL -m 755 "$telegraf_binary" /usr/bin/ rm -rf /tmp/telegraf* # 4. Edit config file with passwords diff --git a/coin/provisioning/common/unix/telegraf_password.sh b/coin/provisioning/common/unix/telegraf_password.sh index a8327de9..24df7054 100755 --- a/coin/provisioning/common/unix/telegraf_password.sh +++ b/coin/provisioning/common/unix/telegraf_password.sh @@ -1,51 +1,14 @@ -#!/bin/sh - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +#!/bin/bash +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only ######################## BOILERPLATE ########################### set -e - PROVISIONING_DIR="$(dirname "$0")/../../" -. "$PROVISIONING_DIR"/common/unix/common.sourced.sh +# shellcheck source=./common.sourced.sh +source "${BASH_SOURCE%/*}/common.sourced.sh" is_script_executed telegraf_password.sh \ || fatal "Script telegraf_password.sh should be executed, not sourced, to avoid leaking secrets in the logs" diff --git a/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 b/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 index bbef2f04..afbc7ff1 100644 --- a/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 +++ b/coin/provisioning/common/windows/3dstudio_3rdparty.ps1 @@ -2,7 +2,7 @@ $zip = Get-DownloadLocation "Qt3DStudio-3rdparty-win64-CI.zip" -$url = "http://ci-files01-hki.intra.qt.io/input/3rdparty/Qt3DStudio-3rdparty-win64-CI.zip" +$url = "http://ci-files01-hki.ci.qt.io/input/3rdparty/Qt3DStudio-3rdparty-win64-CI.zip" Download $url $url $zip Verify-Checksum $zip "08D740D2EFB4CBCDE7D012908B89AA48DE5CD4E1" diff --git a/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 b/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 index 10b0453f..b17f443c 100644 --- a/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 +++ b/coin/provisioning/common/windows/allow-remote-desktop-access.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script allows the Windows Remote Desktop Access diff --git a/coin/provisioning/common/windows/android-openssl.ps1 b/coin/provisioning/common/windows/android-openssl.ps1 index 325f6048..3542c907 100644 --- a/coin/provisioning/common/windows/android-openssl.ps1 +++ b/coin/provisioning/common/windows/android-openssl.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # Requires: 7z, perl and msys @@ -51,57 +15,88 @@ if (Is64BitWinHost) { # Msys need to be installed to target machine # More info and building instructions can be found from http://doc.qt.io/qt-5/opensslsupport.html -$version = "1.1.1k" -$zip = Get-DownloadLocation ("openssl-$version.tar.gz") -$prebuilt_zip = Get-DownloadLocation ("openssl-android-master-$version.zip") -$sha1 = "bad9dc4ae6dcc1855085463099b5dacb0ec6130b" -$prebuilt_sha1 = "07fad2a44ffa90261a779782bd64fe2304487945" -$destination = "C:\Utils\openssl-android-master" -$prebuilt_url = "\\ci-files01-hki.intra.qt.io\provisioning\openssl\openssl-android-master-$version.zip" - -# msys unix style paths -$ndkPath = "/c/Utils/Android/android-ndk-r22b" -$openssl_path = "/c/Utils/openssl-android-master" -$cc_path = "$ndkPath/toolchains/llvm/prebuilt/windows-x86_64/bin" -if ((Test-Path $prebuilt_url)) { - Download $prebuilt_url $prebuilt_url $prebuilt_zip - Verify-Checksum $prebuilt_zip $prebuilt_sha1 - Extract-7Zip $prebuilt_zip C:\Utils - Remove $prebuilt_zip -} else { - Download https://www.openssl.org/source/openssl-$version.tar.gz \\ci-files01-hki.intra.qt.io\provisioning\openssl\openssl-$version.tar.gz $zip - Verify-Checksum $zip $sha1 +$openssl_version = "3.0.7" +$ndk_version_latest = "r26b" +$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_default = "$prebuilt_sha1_ndk_latest" +$destination_prefix = "C:\Utils\prebuilt-openssl-${openssl_version}-for-android-ndk" + +function Install($1, $2) { + $ndk_version = $1 + $prebuilt_sha1 = $2 + + # msys unix style paths + $openssl_path = "/c/Utils/openssl-android-master" + $ndk_path = "/c/Utils/Android/android-ndk-${ndk_version}" + $cc_path = "$ndk_path/toolchains/llvm/prebuilt/windows-x86_64/bin" - Extract-7Zip $zip C:\Utils\tmp - Extract-7Zip C:\Utils\tmp\openssl-$version.tar C:\Utils\tmp - Move-Item C:\Utils\tmp\openssl-${version} $destination - Remove "$zip" + $prebuilt_url_openssl = "\\ci-files01-hki.ci.qt.io\provisioning\openssl\prebuilt-openssl-${openssl_version}-for-android-ndk-${ndk_version}.zip" + $prebuilt_zip_openssl = Get-DownloadLocation ("prebuilt-openssl-${openssl_version}-for-android-ndk-${ndk_version}.zip") - Write-Host "Configuring OpenSSL $version for Android..." - Push-Location $destination - # $ must be escaped in powershell... + if ((Test-Path $prebuilt_url_openssl)) { + Write-Host "Install prebuilt OpenSSL for Android" + Download $prebuilt_url_openssl $prebuilt_url_openssl $prebuilt_zip_openssl + Verify-Checksum $prebuilt_zip_openssl $prebuilt_sha1 + Extract-7Zip $prebuilt_zip_openssl C:\Utils + Remove $prebuilt_zip_openssl + } else { + Write-Host "Build OpenSSL for Android from sources" + # openssl-${openssl_version}_fixes-ndk_root.tar.gz package includes fixes from https://github.com/openssl/openssl/pull/17322 and string ANDROID_NDK_HOME is replaced with ANDROID_NDK_ROOT in Configurations/15-android.conf + Download \\ci-files01-hki.ci.qt.io\provisioning\openssl\openssl-${openssl_version}.tar.gz \\ci-files01-hki.ci.qt.io\provisioning\openssl\openssl-${openssl_version}.tar.gz $openssl_compressed + Verify-Checksum $openssl_compressed $openssl_sha1 - function CheckExitCode { + Extract-7Zip $openssl_compressed C:\Utils\tmp + Extract-7Zip C:\Utils\tmp\openssl-${openssl_version}.tar C:\Utils\tmp + Move-Item C:\Utils\tmp\openssl-${openssl_version} ${destination}-${ndk_version} + Remove "$openssl_compressed" - param ( - $p - ) + Write-Host "Configuring OpenSSL $openssl_version for Android..." + Push-Location ${destination}-${ndk_version} + # $ must be escaped in powershell... - if ($p.ExitCode) { - Write-host "Process failed with exit code: $($p.ExitCode)" - exit 1 + function CheckExitCode { + + param ( + $p + ) + + if ($p.ExitCode) { + Write-host "Process failed with exit code: $($p.ExitCode)" + exit 1 + } } + + # ANDROID_NDK_ROOT needs to be in environment variables before running this script + # Set-EnvironmentVariable "ANDROID_NDK_ROOT" "C:\Utils\Android\android-ndk-r26b" + + $make_install = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys_bash" -ArgumentList ("-lc", "`"yes | pacman -S make`"") + CheckExitCode $make_install + + $configure = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys_bash" -ArgumentList ("-lc", "`"pushd $openssl_path; ANDROID_NDK_ROOT=$ndk_path PATH=${cc_path}:`$PATH CC=clang $openssl_path/Configure shared android-arm`"") + CheckExitCode $configure + + $make = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys_bash" -ArgumentList ("-lc", "`"pushd $openssl_path; ANDROID_NDK_ROOT=$ndk_path PATH=${cc_path}:`$PATH CC=clang make -f $openssl_path/Makefile build_generated`"") + CheckExitCode $make + + Pop-Location + Remove-item C:\Utils\tmp -Recurse -Confirm:$false } - $configure = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys_bash" -ArgumentList ("-lc", "`"pushd $openssl_path; ANDROID_NDK_ROOT=$ndkPath PATH=${cc_path}:`$PATH CC=clang $openssl_path/Configure shared android-arm`"") - CheckExitCode $configure +} - $make = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys_bash" -ArgumentList ("-lc", "`"pushd $openssl_path; ANDROID_NDK_ROOT=$ndkPath PATH=${cc_path}:`$PATH CC=clang make -f $openssl_path/Makefile build_generated`"") - CheckExitCode $make +# Install NDK Default version +Install $ndk_version_default $prebuilt_sha1_ndk_default - Pop-Location - Remove-item C:\Utils\tmp -Recurse -Confirm:$false +if (Test-Path -Path ${destination_prefix}-${ndk_version_latest}) { + Write-Host "OpenSSL for Android Latest version is the same than Default. Installation done." +} else { + # Install NDK Latest version + Install $ndk_version_latest $prebuilt_sha1_ndk_latest } -Set-EnvironmentVariable "OPENSSL_ANDROID_HOME" "$destination" -Write-Output "Android OpenSSL = $version" >> ~/versions.txt +Set-EnvironmentVariable "OPENSSL_ANDROID_HOME_DEFAULT" "${destination_prefix}-${ndk_version_default}" +Set-EnvironmentVariable "OPENSSL_ANDROID_HOME_LATEST" "${destination_prefix}-${ndk_version_latest}" +Write-Output "Android OpenSSL = $openssl_version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/android.ps1 b/coin/provisioning/common/windows/android.ps1 index fa774153..b594238c 100644 --- a/coin/provisioning/common/windows/android.ps1 +++ b/coin/provisioning/common/windows/android.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -46,23 +10,26 @@ # That's why we need to use Andoid-21 API version in Qt 5.9. # NDK -$ndkVersion = "r22b" -$ndkCachedUrl = "\\ci-files01-hki.intra.qt.io\provisioning\android\android-ndk-$ndkVersion-windows-x86_64.zip" -$ndkOfficialUrl = "https://dl.google.com/android/repository/android-ndk-$ndkVersion-windows-x86_64.zip" -$ndkChecksum = "96ba1a049303cf6bf3ee84cfd64d6bcd43486a50" -$ndkFolder = "c:\Utils\Android\android-ndk-$ndkVersion" -$ndkZip = "c:\Windows\Temp\android_ndk_$ndkVersion.zip" +$ndkVersionLatest = "r26b" +$ndkVersionDefault = $ndkVersionLatest +$ndkChecksumLatest = "17453c61a59e848cffb8634f2c7b322417f1732e" +$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" +$ndkCachedUrlDefault = "\\ci-files01-hki.ci.qt.io\provisioning\android\android-ndk-$ndkVersionDefault-windows.zip" +$ndkOfficialUrlDefault = "https://dl.google.com/android/repository/android-ndk-$ndkVersionDefault-windows.zip" +$ndkZip = "C:\Windows\Temp\android_ndk.zip" # SDK $toolsVersion = "2.1" $toolsFile = "commandlinetools-win-6609375_latest.zip" $sdkApi = "ANDROID_API_VERSION" -$sdkApiLevel = "android-31" -$sdkBuildToolsVersion = "31.0.0" -$toolsCachedUrl= "\\ci-files01-hki.intra.qt.io\provisioning\android\$toolsFile" +$sdkApiLevel = "android-34" +$sdkBuildToolsVersion = "34.0.0" +$toolsCachedUrl= "\\ci-files01-hki.ci.qt.io\provisioning\android\$toolsFile" $toolsOfficialUrl = "https://dl.google.com/android/repository/$toolsFile" $toolsChecksum = "e2e19c2ff584efa87ef0cfdd1987f92881323208" -$toolsFolder = "c:\Utils\Android\cmdline-tools" +$cmdFolder = "c:\Utils\Android\cmdline-tools" $sdkZip = "c:\Windows\Temp\$toolsFile" @@ -71,19 +38,38 @@ function Install($1, $2, $3, $4) { $zip = $2 $checksum = $3 $offcialUrl = $4 + $tempExtractDir = "C:\Windows\Temp\android_extract" Download $offcialUrl $cacheUrl $zip Verify-Checksum $zip "$checksum" - Extract-7Zip $zip C:\Utils\Android + Extract-7Zip $zip $tempExtractDir + $baseDirectory = (Get-ChildItem $tempExtractDir -Attributes D | Select-Object -First 1).Name + Move-Item -Path ($tempExtractDir + "\" + $baseDirectory) -Destination "C:\Utils\Android\$baseDirectory" -Force + Remove $zip + + return "C:\Utils\Android\$baseDirectory" } -Write-Host "Installing Android NDK $nkdVersion" -Install $ndkCachedUrl $ndkZip $ndkChecksum $ndkOfficialUrl -Set-EnvironmentVariable "ANDROID_NDK_ROOT" $ndkFolder +New-Item -ItemType Directory -Path C:\Utils\Android\ +New-Item -ItemType Directory -Path C:\Windows\Temp\android_extract +Write-Host "Installing Android NDK $ndkVersionDefault" +$ndkFolderDefault = Install $ndkCachedUrlDefault $ndkZip $ndkChecksumDefault $ndkOfficialUrlDefault +Set-EnvironmentVariable "ANDROID_NDK_ROOT_DEFAULT" $ndkFolderDefault +# To be used by vcpkg +Set-EnvironmentVariable "ANDROID_NDK_HOME" $ndkFolderDefault +$env:ANDROID_NDK_HOME = "$ndkFolderDefault" + +if ($ndkVersionDefault -eq $ndkVersionLatest) { + Write-Host "Android Latest version is the same than Default. NDK installation done." +} else { + Write-Host "Installing Android NDK $nkdVersionLatest" + $ndkFolderLatest = Install $ndkCachedUrlLatest $ndkZip $ndkChecksumLatest $ndkOfficialUrlLatest + Set-EnvironmentVariable "ANDROID_NDK_ROOT_LATEST" $ndkFolderLatest +} -Install $toolsCachedUrl $sdkZip $toolsChecksum $sdkOfficialUrl -New-Item -ItemType directory -Path $toolsFolder -Move-Item -Path C:\Utils\Android\tools -Destination $toolsFolder\ +$toolsFolder = Install $toolsCachedUrl $sdkZip $toolsChecksum $toolsOfficialUrl +New-Item -ItemType directory -Path $cmdFolder +Move-Item -Path $toolsFolder -Destination $cmdFolder\ Set-EnvironmentVariable "ANDROID_SDK_ROOT" "C:\Utils\Android" Set-EnvironmentVariable "ANDROID_API_VERSION" $sdkApiLevel @@ -106,7 +92,7 @@ Out-File -FilePath C:\Utils\Android\licenses\android-sdk-license -Encoding utf8 # Attempt to catch all errors of sdkmanager.bat, even when hidden behind a pipeline. $ErrorActionPreference = "Stop" -cd $toolsFolder\tools\bin\ +cd $cmdFolder\tools\bin\ $sdkmanager_args += "platforms;$sdkApiLevel", "platform-tools", "build-tools;$sdkBuildToolsVersion", "--sdk_root=C:\Utils\Android" $command = 'for($i=0;$i -lt 6;$i++) { $response += "y`n"}; $response | .\sdkmanager.bat @sdkmanager_args | Out-Null' Invoke-Expression $command @@ -117,4 +103,4 @@ cmd /c "dir C:\Utils\android" Write-Output "Android SDK tools= $toolsVersion" >> ~/versions.txt Write-Output "Android SDK Build Tools = $sdkBuildToolsVersion" >> ~/versions.txt Write-Output "Android SDK Api Level = $sdkApiLevel" >> ~/versions.txt -Write-Output "Android NDK = $ndkVersion" >> ~/versions.txt +Write-Output "Android NDK = $ndkVersionDefault" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/cmake.ps1 b/coin/provisioning/common/windows/cmake.ps1 index f5778eb9..af1e2872 100644 --- a/coin/provisioning/common/windows/cmake.ps1 +++ b/coin/provisioning/common/windows/cmake.ps1 @@ -1,59 +1,45 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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 = "3.21" -$version = "3.21.1" - -$zip = Get-DownloadLocation ("cmake-" + $version + "-windows-i386.zip") -$officialurl = "https://cmake.org/files/v" + $majorminorversion + "/cmake-" + $version + "-windows-i386.zip" -$cachedurl = "\\ci-files01-hki.intra.qt.io\provisioning\cmake\cmake-" + $version + "-windows-i386.zip" +$majorminorversion = "3.27" +$version = "3.27.7" + +$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" + Break + } + x64 { + $arch = "i386" + $sha1 = "b6147215a5f9cd1138b012265229fbf2224d02c6" + } + default { + throw "Unknown architecture $cpu_arch" + } +} + +$filename = "cmake-" + $version + "-windows-" + $arch +$filename_zip = $filename + ".zip" + +$zip = Get-DownloadLocation ($filename_zip) +$officialurl = "https://cmake.org/files/v" + $majorminorversion + "/" + $filename_zip +$cachedurl = "https://ci-files01-hki.ci.qt.io/input/cmake/" + $filename_zip Write-Host "Removing old cmake" Remove "C:\CMake" Download $officialurl $cachedurl $zip -Verify-Checksum $zip "7271b8c568f428af433f3aae80c292ef868993c5" +Verify-Checksum $zip $sha1 Extract-7Zip $zip C: -$defaultinstallfolder = "C:\cmake-" + $version + "-windows-i386" +$defaultinstallfolder = "C:\" + $filename Rename-Item $defaultinstallfolder C:\CMake Add-Path "C:\CMake\bin" diff --git a/coin/provisioning/common/windows/conan.ps1 b/coin/provisioning/common/windows/conan.ps1 index 50b731a0..22247897 100644 --- a/coin/provisioning/common/windows/conan.ps1 +++ b/coin/provisioning/common/windows/conan.ps1 @@ -1,45 +1,9 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################ +# 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 . "$PSScriptRoot\helpers.ps1" -$scriptsPath = "C:\Python36\Scripts" +$scriptsPath = [System.Environment]::GetEnvironmentVariable('PIP3_PATH', [System.EnvironmentVariableTarget]::Machine) $version = "1.39.0" Run-Executable "$scriptsPath\pip3.exe" "install conan==$version" Write-Output "Conan = $version" >> ~\versions.txt @@ -51,8 +15,8 @@ Set-EnvironmentVariable "CONAN_V2_MODE" "1" # This is temporary solution for installing packages provided by Conan until we have fixed Conan setup for this -$url_conan = "\\ci-files01-hki.intra.qt.io\provisioning\windows\.conan.zip" -$url_conan_home = "\\ci-files01-hki.intra.qt.io\provisioning\windows\.conanhome.zip" +$url_conan = "\\ci-files01-hki.ci.qt.io\provisioning\windows\.conan.zip" +$url_conan_home = "\\ci-files01-hki.ci.qt.io\provisioning\windows\.conanhome.zip" $sha1_conan_compressed = "1abbe43e7a29ddd9906328702b5bc5231deeb721" $sha1_conanhome_compressed = "f44c2ae21cb1c7dc139572e399b7b0eaf492af03" $conan_compressed = "C:\.conan.zip" diff --git a/coin/provisioning/common/windows/disable-autoreboot.ps1 b/coin/provisioning/common/windows/disable-autoreboot.ps1 index 47257280..d13b6b9d 100644 --- a/coin/provisioning/common/windows/disable-autoreboot.ps1 +++ b/coin/provisioning/common/windows/disable-autoreboot.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" Get-WmiObject Win32_OSRecoveryConfiguration -EnableAllPrivileges | Set-WmiInstance -Arguments @{ AutoReboot=$False } diff --git a/coin/provisioning/common/windows/disable-defragment.ps1 b/coin/provisioning/common/windows/disable-defragment.ps1 index fd7870c2..bb449e56 100644 --- a/coin/provisioning/common/windows/disable-defragment.ps1 +++ b/coin/provisioning/common/windows/disable-defragment.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # Windows 7 does not have Get-ScheduledTask and Unregister-ScheduledTask # thus needing its own version. diff --git a/coin/provisioning/common/windows/disable-sleep.ps1 b/coin/provisioning/common/windows/disable-sleep.ps1 index e147c830..c6c3c814 100644 --- a/coin/provisioning/common/windows/disable-sleep.ps1 +++ b/coin/provisioning/common/windows/disable-sleep.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script prevents Windows from going to sleep diff --git a/coin/provisioning/common/windows/disable-uac.ps1 b/coin/provisioning/common/windows/disable-uac.ps1 index b27355c6..c84b998d 100644 --- a/coin/provisioning/common/windows/disable-uac.ps1 +++ b/coin/provisioning/common/windows/disable-uac.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script disables the Windows UAC diff --git a/coin/provisioning/common/windows/disable-windefender.ps1 b/coin/provisioning/common/windows/disable-windefender.ps1 index 89199496..ca74e95f 100644 --- a/coin/provisioning/common/windows/disable-windefender.ps1 +++ b/coin/provisioning/common/windows/disable-windefender.ps1 @@ -1,41 +1,5 @@ -########################################################################### -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # Turning off win defender. # diff --git a/coin/provisioning/common/windows/disable-windows-module-installer.ps1 b/coin/provisioning/common/windows/disable-windows-module-installer.ps1 index c7f85ff7..2d829b04 100644 --- a/coin/provisioning/common/windows/disable-windows-module-installer.ps1 +++ b/coin/provisioning/common/windows/disable-windows-module-installer.ps1 @@ -1,4 +1,6 @@ +. "$PSScriptRoot\helpers.ps1" + # Disable Windows Module Installer (Trusted Installer). # Trusted Installe enables installation, modification, and removal of Windows updates and optional components. # If this service is disabled, install or uninstall of Windows updates might fail for this computer. -sc.exe config TrustedInstaller start=disabled +Run-Executable "sc.exe" "config TrustedInstaller start=disabled" diff --git a/coin/provisioning/common/windows/disable-windows-updates.ps1 b/coin/provisioning/common/windows/disable-windows-updates.ps1 index 8fd1b9a1..a55d5803 100644 --- a/coin/provisioning/common/windows/disable-windows-updates.ps1 +++ b/coin/provisioning/common/windows/disable-windows-updates.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 disables the automatic Windows updates diff --git a/coin/provisioning/common/windows/dxsdk.ps1 b/coin/provisioning/common/windows/dxsdk.ps1 index 35b7d8de..e4a40108 100644 --- a/coin/provisioning/common/windows/dxsdk.ps1 +++ b/coin/provisioning/common/windows/dxsdk.ps1 @@ -4,7 +4,7 @@ $package = "DXSDK_Jun10.exe" -$cachedUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\$package" +$cachedUrl = "\\ci-files01-hki.ci.qt.io\provisioning\windows\$package" $officialUrl = "https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/$package" $sdkChecksumSha1 = "8fe98c00fde0f524760bb9021f438bd7d9304a69" $package_path = "C:\Windows\Temp\$package" diff --git a/coin/provisioning/common/windows/emsdk.ps1 b/coin/provisioning/common/windows/emsdk.ps1 index 70970555..e1b92fd3 100644 --- a/coin/provisioning/common/windows/emsdk.ps1 +++ b/coin/provisioning/common/windows/emsdk.ps1 @@ -1,66 +1,49 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################ +# 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 . "$PSScriptRoot\helpers.ps1" # This script will install emscripten needed by WebAssembly -$version = "3.0.0" -$versionNode = "14.15.5" -$versionWinPython = "3.9.2-1" -$versionJre = "8.152" +$version = "3.1.50" +$zipVersion = $version -replace '\.', "_" +$temp = "$env:tmp" +$cacheUrl = "https://ci-files01-hki.ci.qt.io/input/emsdk/emsdk_windows_${zipVersion}.zip" +$sha = "40dc636688166ecdb476da40d02c491ee5032f7b" # Make sure python is in the path Prepend-Path "C:\Python27" cd "C:\\Utils" -C:\PROGRA~1\Git\bin\git clone https://github.com/emscripten-core/emsdk.git $installLocationEmsdk = "C:\\Utils\\emsdk" -cd $installLocationEmsdk -.\emsdk install $version -.\emsdk activate $version - -Set-EnvironmentVariable "EMSDK" "$installLocationEmsdk" -Set-EnvironmentVariable "EM_CONFIG" "$installLocationEmsdk\.emscripten" -Set-EnvironmentVariable "EMSDK_NODE" "$installLocationEmsdk\node\${versionNode}_64bit\bin\node.exe" -Set-EnvironmentVariable "EMSDK_PYTHON" "$installLocationEmsdk\python\${versionWinPython}_64bit\python.exe" -Set-EnvironmentVariable "EMSDK_JAVA_HOME" "$installLocationEmsdk\java\${versionJre}_64bit" +try { + Write-Host "Fetching from cached location" + Download $cacheUrl $cacheUrl ${temp}\${zipVersion}.zip + Verify-Checksum ${temp}\${zipVersion}.zip $sha + Extract-7Zip ${temp}\${zipVersion}.zip C:\Utils\ + cd $installLocationEmsdk + .\emsdk activate $version +} catch { + Write-Host "Can't find cached emsdk. Cloning it" + C:\PROGRA~1\Git\bin\git clone https://github.com/emscripten-core/emsdk.git + cd $installLocationEmsdk + .\emsdk install $version + .\emsdk activate $version +} + +$versionWinPython = $($Env:EMSDK_PYTHON -split ('python\\') -split ('_64bit'))[1] +$versionNode = $($Env:EMSDK_NODE -split ('node\\') -split ('_64bit'))[1] +$versionJre = $($Env:EMSDK_JAVA_HOME -split ('java\\') -split ('_64bit'))[1] + +# Set these environment variables permanently. +# Note! Using 'emsdk_env.bat --permanent' doesn't set these permanently +Set-EnvironmentVariable "EMSDK" "$env:EMSDK" +Set-EnvironmentVariable "EM_CONFIG" "$env:EM_CONFIG" +Set-EnvironmentVariable "EMSDK_NODE" "$env:EMSDK_NODE" +Set-EnvironmentVariable "EMSDK_PYTHON" "$env:EMSDK_PYTHON" +# In this case JAVA_HOME is the one emsdk install/activate set. +# We need to use EMSDK_JAVA_HOME so that we don't override JAVA_HOME which comes from install-jdk.ps1 +Set-EnvironmentVariable "EMSDK_JAVA_HOME" "$env:JAVA_HOME" Set-EnvironmentVariable "EMSDK_PATH" "$installLocationEmsdk;$installLocationEmsdk\node\${versionNode}_64bit\bin;$installLocationEmsdk\upstream\emscripten;$PATH" Add-Path "$env:EMSDK_PATH" diff --git a/coin/provisioning/common/windows/exceutequeueditems.ps1 b/coin/provisioning/common/windows/exceutequeueditems.ps1 index 97042b0b..0d6a7267 100644 --- a/coin/provisioning/common/windows/exceutequeueditems.ps1 +++ b/coin/provisioning/common/windows/exceutequeueditems.ps1 @@ -1,45 +1,30 @@ -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" -Start-Process -NoNewWindow -FilePath "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ngen.exe" -ArgumentList ExecuteQueuedItems -Wait +function ngen() { + Param ( + [ValidateSet("Framework","Framework64","FrameworkArm64")][string]$framework + ) + Start-Process -NoNewWindow -FilePath "C:\WINDOWS\Microsoft.NET\$framework\v4.0.30319\ngen.exe" -ArgumentList ExecuteQueuedItems -Wait +} -if( (is64bitWinHost) -eq 1 ) { - Start-Process -NoNewWindow -FilePath "C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" -ArgumentList ExecuteQueuedItems -Wait +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + ngen("FrameworkArm64") + Break + } + x64 { + ngen("Framework") + ngen("Framework64") + Break + } + x86 { + ngen("Framework") + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } diff --git a/coin/provisioning/common/windows/fbx_windows.ps1 b/coin/provisioning/common/windows/fbx_windows.ps1 index 0daebb87..41b8768e 100644 --- a/coin/provisioning/common/windows/fbx_windows.ps1 +++ b/coin/provisioning/common/windows/fbx_windows.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -46,7 +10,7 @@ $version = "2016.1.2" $name = "fbx20161_2_fbxsdk_vs2015_win_nospace" $packageName = "$name.7z" $installerName = "$name.exe" -$cacheUrl = "\\ci-files01-hki.intra.qt.io\provisioning\fbx\$packageName" +$cacheUrl = "\\ci-files01-hki.ci.qt.io\provisioning\fbx\$packageName" $sha1 = "de80edc255ffd5ce86ba25869dad72b4c809fd41" # The executable is an interactive installer only. We can't run it in a script silently. diff --git a/coin/provisioning/common/windows/grpc.ps1 b/coin/provisioning/common/windows/grpc.ps1 new file mode 100644 index 00000000..7acbe896 --- /dev/null +++ b/coin/provisioning/common/windows/grpc.ps1 @@ -0,0 +1,122 @@ +# 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 + +. "$PSScriptRoot\helpers.ps1" + +# Here we build gRPC libraries for MinGW and MSVC. +# Since it's a c++ library we need both msvc and mingw because they mangle symbols differently. +# For MSVC it builds with both debug and release configurations because of the visual c++ runtime. +# For MinGW we only need one, so we only build with release. +# The function below takes care of the common part of building - invoking cmake, +# calling ninja and installing it to a directory which we set an environment variable to. +# Because we have two compilers we also have two env. vars. and then each +# config in CI has the gRPC_ROOT set to the appropriate one. +function build-install-grpc { + param( + [string]$CC, + [string]$CXX, + [string]$BuildType, + [string]$Postfix # Used for install-path and the environment variable name + ) + $installPrefix = "C:\Utils\grpc" + $installPath = "${installPrefix}-$Postfix" + $envVariableName = "Protobuf_ROOT_$Postfix" + $protobufRoot = (Get-Item -Path "Env:$envVariableName").Value + Write-Output "Configuring and building gRPC for $CXX" + $oldCC = $env:CC + $oldCXX = $env:CXX + $env:CC = $CC + $env:CXX = $CXX + Remove build-grpc + mkdir build-grpc + Push-Location build-grpc + $configureOptions = @( + # add postfix for multi-config + "-DCMAKE_DEBUG_POSTFIX=d" + "-DCMAKE_RELWITHDEBINFO_POSTFIX=rd" + # plugins + "-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF" + # extensions + "-DgRPC_BUILD_CSHARP_EXT=OFF" + # general + "-DgRPC_BUILD_TESTS=OFF" + "-DgRPC_PROTOBUF_PROVIDER=package" + "-DgRPC_SSL_PROVIDER=package" + # protobuf + "-DProtobuf_USE_STATIC_LIBS=ON" + "-DCMAKE_PREFIX_PATH=$protobufRoot" + ) + cmake .. -G"Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="$BuildType" -DCMAKE_INSTALL_PREFIX="$installPath" $extraCMakeArgs $configureOptions + $result = $LASTEXITCODE + if ($result -eq 0) { + # ninja install:all # This is broken and does not work + foreach ($config in $BuildType.split(";")) { + ninja -f "build-$config.ninja" install + } + $result = $LASTEXITCODE + } + $env:CC = $oldCC + $env:CXX = $oldCXX + Set-EnvironmentVariable "gRPC_ROOT_$Postfix" "$installPath" + Pop-Location + Remove build-grpc + if ($result -ne 0) { + throw "Build exited with $result" + } +} + + +# Ensures a tool is in path or adds it to path if the $Path supplied to it +# contains it. Will throw if it's not found at all +function Find-Tool { + param( + [string]$Name, + [string]$Path + ) + # Is tool missing from path? + if (!(Get-Command $Name -ErrorAction SilentlyContinue)) { + # Is tool in the $Path directory? + if (Test-Path "$Path\$Name" -ErrorAction SilentlyContinue) { + $env:Path += ";$Path" + } + else { + throw "Cannot find $Name in path or $Name in $Path, something is configured wrong" + } + } +} +# This script is fairly late in provisioning so both of these should be present! +Find-Tool -Name "cmake.exe" -Path "C:\CMake\bin" +Find-Tool -Name "ninja.exe" -Path "C:\Utils\Ninja" + +$version="1.50.1" +$sha1="be1b0c3dbfbc9714824921f50dffb7cf044da5ab" +$internalUrl="http://ci-files01-hki.ci.qt.io/input/automotive_suite/grpc-all-$version.zip" +$externalUrl="" + +$basedir = "$env:HOMEDRIVE\$env:HOMEPATH\grpc" +mkdir $basedir +$targetDir = "$basedir\grpc-$version" +$targetFile = "$targetDir.zip" +Download $externalUrl $internalUrl $targetFile +Verify-Checksum $targetFile $sha1 +Extract-7Zip $targetFile $basedir +Remove $targetFile + +Push-Location $targetDir + +### gRPC supports only MSVC compiler + +EnterVSDevShell + +# We pass along an extra argument to stop gRPC linking with the static runtime to match Protobuf config +build-install-grpc -CC "cl" -CXX "cl" -BuildType "Release;RelWithDebInfo;Debug" -Postfix "msvc" -ExtraArguments @("-DgRPC_MSVC_STATIC_RUNTIME=OFF") + +Pop-Location +Remove $basedir + +Write-Output "gRPC = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/helpers.ps1 b/coin/provisioning/common/windows/helpers.ps1 index 8599791d..ad01c499 100644 --- a/coin/provisioning/common/windows/helpers.ps1 +++ b/coin/provisioning/common/windows/helpers.ps1 @@ -148,7 +148,7 @@ function Download if ($CachedUrl.StartsWith("http")) { Invoke-WebRequest -UseBasicParsing $CachedUrl -OutFile $Destination } else { - Copy-Item $CachedUrl $Destination + Copy-Item $CachedUrl $Destination -errorAction stop } } catch { Write-Host "Cached download failed: Downloading from official location: $OfficialUrl" @@ -196,6 +196,28 @@ function Is64BitWinHost return [environment]::Is64BitOperatingSystem } +enum CpuArch { + x64 + x86 + arm64 + unknown +} + +function Get-CpuArchitecture +{ + # Possible values are "AMD64", "IA64", "ARM64", and "x86" + $arch = [System.Environment]::GetEnvironmentVariable('PROCESSOR_ARCHITECTURE', 'Machine') + if ($arch -eq "AMD64") { + return [CpuArch]::x64 + } elseif ($arch -eq "x86") { + return [CpuArch]::x86 + } elseif ($arch -eq "ARM64") { + return [CpuArch]::arm64 + } + + return [CpuArch]::unknown +} + function IsProxyEnabled { return (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').proxyEnable } @@ -274,3 +296,87 @@ function DeleteSchedulerTask { Write-Host "Disabling $Task from Task Scheduler" SCHTASKS /DELETE /TN "Microsoft\Windows\$Task" /F } + +function GetVsProperty { + Param ( + [string]$Component = 'Microsoft.VisualStudio.Component.VC.CoreIde', + [string]$Property, + [switch]$Latest + ) + + $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 { + Param ( + [string]$HostArch = "amd64", + [string]$Arch = "amd64" + ) + + # 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 = GetVsInstallationPath + + 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" + } catch { + Write-Host "Failed to enter VisualStudio DevShell" + return $false + } + return $true +} + +function Invoke-MtCommand { + param( + [String] $vcVarsScript, + [String] $arch, + [String] $manifest, + [String] $executable + ) + $tempFile = [IO.Path]::GetTempFileName() + Add-Content -Path $tempFile -Value $manifest + $cmdLine = """$vcVarsScript"" $arch & mt.exe -manifest ""$tempFile"" -outputresource:""$executable"";1" + Write-Output Executing $cmdLine + & $Env:SystemRoot\system32\cmd.exe /c $cmdLine | Write-Output + Remove-Item $tempFile +} diff --git a/coin/provisioning/common/windows/install-azure-tool.ps1 b/coin/provisioning/common/windows/install-azure-tool.ps1 index 0d2e2ef9..9f82f54e 100644 --- a/coin/provisioning/common/windows/install-azure-tool.ps1 +++ b/coin/provisioning/common/windows/install-azure-tool.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will install Azure singtool using Dotnet SDK diff --git a/coin/provisioning/common/windows/install-breakpad.ps1 b/coin/provisioning/common/windows/install-breakpad.ps1 index 994e8991..6bdb4b9f 100644 --- a/coin/provisioning/common/windows/install-breakpad.ps1 +++ b/coin/provisioning/common/windows/install-breakpad.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################ +# Copyright (C) 2019 The 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 breakpad from sources. # for manual install.. remember to checkout correct version @@ -56,12 +20,12 @@ $breakpad_commit_sha="b988fa74ec18de6214b18f723e48331d9a7802ae" $breakpad_tar="breakpad_$breakpad_commit_sha.tar.gz" -$breakpad_tar_url="http://ci-files01-hki.intra.qt.io/input/breakpad/$breakpad_tar" +$breakpad_tar_url="http://ci-files01-hki.ci.qt.io/input/breakpad/$breakpad_tar" $breakpad_tar_sha="a2d404d2aebc947cdac5840a9bccd65dfafae24c" $linux_syscall_support_commit_sha1="93426bda6535943ff1525d0460aab5cc0870ccaf" $linux_syscall_support_tar="linux-syscall-support_$linux_syscall_support_commit_sha1.tar.gz" -$linux_syscall_support_tar_url="http://ci-files01-hki.intra.qt.io/input/linux-syscall-support/$linux_syscall_support_tar" +$linux_syscall_support_tar_url="http://ci-files01-hki.ci.qt.io/input/linux-syscall-support/$linux_syscall_support_tar" $linux_syscall_support_tar_sha="62565be0920f3661e138d68026b79fbbdc2a11e4" $targetBreakpad="$env:tmp\$breakpad_tar" diff --git a/coin/provisioning/common/windows/install-dependencywalker.ps1 b/coin/provisioning/common/windows/install-dependencywalker.ps1 index 1d015ffa..3d541f4f 100644 --- a/coin/provisioning/common/windows/install-dependencywalker.ps1 +++ b/coin/provisioning/common/windows/install-dependencywalker.ps1 @@ -1,55 +1,35 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # 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.intra.qt.io\provisioning\windows\depends22" + $arch + ".zip" +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\depends22" + $arch + ".zip" $url_official = "http://www.dependencywalker.com/depends22" + $arch + ".zip" $dependsPackage = "C:\Windows\Temp\depends-$version.zip" @@ -62,6 +42,10 @@ Verify-Checksum $dependsPackage $sha1 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\$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 7f3065de..aea40e86 100644 --- a/coin/provisioning/common/windows/install-dotnet.ps1 +++ b/coin/provisioning/common/windows/install-dotnet.ps1 @@ -1,52 +1,16 @@ -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will install Dotnet SDK which is required for Azure installation $version = "2.1" if (Is64BitWinHost) { - $urlCache = "http://ci-files01-hki.intra.qt.io/input/windows/dotnet-sdk-2.1.809-win-x64.exe" + $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.intra.qt.io/input/windows/dotnet-sdk-2.1.809-win-x86.exe" + $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" } diff --git a/coin/provisioning/common/windows/install-ffmpeg.ps1 b/coin/provisioning/common/windows/install-ffmpeg.ps1 new file mode 100644 index 00000000..f8ad9f15 --- /dev/null +++ b/coin/provisioning/common/windows/install-ffmpeg.ps1 @@ -0,0 +1,169 @@ +# 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 + +. "$PSScriptRoot\helpers.ps1" + +# This script will install FFmpeg +$msys = "C:\Utils\msys64\usr\bin\bash" + +$version = "n6.1.1" +$ffmpeg_name = "ffmpeg-" + $version; +$sha1 = "7AECCED8A0366BE407329B4E176167534233DA12" + +$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" +$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 +Remove $download_location + +$config = Get-Content "$PSScriptRoot\..\shared\ffmpeg_config_options.txt" +Write-Host "FFmpeg configuration $config" + +function InstallFfmpeg { + Param ( + [string]$buildSystem, + [string]$msystem, + [string]$additionalPath, + [string]$ffmpegDirEnvVar, + [string]$toolchain, + [bool]$shared + ) + + Write-Host "Configure and compile ffmpeg for $buildSystem" + + $oldPath = $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" } + $cmd += " && make install -j" + + Write-Host "MSYS cmd:" + Write-Host $cmd + $buildResult = Start-Process -NoNewWindow -Wait -PassThru -ErrorAction Stop -FilePath "$msys" -ArgumentList ("-lc", "`"$cmd`"") + + $env:PATH = $oldPath + + if ($buildResult.ExitCode) { + Write-Host "Failed to build ffmpeg for $buildSystem" + return $false + } + + Set-EnvironmentVariable $ffmpegDirEnvVar "C:\$ffmpeg_name\build\$buildSystem\installed" + return $true +} + +function InstallMingwFfmpeg { + $mingwPath = [System.Environment]::GetEnvironmentVariable("MINGW_PATH", [System.EnvironmentVariableTarget]::Machine) + return InstallFfmpeg -buildSystem "mingw" -msystem "MINGW" -additionalPath "$mingwPath\bin" -ffmpegDirEnvVar "FFMPEG_DIR_MINGW" -shared $true +} + + +function InstallMsvcFfmpeg { + Param ( + [bool]$isArm64 + ) + + $arch = "amd64" + $buildSystem = "msvc" + $ffmpegDirEnvVar = "FFMPEG_DIR_MSVC" + + $config = Get-Content "$PSScriptRoot\..\shared\ffmpeg_config_options.txt" + + if ($isArm64) { + $arch = "arm64" + $buildSystem += "-arm64" + $ffmpegDirEnvVar += "_ARM64" + $config += " --enable-cross-compile --arch=arm64 --disable-asm" + } + + $result = EnterVSDevShell -Arch $arch + if (-Not $result) { + return $false + } + + $result = InstallFfmpeg -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) + Get-ChildItem "$msvcDir\lib\lib*.a" | ForEach-Object { + $NewName = $_.Name -replace 'lib(\w+).a$', '$1.lib' + $Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName + Move-Item -Path $_.FullName -Destination $Destination -Force + } + } catch { + Write-Host "Failed to rename libraries lib*.a -> *.lib" + return $false + } + } + + return $result +} + + +function InstallLlvmMingwFfmpeg { + return InstallFfmpeg -buildSystem "llvm-mingw" -msystem "CLANG64" -ffmpegDirEnvVar "FFMPEG_DIR_LLVM_MINGW" -additionalPath "C:\llvm-mingw\bin" -shared $true +} + +function InstallAndroidArmv7 { + + $target_toolchain_arch="armv7a-linux-androideabi" + $target_arch="armv7-a" + $target_cpu="armv7-a" + $api_version="24" + + $ndkVersionLatest = "r26b" + $ndkFolderLatest = "/c/Utils/Android/android-ndk-$ndkVersionLatest" + + $toolchain="${ndkFolderLatest}/toolchains/llvm/prebuilt/windows-x86_64" + $toolchain_bin="${toolchain}/bin" + $sysroot="${toolchain}/sysroot" + $cxx="${toolchain_bin}/${target_toolchain_arch}${api_version}-clang++" + $cc="${toolchain_bin}/${target_toolchain_arch}${api_version}-clang" + $ld="${toolchain_bin}/ld.exe" + $ar="${toolchain_bin}/llvm-ar.exe" + $ranlib="${toolchain_bin}/llvm-ranlib.exe" + $nm="${toolchain_bin}/llvm-nm.exe" + $strip="${toolchain_bin}/llvm-strip.exe" + $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" + $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" + + return InstallFfmpeg -buildSystem "android-arm" -msystem "ANDROID_CLANG" -ffmpegDirEnvVar "FFMPEG_DIR_ANDROID_ARMV7" +} + +$mingwRes = InstallMingwFfmpeg +$llvmMingwRes = InstallLlvmMingwFfmpeg +$androidArmV7Res = InstallAndroidArmv7 +$msvcRes = InstallMsvcFfmpeg -isArm64 $false +$msvcArm64Res = InstallMsvcFfmpeg -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" }) + +exit $(if ($mingwRes -and $msvcRes -and $msvcArm64Res -and $llvmMingwRes -and $androidArmV7Res) { 0 } else { 1 }) diff --git a/coin/provisioning/common/windows/install-git.ps1 b/coin/provisioning/common/windows/install-git.ps1 index 56098d15..47c2cc03 100644 --- a/coin/provisioning/common/windows/install-git.ps1 +++ b/coin/provisioning/common/windows/install-git.ps1 @@ -1,55 +1,19 @@ -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" -# Install Git version 2.31.0 +# Install Git -$version = "2.31.0" +$version = "2.36.1" if (Is64BitWinHost) { $arch = "-64-bit" - $sha1 = "495d78f8d961e030944d9cb53af80d909d493c3f" + $sha1 = "594bdfc4e7704fb03fe14b7c0613087dfa3d4416" } else { $arch = "-32-bit" - $sha1 = "e57c040aea297b363aefaf26424f2e7a84a4a173" + $sha1 = "1bbe040254c236607ccb84e14a3f608b1a4e959a" } $gitPackage = "C:\Windows\Temp\Git-" + $version + $arch + ".exe" -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\Git-" + $version + $arch + ".exe" +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\Git-" + $version + $arch + ".exe" $url_official = "https://github.com/git-for-windows/git/releases/download/v" + $version + ".windows.1/Git-" + $version + $arch + ".exe" Write-Host "Fetching Git $version..." diff --git a/coin/provisioning/common/windows/install-gnuwin32.ps1 b/coin/provisioning/common/windows/install-gnuwin32.ps1 index a467b4e9..a6e300e6 100644 --- a/coin/provisioning/common/windows/install-gnuwin32.ps1 +++ b/coin/provisioning/common/windows/install-gnuwin32.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################ +# Copyright (C) 2019 The 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" # This script will install gnuwin32 @@ -43,7 +7,7 @@ $prog = "gnuwin32" $zipPackage = "$prog.zip" $temp = "$env:tmp" -$internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/$prog/$zipPackage" +$internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/$prog/$zipPackage" $externalUrl = "http://download.qt.io/development_releases/$prog/$zipPackage" Download $externalUrl $internalUrl "$temp\$zipPackage" Verify-Checksum "$temp\$zipPackage" "d7a34a385ccde2374b8a2ca3369e5b8a1452c5a5" diff --git a/coin/provisioning/common/windows/install-jdk.ps1 b/coin/provisioning/common/windows/install-jdk.ps1 index dc3a5acd..dc19551d 100644 --- a/coin/provisioning/common/windows/install-jdk.ps1 +++ b/coin/provisioning/common/windows/install-jdk.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -45,19 +9,24 @@ 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 = "8u144" - $arch = "i586" - $sha1 = "3b9ab95914514eaefd72b815c5d9dd84c8e216fc" + $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" } -$installdir = "C:\Program Files\Java\jdk-$version" - -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\jdk-" + $version + "-windows-" + $arch + ".exe" # 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" -$javaPackage = "C:\Windows\Temp\jdk-$version.exe" +if (Is64BitWinHost) { + $javaPackage = "C:\Windows\Temp\jdk-$version.exe" +} else { + $javaPackage = "C:\Windows\Temp\jdk-$version.msi" +} Write-Host "Fetching Java SE $version..." $ProgressPreference = 'SilentlyContinue' @@ -65,7 +34,11 @@ Write-Host "...from local cache" Download $url_cache $url_cache $javaPackage Verify-Checksum $javaPackage $sha1 -Run-Executable "$javaPackage" "/s SPONSORS=0" +if (Is64BitWinHost) { + Run-Executable "$javaPackage" "/s SPONSORS=0" +} else { + Run-Executable "msiexec" "/quiet /i $javaPackage" +} Remove "$javaPackage" Write-Host "Remove Java update from startup" diff --git a/coin/provisioning/common/windows/install-jq.ps1 b/coin/provisioning/common/windows/install-jq.ps1 new file mode 100644 index 00000000..6f5bd333 --- /dev/null +++ b/coin/provisioning/common/windows/install-jq.ps1 @@ -0,0 +1,31 @@ +# Copyright (C) 2019 The 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" + +# This script installs jq + +$jqProgram = "jq" +$jqVersion = "1.6" +$jqExeSHA1 = "2b7ae7b902aa251b55f2fd73ad5b067d2215ce78" +$jqInstallLocation = "C:\Utils\jq" +$jqExe = "C:\Windows\Temp\jq.exe" +$jqCacheURL = "\\ci-files01-hki.ci.qt.io\provisioning\jq\jq-win64-$jqVersion.exe" +$jqOfficialURL = "https://github.com/jqlang/jq/releases/download/jq-$jqVersion/jq-win64.exe" + +Download "$jqOfficialURL" "$jqCacheURL" "$jqExe" +Verify-Checksum $jqExe $jqExeSHA1 +New-Item -Path "C:\Utils" -Name "jq" -ItemType "directory" -Force +Move-Item -Path "$jqExe" -Destination "$jqInstallLocation" -Force + +if(![System.IO.File]::Exists("$jqInstallLocation\jq.exe")){ + Write-Host "Can't find $jqInstallLocation\jq.exe." + exit 1 +} + +# Add jq to Path. It is necessary to prepend it to $env:Path as well, to make +# it available during provisioning +Prepend-Path "$jqInstallLocation" +$env:Path = "$jqInstallLocation;$env:Path" + +Write-Output "jq = $jqVersion" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/install-mcuxpresso.ps1 b/coin/provisioning/common/windows/install-mcuxpresso.ps1 index d74f4b69..b3fa2b4c 100644 --- a/coin/provisioning/common/windows/install-mcuxpresso.ps1 +++ b/coin/provisioning/common/windows/install-mcuxpresso.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -43,7 +7,7 @@ # MCUXpresso IDE provides the tools for flashing and onboard debugging $version = "11.2.0_4120" -$url = "http://ci-files01-hki.intra.qt.io/input/windows/MCUXpressoIDE_$version.zip" +$url = "http://ci-files01-hki.ci.qt.io/input/windows/MCUXpressoIDE_$version.zip" $zip = "C:\Windows\Temp\MCUXpressoIDE_$version.zip" Download $url $url $zip diff --git a/coin/provisioning/common/windows/install-mingw.ps1 b/coin/provisioning/common/windows/install-mingw.ps1 index 0eb37e96..d42eeaab 100644 --- a/coin/provisioning/common/windows/install-mingw.ps1 +++ b/coin/provisioning/common/windows/install-mingw.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################ +# 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 . "$PSScriptRoot\helpers.ps1" @@ -46,15 +10,19 @@ function InstallMinGW [string] $sha1 = $(BadParam("SHA1 checksum of the file")) ) - $null, $null, $arch, $version, $null, $threading, $ex_handling, $build_ver, $revision = $release.split('-') + if ($release -like "*11.2.0*") { + $null, $null, $arch, $version, $null, $threading, $ex_handling, $build_ver, $revision = $release.split('-') + $url_original = "https://github.com/cristianadam/mingw-builds/releases/download/v" + $version + "-" + $revision + "/" + $arch + "-" + $version + "-release-" + $threading + "-" + $ex_handling + "-" + $build_ver + "-" + $revision + ".7z" + } + else { + $null, $null, $arch, $version, $null, $threading, $ex_handling, $runtime_library, $build_ver, $revision = $release.split('-') + $url_original = "https://github.com/niXman/mingw-builds-binaries/releases/download/" + $version + "-" + $build_ver + "-" + $revision + "/" + $arch + "-" + $version + "-release-" + $threading + "-" + $ex_handling + "-" + $runtime_library + "-" + $build_ver + "-" + $revision + ".7z" + } if ($arch -eq "x86_64") { $win_arch = "Win64" } - $envvar = "MINGW$version" - $envvar = $envvar -replace '["."]' + $envvar = "MINGW_PATH" $targetdir = "C:\$envvar" - - $url_original = "https://github.com/cristianadam/mingw-builds/releases/download/v" + $version + "-" + $revision + "/" + $arch + "-" + $version + "-release-" + $threading + "-" + $ex_handling + "-" + $build_ver + "-" + $revision + ".7z" - $url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\" + $release + ".7z" + $url_cache = "https://ci-files01-hki.ci.qt.io/input/windows/" + $release + ".7z" $mingwPackage = "C:\Windows\Temp\MinGW-$version.zip" Download $url_original $url_cache $mingwPackage Verify-Checksum $mingwPackage $sha1 diff --git a/coin/provisioning/common/windows/install-msys2.ps1 b/coin/provisioning/common/windows/install-msys2.ps1 index 535a399e..7a79d4ab 100644 --- a/coin/provisioning/common/windows/install-msys2.ps1 +++ b/coin/provisioning/common/windows/install-msys2.ps1 @@ -1,58 +1,22 @@ -############################################################################ -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will installs msys2 -$version = "20200903" +$version = "20240113" $prog = "msys2" $arch = "x86_64" -$sha1 = "5a1644585fac2d58855d48b4ba4a92579a14cf03" +$sha1 = "b46c08fd901da0fdba1dc30422a322766d7d03c6" $sha1_prebuilt = "d86d45d72228f53f7ae060771bc95b6f54c703c8" $folder = "msys64" $package_prebuilt = $folder + "_" + $version + "_prebuilt.7z" $package = $prog + "-base-" + $arch + "-" + $version + ".tar.xz" -$url_cache_prebuilt = "\\ci-files01-hki.intra.qt.io\provisioning\windows\$package_prebuilt" -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\$package" +$url_cache_prebuilt = "\\ci-files01-hki.ci.qt.io\provisioning\windows\$package_prebuilt" +$url_cache = "https://ci-files01-hki.ci.qt.io/input/windows/$package" $url_official = "http://repo.msys2.org/distrib/$arch/$package" $TargetLocation = "C:\Utils" @@ -69,9 +33,9 @@ if ((Test-Path $url_cache_prebuilt)) { Extract-tar_gz $PackagePath $TargetLocation $msys = "$TargetLocation\$folder\msys2_shell.cmd" - # install perl + # install perl make and yasm # Run these without 'Run-Executable' function. When using the function the gpg-agent will lock the needed tmp*.tmp file. - cmd /c "$msys `"-l`" `"-c`" `"rm -rf /etc/pacman.d/gnupg;pacman-key --init;pacman-key --populate msys2;pacman -S --noconfirm perl make`"" + cmd /c "$msys `"-l`" `"-c`" `"rm -rf /etc/pacman.d/gnupg;pacman-key --init;pacman-key --populate msys2;pacman-key --refresh;pacman -S --noconfirm perl make yasm diffutils`"" Start-Sleep -s 60 cmd /c "$msys `"-l`" `"-c`" `"echo y | cpan -i Text::Template Test::More`"" diff --git a/coin/provisioning/common/windows/install-notepad++.ps1 b/coin/provisioning/common/windows/install-notepad++.ps1 index 175bcbb4..17e86d27 100644 --- a/coin/provisioning/common/windows/install-notepad++.ps1 +++ b/coin/provisioning/common/windows/install-notepad++.ps1 @@ -1,56 +1,37 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will install Notepad++ -$version = "7.3" -if (Is64BitWinHost) { - $arch = ".x64" - $sha1 = "E7306DF1D6E81801FB4BE0868610DB70E979B0AA" -} else { - $arch = "" - $sha1 = "d4c403675a21cc381f640b92e596bae3ef958dc6" +$version = "8.6.5" + +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $arch = ".arm64" + $sha1 = "eecb8a6b6ed3cb1e467d227b8b7751283c35434e" + Break + } + x64 { + $arch = ".x64" + $sha1 = "a0bf3fb15015bc1fbcb819d9a9c61f4762f4a10f" + Break + } + x86 { + $arch = "" + $sha1 = "ba940c6b526da1ce127f43b835b4d8c9d5c4b59c" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\npp." + $version + ".Installer" + $arch + ".exe" -$url_official = "https://notepad-plus-plus.org/repository/7.x/" + $version + "/npp." + $version + ".Installer" + $arch + ".exe" + +$filename_exe = "npp." + $version + ".Installer" + $arch + ".exe" +$url_cache = "https://ci-files01-hki.ci.qt.io/input/windows/" + $filename_exe +$url_official = "https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v" + $version + "/" + $filename_exe $nppPackage = "C:\Windows\Temp\npp-$version.exe" Download $url_official $url_cache $nppPackage diff --git a/coin/provisioning/common/windows/install-openssh.ps1 b/coin/provisioning/common/windows/install-openssh.ps1 new file mode 100644 index 00000000..1f746b14 --- /dev/null +++ b/coin/provisioning/common/windows/install-openssh.ps1 @@ -0,0 +1,48 @@ +# 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 +. "$PSScriptRoot\helpers.ps1" + +# Install Openssh + +$version = "v9.2.2.0p1-Beta" + +$temp = "$env:tmp" +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $zipPackage = "OpenSSH-ARM64" + $sha1 = "ca3e8f44a550b7ae71c8e122acd4ed905d66feb0" + Break + } + x64 { + $zipPackage = "OpenSSH-Win64" + $sha1 = "1397d40d789ae0911b3cc818b9dcd9321fed529b" + Break + } + x86 { + $zipPackage = "OpenSSH-Win32" + $sha1 = "4642C62F72C108C411E27CE282A863791B63329B" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } +} + +Write-Host "Fetching $zipPackage $version..." +$url_cache = "http://ci-files01-hki.ci.qt.io/input/windows/openssh/" + $version + "/" + $zipPackage + ".zip" +$url_official = "https://github.com/PowerShell/Win32-OpenSSH/releases/download/" + $version + "/" + $zipPackage + ".zip" +Download $url_official $url_cache "$temp\$zipPackage" +Verify-Checksum "$temp\$zipPackage" $sha1 + +Write-Host "Extracting the package" +Extract-7Zip "$temp\$zipPackage" C:\"Program Files" + +Write-Host "Installing $zipPackage $version..." +$path = "C:\Program Files\" + $zipPackage + "\install-sshd.ps1" + +# Installation done as shown at https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH +powershell.exe -ExecutionPolicy Bypass -File $path +netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22 +net start sshd +Set-Service sshd -StartupType Automatic diff --git a/coin/provisioning/common/windows/install-protobuf.ps1 b/coin/provisioning/common/windows/install-protobuf.ps1 deleted file mode 100644 index 52e1f240..00000000 --- a/coin/provisioning/common/windows/install-protobuf.ps1 +++ /dev/null @@ -1,70 +0,0 @@ -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# -. "$PSScriptRoot\helpers.ps1" - -# This script will install Google's Protocol Buffers -# Script requires Cmake to be installed and strawberry-perl not to be installed - -$version = "3.6.1" -$sha1 = "44b8ba225f3b4dc45fb56d5881ec6a91329802b6" -$officialUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$version/protobuf-all-$version.zip" -$cachedUrl = "http://ci-files01-hki.intra.qt.io/input/automotive_suite/protobuf-all-$version.zip" -$zip = "C:\Utils\protobuf-all-$version.zip" -$installationFolder = "C:\Utils\protobuf" - -Write-Host "Installing Protocol Buffers" -Add-Path "C:\CMake\bin" -Download "$officialUrl" "$cachedUrl" "$zip" -Verify-Checksum "$zip" "$sha1" -Extract-7Zip "$zip" C:\Utils -New-Item -ItemType directory -Force -Path "C:\Utils\protobuf-$version\cmake\build" -New-Item -ItemType directory -Force -Path "C:\Utils\protobuf-$version\cmake\build\release" -New-Item -ItemType directory -Force -Path "$installationFolder" -cd "C:\Utils\protobuf-$version\cmake\build\release" -cmd /c "`"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Auxiliary\\Build\\vcvars64.bat`" && cmake -G `"NMake Makefiles`" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$installationFolder ../.. && nmake && nmake install" -if(![System.IO.File]::Exists("$installationFolder\bin\protoc.exe")){ - Write-Host "Can't find $installationFolder\bin\protoc.exe. Installation probably failed!" - exit 1 -} - -Remove "$zip" - -Add-Path "$installationFolder\bin" -Set-EnvironmentVariable PROTOBUF_INCLUDE "$installationFolder\include" -Set-EnvironmentVariable PROTOBUF_LIB "$installationFolder\lib" diff --git a/coin/provisioning/common/windows/install-ruby.ps1 b/coin/provisioning/common/windows/install-ruby.ps1 index 53b8c834..53c8faf5 100644 --- a/coin/provisioning/common/windows/install-ruby.ps1 +++ b/coin/provisioning/common/windows/install-ruby.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -49,7 +13,7 @@ if (Is64BitWinHost) { $arch = "-x86" $sha1 = "2639a481c3b5ad11f57d5523cc41ca884286089e" } -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\rubyinstaller-" + $version + $arch + ".exe" +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\rubyinstaller-" + $version + $arch + ".exe" $url_official = "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-" + $version + "/rubyinstaller-" + $version + $arch + ".exe" $rubyPackage = "C:\Windows\Temp\rubyinstaller-$version.exe" diff --git a/coin/provisioning/common/windows/install-sccache.ps1 b/coin/provisioning/common/windows/install-sccache.ps1 index 57bcf140..b8f1605c 100644 --- a/coin/provisioning/common/windows/install-sccache.ps1 +++ b/coin/provisioning/common/windows/install-sccache.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # Install mozilla sccache @@ -50,7 +14,7 @@ param( $basename = "sccache-" + $version + "-" + $arch $zipfile = $basename + ".tar.gz" $tempfile = "C:\Windows\Temp\" + $zipfile -$urlCache = "http://ci-files01-hki.intra.qt.io/input/sccache/" + $zipfile +$urlCache = "http://ci-files01-hki.ci.qt.io/input/sccache/" + $zipfile $urlOfficial = "https://github.com/mozilla/sccache/releases/download/" + $version + "/" + $zipfile $targetFolder = "C:\Program Files\" diff --git a/coin/provisioning/common/windows/install-sed.ps1 b/coin/provisioning/common/windows/install-sed.ps1 index d60efb18..8b9c9671 100644 --- a/coin/provisioning/common/windows/install-sed.ps1 +++ b/coin/provisioning/common/windows/install-sed.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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" @@ -47,8 +11,8 @@ $sha1 = "dfd3d1dae27a24784d7ab40eb074196509fa48fe" $dep_sha1 = "f7edbd7152d8720c95d46dd128b87b8ba48a5d6f" $pkg = "$prog-$version-bin.zip" $dep_pkg = "$prog-$version-dep.zip" -$cached_url = "http://ci-files01-hki.intra.qt.io/input/windows/gnuwin32/$pkg" -$dep_cached_url = "http://ci-files01-hki.intra.qt.io/input/windows/gnuwin32/$dep_pkg" +$cached_url = "http://ci-files01-hki.ci.qt.io/input/windows/gnuwin32/$pkg" +$dep_cached_url = "http://ci-files01-hki.ci.qt.io/input/windows/gnuwin32/$dep_pkg" $install_location = "c:\Utils\$prog" $tmp_location = "c:\users\qt\downloads" diff --git a/coin/provisioning/common/windows/install-sevenzip.ps1 b/coin/provisioning/common/windows/install-sevenzip.ps1 index 7b130a73..47a34e2b 100644 --- a/coin/provisioning/common/windows/install-sevenzip.ps1 +++ b/coin/provisioning/common/windows/install-sevenzip.ps1 @@ -1,58 +1,36 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script installs 7-Zip -$version = "16.04" -$nonDottedVersion = "1604" - -if (Is64BitWinHost) { - $arch = "-x64" - $sha1 = "338A5CC5200E98EDD644FC21807FDBE59910C4D0" -} else { - $arch = "" - $sha1 = "dd1cb1163c5572951c9cd27f5a8dd550b33c58a4" +$version = "23.01" +$nonDottedVersion = "2301" + +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $arch = "-arm64" + $sha1 = "be65c2ea6119c04945c66b13413892f2bb03d9a7" + Break + } + x64 { + $arch = "-x64" + $sha1 = "7DF28D340D7084647921CC25A8C2068BB192BDBB" + Break + } + x86 { + $arch = "" + $sha1 = "D5D00E6EA8B8E68CE7A704FD478DC950E543C25C" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\7z" + $nonDottedVersion + $arch + ".exe" +$url_cache = "https://ci-files01-hki.ci.qt.io/input/windows/7z" + $nonDottedVersion + $arch + ".exe" $url_official = "http://www.7-zip.org/a/7z" + $nonDottedVersion + $arch + ".exe" $7zPackage = "C:\Windows\Temp\7zip-$nonDottedVersion.exe" $7zTargetLocation = "C:\Utils\sevenzip\" diff --git a/coin/provisioning/common/windows/install-stm32cubeprogrammer.ps1 b/coin/provisioning/common/windows/install-stm32cubeprogrammer.ps1 index 2b79ee59..4df207ce 100644 --- a/coin/provisioning/common/windows/install-stm32cubeprogrammer.ps1 +++ b/coin/provisioning/common/windows/install-stm32cubeprogrammer.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -43,7 +7,7 @@ # Official donwload from https://www.st.com/en/development-tools/stm32cubeprog.html $version ="2_5_0" -$url = "http://ci-files01-hki.intra.qt.io/input/windows/STMicroelectronics_v${version}.zip" +$url = "http://ci-files01-hki.ci.qt.io/input/windows/STMicroelectronics_v${version}.zip" $zip = "C:\Windows\Temp\STMicroelectronics_v${version}.zip" Download $url $url $zip diff --git a/coin/provisioning/common/windows/install-strawberry-perl.ps1 b/coin/provisioning/common/windows/install-strawberry-perl.ps1 index 5783fdbc..94cef218 100644 --- a/coin/provisioning/common/windows/install-strawberry-perl.ps1 +++ b/coin/provisioning/common/windows/install-strawberry-perl.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -50,7 +14,7 @@ if (Is64BitWinHost) { $sha1 = "6ad89c6358a174c048f113bfd274d2d0378d60aa" } $installer_name = "strawberry-perl-" + $version + $arch + ".msi" -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\" + $installer_name +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\" + $installer_name $url_official = "http://strawberryperl.com/download/" + $version + "/" + $installer_name $strawberryPackage = "C:\Windows\Temp\" + $installer_name diff --git a/coin/provisioning/common/windows/install-vcpkg-ports-android.ps1 b/coin/provisioning/common/windows/install-vcpkg-ports-android.ps1 new file mode 100644 index 00000000..646f36cd --- /dev/null +++ b/coin/provisioning/common/windows/install-vcpkg-ports-android.ps1 @@ -0,0 +1,23 @@ +# 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 +. "$PSScriptRoot\helpers.ps1" + +Write-Host "Installing vcpkg android ports" +$vcpkgExe = "$env:VCPKG_ROOT\vcpkg.exe" +$vcpkgRoot = "$env:VCPKG_ROOT" + +Set-Location -Path "$PSScriptRoot\vcpkg" +Copy-Item "$PSScriptRoot\..\shared\vcpkg-configuration.json" -Destination "$PSScriptRoot\vcpkg" + +Run-Executable "$vcpkgExe" "install --triplet armeabi-v7a-android-qt --x-install-root armeabi-v7a-android-qt-tmp --debug" + +New-Item -Path "$vcpkgRoot" -Name "installed" -ItemType "directory" -Force +Copy-Item -Path "armeabi-v7a-android-qt-tmp\*" -Destination "$vcpkgRoot\installed" -Recurse -Force + +$versions = jq.exe -r '.overrides[] | \"vcpkg \(.name) for android = \(.version)\"' vcpkg.json +$versions = $versions.Replace("vcpkg", "`nvcpkg") +Write-Output "$versions" >> ~/versions.txt + +Remove-Item -Path "armeabi-v7a-android-qt-tmp" -Recurse -Force + +Set-Location "$PSScriptRoot" diff --git a/coin/provisioning/common/windows/install-vcpkg-ports.ps1 b/coin/provisioning/common/windows/install-vcpkg-ports.ps1 new file mode 100644 index 00000000..55eae4be --- /dev/null +++ b/coin/provisioning/common/windows/install-vcpkg-ports.ps1 @@ -0,0 +1,26 @@ +# 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 +. "$PSScriptRoot\helpers.ps1" + +Write-Host "Installing vcpkg ports" +$vcpkgExe = "$env:VCPKG_ROOT\vcpkg.exe" +$vcpkgRoot = "$env:VCPKG_ROOT" + +Set-Location -Path "$PSScriptRoot\vcpkg" +Copy-Item "$PSScriptRoot\..\shared\vcpkg-configuration.json" -Destination "$PSScriptRoot\vcpkg" + +Run-Executable "$vcpkgExe" "install --triplet x64-windows-qt --x-install-root x64-windows-qt-tmp --debug" +Run-Executable "$vcpkgExe" "install --triplet arm64-windows-qt --x-install-root arm64-windows-qt-tmp --debug" + +New-Item -Path "$vcpkgRoot" -Name "installed" -ItemType "directory" -Force +Copy-Item -Path "x64-windows-qt-tmp\*" -Destination "$vcpkgRoot\installed" -Recurse -Force +Copy-Item -Path "arm64-windows-qt-tmp\*" -Destination "$vcpkgRoot\installed" -Recurse -Force + +$versions = jq.exe -r '.overrides[] | \"vcpkg \(.name) = \(.version)\"' vcpkg.json +$versions = $versions.Replace("vcpkg", "`nvcpkg") +Write-Output "$versions" >> ~/versions.txt + +Remove-Item -Path "x64-windows-qt-tmp" -Recurse -Force +Remove-Item -Path "arm64-windows-qt-tmp" -Recurse -Force + +Set-Location "$PSScriptRoot" diff --git a/coin/provisioning/common/windows/install-vcpkg.ps1 b/coin/provisioning/common/windows/install-vcpkg.ps1 new file mode 100644 index 00000000..f5d1dad3 --- /dev/null +++ b/coin/provisioning/common/windows/install-vcpkg.ps1 @@ -0,0 +1,58 @@ +# 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 +. "$PSScriptRoot\helpers.ps1" + +# This script will install vcpkg + +Write-Host "Installing vcpkg" + +$n = Get-Content "$PSScriptRoot\..\shared\vcpkg_version.txt" +$n = $n.Split('=') +$vcpkgVersion = $n[1] +$nonDottedVersion = $vcpkgVersion.Replace(".", "") + +# Download vcpkg +$vcpkgRoot = "C:\Utils\vcpkg-$vcpkgVersion" +$vcpkgRepo = Get-Content -Path "$PSScriptRoot\..\shared\vcpkg_registry_mirror.txt" | Select-Object -First 1 + +Write-Host "Cloning the vcpkg repo" +git.exe clone "$vcpkgRepo" "$vcpkgRoot" +git.exe -C "$vcpkgRoot" checkout "tags/$vcpkgVersion" + +# Download vcpkg-tool, i.e., vcpkg.exe + +$n = Get-Content "$PSScriptRoot\..\shared\vcpkg_tool_release_tag.txt" +$n = $n.Split('=') +$vcpkgExeReleaseTag = $n[1] +$nonDottedReleaseTag = $vcpkgExeReleaseTag.replace('-', "") + +$vcpkgExeOfficialUrl = "https://github.com/microsoft/vcpkg-tool/releases/download/$vcpkgExeReleaseTag/vcpkg.exe" +$vcpkgExeCacheUrl = "\\ci-files01-hki.ci.qt.io\provisioning\vcpkg\vcpkg-$nonDottedReleaseTag-windows-x64.exe" +$vcpkgExeSHA1 = "F74DCDE7F6F5082EF6DC31FED486FAD69BE8D442" +$vcpkgExe = "C:\Windows\Temp\vcpkg.exe" + +Download "$vcpkgExeOfficialUrl" "$vcpkgExeCacheUrl" "$vcpkgExe" +Verify-Checksum $vcpkgExe $vcpkgExeSHA1 +Move-Item "$vcpkgExe" -Destination "$vcpkgRoot" -Force + +if(![System.IO.File]::Exists("$vcpkgRoot\vcpkg.exe")){ + Write-Host "Can't find $vcpkgRoot\vcpkg.exe." + exit 1 +} + +# Disable telemetry +Set-Content -Value "" -Path "$vcpkgRoot\vcpkg.disable-metrics" -Force + +# Setting VCPKG_ROOT using Set-EnvironmentVariable makes the variable only +# available during build time. In order to make it available during the +# provisioning, we need to directly set it via $env:VCPKG_ROOT as well. +Set-EnvironmentVariable "VCPKG_ROOT" "$vcpkgRoot" +$env:VCPKG_ROOT = "$vcpkgRoot" + +# Set a source for vcpkg Binary and Asset Cache +# The `coin/provisioning/common/windows/mount-vcpkg-cache-drive.ps1` script is +# mounting the SMB share located in `vcpkg-server.ci.qt.io/vcpkg` to drive V:\ +$env:VCPKG_BINARY_SOURCES = "files,V:/binaries,readwrite" +$env:X_VCPKG_ASSET_SOURCES = "x-azurl,file:///V:/assets,,readwrite" + +Write-Output "vcpkg = $vcpkgVersion" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/install_telegraf.ps1 b/coin/provisioning/common/windows/install_telegraf.ps1 index 16f76cb9..3090a25e 100644 --- a/coin/provisioning/common/windows/install_telegraf.ps1 +++ b/coin/provisioning/common/windows/install_telegraf.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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\..\..\common\windows\helpers.ps1" @@ -43,28 +7,53 @@ # Install a specific version of Telegraf # https://github.com/influxdata/telegraf/releases -$version = "1.12.6" - -if (Is64BitWinHost) { - $arch = "amd64" - $sha256 = "5d025d85070e8c180c443580afa8a27421a7bbcf14b5044894e9f3298d0ce97a" -} else { - $arch = "i386" - $sha256 = "5178a0bdaab448c2ef965b0e36f835849cea731ccd87c4a4527f0f05fbbdf271" +$version = "1.12.6" # TODO: ARM is not supported in this version +$has_telegraf_ver = $false + +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $arch = "arm64" + $sha256 = "5925642aad9a35886b172050203287cf33078313f543021781885ed94d9cbcff" + $version = "1.29.4" # TODO: ARM needs this, update this to all + $has_telegraf_ver = $true + Break + } + x64 { + $arch = "amd64" + $sha256 = "5d025d85070e8c180c443580afa8a27421a7bbcf14b5044894e9f3298d0ce97a" + Break + } + x86 { + $arch = "i386" + $sha256 = "5178a0bdaab448c2ef965b0e36f835849cea731ccd87c4a4527f0f05fbbdf271" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } -$filename = "telegraf-" + $version + "_windows_" + $arch + ".zip" +$telegraf_ver = "telegraf-" + $version +$filename_zip = $telegraf_ver + "_windows_" + $arch + ".zip" -$url_cache = "http://ci-files01-hki.intra.qt.io/input/telegraf/" + $filename -$url_official = "https://dl.influxdata.com/telegraf/releases/" + $filename -$tempfile = "C:\Windows\Temp\" + $filename +$url_cache = "http://ci-files01-hki.ci.qt.io/input/telegraf/" + $filename_zip +$url_official = "https://dl.influxdata.com/telegraf/releases/" + $filename_zip +$tempfile = "C:\Windows\Temp\" + $filename_zip Write-Host "Fetching Telegraf $version..." Download $url_official $url_cache $tempfile Verify-Checksum $tempfile $sha256 sha256 Write-Host "Installing telegraf.exe under C:\Utils\telegraf" -Extract-7Zip $tempfile C:\Utils "telegraf" + +if ($has_telegraf_ver -eq $true) { + Extract-7Zip $tempfile C:\Utils + Rename-Item "C:\Utils\$telegraf_ver" "C:\Utils\telegraf" +} else { + Extract-7Zip $tempfile C:\Utils "telegraf" +} + Copy-Item "$PSScriptRoot\..\..\common\windows\telegraf-coin.conf" C:\telegraf-coin.conf . "$PSScriptRoot\telegraf_password.ps1" diff --git a/coin/provisioning/common/windows/jom.ps1 b/coin/provisioning/common/windows/jom.ps1 index 7cb60229..77216b85 100644 --- a/coin/provisioning/common/windows/jom.ps1 +++ b/coin/provisioning/common/windows/jom.ps1 @@ -3,7 +3,7 @@ $version = "1_1_2" $zip = Get-DownloadLocation "jom_$version.zip" -Download http://download.qt.io/official_releases/jom/jom_$version.zip http://ci-files01-hki.intra.qt.io/input/windows/jom_$version.zip $zip +Download http://download.qt.io/official_releases/jom/jom_$version.zip http://ci-files01-hki.ci.qt.io/input/windows/jom_$version.zip $zip Verify-Checksum $zip "80EE5678E714DE99DDAF5F7593AB04DB1C7928E4" Extract-7Zip $zip C:\Utils\Jom diff --git a/coin/provisioning/common/windows/libclang-v100-dyn.ps1 b/coin/provisioning/common/windows/libclang-v100-dyn.ps1 index 2b0caa18..3bb19670 100644 --- a/coin/provisioning/common/windows/libclang-v100-dyn.ps1 +++ b/coin/provisioning/common/windows/libclang-v100-dyn.ps1 @@ -26,7 +26,7 @@ function install() { $zip = "c:\users\qt\downloads\libclang-dyn.7z" $script:OfficialUrl = "https://download.qt.io/development_releases/prebuilt/libclang/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" - $script:CachedUrl = "http://ci-files01-hki.intra.qt.io/input/libclang/dynamic/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" + $script:CachedUrl = "http://ci-files01-hki.ci.qt.io/input/libclang/dynamic/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" Download $OfficialUrl $CachedUrl $zip Verify-Checksum $zip $sha1 diff --git a/coin/provisioning/common/windows/libclang.ps1 b/coin/provisioning/common/windows/libclang.ps1 index ba7a7d80..57f42057 100644 --- a/coin/provisioning/common/windows/libclang.ps1 +++ b/coin/provisioning/common/windows/libclang.ps1 @@ -5,7 +5,7 @@ param( ) . "$PSScriptRoot\helpers.ps1" -$libclang_version="12.0" +$libclang_version="15.0.0" Write-Output "libClang = $libclang_version" >> ~/versions.txt # PySide versions following 5.6 use a C++ parser based on Clang (http://clang.org/). @@ -14,7 +14,6 @@ Write-Output "libClang = $libclang_version" >> ~/versions.txt # Starting from Qt 5.11 QDoc requires Clang to parse C++ $baseDestination = "C:\Utils\libclang-" + $libclang_version + "-" + $toolchain -$libclang_version = $libclang_version -replace '["."]' function install() { @@ -26,7 +25,7 @@ function install() { $zip = "c:\users\qt\downloads\libclang.7z" $script:OfficialUrl = "https://download.qt.io/development_releases/prebuilt/libclang/qt/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" - $script:CachedUrl = "http://ci-files01-hki.intra.qt.io/input/libclang/qt/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" + $script:CachedUrl = "http://ci-files01-hki.ci.qt.io/input/libclang/qt/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" Download $OfficialUrl $CachedUrl $zip Verify-Checksum $zip $sha1 @@ -39,7 +38,7 @@ $toolchainSuffix = "" if ( $toolchain -eq "vs2019" ) { if ( $archVer -eq 64 ) { - $sha1 = "44fabbd45b4b7e659c49347c156bae09d7aaffdc" + $sha1 = "e7c2d27f0e99d63e49225cb1be18c76a1e2a124b" } else { $sha1 = "" @@ -49,7 +48,7 @@ if ( $toolchain -eq "vs2019" ) { if ( $toolchain -eq "mingw" ) { if ( $archVer -eq 64 ) { - $sha1 = "9333170111aa90af6e1db824cd964dba227a4710" + $sha1 = "6c9300051533d5648ffe3e8ae1eb00decae8e6bf" } else { $sha1 = "" @@ -63,9 +62,3 @@ if ( $setDefault ) { Set-EnvironmentVariable "LLVM_INSTALL_DIR" ($baseDestination + "-$archVer") } Set-EnvironmentVariable ("LLVM_INSTALL_DIR_${toolchainSuffix}") ($baseDestination + "-$archVer") - -if ( $libclang_version -eq "120" ) { - # This is a hacked static build of libclang which requires special - # handling on the qdoc side. - Set-EnvironmentVariable "QDOC_USE_STATIC_LIBCLANG" "1" -} diff --git a/coin/provisioning/common/windows/libusb.ps1 b/coin/provisioning/common/windows/libusb.ps1 index 8b0342e1..d654d4bf 100644 --- a/coin/provisioning/common/windows/libusb.ps1 +++ b/coin/provisioning/common/windows/libusb.ps1 @@ -1,56 +1,20 @@ -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 # libusb-1.0 is needed by qt-apps/qdb . "$PSScriptRoot\helpers.ps1" -$archive = Get-DownloadLocation "libusb-1.0.24.7z" +$archive = Get-DownloadLocation "libusb-1.0.26.7z" $libusb_location = "C:\Utils\libusb-1.0" -Copy-Item \\ci-files01-hki.intra.qt.io\provisioning\libusb-1.0\libusb-1.0.24.7z $archive -Verify-Checksum $archive "1ACAAD5C8F5190A10958867101A5FEEF1FFA1CD8" +Copy-Item \\ci-files01-hki.ci.qt.io\provisioning\libusb-1.0\libusb-1.0.26.7z $archive +Verify-Checksum $archive "89b50c7d6085350ed809a12b19131ff4f608b2f2" Extract-7Zip $archive $libusb_location # Tell qt-apps/qdb build system where to find libusb Set-EnvironmentVariable "LIBUSB_PATH" $libusb_location -Write-Output "libusb = libusb-1.0.24" >> ~/versions.txt +Write-Output "libusb = libusb-1.0.26" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/longpath.ps1 b/coin/provisioning/common/windows/longpath.ps1 new file mode 100644 index 00000000..31666ef4 --- /dev/null +++ b/coin/provisioning/common/windows/longpath.ps1 @@ -0,0 +1,2 @@ +New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force + diff --git a/coin/provisioning/common/windows/mesa_llvmpipe.ps1 b/coin/provisioning/common/windows/mesa_llvmpipe.ps1 index 283a92b2..cae1dab8 100644 --- a/coin/provisioning/common/windows/mesa_llvmpipe.ps1 +++ b/coin/provisioning/common/windows/mesa_llvmpipe.ps1 @@ -1,51 +1,15 @@ -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" $version = "11_2_2" $package = "C:\Windows\temp\opengl32sw.7z" -$mesaOpenglSha1_64 = "0ed35efbc8112282be5d0c87c37fde2d15e81998" -$mesaOpenglUrl_64_cache = "http://ci-files01-hki.intra.qt.io/input/windows/opengl32sw-64-mesa_$version-signed.7z" -$mesaOpenglUrl_64_alt = "http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64-mesa_$version-signed.7z" -$mesaOpenglSha1_32 = "96bd6ca0d7fd249fb61531dca888965ffd20f53c" -$mesaOpenglUrl_32_cache = "http://ci-files01-hki.intra.qt.io/input/windows/opengl32sw-32-mesa_$version-signed.7z" -$mesaOpenglUrl_32_alt = "http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-32-mesa_$version-signed.7z" +$mesaOpenglSha1_64 = "58f948746696b17a594b2f542e87b0e831b28dc3" +$mesaOpenglUrl_64_cache = "http://ci-files01-hki.ci.qt.io/input/windows/opengl32sw-64-mesa_$version-signed_sha256.7z" +$mesaOpenglUrl_64_alt = "http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64-mesa_$version-signed_sha256.7z" +$mesaOpenglSha1_32 = "974f468acaa0018d46607e2100f1214fecd35bd4" +$mesaOpenglUrl_32_cache = "http://ci-files01-hki.ci.qt.io/input/windows/opengl32sw-32-mesa_$version-signed_sha256.7z" +$mesaOpenglUrl_32_alt = "http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-32-mesa_$version-signed_sha256.7z" function Extract-Mesa { diff --git a/coin/provisioning/common/windows/mimersql.ps1 b/coin/provisioning/common/windows/mimersql.ps1 new file mode 100644 index 00000000..b5e041d0 --- /dev/null +++ b/coin/provisioning/common/windows/mimersql.ps1 @@ -0,0 +1,31 @@ +# 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 + +. "$PSScriptRoot\helpers.ps1" + +# This script will install Mimer SQL + + +$version = "1107b" + +$url_cache = "https://ci-files01-hki.ci.qt.io/input/windows/MimerSQLInstaller_x64_" + $version + ".exe" +$url_official = "https://install.mimer.com/qt/windows_" + $version + "/MimerSQLInstaller_x64.exe" +$mimersqlPackage = "C:\Windows\Temp\MimerSQLInstaller_x64_" + $version + ".exe" +$sha1 = "A709A06EA1D897B13FA10DBDD4BE3BD0FEB04B28" +$mimer_dir="c:\MimerSQL" + +Download $url_official $url_cache $mimersqlPackage +Verify-Checksum $mimersqlPackage $sha1 +Run-Executable "$mimersqlPackage" "/install InstallFolder=$mimer_dir /passive" + +Set-EnvironmentVariable "MIMERSQL_DEV_ROOT" "$mimer_dir\dev" + +Write-Host "Cleaning $mimersqlPackage.." +#Remove "$mimersqlPackage" +Remove "$mimer_dir\dev\include\odbcinst.h" +Remove "$mimer_dir\dev\include\Sql.h" +Remove "$mimer_dir\dev\include\sqlext.h" +Remove "$mimer_dir\dev\include\sqltypes.h" +Remove "$mimer_dir\dev\include\sqlucode.h" + +Write-Output "Mimer SQL = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/mount-vcpkg-cache-drive.ps1 b/coin/provisioning/common/windows/mount-vcpkg-cache-drive.ps1 new file mode 100644 index 00000000..25a7536c --- /dev/null +++ b/coin/provisioning/common/windows/mount-vcpkg-cache-drive.ps1 @@ -0,0 +1,20 @@ +# 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 + +$credentialsFile = "$env:USERPROFILE\vcpkg_samba_credentials" + +# Extract username and password from the credentials +$username = "vcpkg" +$securePassword = Get-Content -Path "$credentialsFile" -TotalCount 1 | ConvertTo-SecureString -AsPlainText -Force + +# Create a PSCredential object +$credential = New-Object PSCredential -ArgumentList $username, $securePassword + +# Mount the SMB share +# Check if the mount was successful +if (New-PSDrive -Persist -Scope Global -Name V -PSProvider FileSystem -Root \\vcpkg-server.ci.qt.io\vcpkg -Credential $credential) +{ + Write-Host "SMB share mounted successfully!" +} else { + Write-Host "Failed to mount SMB share." +} diff --git a/coin/provisioning/common/windows/mqtt_broker.ps1 b/coin/provisioning/common/windows/mqtt_broker.ps1 index 1853eeb9..4161ddea 100644 --- a/coin/provisioning/common/windows/mqtt_broker.ps1 +++ b/coin/provisioning/common/windows/mqtt_broker.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -44,7 +8,7 @@ $zip = Get-DownloadLocation "pahotest.zip" $commitSHA = "20bad2475c27a6e1d24a56d90a9fceb40963261e" $sha1 = "a0ac88715c2aebb9573a113dc13925a90da19233" -$internalUrl = "http://ci-files01-hki.intra.qt.io/input/mqtt_broker/paho.mqtt.testing-$commitSHA.zip" +$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" Download $externalUrl $internalUrl $zip diff --git a/coin/provisioning/common/windows/msvc-2013-update5.ps1 b/coin/provisioning/common/windows/msvc-2013-update5.ps1 index 52aba390..c75ca030 100644 --- a/coin/provisioning/common/windows/msvc-2013-update5.ps1 +++ b/coin/provisioning/common/windows/msvc-2013-update5.ps1 @@ -1,48 +1,12 @@ -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # Install Visual Studio 2013 update 5 $version = "2013 Update 5 (KB2829760)" $package = "C:\Windows\Temp\vs12-kb2829760.exe" -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\VS2013.5.exe" +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\VS2013.5.exe" Write-Host "Fetching patch for Visual Studio $version..." Copy-Item $url_cache $package diff --git a/coin/provisioning/common/windows/msys.ps1 b/coin/provisioning/common/windows/msys.ps1 index 58aa060b..a7414788 100644 --- a/coin/provisioning/common/windows/msys.ps1 +++ b/coin/provisioning/common/windows/msys.ps1 @@ -3,7 +3,7 @@ # This script will install msys which is needed for configuring openssl for Android $version = "1.0.11" -$url = "\\ci-files01-hki.intra.qt.io\provisioning\windows\msys-$version.7z" +$url = "\\ci-files01-hki.ci.qt.io\provisioning\windows\msys-$version.7z" $zip = Get-DownloadLocation ("msys-$version.7z") $sha1 = "22cd76f1263db8c72727a9537228c481ff33c285" diff --git a/coin/provisioning/common/windows/mysql.ps1 b/coin/provisioning/common/windows/mysql.ps1 index 18a9ce88..10a8b633 100644 --- a/coin/provisioning/common/windows/mysql.ps1 +++ b/coin/provisioning/common/windows/mysql.ps1 @@ -1,89 +1,37 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script installs MySQL $version. # Both x86 and x64 versions needed when x86 integrations are done on x64 machine -$version = "5.7.25" -$baseNameX64 = "mysql-$version-winx64" -$packagex64 = "C:\Windows\temp\$baseNameX64.zip" -$baseNameX86 = "mysql-$version-win32" -$packagex86 = "C:\Windows\temp\$baseNameX86.zip" -$installFolder = "C:\Utils\my_sql" - -function DownloadAndInstall -{ - Param ( - [string]$internalUrl, - [string]$package, - [string]$installPath +$version = "8.0.36" +$installFolder = "C:\Utils" +$officialUrl = "https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-${version}-winx64.zip" +$cacheURl = "http://ci-files01-hki.ci.qt.io/input/windows/mysql-${version}-winx64.zip" +$sha = "e5003569386006ccde9000c98e28e28073c1433d" +$zip = Get-DownloadLocation ("mysql-" + $version + "-winx64.zip") + +function Install { + param( + [string]$officialUrl, + [string]$cacheUrl, + [string]$zip, + [string]$sha ) - Write-Host "Fetching from URL ..." - Copy-Item $internalUrl $package - - $zipDir = [io.path]::GetFileNameWithoutExtension($package) - Extract-7Zip $package $installPath "$zipDir\lib $zipDir\bin $zipDir\share $zipDir\include" - - Remove "$package" -} - -if (Is64BitWinHost) { - # Install x64 bit version - $architecture = "x64" - $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\mysql-$version-winx64.zip" - - DownloadAndInstall $internalUrl $packagex64 $installFolder - - Set-EnvironmentVariable "MYSQL_INCLUDE_x64" "$installFolder\$baseNameX64\include" - Set-EnvironmentVariable "MYSQL_LIB_x64" "$installFolder\$baseNameX64\lib" + Download $officialUrl $cacheURl $zip + Verify-Checksum $zip $sha + Extract-7Zip $zip $installFolder + Remove $zip } -# Install x86 bit version -$architecture = "x86" -$internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\mysql-$version-win32.zip" -DownloadAndInstall $internalUrl $packagex86 $installFolder +Install $officialUrl $cacheURl $zip $sha -Set-EnvironmentVariable "MYSQL_INCLUDE_x86" "$installFolder\$baseNameX86\include" -Set-EnvironmentVariable "MYSQL_LIB_x86" "$installFolder\$baseNameX86\lib" +# Can't set MySQL_ROOT & MySQL_LIBRARY_DIR variables. Those will enable mysql in every windows target. +# Let's use ENV_MySQL_* and use it in platform_configs +Set-EnvironmentVariable "ENV_MySQL_ROOT" "${installFolder}\mysql-${version}-winx64" +Set-EnvironmentVariable "ENV_MySQL_LIBRARY_DIR" "${installFolder}\mysql-${version}-winx64\lib" -# Store version information to ~/versions.txt, which is used to print version information to provision log. Write-Output "MySQL = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/ninja.ps1 b/coin/provisioning/common/windows/ninja.ps1 index e1a29412..956e7835 100644 --- a/coin/provisioning/common/windows/ninja.ps1 +++ b/coin/provisioning/common/windows/ninja.ps1 @@ -1,13 +1,63 @@ . "$PSScriptRoot\helpers.ps1" -$zip = Get-DownloadLocation "ninja-1.10.2-win-x86.zip" - -Download http://master.qt.io/development_releases/prebuilt/ninja/v1.10.2/ninja-win-x86.zip \\ci-files01-hki.intra.qt.io\provisioning\ninja\ninja-1.10.2-win-really-x86.zip $zip -Verify-Checksum $zip "1a22ee9269df8ed69c4600d7ee4ccd8841bb99ca" +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $arch = "arm64" + $version = "1.12.0" + $longPathFixed = $true # fixed https://github.com/ninja-build/ninja/pull/2225 in 1.12.0 + $zip = Get-DownloadLocation "ninja-$version-win-$arch.zip" + $internalUrl = "https://ci-files01-hki.ci.qt.io/input/ninja/v$version/ninja-win$arch.zip" + $externalUrl = "https://github.com/ninja-build/ninja/releases/download/v$version/ninja-win$arch.zip" + $sha1 = "51bf1bac149ae1e3d1572fa9fa87d6431dbddc8b" + Break + } + x64 { + $arch = "amd64" + $version = "1.10.2" + $longPathFixed = $false + $zip = Get-DownloadLocation "ninja-$version-win-x86.zip" + # TODO: Fix this QTQAINFRA-6296 + $internalUrl = "http://master.qt.io/development_releases/prebuilt/ninja/v$version/ninja-win-x86.zip" + $externalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\ninja\ninja-$version-win-really-x86.zip" + $sha1 = "1a22ee9269df8ed69c4600d7ee4ccd8841bb99ca" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } +} +Download $internalUrl $externalUrl $zip +Verify-Checksum $zip $sha1 Extract-7Zip $zip C:\Utils\Ninja Remove "$zip" Add-Path "C:\Utils\Ninja" -Write-Output "Ninja = 1.10.2" >> ~/versions.txt +Write-Output "Ninja ($arch) = $version" >> ~/versions.txt + +if ( -Not $longPathFixed ) { + +$manifest = @" +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> + <application> + <windowsSettings> + <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage> + <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> + </windowsSettings> + </application> +</assembly> +"@ + + +$vs2019 = [System.IO.File]::Exists("C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat") + +if($vs2019) { +Invoke-MtCommand "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64 $manifest "C:\Utils\Ninja\ninja.exe" +} else { +Invoke-MtCommand "C:\Program Files (x86)\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64 $manifest "C:\Utils\Ninja\ninja.exe" +} + +} diff --git a/coin/provisioning/common/windows/nodejs.ps1 b/coin/provisioning/common/windows/nodejs.ps1 index f1b2ff61..3dc6ffe5 100644 --- a/coin/provisioning/common/windows/nodejs.ps1 +++ b/coin/provisioning/common/windows/nodejs.ps1 @@ -1,65 +1,44 @@ -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will install Node.js # Needed by QtWebengine -$version = "12.18.0" -if (Is64BitWinHost) { - $arch = "x64" - $sha1 = "457b1527d249ee471a9445953a906cb10c75378d" -} else { - $arch = "x86" - $sha1 = "58801900f5bddca9c00feed6b84fed729426fc92" +$version = "20.7.0" +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + $arch = "arm64" + $sha256 = "ab4b990c2c1d4a55d565813e7a2f71669dc4d1005faa47185d30bde4416975ab" + $version = "20.12.2" # TODO: ARM starts with newer, LTS + Break + } + x64 { + $arch = "x64" + $sha256 = "b3e5cbf8e247c75f9ddd235d49cfe40f25dde65bdd0eec4cefbca2805d80376b" + Break + } + x86 { + $arch = "x86" + $sha256 = "d6a3c63a5ae71374c144a33c418ab96be497b08df0e9f51861a78127db03aeb5" + Break + } + default { + throw "Unknown architecture $cpu_arch" + } } -$package = "C:\Windows\temp\nodejs-$version.zip" +$package = "C:\Windows\temp\nodejs-$version.7z" $targetFolder = "C:\Utils" $installFolder = "C:\Utils\node-v$version-win-$arch" -$externalUrl = "https://nodejs.org/dist/v$version/node-v$version-win-$arch.zip" -$internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/node-v$version-win-$arch.zip" +$externalUrl = "https://nodejs.org/dist/v$version/node-v$version-win-$arch.7z" +$internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/node-v$version-win-$arch.7z" Write-Host "Installing Node.js" Download $externalUrl $internalUrl $package -Verify-Checksum $package $sha1 +Verify-Checksum $package $sha256 "sha256" Extract-7Zip $package $targetFolder Add-Path $installFolder Remove $package diff --git a/coin/provisioning/common/windows/opcua_unifiedautomation.ps1 b/coin/provisioning/common/windows/opcua_unifiedautomation.ps1 index ee6b8c0d..4542b34c 100644 --- a/coin/provisioning/common/windows/opcua_unifiedautomation.ps1 +++ b/coin/provisioning/common/windows/opcua_unifiedautomation.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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" @@ -50,7 +14,7 @@ function DownloadAndInstallUA $zip = Get-DownloadLocation "uasdkcpp.zip" Write-Host "UACPPSDK: Downloading Unified Automation CPP installer..." - $internalUrl = "http://ci-files01-hki.intra.qt.io/input/opcua_uacpp/$InstallerFileName.zip" + $internalUrl = "http://ci-files01-hki.ci.qt.io/input/opcua_uacpp/$InstallerFileName.zip" # No public download link exists $externalUrl = $internalUrl diff --git a/coin/provisioning/common/windows/openssl-arm64.ps1 b/coin/provisioning/common/windows/openssl-arm64.ps1 index f57d4b20..16627039 100644 --- a/coin/provisioning/common/windows/openssl-arm64.ps1 +++ b/coin/provisioning/common/windows/openssl-arm64.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -46,7 +10,10 @@ # From Visual studio 'C++ Universal Windows Platform support for v142 build tools (ARM64)' and 'Windows Universal C Runtime' were installed # cd C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build # call vcvarsamd64_arm64 -# +# curl -o C:\Utils\openssl-3.0.7.zip http://ci-files01-hki.ci.qt.io/input/openssl/openssl-3.0.7.zip +# cd C:\Utils +# C:\Utils\sevenzip\7z.exe x C:\Utils\openssl-3.0.7.zip +# cd C:\Utils\openssl-3.0.7 # perl Configure no-asm VC-WIN64-ARM --debug --prefix=C:\openssl_arm64\ --openssldir=C:\openssl_arm64\ # nmake # nmake install @@ -56,9 +23,9 @@ # nmake install ################################################################################################################################################# -$version = "1_1_1_k" -$url = "\\ci-files01-hki.intra.qt.io\provisioning\openssl\openssl-$version-arm64.zip" -$sha1 = "e31f6d3a4af225f9314830aad099bb8e5d4a7ff1" +$version = "3_0_7" +$url = "\\ci-files01-hki.ci.qt.io\provisioning\openssl\openssl-$version-arm64.zip" +$sha1 = "19be15069d981b4a96f5715f039df7aaa7456d52" $installFolder = "C:\openssl_arm64" $zip_package = "C:\Windows\Temp\$version.zip" @@ -68,10 +35,29 @@ Verify-Checksum $zip_package $sha1 Extract-7Zip $zip_package C:\ Remove $zip_package -Set-EnvironmentVariable "OPENSSL_ROOT_DIR_x64_arm64" "$installFolder" -Set-EnvironmentVariable "OPENSSL_CONF_x64_arm64" "$installFolder\bin\openssl.cfg" -Set-EnvironmentVariable "OPENSSL_INCLUDE_x64_arm64" "$installFolder\include" -Set-EnvironmentVariable "OPENSSL_LIB_x64_arm64" "$installFolder\lib" +$cpu_arch = Get-CpuArchitecture +switch ($cpu_arch) { + arm64 { + # For native arm64 + Set-EnvironmentVariable "OPENSSL_ROOT_DIR_arm64" "$installFolder" + Set-EnvironmentVariable "OPENSSL_CONF_arm64" "$installFolder\bin\openssl.cfg" + Set-EnvironmentVariable "OPENSSL_INCLUDE_arm64" "$installFolder\include" + Set-EnvironmentVariable "OPENSSL_LIB_arm64" "$installFolder\lib" + Break + } + x64 { + # For cross-compiling x64_arm64 + Set-EnvironmentVariable "OPENSSL_ROOT_DIR_x64_arm64" "$installFolder" + Set-EnvironmentVariable "OPENSSL_CONF_x64_arm64" "$installFolder\bin\openssl.cfg" + Set-EnvironmentVariable "OPENSSL_INCLUDE_x64_arm64" "$installFolder\include" + Set-EnvironmentVariable "OPENSSL_LIB_x64_arm64" "$installFolder\lib" + } + default { + throw "Unknown architecture $cpu_arch" + } +} + +Prepend-Path "$installFolder\bin" # Store version information to ~/versions.txt, which is used to print version information to provision log. Write-Output "OpenSSL ARM= $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/openssl.ps1 b/coin/provisioning/common/windows/openssl.ps1 index be1ba236..8f59f9d2 100644 --- a/coin/provisioning/common/windows/openssl.ps1 +++ b/coin/provisioning/common/windows/openssl.ps1 @@ -1,48 +1,12 @@ -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script installs OpenSSL $version. # Both x86 and x64 versions needed when x86 integrations are done on x64 machine -$version = "1_1_1k" +$version = "3_0_7" $packagex64 = "C:\Windows\Temp\Win64OpenSSL-$version.exe" $packagex86 = "C:\Windows\Temp\Win32OpenSSL-$version.exe" @@ -52,8 +16,8 @@ if (Is64BitWinHost) { $architecture = "x64" $installFolder = "C:\openssl" $externalUrl = "https://slproweb.com/download/Win64OpenSSL-$version.exe" - $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\openssl\Win64OpenSSL-$version.exe" - $sha1 = "ab5367a1f46a3779a870fe2c1a99e03f8ffa3041" + $internalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\openssl\Win64OpenSSL-$version.exe" + $sha1 = "2fb73f233bc565939312782b8157bebc26a5e17b" Write-Host "Fetching from URL ..." Download $externalUrl $internalUrl $packagex64 @@ -67,6 +31,7 @@ if (Is64BitWinHost) { Set-EnvironmentVariable "OPENSSL_CONF_x64" "$installFolder\bin\openssl.cfg" Set-EnvironmentVariable "OPENSSL_INCLUDE_x64" "$installFolder\include" Set-EnvironmentVariable "OPENSSL_LIB_x64" "$installFolder\lib" + Prepend-Path "$installFolder\bin" } # Install x86 bit version @@ -79,8 +44,8 @@ if (Is64BitWinHost) { } $externalUrl = "https://slproweb.com/download/Win32OpenSSL-$version.exe" -$internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\openssl\Win32OpenSSL-$version.exe" -$sha1 = "49f5b7fe01d686f706071c9a00d19bd69f2e7371" +$internalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\openssl\Win32OpenSSL-$version.exe" +$sha1 = "ddead693fa279ad6b1baf123b3af51a9ef289dc1" Write-Host "Fetching from URL ..." Download $externalUrl $internalUrl $packagex86 diff --git a/coin/provisioning/common/windows/postgresql.ps1 b/coin/provisioning/common/windows/postgresql.ps1 index 11fea057..3bb99d47 100644 --- a/coin/provisioning/common/windows/postgresql.ps1 +++ b/coin/provisioning/common/windows/postgresql.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -51,7 +15,7 @@ if (Is64BitWinHost) { $architecture = "x64" $installFolder = "C:\Utils\postgresql" $externalUrl = "http://get.enterprisedb.com/postgresql/postgresql-$version-windows-x64-binaries.zip" - $internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\postgresql-$version-windows-x64-binaries.zip" + $internalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\windows\postgresql-$version-windows-x64-binaries.zip" $sha1 = "5dd604f91973112209362b5abbbd1220c026f645" Write-Host "Fetching from URL ..." @@ -73,7 +37,7 @@ if (Is64BitWinHost) { # Install x86 bit version $architecture = "x86" $externalUrl = "http://get.enterprisedb.com/postgresql/postgresql-$version-windows-binaries.zip" -$internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\postgresql-$version-windows-binaries.zip" +$internalUrl = "\\ci-files01-hki.ci.qt.io\provisioning\windows\postgresql-$version-windows-binaries.zip" $sha1 = "46309190e60eead99c2d39c1dd18a91f2104d000" if (Is64BitWinHost) { $installFolder = "C:\Utils\postgresql$architecture" diff --git a/coin/provisioning/common/windows/protobuf.ps1 b/coin/provisioning/common/windows/protobuf.ps1 new file mode 100644 index 00000000..c0f7b257 --- /dev/null +++ b/coin/provisioning/common/windows/protobuf.ps1 @@ -0,0 +1,118 @@ +# 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 + +. "$PSScriptRoot\helpers.ps1" + +# Here we build protobuf libraries for MinGW and MSVC. +# Since it's a c++ library we need both msvc and mingw because they mangle symbols differently. +# For MSVC it builds with both debug and release configurations because of the visual c++ runtime. +# For MinGW we only need one, so we only build with release. +# The function below takes care of the common part of building - invoking cmake, +# calling ninja and installing it to a directory which we set an environment variable to. +# Because we have two compilers we also have two env. vars. and then each +# config in CI has the Protobuf_ROOT set to the appropriate one. +function build-install-protobuf { + param( + [string]$CC, + [string]$CXX, + [string]$BuildType, + [string]$Postfix, # Used for install-path and the environment variable name + [string[]]$ExtraArguments = @() + ) + $installPrefix = "C:\Utils\protobuf" + $installPath = "${installPrefix}-$Postfix" + Write-Output "Configuring and building protobuf for $CXX" + $oldCC = $env:CC + $oldCXX = $env:CXX + $env:CC = $CC + $env:CXX = $CXX + mkdir build + Push-Location build + cmake .. -G"Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="$BuildType" -DCMAKE_INSTALL_PREFIX="$installPath" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_WITH_ZLIB=OFF -DCMAKE_DEBUG_POSTFIX="d" -DCMAKE_RELWITHDEBINFO_POSTFIX="rd" $ExtraArguments + # ninja install:all # This is broken and does not work + foreach ($config in $BuildType.split(";")) { + ninja -f "build-$config.ninja" install + } + $env:CC = $oldCC + $env:CXX = $oldCXX + Set-EnvironmentVariable "Protobuf_ROOT_$Postfix" "$installPath" + # Set environment variable without "Machine" scope to be used by grpc.ps1 script + [Environment]::SetEnvironmentVariable("Protobuf_ROOT_$Postfix", "$installPath") + Pop-Location + Remove build +} + +function Find-Tool { + param( + [string]$Name, + [string]$Path + ) + # Is tool missing from path? + if (!(Get-Command $Name -ErrorAction SilentlyContinue)) { + # Is tool in the $Path directory? + if (Test-Path "$Path\$Name") { + $env:Path += ";$Path" + } + else { + throw "Cannot find $Name in path or $Name in $Name, something is configured wrong" + } + } +} +# This script is fairly late in provisioning so both of these should be present! +Find-Tool -Name "cmake.exe" -Path "C:\CMake\bin" +Find-Tool -Name "ninja.exe" -Path "C:\Utils\Ninja" + +$version = "21.9" +$sha1 = "3226a0e49d048759b702ae524da79387c59f05cc" +$internalUrl = "http://ci-files01-hki.ci.qt.io/input/protobuf/protobuf-all-$version.zip" +$externalUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$version/protobuf-all-$version.zip" + +$targetDir = "$env:HOMEDRIVE\$env:HOMEPATH\protobuf-$version" +$targetFile = "$targetDir.zip" +Download $externalUrl $internalUrl $targetFile +Verify-Checksum $targetFile $sha1 +Extract-7Zip $targetFile (Join-Path $env:HOMEDRIVE $env:HOMEPATH) +Remove $targetFile + + +# cd into the cmake directory where the CMakeLists.txt file is located +# then we build in a build\ subfolder there for simplicity's sake +Push-Location $targetDir + +### MinGW + +# Check if mingw is where we expect it to be and add it to path: +$mingwPath = [System.Environment]::GetEnvironmentVariable("MINGW_PATH", [System.EnvironmentVariableTarget]::Machine) + "\bin" +if (!(Test-Path $mingwPath)) { + throw "Cannot find mingw in $mingwPath, something is configured wrong" +} + +$oldPath = $env:Path +$env:Path = "$mingwPath;$env:Path" +build-install-protobuf -CC "gcc" -CXX "g++" -BuildType "Release;RelWithDebInfo;Debug" -Postfix "mingw" +$env:Path = $oldPath + +### LLVM MinGW + +$llvmMingwPath = "C:\llvm-mingw" +if (!(Test-Path $llvmMingwPath)) { + throw "Cannot find llvm-mingw in $llvmMingwPath, something is configured wrong" +} + +$oldPath = $env:Path +$env:Path = "$llvmMingwPath\bin;$env:Path" +build-install-protobuf -CC "clang" -CXX "clang++" -BuildType "Release;RelWithDebInfo;Debug" -Postfix "llvm_mingw" +$env:Path = $oldPath + +### MSVC + +EnterVSDevShell + +# We pass along an extra argument to stop protobuf linking with the static runtime +build-install-protobuf -CC "cl" -CXX "cl" -BuildType "Release;RelWithDebInfo;Debug" -Postfix "msvc" -ExtraArguments @("-Dprotobuf_MSVC_STATIC_RUNTIME=OFF") + +$env:Path = $oldPath +Pop-Location +Remove $targetDir + +Write-Output "Protobuf = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/python.ps1 b/coin/provisioning/common/windows/python.ps1 deleted file mode 100644 index f1c5fc6a..00000000 --- a/coin/provisioning/common/windows/python.ps1 +++ /dev/null @@ -1,119 +0,0 @@ -############################################################################# -## -## Copyright (C) 2020 The Qt Company Ltd. -## 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 Python $version. -# Python is required for building Qt 5 from source. -param( - [Int32]$archVer=32, - [string]$targetDir="C:\Python27" -) -. "$PSScriptRoot\helpers.ps1" - -$version = "2.7.13" -if ( $archVer -eq 64 ) { - $arch = ".amd64" - $sha1 = "d9113142bae8829365c595735e1ad1f9f5e2894c" -} else { - $arch = "" - $sha1 = "7e3b54236dbdbea8fe2458db501176578a4d59c0" -} -$package = "C:\Windows\temp\python-$version.msi" -$externalUrl = "https://www.python.org/ftp/python/$version/python-$version" + $arch + ".msi" -$internalUrl = "\\ci-files01-hki.intra.qt.io\provisioning\windows\python-$version" + $arch + ".msi" - -Write-Host "Fetching from URL..." -Download $externalUrl $internalUrl $package -Verify-Checksum $package $sha1 - -# Python installation is flaky, but seems to pass with second run if error occurs. -$stop = $false -[int]$retry = "0" -do { - try { - # /levx = e:'All error messages' v:'Verbose' x:'Extra debugging info' - Run-Executable "msiexec" "/passive /i $package /levx C:\Windows\Temp\Python_log.log TARGETDIR=$targetDir ALLUSERS=1" - $stop = $true - } - catch { - Get-Content C:\Windows\Temp\Python_log.log -Tail 50 - if ($retry -gt 2) { - Write-Host "Python installation failed!" - throw - } - else { - Write-Host "Couldn't install python, retrying in 30 seconds" - Start-Sleep -s 30 - $retry = $retry + 1 - } - } -} -while ($stop -ne $true) - -# We need to change allowZip64 from 'False' to 'True' to be able to create ZIP files that use the ZIP64 extensions when the zipfile is larger than 2 GB -Write-Host "Changing allowZip64 value to 'True'..." -(Get-Content $targetDir\lib\zipfile.py) | ForEach-Object { $_ -replace "allowZip64=False", "allowZip64=True" } | Set-Content $targetDir\lib\zipfile.py -Remove "$package" - -# When installing 32 bit python to 64 bit host, we want to keep only default python in path -# For cross-compilation we export some helper env variable -if (($archVer -eq 32) -And (Is64BitWinHost)) { - Set-EnvironmentVariable "PYTHON2_32_PATH" "$targetDir" - Set-EnvironmentVariable "PIP2_32_PATH" "$targetDir\Scripts" -} else { - Add-Path "$targetDir;$targetDir\Scripts" -} - - -Run-Executable "$targetDir\python.exe" "-m ensurepip" - -Write-Host "Upgrade pip to the latest version available." -Run-Executable "$targetDir\python.exe" "-m pip install --upgrade pip" - -# Install python virtual env -if (IsProxyEnabled) { - $proxy = Get-Proxy - Write-Host "Using proxy ($proxy) with pip" - $pip_args = "--proxy=$proxy" -} -Run-Executable "$targetDir\Scripts\pip.exe" "$pip_args install virtualenv" - -# Install PyPDF2 for QSR documentation -Run-Executable "$targetDir\Scripts\pip.exe" "$pip_args install PyPDF2" - -Write-Output "Python-$archVer = $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/python3.ps1 b/coin/provisioning/common/windows/python3.ps1 index c7481f2f..46f75d7c 100644 --- a/coin/provisioning/common/windows/python3.ps1 +++ b/coin/provisioning/common/windows/python3.ps1 @@ -1,42 +1,6 @@ -############################################################################# -## -## Copyright (C) 2019 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$ -## -############################################################################# +# Copyright (C) 2019 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 Python $version. # Python3 is required for building some qt modules. @@ -52,13 +16,26 @@ param( $package = "C:\Windows\temp\python-$version.exe" # check bit version -if ( $archVer -eq 64 ) { - Write-Host "Installing 64 bit Python" - $externalUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe" - $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/python-$version-amd64.exe" -} else { - $externalUrl = "https://www.python.org/ftp/python/$version/python-$version.exe" - $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/python-$version.exe" +$cpu_arch = Get-CpuArchitecture +Write-Host "Installing $cpu_arch Python" +switch ($cpu_arch) { + arm64 { + $externalUrl = "https://www.python.org/ftp/python/$version/python-$version-arm64.exe" + $internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/python-$version-arm64.exe" + Break + } + x64 { + if ($archVer -eq "64") { + $externalUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe" + $internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/python-$version-amd64.exe" + } else { + $externalUrl = "https://www.python.org/ftp/python/$version/python-$version.exe" + $internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/python-$version.exe" + } + } + default { + throw "Unknown architecture $cpu_arch" + } } Write-Host "Fetching from URL..." @@ -96,19 +73,11 @@ if (IsProxyEnabled) { Write-Host "Upgrade pip3 to the latest version available." Run-Executable "$install_path\python.exe" "-m pip install --upgrade pip" +Write-Host "Configure pip" +Run-Executable "$install_path\python.exe" "-m pip config --user set global.index https://ci-files01-hki.ci.qt.io/input/python_module_cache" +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" -# Install all needed packages in a special wheel cache directory -$python3_wheel_dir="$install_path\python3-wheels" -Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args wheel --wheel-dir $python3_wheel_dir -r $PSScriptRoot\..\shared\requirements.txt" - -Set-EnvironmentVariable "PYTHON3_WHEEL_CACHE-$version-$archVer" "$python3_wheel_dir" -# PYTHON3_WHEEL_CACHE is already in use so we should keep it pointing to 64 bit default -# wheel cache -if (($setDefault) -And ($archVer -eq 64)) { - Set-EnvironmentVariable "PYTHON3_WHEEL_CACHE" "$python3_wheel_dir" -} - # Install PyPDF2 for QSR documentation Run-Executable "$install_path\Scripts\pip3.exe" "$pip_args install PyPDF2" diff --git a/coin/provisioning/common/windows/qnx710.ps1 b/coin/provisioning/common/windows/qnx710.ps1 new file mode 100644 index 00000000..c720619c --- /dev/null +++ b/coin/provisioning/common/windows/qnx710.ps1 @@ -0,0 +1,56 @@ +# 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 QNX 7. + +. "$PSScriptRoot\helpers.ps1" + +$tempFolder = "c:\Windows\Temp" + +function DownloadAndExtract($1, $2, $3, $4, $5) { + $url = $1 + $sha = $2 + $file = $3 + $folder = $4 + $cachedUrl = $5 + + Download $url $cachedUrl "$tempFolder\$file" + Verify-Checksum "$tempFolder\$file" "$sha" + Extract-tar_gz "$tempFolder\$file" $folder +} + +$aarch64le_toolchain = "$PSScriptRoot\..\shared\cmake_toolchain_files\qnx-toolchain-aarch64le.cmake" +$armv7le_toolchain = "$PSScriptRoot\..\shared\cmake_toolchain_files\qnx-toolchain-armv7le.cmake" +$x8664_toolchain = "$PSScriptRoot\..\shared\cmake_toolchain_files\qnx-toolchain-x8664.cmake" + +$targetFolder = "C:\Utils\" +$folderName = "qnx710" +$targetPath = "$targetFolder$folderName" + +# QNX SDP +$cachedUrl = "\\ci-files01-hki.ci.qt.io\provisioning\qnx\qnx710-windows-linux-20240417.tar.xz" +$sourceFile = "http://ci-files01-hki.ci.qt.io/input/qnx/qnx710-windows-linux-20240417.tar.xz" +$targetFile = "qnx710.tar.xz" +$sha1 = "cd2d35004fb2798089e29d9e1226691426632da0" +DownloadAndExtract $sourceFile $sha1 $targetFile $targetFolder $cachedUrl + +Copy-Item $aarch64le_toolchain $targetPath +Copy-Item $armv7le_toolchain $targetPath +Copy-Item $x8664_toolchain $targetPath + +cmd /c "dir $targetPath" + +# Verify that we have last files in tars +if (-not (test-path $targetPath\qnxsdp-env.bat)) { + throw "QNX SDP installation failed!" +} +if (-not (test-path $targetPath\qnx-toolchain-x8664.cmake)) { + throw "QNX toolchain installation failed!" +} + +# Set env variables +Set-EnvironmentVariable "QNX_710" "$targetPath" +Set-EnvironmentVariable "QNX_710_CMAKE" "C:/Utils/$folderName" + +Write-Output "QNX SDP = 7.1.0" >> ~\versions.txt + diff --git a/coin/provisioning/common/windows/set-network-test-server.ps1 b/coin/provisioning/common/windows/set-network-test-server.ps1 index f314494c..938ef99a 100644 --- a/coin/provisioning/common/windows/set-network-test-server.ps1 +++ b/coin/provisioning/common/windows/set-network-test-server.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" diff --git a/coin/provisioning/common/windows/set-proxy.ps1 b/coin/provisioning/common/windows/set-proxy.ps1 index 4fcd073f..f2a89e43 100644 --- a/coin/provisioning/common/windows/set-proxy.ps1 +++ b/coin/provisioning/common/windows/set-proxy.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 $n = Get-Content "$PSScriptRoot\..\shared\http_proxy.txt" $n = $n.Split('=') diff --git a/coin/provisioning/common/windows/share-test-folders.ps1 b/coin/provisioning/common/windows/share-test-folders.ps1 new file mode 100644 index 00000000..36b02e82 --- /dev/null +++ b/coin/provisioning/common/windows/share-test-folders.ps1 @@ -0,0 +1,40 @@ +# 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 creates and shares folders so that we can run I/O tests with +# UNC paths, without depending on an SBM server + +$readonly='testshare' +$writable='testsharewritable' +$readonlypath="${env:SystemDrive}\${readonly}" +$writablepath="${env:SystemDrive}\${writable}" + +Write-Host "******************** Creating folders ${readonlpath} and ${writablepath}" + +if ($(Test-Path -Path $readonlypath)) { + Remove-SmbShare -Name $readonly -Force + Remove-Item -Path $readonlypath -Force -Recurse +} +if ($(Test-Path -Path $writablepath)) { + Remove-SmbShare -Name $writable -Force + Remove-Item -Path $writablepath -Force -Recurse +} + +New-Item ${readonlypath} -ItemType Directory +New-Item "${readonlypath}\tmp" -ItemType Directory +New-SmbShare -Name ${readonly} -Path ${readonlypath} -ReadAccess Users +# As expected by tst_networkselftest, exactly 34 bytes +"This is 34 bytes. Do not change..." ` + | Out-File -Encoding ascii -FilePath "${readonlypath}\test.pri" -NoNewline +New-Item "${readonlypath}\readme.txt" -ItemType File + +New-Item ${writablepath} -ItemType Directory +New-SmbShare -Name ${writable} -Path ${writablepath} -ChangeAccess Users + +Write-Host "******************** File system content" +dir ${env:SystemDrive} +cd "\\${env:COMPUTERNAME}\${readonly}" +dir +cd "\\${env:COMPUTERNAME}\${writable}" +dir +Write-Host "******************** Done Content" diff --git a/coin/provisioning/common/windows/squish-coco.ps1 b/coin/provisioning/common/windows/squish-coco.ps1 index 5587fb03..160bc654 100644 --- a/coin/provisioning/common/windows/squish-coco.ps1 +++ b/coin/provisioning/common/windows/squish-coco.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2018 The Qt Company Ltd. -## Contact: http://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$ -## -############################################################################# +# 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 # This script installs Squish Coco for RTA @@ -43,7 +7,7 @@ $coco_version="4.2.2" -$url="http://ci-files01-hki.intra.qt.io/input/coco/SquishCocoSetup_" + $coco_version + "_Windows_x64.exe" +$url="http://ci-files01-hki.ci.qt.io/input/coco/SquishCocoSetup_" + $coco_version + "_Windows_x64.exe" $sha1="d6f9f3c20df086ec9a7e13a068f4446442ae5d51" $installer="C:\Windows\Temp\SquishCocoSetup_" + $coco_version + "_Windows_x64.exe" diff --git a/coin/provisioning/common/windows/squishInstall.ps1 b/coin/provisioning/common/windows/squishInstall.ps1 index 8d36a267..ec4d240a 100644 --- a/coin/provisioning/common/windows/squishInstall.ps1 +++ b/coin/provisioning/common/windows/squishInstall.ps1 @@ -1,56 +1,22 @@ -############################################################################# -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will pre-installed squish package for Windows. # Squish is need by Release Test Automation (RTA) -$version = "6.7-20210614-1625" -$qtBranch = "61x" +$version = "7.2.1" +$qtBranch = "66x" $targetDir = "C:\Utils\squish" $squishPackage = "C:\Utils\rta_squish" -$squishUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\jenkins_build\stable" -$licenseUrl = "\\ci-files01-hki.intra.qt.io\provisioning\squish\coin\515x" +$squishUrl = "\\ci-files01-hki.ci.qt.io\provisioning\squish\jenkins_build\stable" +$licenseBranch="squish_license" +$licenseUrl = "\\ci-files01-hki.ci.qt.io\provisioning\squish\coin\$licenseBranch" +$testSuiteUrl="\\ci-files01-hki.ci.qt.io\provisioning\squish\coin\suite_test_squish" # Squish license -$licensePackage = ".squish-3-license" +$licensePackage = ".squish-license" Write-Host "Installing Squish license to home directory" Copy-Item $licenseUrl\$licensePackage ~\$licensePackage @@ -67,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 = "0ce4f94ebff488fedef29e9ed62b400a8b5014fb" + $sha1 = "eed4ed4936fbbacb11e0d8a00ff190e1ea808eeb" } } else { $winVersion = "n/a" @@ -75,10 +41,12 @@ if (($OSVersion -eq "Windows 10 Enterprise") -or ($OSVersion -eq "Windows 10 Pro $squishArchive = "prebuild-squish-$version-$qtBranch-$winVersion-$arch.zip" Copy-Item "$squishUrl\$squishArchive" "C:\Utils" +Copy-Item -Recurse "$testSuiteUrl" "C:\Utils" Verify-Checksum "C:\Utils\$squishArchive" $sha1 Extract-7Zip "C:\Utils\$squishArchive" "C:\Utils" -Rename-Item "$squishPackage" "$targetDir" + +Remove-Item "C:\Utils\prebuild*" Write-Host "Verifying Squish Installation for following targets:" get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { $_.FullName } -get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { if (cmd /c $_.FullName --testsuite "$targetDir\suite_test_squish" |Select-String -Pattern "Squish test run successfully") { Write-Host "Squish tested successfully"} else { [Environment]::Exit(1) } } +get-childitem "$targetDir" -Filter squishrunner.exe -Recurse | % { if (cmd /c $_.FullName --testsuite "C:\Utils\suite_test_squish" |Select-String -Pattern "Squish test run successfully") { Write-Host "Squish tested successfully"} else { [Environment]::Exit(1) } } diff --git a/coin/provisioning/common/windows/telegraf_password.ps1 b/coin/provisioning/common/windows/telegraf_password.ps1 index 6d46da0f..36a4f523 100644 --- a/coin/provisioning/common/windows/telegraf_password.ps1 +++ b/coin/provisioning/common/windows/telegraf_password.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## 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$ -## -############################################################################# +# Copyright (C) 2019 The 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" diff --git a/coin/provisioning/common/windows/unset-proxy.ps1 b/coin/provisioning/common/windows/unset-proxy.ps1 index 22352efc..fa9e74d1 100644 --- a/coin/provisioning/common/windows/unset-proxy.ps1 +++ b/coin/provisioning/common/windows/unset-proxy.ps1 @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2017 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 Write-Host "Disabling proxy" # A bit-mask is needed to disable "Automatically detect settings" from LAN diff --git a/coin/provisioning/common/windows/update-msvc2019.ps1 b/coin/provisioning/common/windows/update-msvc2019.ps1 index f2722d53..30f96594 100644 --- a/coin/provisioning/common/windows/update-msvc2019.ps1 +++ b/coin/provisioning/common/windows/update-msvc2019.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -43,13 +7,15 @@ # NOTE! Visual Studio is pre-installed to tier 1 image so this script won't install the whole Visual Studio. See ../../../pre-provisioning/qtci-windows-10-x86_64/msvc2019.txt # MSVC 2019 online installers can be found from here https://docs.microsoft.com/en-us/visualstudio/releases/2019/history#installing-an-earlier-release -$version = "16.11.8" -$urlCache_vsInstaller = "\\ci-files01-hki.intra.qt.io\provisioning\windows\msvc\vs2019_Professional_$version.exe" -$urlOfficial_vsInstaller = "https://download.visualstudio.microsoft.com/download/pr/b763973d-da6e-4025-834d-d8bc48e7d37f/e122bff0bac32d630b335db65fb61c7da25fea28b7ae58fd65cb2e170ef94f2c/vs_Professional.exe" -$sha1_vsInstaller = "993f4e9ece89dd5d8daac3c241f97e24a464f78c" -$urlCache_buildToolsInstaller = "\\ci-files01-hki.intra.qt.io\provisioning\windows\msvc\vs2019_BuildTools_$version.exe" -$urlOfficial_buildToolsInstaller = "https://download.visualstudio.microsoft.com/download/pr/b763973d-da6e-4025-834d-d8bc48e7d37f/4c9d3173a35956d1cf87e0fa8a9c79a0195e6e2acfe39f1ab92522d54a3bebb9/vs_BuildTools.exe" -$sha1_buildToolsInstaller = "9a7d0dd58b68a31305c1ffa0181e5b64d2b48d3b" +# NOTE! Currenlty Buildtools are not updated. There seems to be an issue with installer. When it's run twice it get stuck and can't be run again. + +$version = "16.11.10" +$urlCache_vsInstaller = "\\ci-files01-hki.ci.qt.io\provisioning\windows\msvc\vs2019_Professional_$version.exe" +$urlOfficial_vsInstaller = "https://download.visualstudio.microsoft.com/download/pr/791f3d28-7e20-45d9-9373-5dcfbdd1f6db/cd440cf67c0cf1519131d1d51a396e44c5b4f7b68b541c9f35c05a310d692f0a/vs_Professional.exe" +$sha1_vsInstaller = "d4f3b3b7dc28dcc3f25474cd1ca1e39fca7dcf3f" +$urlCache_buildToolsInstaller = "\\ci-files01-hki.ci.qt.io\provisioning\windows\msvc\vs2019_BuildTools_$version.exe" +# $urlOfficial_buildToolsInstaller = "https://download.visualstudio.microsoft.com/download/pr/791f3d28-7e20-45d9-9373-5dcfbdd1f6db/d5eabc3f4472d5ab18662648c8b6a08ea0553699819b88f89d84ec42d12f6ad7/vs_BuildTools.exe" +# $sha1_buildToolsInstaller = "69889f45d229de8e0e76b6d9e05964477eee2e78" $installerPath = "C:\Windows\Temp\installer.exe" function Install { @@ -64,14 +30,70 @@ function Install { Write-Host "Installing msvc 2019 $version" Download $urlOfficial $urlCache $installerPath Verify-Checksum $installerPath $sha1 + # We have to update the installer bootstrapper before calling the actual installer. + # Otherwise installation might fail silently + Run-Executable "$installerPath" "--quiet --update" Run-Executable "$installerPath" "update --passive --wait" Remove-Item -Force -Path $installerPath } +function Get-Vswhere-Property { + Param ( + [ValidateSet(2017, 2019, 2022)] + [int] $vsYear = $(BadParam("Visual Studio Year")), + + [ValidatePattern("Professional|Build *Tools|Community|Enterprise")] + [string] $vsEdition = $(BadParam("Visual Studio Edition")), + + [string] $property = $(BadParam("vswhere property")) + ) + + $range = switch ($vsYear) + { + 2017 { "[15.0,16`)" } + 2019 { "[16.0,17`)" } + 2022 { "[17.0,18`)" } + } + + $vsEdition = $vsEdition -replace " ","" + + $vswhereInfo = New-Object System.Diagnostics.ProcessStartInfo + $vswhereInfo.FileName = "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + $vswhereInfo.RedirectStandardError = $true + $vswhereInfo.RedirectStandardOutput = $true + $vswhereInfo.UseShellExecute = $false + $vswhereInfo.Arguments = "-version $range", "-latest", ` + "-products Microsoft.VisualStudio.Product.$vsEdition", "-property $property" + $vswhereProcess = New-Object System.Diagnostics.Process + $vswhereProcess.StartInfo = $vswhereInfo + $vswhereProcess.Start() | Out-Null + $vswhereProcess.WaitForExit() + $stdout = $vswhereProcess.StandardOutput.ReadToEnd() + if ([string]::IsNullOrEmpty($stdout)) + { + throw "VS edition or property $property not found by vswhere" + } + $stderr = $vswhereProcess.StandardError.ReadToEnd() + $vsExit = $vswhereProcess.ExitCode + if ($vsExit -ne 0) + { + throw "vswhere failed with exit code $vsExit. stderr: $stderr" + } + return $stdout +} + Install $urlOfficial_vsInstaller $urlCache_vsInstaller $sha1_vsInstaller -Install $urlOfficial_buildToolsInstaller $urlCache_buildToolsInstaller $sha1_buildToolsInstaller +# Install $urlOfficial_buildToolsInstaller $urlCache_buildToolsInstaller $sha1_buildToolsInstaller + +$msvc2019Version = Get-Vswhere-Property 2019 "Professional" catalog_productDisplayVersion +$msvc2019Complete = Get-Vswhere-Property 2019 "Professional" isComplete +$msvc2019Launchable = Get-Vswhere-Property 2019 "Professional" isLaunchable -$msvc2019Version = (cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property catalog_productDisplayVersion 2`>`&1) +if($msvc2019Version -ne $version -or [int]$msvc2019Complete -ne 1 ` + -or [int]$msvc2019Launchable -ne 1) { + throw "MSVC 2019 update failed. msvc2019Version: $($msvc2019Version) ` + msvc2019Complete: $($msvc2019Complete) msvc2019Launchable: $($msvc2019Launchable)" +} Write-Output "Visual Studio 2019 = $msvc2019Version" >> ~\versions.txt Write-Output "Visual Studio 2019 Build Tools = $version" >> ~\versions.txt diff --git a/coin/provisioning/common/windows/vc_redist.ps1 b/coin/provisioning/common/windows/vc_redist.ps1 index 62814b10..69eab4d2 100644 --- a/coin/provisioning/common/windows/vc_redist.ps1 +++ b/coin/provisioning/common/windows/vc_redist.ps1 @@ -1,42 +1,6 @@ -############################################################################# -## -## Copyright (C) 2017 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$ -## -############################################################################# +# Copyright (C) 2017 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 . "$PSScriptRoot\helpers.ps1" @@ -47,12 +11,12 @@ if (Is64BitWinHost) { Write-Host "Running in 64 bit system" $arch = "x64" $externalUrl = "https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe" - $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/vc_redist.x64.exe" + $internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/vc_redist.x64.exe" $sha1 = "3155cb0f146b927fcc30647c1a904cd162548c8c" } else { $arch = "x86" $externalUrl = "https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe" - $internalUrl = "http://ci-files01-hki.intra.qt.io/input/windows/vc_redist.x86.exe" + $internalUrl = "http://ci-files01-hki.ci.qt.io/input/windows/vc_redist.x86.exe" $sha1 = "bfb74e498c44d3a103ca3aa2831763fb417134d1" } diff --git a/coin/provisioning/common/windows/vcpkg/vcpkg.json b/coin/provisioning/common/windows/vcpkg/vcpkg.json new file mode 100644 index 00000000..70cb16fb --- /dev/null +++ b/coin/provisioning/common/windows/vcpkg/vcpkg.json @@ -0,0 +1,12 @@ +{ + "overrides": [ + { + "name": "openssl", + "version": "3.0.7", + "port-version": 2 + } + ], + "dependencies": [ + "openssl" + ] +} diff --git a/coin/provisioning/common/windows/vulkansdk.ps1 b/coin/provisioning/common/windows/vulkansdk.ps1 index 6af8aa56..aeeff696 100644 --- a/coin/provisioning/common/windows/vulkansdk.ps1 +++ b/coin/provisioning/common/windows/vulkansdk.ps1 @@ -1,41 +1,5 @@ -############################################################################ -## -## Copyright (C) 2021 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" @@ -45,7 +9,7 @@ $version = "1.2.182.0" $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.intra.qt.io\provisioning\windows\VulkanSDK-$version-Installer.exe" $vulkanPackage +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 Verify-Checksum "$vulkanPackage" "$sha1" Run-Executable $vulkanPackage "/S" diff --git a/coin/provisioning/common/windows/win10sdk.ps1 b/coin/provisioning/common/windows/win10sdk.ps1 index dd75cf71..f5c87846 100644 --- a/coin/provisioning/common/windows/win10sdk.ps1 +++ b/coin/provisioning/common/windows/win10sdk.ps1 @@ -1,47 +1,11 @@ -############################################################################ -## -## Copyright (C) 2018 The Qt Company Ltd. -## 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$ -## -############################################################################# +# 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 . "$PSScriptRoot\helpers.ps1" # This script will install Windows 10 SDK -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\winsdksetup.exe" +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\winsdksetup.exe" $url_official = "https://download.microsoft.com/download/8/C/3/8C37C5CE-C6B9-4CC8-8B5F-149A9C976035/windowssdk/winsdksetup.exe" $package = "C:\Windows\Temp\winsdksetup.exe" $sha1 = "db237323f1779fb143e7cdc558e4345e7004489e" diff --git a/coin/provisioning/common/windows/winrtrunner.ps1 b/coin/provisioning/common/windows/winrtrunner.ps1 index 6c092917..bb29e1a6 100644 --- a/coin/provisioning/common/windows/winrtrunner.ps1 +++ b/coin/provisioning/common/windows/winrtrunner.ps1 @@ -2,7 +2,7 @@ $zip = Get-DownloadLocation "winrtrunner.zip" $url = "http://download.qt.io/development_releases/prebuilt/winrtrunner/winrtrunner_2018-07-06.zip" -$url_cache = "\\ci-files01-hki.intra.qt.io\provisioning\windows\winrtrunner\winrtrunner_2018-07-06.zip" +$url_cache = "\\ci-files01-hki.ci.qt.io\provisioning\windows\winrtrunner\winrtrunner_2018-07-06.zip" Download $url $url_cache $zip Verify-Checksum $zip "93548e8c3fb8fded2474996ef5e0163f489ce8cf" |