Skip to content

feat(rules): pin the popili version per target with popili_version - #231

Draft
GPLeemrijse wants to merge 1 commit into
feat/popili-diagnosticsfrom
feat/popili-version-pin
Draft

GPLeemrijse wants to merge 1 commit into
feat/popili-diagnosticsfrom
feat/popili-version-pin

Conversation

@GPLeemrijse

Copy link
Copy Markdown
Contributor

coco_generate, coco_verify_test, coco_fmt_test (and its .format companion) and the three diagram rules gain popili_version, an optional version or alias.

  • A rule transition on every popili-resolving rule (also coco_package, the runtimes, current_popili_version and fetch_license) resolves aliases in both the pin and --@rules_coco//:version and sets the flag for the target and everything beneath it. The rule resolves the pinned toolchain itself, and the coco_package it reads is analysed with the same version. Nothing forwards toolchains between targets.
  • --@rules_coco//:version=stable now works and shares the configuration of the plain version. A pin equal to the flag leaves the configuration untouched, and a pin wins over the flag.
  • An internal setting records that the version came from a pin, so the package beneath a pinned consumer, which fails first when the version has no toolchain, says "pinned by popili_version" instead of blaming the flag.
  • README "Popili Version" is rewritten around pins. e2e/multi_version and e2e/forward_compat select versions with pins instead of wrappers or the .bazelrc flag; test/popili_pinning covers pins, aliases and configuration sharing with real popili runs.

@GPLeemrijse
GPLeemrijse added this pull request to stack #232 October 16, 2026 14:23
@GPLeemrijse
GPLeemrijse force-pushed the feat/popili-version-pin branch from 35e68f1 to ae59809 Compare October 16, 2026 14:39
@GPLeemrijse
GPLeemrijse force-pushed the feat/popili-version-pin branch from ae59809 to 0cc393f Compare October 16, 2026 15:02
coco_generate, coco_verify_test, coco_fmt_test (and its .format companion) and
the three diagram rules gain popili_version, an optional version or alias. A
rule transition on every popili-resolving rule (also coco_package, the
runtimes, current_popili_version and fetch_license) resolves aliases in both
the pin and --@rules_coco//:version and sets the flag for the target and
everything beneath it, so the rule resolves the pinned toolchain itself, the
coco_package it reads is analysed with the same version, and
--@rules_coco//:version=stable works and shares the configuration of the plain
version; a pin equal to the flag leaves the configuration untouched and a pin
wins over the flag. The transition also records in an internal setting that
the version came from a pin, so the package beneath it, which fails first when
the version has no toolchain, says "pinned by popili_version" instead of
blaming the flag. e2e/multi_version and e2e/forward_compat select versions
with pins instead of wrappers or the .bazelrc flag.
@GPLeemrijse
GPLeemrijse force-pushed the feat/popili-version-pin branch from 0cc393f to 2383dab Compare October 16, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant