On 11/11/24 5:36 AM, Patrick Steinhardt wrote: > On Sat, Nov 09, 2024 at 04:58:56AM -0800, David Aguilar wrote: >> The one thing that no one has mentioned is dependencies. >> >> CMake has less dependencies. Python is arguably a liability in the build >> system arena, and Meson requires it. > > Eli has menitoned [muon](https://muon.build/), which is a drop-in > replacement for Meson written in plain C99. I don't know whether it is > currently able to compile the Git project, but if this is going to be a > concern for people I can try to make sure that it does. I was wondering whether I should say something, because I don't really feel the criticism was on-target to begin with. But... I am delighted to be able to confirm, that muon works quite well here. It did require two small tweaks for not yet implemented features in muon, that meson had and which this patch series depends on: the iconv special dependency, which I provided a patch for: https://git.sr.ht/~lattis/muon/commit/75d33f6b6d482344d969e4ad6ce1527353f91cce using fallback from gnu99 to c11 for the sake of MSVC, which I reported and got the muon developer to implement: https://git.sr.ht/~lattis/muon/commit/a70e9687f3bfb8b9c21baf9acdfe84f97a42b11f (Note the commit author dates by the way. I had the same general thought about whether muon could satisfy git users such as, frankly, ones more interesting to me than "python has too many dependencies". Such as perhaps HPE NonStop users, and I tried muon out a month ago. Yes -- even though I am a *meson* maintainer, I consider this a useful alternative to have. Meson's FAQ includes discussion about whether it makes sense to require Python, and notes that we specifically avoided providing any "provide your own python extensions" functionality because it would prevent being able to ever rewrite in another not-python language. We also document muon as an alternative in our FAQ.) With these two small changes, muon compiles git successfully, and passes all tests but one: running tests for project 'git' 1030/1030 f:1 s:0 j:1 [===========================================================================================================================================================================================] finished 1030 tests, 0 expected fail, 1 fail, 0 skipped fail 9.32s t5324-split-commit-graph stdout: 'ok 1 - setup repo ok 2 - tweak umask for modebit tests ok 3 - create commits and write commit-graph ok 4 - check normal git operations: graph exists ok 5 - add more commits, and write a new base graph ok 6 - fork and fail to base a chain on a commit-graph file ok 7 - add three more commits, write a tip graph ok 8 - check normal git operations: split commit-graph: merge 3 vs 2 ok 9 - add one commit, write a tip graph ok 10 - check normal git operations: three-layer commit-graph: commit 11 vs 6 ok 11 - add one commit, write a merged graph ok 12 - check normal git operations: merged commit-graph: commit 12 vs 6 ok 13 - create fork and chain across alternate ok 14 - check normal git operations: alternate: commit 13 vs 6 ok 15 - test merge stragety constants ok 16 - remove commit-graph-chain file after flattening ok 17 - verify hashes along chain, even in shallow ok 18 - verify notices chain slice which is bogus (base) ok 19 - verify notices chain slice which is bogus (tip) ok 20 - verify --shallow does not check base contents ok 21 - warn on base graph chunk incorrect ok 22 - verify after commit-graph-chain corruption (base) ok 23 - verify after commit-graph-chain corruption (tip) ok 24 - verify notices too-short chain file ok 25 - verify across alternates ok 26 - reader bounds-checks base-graph chunk ok 27 - add octopus merge ok 28 - check normal git operations: graph exists ok 29 - split across alternate where alternate is not split ok 30 - --split=no-merge always writes an incremental ok 31 - --split=replace replaces the chain not ok 32 - handles file descriptor exhaustion # # git init ulimit && # ( # cd ulimit && # for i in $(test_seq 64) # do # test_commit $i && # run_with_limited_open_files test_might_fail git commit-graph write \ # --split=no-merge --reachable || return 1 # done # ) # ok 33 - split commit-graph respects core.sharedrepository 0666 ok 34 - split commit-graph respects core.sharedrepository 0600 ok 35 - --split=replace with partial Bloom data ok 36 - prevent regression for duplicate commits across layers ok 37 - setup repo for mixed generation commit-graph-chain ok 38 - do not write generation data chunk if not present on existing tip ok 39 - do not write generation data chunk if the topmost remaining layer does not have generation data chunk ok 40 - write generation data chunk if topmost remaining layer has generation data chunk ok 41 - write generation data chunk when commit-graph chain is replaced ok 42 - temporary graph layer is discarded upon failure # failed 1 among 42 test(s) 1..42 ' -- Eli Schwartz
Attachment:
OpenPGP_signature.asc
Description: OpenPGP digital signature