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 --- coin/platform_configs/default.txt | 3 +- coin/platform_configs/qtdeclarative.txt | 3 +- .../qtci-linux-Ubuntu-16.04-x86_64/003-qemu.sh | 10 ++- .../qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh | 89 ++++++++++++++++++++++ 4 files changed, 101 insertions(+), 4 deletions(-) create mode 100755 coin/provisioning/qtci-linux-Ubuntu-16.04-x86_64/004-yocto.sh diff --git a/coin/platform_configs/default.txt b/coin/platform_configs/default.txt index 672b22a2..06a17b54 100644 --- a/coin/platform_configs/default.txt +++ b/coin/platform_configs/default.txt @@ -18,6 +18,7 @@ qtci-osx-10.11-x86_64-3 Clang qtci-osx-10.10-x86_64 Clang Release NoFramework DisableTests qtci-macos-10.12-x86_64-8 IOS_ANY x86_64 Clang Release DisableTests Static qtci-linux-RHEL-7.4-x86_64 Android_ANY armv7 GCC Packaging Release DisableTests OpenGLES2 NoUseGoldLinker -qtci-linux-Ubuntu-16.04-x86_64-1 Boot2Qt_Morty armv7 GCC Release +qtci-linux-Ubuntu-16.04-x86_64-1 QEMU armv7 GCC Release +qtci-linux-Ubuntu-16.04-x86_64-1 QEMU arm64 GCC Release qtci-linux-Ubuntu-16.04-x86_64-1 GCC TestOnly LicenseCheck qtci-linux-RHEL-6.6-x86_64 QNX_660 armv7 GCC Packaging Release DisableTests OpenGLES2 NoUseGoldLinker diff --git a/coin/platform_configs/qtdeclarative.txt b/coin/platform_configs/qtdeclarative.txt index 2a9d9ac7..3139af8b 100644 --- a/coin/platform_configs/qtdeclarative.txt +++ b/coin/platform_configs/qtdeclarative.txt @@ -1,3 +1,4 @@ Template Target OS Target arch Compiler Features --------------------------------- ------------------- ----------- ----------- ------------------------------------------------------------------------------------- -qtci-linux-Ubuntu-16.04-x86_64-1 Boot2Qt_Morty armv7 GCC DeveloperBuild +qtci-linux-Ubuntu-16.04-x86_64-1 QEMU armv7 GCC DeveloperBuild +qtci-linux-Ubuntu-16.04-x86_64-1 QEMU arm64 GCC DeveloperBuild 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.1