Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions server/build-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ for request in $REQUESTED; do
;;
windows)
# skip building winsdk-2022 because wine image contains newer Clang.
INSTALL="wine winsdk-2022_144435207"
INSTALL="wine winsdk-2022_144435207 winsdk-2026_145136231"
;;
xbox)
INSTALL="wine winsdk-2022_144435207 xbox-251002"
INSTALL="wine winsdk-2026_145136231 xbox-251002"
;;
linux)
INSTALL="linux"
Expand Down Expand Up @@ -82,8 +82,8 @@ for request in $REQUESTED; do
android)
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
;;
winsdk-2022_144435207)
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
winsdk-2026_145136231)
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
;;
android-ndk*|winsdk-*|emsdk-*)
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
Expand Down
3 changes: 3 additions & 0 deletions server/configs/application-local-dev-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ extender:
winsdk-2022_144435207:
url: http://winsdk-2022_144435207:9000
instanceId: winsdk-2022_144435207
winsdk-2026_145136231:
url: http://winsdk-2026_145136231:9000
instanceId: winsdk-2026_145136231
xbox-251002:
url: http://xbox-251002:9000
instanceId: xbox-251002
Expand Down
3 changes: 3 additions & 0 deletions server/configs/application-test-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ extender:
winsdk-2022_144435207:
url: http://winsdk-2022_144435207:9000
instanceId: winsdk-2022_144435207
winsdk-2026_145136231:
url: http://winsdk-2026_145136231:9000
instanceId: winsdk-2026_145136231
xbox-251002:
url: http://xbox-251002:9000
instanceId: xbox-251002
Expand Down
117 changes: 117 additions & 0 deletions server/docker/Dockerfile.winsdk.2026_145136231-env
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
ARG PLATFORMSDK_DIR=/opt/platformsdk
ARG PLATFORMSDK_WIN32=${PLATFORMSDK_DIR}/Win32
ARG WINDOWS_SDK_VERSION=10.0.28000.0
ARG WINDOWS_MSVC_VERSION=14.51.36231
ARG WINDOWS_SDK_DIR=${PLATFORMSDK_WIN32}/WindowsKits/10
ARG WINDOWS_MSVC_DIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026/VC/Tools/MSVC/${WINDOWS_MSVC_VERSION}"

FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-build-env:1.0.0 AS build

ARG PLATFORMSDK_WIN32
ARG WINDOWS_SDK_VERSION
ARG WINDOWS_MSVC_VERSION
ARG WINDOWS_SDK_DIR
ARG WINDOWS_MSVC_DIR

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

RUN \
apt-get update && \
apt-get install -y --no-install-recommends python3 python-is-python3

RUN --mount=type=secret,id=DM_PACKAGES_URL,required=true \
mkdir -p "${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026" && \
wget -q -O - "$(cat /run/secrets/DM_PACKAGES_URL)/Microsoft-Visual-Studio-2026-${WINDOWS_MSVC_VERSION}.tar.gz" | tar xz -C "${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026" && \
mkdir -p "${PLATFORMSDK_WIN32}/WindowsKits" && \
wget -q -O - "$(cat /run/secrets/DM_PACKAGES_URL)/WindowsKits-${WINDOWS_SDK_VERSION}.tar.gz" | tar xz -C "${PLATFORMSDK_WIN32}/WindowsKits"

COPY winsdk_rename_files.py ${PLATFORMSDK_WIN32}

# Due to Windows' case insensitive file system, the sources reference lib files with wrong cases
# so we solve the bulk by making the suffixes lowercase. (e.g. MyLib.Lib -> MyLib.lib)
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" ' {} \; && \
python ${PLATFORMSDK_WIN32}/winsdk_rename_files.py > ${PLATFORMSDK_WIN32}/rename.txt && \
# Make a copy of all the headers too, in lower case (e.g. Windows.h -> windows.h etc)
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" ' {} \; && \
# Make lower case links of libraries as well
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" ' {} \;

# and the rest are manually copied (or made lower case)
WORKDIR "${WINDOWS_MSVC_DIR}/lib/x64"
RUN \
cp oldnames.lib OLDNAMES.lib && \
cp libcmt.lib LIBCMT.lib && \
cp delayimp.lib Delayimp.lib

WORKDIR "${WINDOWS_MSVC_DIR}/lib/x86"
RUN \
cp oldnames.lib OLDNAMES.lib && \
cp libcmt.lib LIBCMT.lib && \
cp delayimp.lib Delayimp.lib

# Some headers are named by the wrong name in the windows sdk's...
# We need to make certain names lowercase because some users
# have put "pragma lib" comments in some libraries :(
# and/or misspelled header files
WORKDIR "${WINDOWS_SDK_DIR}/Include/${WINDOWS_SDK_VERSION}/shared"
RUN \
cp driverspecs.h DriverSpecs.h && \
cp specstrings.h SpecStrings.h && \
cp concurrencysal.h ConcurrencySal.h && \
cp wlantypes.h WlanTypes.h

WORKDIR "${WINDOWS_SDK_DIR}/Lib/${WINDOWS_SDK_VERSION}/um/x64"
RUN cp psapi.lib Psapi.lib

WORKDIR "${WINDOWS_SDK_DIR}/Lib/${WINDOWS_SDK_VERSION}/um/x86"
RUN cp psapi.lib Psapi.lib

# Also, the OpenGL headers in the windows SDK is in a folder with lower case letters, which doesn't match the includes
WORKDIR "${WINDOWS_SDK_DIR}/Include/${WINDOWS_SDK_VERSION}/um"
RUN \
mkdir ./GL && \
cp -v ./gl/*.* ./GL/

WORKDIR /

FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-wine-env:1.7.1

ARG PLATFORMSDK_WIN32
ARG WINDOWS_SDK_VERSION
ARG WINDOWS_MSVC_VERSION
ARG WINDOWS_SDK_DIR
ARG WINDOWS_MSVC_DIR


ENV PLATFORMSDK_WIN32=${PLATFORMSDK_WIN32}
ENV \
WINDOWS_SDK_DIR=${WINDOWS_SDK_DIR} \
WINDOWS_SDK_VERSION=${WINDOWS_SDK_VERSION} \
WINDOWS_MSVC_VERSION=$WINDOWS_MSVC_VERSION} \
VCINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026/VC" \
VSINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026" \
WINDOWS_MSVC_DIR=${WINDOWS_MSVC_DIR} \
WINDOWS_VCINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026/VC/Tools/MSVC/${WINDOWS_MSVC_VERSION}" \
WINDOWS_VSINSTALLDIR="${PLATFORMSDK_WIN32}/MicrosoftVisualStudio2026"

COPY --from=build ${PLATFORMSDK_WIN32} ${PLATFORMSDK_WIN32}

# windres: Allows for generating .res files that can be used during linking
# hadolint ignore=SC2016
RUN \
apt-get update && \
apt-get install -y --no-install-recommends binutils-mingw-w64-x86-64 gcc && \
ls -la /usr/bin/x86_64-w64-mingw32-windres && \
ln -s /usr/bin/x86_64-w64-mingw32-windres /usr/local/bin/windres && \
CLANG_EXEC="$(which clang)" && \
LLVM_AR="$(which llvm-ar)" &&\
ln -s "${CLANG_EXEC}" "$(dirname "${CLANG_EXEC}")/x86_64-pc-win32-clang" && \
ln -s "${LLVM_AR}" "$(dirname "${LLVM_AR}")/x86_64-pc-win32-clang-ar" && \
# Since dotnet cannot really cross compile, we need to create a "lib" shim for "wine lib.exe"
# As long as it's in the path, it will be picked up
echo '#!/usr/bin/env bash' > /usr/bin/lib && \
echo 'wine ${WINDOWS_VCINSTALLDIR}/bin/Hostx64/x64/lib.exe $*' >> /usr/bin/lib && \
chmod +x /usr/bin/lib && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
2 changes: 1 addition & 1 deletion server/docker/Dockerfile.xbox.251002-env
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ RUN --mount=type=secret,id=DM_PACKAGES_URL,required=true \
mkdir -p "${XBOX_SDK}" && \
wget -q -O - "$(cat /run/secrets/DM_PACKAGES_URL)/${XBOX_SDK_FILENAME}" | tar xz -C "${XBOX_SDK}" --strip-components=1

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


ARG XBOX_SDK_VERSION
ARG XBOX_SDK
Expand Down
23 changes: 23 additions & 0 deletions server/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,18 @@ services:
default:
aliases:
- winsdk-2022_144435207
win_2026_145136231-integration-dev:
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-winsdk-2026_145136231-env:latest
extends:
file: common-services.yml
service: test_remote_builder
profiles:
- all
- windows
networks:
default:
aliases:
- winsdk-2026_145136231
xbox_251002-dev:
image: europe-west1-docker.pkg.dev/extender-426409/extender-xbox-private-registry/extender-xbox-251002-env:latest
extends:
Expand Down Expand Up @@ -279,6 +291,17 @@ services:
default:
aliases:
- winsdk-2022_144435207
win_2026_145136231-integration-test:
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-winsdk-2026_145136231-env:latest
extends:
file: common-services.yml
service: test_remote_builder
profiles:
- test
networks:
default:
aliases:
- winsdk-2026_145136231

# linux service for auth testing
frontend-auth-test:
Expand Down