From: Jonathan Nieder <jrnieder@gmail.com>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>,
Nguyen Thai Ngoc Duy <pclouds@gmail.com>,
git@vger.kernel.org, Nicolas Pitre <nico@fluxnic.net>,
Sverre Rabbelier <srabbelier@gmail.com>
Subject: Re: [RFC/PATCH 0/3] Thinning the git toplevel directory
Date: Wed, 23 Feb 2011 02:29:29 -0600 [thread overview]
Message-ID: <20110223082929.GB30485@elie> (raw)
In-Reply-To: <20110223045143.GA11846@sigill.intra.peff.net>
Jeff King wrote:
> On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:
>> I had an impression that "make -C lib/" would be one of the goals, iow,
>> when we split the directory structure, the next step would be to split the
>> top-level Makefile so that each directory is covered by its own Makefile,
>> just like Documentation/ is already usable that way.
>
> Ugh.
Two half-baked ideas:
A. top-level Makefile generates GIT-BUILD-OPTIONS and does not do
any work itself --- it just calls "make" in subdirectories to
do the real work. Other Makefiles slurp in
- GIT-BUILD-OPTIONS, to get the build options
- build-helpers/Makefile, for some pattern rules describing
how to build things
Benefit:
GIT-BUILD-OPTIONS becomes the normal way to pass build options,
so it is well tested and robust.
Downsides:
If the project grows too much, all those "make" calls start to
take time. It is possible for parallel "make" invocations to
trample on each other's work if they are not well coordinated.
B. top-level Makefile slurps in Makefiles from subdirs. Other
Makefiles would
- check if basic rules (pattern rules and GIT-BUILD-OPTIONS
generation) have been slurped in yet, and if not, include
them;
- check if build options have been slurped in yet, and
if not, include GIT-BUILD-OPTIONS;
- keep careful track of what directory "make" was run from; [*]
- define variables listing targets to be built in this
directory and rules describing how to build them.
Benefit:
GIT-BUILD-OPTIONS becomes the normal [...]. Single "make"
process, fast and predictable. "make" still works from
subdirectories.
Downside:
[*] is a little hazy and sounds hackish.
I admit that I have some irrational excitement about a lib/ that could
eventually be built and used separately from git. Mostly because I
think it could encourage people to make lib/ code comprehensible and
hard to misuse and to keep commands/ code minimal.
> I really like that I can trust it to handle dependencies
> correctly, because it means I can bisect without resorting to "make
> clean" for each step.
Cross-directory dependencies have to be declared just as carefully as
dependencies within a directory. I wonder if there is any reason not
to make "make" under t/ imply "make -C .. all".
Sleepily,
Jonathan
next prev parent reply other threads:[~2011-02-23 8:29 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-09 15:14 [PATCH/RFC] Move test-*.c to test/ subdirectory Nguyễn Thái Ngọc Duy
2011-02-09 15:23 ` Nguyen Thai Ngoc Duy
2011-02-09 22:15 ` Junio C Hamano
2011-02-10 2:14 ` [PATCH] Move test-* to t/helper/ subdirectory Nguyễn Thái Ngọc Duy
2011-02-18 2:27 ` [RFC/PATCH 0/3] Thinning the git toplevel directory Jonathan Nieder
2011-02-18 2:31 ` [PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory Jonathan Nieder
2011-02-18 3:47 ` Nguyen Thai Ngoc Duy
2011-02-18 4:14 ` Jonathan Nieder
2011-02-18 4:18 ` Jeff King
2011-02-18 5:58 ` Jonathan Nieder
2011-02-18 4:31 ` Nguyen Thai Ngoc Duy
2011-02-18 2:33 ` [PATCH 2/3] Move test-* into a test-programs/ subdirectory Jonathan Nieder
2011-02-18 2:37 ` [PATCH 3/3] Move header files into a include/ subdirectory Jonathan Nieder
2011-02-18 3:52 ` Nguyen Thai Ngoc Duy
2011-02-18 4:29 ` [RFC/PATCH 4 to 6/3] Move remaining " Jonathan Nieder
2011-02-18 4:32 ` [PATCH 4/3] compat: do not use relative paths to refer to git-compat-util.h et al Jonathan Nieder
2011-02-18 4:34 ` [PATCH 5/3] block-sha1: do not use relative path for git-compat-util.h Jonathan Nieder
2011-02-18 4:35 ` [PATCH 6/3] Move git-compat-util.h, strbuf.h, and cache.h to include/ Jonathan Nieder
2011-02-18 3:56 ` [RFC/PATCH 0/3] Thinning the git toplevel directory Nguyen Thai Ngoc Duy
2011-02-18 4:51 ` [RFC/PATCH 7 - 9/3] " Jonathan Nieder
2011-02-18 4:52 ` [PATCH 7/3] Move test-sha1.sh to test-programs/ Jonathan Nieder
2011-02-18 4:55 ` [PATCH 8/3] Move build helpers to scripts/ subdirectory Jonathan Nieder
2011-02-18 5:04 ` [PATCH 9/3] Move non-builtin git commands and script libraries to a subdirectory Jonathan Nieder
2011-02-18 9:25 ` [RFC/PATCH 0/3] Thinning the git toplevel directory Jonathan Nieder
2011-02-18 11:08 ` Jeff King
2011-02-18 12:33 ` Jonathan Nieder
2011-02-18 12:33 ` Nguyen Thai Ngoc Duy
2011-02-18 18:55 ` Junio C Hamano
2011-02-19 11:11 ` Jonathan Nieder
2011-02-19 23:05 ` Sverre Rabbelier
2011-02-19 23:15 ` The git_remote_helpers package (Re: [RFC/PATCH 0/3] Thinning the git toplevel directory) Jonathan Nieder
2011-02-22 15:56 ` [RFC/PATCH 0/3] Thinning the git toplevel directory Jeff King
2011-02-22 19:30 ` Junio C Hamano
2011-02-22 19:32 ` Sverre Rabbelier
2011-02-23 4:51 ` Jeff King
2011-02-23 8:29 ` Jonathan Nieder [this message]
2011-02-23 8:43 ` Jeff King
2011-02-23 9:56 ` Recursive make and variations on the theme Jonathan Nieder
2011-02-23 16:42 ` [RFC/PATCH 0/3] Thinning the git toplevel directory Junio C Hamano
2011-02-23 17:18 ` Nicolas Pitre
2011-02-23 23:09 ` Drew Northup
2011-02-24 0:14 ` Nicolas Pitre
2011-02-24 17:10 ` Drew Northup
2011-02-24 18:04 ` Nicolas Pitre
2011-02-24 19:08 ` Jeff King
2011-02-24 19:46 ` Drew Northup
2011-02-19 0:10 ` Piotr Krukowiecki
2011-02-19 0:31 ` Junio C Hamano
2011-02-19 0:50 ` Jonathan Nieder
2011-02-19 9:27 ` Piotr Krukowiecki
2011-02-19 9:24 ` Piotr Krukowiecki
2011-02-19 9:41 ` Advertising the prebuilt htmldocs and manpages Jonathan Nieder
2011-02-20 6:52 ` Junio C Hamano
2011-02-20 9:40 ` Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110223082929.GB30485@elie \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nico@fluxnic.net \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=srabbelier@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).