Repository navigation
Metababel 2.0.0 lttng 2.16 - #123
Merged
Merged
Conversation
… stack
THAPI records raw bytes as lttng-ust 2.16 BLOB fields from 0.0.17 on. Before
that it traced them as text and needed both halves of a work-around to read
them back: lttng-ust's 55cca69.diff, which wrote an array or sequence of text
in full rather than stopping at the first NUL, and babeltrace2's null-character
patch, which let the reader run past that NUL.
Both patches stay, for the builds that want them.
- ruby-metababel 2.0.0, which generates the BLOB field classes and MIP-1
field locations THAPI needs.
- lttng-ust and lttng-tools 2.16.0.
- 55cca69.diff capped at 2.15, the last lttng-ust without blobs.
- babeltrace2's null-character patch becomes the +text-as-bytes variant
rather than a version range. Which one a build wants depends on the THAPI
being built, not on the babeltrace release: 2.1.2 serves both, and a
version cap would have forced older THAPI off it for no reason. On a
blob-era THAPI the patch is not merely unnecessary but wrong -- it makes a
genuine ctf_string read past its terminator, and THAPI still traces real
char text.
- thapi@:0.0.16 is held to lttng-ust/lttng-tools @:2.15 and asks for
babeltrace2 +text-as-bytes; devel and master take a stock 2.16 stack.
Archive mode follows the same split. lttng-tools gains a 2.16.0-archive
version, the ANL branch carrying the pause/resume commands rebased onto 2.16,
alongside the 2.14.0-archive one that released versions keep. babeltrace2
already has 2.1.2-archive; that branch now also carries the fix for the crash
that made the archive component unusable against a live session.
+archive is on by default from 0.0.17: reading archives on the fly is what the
pause/resume back-pressure loop exists for, so devel and master get it unless
built with ~archive. Released versions keep it opt-in, and their 2.14-era
branches.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The published gem is 0.1.5, from March 2025. BLOB field support and the MIP-1 field locations landed in July 2026 and have not been released, so a THAPI that records raw bytes as blobs cannot read its own traces with any released version: the pretty-printer raises "unsupported field class type" on the first blob field it meets. Add a version built from the branch, as babeltrace2 itself carries its -archive versions, and have thapi@0.0.17: depend on it. Released THAPI is untouched and keeps the gem. Drop both once a release carries those commits. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Concretization silently reused the installed pre-BLOB stack. Each of these is a version floor that was missing or too low, so spack was free to satisfy a blob-era THAPI with dependencies that cannot build it: - lttng-ust had only an upper bound (@:2.15 for the pre-BLOB releases) and no floor for the blob era, so an installed 2.14 was reused. lttng-tools was unaffected only because it already carried an explicit 2.16.0-archive lower bound. - ruby-metababel asked for @1.1.4:, a floor the old version already satisfies. BLOB codegen and the MIP-1 field locations it emits are 2.0.0; older metababel dies on the generated yaml with `unknown keyword: :length_field_location`. - babeltrace2 was constrained only under +archive, so a ~archive blob build had no floor at all. The bt_field_class_blob_* API is 2.1. - lttng-tools gained 2.16 versions without a matching lttng-ust pin. 2.16's configure asks for `lttng-ust >= 2.16 lttng-ust < 2.17` and stops there, so without the pin spack reuses 2.14 and the build dies in configure. Spack also orders `master` and `develop` as infinity versions -- both compare greater than any number -- so `@0.0.17:` silently caught `master` too, and master is still 0.0.16 code that would have been handed a stack it cannot build against. The two eras are now named once at module scope, PRE_BLOB and BLOB, with `99` capping the numeric side so develop is the only infinity version the blob era admits. Move `master` from PRE_BLOB to BLOB when 0.0.17 is released.
thapi@0.0.12 failed to build: metababel died with `unknown keyword:
length_field_path`. metababel 2.0.0 is a breaking change -- a dynamic length is
named by a structured length_field_location now -- and the floors in this
recipe are open-ended (`@1.1.2:`), so the solver handed 2.0.0 to a THAPI whose
models still emit the old key. Cap the pre-blob era at `@:1`.
Two more constraints named the pre-blob era by a literal range that stops at
0.0.16, and spack orders `master` as an infinity version greater than any
number, so each silently excluded it:
- lttng-ust/lttng-tools `@:2.15` applied `when="@0.0.8:0.0.16"`, so master
concretized against an unpatched 2.16 rather than the 2.15 stack its code
needs. master is v0.0.16 today.
- the `archive` variant was declared `when="@0.0.13:0.0.16"`, so +archive was
an unknown variant on master and `thapi@master+archive` would not
concretize at all. Pre-existing; no CI job pairs master with +archive.
These keep a lower bound, so they cannot reuse PRE_BLOB directly -- spack
rejects two version constraints on one spec. They get hand-intersected ranges
that keep the `master` PRE_BLOB names.
Verified by concretizing the CI matrix plus variants against this repo: 0.0.12
picks metababel 1.1.4 (2.0.0 before this change), master drops to lttng 2.14.0,
master+archive concretizes, and develop still takes metababel 2.0.0 with the
2.16 stack. The codegen failure was reproduced directly against the installed
2.0.0 gem, which accepts length_field_location and raises on
length_field_path.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
TApplencourt
force-pushed
the
metababel-2.0.0-lttng-2.16
branch
from
October 1, 2026 23:28
d4b21e3 to
78d2388
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.