Skip to content

Commit e7ecc7e

Browse files
Merge branch 'main' into feature/embedded-devcontainer-cpp/update-vscode-extensions-devcontainer-metadata.json
2 parents 0ee71b0 + 49756ed commit e7ecc7e

5 files changed

Lines changed: 72 additions & 9 deletions

File tree

.devcontainer/base/Dockerfile

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,37 @@
11
# syntax=docker/dockerfile:1
2-
3-
FROM ubuntu:26.04@sha256:f3d28607ddd78734bb7f71f117f3c6706c666b8b76cbff7c9ff6e5718d46ff64 AS extractor
2+
# hadolint global ignore=DL3006
43

54
ARG BATS_CORE_VERSION=1.13.0
65
ARG BATS_SUPPORT_VERSION=0.3.0
76
ARG 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

936
ADD --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
1643
ADD --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

2352
FROM 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
6092
EOF
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*

.devcontainer/base/apt-requirements.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
"ca-certificates": "20260223",
44
"git": "1:2.53.0-1ubuntu1",
55
"gnupg2": "2.4.8-4ubuntu3",
6+
"gnuplot-qt": "6.0.2+dfsg1-2ubuntu2",
7+
"libgl1-mesa-dev": "26.0.3-1ubuntu1",
8+
"libxcb-cursor0": "0.1.6-1",
9+
"libxcb-xinerama0": "1.17.0-2ubuntu1",
10+
"libxkbcommon-dev": "1.13.1-1",
11+
"libxkbcommon-x11-0": "1.13.1-1",
612
"locales": "2.43-2ubuntu2",
13+
"python3-venv": "3.14.3-0ubuntu2",
14+
"qt6-base-dev": "6.10.2+dfsg-7",
715
"udev": "259.5-0ubuntu3",
816
"wget": "1.25.0-2ubuntu4",
917
"xz-utils": "5.8.3-1"

.devcontainer/cpp/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ RUN --mount=type=bind,source=.devcontainer/cpp/apt-requirements-base.json,target
120120

121121
# Install some tools via pip to get more recent versions, clean up afterwards
122122
python3 -m pip install --break-system-packages --require-hashes --no-cache-dir --no-compile -r /tmp/requirements.txt
123-
find / -regex '^.*\(__pycache__\|\.py[co]\)$' -delete
124-
rm -rf "$(pip cache dir)"
123+
find / -xdev -regex '^.*\(__pycache__\|\.py[co]\)$' -delete 2>/dev/null || true
124+
python3 -m pip cache purge 2>/dev/null || true
125125

126126
# Install ccache and xwin
127127
cp /src/ccache /usr/local/bin/ccache

.devcontainer/cpp/requirements.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,9 @@ gcovr==8.6 \
184184
--hash=sha256:b2e7042abca9321cadbab8a06eb34d19f801b831557b28cdc30a029313de8b9e \
185185
--hash=sha256:dbf9d87c38042752ad6f530aa8210427e22b526611bb7b7bfed0e81977d1f1ef
186186
# via -r requirements.in
187-
idna==3.11 \
188-
--hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
189-
--hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
187+
idna==3.15 \
188+
--hash=sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8 \
189+
--hash=sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc
190190
# via requests
191191
jinja2==3.1.6 \
192192
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \

test/base/integration-tests.bats

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,16 @@ setup() {
1212
assert_success
1313
assert_output --partial "OK"
1414
}
15+
16+
@test "xwin is installed and runnable" {
17+
assert [ -x /usr/local/bin/xwin ]
18+
}
19+
20+
@test "windows sdk headers and libraries are present under /winsdk" {
21+
assert [ -d /winsdk/crt ]
22+
assert [ -d /winsdk/sdk ]
23+
}
24+
25+
@test "qt6 for windows cross-compilation is present under /opt/qt6-windows" {
26+
assert [ -d /opt/qt6-windows/6.4.2/msvc2019_64 ]
27+
}

0 commit comments

Comments
 (0)