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

Re: [PATCH v2 0/6] Makefile: add {program,xdiff,test,git}-objs & objects targets

From
Jeff King <peff@peff.net>
Date
Feb 4, 2021, 07:06 UTC
Message-ID
<YBuc5iOCCHk4fPqs@coredump.intra.peff.net>
In-Reply-To
<xmqqft2edkfg.fsf@gitster.c.googlers.com>
On Tue, Feb 02, 2021 at 05:11:47PM -0800, Junio C Hamano wrote:
Show 25 quoted lines
> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
> 
> > A re-send of v1
> > (https://lore.kernel.org/git/20210128182310.26787-1-avarab@gmail.com)
> > + a trivial whitespace fix in 2/6.
> 
> I'll reproduce what it said for those who are reading from
> sidelines:
> 
>     As noted there I can just run "make git", which I'd somehow managed to
>     miss. So that complexity isn't needed.
> 
>     But Jeff King suggested a hack to just get you to the point of
>     git.o. I don't need that right now, but that seems sensible, so I
>     implemented it.
> 
>     At the start of this series I've got a patch to make "all" stop
>     redundantly depending on "FUZZ_OBJS", which also helps with such
>     "rebase -i --exec=..." use-cases.
> 
> I do not see much point in the goal, not quite.  You can do "make
> git.o" and "make git" and you do not have to build unrelated things.
> 
> Isn't that already happening at the tip of 'master' (or 'maint'), or
> am I missing something?

I guess I can take some of the blame since my name came up in the justification above. ;)

The original use case I presented was quickly sifting through a series of commits for "oops, which one broke the compile". And so I wanted something like "make objects" to test each one as quickly as possible. And while that's a useful (if ugly) goal, I think it was misguided:

  - I usually know where the breakage is (after all, I saw it in the end
    state). So "make foo.o" would be faster still! (it would be even
    more so if the Makefile didn't insist on running GIT-VERSION-GEN,
    but that's another story).
  - the link step in "make git" is not that much slower than building
    the objects. And it catches more breakages (like undefined
    functions). It doesn't catch problems in non-builtins, though.
  - really, "make all" is not even that much slower than "make git".
    It's a 200ms difference on my machine (wall-clock; "make -j16" helps
    a lot here). That adds up if you are testing 100 commits, but it
    probably isn't worth thinking too hard about.

I do like the cleanups earlier in the series (I have mixed feelings on the first patch, though; see my comments there).

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 14 of 39 in “Makefile: micro-optimize light non-test builds”
  1. 0/4 Makefile: micro-optimize light non-test buildsÆvar Arnfjörð Bjarmason, Jan 26, 2021
  2. 1/4 Makefile: refactor assignment for subsequent changeÆvar Arnfjörð Bjarmason, Jan 26, 2021
  3. Junio C HamanoJan 27, 2021
  4. 3/4 Makefile: add a NO_TEST_TOOLS flagÆvar Arnfjörð Bjarmason, Jan 26, 2021
  5. 4/4 Makefile: add a NO_{INSTALL_,}SCRIPT_FALLBACKS targetÆvar Arnfjörð Bjarmason, Jan 26, 2021
  6. 2/4 Makefile: refactor for subsequent changeÆvar Arnfjörð Bjarmason, Jan 26, 2021
  7. Jeff KingJan 26, 2021
  8. Junio C HamanoJan 27, 2021
  9. Jeff KingJan 27, 2021
  10. Junio C HamanoJan 27, 2021
  11. 0/6 Makefile: add {program,xdiff,test,git}-objs & objects targetsÆvar Arnfjörð Bjarmason, Jan 28, 2021
  12. 0/6 Makefile: add {program,xdiff,test,git}-objs & objects targetsÆvar Arnfjörð Bjarmason, Feb 1, 2021
  13. Junio C HamanoFeb 3, 2021
  14. Jeff KingFeb 4, 2021
  15. Junio C HamanoFeb 4, 2021
  16. 0/6 Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targetsÆvar Arnfjörð Bjarmason, Feb 23, 2021
  17. Junio C HamanoFeb 23, 2021
  18. Jeff KingFeb 23, 2021
  19. 1/6 Makefile: guard against TEST_OBJS in the environmentÆvar Arnfjörð Bjarmason, Feb 23, 2021
  20. 2/6 Makefile: split up long OBJECTS lineÆvar Arnfjörð Bjarmason, Feb 23, 2021
  21. 4/6 Makefile: split OBJECTS into OBJECTS and GIT_OBJSÆvar Arnfjörð Bjarmason, Feb 23, 2021
  22. 3/6 Makefile: sort OBJECTS assignment for subsequent changeÆvar Arnfjörð Bjarmason, Feb 23, 2021
  23. 5/6 Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targetsÆvar Arnfjörð Bjarmason, Feb 23, 2021
  24. 6/6 Makefile: build "$(FUZZ_OBJS)" in CI, not under "all"Ævar Arnfjörð Bjarmason, Feb 23, 2021
  25. Jeff KingFeb 23, 2021
  26. Junio C HamanoFeb 23, 2021
  27. Ævar Arnfjörð BjarmasonFeb 28, 2021
  28. Jeff KingMar 1, 2021
  29. 1/6 Makefile: remove "all" on "$(FUZZ_OBJS)"Ævar Arnfjörð Bjarmason, Feb 1, 2021
  30. Jeff KingFeb 4, 2021
  31. 3/6 Makefile: split up long OBJECTS lineÆvar Arnfjörð Bjarmason, Feb 1, 2021
  32. 2/6 Makefile: guard against TEST_OBJS in the environmentÆvar Arnfjörð Bjarmason, Feb 1, 2021
  33. 4/6 Makefile: sort OBJECTS assignment for subsequent changeÆvar Arnfjörð Bjarmason, Feb 1, 2021
  34. 6/6 Makefile: add {program,xdiff,test,git}-objs & objects targetsÆvar Arnfjörð Bjarmason, Feb 1, 2021
  35. Junio C HamanoFeb 1, 2021
  36. 5/6 Makefile: split OBJECTS into OBJECTS and GIT_OBJSÆvar Arnfjörð Bjarmason, Feb 1, 2021
  37. 1/6 Makefile: remove "all" on "$(FUZZ_OBJS)"Ævar Arnfjörð Bjarmason, Jan 28, 2021
  38. 2/6 Makefile: guard against TEST_OBJS in the environmentÆvar Arnfjörð Bjarmason, Jan 28, 2021
  39. Junio C HamanoJan 29, 2021

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.