git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
David Aguilar <davvid@gmail.com>
Date
Nov 13, 2024, 09:21 UTC
Message-ID
<ZzRvsOeLsq3dJbGw@gmail.com>
In-Reply-To
<ZzHeMjqUjzWpdX-Y@pks.im>
On Mon, Nov 11, 2024 at 11:36:34AM +0100, Patrick Steinhardt wrote:
Show 37 quoted lines
> On Sat, Nov 09, 2024 at 04:58:56AM -0800, David Aguilar wrote:
> > That said, if we mean, "Linux/Unix-savvy New Contributors," then
> > I can understand why Meson might be a favorite, and perhaps this
> > might be the crowd we are looking to target [...]
> 
> My goal is to not only make things easier to use for Linux users, but
> also for users on other platforms like Windows while also catering to
> the typical developer of Git and making the solution for them as tasty
> as possible.
> 
> I agree that CMake is a tad easier to use and set up on Windows, mostly
> because it is directly integrated into MSVC. But I also think that CMake
> is a harder sell towards the power users because it is comparatively
> hard to maintain due to its somewhat arcane syntax, implicit variables
> and things like this.
> 
> So I'm basically trying to find a good middle ground where all of the
> respective target audiences get benefit:
> 
>   - For Unix devs I think that Meson is easier to maintain and use
>     compared to CMake. We also get nice features like out-of-source
>     builds, good integration with the test suite and easy integration
>     with IDEs.
> 
>   - For Windows devs we have an officially supported way to build Meson
>     from MSVC and co. Also, subprojects allow us to have as easy story
>     for how to build Git without preinstalled dependencies, which is not
>     currently possible with CMake to the best of my knowledge.
> 
>   - For packagers I think that Meson provides better discoverability of
>     options than CMake.
> 
> So Meson may not be the perfect solution for everyone of these target
> audiences, and better solutions may exist to cater specific needs. But
> it provides a net benefit for every single one of these audiences from
> my point of view. And when taking the benefits for all target audiences
> combined I think that Meson provides the bigger win compared to CMake.

Thanks for clarifying. Not that it matters, but you've convinced me. Constructive criticism follows below in the hope that it can help you further harden the arguments for Meson.

Show 16 quoted lines
> > > Patrick Steinhardt wrote:
> > > >   - Packagers. This is another group of people that would benefit from
> > > >     my point of view. This is mostly because Meson has certain standards
> > > >     for how to approach problems, and thus the packager would know for
> > > >     how to handle things. They don't have to manually track build
> > > >     options and changes thereof, as these can be easily discovered and
> > > >     because Meson will error out in case invalid options are passed.
> > 
> > CMake's option() variables and its GNUInstallDirs module pretty much
> > handles all of the standardization that packagers are looking for on
> > this front, so this argument doesn't push the needle towards Meson over
> > CMake from my perspective.
> 
> I think that discoverability of Meson is way better. Here you can simply
> say `meson configure` and it provides you a nice list of all options
> that are available. For CMake it always used to be a big pain.
The pain of discovering options with CMake is true in the general case.

A specific project can enforce conventions so that all option()s are specified at the top of the main build script or a designated file specifically for options. That would trivially make the options easily discoverable in that there's only a single place to look, but that's nowhere near the rigor that Meson enforces.

Following a sensible convention is why I didn't originally vibe with the argument that option()s are insufficient, but that would merely be one project's conventions and is by no means a universal practice.

Elsewhere in this thread it was also mentioned that unknown options are blindly accepted by CMake. That's actually not true.

While it's not as rigorous as Meson because it doesn't error out by default, CMake does issue a warning when you specify variables/options that are not used by the project. IIRC this warning can be made into an error by using the "cmake -Werror=dev" option, but I appreciate Meson taking the stricter route as it results in better overall usability.

Show 22 quoted lines
> > > Taylor Blau wrote:
> > > I appreciate your thoughtful response to my concerns here. Please feel
> > > free to correct me if I am wrong, but I think the bulk of your argument
> > > is captured fairly well by these three points, so I want to focus my
> > > response here.
> > > 
> > > Responding in turn, I think my feeling is something like:
> > > 
> > >   - Long-time Git contributors are going to be the ones who will most
> > >     frequently use the new build system. I am definitely sympathetic to
> > >     getting too comfortable with our existing tools, but so far in your
> > >     response I have not seen a compelling reason to switch the project
> > >     to use Meson.
> > 
> > Likewise, I have not seen a compelling reason to not focus the
> > effort on CMake instead. In other words, why not enhance the current
> > status quo (Make + CMake) instead of trying to replace it?
> 
> As mentioned above, I mostly think that Meson makes for a more
> compelling overall package. That being said, if we eventually come to
> the conclusion that we as a community want CMake instead of Meson, then
> I am willing to go there.

I hope that's not where things land because the separation of configuration vs. build steps does provide a benefit in day-to-day use (specifically, faster incremental builds) due to the clean separation of the configuration and build steps.

It seems like it would be nice if the Meson build were eventually hooked up so that we can continue typing "make prefix=... install" (perhaps through an opt-in "enable meson" variable) and the Makefile would handle driving Meson + Ninja, but that's probably an untenable feature given the complexity of the current Makefile.

If the Makefile were completely replaced one day then that would be a nice to have, but it would probably be a bad crutch because the natural tendency would be to shadow all of Meson's options behind Makefile knobs. Encouraging users to just run meson directly seems like a better overall situation. Bisecting is the only reason why something like that might seem appealing, but I probably wouldn't push for it myself and maybe there's a better way to handle that when we cross that bridge.

Show 26 quoted lines
> > >       * New contributors do not interact with build system internals
> > >         nearly as much as more experienced contributors. I would imagine
> > >         that the vast majority of those interactions are simply running
> > >         "make" or "make test".
> > > 
> > >         You mention a handful of other niceties that Meson provides,
> > >         like language server support, but I am not sure that I agree
> > >         those are (a) the responsibility of the build system to provide,
> > >         or (b) that those needs aren't already well met by the vast
> > >         number of existing tools and IDE integrations that can work with
> > >         ctags.
> > 
> > CMake has all of these same bells and whistles, and it's already present
> > in git.git. LSP support just means being able to generate a
> > compile_commands.json file, and the current CMake setup already does
> > that.
> > 
> > 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.
Thanks both for confirming that muon is a viable alternative.

Elsewhere in this thread packaging metadata for CMake was shared arguing that CMake also has many dependencies. A subtle nuance there is that those are all either optional dependencies (e.g. Qt for the GUI parts) or they are dependencies that can be optionally supplied.

You can build CMake without those dependencies installed and CMake's vendored versions will be statically linked instead. So, from the perspective of wanting to go from 0 to 100 with just gcc/g++ installed, CMake has less dependencies. This might be slightly disingenuous because CMake vendors its dependencies and distros have to opt-in so that they can supply their own versions, but the main takeaway is that GCC is all you need and that's what I meant by, "less dependencies."

This is a moot point for most users, though, and it's even moreso moot if muon compatibility can be maintained.

As to why I consider Python a liability ~ this is more of a concern for Meson and it doesn't really matter for end users, but Python has a proven track record of making breaking changes.

If you're building everything from scratch with new versions of compilers and tools then the C++ project is the one that's going to build just fine a decade from now with little to minimal effort. Python doesn't have that track record.

Even though CMake is written in C++ (which is unacceptable for some projects), this is subjectively one advantage that CMake seems to have. This is a moot point, though, and perhaps Python will eventually reach this same level of respect for not introducing breaking changes.

Furthermore, I suspect that most contributors are simply going to "apt install meson" or "brew install meson" so it's not really that much of an issue in practice for the majority of users/contributors.

Show 16 quoted lines
> I'd honestly be sad if we go down the CMake route, mostly because I
> think that it is an inferior build system compared to Meson. I have
> worked with it extensively in the context of libgit2 and always found it
> to be a pain due to its esoteric syntax, the use of so many implicit
> variables, platform CMake policies, and there being so many ways to do
> the same thing and, where the easiest solution is typically the wrong
> one to pick.
> 
> That being said, I'm trying to be as pragmatic is possible: my main goal
> is to have a modern build system that is easier to use. So while I think
> that Meson fits better into that role, the next-best thing would be
> CMake from my point of view.
> 
> So I'll continue to champion Meson, but if the project as a whole agrees
> to take up CMake as another official build system then I'll adapt and
> make that happen.

I agree with you. Meson looks to be a technically better option. I kinda wonder how many folks are actually using the contrib/ CMakeLists.txt, and whether this effort would be helped by retiring it sooner rather than later?

Would it be worth adding a canary to the CMake build that forces it to fail to build unless "cmake -D ENABLE_DEPRECATED_BUILD=ON" option is specified?

It could error out with a message telling users to reach out to the list alongside the hint to specify the option if they just want to get a working build.

On a rather low-powered machine here are some timings:
    $ make clean
    $ time make -j
    181.36s user 15.35s system 99% cpu 3:17.33 total
    $ ninja -C build clean
    $ time ninja -C build
    11.23s user 4.67s system 47% cpu 33.605 total
34s vs 3m17s ~ nice! That's also surprising.

That large of a difference is not explained by the extra probes done by the Makefile; a no-op incremental build is 0.5s for Make and 0.02s for Meson so the Makefile probes seem to only account for at most 0.5s.

Is the Meson build simply building much less, and that's why it's currently so much faster?

Or.. is it because I have "sccache" installed and Meson automatically uses it? "ninja -C build -v" confirms that it's using sccache and "make V=1" does not, so maybe that's why.

How do we disable the sccache usage? "meson configure build" doesn't seem to list anything related to caching, but it is really nice seeing all of the other options in one place.

Improvement in build time seems like it could be something that sways long-time contributors towards Meson. It is pretty nice that it automatically picked up sccache in my $PATH and automatically gave me those speedups.

> Thanks for your input, highly appreciated!

Thanks. I don't want to be the CMake champion, so here are a few helpful/surprising details about the Meson build to help make it better.

(1) I first built w/out having "curl-config" installed. I was surprised to find that "ninja -C build install" ended up installing "bin/curl" and "bin/curl-config" into the prefix.

Is there a way to have the install step only install Git without bringing along these other non-Git bits?

(2) There seems to be a difference in how symlinks and hardlinks are handled in the install step.

Running "make prefix=$PWD/dist install" ends up with real files in dist/bin/ (hardlinks) whereas with Meson all of the files in the bin/ directory are symlinks into ../libexec/.

(3) Not all of the same files seems to be getting installed.
I don't see bin/gitk or bin/git-cvsserver when building with Meson.
The share/git-core/templates/ directory is missing completely.

git-gui and its related files are missing. Perhaps this is intentional/todo at this stage and hasn't been added yet.

Meson installs bin/git-http-backend (symlinked to libexec) but in the original Makefile this file only exists in libexec/.

The contents of libexec/git-core/ seems to be missing dozens of files compared to the Makefile build.

share/perl5/ has a bunch of extra git-{cvsserver,send-email,svn,...} scripts so perhaps this is where some of those files went? The Makefile places these files in the libexec/ area instead of in the share/perl5/ area.

The Makefile does not install share/gitweb/static/js/. Instead, it seems to mash everything together into a single share/gitweb/static/gitweb.js file which Meson does not install. Meson installs separate files in the share/gitweb/static/js/ area. Was that intentional, or is that just another todo?

cheers,
-- 
David
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 163 of 355 in “Modernize the build system”
  1. 00/21 Modernize the build systemPatrick Steinhardt, Oct 2, 2024
  2. 01/21 Documentation: add comparison of build systemsPatrick Steinhardt, Oct 2, 2024
  3. Junio C HamanoOct 2, 2024
  4. Eli SchwartzOct 6, 2024
  5. Patrick SteinhardtOct 7, 2024
  6. Junio C HamanoOct 7, 2024
  7. Eric SunshineOct 2, 2024
  8. Patrick SteinhardtOct 7, 2024
  9. 02/21 t/test-lib: fix quoting of TEST_RESULTS_SAN_FILEPatrick Steinhardt, Oct 2, 2024
  10. 03/21 t/lib-gitweb: test against the build version of gitwebPatrick Steinhardt, Oct 2, 2024
  11. 04/21 t/lib-gpg: fix setup of GNUPGHOME in MinGWPatrick Steinhardt, Oct 2, 2024
  12. Eric SunshineOct 2, 2024
  13. Patrick SteinhardtOct 7, 2024
  14. 05/21 t3404: work around platform-specific behaviour on macOS 10.15Patrick Steinhardt, Oct 2, 2024
  15. Eric SunshineOct 2, 2024
  16. Phillip WoodOct 3, 2024
  17. Eric SunshineOct 3, 2024
  18. Junio C HamanoOct 3, 2024
  19. Patrick SteinhardtOct 7, 2024
  20. Patrick SteinhardtOct 7, 2024
  21. Patrick SteinhardtOct 7, 2024
  22. 06/21 t/unit-tests: update clar unit test frameworkPatrick Steinhardt, Oct 2, 2024
  23. 07/21 t/clar: simplify how the clar derives `struct stat`Patrick Steinhardt, Oct 2, 2024
  24. 08/21 builtin/credential-cache: fix missing parameter for stub functionPatrick Steinhardt, Oct 2, 2024
  25. 09/21 http: fix build error on FreeBSDPatrick Steinhardt, Oct 2, 2024
  26. 10/21 Makefile: extract script to generate clar declarationsPatrick Steinhardt, Oct 2, 2024
  27. 11/21 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Oct 2, 2024
  28. 12/21 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Oct 2, 2024
  29. 13/21 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Oct 2, 2024
  30. 14/21 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Oct 2, 2024
  31. 15/21 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Oct 2, 2024
  32. Phillip WoodOct 8, 2024
  33. Patrick SteinhardtOct 8, 2024
  34. 16/21 Makefile: consistently use PERL_PATHPatrick Steinhardt, Oct 2, 2024
  35. 17/21 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Oct 2, 2024
  36. 18/21 Makefile: simplify building of templatesPatrick Steinhardt, Oct 2, 2024
  37. 19/21 t: better support for out-of-tree buildsPatrick Steinhardt, Oct 2, 2024
  38. 20/21 t: allow overriding build dirPatrick Steinhardt, Oct 2, 2024
  39. Phillip WoodOct 8, 2024
  40. Patrick SteinhardtOct 8, 2024
  41. 21/21 Introduce support for the Meson build systemPatrick Steinhardt, Oct 2, 2024
  42. Phillip WoodOct 8, 2024
  43. Patrick SteinhardtOct 8, 2024
  44. 00/24 Modernize our build systemPatrick Steinhardt, Oct 9, 2024
  45. 01/24 t/test-lib: fix quoting of TEST_RESULTS_SAN_FILEPatrick Steinhardt, Oct 9, 2024
  46. 02/24 t/test-lib: wire up NO_ICONV prerequisitePatrick Steinhardt, Oct 9, 2024
  47. 03/24 t/lib-gitweb: test against the build version of gitwebPatrick Steinhardt, Oct 9, 2024
  48. 04/24 t/lib-gpg: fix setup of GNUPGHOME in MinGWPatrick Steinhardt, Oct 9, 2024
  49. 05/24 t1401: make invocation of tar(1) work with Win32-provided onePatrick Steinhardt, Oct 9, 2024
  50. 06/24 t3404: work around platform-specific behaviour on macOS 10.15Patrick Steinhardt, Oct 9, 2024
  51. 07/24 t5500, t5601: skip tests which exercise paths with '[::1]' on CygwinPatrick Steinhardt, Oct 9, 2024
  52. 08/24 t7300: work around platform-specific behaviour with long paths on MinGWPatrick Steinhardt, Oct 9, 2024
  53. 09/24 t/unit-tests: update clar unit test frameworkPatrick Steinhardt, Oct 9, 2024
  54. 10/24 builtin/credential-cache: fix missing parameter for stub functionPatrick Steinhardt, Oct 9, 2024
  55. 11/24 http: fix build error on FreeBSDPatrick Steinhardt, Oct 9, 2024
  56. 12/24 Makefile: extract script to generate clar declarationsPatrick Steinhardt, Oct 9, 2024
  57. 13/24 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Oct 9, 2024
  58. 14/24 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Oct 9, 2024
  59. 15/24 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Oct 9, 2024
  60. 16/24 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Oct 9, 2024
  61. 17/24 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Oct 9, 2024
  62. 18/24 Makefile: consistently use PERL_PATHPatrick Steinhardt, Oct 9, 2024
  63. 19/24 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Oct 9, 2024
  64. 20/24 Makefile: simplify building of templatesPatrick Steinhardt, Oct 9, 2024
  65. 21/24 t: better support for out-of-tree buildsPatrick Steinhardt, Oct 9, 2024
  66. 22/24 t: allow overriding build dirPatrick Steinhardt, Oct 9, 2024
  67. 23/24 Documentation: add comparison of build systemsPatrick Steinhardt, Oct 9, 2024
  68. Phillip WoodOct 14, 2024
  69. Patrick SteinhardtOct 15, 2024
  70. phillip.wood123@gmail.comOct 16, 2024
  71. Patrick SteinhardtOct 17, 2024
  72. Patrick SteinhardtOct 17, 2024
  73. 24/24 Introduce support for the Meson build systemPatrick Steinhardt, Oct 9, 2024
  74. Eli SchwartzOct 14, 2024
  75. Patrick SteinhardtOct 14, 2024
  76. Junio C HamanoOct 10, 2024
  77. Patrick SteinhardtOct 10, 2024
  78. Patrick SteinhardtOct 10, 2024
  79. Junio C HamanoOct 12, 2024
  80. Taylor BlauOct 12, 2024
  81. 00/15 Modernize the build systemPatrick Steinhardt, Oct 18, 2024
  82. 01/15 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Oct 18, 2024
  83. Eric SunshineOct 19, 2024
  84. Patrick SteinhardtOct 23, 2024
  85. 02/15 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Oct 18, 2024
  86. 03/15 Makefile: consistently use PERL_PATHPatrick Steinhardt, Oct 18, 2024
  87. 04/15 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Oct 18, 2024
  88. 05/15 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Oct 18, 2024
  89. 06/15 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Oct 18, 2024
  90. 07/15 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Oct 18, 2024
  91. 08/15 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Oct 18, 2024
  92. 09/15 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Oct 18, 2024
  93. Eric SunshineOct 19, 2024
  94. 10/15 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Oct 18, 2024
  95. 11/15 Makefile: simplify building of templatesPatrick Steinhardt, Oct 18, 2024
  96. Eric SunshineOct 19, 2024
  97. 12/15 t: better support for out-of-tree buildsPatrick Steinhardt, Oct 18, 2024
  98. 13/15 t: allow overriding build dirPatrick Steinhardt, Oct 18, 2024
  99. Eric SunshineOct 19, 2024
  100. 14/15 Documentation: add comparison of build systemsPatrick Steinhardt, Oct 18, 2024
  101. 15/15 Introduce support for the Meson build systemPatrick Steinhardt, Oct 18, 2024
  102. Eric SunshineOct 19, 2024
  103. Ramsay JonesOct 18, 2024
  104. Eli SchwartzOct 20, 2024
  105. Ramsay JonesOct 21, 2024
  106. Patrick SteinhardtOct 23, 2024
  107. Ramsay JonesOct 23, 2024
  108. Eli SchwartzOct 23, 2024
  109. Ramsay JonesOct 24, 2024
  110. Patrick SteinhardtOct 24, 2024
  111. Patrick SteinhardtOct 24, 2024
  112. Ramsay JonesOct 24, 2024
  113. Patrick SteinhardtOct 25, 2024
  114. Ramsay JonesOct 25, 2024
  115. Patrick SteinhardtNov 4, 2024
  116. Patrick SteinhardtOct 23, 2024
  117. Taylor BlauOct 18, 2024
  118. Patrick SteinhardtOct 23, 2024
  119. Taylor BlauOct 23, 2024
  120. Patrick SteinhardtOct 24, 2024
  121. Taylor BlauOct 21, 2024
  122. Patrick SteinhardtOct 23, 2024
  123. Taylor BlauOct 23, 2024
  124. 00/19 Modernize the build systemPatrick Steinhardt, Oct 24, 2024
  125. 01/19 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Oct 24, 2024
  126. 02/19 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Oct 24, 2024
  127. 03/19 Makefile: consistently use PERL_PATHPatrick Steinhardt, Oct 24, 2024
  128. 04/19 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Oct 24, 2024
  129. Phillip WoodNov 10, 2024
  130. Patrick SteinhardtNov 11, 2024
  131. 05/19 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Oct 24, 2024
  132. Phillip WoodNov 11, 2024
  133. Patrick SteinhardtNov 11, 2024
  134. Paul SmithNov 11, 2024
  135. Patrick SteinhardtNov 11, 2024
  136. 06/19 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Oct 24, 2024
  137. Phillip WoodNov 10, 2024
  138. 07/19 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Oct 24, 2024
  139. 08/19 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Oct 24, 2024
  140. 09/19 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Oct 24, 2024
  141. 10/19 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Oct 24, 2024
  142. 11/19 Makefile: simplify building of templatesPatrick Steinhardt, Oct 24, 2024
  143. 12/19 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Oct 24, 2024
  144. 13/19 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Oct 24, 2024
  145. 14/19 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Oct 24, 2024
  146. 15/19 t: better support for out-of-tree buildsPatrick Steinhardt, Oct 24, 2024
  147. 16/19 t: allow overriding build dirPatrick Steinhardt, Oct 24, 2024
  148. 17/19 Documentation: add comparison of build systemsPatrick Steinhardt, Oct 24, 2024
  149. 18/19 Introduce support for the Meson build systemPatrick Steinhardt, Oct 24, 2024
  150. 19/19 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Oct 24, 2024
  151. Taylor BlauOct 24, 2024
  152. Taylor BlauOct 25, 2024
  153. Patrick SteinhardtNov 4, 2024
  154. Eli SchwartzNov 4, 2024
  155. Patrick SteinhardtNov 11, 2024
  156. Taylor BlauNov 4, 2024
  157. David AguilarNov 9, 2024
  158. Eli SchwartzNov 10, 2024
  159. Patrick SteinhardtNov 11, 2024
  160. Eli SchwartzNov 11, 2024
  161. Patrick SteinhardtNov 12, 2024
  162. Patrick SteinhardtNov 12, 2024
  163. David AguilarNov 13, 2024
  164. Patrick SteinhardtNov 13, 2024
  165. Eli SchwartzNov 13, 2024
  166. Patrick SteinhardtNov 14, 2024
  167. Junio C HamanoNov 14, 2024
  168. Eli SchwartzNov 14, 2024
  169. Patrick SteinhardtNov 14, 2024
  170. Junio C HamanoNov 14, 2024
  171. Eli SchwartzNov 13, 2024
  172. Patrick SteinhardtNov 14, 2024
  173. Patrick SteinhardtNov 11, 2024
  174. Jeff KingNov 11, 2024
  175. Eli SchwartzNov 11, 2024
  176. Jeff KingNov 11, 2024
  177. Eli SchwartzNov 11, 2024
  178. Jeff KingNov 12, 2024
  179. Eli SchwartzNov 12, 2024
  180. Jeff KingNov 12, 2024
  181. Junio C HamanoNov 12, 2024
  182. Patrick SteinhardtNov 12, 2024
  183. Eli SchwartzNov 12, 2024
  184. Eli SchwartzNov 4, 2024
  185. Ramsay JonesOct 28, 2024
  186. Patrick SteinhardtNov 4, 2024
  187. 00/19 Modernize the build systemPatrick Steinhardt, Nov 11, 2024
  188. 01/19 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Nov 11, 2024
  189. 02/19 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Nov 11, 2024
  190. 03/19 Makefile: consistently use PERL_PATHPatrick Steinhardt, Nov 11, 2024
  191. 04/19 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Nov 11, 2024
  192. 05/19 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Nov 11, 2024
  193. 06/19 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Nov 11, 2024
  194. 07/19 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Nov 11, 2024
  195. 08/19 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Nov 11, 2024
  196. 09/19 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Nov 11, 2024
  197. 10/19 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Nov 11, 2024
  198. 11/19 Makefile: simplify building of templatesPatrick Steinhardt, Nov 11, 2024
  199. 12/19 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Nov 11, 2024
  200. 13/19 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Nov 11, 2024
  201. 14/19 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Nov 11, 2024
  202. 15/19 t: better support for out-of-tree buildsPatrick Steinhardt, Nov 11, 2024
  203. 16/19 t: allow overriding build dirPatrick Steinhardt, Nov 11, 2024
  204. 17/19 Documentation: add comparison of build systemsPatrick Steinhardt, Nov 11, 2024
  205. 18/19 Introduce support for the Meson build systemPatrick Steinhardt, Nov 11, 2024
  206. 19/19 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Nov 11, 2024
  207. Ramsay JonesNov 13, 2024
  208. 00/19 Modernize the build systemPatrick Steinhardt, Nov 12, 2024
  209. 01/19 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Nov 12, 2024
  210. Junio C HamanoNov 13, 2024
  211. Patrick SteinhardtNov 13, 2024
  212. 03/19 Makefile: consistently use PERL_PATHPatrick Steinhardt, Nov 12, 2024
  213. 02/19 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Nov 12, 2024
  214. 04/19 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Nov 12, 2024
  215. 05/19 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Nov 12, 2024
  216. 06/19 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Nov 12, 2024
  217. 07/19 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Nov 12, 2024
  218. 08/19 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Nov 12, 2024
  219. Phillip WoodNov 13, 2024
  220. Patrick SteinhardtNov 14, 2024
  221. Junio C HamanoNov 14, 2024
  222. 09/19 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Nov 12, 2024
  223. 10/19 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Nov 12, 2024
  224. 11/19 Makefile: simplify building of templatesPatrick Steinhardt, Nov 12, 2024
  225. 12/19 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Nov 12, 2024
  226. 13/19 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Nov 12, 2024
  227. 14/19 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Nov 12, 2024
  228. 15/19 t: better support for out-of-tree buildsPatrick Steinhardt, Nov 12, 2024
  229. 16/19 t: allow overriding build dirPatrick Steinhardt, Nov 12, 2024
  230. 17/19 Documentation: add comparison of build systemsPatrick Steinhardt, Nov 12, 2024
  231. 18/19 Introduce support for the Meson build systemPatrick Steinhardt, Nov 12, 2024
  232. Junio C HamanoNov 13, 2024
  233. Patrick SteinhardtNov 13, 2024
  234. Phillip WoodNov 13, 2024
  235. 19/19 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Nov 12, 2024
  236. Ramsay JonesNov 13, 2024
  237. Patrick SteinhardtNov 13, 2024
  238. Christian CouderNov 13, 2024
  239. Patrick SteinhardtNov 13, 2024
  240. 00/23 Modernize the build systemPatrick Steinhardt, Nov 19, 2024
  241. 02/23 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Nov 19, 2024
  242. Johannes SixtNov 19, 2024
  243. Patrick SteinhardtNov 20, 2024
  244. 01/23 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Nov 19, 2024
  245. 03/23 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Nov 19, 2024
  246. Junio C HamanoNov 20, 2024
  247. Patrick SteinhardtNov 20, 2024
  248. Junio C HamanoNov 21, 2024
  249. Patrick SteinhardtNov 25, 2024
  250. 05/23 Makefile: generate "git.rc" via GIT-VERSION-GENPatrick Steinhardt, Nov 19, 2024
  251. 04/23 Makefile: propagate Git version via generated headerPatrick Steinhardt, Nov 19, 2024
  252. 06/23 Makefile: generate doc versions via GIT-VERSION-GENPatrick Steinhardt, Nov 19, 2024
  253. 07/23 Makefile: consistently use PERL_PATHPatrick Steinhardt, Nov 19, 2024
  254. 08/23 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Nov 19, 2024
  255. 09/23 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Nov 19, 2024
  256. 10/23 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Nov 19, 2024
  257. 11/23 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Nov 19, 2024
  258. 12/23 Makefile: extract script to generate gitweb.jsPatrick Steinhardt, Nov 19, 2024
  259. 13/23 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Nov 19, 2024
  260. 14/23 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Nov 19, 2024
  261. 15/23 Makefile: simplify building of templatesPatrick Steinhardt, Nov 19, 2024
  262. 16/23 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Nov 19, 2024
  263. 17/23 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Nov 19, 2024
  264. 18/23 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Nov 19, 2024
  265. 19/23 t: better support for out-of-tree buildsPatrick Steinhardt, Nov 19, 2024
  266. 20/23 t: allow overriding build dirPatrick Steinhardt, Nov 19, 2024
  267. 21/23 Documentation: add comparison of build systemsPatrick Steinhardt, Nov 19, 2024
  268. 23/23 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Nov 19, 2024
  269. 22/23 Introduce support for the Meson build systemPatrick Steinhardt, Nov 19, 2024
  270. Junio C HamanoNov 20, 2024
  271. Patrick SteinhardtNov 20, 2024
  272. 00/23 Modernize the build systemPatrick Steinhardt, Nov 25, 2024
  273. 01/23 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Nov 25, 2024
  274. 02/23 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Nov 25, 2024
  275. 04/23 Makefile: propagate Git version via generated headerPatrick Steinhardt, Nov 25, 2024
  276. 03/23 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Nov 25, 2024
  277. 05/23 Makefile: generate "git.rc" via GIT-VERSION-GENPatrick Steinhardt, Nov 25, 2024
  278. 06/23 Makefile: generate doc versions via GIT-VERSION-GENPatrick Steinhardt, Nov 25, 2024
  279. Renato BotelhoJan 13, 2025
  280. Patrick SteinhardtJan 17, 2025
  281. 07/23 Makefile: consistently use PERL_PATHPatrick Steinhardt, Nov 25, 2024
  282. 08/23 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Nov 25, 2024
  283. 09/23 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Nov 25, 2024
  284. 10/23 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Nov 25, 2024
  285. 11/23 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Nov 25, 2024
  286. 12/23 Makefile: extract script to generate gitweb.jsPatrick Steinhardt, Nov 25, 2024
  287. 13/23 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Nov 25, 2024
  288. 14/23 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Nov 25, 2024
  289. 15/23 Makefile: simplify building of templatesPatrick Steinhardt, Nov 25, 2024
  290. 16/23 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Nov 25, 2024
  291. 17/23 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Nov 25, 2024
  292. 18/23 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Nov 25, 2024
  293. 19/23 t: better support for out-of-tree buildsPatrick Steinhardt, Nov 25, 2024
  294. 20/23 t: allow overriding build dirPatrick Steinhardt, Nov 25, 2024
  295. 21/23 Documentation: add comparison of build systemsPatrick Steinhardt, Nov 25, 2024
  296. 23/23 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Nov 25, 2024
  297. 22/23 Introduce support for the Meson build systemPatrick Steinhardt, Nov 25, 2024
  298. 00/23 Modernize the build systemPatrick Steinhardt, Nov 28, 2024
  299. 01/23 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Nov 28, 2024
  300. 02/23 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Nov 28, 2024
  301. 03/23 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Nov 28, 2024
  302. 04/23 Makefile: propagate Git version via generated headerPatrick Steinhardt, Nov 28, 2024
  303. 05/23 Makefile: generate "git.rc" via GIT-VERSION-GENPatrick Steinhardt, Nov 28, 2024
  304. 06/23 Makefile: generate doc versions via GIT-VERSION-GENPatrick Steinhardt, Nov 28, 2024
  305. 07/23 Makefile: consistently use PERL_PATHPatrick Steinhardt, Nov 28, 2024
  306. 08/23 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Nov 28, 2024
  307. 10/23 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Nov 28, 2024
  308. 11/23 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Nov 28, 2024
  309. 09/23 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Nov 28, 2024
  310. 14/23 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Nov 28, 2024
  311. 12/23 Makefile: extract script to generate gitweb.jsPatrick Steinhardt, Nov 28, 2024
  312. 13/23 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Nov 28, 2024
  313. 15/23 Makefile: simplify building of templatesPatrick Steinhardt, Nov 28, 2024
  314. 17/23 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Nov 28, 2024
  315. 16/23 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Nov 28, 2024
  316. 18/23 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Nov 28, 2024
  317. 19/23 t: better support for out-of-tree buildsPatrick Steinhardt, Nov 28, 2024
  318. 20/23 t: allow overriding build dirPatrick Steinhardt, Nov 28, 2024
  319. 21/23 Documentation: add comparison of build systemsPatrick Steinhardt, Nov 28, 2024
  320. 23/23 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Nov 28, 2024
  321. 22/23 Introduce support for the Meson build systemPatrick Steinhardt, Nov 28, 2024
  322. 00/26 Modernize the build systemPatrick Steinhardt, Dec 6, 2024
  323. 01/26 Makefile: use common template for GIT-BUILD-OPTIONSPatrick Steinhardt, Dec 6, 2024
  324. 02/26 Makefile: consistently use @PLACEHOLDER@ to substitutePatrick Steinhardt, Dec 6, 2024
  325. 03/26 Makefile: refactor GIT-VERSION-GEN to be reusablePatrick Steinhardt, Dec 6, 2024
  326. 04/26 Makefile: propagate Git version via generated headerPatrick Steinhardt, Dec 6, 2024
  327. 05/26 Makefile: generate "git.rc" via GIT-VERSION-GENPatrick Steinhardt, Dec 6, 2024
  328. 06/26 Makefile: generate doc versions via GIT-VERSION-GENPatrick Steinhardt, Dec 6, 2024
  329. 07/26 Makefile: consistently use PERL_PATHPatrick Steinhardt, Dec 6, 2024
  330. 08/26 Makefile: extract script to massage Perl scriptsPatrick Steinhardt, Dec 6, 2024
  331. 09/26 Makefile: use "generate-perl.sh" to massage Perl libraryPatrick Steinhardt, Dec 6, 2024
  332. 11/26 Makefile: extract script to massage Python scriptsPatrick Steinhardt, Dec 6, 2024
  333. 10/26 Makefile: extract script to massage Shell scriptsPatrick Steinhardt, Dec 6, 2024
  334. 12/26 Makefile: extract script to generate gitweb.cgiPatrick Steinhardt, Dec 6, 2024
  335. 13/26 Makefile: extract script to generate gitweb.jsPatrick Steinhardt, Dec 6, 2024
  336. 14/26 Makefile: refactor generators to be PWD-independentPatrick Steinhardt, Dec 6, 2024
  337. 15/26 Makefile: allow "bin-wrappers/" directory to existPatrick Steinhardt, Dec 6, 2024
  338. 16/26 Makefile: write absolute program path into bin-wrappersPatrick Steinhardt, Dec 6, 2024
  339. 17/26 Makefile: simplify building of templatesPatrick Steinhardt, Dec 6, 2024
  340. 18/26 Documentation: allow sourcing generated includes from separate dirPatrick Steinhardt, Dec 6, 2024
  341. 19/26 Documentation: teach "cmd-list.perl" about out-of-tree buildsPatrick Steinhardt, Dec 6, 2024
  342. 20/26 Documentation: extract script to generate a list of mergetoolsPatrick Steinhardt, Dec 6, 2024
  343. 21/26 t: better support for out-of-tree buildsPatrick Steinhardt, Dec 6, 2024
  344. 22/26 t: allow overriding build dirPatrick Steinhardt, Dec 6, 2024
  345. 23/26 Documentation: add comparison of build systemsPatrick Steinhardt, Dec 6, 2024
  346. 24/26 Introduce support for the Meson build systemPatrick Steinhardt, Dec 6, 2024
  347. 25/26 meson: fix conflicts with in-flight topicsPatrick Steinhardt, Dec 6, 2024
  348. Junio C HamanoDec 8, 2024
  349. Junio C HamanoDec 9, 2024
  350. Patrick SteinhardtDec 9, 2024
  351. Junio C HamanoDec 9, 2024
  352. Patrick SteinhardtDec 10, 2024
  353. Junio C HamanoDec 10, 2024
  354. 26/26 Revert "meson: fix conflicts with in-flight topics"Patrick Steinhardt, Dec 6, 2024
  355. Patrick SteinhardtDec 6, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.