Skip to content

Build on Ubuntu 26.04: libe3 0.2.5 and yaml-cpp 0.9.0 - #15

Merged
aferaudo merged 2 commits into
mainfrom
deps/libe3-0.2.5
Nov 2, 2026
Merged

aferaudo merged 2 commits into
mainfrom
deps/libe3-0.2.5

Conversation

@aferaudo

@aferaudo aferaudo commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • CI fails on every push since ubuntu-latest became ubuntu-26.04 (GCC 15.2, CMake 4.4).
    • asn1c, which libe3's installer builds from source, is miscompiled by GCC 15 at -O2 and segfaults while generating the E3AP sources.
    • libe3 0.2.5 builds asn1c with -fno-strict-aliasing. Its install stamp also changes, so CI's cached asn1c is rebuilt.
  • yaml-cpp 0.8.0 does not configure with CMake 4. It declares cmake_minimum_required(VERSION 3.4); yaml-cpp 0.9.0 declares 3.5...3.30 and is otherwise a bug-fix release.
    • The config loader checks every key before converting it and catches std::exception, so 0.9.0's new exception type for a missing key does not reach it.
  • libe3 0.2.0 → 0.2.5 does not change the E3AP grammar, so the controller still talks to dApps built against older libe3.
    • The other changes do not reach the controller: dApp and subscription ids up to 65535, any non-zero request id echoed, I/O-thread pinning in the C API, and the Python binding installed with pip.

Tested: the workflow's own steps, replayed in amd64 containers, pass in both legs on:

  • ubuntu:26.04 with CMake 4.4.4, against ocudu-e3 with jbpf_io_socket_include.patch;
  • ubuntu:24.04 with CMake 3.31.6.

Type of change

  • Bug fix
  • New feature / enhancement
  • New Service Model
  • Refactor (no behavior change)
  • Documentation
  • Test / CI / packaging
  • Other (explain):

Linked issue

None.

Twin-repo coordination

  • This PR does not change the E3 wire protocol or public ABI.

On ubuntu-26.04 jbpf itself needs a fix. It is on ocudu-e3's e3 branch as jbpf_patches/jbpf_io_socket_include.patch, which this build applies through ocudu's apply_jbpf_patches.sh.

🤖 Generated with Claude Code

CI fails on every push since ubuntu-latest became ubuntu-26.04: build.sh
builds asn1c from source through libe3's build_libe3, GCC 15 miscompiles
asn1c at -O2, and asn1c segfaults while generating libe3's E3AP sources.
libe3 0.2.5 builds asn1c with -fno-strict-aliasing and stamps the install
with the new flags, so an asn1c built by an older pin is rebuilt.

The E3AP grammar is the same as in 0.2.0, so the controller still talks
to dApps built against older libe3. The other changes since 0.2.0 do not
reach the controller: dApp and subscription ids now come from 1..65535
and any non-zero request id is echoed, the C API gains I/O-thread pinning,
and the Python binding is installed through pip.

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
yaml-cpp 0.8.0 declares cmake_minimum_required(VERSION 3.4), and CMake 4
no longer configures a project that asks for less than 3.5, so the
controller's configure stops in the fetched yaml-cpp. ubuntu-26.04 ships
CMake 4 (4.2 from apt, 4.4 on the GitHub runner). yaml-cpp 0.9.0 asks for
3.5...3.30 and is otherwise a bug-fix release; the config loader checks
each key before converting it and catches std::exception, so the new
exception type for a missing key does not reach it.

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
@aferaudo
aferaudo merged commit a6507f8 into main Nov 2, 2026
2 checks passed
@aferaudo
aferaudo deleted the deps/libe3-0.2.5 branch November 2, 2026 20:31
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