git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
	Thomas Rast <trast@student.ethz.ch>,
	git@vger.kernel.org
Subject: Re: [PATCHv2 1/8] Makefile: apply dependencies consistently to sparse/asm targets
Date: Wed, 20 Jun 2012 00:26:07 -0400	[thread overview]
Message-ID: <20120620042607.GA10414@sigill.intra.peff.net> (raw)
In-Reply-To: <20120620035015.GA4213@burratino>

On Tue, Jun 19, 2012 at 10:50:15PM -0500, Jonathan Nieder wrote:

> Making .sp and .s targets depend on generated .h files like
> common-cmds.h is very important.  Otherwise, I would not be able to
> generate my git.s assembler listing or sparse-check git.c unless
> common-cmds.h has already been generated as a side-effect of some
> earlier build process.

I suspect in most cases that the earlier build process has happened, and
that's why nobody really complained.

> On the other hand, making .sp and .s targets depend on preexisting .h
> files and files like GIT-CFLAGS would not have any effect at all,
> because:
> 
>  - .sp targets are phony --- there is no stamp file that certifies
>    a given file has been checked by a "make sparse" run.  Maybe that
>    will change some day.
> 
>  - .s targets are rebuilt every time.  Maybe I am just weird, but I
>    find myself upgrading my compiler pretty often, so when I manually
>    ask for an assembler listing I am happy to see it regenerated
>    unconditionally using the new code generation rules.

I don't have a strong opinion, as I don't use either feature. I noticed
the generated header file was a problem, and didn't realize that we
force .s builds.

My counters to the above points (and again, I don't really care
that much) would be:

  1. The .sp and .s targets _do_ need the same -D macros that the .o
     targets get. So it ends up being very obvious that you are omitting
     them in something like:

       foo.o: GIT-VERSION-FILE
       foo.o foo.sp foo.s: EXTRA_CPPFLAGS = \
              -DGIT_VERSION='$(GIT_VERSION)'

     I tend to think it is more readable to simply specify the
     dependencies fully (even if they end up being irrelevant because we
     force-build) than to confuse a reader who is not aware of our
     force-build '.s' rule that is 500 lines away (I was not aware of it
     until you mentioned it).

  2. You describe the behavior now, and I certainly have no plans to
     change it. But there also plausible reasons for both cases to stop
     force-building, in which case these dependencies would become
     relevant.

In other words, I think relying on the force-build is a bit of a
layering violation. Of course, it is a Makefile, which is not exactly
structured programming, but I like to try.

> It turns out that this patch is only about common-cmds.h, which was
> the straightforward case.  Why not say so and save the reader from
> having to think so hard? ;)

Because I didn't realize it was the case at all. :) My intent was
actually to clean up these lines so that they would be correct when I
added GIT-VERSION-FILES and the like to them later.

So I think my preference would be to tack on a note to the commit
message saying "yeah, this doesn't do anything for meta-dependencies,
but it doesn't hurt either". OK?

-Peff

  reply	other threads:[~2012-06-20  4:26 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-31 11:48 git version statistics Jeff King
2012-05-31 12:00 ` Jeff King
2012-05-31 19:35   ` Junio C Hamano
2012-06-01  9:03     ` Jeff King
2012-06-01 14:49       ` Junio C Hamano
2012-06-02 16:32         ` Jeff King
2012-06-02 16:59           ` Tomas Carnecky
2012-06-02 18:49           ` Jeff King
2012-06-02 18:51             ` [PATCH 1/4] move git_version_string into version.c Jeff King
2012-06-02 19:01             ` [PATCH 2/4] version: add git_user_agent function Jeff King
2012-06-19 18:40               ` Thomas Rast
2012-06-19 18:59                 ` Jeff King
2012-06-19 19:52                   ` Jeff King
2012-06-19 19:52                     ` [PATCH 1/3] Makefile: apply dependencies consistently to sparse/asm targets Jeff King
2012-06-19 20:38                       ` Junio C Hamano
2012-06-19 20:01                     ` [PATCH 2/3] Makefile: split GIT_USER_AGENT from GIT-CFLAGS Jeff King
2012-06-19 20:38                       ` Junio C Hamano
2012-06-19 20:03                     ` [PATCH 3/3] Makefile: split prefix flags " Jeff King
2012-06-19 20:51                       ` Junio C Hamano
2012-06-19 21:04                         ` Jeff King
2012-06-19 21:39                           ` Junio C Hamano
2012-06-19 23:36                             ` Jeff King
2012-06-19 23:58                               ` Junio C Hamano
2012-06-19 21:43                           ` Jeff King
2012-06-19 23:22                             ` [PATCHv2 0/8] makefile cleanups Jeff King
2012-06-19 23:23                               ` [PATCHv2 1/8] Makefile: apply dependencies consistently to sparse/asm targets Jeff King
2012-06-20  3:50                                 ` Jonathan Nieder
2012-06-20  4:26                                   ` Jeff King [this message]
2012-06-20 10:27                                     ` Jonathan Nieder
2012-06-20 16:37                                       ` Jeff King
2012-06-20 18:28                                         ` Jeff King
2012-06-20 18:30                                           ` [PATCHv3 01/11] Makefile: sort LIB_H list Jeff King
2012-06-20 20:00                                             ` Junio C Hamano
2012-06-20 20:01                                               ` Jeff King
2012-06-20 18:30                                           ` [PATCHv3 02/11] Makefile: fold MISC_H into LIB_H Jeff King
2012-06-20 20:01                                             ` Junio C Hamano
2012-06-20 21:07                                             ` Jonathan Nieder
2012-06-20 22:11                                               ` Jeff King
2012-07-07  3:39                                                 ` [PATCH 02.5/11] Makefile: fold XDIFF_H and VCSSVN_H " Jonathan Nieder
2012-07-09 14:59                                                   ` Junio C Hamano
2012-07-06 22:47                                             ` [PATCHv3 02/11] Makefile: fold MISC_H " Jonathan Nieder
2012-06-20 18:31                                           ` [PATCHv3 03/11] Makefile: do not have git.o depend on common-cmds.h Jeff King
2012-06-20 21:09                                             ` Jonathan Nieder
2012-06-20 18:31                                           ` [PATCHv3 04/11] Makefile: apply dependencies consistently to sparse/asm targets Jeff King
2012-06-20 21:12                                             ` Jonathan Nieder
2012-06-20 22:15                                               ` Jeff King
2012-07-07  4:19                                                 ` [PATCH/RFC] Makefile: document ground rules for target-specific dependencies Jonathan Nieder
2012-06-20 18:31                                           ` [PATCHv3 05/11] Makefile: do not replace @@GIT_USER_AGENT@@ in scripts Jeff King
2012-06-20 20:06                                             ` Junio C Hamano
2012-06-20 20:09                                               ` Jeff King
2012-06-20 18:31                                           ` [PATCHv3 06/11] Makefile: split GIT_USER_AGENT from GIT-CFLAGS Jeff King
2012-06-20 21:21                                             ` Jonathan Nieder
2012-06-20 22:16                                               ` Jeff King
2012-06-20 22:21                                                 ` Jonathan Nieder
2012-07-07  4:42                                                 ` [RFC/PATCH v4 " Jonathan Nieder
2012-06-20 18:31                                           ` [PATCHv3 07/11] Makefile: split prefix flags " Jeff King
2012-06-20 21:28                                             ` Jonathan Nieder
2012-06-20 22:22                                               ` Jeff King
2012-06-20 18:32                                           ` [PATCHv3 08/11] Makefile: do not replace @@GIT_VERSION@@ in shell scripts Jeff King
2012-06-20 18:32                                           ` [PATCHv3 09/11] Makefile: update scripts when build-time parameters change Jeff King
2012-06-20 18:32                                           ` [PATCHv3 10/11] Makefile: build instaweb similar to other scripts Jeff King
2012-06-20 18:32                                           ` [PATCHv3 11/11] Makefile: move GIT-VERSION-FILE dependencies closer to use Jeff King
2012-06-20 21:31                                             ` Jonathan Nieder
2012-06-20 19:30                                           ` [PATCHv2 1/8] Makefile: apply dependencies consistently to sparse/asm targets Jonathan Nieder
2012-06-20 19:36                                             ` Jeff King
2012-06-20 19:45                                               ` Jonathan Nieder
2012-06-20 19:57                                                 ` Jeff King
2012-06-20 21:00                                                   ` Jonathan Nieder
2012-06-21  8:52                                                   ` Automatic dependency tracking in the Git build system (was: Re: [PATCHv2 1/8] Makefile: apply dependencies consistently to sparse/asm targets) Stefano Lattarini
2012-06-20 20:10                                           ` [PATCHv2 1/8] Makefile: apply dependencies consistently to sparse/asm targets Junio C Hamano
2012-06-20 23:00                                             ` Thomas Rast
2012-06-21  5:18                                             ` Jeff King
2012-06-21  5:43                                               ` Junio C Hamano
2012-06-19 23:24                               ` [PATCHv2 2/8] Makefile: do not replace @@GIT_USER_AGENT@@ in scripts Jeff King
2012-06-19 23:25                               ` [PATCHv2 3/8] Makefile: split GIT_USER_AGENT from GIT-CFLAGS Jeff King
2012-06-19 23:25                               ` [PATCHv2 4/8] Makefile: split prefix flags " Jeff King
2012-06-19 23:27                               ` [PATCHv2 5/8] Makefile: do not replace @@GIT_VERSION@@ in shell scripts Jeff King
2012-06-19 23:28                               ` [PATCHv2 6/8] Makefile: update scripts when build-time parameters change Jeff King
2012-06-19 23:29                               ` [PATCHv2 7/8] Makefile: build instaweb similar to other scripts Jeff King
2012-06-19 23:30                               ` [PATCHv2 8/8] Makefile: move GIT-VERSION-FILE dependencies closer to use Jeff King
2012-06-02 19:03             ` [PATCH 3/4] http: get default user-agent from git_user_agent Jeff King
2012-06-02 19:05             ` [PATCH 4/4] include agent identifier in capability string Jeff King
2012-05-31 15:20 ` git version statistics Stephen Bash
2012-06-01  8:52   ` Jeff King

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=20120620042607.GA10414@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=trast@student.ethz.ch \
    /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).