Skip to content

replace build_bench_env.sh with a Makefile#243

Open
derSteFfi wants to merge 94 commits into
daanx:masterfrom
derSteFfi:build_with_makefile
Open

replace build_bench_env.sh with a Makefile#243
derSteFfi wants to merge 94 commits into
daanx:masterfrom
derSteFfi:build_with_makefile

Conversation

@derSteFfi

@derSteFfi derSteFfi commented Aug 7, 2025

Copy link
Copy Markdown
Contributor

pushing this draft as a starter to get your opinions - I'll be on vacation the next weeks and won't be working on it anyway. There are a few open tasks, but the general vibe should already come across. Feedback very welcome.

Decisions made:

  • VERSIONS: demand versions instead of reporting them in the end
  • switched from git cloning to grabbing a snapshot of the reqeuested version from github
  • dh: move build directory (dh/src/build -> dh/build)
  • lua: moved to extern benchmarks because it is built in extern/
  • benchmarks: if something is updated, CMakeLists.txt needs to be touched (or replaced with a Makefile longterm)
  • sm: instead of default target, switched to building supermalloc only
  • linux: updated version to LTS series
  • lean: switched to smaller build target

TODO

  • put archives in extra storage after versionizing them (see here) docker caches these already
  • adapt CI-scripts to use Makefile
  • package installation
    • document in README: bazel5 missing, rest is done
    • move to CI instead of build_bench_env.sh
  • bench.sh needs to be adapted in the way it finds 'installed allocators' -- fixed in Detect allocators present and functional #247

open Questions:

  1. partial_checkout
    1. scudo
    2. lp Also, github does not serve archives on that repo. Re-add when solved.
  2. pa: re-add, but smaller? (see here), but: Add partitionalloc #184
  3. sed patches in Makefile: port to proper patch? at least gd, hd, rp are patched with sed right now, we could port that to a patch

@derSteFfi derSteFfi changed the title replace build_bench_env.sh with a Makefile Draft: replace build_bench_env.sh with a Makefile Aug 7, 2025
@derSteFfi derSteFfi marked this pull request as draft August 7, 2025 13:35
@derSteFfi

Copy link
Copy Markdown
Contributor Author

one ToDo I forgot in notes: tar can exclude files from extraction. The current shell-script does delete a few folders in a few repositories - we could modify the tar call to not extract them in the first place.

@derSteFfi derSteFfi force-pushed the build_with_makefile branch 2 times, most recently from 1f4928c to ffbdf87 Compare September 25, 2025 14:34
@derSteFfi

Copy link
Copy Markdown
Contributor Author

the remaining CI failures are not specific to the Makefile but actual problems, so marking this ready.

@derSteFfi derSteFfi marked this pull request as ready for review October 7, 2025 13:01
Comment thread Dockerfile
Comment thread Makefile
Comment thread Makefile Outdated
Comment thread Makefile Outdated
@jvoisin jvoisin requested review from Copilot, daanx and mjp41 October 7, 2025 14:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR replaces the build_bench_env.sh script with a Makefile-based build system to improve consistency and maintainability. The change switches from git cloning to downloading versioned archives from GitHub and centralizes version management.

Key changes:

  • Replace shell script with comprehensive Makefile for building allocators and benchmarks
  • Introduce VERSIONS file to centralize version management across all components
  • Move package installation documentation from script to README with per-distribution instructions

Reviewed Changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
build-bench-env.sh Add python-six dependency for ArchLinux package installation
bench.sh Update library paths and remove hardcoded version variables
VERSIONS New file defining versions and sources for all allocators and benchmarks
README.md Replace build script documentation with Makefile usage and detailed dependency lists
Makefile New comprehensive build system with targets for all allocators and benchmarks
Dockerfile Update to use Makefile instead of build script and add package installations
.github/workflows/all.yml Remove Fedora exclusion from CI matrix

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread build-bench-env.sh Outdated
Comment thread Makefile Outdated
Comment thread README.md Outdated

@mjp41 mjp41 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking pretty tidy. Thanks for working on this.

Comment thread Makefile Outdated
Comment thread Makefile Outdated
Comment thread Makefile Outdated
Comment thread Makefile Outdated
Comment thread Makefile Outdated
Comment thread VERSIONS Outdated
Comment thread Makefile Outdated
Comment thread Makefile

@mjp41 mjp41 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the changes.

@jvoisin, @derSteFfi I don't want to hold these changes holding off on fixing issues for individual allocators/platforms. But I really like to only have a Green CI. Thoughts?

Comment thread Makefile Outdated
Comment thread Makefile
Comment thread Makefile Outdated
@derSteFfi

Copy link
Copy Markdown
Contributor Author

Absolutely agree. I still have at least scudo and lp on my list and will re-check all comments here afterwards. With that fixed, I would also be pro-merging to make it easier to hunt individual bugs. The branch-switching sometimes takes time, and we would have a clear stand - fixing individual things is much easier than to always have to model the whole process.

@derSteFfi derSteFfi force-pushed the build_with_makefile branch from 0266c64 to 2d0082e Compare October 13, 2025 13:22
@derSteFfi

Copy link
Copy Markdown
Contributor Author

@jvoisin the MR is up-to-date with master - what do you think about merging?

@jvoisin

jvoisin commented Apr 7, 2026

Copy link
Copy Markdown
Collaborator

~All the tests are failing :/

@derSteFfi

Copy link
Copy Markdown
Contributor Author

sorry, missed a reference to build-bench-env.sh. Should be fixed.

@jvoisin

jvoisin commented Apr 7, 2026

Copy link
Copy Markdown
Collaborator

There are still a bunch of failures it seems

@derSteFfi

Copy link
Copy Markdown
Contributor Author

these are the same we have on master, except that fedora is deactivated in the CI on master (don't remember why). alpine base container and ubuntu/tcg fail with master, too.

@jvoisin

jvoisin commented Apr 7, 2026

Copy link
Copy Markdown
Collaborator

Then it does look good to me. I'll let @daanx hit the merge button as it's his project :)

@derSteFfi derSteFfi force-pushed the build_with_makefile branch from d0028ed to 90a3c8a Compare July 9, 2026 10:11
@derSteFfi

Copy link
Copy Markdown
Contributor Author

re-synced with master. Also added rmalloc and fixed sc. Would love to not have to resolve merge conflicts like these every few months...

@derSteFfi derSteFfi changed the title Draft: replace build_bench_env.sh with a Makefile replace build_bench_env.sh with a Makefile Jul 9, 2026
@derSteFfi

Copy link
Copy Markdown
Contributor Author

I missed a few bumps in the merge, should be synchronized now.

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.

5 participants