Skip to content

Commit dfcb8de

Browse files
committed
Add msvc 2026 docker image (#951)
* Add msvc 2026 docker image * Fix compose profiles * Fix service name
1 parent 7b86ff3 commit dfcb8de

6 files changed

Lines changed: 151 additions & 5 deletions

File tree

server/build-docker.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ for request in $REQUESTED; do
4949
;;
5050
windows)
5151
# skip building winsdk-2022 because wine image contains newer Clang.
52-
INSTALL="wine winsdk-2022_144435207"
52+
INSTALL="wine winsdk-2022_144435207 winsdk-2026_145136231"
5353
;;
5454
xbox)
55-
INSTALL="wine winsdk-2022_144435207 xbox-251002"
55+
INSTALL="wine winsdk-2026_145136231 xbox-251002"
5656
;;
5757
linux)
5858
INSTALL="linux"
@@ -82,8 +82,8 @@ for request in $REQUESTED; do
8282
android)
8383
DM_PACKAGES_URL=$DM_PACKAGES_URL docker buildx build --network host --load --secret id=DM_PACKAGES_URL --platform linux/amd64 -t $DOCKER_REGISTRY/extender-android-env:1.7.0 -t $DOCKER_REGISTRY/extender-android-env:latest -f $SCRIPT_DIR/docker/Dockerfile.android-env $SCRIPT_DIR/docker
8484
;;
85-
winsdk-2022_144435207)
86-
DM_PACKAGES_URL=$DM_PACKAGES_URL docker buildx build --network host --load --secret id=DM_PACKAGES_URL --platform linux/amd64 -t $DOCKER_REGISTRY/extender-winsdk-2022_144435207-env:1.1.0 -t $DOCKER_REGISTRY/extender-winsdk-2022_144435207-env:latest -f $SCRIPT_DIR/docker/Dockerfile.winsdk.2022_144435207-env $SCRIPT_DIR/docker
85+
winsdk-2026_145136231)
86+
DM_PACKAGES_URL=$DM_PACKAGES_URL docker buildx build --network host --load --secret id=DM_PACKAGES_URL --platform linux/amd64 -t $DOCKER_REGISTRY/extender-winsdk-2026_145136231-env:1.0.0 -t $DOCKER_REGISTRY/extender-winsdk-2026_145136231-env:latest -f $SCRIPT_DIR/docker/Dockerfile.winsdk.2026_145136231-env $SCRIPT_DIR/docker
8787
;;
8888
android-ndk*|winsdk-*|emsdk-*)
8989
DM_PACKAGES_URL=$DM_PACKAGES_URL docker buildx build --network host --load --secret id=DM_PACKAGES_URL --platform linux/amd64 -t $DOCKER_REGISTRY/extender-${install}-env:latest -f $SCRIPT_DIR/docker/Dockerfile.$(echo $install | sed 's,-,.,')-env $SCRIPT_DIR/docker

server/configs/application-local-dev-app.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ extender:
4242
winsdk-2022_144435207:
4343
url: http://winsdk-2022_144435207:9000
4444
instanceId: winsdk-2022_144435207
45+
winsdk-2026_145136231:
46+
url: http://winsdk-2026_145136231:9000
47+
instanceId: winsdk-2026_145136231
4548
xbox-251002:
4649
url: http://xbox-251002:9000
4750
instanceId: xbox-251002

server/configs/application-test-app.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ extender:
3535
winsdk-2022_144435207:
3636
url: http://winsdk-2022_144435207:9000
3737
instanceId: winsdk-2022_144435207
38+
winsdk-2026_145136231:
39+
url: http://winsdk-2026_145136231:9000
40+
instanceId: winsdk-2026_145136231
3841
xbox-251002:
3942
url: http://xbox-251002:9000
4043
instanceId: xbox-251002
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
ARG PLATFORMSDK_DIR=/opt/platformsdk
2+
ARG PLATFORMSDK_WIN32=${PLATFORMSDK_DIR}/Win32
3+
ARG WINDOWS_SDK_VERSION=10.0.28000.0
4+
ARG WINDOWS_MSVC_VERSION=14.51.36231
5+
ARG WINDOWS_SDK_DIR=${PLATFORMSDK_WIN32}/WindowsKits/10
6+
ARG WINDOWS_MSVC_DIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026/VC/Tools/MSVC/${WINDOWS_MSVC_VERSION}"
7+
8+
FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-build-env:1.0.0 AS build
9+
10+
ARG PLATFORMSDK_WIN32
11+
ARG WINDOWS_SDK_VERSION
12+
ARG WINDOWS_MSVC_VERSION
13+
ARG WINDOWS_SDK_DIR
14+
ARG WINDOWS_MSVC_DIR
15+
16+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
17+
18+
RUN \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends python3 python-is-python3
21+
22+
RUN --mount=type=secret,id=DM_PACKAGES_URL,required=true \
23+
mkdir -p "${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026" && \
24+
wget -q -O - "$(cat /run/secrets/DM_PACKAGES_URL)/Microsoft-Visual-Studio-2026-${WINDOWS_MSVC_VERSION}.tar.gz" | tar xz -C "${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026" && \
25+
mkdir -p "${PLATFORMSDK_WIN32}/WindowsKits" && \
26+
wget -q -O - "$(cat /run/secrets/DM_PACKAGES_URL)/WindowsKits-${WINDOWS_SDK_VERSION}.tar.gz" | tar xz -C "${PLATFORMSDK_WIN32}/WindowsKits"
27+
28+
COPY winsdk_rename_files.py ${PLATFORMSDK_WIN32}
29+
30+
# Due to Windows' case insensitive file system, the sources reference lib files with wrong cases
31+
# so we solve the bulk by making the suffixes lowercase. (e.g. MyLib.Lib -> MyLib.lib)
32+
RUN find $PLATFORMSDK_WIN32 -iname '*.Lib' -type f -exec sh -c 'a=$(echo "$0" | sed -r "s/([^.]*)\$/\L\1/"); [ "$a" != "$0" ] && [ ! -f "$a" ] && ln -s "$0" "$a" ' {} \; && \
33+
python ${PLATFORMSDK_WIN32}/winsdk_rename_files.py > ${PLATFORMSDK_WIN32}/rename.txt && \
34+
# Make a copy of all the headers too, in lower case (e.g. Windows.h -> windows.h etc)
35+
find $PLATFORMSDK_WIN32 -iname '*.h' -type f -exec sh -c 'd=$(dirname "$0"); a=$(basename "$0" | tr [:upper:] [:lower:]); [ "$a" != $(basename "$0") ] && [ ! -f "$d/$a" ] && ln -s "$0" "$d/$a" ' {} \; && \
36+
# Make lower case links of libraries as well
37+
find ${WINDOWS_SDK_DIR}/Lib -iname '*.lib' -type f -exec sh -c 'd=$(dirname "$0"); a=$(basename "$0" | tr [:upper:] [:lower:]); [ "$a" != $(basename "$0") ] && [ ! -f "$d/$a" ] && ln -s "$0" "$d/$a" ' {} \;
38+
39+
# and the rest are manually copied (or made lower case)
40+
WORKDIR "${WINDOWS_MSVC_DIR}/lib/x64"
41+
RUN \
42+
cp oldnames.lib OLDNAMES.lib && \
43+
cp libcmt.lib LIBCMT.lib && \
44+
cp delayimp.lib Delayimp.lib
45+
46+
WORKDIR "${WINDOWS_MSVC_DIR}/lib/x86"
47+
RUN \
48+
cp oldnames.lib OLDNAMES.lib && \
49+
cp libcmt.lib LIBCMT.lib && \
50+
cp delayimp.lib Delayimp.lib
51+
52+
# Some headers are named by the wrong name in the windows sdk's...
53+
# We need to make certain names lowercase because some users
54+
# have put "pragma lib" comments in some libraries :(
55+
# and/or misspelled header files
56+
WORKDIR "${WINDOWS_SDK_DIR}/Include/${WINDOWS_SDK_VERSION}/shared"
57+
RUN \
58+
cp driverspecs.h DriverSpecs.h && \
59+
cp specstrings.h SpecStrings.h && \
60+
cp concurrencysal.h ConcurrencySal.h && \
61+
cp wlantypes.h WlanTypes.h
62+
63+
WORKDIR "${WINDOWS_SDK_DIR}/Lib/${WINDOWS_SDK_VERSION}/um/x64"
64+
RUN cp psapi.lib Psapi.lib
65+
66+
WORKDIR "${WINDOWS_SDK_DIR}/Lib/${WINDOWS_SDK_VERSION}/um/x86"
67+
RUN cp psapi.lib Psapi.lib
68+
69+
# Also, the OpenGL headers in the windows SDK is in a folder with lower case letters, which doesn't match the includes
70+
WORKDIR "${WINDOWS_SDK_DIR}/Include/${WINDOWS_SDK_VERSION}/um"
71+
RUN \
72+
mkdir ./GL && \
73+
cp -v ./gl/*.* ./GL/
74+
75+
WORKDIR /
76+
77+
FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-wine-env:1.7.1
78+
79+
ARG PLATFORMSDK_WIN32
80+
ARG WINDOWS_SDK_VERSION
81+
ARG WINDOWS_MSVC_VERSION
82+
ARG WINDOWS_SDK_DIR
83+
ARG WINDOWS_MSVC_DIR
84+
85+
86+
ENV PLATFORMSDK_WIN32=${PLATFORMSDK_WIN32}
87+
ENV \
88+
WINDOWS_SDK_DIR=${WINDOWS_SDK_DIR} \
89+
WINDOWS_SDK_VERSION=${WINDOWS_SDK_VERSION} \
90+
WINDOWS_MSVC_VERSION=$WINDOWS_MSVC_VERSION} \
91+
VCINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026/VC" \
92+
VSINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026" \
93+
WINDOWS_MSVC_DIR=${WINDOWS_MSVC_DIR} \
94+
WINDOWS_VCINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026/VC/Tools/MSVC/${WINDOWS_MSVC_VERSION}" \
95+
WINDOWS_VSINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026"
96+
97+
COPY --from=build ${PLATFORMSDK_WIN32} ${PLATFORMSDK_WIN32}
98+
99+
# windres: Allows for generating .res files that can be used during linking
100+
# hadolint ignore=SC2016
101+
RUN \
102+
apt-get update && \
103+
apt-get install -y --no-install-recommends binutils-mingw-w64-x86-64 gcc && \
104+
ls -la /usr/bin/x86_64-w64-mingw32-windres && \
105+
ln -s /usr/bin/x86_64-w64-mingw32-windres /usr/local/bin/windres && \
106+
CLANG_EXEC="$(which clang)" && \
107+
LLVM_AR="$(which llvm-ar)" &&\
108+
ln -s "${CLANG_EXEC}" "$(dirname "${CLANG_EXEC}")/x86_64-pc-win32-clang" && \
109+
ln -s "${LLVM_AR}" "$(dirname "${LLVM_AR}")/x86_64-pc-win32-clang-ar" && \
110+
# Since dotnet cannot really cross compile, we need to create a "lib" shim for "wine lib.exe"
111+
# As long as it's in the path, it will be picked up
112+
echo '#!/usr/bin/env bash' > /usr/bin/lib && \
113+
echo 'wine ${WINDOWS_VCINSTALLDIR}/bin/Hostx64/x64/lib.exe $*' >> /usr/bin/lib && \
114+
chmod +x /usr/bin/lib && \
115+
apt-get autoremove -y && \
116+
apt-get clean && \
117+
rm -rf /var/lib/apt/lists/*

server/docker/Dockerfile.xbox.251002-env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ RUN --mount=type=secret,id=DM_PACKAGES_URL,required=true \
1313
mkdir -p "${XBOX_SDK}" && \
1414
wget -q -O - "$(cat /run/secrets/DM_PACKAGES_URL)/${XBOX_SDK_FILENAME}" | tar xz -C "${XBOX_SDK}" --strip-components=1
1515

16-
FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-winsdk-2022_144435207-env:1.1.1
16+
FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-winsdk-2026_145136231-env:1.0.0
1717

1818
ARG XBOX_SDK_VERSION
1919
ARG XBOX_SDK

server/docker/docker-compose.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,18 @@ services:
174174
default:
175175
aliases:
176176
- winsdk-2022_144435207
177+
win_2026_145136231-dev:
178+
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-winsdk-2026_145136231-env:latest
179+
extends:
180+
file: common-services.yml
181+
service: test_remote_builder
182+
profiles:
183+
- all
184+
- windows
185+
networks:
186+
default:
187+
aliases:
188+
- winsdk-2026_145136231
177189
xbox_251002-dev:
178190
image: europe-west1-docker.pkg.dev/extender-426409/extender-xbox-private-registry/extender-xbox-251002-env:latest
179191
extends:
@@ -279,6 +291,17 @@ services:
279291
default:
280292
aliases:
281293
- winsdk-2022_144435207
294+
win_2026_145136231-integration-test:
295+
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-winsdk-2026_145136231-env:latest
296+
extends:
297+
file: common-services.yml
298+
service: test_remote_builder
299+
profiles:
300+
- test
301+
networks:
302+
default:
303+
aliases:
304+
- winsdk-2026_145136231
282305

283306
# linux service for auth testing
284307
frontend-auth-test:

0 commit comments

Comments
 (0)