Skip to content

Commit 4af12ae

Browse files
authored
Merge pull request #69 from LibrePCB/windows-servercore2025
Windows: Add LTSC2025 image with several tools updated
2 parents 4b7d5d1 + b227260 commit 4af12ae

File tree

4 files changed

+223
-1
lines changed

4 files changed

+223
-1
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,13 @@ googletest).
4949
### `windowsservercore-ltsc2019-qt6.6-64bit`
5050

5151
Based on Windows Server Core LTSC2019 with Qt6.6.x, MinGW 11.2.0 64-bit
52-
and OpenCascade OCCT 7.7.2. This image is intended for deployment of official
52+
and OpenCascade OCCT 7.7.2. This image was intended for deployment of official
53+
64-bit binary releases of LibrePCB for Windows.
54+
55+
### `windowsservercore-ltsc2025-qt6.6-64bit`
56+
57+
Based on Windows Server Core LTSC2025 with Qt6.6.x, MinGW 11.2.0 64-bit
58+
and OpenCascade OCCT 7.9.1. This image is intended for deployment of official
5359
64-bit binary releases of LibrePCB for Windows.
5460

5561
### `webtools`
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
FROM mcr.microsoft.com/windows/servercore:ltsc2025
2+
3+
# Add OpenGL DLLs from a Windows desktop to allow running unit tests within the container
4+
ADD *.dll C:/Windows/System32/
5+
6+
# Install Microsoft Visual C++ Redistributable for Visual Studio 2015-2022
7+
ARG VCREDIST_URL="https://download.visualstudio.microsoft.com/download/pr/6ba404bb-6312-403e-83be-04b062914c98/1AD7988C17663CC742B01BEF1A6DF2ED1741173009579AD50A94434E54F56073/VC_redist.x64.exe"
8+
RUN curl -o "C:/tmp.exe" -L "%VCREDIST_URL%" \
9+
&& C:/tmp.exe /quiet /norestart \
10+
&& del C:\tmp.exe
11+
12+
# Install 7-Zip
13+
# Attention: I observed issues with version 2409, thus better keep the old version
14+
ARG 7ZIP_URL="https://7-zip.org/a/7z2301-x64.exe"
15+
RUN curl -o "C:/tmp.exe" -L "%7ZIP_URL%" \
16+
&& C:/tmp.exe /S /D="C:/7zip" \
17+
&& setx PATH "%PATH%;C:\7zip" \
18+
&& del C:\tmp.exe
19+
20+
# Install Git
21+
# Attention: Version 2.50 breaks our CI in a strange way!
22+
ARG GIT_VERSION="2.44.0"
23+
ARG GIT_URL="https://github.com/git-for-windows/git/releases/download/v$GIT_VERSION.windows.1/Git-$GIT_VERSION-64-bit.exe"
24+
RUN curl -o "C:/tmp.exe" -L "%GIT_URL%" \
25+
&& C:/tmp.exe /VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS \
26+
/COMPONENTS="gitlfs" /o:PathOption="CmdTools" /o:CRLFOption="LFOnly" /DIR:"C:/git" \
27+
&& del C:\tmp.exe
28+
29+
# Install UV
30+
ARG UV_URL="https://github.com/astral-sh/uv/releases/download/0.7.13/uv-x86_64-pc-windows-msvc.zip"
31+
RUN curl -o "C:/tmp.zip" -L "%UV_URL%" \
32+
&& 7z x C:/tmp.zip -oC:/uv -bsp1 \
33+
&& setx PYTHONIOENCODING "UTF-8" \
34+
&& setx PATH "%PATH%;C:\uv" \
35+
&& del C:\tmp.zip
36+
37+
# Install CMake
38+
ARG CMAKE_VERSION="4.0.3"
39+
ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-windows-x86_64.zip"
40+
RUN curl -o "C:/tmp.zip" -L "%CMAKE_URL%" \
41+
&& 7z x C:/tmp.zip -oC:/ -bsp1 \
42+
&& rename cmake-%CMAKE_VERSION%-windows-x86_64 cmake \
43+
&& setx PATH "%PATH%;C:\cmake\bin" \
44+
&& del C:\tmp.zip
45+
46+
# Install Ninja
47+
ARG NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip"
48+
RUN curl -o "C:/tmp.zip" -L "%NINJA_URL%" \
49+
&& 7z x C:/tmp.zip -oC:/ninja -bsp1 \
50+
&& setx PATH "%PATH%;C:\ninja" \
51+
&& del C:\tmp.zip
52+
53+
# Install CCache
54+
ARG CCACHE_VERSION="4.11.3"
55+
ARG CCACHE_URL="https://github.com/ccache/ccache/releases/download/v$CCACHE_VERSION/ccache-$CCACHE_VERSION-windows-x86_64.zip"
56+
RUN curl -o "C:/tmp.zip" -L "%CCACHE_URL%" \
57+
&& 7z x C:/tmp.zip -oC:/ -bsp1 \
58+
&& rename ccache-%CCACHE_VERSION%-windows-x86_64 ccache \
59+
&& setx PATH "%PATH%;C:\ccache" \
60+
&& del C:\tmp.zip
61+
62+
# Install MinGW
63+
ARG MINGW_URL="https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_mingw90/qt.tools.win64_mingw900/9.0.0-1-202203221220mingw-w64-x86_64-11.2.0-release-posix-seh-rt_v9-rev3.7z"
64+
RUN powershell -Command Invoke-WebRequest $env:MINGW_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
65+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
66+
&& setx PATH "%PATH%;C:\Qt\Tools\mingw1120_64\bin" \
67+
&& del C:\tmp.7z
68+
69+
# Install Rust
70+
ARG RUST_VERSION="1.87.0"
71+
ENV RUSTUP_HOME="C:\rustup" \
72+
CARGO_HOME="C:\cargo"
73+
RUN curl -o "C:/rustup-init.exe" -L "https://win.rustup.rs/x86_64" \
74+
&& C:/rustup-init.exe -y -v \
75+
--profile minimal \
76+
--default-host x86_64-pc-windows-gnu \
77+
--default-toolchain none \
78+
&& C:\cargo\bin\rustup install %RUST_VERSION% \
79+
&& del C:\rustup-init.exe
80+
81+
# Install ZLib
82+
ARG ZLIB_VERSION="1.3.1"
83+
ARG ZLIB_URL="https://github.com/madler/zlib/releases/download/v$ZLIB_VERSION/zlib131.zip"
84+
RUN curl -o "C:/tmp.zip" -L "%ZLIB_URL%" \
85+
&& 7z x C:/tmp.zip -oC:/ -bsp1 \
86+
&& cd C:/zlib-%ZLIB_VERSION% \
87+
&& cmake . -G "Ninja" -DCMAKE_INSTALL_PREFIX=C:/zlib \
88+
&& ninja \
89+
&& ninja install \
90+
&& setx ZLIB_ROOT "C:/zlib" \
91+
&& setx PATH "%PATH%;C:\zlib\bin" \
92+
&& cd .. \
93+
&& rmdir C:\zlib-%ZLIB_VERSION% /s /q \
94+
&& del C:\tmp.zip
95+
96+
# Install OpenCascade
97+
ARG OCC_VERSION="7_9_1"
98+
ARG OCC_URL="https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V$OCC_VERSION.zip"
99+
RUN curl -o "C:/tmp.zip" -L "%OCC_URL%" \
100+
&& 7z x C:/tmp.zip -oC:/ -bsp1 \
101+
&& cd C:\OCCT-%OCC_VERSION% \
102+
&& cmake . -G "Ninja" \
103+
-DCMAKE_BUILD_TYPE=Release \
104+
-DINSTALL_DIR=C:/OpenCascade \
105+
-DBUILD_LIBRARY_TYPE=Shared \
106+
-DBUILD_DOC_Overview=0 \
107+
-DBUILD_MODULE_ApplicationFramework=0 \
108+
-DBUILD_MODULE_DataExchange=1 \
109+
-DBUILD_MODULE_Draw=0 \
110+
-DBUILD_MODULE_FoundationClasses=0 \
111+
-DBUILD_MODULE_ModelingAlgorithms=0 \
112+
-DBUILD_MODULE_ModelingData=0 \
113+
-DBUILD_MODULE_Visualization=0 \
114+
-DUSE_DRACO=0 \
115+
-DUSE_FREEIMAGE=0 \
116+
-DUSE_FREETYPE=0 \
117+
-DUSE_GLES2=0 \
118+
-DUSE_OPENGL=0 \
119+
-DUSE_OPENVR=0 \
120+
-DUSE_RAPIDJSON=0 \
121+
-DUSE_TBB=0 \
122+
-DUSE_TK=0 \
123+
-DUSE_VTK=0 \
124+
&& cmake --build . \
125+
&& cmake --install . \
126+
&& setx OpenCASCADE_DIR C:/OpenCascade/cmake \
127+
&& setx PATH "%PATH%;C:\OpenCascade\win64\gcc\bin" \
128+
&& cd .. \
129+
&& rmdir C:\OCCT-%OCC_VERSION% /s /q \
130+
&& del C:\tmp.zip
131+
132+
# Install Qt Runtime DLLs
133+
ARG QT_VERSION="6.6.2"
134+
ARG QT_BASEURL="https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt6_662"
135+
ARG QT_URL="${QT_BASEURL}/qt.qt6.662.win64_mingw/6.6.2-0-202402121135"
136+
ARG QT_DLLS_URL="${QT_URL}MinGW-w64-x86_64-11.2.0-release-posix-seh-rt_v9-rev1-runtime.7z"
137+
RUN powershell -Command Invoke-WebRequest $env:QT_DLLS_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
138+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
139+
&& del C:\tmp.7z
140+
141+
# Install Qt Tools
142+
ARG QT_TOOLS_URL="${QT_URL}qttools-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
143+
RUN powershell -Command Invoke-WebRequest $env:QT_TOOLS_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
144+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
145+
&& setx PATH "%PATH%;C:\Qt\%QT_VERSION%\mingw_64\bin" \
146+
&& del C:\tmp.7z
147+
148+
# Install Qt Base
149+
ARG QT_BASE_URL="${QT_URL}qtbase-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
150+
ARG QT_PRI="C:\\Qt\\$QT_VERSION\\mingw_64\\mkspecs\\qconfig.pri"
151+
RUN powershell -Command Invoke-WebRequest $env:QT_BASE_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
152+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
153+
&& del C:\tmp.7z \
154+
&& powershell -Command "((Get-Content -path $env:QT_PRI -Raw) -replace 'Enterprise', 'OpenSource') | Set-Content -Path $env:QT_PRI" \
155+
&& powershell -Command "((Get-Content -path $env:QT_PRI -Raw) -replace 'licheck.exe', '') | Set-Content -Path $env:QT_PRI"
156+
157+
# Install Qt SVG
158+
ARG QT_SVG_URL="${QT_URL}qtsvg-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
159+
RUN powershell -Command Invoke-WebRequest $env:QT_SVG_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
160+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
161+
&& del C:\tmp.7z
162+
163+
# Install Qt Declarative
164+
ARG QT_DECLARATIVE_URL="${QT_URL}qtdeclarative-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
165+
RUN powershell -Command Invoke-WebRequest $env:QT_DECLARATIVE_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
166+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
167+
&& del C:\tmp.7z
168+
169+
# Install Qt OpenGL (not sure if needed)
170+
ARG QT_QT5OPENGL_URL="${QT_URL}opengl32sw-64-mesa_11_2_2-signed_sha256.7z"
171+
RUN powershell -Command Invoke-WebRequest $env:QT_QT5OPENGL_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
172+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
173+
&& del C:\tmp.7z
174+
175+
# Install Qt D3D (not sure if needed)
176+
ARG QT_QT5D3D_URL="${QT_URL}d3dcompiler_47-x64.7z"
177+
RUN powershell -Command Invoke-WebRequest $env:QT_QT5D3D_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
178+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
179+
&& del C:\tmp.7z
180+
181+
# Install Qt Translations
182+
ARG QT_TRANSLATIONS_URL="${QT_URL}qttranslations-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
183+
RUN powershell -Command Invoke-WebRequest $env:QT_TRANSLATIONS_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
184+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
185+
&& del C:\tmp.7z
186+
187+
# Install Qt5 Compat
188+
ARG QT_QT5COMPAT_URL="${QT_BASEURL}/qt.qt6.662.qt5compat.win64_mingw/6.6.2-0-202402121135qt5compat-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
189+
RUN powershell -Command Invoke-WebRequest $env:QT_QT5COMPAT_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
190+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
191+
&& del C:\tmp.7z
192+
193+
# Install Qt Image Formats Plugin
194+
ARG QT_IMAGEFORMATS_URL="${QT_BASEURL}/qt.qt6.662.addons.qtimageformats.win64_mingw/6.6.2-0-202402121135qtimageformats-Windows-Windows_10_22H2-Mingw-Windows-Windows_10_22H2-X86_64.7z"
195+
RUN powershell -Command Invoke-WebRequest $env:QT_IMAGEFORMATS_URL -OutFile 'C:/tmp.7z' -UseBasicParsing ; \
196+
&& 7z x C:/tmp.7z -oC:/Qt -bsp1 \
197+
&& del C:\tmp.7z
198+
199+
# Install Inno Setup
200+
# Note: 6.4.3 emits some warnings when generating the LibrePCB installer,
201+
# should be reviewed when upgrading
202+
ARG INNOSETUP_URL="https://files.jrsoftware.org/is/6/innosetup-6.2.2.exe"
203+
RUN curl -o "C:/tmp.exe" -L "%INNOSETUP_URL%" \
204+
&& C:/tmp.exe /NOICONS /VERYSILENT /DIR=C:\innosetup \
205+
&& setx PATH "%PATH%;C:\innosetup" \
206+
&& del C:\tmp.exe
207+
208+
# Pre-install a Python version
209+
RUN uv python install 3.13
210+
211+
# Install OpenSSL (last one in Dockerfile because it should be updated regularly)
212+
ARG OPENSSL_URL="https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_opensslv3_x64/qt.tools.opensslv3.win_x64/3.0.16-1openssl_3.0.16_prebuild_x64.7z"
213+
RUN curl -o "C:/tmp.7z" -L "%OPENSSL_URL%" \
214+
&& 7z x C:/tmp.7z -oC:/Qt/Tools/OpenSSLv3 -bsp1 \
215+
&& setx OPENSSL_ROOT "C:/Qt/Tools/OpenSSLv3/Win_x64" \
216+
&& del C:\tmp.7z
160 KB
Binary file not shown.
1.02 MB
Binary file not shown.

0 commit comments

Comments
 (0)