11# syntax=docker/dockerfile:1
2-
3- FROM ubuntu:26.04@sha256:f3d28607ddd78734bb7f71f117f3c6706c666b8b76cbff7c9ff6e5718d46ff64 AS extractor
2+ # hadolint global ignore=DL3006
43
54ARG BATS_CORE_VERSION=1.13.0
65ARG BATS_SUPPORT_VERSION=0.3.0
76ARG BATS_ASSERT_VERSION=2.2.4
7+ ARG XWIN_VERSION=0.8.0
8+
9+ # Downloader stage for AMD64 architecture
10+ FROM scratch AS downloader-amd64
11+
12+ ARG XWIN_VERSION
13+
14+ ADD --checksum=sha256:8a354e12475dd154d0a2d3084eefd2c105f872ec8062965baaa7e9f2f76fe611 \
15+ https://github.com/Jake-Shadle/xwin/releases/download/${XWIN_VERSION}/xwin-${XWIN_VERSION}-x86_64-unknown-linux-musl.tar.gz /xwin.tar.gz
16+
17+ # Downloader stage for ARM64 architecture
18+ FROM scratch AS downloader-arm64
19+
20+ ARG XWIN_VERSION
21+
22+ ADD --checksum=sha256:fe106caefbb316664d73fd03166c28c09e580bb2a3ad65b4d50c51c67368aeab \
23+ https://github.com/Jake-Shadle/xwin/releases/download/${XWIN_VERSION}/xwin-${XWIN_VERSION}-aarch64-unknown-linux-musl.tar.gz /xwin.tar.gz
24+
25+ # Select downloader stage based on target architecture.
26+ # trivy:ignore:AVD-DS-0001
27+ FROM downloader-${TARGETARCH} AS downloader
28+
29+ FROM ubuntu:26.04@sha256:f3d28607ddd78734bb7f71f117f3c6706c666b8b76cbff7c9ff6e5718d46ff64 AS extractor
30+
31+ ARG BATS_CORE_VERSION
32+ ARG BATS_SUPPORT_VERSION
33+ ARG BATS_ASSERT_VERSION
34+ ARG XWIN_VERSION
835
936ADD --checksum=sha256:a122d4080a26c1da986bd0e7202b1630eb661a624915ef244f496fdd306e85fb \
1037 https://www.cisco.com/security/pki/certs/ciscoumbrellaroot.pem /cisco-umbrella-root.crt
@@ -16,9 +43,11 @@ ADD --checksum=sha256:7815237aafeb42ddcc1b8c698fc5808026d33317d8701d5ec2396e9634
1643ADD --checksum=sha256:e305df20c4c36cba4570e10f1cd824efb1ae71d88b5ef474550781ebee04192f \
1744 https://github.com/bats-core/bats-assert/archive/refs/tags/v${BATS_ASSERT_VERSION}.tar.gz /bats-assert.tar.gz
1845
19- RUN tar xzf /bats-core.tar.gz && mv bats-core-*/ bats-core \
46+ RUN --mount=from=downloader,target=/dl \
47+ tar xzf /bats-core.tar.gz && mv bats-core-*/ bats-core \
2048 && tar xzf /bats-support.tar.gz && mv bats-support-*/ bats-support \
21- && tar xzf /bats-assert.tar.gz && mv bats-assert-*/ bats-assert
49+ && tar xzf /bats-assert.tar.gz && mv bats-assert-*/ bats-assert \
50+ && tar xzf /dl/xwin.tar.gz --strip-components=1 "xwin-${XWIN_VERSION}-$(uname -m)-unknown-linux-musl/xwin"
2251
2352FROM ubuntu:26.04@sha256:f3d28607ddd78734bb7f71f117f3c6706c666b8b76cbff7c9ff6e5718d46ff64
2453
@@ -51,10 +80,23 @@ RUN --mount=type=bind,source=.devcontainer/base/apt-requirements.json,target=/tm
5180 cp -r /src/bats-support /usr/local/bats-support
5281 cp -r /src/bats-assert /usr/local/bats-assert
5382
83+ # Install xwin
84+ cp /src/xwin /usr/local/bin/xwin
85+
5486 # Generate locale
5587 sed -i '/C.UTF-8/s/^# //' /etc/locale.gen
5688 locale-gen
5789
5890 # Patch root's bashrc to include bash-completion
5991 cp /etc/skel/.bashrc /root/.bashrc
6092EOF
93+
94+ # Download Windows SDK headers and libraries for cross-compilation
95+ RUN xwin --accept-license splat --include-debug-libs --preserve-ms-arch-notation --output /winsdk \
96+ && rm -rf /root/.xwin-cache
97+
98+ # Install Qt6 for Windows cross-compilation via aqtinstall (in a temporary venv)
99+ RUN python3 -m venv /tmp/aqt-venv \
100+ && /tmp/aqt-venv/bin/pip install --no-cache-dir aqtinstall==3.3.0 \
101+ && /tmp/aqt-venv/bin/aqt install-qt windows desktop 6.4.2 win64_msvc2019_64 --outputdir /opt/qt6-windows \
102+ && rm -rf /tmp/aqt-venv /tmp/aqt*
0 commit comments