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

Re: [PATCH 0/4] Makefile: micro-optimize light non-test builds

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 27, 2021, 06:07 UTC
Message-ID
<xmqq1re6zzec.fsf@gitster.c.googlers.com>
In-Reply-To
<YBDtO82x5sBAs/6L@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 28 quoted lines
> On Tue, Jan 26, 2021 at 05:38:08PM -0800, Junio C Hamano wrote:
>
>> The steps 2/4 and 3/4 did look like a useful feature, but I wonder
>> why we even need to introduce NO_TEST_TOOLS in the first place.
>> Wouldn't it be more natural to arrange them to be built by making
>> "test::" target depend on them?  IOW, why do we need to have "all::"
>> (our default) target depend on them?
>
> Hmm. That is definitely more logical, and giving "make" more information
> to make a good decision about what is needed. I do wonder if it would be
> annoying in two cases, though:
>
>   - people trigger the tests in other ways besides "make test". For
>     instance, "make && cd t && make" works, as does just
>     "make && cd t && ./t1234". With a more clever Makefile, those would
>     fail (or worse, run out-of-date versions of the helpers, producing
>     confusing results).
>
>   - during refactoring, I often compile-test as I go (i.e., run "make"
>     to see which callers still need changed, then fix them, repeat).
>     If that didn't catch test helpers, then I'd think I was done and get
>     bit later by "make test" trying to build more code. Not the end of
>     the world, but a minor annoyance.
>
> So I think even though I'd argue that giving "make" that extra
> dependency information is "more correct", we are fighting uphill against
> existing behavior, as well as things that make doesn't know (like that I
> expect to be ready to run tests as long as "make all" has finished).

Hmph, true, but as "make test" at the top-level merely redirects to "make -C t", I imagined that the default target in the t/Makefile would depend on doing "make -C .. test-programs" before running tests.

The recursive dependencies end somewhere, though ;-)
 
Previous: Jeff KingNext: Ævar Arnfjörð Bjarmason
Message 10 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.