A Docker image to be used by CI systems to cross-compile Rust applications to Windows binaries
| # debian.sh --arch 'amd64' out/ 'trixie' '@1789689600' |
| 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.98.1 |
| RUN /bin/sh -c set -eux; arch="$(dpkg --print-architecture)"; case "$arch" in 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupSha256='dda7234360b7f578ca8b0ddcb80145646fa61a67c1720a5abc7051b35c9fcb71'; ;; 'armhf') rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='6f34abb0d553273ce08306ea3adb758d0171f21090cc5ad5426f474ded5504d1'; ;; 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupSha256='15f6e4ce9f583b929c996c91562bad6d4454f3281de858b02cdfdef615fac433'; ;; 'i386') rustArch='i686-unknown-linux-gnu'; rustupSha256='5b993042a9f0d3577592f08cb76f8b850951487c2556d90f6e9846abbb083a88'; ;; 'ppc64el') rustArch='powerpc64le-unknown-linux-gnu'; rustupSha256='86ebc5b46b20013fca57dff4f83aa0c325ee90914626ce1c80ae76e126e48afb'; ;; 's390x') rustArch='s390x-unknown-linux-gnu'; rustupSha256='312ac9390467fd7870f8aff6557c7cb3bff0a04bb11b263173fdfd81586da641'; ;; 'riscv64') rustArch='riscv64gc-unknown-linux-gnu'; rustupSha256='e94134ed99fed1a3a1f13a3bf0a05d616fc1c2496ec0b557aaee4856cd34b2f2'; ;; *) echo >&2 "unsupported architecture: $arch"; exit 1; ;; esac; url="https://static.rust-lang.org/rustup/archive/1.29.1/${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=22 |
| ENV KEYRINGS=/usr/local/share/keyrings |
| RUN |1 LLVM_VERSION=22 /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=22 /bin/sh -c wine wineboot --init # buildkit |
| Key |
Value |
| org.opencontainers.image.authors |
Lucas Schwiderski |
| org.opencontainers.image.created |
2026-09-21 13:52:16+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 |
54eea64479048b41baec841c122573845c579aaa |
| 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.98.1-22 |
| version |
1.98.1-22 |