Repository navigation
Conversation
The controller is the jbpf IPC primary and the gNB the secondary, so both must
be built from the same jbpf. Instead of carrying a second jbpf as a submodule
and keeping its pin and patches in step with ocudu's by hand, build against
ocudu's external/jbpf (OCUDU_DIR, default ../ocudu-e3).
- Drop the jbpf submodule, apply_jbpf_patches.sh and jbpf_patches/; ocudu
owns the tree and its patches, and build.sh runs ocudu's idempotent
apply_jbpf_patches.sh over it.
- CMake: add_subdirectory(${JBPF_DIR}) with an explicit binary dir, ocudu's
jbpf options (JBPF_STATIC, JBPF_EXPERIMENTAL_FEATURES), and configure-time
warnings when jbpf is not at ocudu's pin or lacks the monotonic patch.
- Codelet Makefiles and the verifier take jbpf from the same place.
- build.sh: OCUDU_DIR, and LIBE3_PREFIX for installing libe3 without sudo.
- CI: fetch jbpf from the public wineslab/ocudu-e3 mirror.
Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
aferaudo
force-pushed
the
build/jbpf-from-ocudu
branch
from
October 7, 2026 01:00
a5eb38c to
b74eac5
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.
Summary
external/jbpf(the tree the gNB is built from) instead of its own jbpf submodule. The controller is the jbpf IPC primary and the gNB the secondary: both map one shared region and exchange one channel and message format, so they must be built from the same jbpf. Until now that depended on two pins and two copies of the patches staying in step by hand, and nothing checked it.jbpf_patches/,apply_jbpf_patches.sh). ocudu already carries them byte for byte, andbuild.shnow runs ocudu's idempotentapply_jbpf_patches.sh. CMake builds jbpf with ocudu's options and warns when jbpf is not at ocudu's pin or lacks the monotonic-clock patch.build.shgainsOCUDU_DIR(default../ocudu-e3) andLIBE3_PREFIX(install libe3 withoutsudo). CI takes jbpf from the publicwineslab/ocudu-e3mirror.Type of change
Linked issue
None. No issue was opened for this change.
Mandatory test checklist
The libe3 items are mapped to their E3Controller equivalents. Items that don't apply to this repository say so.
./build.shpasses.LIBE3_PREFIX=… E3C_CMAKE_ARGS=-DASN1C_EXECUTABLE=/opt/asn1c/bin/asn1c ./build.sh.ocudu-e3(e3@e22c8a1, jbpf pinb15dd03) was cloned next to the controller, as in CI.e3_controller/bench_stage_recordingbuilt.ctestsuite. Instead:e3_verifier_clibuilds.make -C codelets -Bcompiles both codelets against ocudu's jbpf, and both pass the verifier (ecpri_iq_collect: 496 instructions,uplink_slot_collect: 353).e3_controllerstarts and prints its usage.bench_stage_recordingagainsttests/native-memcpynot run yet (VM unreachable). No runtime code changed, so no difference is expected.VERSION: N/A. E3Controller has noVERSIONfile or public API.--install-depsis unchanged. The new requirement is an ocudu checkout withexternal/jbpfpopulated. The README documents it, and bothbuild.shandcmakestop with the setup commands when it's missing (both tested).libe3.pc: N/A, libe3 is unchanged.CI checklist
E3Controller runs one workflow,
build and measure, with noCI reportorCommit policyworkflows. Its equivalents:build and measureis green on both legs (latrec=on,latrec=off) for the previous heada5eb38c. That head had the same tree (ce83282); only the commit message changed. CI re-runs onb74eac5.scripts/check_commit_trailers.py --base origin/tests/native-memcpy --head HEAD: all 1 commit complies. AI assistance is disclosed withAssisted-by, and there are no AICo-authored-by/Signed-off-bytrailers.Twin-repo coordination
Paired change: the public mirror
wineslab/ocudu-e3needsjbpf_patches/jbpf_monotonic_time.patchand the currentapply_jbpf_patches.shfrom ocudu'se3branch, which already has both. Until then, CI builds normally and configure warns that the monotonic patch is missing. The controller doesn't need that patch; a gNB built from the same tree does. I checked that state on the VM by copying the current script and patch into the test clone:./build.shapplied the patch and configured with no warning.Paired PR: pending, to be mirrored into
ocudu-e3by the maintainer.Workflow confirmation
tests/native-memcpy(9cb0de4), with no merge commits (git log --merges origin/tests/native-memcpy..HEADis empty).CONTRIBUTING.md(libe3's, applied to this repository).Notes for reviewers
libckinside its own source tree (3p/ck), as it does in ocudu's build. Don't build ocudu and the controller at the same time from one checkout.jbpf/folder. Delete it by hand.OCUDU_DIR=/workspace/ocudu-jbpf ./build.sh.🤖 Generated with Claude Code