From c5378f6cd63ee5743646937f94d57f035e59f844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simo=20F=C3=A4lt?= Date: Wed, 12 Aug 2020 13:32:29 +0300 Subject: Provisioning: Install libClang 10 with dynamic libs As Qt uses only static archives of libclang, we have to install dynamic version as an additional package. Libclang is required for example QtForPython. Change-Id: Ic9d70398113defe3561f261aee369b423c18686a Reviewed-by: Heikki Halmet (cherry picked from commit b792fd56dbf8d3ab1c8dd3d53b9afb86ca3555af) Reviewed-by: Qt Cherry-pick Bot --- coin/provisioning/common/unix/libclang-v100-dyn.sh | 83 ++++++++++++++++++++++ .../common/windows/libclang-v100-dyn.ps1 | 50 +++++++++++++ .../05-libclang-v100-dyn.sh | 6 ++ .../08-libclang-v100-dyn.sh | 7 ++ .../04-libclang-v100-dyn.sh | 4 ++ .../08-libclang-v100-dyn.sh | 7 ++ .../28-libclang-v100-dyn.sh | 6 ++ .../08-libclang-v100-dyn.ps1 | 2 + 8 files changed, 165 insertions(+) create mode 100755 coin/provisioning/common/unix/libclang-v100-dyn.sh create mode 100644 coin/provisioning/common/windows/libclang-v100-dyn.ps1 create mode 100755 coin/provisioning/qtci-linux-CentOS-8.1-x86_64/05-libclang-v100-dyn.sh create mode 100755 coin/provisioning/qtci-linux-SLES-15_SP2-x86_64/08-libclang-v100-dyn.sh create mode 100755 coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/04-libclang-v100-dyn.sh create mode 100755 coin/provisioning/qtci-linux-openSUSE-15.2-x86_64/08-libclang-v100-dyn.sh create mode 100755 coin/provisioning/qtci-macos-10.14-x86_64/28-libclang-v100-dyn.sh create mode 100644 coin/provisioning/qtci-windows-10-x86_64/08-libclang-v100-dyn.ps1 diff --git a/coin/provisioning/common/unix/libclang-v100-dyn.sh b/coin/provisioning/common/unix/libclang-v100-dyn.sh new file mode 100755 index 00000000..d6609429 --- /dev/null +++ b/coin/provisioning/common/unix/libclang-v100-dyn.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env 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$ +## +############################################################################# + +# 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. + +# This same script is used to provision libclang to Linux and macOS. +# In case of Linux, we expect to get the values as args +set -e + +# shellcheck source=./check_and_set_proxy.sh +source "${BASH_SOURCE%/*}/check_and_set_proxy.sh" +# shellcheck source=./SetEnvVar.sh +source "${BASH_SOURCE%/*}/SetEnvVar.sh" +# shellcheck source=./DownloadURL.sh +source "${BASH_SOURCE%/*}/DownloadURL.sh" + +libclang_version=10.0 + +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/qt/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/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/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" +fi + +zip="/tmp/libclang.7z" +destination="/usr/local/libclang-dynlibs-$version" + +DownloadURL $url_cached $url $sha1 $zip +if command -v 7zr &> /dev/null; then + sudo 7zr x $zip -o/usr/local/ +else + sudo 7z x $zip -o/usr/local/ +fi +sudo mv /usr/local/libclang "$destination" +rm -rf $zip + + +echo "export LLVM_DYNAMIC_LIBS_100=$destination" >> ~/.bash_profile +echo "libClang for QtForPython= $version" >> ~/versions.txt diff --git a/coin/provisioning/common/windows/libclang-v100-dyn.ps1 b/coin/provisioning/common/windows/libclang-v100-dyn.ps1 new file mode 100644 index 00000000..b0792a07 --- /dev/null +++ b/coin/provisioning/common/windows/libclang-v100-dyn.ps1 @@ -0,0 +1,50 @@ +param( + [Int32]$archVer=32, + [string]$toolchain="vs2019", + [bool]$setDefault=$true +) +. "$PSScriptRoot\helpers.ps1" + +$libclang_version="10.0" +Write-Output "libClang for QtForPython = $libclang_version" >> ~/versions.txt + +# PySide versions following Qt6 use a C++ parser based on Clang (http://clang.org/). +# The Clang library (C-bindings), version 8.0 or higher is required for building. + +# Starting from Qt 5.11 QDoc requires Clang to parse C++ + +$baseDestination = "C:\Utils\libclang-" + $libclang_version + "-dynlibs-" + $toolchain +$libclang_version = $libclang_version -replace '["."]' + +function install() { + + param( + [string]$sha1=$1, + [string]$destination=$2 + ) + + $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/libclang-release_$libclang_version-based-windows-$toolchain`_$archVer.7z" + + Download $OfficialUrl $CachedUrl $zip + Verify-Checksum $zip $sha1 + Extract-7Zip $zip C:\Utils\ + Rename-Item C:\Utils\libclang $destination + Remove-Item -Force -Path $zip +} + +if ( $toolchain -eq "vs2019" ) { + if ( $archVer -eq 64 ) { + $sha1 = "B2C4F24B2388AEBAA6B8FCE3AE4E63D34D1517FE" + } + else { + $sha1 = "b970f51df255a27e0fdb7b665e70ed5281257f40" + } +} + +install $sha1 $baseDestination-$archVer + +Set-EnvironmentVariable "LLVM_DYNAMIC_LIBS_100" ($baseDestination + "-_ARCH_") + diff --git a/coin/provisioning/qtci-linux-CentOS-8.1-x86_64/05-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-CentOS-8.1-x86_64/05-libclang-v100-dyn.sh new file mode 100755 index 00000000..fbf34ddd --- /dev/null +++ b/coin/provisioning/qtci-linux-CentOS-8.1-x86_64/05-libclang-v100-dyn.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang-v100-dyn.sh +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-linux-SLES-15_SP2-x86_64/08-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-SLES-15_SP2-x86_64/08-libclang-v100-dyn.sh new file mode 100755 index 00000000..b0080cbc --- /dev/null +++ b/coin/provisioning/qtci-linux-SLES-15_SP2-x86_64/08-libclang-v100-dyn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang-v100-dyn.sh +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/04-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/04-libclang-v100-dyn.sh new file mode 100755 index 00000000..dcd5b2d8 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/04-libclang-v100-dyn.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-linux-openSUSE-15.2-x86_64/08-libclang-v100-dyn.sh b/coin/provisioning/qtci-linux-openSUSE-15.2-x86_64/08-libclang-v100-dyn.sh new file mode 100755 index 00000000..b0080cbc --- /dev/null +++ b/coin/provisioning/qtci-linux-openSUSE-15.2-x86_64/08-libclang-v100-dyn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +# shellcheck source=../common/unix/libclang-v100-dyn.sh +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-macos-10.14-x86_64/28-libclang-v100-dyn.sh b/coin/provisioning/qtci-macos-10.14-x86_64/28-libclang-v100-dyn.sh new file mode 100755 index 00000000..c9d6e93d --- /dev/null +++ b/coin/provisioning/qtci-macos-10.14-x86_64/28-libclang-v100-dyn.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/libclang-v100-dyn.sh" diff --git a/coin/provisioning/qtci-windows-10-x86_64/08-libclang-v100-dyn.ps1 b/coin/provisioning/qtci-windows-10-x86_64/08-libclang-v100-dyn.ps1 new file mode 100644 index 00000000..82b91257 --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86_64/08-libclang-v100-dyn.ps1 @@ -0,0 +1,2 @@ +. "$PSScriptRoot\..\common\windows\libclang-v100-dyn.ps1" 64 vs2019 +. "$PSScriptRoot\..\common\windows\libclang-v100-dyn.ps1" 32 vs2019 -- cgit v1.2.3