diff options
Diffstat (limited to 'docker/windowsservercore')
-rw-r--r-- | docker/windowsservercore/Dockerfile | 54 | ||||
-rw-r--r-- | docker/windowsservercore/build-qt.bat | 23 | ||||
-rw-r--r-- | docker/windowsservercore/qtifwsilent.qs | 54 |
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); -} |