Skip to content

Feature proposal: configure the numeric part of the wheel build tag #1390

Closed as not planned

Description

@mikedep333

Allow callers to set the numeric part of the wheel build tag from an external
rebuild counter. Currently, Fromager derives it from the combined variant and
package changelog lengths. The existing
build_tag_hook
can append suffix segments but cannot supply the numeric part.

Add an optional per-package setting, proposed here as build_number, keyed by
public version (without the local version suffix; local-version keys are
rejected):

build_number:
  "1.2.3": 0
  "2.0": 7

For configured versions:

  • Use the nonnegative integer instead of changelog lengths, retaining the
    changelogs as history and preserving suffixes from build_tag_hook.
  • Make explicit zero produce a build tag with numeric part 0. A wheel without
    a build tag does not satisfy it.
  • Require the complete expected build tag in local and remote cache checks,
    consistently across bootstrap, build and build-sequence. Other build tags
    are cache misses, including those with a higher numeric part. See the related
    cache inconsistency in
    #1360.
  • Ensure installation into the build environment uses wheels with the expected
    build tags, including transitive dependencies. Selecting the correct cached
    wheel is insufficient if the installer can still choose a different build tag
    from the local package repository. Installation must fail when a required
    wheel with the expected build tag is unavailable.

Unconfigured versions retain their changelog-derived tags and cache-matching
behavior; pre-built wheels retain their original tags. Configuring any active
explicit build number switches build-environment dependency installation to
a local-only wheel view and reinstalls dependencies, so all required dependency
wheels must be available locally. The caller owns the external rebuild counter
and publication policy.

Related downstream work: RHAI-6526.

Activity

  1. added a commit that references this issue on Oct 22, 2026
    9b43f92
  2. tiran commented on Oct 23, 2026

    @tiran
    Collaborator

    @Lanceypantsy @rd4398 @mikedep333 Can somebody explain to me in 3 sentences why we need this in addition to the changelog entries?

  3. mikedep333 commented on Oct 23, 2026

    @mikedep333
    MemberAuthor

    I’ve moved this feature proposal to #1392 for review as a document in docs/proposals/, as requested in #1391. I’m closing this issue as superseded so the design discussion can continue on the proposal PR. The implementation remains in #1391 and will need to follow the agreed scope.

  4. rd4398 commented on Oct 23, 2026

    @rd4398
    Contributor

    3. @Lanceypantsy @rd4398 @mikedep333 Can somebody explain to me in 3 sentences why we need this in addition to the changelog entries?

    +1 to the ask. I saw this today and I don't know why this needed. Hence asked for a proposal first

  5. tiran commented on Oct 23, 2026

    @tiran
    Collaborator

    Before you write a proposal, can I have a 3 sentence elevator pitch that explains the problem, a concrete use case, and why we should replace the changelogs?

  6. mikedep333 commented on Oct 23, 2026

    @mikedep333
    MemberAuthor

    @tiran @rd4398 We want a saved build catalog to explicitly identify which wheel revision should be produced or reused, supporting repeatable build orchestration. For example, a catalog requesting build 1 should not require rewriting imported changelogs whose entries currently total 3. An optional build_number provides that control while preserving changelog-based defaults.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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