Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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-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