Skip to content

Route configured prebuilt profiles through bootstrap and wheel downloads #1208

Open

Description

@smoparth

Summary
Make pypi-prebuilt and hook-prebuilt follow the prebuilt wheel path, while using the selected source resolver to download a wheel when one is needed.

Context
Both profiles declare resolves_prebuilt_wheel=True. Today, PackageBuildInfo.pre_built only reads the legacy variant setting, so bootstrap treats a configured prebuilt profile as a source build. The existing prebuilt paths also call wheels.download_wheel() directly. Changing only the prebuilt decision would still bypass hook-prebuilt’s download hook.
Bootstrap and later build commands run separately, so both must honor the configured profile. Legacy pre_built packages must keep their current behavior.

Acceptance Criteria

  • When source: is configured, the prebuilt decision uses source_resolver.resolves_prebuilt_wheel. Without source:, it uses the existing legacy setting.
  • pypi-prebuilt and hook-prebuilt skip source preparation and source-build phases. The dependency graph and build order record them as prebuilt.
  • When either configured profile needs a fresh wheel, its resolver’s download() contract supplies the wheel path. An installed hook-prebuilt download hook runs; the profile’s existing default runs when that hook is absent.
  • Bootstrap and commands that fetch wheels from a build order honor that download contract. Intentional reuse of an existing wheel remains possible.
  • A result with a kind other than prebuilt_wheel, or a download-hook failure, produces a clear error rather than falling back to a different downloader.
  • Tests cover both configured profiles, hook present and absent, build-order replay, and unchanged legacy prebuilt behavior.

Activity

  1. self-assigned this
    on Oct 23, 2026
  2. changed the title [-]Wire pypi-prebuilt source resolver into bootstrapper pre-built detection[/-] [+]Route configured prebuilt profiles through bootstrap and wheel downloads[/+] on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

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