RE: [PATCH] Makefile: don't include git version file on 'make clean'
- From
- lynn.lin@emc.com <lynn.lin@emc.com>
- Date
- Jul 25, 2010, 13:21 UTC
- Message-ID
- <7F48A44C0E1FBF48B00D4DA49C85432E54F9A3@CORPUSMX100A.corp.emc.com>
- In-Reply-To
- <AANLkTillxO38RTicjCw8ujzliFIhY3oHYHOCHAvUe7mB@mail.gmail.com>
-----Original Message----- From: git-owner@vger.kernel.org [mailto:git-owner@vger.kernel.org] On Behalf Of ?var Arnfj?re Bjarmason Sent: 2010年7月25日 21:08 To: Lin, Lynn Cc: schwab@linux-m68k.org; kpfleming@digium.com; git@vger.kernel.org Subject: Re: [PATCH] Makefile: don't include git version file on 'make clean'
On Sun, Jul 25, 2010 at 12:37, <lynn.lin@emc.com> wrote:
Show 30 quoted lines
> > > -----Original Message----- > From: Ævar Arnfjörð Bjarmason [mailto:avarab@gmail.com] > Sent: 2010年7月25日 20:34 > To: Lin, Lynn > Cc: schwab@linux-m68k.org; kpfleming@digium.com; git@vger.kernel.org > Subject: Re: [PATCH] Makefile: don't include git version file on 'make clean' > > On Sun, Jul 25, 2010 at 12:29, <lynn.lin@emc.com> wrote: > >> My patch is to don't call GIT-VERSION-FILE target when you run 'make clean' > > Yes, but as I demonstrated it gets called anyway. Presumably because > of the $(MAKE) -C ... clean rules. But I haven't looked into it. > > > If we don't specify special goals, when we run any target ,it will call GIT-VERSIONF-FILE target as it include this target > > Example from GNU make manual: > http://www.gnu.org/software/autoconf/manual/make/Goals.html > > > An example of appropriate use is to avoid including .d files during clean rules (see Automatic Prerequisites), so make won't create them only to immediately remove them again: > > sources = foo.c bar.c > > ifneq ($(MAKECMDGOALS),clean) > include $(sources:.c=.d) > endif
Yes, I know (now) how include directives work. What I'm saying is that your patch doesn't work because the main Makefile clean directive calls *other* makefiles, which in turn include the version file:
$ rm GIT-VERSION-FILE ; make -C gitweb clean; cat GIT-VERSION-FILE
make: Entering directory `/home/avar/g/git/gitweb'
make[1]: Entering directory `/home/avar/g/git'
GIT_VERSION = 1.7.2.6.g65a0d3
make[1]: Leaving directory `/home/avar/g/git'
make[1]: Entering directory `/home/avar/g/git'
make[1]: `GIT-VERSION-FILE' is up to date.
make[1]: Leaving directory `/home/avar/g/git'
make: Leaving directory `/home/avar/g/git/gitweb'
make: Entering directory `/home/avar/g/git/gitweb'
make[1]: Entering directory `/home/avar/g/git'
make[1]: `GIT-VERSION-FILE' is up to date.
make[1]: Leaving directory `/home/avar/g/git'
rm -f gitweb.cgi static/gitweb.min.js static/gitweb.min.css
GITWEB-BUILD-OPTIONS
make: Leaving directory `/home/avar/g/git/gitweb'
GIT_VERSION = 1.7.2.6.g65a0d3So just removing the inclusion in the main Makefile doesn't do anything at all.
To get it to work you need to patch the */Makefile files too, and patch other clean targets like distclean.
There are Document,gitweb and git-gui module have the same "issues"
But personally I think this whole thing is a bit silly, but others may disagree. I've said my bit.
I think we can do better when we find redundant code, correct?
Thanks for contributing to Git anyway, your help is appreciated. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html