Compare commits

..

8 Commits

Author SHA1 Message Date
Qt Submodule Update Bot
57d4fc9ceb Updated submodules.
Change-Id: I2579c442085495cd179d00e09285797bbb08b3eb
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-10-12 06:20:26 +00:00
Qt Submodule Update Bot
2579c44208 Updated submodules.
Change-Id: Ic1fbc6dfde579eaba980664444feaf9083dd4d39
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-10-06 18:56:13 +00:00
Qt Submodule Update Bot
c1fbc6dfde Updated submodules.
Change-Id: I063e5f899e0d33d5afe15dfb00221bd5d93aab3b
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-29 19:15:45 +00:00
Qt Submodule Update Bot
063e5f899e Updated submodules.
Change-Id: If835537d9fe8076aaf7a8b6311dbdf30b01d1900
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-27 11:17:00 +00:00
Qt Submodule Update Bot
f835537d9f Updated submodules.
Change-Id: Ie4b9dc169153021a9204b6fdf3af9f58228fdf3e
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-24 04:32:16 +00:00
Qt Submodule Update Bot
e4b9dc1691 Updated submodules.
Change-Id: Iad31b8c5743bd4d9ff00b06466530193dd26853f
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-17 10:53:17 +00:00
Qt Submodule Update Bot
ad31b8c574 Updated submodules.
Change-Id: I0ba6e6ce435be779865b0ace08d74dd29800be9c
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-10 11:46:31 +00:00
Frederik Gladhorn
b68c8b9729 Adjust submodule branches
Change-Id: I6e3c7677499747fc10ff1a4e3eaa6e66a409c03e
2015-09-03 16:59:46 +02:00
55 changed files with 332 additions and 596 deletions

1
.gitattributes vendored
View File

@@ -1,6 +1,7 @@
.tag export-subst .tag export-subst
.gitignore export-ignore .gitignore export-ignore
.gitattributes export-ignore .gitattributes export-ignore
.gitmodules export-ignore
.commit-template export-ignore .commit-template export-ignore
init-repository export-ignore init-repository export-ignore
README.git export-ignore README.git export-ignore

217
.gitmodules vendored
View File

@@ -1,270 +1,181 @@
[submodule "qtbase"] [submodule "qtbase"]
path = qtbase path = qtbase
url = ../qtbase.git url = ../qtbase.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
[submodule "qtsvg"] [submodule "qtsvg"]
depends = qtbase
path = qtsvg path = qtsvg
url = ../qtsvg.git url = ../qtsvg.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtdeclarative"] [submodule "qtdeclarative"]
depends = qtbase
recommends = qtsvg qtxmlpatterns
path = qtdeclarative path = qtdeclarative
url = ../qtdeclarative.git url = ../qtdeclarative.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
[submodule "qtactiveqt"] [submodule "qtactiveqt"]
depends = qtbase
path = qtactiveqt path = qtactiveqt
url = ../qtactiveqt.git url = ../qtactiveqt.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtscript"] [submodule "qtscript"]
depends = qtbase
recommends = qttools
path = qtscript path = qtscript
url = ../qtscript.git url = ../qtscript.git
branch = 5.6.1 branch = 5.5.1
status = deprecated initrepo = true
[submodule "qtmultimedia"] [submodule "qtmultimedia"]
depends = qtbase
recommends = qtdeclarative
path = qtmultimedia path = qtmultimedia
url = ../qtmultimedia.git url = ../qtmultimedia.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
[submodule "qttools"] [submodule "qttools"]
depends = qtbase
recommends = qtdeclarative qtactiveqt qtwebkit
path = qttools path = qttools
url = ../qttools.git url = ../qttools.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
[submodule "qtxmlpatterns"] [submodule "qtxmlpatterns"]
depends = qtbase
path = qtxmlpatterns path = qtxmlpatterns
url = ../qtxmlpatterns.git url = ../qtxmlpatterns.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qttranslations"] [submodule "qttranslations"]
depends = qttools
path = qttranslations path = qttranslations
url = ../qttranslations.git url = ../qttranslations.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
priority = 30
[submodule "qtdoc"] [submodule "qtdoc"]
depends = qtdeclarative
path = qtdoc path = qtdoc
url = ../qtdoc.git url = ../qtdoc.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
priority = 40
[submodule "qtrepotools"] [submodule "qtrepotools"]
path = qtrepotools path = qtrepotools
url = ../qtrepotools.git url = ../qtrepotools.git
branch = master branch = master
status = essential initrepo = true
qt = false
[submodule "qtwebkit"] [submodule "qtwebkit"]
depends = qtbase
recommends = qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns
path = qtwebkit path = qtwebkit
url = ../qtwebkit.git url = ../qtwebkit.git
branch = 5.6.1 branch = 5.5.1
status = obsolete initrepo = true
project = WebKit.pro
priority = 20
[submodule "qtwebkit-examples"] [submodule "qtwebkit-examples"]
depends = qtwebkit qttools
path = qtwebkit-examples path = qtwebkit-examples
url = ../qtwebkit-examples.git url = ../qtwebkit-examples.git
branch = 5.6.1 branch = 5.5.1
status = obsolete initrepo = true
[submodule "qtqa"] [submodule "qtqa"]
depends = qtbase
path = qtqa path = qtqa
url = ../qtqa.git url = ../qtqa.git
branch = master branch = master
status = essential initrepo = true
priority = 50
[submodule "qtlocation"] [submodule "qtlocation"]
depends = qtbase
recommends = qtdeclarative qtquickcontrols qtserialport qtsystems
path = qtlocation path = qtlocation
url = ../qtlocation.git url = ../qtlocation.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtsensors"] [submodule "qtsensors"]
depends = qtbase
recommends = qtdeclarative
path = qtsensors path = qtsensors
url = ../qtsensors.git url = ../qtsensors.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtsystems"] [submodule "qtsystems"]
depends = qtbase
recommends = qtdeclarative
path = qtsystems path = qtsystems
url = ../qtsystems.git url = ../qtsystems.git
branch = dev branch = dev
status = ignore
[submodule "qtfeedback"] [submodule "qtfeedback"]
depends = qtdeclarative
recommends = qtmultimedia
path = qtfeedback path = qtfeedback
url = ../qtfeedback.git url = ../qtfeedback.git
branch = master branch = master
status = ignore
[submodule "qtdocgallery"] [submodule "qtdocgallery"]
depends = qtdeclarative
path = qtdocgallery path = qtdocgallery
url = ../qtdocgallery.git url = ../qtdocgallery.git
branch = master branch = master
status = ignore
[submodule "qtpim"] [submodule "qtpim"]
depends = qtdeclarative
path = qtpim path = qtpim
url = ../qtpim.git url = ../qtpim.git
branch = dev branch = dev
status = ignore
[submodule "qtconnectivity"] [submodule "qtconnectivity"]
depends = qtbase
recommends = qtdeclarative qtandroidextras
path = qtconnectivity path = qtconnectivity
url = ../qtconnectivity.git url = ../qtconnectivity.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtwayland"] [submodule "qtwayland"]
depends = qtbase
recommends = qtdeclarative
path = qtwayland path = qtwayland
url = ../qtwayland.git url = ../qtwayland.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qt3d"] [submodule "qt3d"]
depends = qtdeclarative qtimageformats
path = qt3d path = qt3d
url = ../qt3d.git url = ../qt3d.git
branch = 5.6.1 branch = 5.5.1
status = preview initrepo = true
[submodule "qtimageformats"] [submodule "qtimageformats"]
depends = qtbase
path = qtimageformats path = qtimageformats
url = ../qtimageformats.git url = ../qtimageformats.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtquick1"] [submodule "qtquick1"]
depends = qtscript
recommends = qtsvg qtxmlpatterns
path = qtquick1 path = qtquick1
url = ../qtquick1.git url = ../qtquick1.git
branch = 5.6.1 branch = 5.5.1
status = obsolete initrepo = true
[submodule "qtgraphicaleffects"] [submodule "qtgraphicaleffects"]
depends = qtdeclarative
path = qtgraphicaleffects path = qtgraphicaleffects
url = ../qtgraphicaleffects.git url = ../qtgraphicaleffects.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtquickcontrols"] [submodule "qtquickcontrols"]
depends = qtdeclarative
recommends = qtgraphicaleffects
path = qtquickcontrols path = qtquickcontrols
url = ../qtquickcontrols.git url = ../qtquickcontrols.git
branch = 5.6.1 branch = 5.5.1
status = essential initrepo = true
[submodule "qtserialbus"]
depends = qtserialport
path = qtserialbus
url = ../qtserialbus.git
branch = 5.6.1
status = preview
[submodule "qtserialport"] [submodule "qtserialport"]
depends = qtbase
path = qtserialport path = qtserialport
url = ../qtserialport.git url = ../qtserialport.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtx11extras"] [submodule "qtx11extras"]
depends = qtbase
path = qtx11extras path = qtx11extras
url = ../qtx11extras.git url = ../qtx11extras.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtmacextras"] [submodule "qtmacextras"]
depends = qtbase
path = qtmacextras path = qtmacextras
url = ../qtmacextras.git url = ../qtmacextras.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtwinextras"] [submodule "qtwinextras"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtwinextras path = qtwinextras
url = ../qtwinextras.git url = ../qtwinextras.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtandroidextras"] [submodule "qtandroidextras"]
depends = qtbase
path = qtandroidextras path = qtandroidextras
url = ../qtandroidextras.git url = ../qtandroidextras.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtenginio"] [submodule "qtenginio"]
depends = qtdeclarative
path = qtenginio path = qtenginio
url = ../qtenginio.git url = ../qtenginio.git
branch = 5.6.1 branch = 1.2.1
status = deprecated initrepo = true
[submodule "qtwebsockets"] [submodule "qtwebsockets"]
depends = qtbase
recommends = qtdeclarative
path = qtwebsockets path = qtwebsockets
url = ../qtwebsockets.git url = ../qtwebsockets.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtwebchannel"] [submodule "qtwebchannel"]
depends = qtbase
recommends = qtdeclarative qtwebsockets
path = qtwebchannel path = qtwebchannel
url = ../qtwebchannel.git url = ../qtwebchannel.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtwebengine"] [submodule "qtwebengine"]
depends = qtquickcontrols qtwebchannel
recommends = qtlocation
path = qtwebengine path = qtwebengine
url = ../qtwebengine.git url = ../qtwebengine.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
priority = 10
[submodule "qtcanvas3d"] [submodule "qtcanvas3d"]
depends = qtdeclarative
path = qtcanvas3d path = qtcanvas3d
url = ../qtcanvas3d.git url = ../qtcanvas3d.git
branch = 5.6.1 branch = 5.5.1
status = addon initrepo = true
[submodule "qtwebview"]
depends = qtdeclarative
recommends = qtwebengine
path = qtwebview
url = ../qtwebview.git
branch = 5.6.1
status = addon
[submodule "qtquickcontrols2"]
depends = qtquickcontrols
path = qtquickcontrols2
url = ../qtquickcontrols2.git
branch = 5.6.1
status = preview
[submodule "qtpurchasing"]
depends = qtbase
recommends = qtdeclarative
path = qtpurchasing
url = ../qtpurchasing.git
branch = dev
status = ignore

27
README
View File

@@ -39,24 +39,11 @@ HOW TO BUILD QT5
The "bin" folder of the ICU installation should be appended to the PATH 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. environment variable in order to for the DLLs to be found at run-time.
Licensing:
----------
Opensource users:
<source_package> = qt-everywhere-opensource-src-<version>
<license> = -opensource
Commercial users:
<source_package> = qt-everywhere-enterprise-src-<version>
<license> = -commercial
Linux, Mac: Linux, Mac:
----------- -----------
cd <path>/<source_package> cd <path>/qt-everywhere-opensource-src-<version>
./configure -prefix $PWD/qtbase <license> -nomake tests ./configure -prefix $PWD/qtbase -opensource -nomake tests
make -j 4 make -j 4
Windows: Windows:
@@ -68,8 +55,8 @@ HOW TO BUILD QT5
* Python version 2.7 or later [http://www.activestate.com/activepython/] * Python version 2.7 or later [http://www.activestate.com/activepython/]
* Ruby version 1.9.3 or later [http://rubyinstaller.org/] * Ruby version 1.9.3 or later [http://rubyinstaller.org/]
cd <path>\<source_package> cd <path>\qt-everywhere-opensource-src-<version>
configure -prefix %CD%\qtbase <license> -nomake tests configure -prefix %CD%\qtbase -opensource -nomake tests
nmake // jom // mingw32-make nmake // jom // mingw32-make
To accelerate the bootstrap of qmake with MSVC, it may be useful to pass To accelerate the bootstrap of qmake with MSVC, it may be useful to pass
@@ -94,13 +81,13 @@ HOW TO BUILD QT5
Example for a release build: Example for a release build:
(adjust the `-jN' parameter as appropriate for your system) (adjust the `-jN' parameter as appropriate for your system)
./configure -prefix $PWD/qtbase <license> ./configure -prefix $PWD/qtbase -opensource
make -j4 make -j4
Example for a developer build: Example for a developer build:
(enables more autotests, builds debug version of libraries, ...) (enables more autotests, builds debug version of libraries, ...)
./configure -developer-build <license> ./configure -developer-build -opensource
make -j4 make -j4
See output of `./configure -help' for documentation on various options to See output of `./configure -help' for documentation on various options to
@@ -113,7 +100,7 @@ HOW TO BUILD QT5
a `make module-<foo>'. For example, to build only qtscript and qtwebkit, a `make module-<foo>'. For example, to build only qtscript and qtwebkit,
and the modules they depend on: and the modules they depend on:
./configure -prefix $PWD/qtbase <license> ./configure -prefix $PWD/qtbase -opensource
make -j4 module-qtscript module-qtwebkit make -j4 module-qtscript module-qtwebkit
This can save a lot of time if you are only interested in a subset of Qt5. This can save a lot of time if you are only interested in a subset of Qt5.

View File

@@ -1,9 +0,0 @@
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.

View File

@@ -1,31 +0,0 @@
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())
}

View File

@@ -1,7 +0,0 @@
. "$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

View File

@@ -1,70 +0,0 @@
#!/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

View File

@@ -1,4 +0,0 @@
# 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

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -39,128 +39,155 @@ use warnings;
package Qt::InitRepository; package Qt::InitRepository;
sub printUsage($) =head1 NAME
{
my ($ex) = @_;
print <<EOF ; init-repository - initialize the Qt5 repository and all submodules
Usage:
./init-repository [options]
This script may be run after an initial `git clone' of Qt5 in order to =head1 SYNOPSIS
check out all submodules. It fetches them from canonical URLs inferred
from the clone's origin.
Options: ./init-repository [options]
Global options:
--force, -f This script may be run after an initial `git clone' of Qt5 in order to check
Force initialization (even if the submodules are already checked out all submodules.
out).
--force-hooks
Force initialization of hooks (even if there are already hooks in
checked out submodules).
--quiet, -q =head1 OPTIONS
Be quiet. Will exit cleanly if the repository is already
initialized.
Module options: B<Global options:>
--module-subset=<module1>,<module2>... =over
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 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 =item --force, -f
Skip the `git submodule update' command.
--branch Force initialization (even if the submodules are already checked out).
Instead of checking out specific SHA1s, check out the submodule
branches that correspond with the current supermodule commit. By
default, this option will cause local commits in the submodules to
be rebased. With --no-update, the branches will be checked out, but
their heads will not move.
--ignore-submodules
Set git config to ignore submodules by default when doing operations
on the qt5 repo, such as `pull', `fetch', `diff' etc.
After using this option, pass `--ignore-submodules=none' to git to =item --force-hooks
override it as needed.
Repository options: Force initialization of hooks (even if there are already hooks in checked out
submodules).
--berlin
Switch to internal URLs and make use of the Berlin git mirrors.
(Implies `--mirror').
--oslo =item --quiet, -q
Switch to internal URLs and make use of the Oslo git mirrors.
(Implies `--mirror').
--codereview-username <Gerrit/JIRA username> Be quiet. Will exit cleanly if the repository is already initialized.
Specify the user name for the (potentially) writable `gerrit' remote
for each module, for use with the Gerrit code review tool.
If this option is omitted, the gerrit remote is created without a =back
username and port number, and thus relies on a correct SSH
configuration.
--alternates <path to other Qt5 repo>
Adds alternates for each submodule to another full qt5 checkout.
This makes this qt5 checkout very small, as it will use the object
store of the alternates before unique objects are stored in its own
object store.
This option has no effect when using `--no-update'. B<Module options:>
NOTE: This will make this repo dependent on the alternate, which is =over
potentially dangerous! The dependency can be broken by also using
the `--copy-objects' option, or by running "git repack -a" in each
submodule, where required. Please read the note about the `--shared'
option in the documentation of `git clone' for more information.
--copy-objects =item --no-webkit
When `--alternates' is used, automatically do a "git repack -a" in
each submodule after cloning, to ensure that the repositories are
independent from the source used as a reference for cloning.
Note that this negates the disk usage benefits gained from the use Skip webkit and webkit examples submodules.
of `--alternates'. It may be desirable to skip these modules due to the large size of the webkit
git repository.
--mirror <url-base> =item --module-subset=<module1>,<module2>...
Uses <url-base> as the base URL for submodule git mirrors.
For example: 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.
--mirror user\@machine:/foo/bar/ =item --no-update
...will use the following as a mirror for qtbase: Skip the `git submodule update' command.
user\@machine:/foo/bar/qt/qtbase.git =item --branch
The mirror is permitted to contain a subset of the submodules; any Instead of checking out specific SHA1s, check out the submodule branches that
missing modules will fall back to the canonical URLs. correspond with the current supermodule commit.
By default, this option will cause local commits in the submodules to be rebased.
With --no-update, the branches will be checked out, but their heads will not move.
EOF =item --ignore-submodules
exit($ex);
} Set git config to ignore submodules by default when doing operations on the
qt5 repo, such as `pull', `fetch', `diff' etc.
After using this option, pass `--ignore-submodules=none' to git to override
it as needed.
=back
B<Repository options:>
=over
=item --berlin
Switch to internal URLs and make use of the Berlin git mirrors.
(Implies `--mirror').
=item --oslo
Switch to internal URLs and make use of the Oslo git mirrors.
(Implies `--mirror').
=item --codereview-username <Gerrit/JIRA username>
Specify the user name for the (potentially) writable `gerrit' remote
for each module, for use with the Gerrit code review tool.
If this option is omitted, the gerrit remote is created without a username
and port number, and thus relies on a correct SSH configuration.
=item --alternates <path to other Qt5 repo>
Adds alternates for each submodule to another full qt5 checkout. This makes
this qt5 checkout very small, as it will use the object store of the
alternates before unique objects are stored in its own object store.
This option has no effect when using `--no-update'.
B<NOTE:> This will make this repo dependent on the alternate, which is
potentially dangerous! The dependency can be broken by also using
the `--copy-objects' option, or by running C<git repack -a> in each
submodule, where required. Please read the note about the `--shared' option
in the documentation of `git clone' for more information.
=item --copy-objects
When `--alternates' is used, automatically do a C<git repack -a> in each
submodule after cloning, to ensure that the repositories are independent
from the source used as a reference for cloning.
Note that this negates the disk usage benefits gained from the use of
`--alternates'.
=item --mirror <url-base>
Uses <url-base> as the base URL for submodule git mirrors.
For example:
--mirror user@machine:/foo/bar/
...will use the following as a mirror for qtbase:
user@machine:/foo/bar/qt/qtbase.git
The mirror is permitted to contain a subset of the submodules; any
missing modules will fall back to the canonical URLs.
=back
=cut
use Carp qw( confess ); use Carp qw( confess );
use English qw( -no_match_vars ); use English qw( -no_match_vars );
use Getopt::Long qw( GetOptions ); use Getopt::Long qw( GetOptionsFromArray );
use Cwd qw( getcwd abs_path ); use Pod::Usage qw( pod2usage );
use Cwd qw( getcwd );
my $script_path = abs_path($0);
$script_path =~ s,[/\\][^/\\]+$,,;
my $GERRIT_SSH_BASE my $GERRIT_SSH_BASE
= 'ssh://@USER@codereview.qt-project.org@PORT@/'; = 'ssh://@USER@codereview.qt-project.org@PORT@/';
@@ -200,7 +227,7 @@ sub exe
sub parse_arguments sub parse_arguments
{ {
my ($self) = @_; my ($self, @args) = @_;
%{$self} = (%{$self}, %{$self} = (%{$self},
'alternates' => "", 'alternates' => "",
@@ -212,10 +239,11 @@ sub parse_arguments
'ignore-submodules' => 0 , 'ignore-submodules' => 0 ,
'mirror-url' => "", 'mirror-url' => "",
'update' => 1 , 'update' => 1 ,
'webkit' => 1 ,
'module-subset' => "default", 'module-subset' => "default",
); );
GetOptions( GetOptionsFromArray(\@args,
'alternates=s' => \$self->{qw{ alternates }}, 'alternates=s' => \$self->{qw{ alternates }},
'branch' => \$self->{qw{ branch }}, 'branch' => \$self->{qw{ branch }},
'codereview-username=s' => \$self->{qw{ codereview-username }}, 'codereview-username=s' => \$self->{qw{ codereview-username }},
@@ -226,9 +254,10 @@ sub parse_arguments
'mirror=s' => \$self->{qw{ mirror-url }}, 'mirror=s' => \$self->{qw{ mirror-url }},
'quiet' => \$self->{qw{ quiet }}, 'quiet' => \$self->{qw{ quiet }},
'update!' => \$self->{qw{ update }}, 'update!' => \$self->{qw{ update }},
'webkit!' => \$self->{qw{ webkit }},
'module-subset=s' => \$self->{qw{ module-subset }}, 'module-subset=s' => \$self->{qw{ module-subset }},
'help|?' => sub { printUsage(1); }, 'help|?' => sub { pod2usage(1); },
'berlin' => sub { 'berlin' => sub {
$self->{'mirror-url'} = $BER_MIRROR_URL_BASE; $self->{'mirror-url'} = $BER_MIRROR_URL_BASE;
@@ -236,13 +265,15 @@ sub parse_arguments
'oslo' => sub { 'oslo' => sub {
$self->{'mirror-url'} = $OSLO_MIRROR_URL_BASE; $self->{'mirror-url'} = $OSLO_MIRROR_URL_BASE;
}, },
) || printUsage(2); ) || pod2usage(2);
# Replace any double trailing slashes from end of mirror # Replace any double trailing slashes from end of mirror
$self->{'mirror-url'} =~ s{//+$}{/}; $self->{'mirror-url'} =~ s{//+$}{/};
$self->{'module-subset'} =~ s/\bdefault\b/preview,essential,addon,deprecated/;
$self->{'module-subset'} = [ split(/,/, $self->{'module-subset'}) ]; $self->{'module-subset'} = [ split(/,/, $self->{'module-subset'}) ];
if (!$self->{webkit}) {
push @{$self->{'module-subset'}}, "-qtwebkit", "-qtwebkit-examples";
}
return; return;
} }
@@ -280,14 +311,6 @@ sub git_submodule_init
return; return;
} }
use constant {
STS_PREVIEW => 1,
STS_ESSENTIAL => 2,
STS_ADDON => 3,
STS_DEPRECATED => 4,
STS_OBSOLETE => 5
};
sub git_clone_all_submodules sub git_clone_all_submodules
{ {
my ($self, $my_repo_base, $co_branch, @subset) = @_; my ($self, $my_repo_base, $co_branch, @subset) = @_;
@@ -311,58 +334,22 @@ sub git_clone_all_submodules
while ($base =~ s,/(?!\.\./)[^/]+/\.\./,/,g) {} while ($base =~ s,/(?!\.\./)[^/]+/\.\./,/,g) {}
$subbases{$mod} = $base; $subbases{$mod} = $base;
} elsif ($2 eq "update") { } elsif ($2 eq "update") {
push @subset, '-'.$1 if ($3 eq 'none'); push @subset, '-'.$1 if ($3 eq 'ignore');
} elsif ($2 eq "status") { } elsif ($2 eq "initrepo") {
if ($3 eq "preview") { $subinits{$1} = ($3 eq "yes" or $3 eq "true");
$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 = (); my %include = ();
foreach my $mod (@subset) { foreach my $mod (@subset) {
my $del = ($mod =~ s/^-//);
my $fail = 0;
my @what;
if ($mod eq "all") { if ($mod eq "all") {
@what = keys %subbases; map { $include{$_} = 1; } keys %subbases;
} elsif ($mod eq "essential") { } elsif ($mod eq "default") {
@what = grep { ($subinits{$_} || 0) eq STS_ESSENTIAL } keys %subbases; map { $include{$_} = 1; } grep { $subinits{$_} } keys %subbases;
} elsif ($mod eq "addon") { } elsif ($mod =~ s/^-//) {
@what = grep { ($subinits{$_} || 0) eq STS_ADDON } keys %subbases; delete $include{$mod};
} 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 { } else {
$fail = 1; $include{$mod} = 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;
} }
} }
@@ -535,16 +522,11 @@ sub ensure_link
return if (!$self->{'force-hooks'} and -f $tgt); return if (!$self->{'force-hooks'} and -f $tgt);
unlink($tgt); # In case we have a dead symlink or pre-existing hook unlink($tgt); # In case we have a dead symlink or pre-existing hook
print "Aliasing $src\n as $tgt ...\n" if (!$self->{quiet}); print "Aliasing $src\n as $tgt ...\n" if (!$self->{quiet});
if ($^O ne "msys" && $^O ne "MSWin32") { return if eval { symlink($src, $tgt) };
return if eval { symlink($src, $tgt) };
}
# Windows doesn't do (proper) symlinks. As the post_commit script needs # Windows doesn't do (proper) symlinks. As the post_commit script needs
# them to locate itself, we write a forwarding script instead. # them to locate itself, we write a forwarding script instead.
open SCRIPT, ">".$tgt or die "Cannot create forwarding script $tgt: $!\n"; open SCRIPT, ">".$tgt or die "Cannot create forwarding script $tgt: $!\n";
# Make the path palatable for MSYS. print SCRIPT "#!/bin/sh\nexec `dirname \$0`/$src \"\$\@\"\n";
$src =~ s,\\,/,g;
$src =~ s,^(.):/,/$1/,g;
print SCRIPT "#!/bin/sh\nexec $src \"\$\@\"\n";
close SCRIPT; close SCRIPT;
} }
@@ -552,30 +534,19 @@ sub git_install_hooks
{ {
my ($self) = @_; my ($self) = @_;
my $hooks = $script_path.'/qtrepotools/git-hooks'; return if (!-d 'qtrepotools/git-hooks');
return if (!-d $hooks);
my @configresult = qx(git config --list --local); # Force C locale as git submodule returns the localized string "Entering"
foreach my $line (@configresult) { local $ENV{LC_ALL} = 'C';
next if ($line !~ /submodule\.([^.=]+)\.url=/); chomp(my @modules = `git submodule foreach :`);
my $module = $1.'/.git'; push @modules, "";
if (!-d $module) { for my $module (@modules) {
open GITD, $module or die "Cannot open $module: $!\n"; $module =~ s,^Entering \'([^\']+)\'$,$1/,;
my $gd = <GITD>; my $rel = $module;
close GITD; $rel =~ s,[^/]+,..,g;
chomp($gd); $rel .= "../../qtrepotools/git-hooks/";
$gd =~ s/^gitdir: // or die "Malformed .git file $module\n"; $self->ensure_link($rel.'gerrit_commit_msg_hook', $module.'.git/hooks/commit-msg');
$module = $gd; # We expect it to be always absolute. $self->ensure_link($rel.'git_post_commit_hook', $module.'.git/hooks/post-commit');
if (open COMD, $module.'/commondir') {
my $cd = <COMD>;
chomp($cd);
$module .= '/'.$cd;
$module = abs_path($module);
close COMD;
}
}
$self->ensure_link($hooks.'/gerrit_commit_msg_hook', $module.'/hooks/commit-msg');
$self->ensure_link($hooks.'/git_post_commit_hook', $module.'/hooks/post-commit');
} }
} }
@@ -602,5 +573,5 @@ sub run
#============================================================================== #==============================================================================
Qt::InitRepository->new()->run if (!caller); Qt::InitRepository->new(@ARGV)->run if (!caller);
1; 1;

127
qt.pro
View File

@@ -7,68 +7,89 @@ CONFIG -= build_pass # unhack, as it confuses Qt Creator
TEMPLATE = subdirs TEMPLATE = subdirs
# Extract submodules from .gitmodules. defineReplace(moduleName) {
lines = $$cat(.gitmodules, lines) return(module_$$replace(1, -, _))
for (line, lines) {
mod = $$replace(line, "^\\[submodule \"([^\"]+)\"\\]$", \\1)
!equals(mod, $$line) {
module = $$mod
modules += $$mod
} else {
prop = $$replace(line, "^$$escape_expand(\\t)([^ =]+) *=.*$", \\1)
!equals(prop, $$line) {
val = $$replace(line, "^[^=]+= *", )
module.$${module}.$$prop = $$split(val)
} else {
error("Malformed line in .gitmodules: $$line")
}
}
} }
QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
modules = $$sort_depends(modules, module., .depends .recommends) # Arguments: module name, [mandatory deps], [optional deps], [project file]
modules = $$reverse(modules) defineTest(addModule) {
for (mod, modules) { contains(QT_SKIP_MODULES, $$1): return(false)
equals(module.$${mod}.qt, false): \ mod = $$moduleName($$1)
next()
deps = $$eval(module.$${mod}.depends) isEmpty(4) {
recs = $$eval(module.$${mod}.recommends) !exists($$1/$${1}.pro): return(false)
for (d, $$list($$deps $$recs)): \ $${mod}.subdir = $$1
!contains(modules, $$d): \ export($${mod}.subdir)
error("'$$mod' depends on undeclared '$$d'.")
contains(QT_SKIP_MODULES, $$mod): \
next()
!isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_MODULES, $$mod): \
next()
project = $$eval(module.$${mod}.project)
isEmpty(project) {
!exists($$mod/$${mod}.pro): \
next()
$${mod}.subdir = $$mod
} else { } else {
!exists($$mod/$$project): \ !exists($$1/$${4}): return(false)
next() $${mod}.file = $$1/$$4
$${mod}.file = $$mod/$$project
$${mod}.makefile = Makefile $${mod}.makefile = Makefile
export($${mod}.file)
export($${mod}.makefile)
} }
$${mod}.target = module-$$mod
for (d, deps) { for(d, 2) {
!contains(SUBDIRS, $$d) { dn = $$moduleName($$d)
$${mod}.target = !contains(SUBDIRS, $$dn): \
break() return(false)
} $${mod}.depends += $$dn
$${mod}.depends += $$d
} }
isEmpty($${mod}.target): \ for(d, 3) {
next() dn = $$moduleName($$d)
for (d, recs) { contains(SUBDIRS, $$dn): \
contains(SUBDIRS, $$d): \ $${mod}.depends += $$dn
$${mod}.depends += $$d
} }
!isEmpty($${mod}.depends): \
export($${mod}.depends)
$${mod}.target = module-$$1
export($${mod}.target)
SUBDIRS += $$mod SUBDIRS += $$mod
export(SUBDIRS)
return(true)
} }
# only qtbase is required to exist. The others may not - but it is the
# users responsibility to ensure that all needed dependencies exist, or
# it may not build.
ANDROID_EXTRAS =
android: ANDROID_EXTRAS = qtandroidextras
addModule(qtbase)
addModule(qtandroidextras, qtbase)
addModule(qtmacextras, qtbase)
addModule(qtx11extras, qtbase)
addModule(qtsvg, qtbase)
addModule(qtxmlpatterns, qtbase)
addModule(qtdeclarative, qtbase, qtsvg qtxmlpatterns)
addModule(qtquickcontrols, qtdeclarative, qtgraphicaleffects)
addModule(qtmultimedia, qtbase, qtdeclarative)
addModule(qtwinextras, qtbase, qtdeclarative qtmultimedia)
addModule(qtactiveqt, qtbase)
addModule(qtsystems, qtbase, qtdeclarative)
addModule(qtlocation, qtbase, qtdeclarative qtquickcontrols qtsystems)
addModule(qtsensors, qtbase, qtdeclarative)
addModule(qtconnectivity, qtbase $$ANDROID_EXTRAS, qtdeclarative)
addModule(qtfeedback, qtdeclarative, qtmultimedia)
addModule(qtpim, qtdeclarative)
addModule(qtwebsockets, qtbase, qtdeclarative)
addModule(qtwebchannel, qtbase, qtdeclarative qtwebsockets)
addModule(qtwebkit, qtbase, qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns, WebKit.pro)
addModule(qttools, qtbase, qtdeclarative qtactiveqt qtwebkit)
addModule(qtwebkit-examples, qtwebkit qttools)
addModule(qtimageformats, qtbase)
addModule(qt3d, qtdeclarative qtimageformats)
addModule(qtcanvas3d, qtdeclarative)
addModule(qtgraphicaleffects, qtdeclarative)
addModule(qtscript, qtbase, qttools)
addModule(qtquick1, qtscript, qtsvg qtxmlpatterns qtwebkit)
addModule(qtdocgallery, qtdeclarative)
addModule(qtwayland, qtbase, qtdeclarative)
addModule(qtserialport, qtbase)
addModule(qtenginio, qtdeclarative)
addModule(qtwebengine, qtquickcontrols qtwebchannel, qtwebkit qtlocation)
addModule(qttranslations, qttools)
addModule(qtdoc, qtdeclarative)
addModule(qtqa, qtbase)

2
qt3d

Submodule qt3d updated: 2270fae50f...0bcb6600db

2
qtbase

Submodule qtbase updated: 540978288e...6542161d5c

2
qtdoc

Submodule qtdoc updated: f63dd18eab...03117638dd

2
qtpim

Submodule qtpim updated: de4cfc6b53...18e3d741c3

Submodule qtpurchasing deleted from b5c6c76fac

2
qtqa

Submodule qtqa updated: 32893be6fa...dca1914237

Submodule qtquickcontrols2 deleted from 6ea6881ec8

Submodule qtserialbus deleted from ec7b4b2268

2
qtsvg

Submodule qtsvg updated: 0e69a7c86f...23f263b6aa

Submodule qttools updated: 2d838dd06e...0240288756

Submodule qtwebview deleted from 6d13d430ae