aboutsummaryrefslogtreecommitdiffstats
path: root/docker/windowsservercore
diff options
context:
space:
mode:
Diffstat (limited to 'docker/windowsservercore')
-rw-r--r--docker/windowsservercore/Dockerfile54
-rw-r--r--docker/windowsservercore/build-qt.bat23
-rw-r--r--docker/windowsservercore/qtifwsilent.qs54
3 files changed, 58 insertions, 73 deletions
diff --git a/docker/windowsservercore/Dockerfile b/docker/windowsservercore/Dockerfile
index 61a363761..43cf93736 100644
--- a/docker/windowsservercore/Dockerfile
+++ b/docker/windowsservercore/Dockerfile
@@ -1,33 +1,49 @@
-FROM microsoft/windowsservercore:10.0.14393.1884
-LABEL Description="Windows Server Core development environment for Qbs with Qt 5.9, Chocolatey and various dependencies for testing Qbs modules and functionality"
+FROM microsoft/windowsservercore:10.0.14393.1884 as build-env
+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
-COPY qtifwsilent.qs C:\qtifwsilent.qs
-RUN powershell -NoProfile -ExecutionPolicy Bypass -Command \
- $ErrorActionPreference = 'Stop'; \
- $Wc = New-Object System.Net.WebClient ; \
- $Wc.DownloadFile('https://download.qt.io/official_releases/qt/5.9/5.9.3/qt-opensource-windows-x86-5.9.3.exe', 'C:\qt.exe') ; \
- Echo 'Downloaded qt-opensource-windows-x86-5.9.3.exe' ; \
- $Env:QT_INSTALL_DIR = 'C:\\Qt' ; \
- Start-Process C:\qt.exe -ArgumentList '--verbose --script C:/qtifwsilent.qs' -NoNewWindow -Wait ; \
- Remove-Item C:\qt.exe -Force ; \
- Remove-Item C:\qtifwsilent.qs -Force
-ENV QTDIR C:\\Qt\\5.9.3\\msvc2015
-ENV QTDIR64 C:\\Qt\\5.9.3\\msvc2015_64
-RUN dir "%QTDIR%" && dir "%QTDIR64%" && dir "%QTDIR%\bin\Qt5Script.dll" && dir "%QTDIR64%\bin\Qt5Script.dll"
-
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 qbs --version 1.9.1 && qbs --version
-RUN choco install -y unzip --version 6.0 && unzip -v
+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 zip --version 3.0 && zip -v
+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
# for building the documentation
RUN pip install beautifulsoup4 lxml
diff --git a/docker/windowsservercore/build-qt.bat b/docker/windowsservercore/build-qt.bat
new file mode 100644
index 000000000..0d7f432e6
--- /dev/null
+++ b/docker/windowsservercore/build-qt.bat
@@ -0,0 +1,23 @@
+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
diff --git a/docker/windowsservercore/qtifwsilent.qs b/docker/windowsservercore/qtifwsilent.qs
deleted file mode 100644
index 13b5f39ea..000000000
--- a/docker/windowsservercore/qtifwsilent.qs
+++ /dev/null
@@ -1,54 +0,0 @@
-function Controller() {
- installer.autoRejectMessageBoxes();
- installer.installationFinished.connect(function() {
- gui.clickButton(buttons.NextButton);
- })
-}
-
-Controller.prototype.WelcomePageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.CredentialsPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.IntroductionPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.TargetDirectoryPageCallback = function() {
- gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.environmentVariable("QT_INSTALL_DIR"));
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ComponentSelectionPageCallback = function() {
- var widget = gui.currentPageWidget();
- widget.deselectAll();
- widget.selectComponent("qt.593.win32_msvc2015");
- widget.selectComponent("qt.593.win64_msvc2015_64");
- widget.selectComponent("qt.593.qtscript");
- widget.selectComponent("qt.tools.vcredist_msvc2015_x86");
- widget.selectComponent("qt.tools.vcredist_msvc2015_x64");
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.LicenseAgreementPageCallback = function() {
- gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.StartMenuDirectoryPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ReadyForInstallationPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.FinishedPageCallback = function() {
- var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm;
- if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox)
- checkBoxForm.launchQtCreatorCheckBox.checked = false;
- gui.clickButton(buttons.FinishButton);
-}