Skip to content

RFC: date-pinned nightly toolchain packages (e.g. rust-lang.org/nightly@YYYYMMDD) to unblock from-source builds #13320

Description

@tannevaled

Problem

Several from-source recipes are blocked because the upstream pins a specific Rust nightly that pantry's stable rust-lang.org can't satisfy:

  • tikvrust-toolchain.tomlchannel = "nightly-2023-12-28" (I just landed a vendored tikv.org in new(tikv.org): distributed transactional KV store (vendored) #13319 as a stopgap; from-source needs the pinned nightly).
  • buck2 — also nightly-pinned (and its tags are rolling/dated).
  • Generally any project whose rust-toolchain.toml pins a dated nightly.

Today the only options are "vendor the upstream binary" (works, but not from-source) or "hope stable compiles" (usually fails on nightly-only features).

Proposal (for discussion)

A date-pinned nightly toolchain package, e.g. rust-lang.org/nightly, versioned by date. static.rust-lang.org serves dated nightly components for all our platforms — confirmed live:

https://static.rust-lang.org/dist/2023-12-28/rust-nightly-aarch64-unknown-linux-gnu.tar.xz   → 200
.../cargo-nightly-aarch64-unknown-linux-gnu.tar.gz                                            → 200
.../rustc-nightly-x86_64-apple-darwin.tar.gz                                                  → 200

So a vendored recipe could pull the rust-nightly-<triple> tarball, versioned YYYYMMDD (e.g. 20231228). A from-source recipe then build-deps on the matching pin, e.g. rust-lang.org/nightly: =20231228.

Questions

  1. Desirable in-pantry, or do you prefer keeping nightly-pinned projects as vendored-binary only?
  2. Naming — rust-lang.org/nightly (single, date-versioned) vs per-tool toolchain packages?
  3. Versioning scheme — YYYYMMDD from the dist date directory?
  4. Concerns about bottle proliferation / nightly churn (we'd only build the specific dates that consumers pin)?

Floating this before implementing. cc @jhheider

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions