aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Weickelt <richard@weickelt.de>2020-02-06 22:59:32 +0100
committerRichard Weickelt <richard@weickelt.de>2020-03-17 09:37:10 +0000
commit19befa84eded82c98e0cd27b97af087cc7ff5074 (patch)
tree3bb1300dc06d7c7c12a9729d7b33861e2778469b
parent77e8cca24ee4c39da5f2cbafbc316f9ac9e8ac80 (diff)
Update windowsservercore Docker image
Qt is updated to 5.12.5, MSVC is updated to 2017. Qbs is updated to 1.15.0. Docker-compose is used for managing the image. A unique tag name is used instead of the generic windowsservercore tag to be always able to refer to a specific version. Docker-compose is now used for managing the image. Change-Id: Ia5733992e7692561b1a6e74a4ac2ea3a7a01c4d8 Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--.travis.yml30
-rw-r--r--docker-compose.yml17
-rw-r--r--docker/docker.qbs1
-rw-r--r--docker/windowsservercore/Dockerfile78
-rw-r--r--docker/windowsservercore/build-qt.bat23
5 files changed, 87 insertions, 62 deletions
diff --git a/.travis.yml b/.travis.yml
index 53af0534b..4add585f1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -116,6 +116,36 @@ jobs:
osx_image: xcode9.4
if: branch = master
+ - &build-on-windows-with-docker
+ stage: Build Qbs and and run autotests
+ name: With Qbs on Windows with Docker (Visual Studio 2017)
+ if: branch = master
+ os: windows
+ services: docker
+ env:
+ CLCACHE_DIR="${HOME}/.ccache"
+ before-install:
+ - curl -sLo "/c/Program Files/Docker/docker-compose.exe" https://github.com/docker/compose/releases/download/1.25.3/docker-compose-Windows-x86_64.exe
+ - docker-compose pull windows
+ before_script:
+ - docker-compose run --rm windows clcache -s
+ script:
+ - >
+ docker-compose run --rm windows qbs build
+ -p dist
+ qbs.buildVariant:release
+ modules.cpp.compilerWrapper:clcache
+ modules.qbsbuildconfig.enableBundledQt:true
+ modules.qbsbuildconfig.enableProjectFileUpdates:true
+ modules.qbsbuildconfig.enableUnitTests:true
+ modules.cpp.treatWarningsAsErrors:true
+ project.withDocumentation:true
+ project.withExamples:true
+ config:release-64 profile:qt64
+ config:release profile:qt
+ after_script:
+ - docker-compose run --rm windows clcache -s
+
- &build-on-windows
stage: Build Qbs and and run autotests
name: With Qbs on Windows (Visual Studio 2017)
diff --git a/docker-compose.yml b/docker-compose.yml
index 6ca7a3046..198de4b56 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -53,3 +53,20 @@ services:
args:
QT_VERSION: 5.12.4
QTCREATOR_VERSION: 4.9.2
+
+ windows:
+ image: ${DOCKER_USER:-qbsbuild}/qbsdev:windowsservercore-5.12.7_1.15.0-0
+ build:
+ dockerfile: docker/windowsservercore/Dockerfile
+ context: .
+ args:
+ QT_VERSION: 5.12.7
+ QBS_VERSION: 1.15.0
+ working_dir: 'C:/qbs'
+ environment:
+ - BUILD_OPTIONS
+ - WITH_DOCS
+ volumes:
+ - .:C:\qbs
+ - ~/.ccache:C:\.ccache
+ network_mode: nat
diff --git a/docker/docker.qbs b/docker/docker.qbs
index 5adc277e4..752c61d3b 100644
--- a/docker/docker.qbs
+++ b/docker/docker.qbs
@@ -29,7 +29,6 @@ Project {
files: [
"windowsservercore/Dockerfile",
- "windowsservercore/build-qt.bat",
]
}
}
diff --git a/docker/windowsservercore/Dockerfile b/docker/windowsservercore/Dockerfile
index 43cf93736..be3777aa0 100644
--- a/docker/windowsservercore/Dockerfile
+++ b/docker/windowsservercore/Dockerfile
@@ -1,49 +1,51 @@
-FROM microsoft/windowsservercore:10.0.14393.1884 as build-env
+
+FROM mcr.microsoft.com/windows/servercore:1809
LABEL Description="Windows Server Core development environment for Qbs with Qt, Chocolatey and various dependencies for testing Qbs modules and functionality"
# Disable crash dialog for release-mode runtimes
RUN reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting" /v Disabled /t REG_DWORD /d 1 /f
RUN reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting" /v DontShowUI /t REG_DWORD /d 1 /f
-RUN @powershell -NoProfile -ExecutionPolicy Bypass -Command \
+RUN powershell -NoProfile -ExecutionPolicy Bypass -Command \
$Env:chocolateyVersion = '0.10.8' ; \
$Env:chocolateyUseWindowsCompression = 'false' ; \
- "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
-RUN choco install -y python2 --version 2.7.14 && refreshenv && python --version && pip --version
-RUN choco install -y vcredist140
-RUN choco install -y qbs --version 1.12.1 && qbs --version
-RUN choco install -y visualcpp-build-tools --version 14.0.25420.1 && dir "%PROGRAMFILES(X86)%\Microsoft Visual C++ Build Tools"
-RUN choco install -y unzip --version 6.0
-RUN choco install -y zip --version 3.0
-
-
-FROM build-env as qt-build-env
-LABEL Description="Environment for Building Qt"
-RUN choco install -y jom --version 1.1.2 && jom /version
-
-# Download and extract Qt source archives
-WORKDIR C:/
-RUN md src
-WORKDIR src
-COPY build-qt.bat .
-ADD http://download.qt.io/official_releases/qt/5.12/5.12.5/submodules/qtbase-everywhere-src-5.12.5.zip qtbase.zip
-ADD http://download.qt.io/official_releases/qt/5.12/5.12.5/submodules/qtscript-everywhere-src-5.12.5.zip qtscript.zip
-ADD http://download.qt.io/official_releases/qt/5.12/5.12.5/submodules/qttools-everywhere-src-5.12.5.zip qttools.zip
-RUN unzip qtbase.zip
-RUN unzip qtscript.zip
-RUN unzip qttools.zip
-RUN rename qtbase-everywhere-src-5.12.5 qtbase
-RUN rename qtscript-everywhere-src-5.12.5 qtscript
-RUN rename qttools-everywhere-src-5.12.5 qttools
-RUN build-qt.bat x86
-RUN build-qt.bat x64
-
-
-FROM build-env as qbs-build-env
-WORKDIR C:/
-COPY --from=qt-build-env C:/Qt C:/Qt/
-ENV QTDIR C:\\Qt\\x86
-ENV QTDIR64 C:\\Qt\\x64
+ "[Net.ServicePointManager]::SecurityProtocol = \"tls12, tls11, tls\"; iex ((New-Object System.Net.WebClient).DownloadString('http://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
+
+# Wait for vs_installer.exe, vs_installerservice.exe
+# or vs_installershell.exe because choco doesn't
+RUN powershell -NoProfile -InputFormat None -Command \
+ choco install visualcpp-build-tools --version 15.0.26228.20170424 -y; \
+ Write-Host 'Waiting for Visual C++ Build Tools to finish'; \
+ Wait-Process -Name vs_installer
+
+ARG QBS_VERSION
+RUN choco install -y python && \
+ choco install -y 7zip --version 19.0 && \
+ choco install -y git --version 2.24.0 --params "/GitAndUnixToolsOnPath" && \
+ choco install -y qbs --version %QBS_VERSION%
# for building the documentation
RUN pip install beautifulsoup4 lxml
+
+# clcache for speeding up MSVC builds
+ENV CLCACHE_DIR="C:/.ccache"
+RUN certutil -generateSSTFromWU roots.sst && \
+ certutil -addstore -f root roots.sst && \
+ del roots.sst && \
+ pip install --trusted-host=pypi.org \
+ git+https://github.com/frerich/clcache.git@cae73d8255d78db8ba11e23c51fd2c9a89e7475b
+
+########### Install Qt #############
+ARG QT_VERSION
+COPY scripts/install-qt.sh install-qt.sh
+
+RUN bash -c "./install-qt.sh -d /c/Qt --version ${QT_VERSION} --toolchain win64_msvc2017_64 qtbase qtdeclarative qttools qtscript"
+ENV QTDIR64=C:\\Qt\\${QT_VERSION}\\msvc2017_64
+
+RUN bash -c "./install-qt.sh -d /c/Qt --version ${QT_VERSION} --toolchain win32_msvc2017 qtbase qtdeclarative qttools qtscript"
+ENV QTDIR=C:\\Qt\\${QT_VERSION}\\msvc2017
+
+RUN qbs setup-toolchains --detect && \
+ qbs setup-qt %QTDIR64%/bin/qmake.exe qt64 && \
+ qbs setup-qt %QTDIR%/bin/qmake.exe qt && \
+ qbs config defaultProfile qt64
diff --git a/docker/windowsservercore/build-qt.bat b/docker/windowsservercore/build-qt.bat
deleted file mode 100644
index 0d7f432e6..000000000
--- a/docker/windowsservercore/build-qt.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-setlocal
-set ARCH=%1
-call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %ARCH%
-md %ARCH%
-cd %ARCH%
-md qtbase
-cd qtbase
-call C:\src\qtbase\configure -opensource -confirm-license -prefix C:\Qt\%ARCH% -opengl desktop -release -nomake tests -nomake examples
-jom
-jom install
-cd ..
-md qttools\src\windeployqt
-cd qttools\src\windeployqt
-C:\Qt\%ARCH%\bin\qmake C:\src\qttools\src\windeployqt\windeployqt.pro
-jom
-jom install
-cd ..
-md qtscript
-cd qtscript
-C:\Qt\%ARCH%\bin\qmake C:\src\qtscript\qtscript.pro
-jom
-jom install
-endlocal