On 12/11/2024 17:02, Patrick Steinhardt wrote: > Hi, > > this patch series modernizes our build infrasturcture. It refactors > various parts of it to make it possible to perform out-of-tree builds in > theory. > > The series then continues to wire up Meson as a proposed alternative as > a modern replacement for our current build systems. It provides better > integration into IDEs than our Makefiles, better usability than our > Makefiles and CMake, better configuration and discoverability thereof > than autoconf and CMake (which is of course my personal opinion). > > The intent is to have Meson replace autoconf, which is mostly unused and > broken. Eventually, the plan would to also replace CMake and our > Makefiles in case we figure out that this replacement is indeed a net > benefit for the project, but all of this would happen over the course of > multiple releases. > > Changes in v6: > > - Add documentation for how to use Meson. > > - Fix compilation in case libintl exists, but required tools like > msgfmt and related don't. Instead of failing, we now automatically > compile with the equivalent of NO_GETTEXT=YesPlease. > > - Update last patch that fixes semantic merge conflics with in-flight > topics in "seen". > > - I've changed the series to be based on "master" at b31fb630c0 (Merge > https://github.com/j6t/git-gui, 2024-11-11) as all prereqs of this > series have since landed. This doesn't make any difference though > as there aren't any merge conflicts or additional changes caused by > this. I mostly mention this so that there is no confusion around the > changed base commit. > Tested this version, without issue, on Linux and cygwin (build + test). On cygwin, the unit test now no longer times out: $ cd git/build $ tail test-out 1030/1030 t9902-completion OK 114.74s Ok: 1030 Expected Fail: 0 Fail: 0 Unexpected Pass: 0 Skipped: 0 Timeout: 0 Full log written to /home/ramsay/git/build/meson-logs/testlog.txt $ Having said that, I was expecting to see an 'Unexpected Pass', since meson decides to not set NO_REGEX. (The 'make' build on cygwin will set 'NO_REGEX = UnfortunatelyYes' in the config.mak.uname). In the meson-logs/testlog.txt file, for the t7815-grep-binary.sh test stdout, we find: ----------------------------------- stdout ----------------------------------- ok 1 - setup ok 2 - git grep ina a ok 3 - git grep -ah ina a ok 4 - git grep -I ina a ok 5 - git grep -c ina a ok 6 - git grep -l ina a ok 7 - git grep -L bar a ok 8 - git grep -q ina a ok 9 - git grep -F ile a ok 10 - git grep -Fi iLE a ok 11 - git grep ile a ok 12 - git grep .fi a # TODO known breakage vanished ok 13 - grep respects binary diff attribute ok 14 - grep --cached respects binary diff attribute ok 15 - grep --cached respects binary diff attribute (2) ok 16 - grep revision respects binary diff attribute ok 17 - grep respects not-binary diff attribute ok 18 - setup textconv filters ok 19 - grep does not honor textconv ok 20 - grep --textconv honors textconv ok 21 - grep --no-textconv does not honor textconv ok 22 - grep --textconv blob honors textconv # 1 known breakage(s) vanished; please update test(s) # passed all remaining 21 test(s) 1..22 ============================================================================== Note the 'TODO known breakage vanished' on test 12. Setting NO_REGEX on cygwin is for 'reasons' (not necessarily good) and we need a way to override it's decision here. (In general, we need to be able to use *any* of the many build variables to override meson's automatic setting of these build variables). Thanks! ATB, Ramsay Jones