summaryrefslogtreecommitdiff
path: root/docs/libbpfgo-upgrade-plan.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/libbpfgo-upgrade-plan.md')
-rw-r--r--docs/libbpfgo-upgrade-plan.md154
1 files changed, 0 insertions, 154 deletions
diff --git a/docs/libbpfgo-upgrade-plan.md b/docs/libbpfgo-upgrade-plan.md
deleted file mode 100644
index 1969015..0000000
--- a/docs/libbpfgo-upgrade-plan.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# libbpfgo Upgrade Plan
-
-## Goal
-
-Upgrade `ior` from `github.com/aquasecurity/libbpfgo v0.6.0-libbpf-1.3.0...`
-to the latest tagged upstream release `v0.9.2-libbpf-1.5.1`, and align the
-repo's Go module, local static-link toolchain checkout, build instructions, and
-runtime validation on that same tag.
-
-## Current State
-
-- `go.mod` / `go.sum` now pin
- `github.com/aquasecurity/libbpfgo v0.9.2-libbpf-1.5.1`
-- `Magefile.go` defaults to the sibling checkout at `../libbpfgo` (local path:
- `/home/paul/git/libbpfgo`) and emits rebuild guidance if static
- artifacts are missing
-- The local checkout is currently ahead of the latest tag:
- `v0.9.2-libbpf-1.5.1-23-g9a319d2`
-- `README.md`, `AGENTS.md`, and `integrationtests/README.md` now pin the tag,
- sync the `libbpf` submodule, and document the rebuild or validation workflow
-- Integration coverage now passes again after restoring the legacy
- `-flamegraph` / `-name` compatibility path used by the harness to collect
- `.ior.zst` artifacts
-
-## Upgrade Target
-
-- Upstream tag: `v0.9.2-libbpf-1.5.1`
-- Local checkout to use for static headers/archive:
- `/home/paul/git/libbpfgo`
-- Repo-relative default checkout path used by `Magefile.go`: `../libbpfgo`
-- Override path for local experiments: `LIBBPFGO=/absolute/path/to/libbpfgo`
-- Do not target `libbpfgo` `main` as part of this upgrade unless a tagged
- release blocker is found
-
-## Pinned Source of Truth
-
-- `go.mod` / `go.sum` pin `github.com/aquasecurity/libbpfgo
- v0.9.2-libbpf-1.5.1`
-- `README.md`, `AGENTS.md`, and `integrationtests/README.md` document the same
- checkout, tag, validation commands, and `make libbpfgo-static` workflow
-- `Magefile.go` fails with explicit rebuild guidance when the local
- `libbpfgo` checkout is missing the static artifacts that `ior` expects
-- `internal/ior.go` preserves the legacy `-flamegraph` / `-name` trace-output
- path required by the integration harness while leaving TUI and `-plain`
- behavior unchanged
-
-## Breaking-Change Watchpoints
-
-- `v0.8.0-libbpf-1.5` includes a `BPFProg` API alignment change
-- `v0.9.1-libbpf-1.5.1` changes `AttachUprobe` /
- `AttachURetprobe` signatures
-- `libbpf` minimum version moves from `1.3.x` to `1.5.1`
-- Static builds require `git submodule update --init --recursive` in the local
- `libbpfgo` checkout before `make libbpfgo-static`
-
-`ior` appears to use a narrow subset of APIs:
-
-- module loading (`NewModuleFromFile`, `NewModuleFromBuffer`, `BPFLoadObject`)
-- maps (`GetMap`, `SetMaxEntries`, `InitGlobalVariable`)
-- ringbuf (`InitRingBuf`)
-- program lookup and tracepoint attach (`GetProgram`, `AttachTracepoint`)
-
-The direct API-break risk is therefore expected to be low, but compile/runtime
-validation is still required.
-
-## Implementation Workstreams
-
-1. Align the version source of truth
- - Pin `go.mod` / `go.sum` to `v0.9.2-libbpf-1.5.1`
- - Align the local checkout instructions in `README.md`
- - Align `AGENTS.md` and `Magefile.go` guidance with the same tag and rebuild flow
- - Ensure the local checkout is reset to the exact tag and rebuilt
-
-2. Rebuild the local static toolchain
- - In `/home/paul/git/libbpfgo`:
- - `git checkout v0.9.2-libbpf-1.5.1`
- - `git submodule update --init --recursive`
- - `make libbpfgo-static`
-
-3. Compile and fix `ior`
- - Rebuild `ior` against the upgraded wrapper and static `libbpf`
- - Fix any compile/API regressions in:
- - `internal/ior.go`
- - `internal/bpfsetup.go`
- - `internal/bpfembed.go`
- - any `probemanager` adapter code if signatures changed
-
-4. Validate behavior
- - Run `env GOTOOLCHAIN=auto mage world`
- - Run root-required `env GOTOOLCHAIN=auto mage integrationTest`
- - Specifically verify:
- - embedded `ior.bpf.o` loading still works
- - tracepoint attach/detach still works
- - ring buffer event ingestion still works
- - static build/link flags still work with the rebuilt local checkout
-
-5. Finalize docs and rollback guidance
- - Document the exact `libbpfgo` tag and rebuild commands
- - Mention the local checkout path used by `Magefile.go`
- - Add troubleshooting notes for submodule sync / static rebuild failures
- - Record the rollback target: `go.mod` pseudo-version
- `v0.6.0-libbpf-1.3.0.20240111220235-90dbffffbdab` plus local checkout
- commit `90dbffffbdab`
-
-## Validation Result
-
-- `env GOTOOLCHAIN=auto mage world` passed after the pinning commit
- `f28dab3`
-- `env GOTOOLCHAIN=auto mage integrationTest` passed after compatibility fix
- commit `28338f4`
-- The embedded-object path is covered by
- `env GOTOOLCHAIN=auto TEST_NAME=TestLoadBPFModuleUsesEmbeddedObjectByDefault mage testWithName`
-
-## Troubleshooting
-
-- Missing `bpf/bpf.h` or `libbpf` symbols usually means the sibling checkout is
- not at `v0.9.2-libbpf-1.5.1` or was not rebuilt after a `git checkout`.
-- Raw `go test` can still fail for packages that import `libbpfgo` because it
- does not inherit the `CGO_CFLAGS`, `CGO_LDFLAGS`, and `LIBBPFGO` values that
- `Magefile.go` sets up. Use Mage targets for validated flows.
-- If integration tests fail immediately with unknown `-flamegraph` /
- `-name` flags, rebuild `ior` from a checkout that includes commit `28338f4`.
-
-## Rollback
-
-If the tagged release proves insufficient, revert the `ior` side to
-`github.com/aquasecurity/libbpfgo
-v0.6.0-libbpf-1.3.0.20240111220235-90dbffffbdab`, reset the sibling checkout,
-and rebuild:
-
-```bash
-git -C /home/paul/git/libbpfgo checkout 90dbffffbdab
-git -C /home/paul/git/libbpfgo submodule update --init --recursive
-make -C /home/paul/git/libbpfgo libbpfgo-static
-```
-
-## Validation Commands
-
-- `GOTOOLCHAIN=auto mage test`
-- `GOTOOLCHAIN=auto mage world`
-- `GOTOOLCHAIN=auto mage integrationTest`
-
-## References
-
-- Repo files:
- - `go.mod`
- - `README.md`
- - `AGENTS.md`
- - `Magefile.go`
- - `internal/ior.go`
- - `internal/bpfsetup.go`
- - `internal/bpfembed.go`
-- Local toolchain checkout:
- - `/home/paul/git/libbpfgo`