diff --git a/.gitmodules b/.gitmodules index d721c699b81..977a8947112 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,72 +2,72 @@ path = qtbase url = ../qtbase.git branch = dev - initrepo = true + status = essential [submodule "qtsvg"] depends = qtbase path = qtsvg url = ../qtsvg.git branch = dev - initrepo = true + status = addon [submodule "qtdeclarative"] depends = qtbase recommends = qtsvg qtxmlpatterns path = qtdeclarative url = ../qtdeclarative.git branch = dev - initrepo = true + status = essential [submodule "qtactiveqt"] depends = qtbase path = qtactiveqt url = ../qtactiveqt.git branch = dev - initrepo = true + status = addon [submodule "qtscript"] depends = qtbase recommends = qttools path = qtscript url = ../qtscript.git branch = dev - initrepo = true + status = deprecated [submodule "qtmultimedia"] depends = qtbase recommends = qtdeclarative path = qtmultimedia url = ../qtmultimedia.git branch = dev - initrepo = true + status = essential [submodule "qttools"] depends = qtbase recommends = qtdeclarative qtactiveqt qtwebkit path = qttools url = ../qttools.git branch = dev - initrepo = true + status = essential [submodule "qtxmlpatterns"] depends = qtbase path = qtxmlpatterns url = ../qtxmlpatterns.git branch = dev - initrepo = true + status = addon [submodule "qttranslations"] depends = qttools path = qttranslations url = ../qttranslations.git branch = dev - initrepo = true + status = essential priority = 30 [submodule "qtdoc"] depends = qtdeclarative path = qtdoc url = ../qtdoc.git branch = dev - initrepo = true + status = essential priority = 40 [submodule "qtrepotools"] path = qtrepotools url = ../qtrepotools.git branch = master - initrepo = true + status = essential qt = false [submodule "qtwebkit"] depends = qtbase @@ -75,6 +75,7 @@ path = qtwebkit url = ../qtwebkit.git branch = dev + status = obsolete project = WebKit.pro priority = 20 [submodule "qtwebkit-examples"] @@ -82,12 +83,13 @@ path = qtwebkit-examples url = ../qtwebkit-examples.git branch = dev + status = obsolete [submodule "qtqa"] depends = qtbase path = qtqa url = ../qtqa.git branch = master - initrepo = true + status = essential priority = 50 [submodule "qtlocation"] depends = qtbase @@ -95,207 +97,216 @@ path = qtlocation url = ../qtlocation.git branch = dev - initrepo = true + status = addon [submodule "qtsensors"] depends = qtbase recommends = qtdeclarative path = qtsensors url = ../qtsensors.git branch = dev - initrepo = true + status = addon [submodule "qtsystems"] depends = qtbase recommends = qtdeclarative path = qtsystems url = ../qtsystems.git branch = dev + status = ignore [submodule "qtfeedback"] depends = qtdeclarative recommends = qtmultimedia path = qtfeedback url = ../qtfeedback.git branch = master + status = ignore [submodule "qtdocgallery"] depends = qtdeclarative path = qtdocgallery url = ../qtdocgallery.git branch = master + status = ignore [submodule "qtpim"] depends = qtdeclarative path = qtpim url = ../qtpim.git branch = dev + status = ignore [submodule "qtconnectivity"] depends = qtbase recommends = qtdeclarative qtandroidextras path = qtconnectivity url = ../qtconnectivity.git branch = dev - initrepo = true + status = addon [submodule "qtwayland"] depends = qtbase recommends = qtdeclarative path = qtwayland url = ../qtwayland.git branch = dev - initrepo = true + status = addon [submodule "qt3d"] depends = qtdeclarative qtimageformats + recommends = qtgamepad path = qt3d url = ../qt3d.git branch = dev - initrepo = true + status = addon [submodule "qtimageformats"] depends = qtbase path = qtimageformats url = ../qtimageformats.git branch = dev - initrepo = true + status = addon [submodule "qtquick1"] depends = qtscript recommends = qtsvg qtxmlpatterns path = qtquick1 url = ../qtquick1.git branch = dev + status = ignore [submodule "qtgraphicaleffects"] depends = qtdeclarative path = qtgraphicaleffects url = ../qtgraphicaleffects.git branch = dev - initrepo = true + status = addon [submodule "qtquickcontrols"] depends = qtdeclarative recommends = qtgraphicaleffects path = qtquickcontrols url = ../qtquickcontrols.git branch = dev - initrepo = true + status = essential [submodule "qtserialbus"] depends = qtserialport path = qtserialbus url = ../qtserialbus.git branch = dev + status = preview [submodule "qtserialport"] depends = qtbase path = qtserialport url = ../qtserialport.git branch = dev - initrepo = true + status = addon [submodule "qtx11extras"] depends = qtbase path = qtx11extras url = ../qtx11extras.git branch = dev - initrepo = true + status = addon [submodule "qtmacextras"] depends = qtbase path = qtmacextras url = ../qtmacextras.git branch = dev - initrepo = true + status = addon [submodule "qtwinextras"] depends = qtbase recommends = qtdeclarative qtmultimedia path = qtwinextras url = ../qtwinextras.git branch = dev - initrepo = true + status = addon [submodule "qtandroidextras"] depends = qtbase path = qtandroidextras url = ../qtandroidextras.git branch = dev - initrepo = true + status = addon [submodule "qtenginio"] depends = qtdeclarative path = qtenginio url = ../qtenginio.git branch = dev - initrepo = true + status = ignore [submodule "qtwebsockets"] depends = qtbase recommends = qtdeclarative path = qtwebsockets url = ../qtwebsockets.git branch = dev - initrepo = true + status = addon [submodule "qtwebchannel"] depends = qtbase recommends = qtdeclarative qtwebsockets path = qtwebchannel url = ../qtwebchannel.git branch = dev - initrepo = true + status = addon [submodule "qtwebengine"] depends = qtquickcontrols qtwebchannel recommends = qtlocation path = qtwebengine url = ../qtwebengine.git branch = dev - initrepo = true + status = addon priority = 10 [submodule "qtcanvas3d"] depends = qtdeclarative path = qtcanvas3d url = ../qtcanvas3d.git branch = dev - initrepo = true + status = addon [submodule "qtwebview"] depends = qtdeclarative recommends = qtwebengine path = qtwebview url = ../qtwebview.git branch = dev - initrepo = true + status = addon [submodule "qtquickcontrols2"] - depends = qtquickcontrols + depends = qtgraphicaleffects path = qtquickcontrols2 url = ../qtquickcontrols2.git branch = dev - initrepo = true + status = addon [submodule "qtpurchasing"] depends = qtbase recommends = qtdeclarative path = qtpurchasing url = ../qtpurchasing.git branch = dev - initrepo = true + status = addon [submodule "qtcharts"] depends = qtbase recommends = qtdeclarative qtmultimedia path = qtcharts url = ../qtcharts.git branch = dev - initrepo = true + status = addon [submodule "qtdatavis3d"] depends = qtbase recommends = qtdeclarative qtmultimedia path = qtdatavis3d url = ../qtdatavis3d.git branch = dev - initrepo = true + status = addon [submodule "qtvirtualkeyboard"] depends = qtbase qtdeclarative qtsvg recommends = qtmultimedia qtquickcontrols path = qtvirtualkeyboard url = ../qtvirtualkeyboard.git branch = dev - initrepo = true + status = addon [submodule "qtgamepad"] depends = qtbase recommends = qtdeclarative path = qtgamepad url = ../qtgamepad branch = dev - initrepo = true + status = preview [submodule "qtscxml"] depends = qtbase qtdeclarative path = qtscxml url = ../qtscxml branch = dev - initrepo = true + status = preview [submodule "qtspeech"] depends = qtbase + recommends = qtdeclarative qtmultimedia path = qtspeech url = ../qtspeech branch = dev + status = ignore diff --git a/LICENSE.GPLv2 b/LICENSE.GPLv2 index 6dbb032fd29..a42447778c2 100644 --- a/LICENSE.GPLv2 +++ b/LICENSE.GPLv2 @@ -3,7 +3,7 @@ The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. Contact: http://www.qt.io/licensing/ - You may use, distribute and copy the Qt GUI Toolkit under the terms of + You may use, distribute and copy the Qt Toolkit under the terms of GNU General Public License version 2, which is displayed below. ------------------------------------------------------------------------- diff --git a/LICENSE.GPLv3 b/LICENSE.GPLv3 index 4e49b122ae1..71c4ad49c37 100644 --- a/LICENSE.GPLv3 +++ b/LICENSE.GPLv3 @@ -3,7 +3,7 @@ The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. Contact: http://www.qt.io/licensing/ - You may use, distribute and copy the Qt GUI Toolkit under the terms of + You may use, distribute and copy the Qt Toolkit under the terms of GNU Lesser General Public License version 3. That license references the General Public License version 3, that is displayed below. Other portions of the Qt Toolkit may be licensed directly under this license. diff --git a/LICENSE.LGPLv21 b/LICENSE.LGPLv21 index 6e184611257..dfcab5e29b7 100644 --- a/LICENSE.LGPLv21 +++ b/LICENSE.LGPLv21 @@ -3,7 +3,7 @@ The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. Contact: http://www.qt.io/licensing/ - You may use, distribute and copy the Qt GUI Toolkit under the terms of + You may use, distribute and copy the Qt Toolkit under the terms of GNU Lesser General Public License version 2.1, which is displayed below. ------------------------------------------------------------------------- diff --git a/LICENSE.LGPLv3 b/LICENSE.LGPLv3 index 4d67bac0b46..6bf924cd155 100644 --- a/LICENSE.LGPLv3 +++ b/LICENSE.LGPLv3 @@ -3,7 +3,7 @@ The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. Contact: http://www.qt.io/licensing/ - You may use, distribute and copy the Qt GUI Toolkit under the terms of + You may use, distribute and copy the Qt Toolkit under the terms of GNU Lesser General Public License version 3, which is displayed below. This license makes reference to the version 3 of the GNU General Public License, which you can find in the LICENSE.GPLv3 file. diff --git a/README b/README index ff169fe2a3c..7781f47b6a3 100644 --- a/README +++ b/README @@ -16,29 +16,6 @@ HOW TO BUILD QT5 please see section "Setting up your machine" on: http://wiki.qt.io/Get_The_Source - Optional requirements - --------------------- - - - OpenSSL for SSL sockets or HTTPS - - Wayland - - New dependencies in Qt 5 - ------------------------ - - Linux: On systems running X11, the XCB libraries are required for - the platform plugin to build. qtbase/src/plugins/platforms/xcb/README - lists the required packages. - - Qt 5 can make use of the ICU libraries providing Unicode and Globalization - support (see http://site.icu-project.org/). They are required for building - QtWebKit. - On Linux, they will be auto-detected. - On Windows, they need to be manually installed and the "include" and "lib" - folders of the ICU installation must be appended to the INCLUDE and LIB - environment variables after calling the Windows SDK setup script. - The "bin" folder of the ICU installation should be appended to the PATH - environment variable in order to for the DLLs to be found at run-time. - Licensing: ---------- @@ -110,11 +87,11 @@ HOW TO BUILD QT5 default in the build system. It is possible to build selected modules with their dependencies by doing - a `make module-'. For example, to build only qtscript and qtwebkit, - and the modules they depend on: + a `make module-'. For example, to build only qtdeclarative, + and the modules it depends on: ./configure -prefix $PWD/qtbase - make -j4 module-qtscript module-qtwebkit + make -j4 module-qtdeclarative This can save a lot of time if you are only interested in a subset of Qt5. diff --git a/coin/README b/coin/README new file mode 100644 index 00000000000..2fb3fe2d502 --- /dev/null +++ b/coin/README @@ -0,0 +1,11 @@ +Continuous Integration +====================== + +This directory contains files used by Qt's Continuous Integration system (Coin). + +provisioning +------------ +Contains scripts that apply to different test machines in order to run automatic tests on them. +For Windows scripts, make sure that the machine has "Set-ExecutionPolicy RemoteSigned -Force" set. +(Run as admin in PowerShell) + diff --git a/coin/provisioning/common/helpers.ps1 b/coin/provisioning/common/helpers.ps1 new file mode 100644 index 00000000000..d7b957f37ca --- /dev/null +++ b/coin/provisioning/common/helpers.ps1 @@ -0,0 +1,31 @@ +function Verify-Checksum +{ + Param ( + [string]$File=$(throw("You must specify a filename to get the checksum of.")), + [string]$Expected=$(throw("Checksum required")), + [ValidateSet("sha1","md5")][string]$Algorithm="sha1" + ) + $fs = new-object System.IO.FileStream $File, "Open" + $algo = [type]"System.Security.Cryptography.$Algorithm" + $crypto = $algo::Create() + $hash = [BitConverter]::ToString($crypto.ComputeHash($fs)).Replace("-", "") + $fs.Close() + if ($hash -ne $Expected) { + Write-Error "Checksum verification failed, got: '$hash' expected: '$Expected'" + } +} + +function Extract-Zip +{ + Param ( + [string]$Source, + [string]$Destination + ) + echo "Extracting '$Source' to '$Destination'..." + + New-Item -ItemType Directory -Force -Path $Destination + $shell = new-object -com shell.application + $zipfile = $shell.Namespace($Source) + $destinationFolder = $shell.Namespace($Destination) + $destinationFolder.CopyHere($zipfile.Items(), 16) +} diff --git a/coin/provisioning/common/icu.ps1 b/coin/provisioning/common/icu.ps1 new file mode 100644 index 00000000000..4be185e5d5d --- /dev/null +++ b/coin/provisioning/common/icu.ps1 @@ -0,0 +1,9 @@ +# ICU is already pre-installed on Windows machines, it would be nice to have +# the installation script, but for now let's just export the right variables + +# FIXME: do we really want to have it per MSVC version? What about MSVC2015? +[Environment]::SetEnvironmentVariable("CI_ICU_PATH_MSVC2012", "C:\\Utils\\icu_53_1_msvc_2012_64_devel\\icu53_1", "Machine") +[Environment]::SetEnvironmentVariable("CI_ICU_PATH_MSVC2013", "C:\\Utils\\icu_53_1_msvc_2013_64_devel\\icu53_1", "Machine") + +# FIXME: do we really want to use the 4.8.2 ICU build? +[Environment]::SetEnvironmentVariable("CI_ICU_PATH_Mingw49", "C:\Utils\icu_53_1_Mingw_builds_4_8_2_posix_seh_64_devel\icu53_1", "Machine") diff --git a/coin/provisioning/common/jom.ps1 b/coin/provisioning/common/jom.ps1 new file mode 100644 index 00000000000..ef012b64b7f --- /dev/null +++ b/coin/provisioning/common/jom.ps1 @@ -0,0 +1,9 @@ +. "$PSScriptRoot\helpers.ps1" + +$zip = "c:\users\qt\downloads\jom_1_1_0.zip" + +Invoke-WebRequest -UseBasicParsing http://download.qt.io/official_releases/jom/jom_1_1_0.zip -OutFile $zip +Verify-Checksum $zip "C4149FE706B25738B4C4E54C73E180B9CAB55832" +Extract-Zip $zip C:\Utils\Jom + +[Environment]::SetEnvironmentVariable("CI_JOM_PATH", "C:\Utils\Jom", "Machine") diff --git a/coin/provisioning/common/patch_qnx.ps1 b/coin/provisioning/common/patch_qnx.ps1 new file mode 100644 index 00000000000..2fca7b670a4 --- /dev/null +++ b/coin/provisioning/common/patch_qnx.ps1 @@ -0,0 +1,51 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the test suite 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$ +## +############################################################################# + +# Patch QNX SDK due to issues in the standard library. +# The patches are available here: +# http://www.qnx.com/download/feature.html?programid=27555 +# A copy of the patch must be in the root of the Coin path in +# provisioning/qnx/patch-660-4367-RS6069_cpp-headers.zip + + +. "$PSScriptRoot\helpers.ps1" + +$zip = "c:\users\qt\downloads\patch-660-4367-RS6069_cpp-headers.zip" +$sha1 = "57A11FFE4434AD567B3C36F7B828DBB468A9E565" +$tempDir = "C:\temp\qnx_path" + +Invoke-WebRequest -UseBasicParsing http://${Env:COIN_WEBSERVER_ADDRESS}/coin/provisioning/qnx/patch-660-4367-RS6069_cpp-headers.zip -OutFile $zip +Verify-Checksum $zip $sha1 +Extract-Zip $zip $tempDir +Copy-Item $tempDir\patches\660-4367\target\* C:\qnx660\target\ -recurse -force +Remove-Item $tempDir -recurse diff --git a/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/install_icu.sh b/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/install_icu.sh new file mode 100644 index 00000000000..02ddda3fa7b --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/install_icu.sh @@ -0,0 +1,70 @@ +#!/bin/env bash + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the test suite 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 right ICU version + +set -e +icuVersion="56.1" +icuLocation="/usr/lib64" +sha1="f2eab775c04ce5f3bdae6c47d06b62158b5d6753" + +function Install7ZPackageFromURL { + url=$1 + expectedSha1=$2 + targetDirectory=$3 + + targetFile=`mktemp` || echo "Failed to create temporary file" + wget --tries=5 --waitretry=5 --output-document=$targetFile $url || echo "Failed to download '$url' multiple times" + echo "$expectedSha1 $targetFile" | sha1sum --check || echo "Failed to check sha1sum" + sudo /usr/local/bin/7z x -yo$targetDirectory $targetFile || echo "Failed to unzip $url archive" + rm $targetFile +} + +echo "Installing custom ICU $icuVersion $sha1 packages on RHEL to $icuLocation" + +baseBinaryPackageURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel6.6-x64.7z" +Install7ZPackageFromURL $baseBinaryPackageURL $sha1 "/usr/lib64" + +echo "Installing custom ICU devel packages on RHEL" + +sha1Dev="82f8b216371b848b8d36ecec7fe7b6e9b0dba0df" +develPackageURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel6.6-x64-devel.7z" +tempDir=`mktemp -d` || echo "Failed to create temporary directory" +trap "sudo rm -fr $tempDir" EXIT +Install7ZPackageFromURL $develPackageURL $sha1Dev $tempDir +sudo cp -a $tempDir/lib/* /usr/lib64 +sudo cp -a $tempDir/* /usr/ + +sudo /sbin/ldconfig diff --git a/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/odbc.sh b/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/odbc.sh new file mode 100644 index 00000000000..f6c90a753d9 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/odbc.sh @@ -0,0 +1,4 @@ +# provides: odbc devel packages on RHEL +# version: provided by default Linux distribution repository +# needed for configure -plugin-sql-odbc in qtbase +sudo yum install -y unixODBC-devel diff --git a/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/patch_qnx.sh b/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/patch_qnx.sh new file mode 100644 index 00000000000..19993ecc794 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/patch_qnx.sh @@ -0,0 +1,64 @@ +#!/bin/env bash + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the test suite 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$ +## +############################################################################# + +# Patch QNX SDK due to issues in the standard library. +# The patches are available here: +# http://www.qnx.com/download/feature.html?programid=27555 +# A copy of the patch must be in the root of the Coin path in +# provisioning/qnx/patch-660-4367-RS6069_cpp-headers.zip + +set -e +sha1="57a11ffe4434ad567b3c36f7b828dbb468a9e565" + +function InstallZipPackageFromURL { + url=$1 + expectedSha1=$2 + targetDirectory=$3 + + targetFile=`mktemp` || echo "Failed to create temporary file" + wget --tries=5 --waitretry=5 --output-document=$targetFile $url || echo "Failed to download '$url' multiple times" + echo "$expectedSha1 $targetFile" | sha1sum --check || echo "Failed to check sha1sum" + + tempDir=`mktemp -d` || echo "Failed to create temporary directory" + /usr/bin/unzip -o -d $tempDir $targetFile || echo "Failed to unzip $url archive" + trap "sudo rm -fr $targetFile $tempDir" EXIT + + sudo cp -rafv $tempDir/patches/660-4367/target/* /opt/qnx660/target/ +} + +echo "Patching QNX" + +baseBinaryPackageURL="http://${COIN_WEBSERVER_ADDRESS}/coin/provisioning/qnx/patch-660-4367-RS6069_cpp-headers.zip" +InstallZipPackageFromURL $baseBinaryPackageURL $sha1 "/opt/qnx660/target/" diff --git a/coin/provisioning/qtci-linux-Ubuntu-14.04-x86_64/freeopcua.sh b/coin/provisioning/qtci-linux-Ubuntu-14.04-x86_64/freeopcua.sh new file mode 100644 index 00000000000..b14e94a67e1 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-14.04-x86_64/freeopcua.sh @@ -0,0 +1,49 @@ +#!/bin/env bash + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the test suite 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$ +## +############################################################################# + +sudo apt-get update +sudo apt-get install -y libboost-dev libboost-thread-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev libxml2-dev libboost-regex-dev + +TEMPDIR=$(mktemp --directory) || echo "Failed to create temporary directory" +trap "sudo rm -fr $TEMPDIR" EXIT +cd $TEMPDIR +git clone https://github.com/FreeOpcUa/freeopcua.git freeopcua +cd freeopcua +git checkout 57b6993d39b6761af773fa4fa37c3fbd39c764f1 +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local .. +make +sudo make install diff --git a/coin/provisioning/qtci-osx-10.10/crashreporter.sh b/coin/provisioning/qtci-osx-10.10/crashreporter.sh new file mode 100644 index 00000000000..ba8dbdd3601 --- /dev/null +++ b/coin/provisioning/qtci-osx-10.10/crashreporter.sh @@ -0,0 +1,2 @@ +#!/bin/sh +defaults write com.apple.CrashReporter DialogType server diff --git a/coin/provisioning/qtci-osx-10.11/crashreporter.sh b/coin/provisioning/qtci-osx-10.11/crashreporter.sh new file mode 100644 index 00000000000..ba8dbdd3601 --- /dev/null +++ b/coin/provisioning/qtci-osx-10.11/crashreporter.sh @@ -0,0 +1,2 @@ +#!/bin/sh +defaults write com.apple.CrashReporter DialogType server diff --git a/coin/provisioning/qtci-osx-10.8/crashreporter.sh b/coin/provisioning/qtci-osx-10.8/crashreporter.sh new file mode 100644 index 00000000000..ba8dbdd3601 --- /dev/null +++ b/coin/provisioning/qtci-osx-10.8/crashreporter.sh @@ -0,0 +1,2 @@ +#!/bin/sh +defaults write com.apple.CrashReporter DialogType server diff --git a/coin/provisioning/qtci-osx-10.9/crashreporter.sh b/coin/provisioning/qtci-osx-10.9/crashreporter.sh new file mode 100644 index 00000000000..ba8dbdd3601 --- /dev/null +++ b/coin/provisioning/qtci-osx-10.9/crashreporter.sh @@ -0,0 +1,2 @@ +#!/bin/sh +defaults write com.apple.CrashReporter DialogType server diff --git a/coin/provisioning/qtci-windows-10-x86/icu.ps1 b/coin/provisioning/qtci-windows-10-x86/icu.ps1 new file mode 100644 index 00000000000..325be36a7ab --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86/icu.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\icu.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86/jom.ps1 b/coin/provisioning/qtci-windows-10-x86/jom.ps1 new file mode 100644 index 00000000000..842c65dd62c --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86/jom.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\jom.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86_64/icu.ps1 b/coin/provisioning/qtci-windows-10-x86_64/icu.ps1 new file mode 100644 index 00000000000..325be36a7ab --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86_64/icu.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\icu.ps1" diff --git a/coin/provisioning/qtci-windows-10-x86_64/jom.ps1 b/coin/provisioning/qtci-windows-10-x86_64/jom.ps1 new file mode 100644 index 00000000000..842c65dd62c --- /dev/null +++ b/coin/provisioning/qtci-windows-10-x86_64/jom.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\jom.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86/icu.ps1 b/coin/provisioning/qtci-windows-7-x86/icu.ps1 new file mode 100644 index 00000000000..325be36a7ab --- /dev/null +++ b/coin/provisioning/qtci-windows-7-x86/icu.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\icu.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86/jom.ps1 b/coin/provisioning/qtci-windows-7-x86/jom.ps1 new file mode 100644 index 00000000000..842c65dd62c --- /dev/null +++ b/coin/provisioning/qtci-windows-7-x86/jom.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\jom.ps1" diff --git a/coin/provisioning/qtci-windows-7-x86/patch_qnx.ps1 b/coin/provisioning/qtci-windows-7-x86/patch_qnx.ps1 new file mode 100644 index 00000000000..41210dcb2ee --- /dev/null +++ b/coin/provisioning/qtci-windows-7-x86/patch_qnx.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\patch_qnx.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86/icu.ps1 b/coin/provisioning/qtci-windows-8-x86/icu.ps1 new file mode 100644 index 00000000000..325be36a7ab --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86/icu.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\icu.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86/jom.ps1 b/coin/provisioning/qtci-windows-8-x86/jom.ps1 new file mode 100644 index 00000000000..842c65dd62c --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86/jom.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\jom.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86_64/icu.ps1 b/coin/provisioning/qtci-windows-8-x86_64/icu.ps1 new file mode 100644 index 00000000000..325be36a7ab --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86_64/icu.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\icu.ps1" diff --git a/coin/provisioning/qtci-windows-8-x86_64/jom.ps1 b/coin/provisioning/qtci-windows-8-x86_64/jom.ps1 new file mode 100644 index 00000000000..842c65dd62c --- /dev/null +++ b/coin/provisioning/qtci-windows-8-x86_64/jom.ps1 @@ -0,0 +1 @@ +. "$PSScriptRoot\..\common\jom.ps1" diff --git a/init-repository b/init-repository index f0407f63a6d..954237d0388 100755 --- a/init-repository +++ b/init-repository @@ -71,9 +71,13 @@ Options: --module-subset=,... Only initialize the specified subset of modules given as the argument. Specified modules must already exist in .gitmodules. The - string "all" results in cloning all known modules. The default is - the set of maintained modules. Module names may be prefixed with a - dash to exclude them from a bigger set. + string "all" results in cloning all known modules. The strings + "essential", "addon", "preview", "deprecated", "obsolete", and + "ignore" refer to classes of modules; "default" maps to + "essential,addon,preview,deprecated", which corresponds with the + set of maintained modules and is also the default set. Module + names may be prefixed with a dash to exclude them from a bigger + set, e.g. "all,-ignore". --no-update Skip the `git submodule update' command. @@ -151,9 +155,13 @@ EOF } use Carp qw( confess ); +use Cwd qw( getcwd abs_path ); use English qw( -no_match_vars ); +use File::Spec::Functions qw ( rel2abs ); use Getopt::Long qw( GetOptions ); -use Cwd qw( getcwd ); + +my $script_path = abs_path($0); +$script_path =~ s,[/\\][^/\\]+$,,; my $GERRIT_SSH_BASE = 'ssh://@USER@codereview.qt-project.org@PORT@/'; @@ -234,6 +242,7 @@ sub parse_arguments # Replace any double trailing slashes from end of mirror $self->{'mirror-url'} =~ s{//+$}{/}; + $self->{'module-subset'} =~ s/\bdefault\b/preview,essential,addon,deprecated/; $self->{'module-subset'} = [ split(/,/, $self->{'module-subset'}) ]; return; @@ -272,6 +281,14 @@ sub git_submodule_init return; } +use constant { + STS_PREVIEW => 1, + STS_ESSENTIAL => 2, + STS_ADDON => 3, + STS_DEPRECATED => 4, + STS_OBSOLETE => 5 +}; + sub git_clone_all_submodules { my ($self, $my_repo_base, $co_branch, @subset) = @_; @@ -296,21 +313,57 @@ sub git_clone_all_submodules $subbases{$mod} = $base; } elsif ($2 eq "update") { push @subset, '-'.$1 if ($3 eq 'none'); - } elsif ($2 eq "initrepo") { - $subinits{$1} = ($3 eq "yes" or $3 eq "true"); + } elsif ($2 eq "status") { + if ($3 eq "preview") { + $subinits{$1} = STS_PREVIEW; + } elsif ($3 eq "essential") { + $subinits{$1} = STS_ESSENTIAL; + } elsif ($3 eq "addon") { + $subinits{$1} = STS_ADDON; + } elsif ($3 eq "deprecated") { + $subinits{$1} = STS_DEPRECATED; + } elsif ($3 eq "obsolete") { + $subinits{$1} = STS_OBSOLETE; + } elsif ($3 eq "ignore") { + delete $subinits{$1}; + } else { + die("Invalid subrepo status '$3' for '$1'.\n"); + } } } my %include = (); foreach my $mod (@subset) { + my $del = ($mod =~ s/^-//); + my $fail = 0; + my @what; if ($mod eq "all") { - map { $include{$_} = 1; } keys %subbases; - } elsif ($mod eq "default") { - map { $include{$_} = 1; } grep { $subinits{$_} } keys %subbases; - } elsif ($mod =~ s/^-//) { - delete $include{$mod}; + @what = keys %subbases; + } elsif ($mod eq "essential") { + @what = grep { ($subinits{$_} || 0) eq STS_ESSENTIAL } keys %subbases; + } elsif ($mod eq "addon") { + @what = grep { ($subinits{$_} || 0) eq STS_ADDON } keys %subbases; + } elsif ($mod eq "preview") { + @what = grep { ($subinits{$_} || 0) eq STS_PREVIEW } keys %subbases; + } elsif ($mod eq "deprecated") { + @what = grep { ($subinits{$_} || 0) eq STS_DEPRECATED } keys %subbases; + } elsif ($mod eq "obsolete") { + @what = grep { ($subinits{$_} || 0) eq STS_OBSOLETE } keys %subbases; + } elsif ($mod eq "ignore") { + @what = grep { ($subinits{$_} || 0) eq 0 } keys %subbases; + } elsif (defined($subdirs{$mod})) { + push @what, $mod; } else { - $include{$mod} = 1; + $fail = 1; + } + if ($del) { + print "Warning: excluding non-existent module '$mod'.\n" + if ($fail); + map { delete $include{$_} } @what; + } else { + die("Error: module subset names non-existent '$mod'.\n") + if ($fail); + map { $include{$_} = 1; } @what; } } @@ -483,11 +536,16 @@ sub ensure_link return if (!$self->{'force-hooks'} and -f $tgt); unlink($tgt); # In case we have a dead symlink or pre-existing hook print "Aliasing $src\n as $tgt ...\n" if (!$self->{quiet}); - return if eval { symlink($src, $tgt) }; + if ($^O ne "msys" && $^O ne "MSWin32") { + return if eval { symlink($src, $tgt) }; + } # Windows doesn't do (proper) symlinks. As the post_commit script needs # them to locate itself, we write a forwarding script instead. open SCRIPT, ">".$tgt or die "Cannot create forwarding script $tgt: $!\n"; - print SCRIPT "#!/bin/sh\nexec `dirname \$0`/$src \"\$\@\"\n"; + # Make the path palatable for MSYS. + $src =~ s,\\,/,g; + $src =~ s,^(.):/,/$1/,g; + print SCRIPT "#!/bin/sh\nexec $src \"\$\@\"\n"; close SCRIPT; } @@ -495,19 +553,31 @@ sub git_install_hooks { my ($self) = @_; - return if (!-d 'qtrepotools/git-hooks'); - - # Force C locale as git submodule returns the localized string "Entering" - local $ENV{LC_ALL} = 'C'; - chomp(my @modules = `git submodule foreach :`); - push @modules, ""; - for my $module (@modules) { - $module =~ s,^Entering \'([^\']+)\'$,$1/,; - my $rel = $module; - $rel =~ s,[^/]+,..,g; - $rel .= "../../qtrepotools/git-hooks/"; - $self->ensure_link($rel.'gerrit_commit_msg_hook', $module.'.git/hooks/commit-msg'); - $self->ensure_link($rel.'git_post_commit_hook', $module.'.git/hooks/post-commit'); + my $hooks = $script_path.'/qtrepotools/git-hooks'; + return if (!-d $hooks); + + my @configresult = qx(git config --list --local); + foreach my $line (@configresult) { + next if ($line !~ /submodule\.([^.=]+)\.url=/); + my $module = $1; + my $module_gitdir = $module.'/.git'; + if (!-d $module_gitdir) { + open GITD, $module_gitdir or die "Cannot open $module: $!\n"; + my $gd = ; + close GITD; + chomp($gd); + $gd =~ s/^gitdir: // or die "Malformed .git file $module_gitdir\n"; + $module_gitdir = rel2abs($gd, $module); + if (open COMD, $module_gitdir.'/commondir') { + my $cd = ; + chomp($cd); + $module_gitdir .= '/'.$cd; + $module_gitdir = abs_path($module_gitdir); + close COMD; + } + } + $self->ensure_link($hooks.'/gerrit_commit_msg_hook', $module_gitdir.'/hooks/commit-msg'); + $self->ensure_link($hooks.'/git_post_commit_hook', $module_gitdir.'/hooks/post-commit'); } }