From e3deccd936278e365e6dc94059e18ed03ed53bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joni=20J=C3=A4ntti?= Date: Tue, 26 Sep 2017 15:04:23 +0300 Subject: Yocto toolchain provisioning to CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Provisioning scripts need to install Yocto toolchains (32 and 64 bit) so that the artifacts aren't needed to be unzipped during Qt builds. Task-number: QTQAINFRA-1454 Change-Id: Idceeabb7aa9ffe2555fb98c94916f8429c32af75 Reviewed-by: Tony Sarajärvi --- .../qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh | 10 ++- .../qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh | 89 ++++++++++++++++++++++ 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100755 coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh (limited to 'coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64') diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh index 20fb83ad..62366933 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh @@ -43,7 +43,7 @@ cd "$tempDir" #latest commit from the master proven to work git checkout c7f1cf01b8245762ca5864e835d84f6677ae8b1f git submodule update --init pixman -./configure --target-list=arm-linux-user --static +./configure --target-list=arm-linux-user,aarch64-linux-user --static make sudo make install rm -rf "$tempDir" @@ -51,13 +51,19 @@ rm -rf "$tempDir" # Enable binfmt support sudo apt-get -y install binfmt-support -# Install qemu binfmt +# Install qemu binfmt for 32bit and 64bit arm architectures sudo update-binfmts --package qemu-arm --install arm \ /usr/local/bin/qemu-arm \ --magic \ "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \ --mask \ "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" +sudo update-binfmts --package qemu-aarch64 --install aarch64 \ +/usr/local/bin/qemu-aarch64 \ +--magic \ +"\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00" \ +--mask \ +"\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" # First test using QFont fails if fonts-noto-cjk is installed. This happens because # running fontcache for that font takes > 5 mins when run on QEMU. Running fc-cache diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh new file mode 100755 index 00000000..050f4aba --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +############################################################################# +## +## Copyright (C) 2017 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:LGPL21$ +## 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 http://www.qt.io/terms-conditions. For further +## information use the contact form at http://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 2.1 or version 3 as published by the Free +## Software Foundation and appearing in the file LICENSE.LGPLv21 and +## LICENSE.LGPLv3 included in the packaging of this file. Please review the +## following information to ensure the GNU Lesser General Public License +## requirements will be met: https://www.gnu.org/licenses/lgpl.html and +## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## As a special exception, The Qt Company gives you certain additional +## rights. These rights are described in The Qt Company LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## $QT_END_LICENSE$ +## +############################################################################# + +# This script installs the Yocto toolchain + +set -e + +source "${BASH_SOURCE%/*}/../common/DownloadURL.sh" + +echo "Installing Yocto toolchain for 32-bit b2qt..." + +versionARM="2.2.2" +package="b2qt-x86_64-meta-toolchain-b2qt-embedded-sdk-qemuarmv7-2c947f7.sh" +PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/boot2qt/morty/$package" +AltUrl="http://download.qt.io/development_releases/prebuilt/boot2qt/morty/$package" +SHA1="2583ae29951954cb27f12400fcb4ee94738d1430" +yoctoInstaller="/tmp/yocto-toolchain-ARMv7.sh" +yoctoLocationARMv7="/opt/yocto-armv7" +sysrootARMv7="sysroots/armv7ahf-neon-poky-linux-gnueabi" +crosscompileARMv7="sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-" + +DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller" +chmod +x "$yoctoInstaller" + +/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationARMv7" +rm -rf "$yoctoInstaller" + +echo "Installing Yocto toolchain for 64-bit b2qt..." + +versionARM64="2.2.2" +package="b2qt-x86_64-meta-toolchain-b2qt-embedded-sdk-qemuarm64-2c947f7.sh" +PrimaryUrl="http://ci-files01-hki.intra.qt.io/input/boot2qt/morty/$package" +AltUrl="http://download.qt.io/development_releases/prebuilt/boot2qt/morty/$package" +SHA1="512b5bc1ad62af88d021eb511eeac4648d661fc6" +yoctoInstaller="/tmp/yocto-toolchain-ARM64.sh" +yoctoLocationARM64="/opt/yocto-arm64" +sysrootARM64="sysroots/aarch64-poky-linux" +crosscompileARM64="sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-" + +DownloadURL "$PrimaryUrl" "$AltUrl" "$SHA1" "$yoctoInstaller" +chmod +x "$yoctoInstaller" + +/bin/bash "$yoctoInstaller" -y -d "$yoctoLocationARM64" +rm -rf "$yoctoInstaller" + +if [ -e "$yoctoLocationARMv7/$sysrootARMv7" -a -e "$yoctoLocationARMv7/${crosscompileARMv7}g++" -a -e "$yoctoLocationARM64/$sysrootARM64" -a -e "$yoctoLocationARM64/${crosscompileARM64}g++" ]; then + echo "export QEMUARMV7_TOOLCHAIN_SYSROOT=$yoctoLocationARMv7/$sysrootARMv7" >> ~/.profile + echo "export QEMUARMV7_TOOLCHAIN_CROSS_COMPILE=$yoctoLocationARMv7/$crosscompileARMv7" >> ~/.profile + echo "export QEMUARM64_TOOLCHAIN_SYSROOT=$yoctoLocationARM64/$sysrootARM64" >> ~/.profile + echo "export QEMUARM64_TOOLCHAIN_CROSS_COMPILE=$yoctoLocationARM64/$crosscompileARM64" >> ~/.profile +else + echo "Error! Couldn't find installation paths for Yocto toolchain. Aborting provisioning." 1>&2 + exit 1 +fi + +echo "Yocto ARMv7 toolchain = $versionARM" >> ~/versions.txt +echo "Yocto ARM64 toolchain = $versionARM64" >> ~/versions.txt -- cgit v1.2.3 From 0e278c4e95aa5d2e9df315125c119f36149fcc95 Mon Sep 17 00:00:00 2001 From: Heikki Halmet Date: Fri, 3 Nov 2017 13:09:55 +0200 Subject: Provisioning: Remove logical OR when echo errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit set -e won't work if logical OR is used after commands. These error echo's need to be removed so that error catch will works. Also set -ex added to print executed command when error caught. Task-number: QTQAINFRA-1533 Change-Id: Ib4ea832a0ee813f99f59ebacad51ec57c3eff57d Reviewed-by: Tony Sarajärvi --- coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64') diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh index 62366933..74ef2b4e 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh @@ -32,11 +32,11 @@ ## ############################################################################# -set -e +set -ex # build latest qemu to usermode sudo apt-get -y install automake autoconf libtool -tempDir=$(mktemp -d) || echo "Failed to create temporary directory" +tempDir=$(mktemp -d) git clone git://git.qemu.org/qemu.git "$tempDir" cd "$tempDir" -- cgit v1.2.3 From 537ea17d14526bc6564765e2dd4652e11a3ed235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joni=20J=C3=A4ntti?= Date: Thu, 2 Nov 2017 11:16:42 +0200 Subject: Fix Ubuntu 16.04 random provisioning fail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ubuntu 16.04 provisioning sometimes fails in the apt-get commands for package installations. This is caused by a lock that is still in use when the system is calling the apt-get commands. This change will use the apt daemon to queue the install commands and wait for the lock to release instead of checking once and then failing if the lock is not open. Task-number: QTQAINFRA-1502 Change-Id: Idd4aff42f99cf4d14c08aef8fcc3cb7dbc58b2dd Reviewed-by: Tony Sarajärvi --- .../qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh | 37 +++++++++++----------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64') diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh index f07be55a..f47875a3 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh @@ -50,40 +50,40 @@ try echo "Installing packages" # Git is not needed by builds themselves, but is nice to have # immediately as one starts debugging - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install git || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install git || throw $ExceptionAPT # 7zip is a needed decompressing tool - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install p7zip || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install p7zip || throw $ExceptionAPT # libssl-dev provides headers for OpenSSL - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libssl-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libssl-dev || throw $ExceptionAPT # Needed libraries for X11 support accordingly to https://wiki.qt.io/Building_Qt_5_from_Git - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev || throw $ExceptionAPT # Enable linking to system dbus - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libdbus-1-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libdbus-1-dev || throw $ExceptionAPT # Needed libraries for WebEngine - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libudev-dev libegl1-mesa-dev libfontconfig1-dev libxss-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libudev-dev libegl1-mesa-dev libfontconfig1-dev libxss-dev || throw $ExceptionAPT # Common event loop handling - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libglib2.0-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libglib2.0-dev || throw $ExceptionAPT # MySQL support - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libmysqlclient-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libmysqlclient-dev || throw $ExceptionAPT # PostgreSQL support - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libpq-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libpq-dev || throw $ExceptionAPT # SQLite support - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libsqlite3-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libsqlite3-dev || throw $ExceptionAPT # ODBC support - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install unixodbc-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install unixodbc-dev || throw $ExceptionAPT # Support for FreeType font engine - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libfreetype6-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libfreetype6-dev || throw $ExceptionAPT # Enable the usage of system jpeg libraries - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libjpeg-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libjpeg-dev || throw $ExceptionAPT # Enable support for printer driver - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libcups2-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libcups2-dev || throw $ExceptionAPT # Install libraries needed for QtMultimedia to be able to support all plugins - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev || throw $ExceptionAPT - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev || throw $ExceptionAPT # Support for cross-building to x86 (needed by WebEngine boot2qt builds) - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install g++-multilib || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install g++-multilib || throw $ExceptionAPT # python3 development package - sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install python3-dev python3-pip python3-virtualenv || throw $ExceptionAPT + yes | sudo aptdcon --hide-terminal --install python3-dev python3-pip python3-virtualenv || throw $ExceptionAPT ) catch || { case $ex_code in @@ -101,4 +101,3 @@ catch || { ;; esac } - -- cgit v1.2.3 From d56552566fc61bd2a659b2a3538bd555d435ae89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tony=20Saraj=C3=A4rvi?= Date: Thu, 21 Sep 2017 13:47:45 +0300 Subject: Provisioning: FBX SDK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to provision the FBX SDK for Qt3DStudio. Task-number: QTQAINFRA-1449 Change-Id: I52587cd653b7954340d5f58978ffbd008330337c Reviewed-by: Marianne Yrjänä Reviewed-by: Miikka Heikkinen Reviewed-by: Tony Sarajärvi --- coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/030-fbx.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/030-fbx.sh (limited to 'coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64') diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/030-fbx.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/030-fbx.sh new file mode 100755 index 00000000..7c5fadcb --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/030-fbx.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +BASEDIR=$(dirname "$0") +$BASEDIR/../common/fbx_linux.sh -- cgit v1.2.3 From 63092430647884f031c94c743b34638aefc0ee7b Mon Sep 17 00:00:00 2001 From: Heikki Halmet Date: Thu, 9 Nov 2017 09:03:16 +0200 Subject: Provisioning: Install expect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expect is needed by Release Test Automation (RTA) to automate configure testing. Change-Id: I66889c70667a12f962cbea39906bd8b7a1d63517 Reviewed-by: Joni Jäntti Reviewed-by: Tony Sarajärvi --- coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh | 2 ++ 1 file changed, 2 insertions(+) (limited to 'coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64') diff --git a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh index f47875a3..9b71f935 100755 --- a/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh +++ b/coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/002-apt.sh @@ -84,6 +84,8 @@ try yes | sudo aptdcon --hide-terminal --install g++-multilib || throw $ExceptionAPT # python3 development package yes | sudo aptdcon --hide-terminal --install python3-dev python3-pip python3-virtualenv || throw $ExceptionAPT + # Automates interactive applications (Needed by RTA to automate configure testing) + yes | sudo aptdcon --hide-terminal --install expect || throw $ExceptionAPT ) catch || { case $ex_code in -- cgit v1.2.3