OXYGENHUB

Build image: coverage tools; recipe copies any vendor/ fad6152112b1

cargo-llvm-cov 0.9.1 and the toolchain's llvm-tools in the build image,
on the guest's PATH, so a job can write an LCOV report for the hub's
Coverage tab (oxygenhub#113); checked in the image with a job's cleared
environment and no network. recipe.py now copies a patched crate whole
from any vendor/ directory, not only the workspace's own: oxygenhub
patches crc-fast and iana-time-zone from its pinned oxygen's vendor/,
and the stubbed copies broke the image's prebuild. Image 7705d699,
imported on Earth and plex, pinned here.
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-10-05 16:13 UTC
Signature
✔ signed by Andy McCall
Hash
fad6152112b1a233d612513185a904d116fc9e83b25bfc96c418090f50a55eda
Depends on
78c45d1a752e 85ad9087a566 9c8820a50d7f eb5c4db673e5 eba589f87e4f f29b88af0d9b fe128fa67a06
Depended on by
28cc603f737d 0941bb8ac32b
In bookmarks
main newer-pipeline push-uses-login
In tags
v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.5.0 v0.5.1 v0.5.2 v0.5.3
Edits
7 atoms, 0 tree operations, 4 files

Browse the tree at this change

modified .flow/pipeline.kdl +2 −2
…
36 unchanged lines
37 37
// vendored crates. oxygen comes from the pinned subrepo in deps/.
38 38
sandbox "rust" {
39 39
    runtime "microvm"
40 -
    rootfs "cas://blob/affd50628428966adc46670047468d4471cd589b4b92ef889981b2587a4eeed1"
40 +
    rootfs "cas://blob/7705d699a4fc06862e4297b7069396cf3b5b35b1d3f15191c46dc2031af17133"
41 41
    memory-limit "8GiB"
42 42
    cpu-limit 4
43 43
    network "loopback"
…
1 unchanged lines
45 45
46 46
sandbox "rust-small" {
47 47
    runtime "microvm"
48 -
    rootfs "cas://blob/affd50628428966adc46670047468d4471cd589b4b92ef889981b2587a4eeed1"
48 +
    rootfs "cas://blob/7705d699a4fc06862e4297b7069396cf3b5b35b1d3f15191c46dc2031af17133"
49 49
    memory-limit "1GiB"
50 50
    cpu-limit 1
51 51
    network "isolated"
…
44 unchanged lines
modified images/rust/Dockerfile +9 −0
…
33 unchanged lines
34 34
 && ln -sf /opt/cargo-zigbuild/bin/cargo-zigbuild /usr/local/bin/cargo-zigbuild \
35 35
 && rm -rf /usr/local/cargo/registry /usr/local/cargo/git
36 36
37 +
# Coverage (oxygenhub#113): the toolchain's llvm-tools and cargo-llvm-cov,
38 +
# linked onto the guest's PATH. A job writes an LCOV report with
39 +
# `cargo llvm-cov --lcov --output-path /src/target/lcov.info` and declares it
40 +
# as its `coverage` artifact; the hub reads it.
41 +
RUN rustup component add llvm-tools-preview \
42 +
 && cargo install --locked --version 0.9.1 --root /opt/cargo-llvm-cov cargo-llvm-cov \
43 +
 && ln -sf /opt/cargo-llvm-cov/bin/cargo-llvm-cov /usr/local/bin/cargo-llvm-cov \
44 +
 && rm -rf /usr/local/cargo/registry /usr/local/cargo/git
45 +
37 46
ARG NODE_VERSION
38 47
ARG NODE_SHA256
39 48
ADD https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz /tmp/node.tar.xz
…
31 unchanged lines
modified images/rust/README.md +1 −0
…
4 unchanged lines
5 5
- Rust 1.97.1 with rustfmt and clippy.
6 6
- Node 24.21.0, checked against its published SHA-256.
7 7
- git, make and pkg-config.
8 +
- Coverage: llvm-tools and cargo-llvm-cov 0.9.1, so a job can write an LCOV report for the hub's Coverage tab.
8 9
- Release cross-building: the Windows, Linux arm64 and riscv64, and macOS targets, zig 0.16.0 (checked against its SHA-256), cargo-zigbuild and MinGW, with zip, so `scripts/dist.sh` runs in a job.
9 10
- Every crate that oxygen, oxygenhub and oxygenflow use, vendored in `/opt/vendor`.
10 11
…
42 unchanged lines
modified images/rust/recipe.py +4 −2
…
53 unchanged lines
54 54
        manifest = p["manifest_path"]
55 55
        src_dir = os.path.dirname(manifest)
56 56
        rel = os.path.relpath(src_dir, root)
57 -
        if p["id"] not in members and (rel == "vendor" or rel.startswith("vendor/")):
58 -
            # A third-party crate patched in from vendor/: registry crates
57 +
        if p["id"] not in members and "vendor" in rel.split(os.sep):
58 +
            # A third-party crate patched in from a vendor/ directory (the
59 +
            # workspace's own, or a pinned subrepo's, as oxygenhub patches
60 +
            # from deps/…/oxygen/vendor/): registry crates
59 61
            # with real code depend on it, so it goes in whole. (A pinned
60 62
            # subrepo's crates under deps/ are stubbed like the members:
61 63
            # only stubbed code depends on them.)
…
23 unchanged lines