nandi/jolt-nativepublic Fork 0
3cfee15a9d938584f526f606f853771eaad7f56c
Commits
Clone
git clone https://git.rickub.com/nandi/jolt-native.git
git clone ssh://git@rickub.com/nandi/jolt-native.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

rbe.Dockerfile · 42 lines · 2.1 KBDocker Blame HistoryRaw
Carry the worker's own image, rather than borrow one that had the parts 089e6f7 nandi 18d ago1# The remote executor's image.
2#
3# buck2 fetches its own toolchains — zig, rustc, the Rust standard library, the
4# NDK — from the pins in scripts/*.dotslash, so almost nothing here has to be
5# installed. Almost: a handful of `-sys` crates ask pkg-config where a system
6# library is, and one of them then links against it.
7#
8# That is why this image exists rather than gcr.io/flame-public/rbe-ubuntu24-04,
9# which carries neither. Without pkg-config, alsa-sys's build script panics
10# before it can emit a single link directive; without libasound2-dev, the flags
11# it emits name a library the linker cannot find.
12#
13# 24.04 for the same reason the public image was pinned to it: a build script is
14# compiled here and *run* on the worker, and 22.04's glibc 2.35 is old enough to
15# fail that before a crate is compiled.
16FROM ubuntu:24.04
17
18# ca-certificates because an action fetches over TLS, and python3 because the
19# prelude's own Rust rules shell out to it — a dep-file pass runs on the worker,
20# not here. The rest is the system half of what the graph's build scripts look
21# for: alsa-sys asks pkg-config for libasound, and v4l2r runs bindgen over
22# `linux/videodev2.h`, which needs libclang to parse it and the kernel's own
23# headers to find it — and libc's own, since videodev2.h includes <sys/time.h>. A cargo build takes both from the justfile's environment,
24# which names this machine's zig headers — nothing a remote action inherits, so
25# the worker has to carry them.
26#
27# libclang1 and its builtin headers rather than libclang-dev, which drags the
28# whole clang toolchain in and took the image from 130 MB to 731 MB. bindgen
29# loads the library and reads those headers; it has no use for the compiler.
30#
31# Kept to what a build has actually asked for: an unused package here is an
32# image every action pulls.
33RUN apt-get update && apt-get install --no-install-recommends -y \
34 ca-certificates \
35 libasound2-dev \
36 libc6-dev \
37 libclang1-18 \
38 libclang-common-18-dev \
39 linux-libc-dev \
40 pkg-config \
41 python3 \
42 && rm -rf /var/lib/apt/lists/*