From e36f73945c6f8e374b931cc33f2708e696797d1b Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 7 Jun 2019 11:07:35 +0200 Subject: Update windowsservercore/Dockerfile - Update qbs to 1.12.1 - Update Qt to 5.12.5 We're not using the installer anymore, because a) the unattended-install-hack doesn't work for newer Qt installers b) newer installers do not provide VS 2015 builds. c) it allows us to tailor the Qt build to our needs in the future. We're not building the documentation on Windows anymore due to the genius move to require libclang for qdoc. That means we need additional twiddling with the packages to add documentation that was built on an usable OS. Task-number: QBS-1438 Change-Id: I77a487562c2f5edd69b8b8a10ef3410ab599dc92 Reviewed-by: Christian Kandeler --- docker/docker.qbs | 2 +- docker/windowsservercore/Dockerfile | 54 +++++++++++++++++++++------------ docker/windowsservercore/build-qt.bat | 23 ++++++++++++++ docker/windowsservercore/qtifwsilent.qs | 54 --------------------------------- 4 files changed, 59 insertions(+), 74 deletions(-) create mode 100644 docker/windowsservercore/build-qt.bat delete mode 100644 docker/windowsservercore/qtifwsilent.qs (limited to 'docker') diff --git a/docker/docker.qbs b/docker/docker.qbs index d4bf181bb..5adc277e4 100644 --- a/docker/docker.qbs +++ b/docker/docker.qbs @@ -29,7 +29,7 @@ Project { files: [ "windowsservercore/Dockerfile", - "windowsservercore/qtifwsilent.qs", + "windowsservercore/build-qt.bat", ] } } 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); -} -- cgit v1.2.3