OXYGENHUB

Release files built in OxygenFlow: a dist job b66a5c47cc61

scripts/dist.sh in the new build image (d2d24c22, with the cross
toolchains), scoped to Cargo.toml, the script and packaging, so a push
runs it when a release moves the version; its files are the run's
artifacts under version-free names (DIST_FLAT), attached to the release
from there, so the trust page shows them as built by the run.

refs #59
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-10-02 20:51 UTC
Signature
✔ signed by Andy McCall
Hash
b66a5c47cc618678127aee18cc04538accf895d108f3f6e2a37757c6b5eac92c
Depends on
0ad273ca4fcf 1931724b1d6b 25c6adfaa559 2b668d92b066
Depended on by
045340293dc7 8d6cf1f23694 a451982b1d34 77a2a6b3254d
In bookmarks
agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
In tags
v0.10.0 v0.11.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
Edits
5 atoms, 0 tree operations, 2 files

Browse the tree at this change

modified .flow/pipeline.kdl +56 −2
…
7 unchanged lines
8 8
// it when Cargo.lock changes.
9 9
sandbox "rust" {
10 10
    runtime "microvm"
11 -
    rootfs "cas://blob/a3b49f36a2ad1838219ea0b7985591e44ac0e6d7f92e9d993d3a3738263fe32e"
11 +
    rootfs "cas://blob/d2d24c2211f00d6ccf89fbee63095ad2a81d0cc9af92d7a0ede9129e18d46e91"
12 12
    memory-limit "8GiB"
13 13
    cpu-limit 4
14 14
    // Tests serve and connect on 127.0.0.1; nothing leaves the guest.
…
2 unchanged lines
17 17
18 18
sandbox "rust-small" {
19 19
    runtime "microvm"
20 -
    rootfs "cas://blob/a3b49f36a2ad1838219ea0b7985591e44ac0e6d7f92e9d993d3a3738263fe32e"
20 +
    rootfs "cas://blob/d2d24c2211f00d6ccf89fbee63095ad2a81d0cc9af92d7a0ede9129e18d46e91"
21 21
    memory-limit "1GiB"
22 22
    cpu-limit 1
23 23
    network "isolated"
…
45 unchanged lines
69 69
    }
70 70
    env {
71 71
        CARGO_INCREMENTAL "0"
72 +
73 +
// Release files for every platform (oxygen#59): scripts/dist.sh in the
74 +
// build image's cross toolchains. A push runs it only when it touches
75 +
// these paths (a release moves Cargo.toml's version); "Run pipeline" and
76 +
// reruns always do. The files are kept as this run's artifacts, named by
77 +
// its signed receipt, and attached to the release from there, so the
78 +
// release's trust page shows each as built here.
79 +
job "dist" {
80 +
    sandbox "rust"
81 +
    depends-on "fmt"
82 +
    scope "Cargo.toml" "scripts/dist.sh" "packaging/**"
83 +
    mount {
84 +
        source "ephemeral://disk"
85 +
        target "/src/target"
86 +
        size "24GiB"
87 +
    }
88 +
    env {
89 +
        DIST_FLAT "/src/target/dist-flat"
90 +
        ZIG_GLOBAL_CACHE_DIR "/src/target/zig-cache"
91 +
    }
92 +
    exec "bash" "scripts/dist.sh"
93 +
    output {
94 +
        artifact "oxy-linux-x86_64.tar.gz" {
95 +
            path "/src/target/dist-flat/oxy-linux-x86_64.tar.gz"
96 +
        }
97 +
        artifact "oxy-linux-arm64.tar.gz" {
98 +
            path "/src/target/dist-flat/oxy-linux-arm64.tar.gz"
99 +
        }
100 +
        artifact "oxy-linux-riscv64.tar.gz" {
101 +
            path "/src/target/dist-flat/oxy-linux-riscv64.tar.gz"
102 +
        }
103 +
        artifact "oxy-macos-x86_64.tar.gz" {
104 +
            path "/src/target/dist-flat/oxy-macos-x86_64.tar.gz"
105 +
        }
106 +
        artifact "oxy-macos-arm64.tar.gz" {
107 +
            path "/src/target/dist-flat/oxy-macos-arm64.tar.gz"
108 +
        }
109 +
        artifact "oxy-windows-x86_64.zip" {
110 +
            path "/src/target/dist-flat/oxy-windows-x86_64.zip"
111 +
        }
112 +
        artifact "oxy_amd64.deb" {
113 +
            path "/src/target/dist-flat/oxy_amd64.deb"
114 +
        }
115 +
        artifact "oxy_arm64.deb" {
116 +
            path "/src/target/dist-flat/oxy_arm64.deb"
117 +
        }
118 +
        artifact "oxy_riscv64.deb" {
119 +
            path "/src/target/dist-flat/oxy_riscv64.deb"
120 +
        }
121 +
        artifact "SHA256SUMS" {
122 +
            path "/src/target/dist-flat/SHA256SUMS"
123 +
        }
124 +
    }
125 +
}
72 126
    }
73 127
    exec "sh" ".flow/warm-target.sh" "cargo" "build" "--release" "--locked"
74 128
}
modified scripts/dist.sh +11 −0
…
128 unchanged lines
129 129
130 130
rm -rf "$OUT/stage"
131 131
(cd "$OUT" && shopt -s nullglob && sha256sum -- *.tar.gz *.zip *.deb >SHA256SUMS)
132 +
# DIST_FLAT=DIR: the same files again under names without the version, for
133 +
# a pipeline whose artifacts are fixed paths (the OxygenFlow dist job); the
134 +
# bytes are the release's, so its assets show as built by that job.
135 +
if [ -n "${DIST_FLAT:-}" ]; then
136 +
  mkdir -p "$DIST_FLAT"
137 +
  for f in "$OUT"/*.tar.gz "$OUT"/*.zip "$OUT"/*.deb "$OUT"/SHA256SUMS; do
138 +
    [ -e "$f" ] || continue
139 +
    b=$(basename "$f"); b=${b/-$VERSION-/-}; b=${b/_${VERSION}_/_}
140 +
    cp "$f" "$DIST_FLAT/$b"
141 +
  done
142 +
fi
132 143
echo "== $OUT"
133 144
ls -l "$OUT"