This commit is contained in:
Mateusz Gruszczyński committed 2026-09-29 14:07:21 +02:00
1 parent 093e6a7c14
commit 1a2a5f0faf
24 files changed
+578 -537

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
# syntax=docker/dockerfile:1
# FreeBSD 15.1 sysroot used only for headers and target libraries.
FROM ubuntu:24.04 AS sysroot
ARG FREEBSD_RELEASE=15.1-RELEASE
ARG FREEBSD_MIRROR=https://download.freebsd.org/releases/amd64/amd64
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates wget xz-utils \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /tmp/freebsd
RUN set -eux; \
url="${FREEBSD_MIRROR}/${FREEBSD_RELEASE}"; \
wget -q "${url}/base.txz" -O base.txz; \
wget -q "${url}/MANIFEST" -O MANIFEST; \
expected="$(awk '$1 == "base.txz" { print $2; exit }' MANIFEST)"; \
test -n "$expected"; \
echo "$expected base.txz" | sha256sum -c -; \
mkdir -p /freebsd-sysroot; \
tar -xJf base.txz -C /freebsd-sysroot ./lib ./usr/include ./usr/lib
# RustProxy requires rust-version = 1.88.
FROM rust:1.88-slim-bookworm AS builder
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates clang lld llvm file git perl pkg-config python3 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=sysroot /freebsd-sysroot /opt/freebsd-sysroot
RUN rustup target add x86_64-unknown-freebsd
ENV CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_LINKER=clang \
CC_x86_64_unknown_freebsd=clang \
CXX_x86_64_unknown_freebsd=clang++ \
AR_x86_64_unknown_freebsd=llvm-ar \
RANLIB_x86_64_unknown_freebsd=llvm-ranlib \
RUST_PROXY_PYTHON=python3 \
CFLAGS_x86_64_unknown_freebsd="--target=x86_64-unknown-freebsd15.1 --sysroot=/opt/freebsd-sysroot" \
CXXFLAGS_x86_64_unknown_freebsd="--target=x86_64-unknown-freebsd15.1 --sysroot=/opt/freebsd-sysroot" \
CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_RUSTFLAGS="-C link-arg=--target=x86_64-unknown-freebsd15.1 -C link-arg=--sysroot=/opt/freebsd-sysroot -C link-arg=-fuse-ld=lld"
WORKDIR /src
CMD ["bash"]