Re: [RFC PATCH v4 00/19] Modernize the build system

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux