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

Re: GIT on MinGW problem

From
Han-Wen Nienhuys <hanwen@xs4all.nl>
Date
May 26, 2007, 22:53 UTC
Message-ID
<4658BA64.2050904@xs4all.nl>
In-Reply-To
<Pine.LNX.4.64.0705262318190.4648@racer.site>
Johannes Schindelin escreveu:
Show 15 quoted lines
>>> * git version reports just:
>>>
>>> 	git version -dirty
>>>
>>> Since git-gui parses the output of git version, but does not expect it
>>> to be of this format, and fails with an error message that it cannot
>>> parse the version.
>> My biggest problem is that the makefiles of git are an unmitigated
>> disaster, and there seems to be little interest in solving this
>> problem. For example, my suggestion to introduce autoconf was met with
>> derision.
> 
> Well, I would not call it derision. But many people have had bad 
> experience with that big mess which is autoconf, so we were more than 
> reluctant to do it.

autoconf is not that big a mess, but it is a macrolanguage, which does come with its pitfalls. Automake and libtool are the messy things, and I prefer to stay away from them as far as possible.

The point of autoconf is to generate a hyper-portable script that deals with all the different flavors of shell breakage. For the user it simplifies compiling packages enormously, which IMO should be the guiding concern if you like to have users.

For a pretty run-of-the-mill tool like git (dependency wise), it should be easy to write a working configure.in.

My favorite approach is: use autoconf to generate
 - config.h
 
 - config.make

All settings that force recompile should be in config.h, and standard C methods to track dependencies will take care of the recompilation when anything changes. The main Makefile includes config.make, and contains all configurable settings. The Makefile only needs to be edited by developers. Require GNU Make so you can write sane makefiles.

Instead, we have a Makefile that relies on an esoteric combination of perl and shell scripting inside Makefiles.

Also, the Makefile says.
  # Shell quote (do not use $(call) to accommodate ancient setups);

I think it would be better to have a clearly defined list of optional and required dependencies with version numbers, and then stand by that. For example, Make uses a completely autoconf/libtool based compile process, and is easy to compile. I think it would be reasonable to require a recent make, say 3.80, and then use its features.

Show 6 quoted lines
> In the meantime, we do have a configure.ac, though. In general, you do not 
> have to run it, but you can if "make" does not work out of the box.
> 
> I have to admit that it is unclear to me what are the problems with the 
> Makefile with regards to gub. I think I will just bite the apple, and 
> download that beast to try it myself.
>From what I recall, it tries to be too clever in detecting changes 

of the make command line, forcing a recompile (possibly with erroneous paths) during the

  make install

I might be mistaken, though. I tried to get something up as fast as possible.

-- 
 Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen
Previous: Johannes SchindelinNext: Jakub Narebski
Message 21 of 69 in “GIT on MinGW problem”
  1. Aaron GrayMay 12, 2007
  2. Junio C HamanoMay 12, 2007
  3. Aaron GrayMay 12, 2007
  4. Han-Wen NienhuysMay 12, 2007
  5. Johannes SixtMay 25, 2007
  6. Marco CostalbaMay 25, 2007
  7. Johannes SchindelinMay 25, 2007
  8. Johannes SixtMay 25, 2007
  9. Han-Wen NienhuysMay 26, 2007
  10. Johannes SchindelinMay 26, 2007
  11. Han-Wen NienhuysMay 27, 2007
  12. Johannes SchindelinMay 27, 2007
  13. Han-Wen NienhuysMay 27, 2007
  14. NixMay 28, 2007
  15. Han-Wen NienhuysMay 27, 2007
  16. Aaron GrayMay 25, 2007
  17. Han-Wen NienhuysMay 26, 2007
  18. Johannes SchindelinMay 26, 2007
  19. Junio C HamanoMay 26, 2007
  20. Johannes SchindelinMay 26, 2007
  21. Han-Wen NienhuysMay 26, 2007
  22. Jakub NarebskiMay 26, 2007
  23. Han-Wen NienhuysMay 27, 2007
  24. Shawn O. PearceMay 27, 2007
  25. Han-Wen NienhuysMay 27, 2007
  26. Steven GrimmMay 27, 2007
  27. Jakub NarebskiMay 27, 2007
  28. Han-Wen NienhuysMay 27, 2007
  29. Johannes SchindelinMay 28, 2007
  30. Han-Wen NienhuysMay 28, 2007
  31. Johannes SchindelinMay 27, 2007
  32. Han-Wen NienhuysMay 27, 2007
  33. GIT on MinGW, with tcltk for gitkHan-Wen Nienhuys, May 27, 2007
  34. Aaron GrayMay 27, 2007
  35. Han-Wen NienhuysMay 27, 2007
  36. Aaron GrayMay 27, 2007
  37. Aaron GrayMay 27, 2007
  38. Han-Wen NienhuysMay 27, 2007
  39. Aaron GrayMay 27, 2007
  40. Han-Wen NienhuysMay 27, 2007
  41. Aaron GrayMay 27, 2007
  42. Johannes SchindelinMay 27, 2007
  43. Johannes SixtMay 29, 2007
  44. Han-Wen NienhuysMay 27, 2007
  45. Johannes SixtMay 29, 2007
  46. Marius Storm-OlsenMay 29, 2007
  47. Johannes SixtMay 29, 2007
  48. Han-Wen NienhuysMay 29, 2007
  49. Johannes SixtMay 29, 2007
  50. Johannes SchindelinMay 29, 2007
  51. Marius Storm-OlsenMay 29, 2007
  52. Johannes SixtMay 29, 2007
  53. Marius Storm-OlsenMay 29, 2007
  54. Johannes SchindelinMay 29, 2007
  55. Johannes SixtMay 29, 2007
  56. Nguyen Thai Ngoc DuyMay 29, 2007
  57. Johannes SixtMay 29, 2007
  58. Nguyen Thai Ngoc DuyMay 29, 2007
  59. Make git-k an alias to gitkJohannes Schindelin, May 30, 2007
  60. Johannes SixtMay 30, 2007
  61. Han-Wen NienhuysMay 30, 2007
  62. Johannes SchindelinMay 30, 2007
  63. Shawn O. PearceMay 30, 2007
  64. Git wrapper: add --redirect-stderr optionJohannes Schindelin, May 30, 2007
  65. Shawn O. PearceMay 30, 2007
  66. Johannes SchindelinMay 30, 2007
  67. Shawn O. PearceMay 30, 2007
  68. Johannes SchindelinMay 30, 2007
  69. Johannes SchindelinMay 27, 2007

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.