-
Notifications
You must be signed in to change notification settings - Fork 31
feat!: ship one binary — bundle exec-harness and memtrack, drop the LD_PRELOAD hack #531
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
moha-bekh
wants to merge
27
commits into
main
Choose a base branch
from
spike/cod-3440-memtrack-musl
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
27 commits
Select commit
Hold shift + click to select a range
5abd69c
chore(memtrack): add argp.h stub for musl builds
moha-bekh 51bb339
ci: add throwaway COD-3440 musl check workflow
moha-bekh 331541e
feat(exec-harness)!: remove the LD_PRELOAD hack
moha-bekh f539a42
fix(instrument-hooks): never fall back to the noop impl on Linux
moha-bekh 48d370f
ci: add throwaway COD-3218 exec-harness check workflow
moha-bekh 4edc228
ci: trigger the COD-3218 check on spike branch pushes
moha-bekh 59c9756
ci: fix three wrong assertions in the COD-3218 check
moha-bekh 11785e4
ci: sweep benchmark size to test the fixed-overhead model
moha-bekh d7d36be
revert: restore measure.rs and shared.rs to their state on main
moha-bekh b631658
fix(valgrind): track subprocesses for exec-harness runs
moha-bekh c43aaba
build(memtrack): move the portable half of the musl recipe into cargo…
moha-bekh 21525d5
test(memtrack): resolve libc symbols in a child, not in the test process
moha-bekh 6bb8b75
ci: cover both arches in the COD-3440 musl check, and scope its CFLAGS
moha-bekh 728fdde
refactor(exec-harness,memtrack): move each CLI into its crate's lib
moha-bekh 5c8807b
feat(runner): bundle exec-harness as a subcommand instead of download…
moha-bekh 7368b6a
feat(runner): bundle memtrack too, and drop the download machinery
moha-bekh 763c894
build(memtrack): put the whole musl recipe in the cargo config
moha-bekh 36afa18
build(exec-harness,memtrack): stop releasing the component crates
moha-bekh a05e42e
ci: catch up with memtrack and exec-harness being bundled
moha-bekh 6fdfd07
docs(contributing): drop the component-crate release process
moha-bekh 3ce6305
test(executor): serialize the tests that share the global runner FIFOs
moha-bekh c87836c
test(local): fail loudly when a git setup command fails
moha-bekh 2ec7cee
ci: drop the two throwaway spike workflows
moha-bekh 069fbab
docs(exec-harness,executor): cut two comments that narrate the change
moha-bekh 99827e6
fix(cli): stop honouring CODSPEED_SELF_EXE outside tests
moha-bekh c862935
fix(cli): dispatch bundled subcommands before any runner setup
moha-bekh 8e2d7e3
ci: build both musl targets on every pull request
moha-bekh File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| # What a musl build of the bundled `memtrack` needs. Refs COD-3440. | ||
| # | ||
| # `libbpf-sys` vendors elfutils, whose `configure` unconditionally looks for | ||
| # `argp`, `obstack` and `fts`. musl ships none of them, so the checks fail and | ||
| # the build stops before it reaches libelf — even though a libelf-only build | ||
| # never calls into any of them. Pre-seeding autoconf's cache skips the three | ||
| # checks. "none required" is the answer a glibc host reaches on its own, so | ||
| # these are unconditional rather than per-target; on gnu they only save three | ||
| # `configure` probes. | ||
| # | ||
| # Applies to everything below: cargo does *not* override a variable already set | ||
| # in the environment unless the entry carries `force = true`. A shell exporting | ||
| # `CFLAGS` or `CPATH` therefore loses these values, and the musl build fails on | ||
| # a missing <argp.h> or <asm/types.h>. They are left unforced so a caller who | ||
| # sets them deliberately keeps them; no CI job does. | ||
| [env] | ||
| ac_cv_search_argp_parse = "none required" | ||
| ac_cv_search__obstack_free = "none required" | ||
| ac_cv_search_fts_close = "none required" | ||
|
|
||
| # Where the `argp.h` stub lives. `CPATH` rather than `CFLAGS -I<path>`, because | ||
| # `relative = true` can only make a *bare* path absolute and a `CFLAGS` value | ||
| # has nowhere to put the `-I`. It resolves against the project root — the | ||
| # directory holding `.cargo/`, not `.cargo/` itself. | ||
| # | ||
| # Not target-scoped, so the stub is on the gnu build's include path too; the | ||
| # header defers to the real <argp.h> whenever it detects glibc. | ||
| CPATH = { value = "crates/memtrack/musl", relative = true } | ||
|
|
||
| # libbpf includes <asm/unistd.h> and <asm/types.h>. Debian's musl-gcc runs with | ||
| # -nostdinc and only sees /usr/include/<arch>-linux-musl, so the kernel UAPI | ||
| # headers from linux-libc-dev have to be added back. `-idirafter` puts them last, | ||
| # behind musl's own, which is what keeps a glibc build unaffected. | ||
| # | ||
| # Both Debian multiarch triplets are listed because `[env]` cannot branch on the | ||
| # host architecture. A `-idirafter` naming a directory that does not exist is | ||
| # ignored silently, so the wrong one does nothing — as do both off Debian. | ||
| CFLAGS = "-idirafter /usr/include/x86_64-linux-gnu -idirafter /usr/include/aarch64-linux-gnu -idirafter /usr/include" | ||
|
|
||
| # rustc links with `-nodefaultlibs`, so gcc does not pull in libgcc. On aarch64, | ||
| # libbpf's C code needs the outline-atomic helpers (`__aarch64_ldadd4_sync` and | ||
| # friends) that live there, and the link fails without it. x86_64 has no such | ||
| # helpers and needs nothing. | ||
| [target.aarch64-unknown-linux-musl] | ||
| rustflags = ["-C", "link-arg=-lgcc"] |
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
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.