rust-xwin (latest)

Published 2025-11-14 17:05:27 +01:00 by lucas in lucas/rust-xwin

Installation

docker pull git.sclu1034.dev/lucas/rust-xwin:latest
sha256:6f6c9395f7670660c7f8179bef3907fca5159cfac6b57fb1aebf1ab11ed4783e

About this package

A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries

Image layers

# debian.sh --arch 'amd64' out/ 'trixie' '@1762202650'
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates curl gnupg netbase sq wget ; apt-get dist-clean # buildkit
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends git mercurial openssh-client subversion procps ; apt-get dist-clean # buildkit
RUN /bin/sh -c set -ex; apt-get update; apt-get install -y --no-install-recommends autoconf automake bzip2 default-libmysqlclient-dev dpkg-dev file g++ gcc imagemagick libbz2-dev libc6-dev libcurl4-openssl-dev libdb-dev libevent-dev libffi-dev libgdbm-dev libglib2.0-dev libgmp-dev libjpeg-dev libkrb5-dev liblzma-dev libmagickcore-dev libmagickwand-dev libmaxminddb-dev libncurses5-dev libncursesw5-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libtool libwebp-dev libxml2-dev libxslt-dev libyaml-dev make patch unzip xz-utils zlib1g-dev ; apt-get dist-clean # buildkit
LABEL org.opencontainers.image.source=https://github.com/rust-lang/docker-rust
ENV RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo PATH=/usr/local/cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin RUST_VERSION=1.91.1
RUN /bin/sh -c set -eux; arch="$(dpkg --print-architecture)"; case "$arch" in 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c'; ;; 'armhf') rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='3b8daab6cc3135f2cd4b12919559e6adaee73a2fbefb830fadf0405c20231d61'; ;; 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c'; ;; 'i386') rustArch='i686-unknown-linux-gnu'; rustupSha256='a5db2c4b29d23e9b318b955dd0337d6b52e93933608469085c924e0d05b1df1f'; ;; 'ppc64el') rustArch='powerpc64le-unknown-linux-gnu'; rustupSha256='acd89c42b47c93bd4266163a7b05d3f26287d5148413c0d47b2e8a7aa67c9dc0'; ;; 's390x') rustArch='s390x-unknown-linux-gnu'; rustupSha256='726b7fd5d8805e73eab4a024a2889f8859d5a44e36041abac0a2436a52d42572'; ;; 'riscv64') rustArch='riscv64gc-unknown-linux-gnu'; rustupSha256='09e64cc1b7a3e99adaa15dd2d46a3aad9d44d71041e2a96100d165c98a8fd7a7'; ;; *) echo >&2 "unsupported architecture: $arch"; exit 1; ;; esac; url="https://static.rust-lang.org/rustup/archive/1.28.2/${rustArch}/rustup-init"; wget --progress=dot:giga "$url"; echo "${rustupSha256} *rustup-init" | sha256sum -c -; chmod +x rustup-init; ./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host ${rustArch}; rm rustup-init; chmod -R a+w $RUSTUP_HOME $CARGO_HOME; rustup --version; cargo --version; rustc --version; # buildkit
LABEL org.opencontainers.image.authors=Lucas Schwiderski
LABEL org.opencontainers.image.url=https://git.sclu1034.dev/lucas/rust-xwin
LABEL org.opencontainers.image.source=https://git.sclu1034.dev/lucas/rust-xwin
LABEL org.opencontainers.image.licenses=EUPL-1.2
LABEL org.opencontainers.image.title=rust-xwin
LABEL org.opencontainers.image.description=A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries
ARG LLVM_VERSION=20
ENV KEYRINGS=/usr/local/share/keyrings
RUN |1 LLVM_VERSION=20 /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends build-essential ca-certificates gpg nodejs zstd ; mkdir -p $KEYRINGS; curl -Ls "https://apt.llvm.org/llvm-snapshot.gpg.key" | gpg --dearmor > $KEYRINGS/llvm.gpg; echo "deb [signed-by=$KEYRINGS/llvm.gpg] http://apt.llvm.org/trixie/ llvm-toolchain-trixie-${LLVM_VERSION} main" > /etc/apt/sources.list.d/llvm.list; dpkg --add-architecture i386; apt-get update; apt-get install --no-install-recommends --no-install-suggests -y libclang-${LLVM_VERSION}-dev gcc-mingw-w64-x86-64 clang-${LLVM_VERSION} llvm-${LLVM_VERSION} lld-${LLVM_VERSION} wine wine32 wine64 libwine libwine:i386 ; ln -s clang-${LLVM_VERSION} /usr/bin/clang && ln -s clang /usr/bin/clang++ && ln -s lld-${LLVM_VERSION} /usr/bin/ld.lld; ln -s clang-${LLVM_VERSION} /usr/bin/clang-cl && ln -s llvm-ar-${LLVM_VERSION} /usr/bin/llvm-lib && ln -s lld-link-${LLVM_VERSION} /usr/bin/lld-link; clang++ -v; ld.lld -v; llvm-lib -v; clang-cl -v; lld-link --version; update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100; update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100; update-alternatives --install /usr/bin/ld ld /usr/bin/ld.lld 100; rustup toolchain install nightly; rustup default nightly; rustup target add x86_64-pc-windows-msvc; rustup component add rust-src; rm -rf /var/lib/apt/lists/* /root/*.key; # buildkit
COPY /usr/bin/xwin /usr/bin/xwin # buildkit
ENV XWIN_DIR=/xwin
ENV CC_x86_64_pc_windows_msvc=clang-cl CXX_x86_64_pc_windows_msvc=clang-cl AR_x86_64_pc_windows_msvc=llvm-lib WINEDEBUG=-all CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUNNER=wine CL_FLAGS=-Wno-unused-command-line-argument -fuse-ld=lld-link /imsvc/xwin/crt/include /imsvc/xwin/sdk/include/ucrt /imsvc/xwin/sdk/include/um /imsvc/xwin/sdk/include/shared CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER=lld-link CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUSTFLAGS=-Lnative=/xwin/crt/lib/x86_64 -Lnative=/xwin/sdk/lib/um/x86_64 -Lnative=/xwin/sdk/lib/ucrt/x86_64 XDG_RUNTIME_DIR=/tmp
ENV CFLAGS_x86_64_pc_windows_msvc=-Wno-unused-command-line-argument -fuse-ld=lld-link /imsvc/xwin/crt/include /imsvc/xwin/sdk/include/ucrt /imsvc/xwin/sdk/include/um /imsvc/xwin/sdk/include/shared CXXFLAGS_x86_64_pc_windows_msvc=-Wno-unused-command-line-argument -fuse-ld=lld-link /imsvc/xwin/crt/include /imsvc/xwin/sdk/include/ucrt /imsvc/xwin/sdk/include/um /imsvc/xwin/sdk/include/shared
WORKDIR /src
RUN |1 LLVM_VERSION=20 /bin/sh -c wine wineboot --init # buildkit

Labels

Key Value
org.opencontainers.image.authors Lucas Schwiderski
org.opencontainers.image.created 2025-11-14 16:05:23+00:00
org.opencontainers.image.description A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries
org.opencontainers.image.licenses EUPL-1.2
org.opencontainers.image.revision 7f8157df016696e861e3744d886b9e4eff9188ce
org.opencontainers.image.source https://git.sclu1034.dev/lucas/rust-xwin
org.opencontainers.image.title rust-xwin
org.opencontainers.image.url https://git.sclu1034.dev/lucas/rust-xwin
org.opencontainers.image.version 1.91.1-20
version 1.91.1-20
Details
Container
2025-11-14 17:05:27 +01:00
27
OCI / Docker
linux/amd64
Lucas Schwiderski
EUPL-1.2
2.1 GiB
Versions (2) View all
1.91.1-20 2025-11-14
latest 2025-11-14