threads / patch / 36575

v2, 5 partscontrib/subtree/Makefile: Standardisation pass

Subject: [PATCH v2 0/5] contrib/subtree/Makefile: Standardisation pass

## tl;dr

14 messages between May 3, 2014 and May 6, 2014. Diffs are folded; open one to read it.

replies: 13people: 2as markdown or json

James Denholm· May 3, 2014, 12:49 UTC · lore

contrib/subtree/Makefile is a shambles in regards to it's consistency with other makefiles, which makes subtree overly painful to include in build scripts.

The main issues are that calls are made to git itself in the build process, and that a subtree-exclusive variable is used for specifying the exec path. Patches 1/5 through 3/5 resolve these.

The "cleanup" fixes (4/5 and 5/5) are based on precedents set by other makefiles across the project.

One problem is foreseen: 3/5 will necessitate that package maintainers who already have git-subtree included in their packages update their build-scripts.

Signed-off-by: James Denholm <nod.helm@gmail.com>
Based-on-patch-by: Dan McGee <dpmcgee@gmail.com>
James Denholm (5):
  contrib/subtree/Makefile: scrap unused $(gitdir)
  contrib/subtree/Makefile: Use GIT-VERSION-FILE
  contrib/subtree/Makefile: s/libexecdir/gitexecdir
  contrib/subtree/Makefile: Doc-gen rules cleanup
  contrib/subtree/Makefile: clean rule cleanup
 contrib/subtree/Makefile | 40 ++++++++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 16 deletions(-)
-- 
1.9.2
James Denholm· May 3, 2014, 12:49 UTC · re: James Denholm · lore

[PATCH v2 1/5] contrib/subtree/Makefile: scrap unused $(gitdir)

All references were removed in 7ff8463dba0d74fc07a766bed457ae7afcc902b5, but the assignment itself wasn't. Hence, drop gitdir assignment.

Signed-off-by: James Denholm <nod.helm@gmail.com>
---
 contrib/subtree/Makefile | 1 -
 1 file changed, 1 deletion(-)
Show changes to contrib/subtree/Makefile +0 −1
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 4030a16..87797ed 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -4,7 +4,6 @@
 prefix ?= /usr/local
 mandir ?= $(prefix)/share/man
 libexecdir ?= $(prefix)/libexec/git-core
-gitdir ?= $(shell git --exec-path)
 man1dir ?= $(mandir)/man1
 
 gitver ?= $(word 3,$(shell git --version))
-- 
1.9.2
James Denholm· May 3, 2014, 12:49 UTC · re: James Denholm · lore

[PATCH v2 2/5] contrib/subtree/Makefile: Use GIT-VERSION-FILE

GVF is already being used in most/all other makefiles in the project, and has been for _quite_ a while. Hence, drop file-unique gitver and replace with GIT_VERSION.

Signed-off-by: James Denholm <nod.helm@gmail.com>
---
 contrib/subtree/Makefile | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)
Show changes to contrib/subtree/Makefile +8 −3
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 87797ed..f63334b 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -6,7 +6,10 @@ mandir ?= $(prefix)/share/man
 libexecdir ?= $(prefix)/libexec/git-core
 man1dir ?= $(mandir)/man1
 
-gitver ?= $(word 3,$(shell git --version))
+../../GIT-VERSION-FILE: FORCE
+	$(MAKE) -C ../../ GIT-VERSION-FILE
+
+-include ../../GIT-VERSION-FILE
 
 # this should be set to a 'standard' bsd-type install program
 INSTALL ?= install
@@ -44,11 +47,11 @@ $(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
 
 $(GIT_SUBTREE_XML): $(GIT_SUBTREE_TXT)
 	asciidoc -b docbook -d manpage -f $(ASCIIDOC_CONF) \
-		-agit_version=$(gitver) $^
+		-agit_version=$(GIT_VERSION) $^
 
 $(GIT_SUBTREE_HTML): $(GIT_SUBTREE_TXT)
 	asciidoc -b xhtml11 -d manpage -f $(ASCIIDOC_CONF) \
-		-agit_version=$(gitver) $^
+		-agit_version=$(GIT_VERSION) $^
 
 test:
 	$(MAKE) -C t/ test
@@ -56,3 +59,5 @@ test:
 clean:
 	rm -f *~ *.xml *.html *.1
 	rm -rf subproj mainline
+
+.PHONY: FORCE
-- 
1.9.2
James Denholm· May 3, 2014, 12:49 UTC · re: James Denholm · lore

[PATCH v2 3/5] contrib/subtree/Makefile: s/libexecdir/gitexecdir

$(libexecdir) isn't used anywhere else in the project, while $(gitexecdir) is the standard in the other appropriate makefiles. Hence, replace the former with the latter.

Signed-off-by: James Denholm <nod.helm@gmail.com>
---
 contrib/subtree/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Show changes to contrib/subtree/Makefile +3 −3
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index f63334b..579bb51 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -3,7 +3,7 @@
 
 prefix ?= /usr/local
 mandir ?= $(prefix)/share/man
-libexecdir ?= $(prefix)/libexec/git-core
+gitexecdir ?= $(prefix)/libexec/git-core
 man1dir ?= $(mandir)/man1
 
 ../../GIT-VERSION-FILE: FORCE
@@ -33,8 +33,8 @@ $(GIT_SUBTREE): $(GIT_SUBTREE_SH)
 doc: $(GIT_SUBTREE_DOC) $(GIT_SUBTREE_HTML)
 
 install: $(GIT_SUBTREE)
-	$(INSTALL) -d -m 755 $(DESTDIR)$(libexecdir)
-	$(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(libexecdir)
+	$(INSTALL) -d -m 755 $(DESTDIR)$(gitexecdir)
+	$(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(gitexecdir)
 
 install-doc: install-man
 
-- 
1.9.2
James Denholm· May 3, 2014, 12:49 UTC · re: James Denholm · lore

[PATCH v2 4/5] contrib/subtree/Makefile: Doc-gen rules cleanup

git:Documentation/Makefile establishes asciidoc/xmlto calls as being handled through their appropriate variables, Hence, change to bring into congruency with.

Similarly, MANPAGE_XSL exists in git:Documentation/Makefile, while MANPAGE_NORMAL_XSL does not outside contrib/subtree. Hence, replace MANPAGE_NORMAL_XSL with MANPAGE_XSL.

Signed-off-by: James Denholm <nod.helm@gmail.com>
---
 contrib/subtree/Makefile | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
Show changes to contrib/subtree/Makefile +8 −5
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 579bb51..f3834b5 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -14,8 +14,11 @@ man1dir ?= $(mandir)/man1
 # this should be set to a 'standard' bsd-type install program
 INSTALL ?= install
 
-ASCIIDOC_CONF      = ../../Documentation/asciidoc.conf
-MANPAGE_NORMAL_XSL =  ../../Documentation/manpage-normal.xsl
+ASCIIDOC = asciidoc
+XMLTO    = xmlto
+
+ASCIIDOC_CONF = ../../Documentation/asciidoc.conf
+MANPAGE_XSL   = ../../Documentation/manpage-normal.xsl
 
 GIT_SUBTREE_SH := git-subtree.sh
 GIT_SUBTREE    := git-subtree
@@ -43,14 +46,14 @@ install-man: $(GIT_SUBTREE_DOC)
 	$(INSTALL) -m 644 $^ $(DESTDIR)$(man1dir)
 
 $(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
-	xmlto -m $(MANPAGE_NORMAL_XSL)  man $^
+	$(XMLTO) -m $(MANPAGE_XSL) man $^
 
 $(GIT_SUBTREE_XML): $(GIT_SUBTREE_TXT)
-	asciidoc -b docbook -d manpage -f $(ASCIIDOC_CONF) \
+	$(ASCIIDOC) -b docbook -d manpage -f $(ASCIIDOC_CONF) \
 		-agit_version=$(GIT_VERSION) $^
 
 $(GIT_SUBTREE_HTML): $(GIT_SUBTREE_TXT)
-	asciidoc -b xhtml11 -d manpage -f $(ASCIIDOC_CONF) \
+	$(ASCIIDOC) -b xhtml11 -d manpage -f $(ASCIIDOC_CONF) \
 		-agit_version=$(GIT_VERSION) $^
 
 test:
-- 
1.9.2
James Denholm· May 3, 2014, 12:49 UTC · re: James Denholm · lore

[PATCH v2 5/5] contrib/subtree/Makefile: clean rule cleanup

git:Documentation/Makefile and others establish "RM ?= rm -f" as a convention for rm calls in clean rules, hence follow this convention instead of simply forcing clean to use rm.

subproj and mainline no longer need to be removed in clean, as they are no longer created in git:contrib/subtree by "make test". Hence, remove the rm call for those folders.

Other makefiles don't remove "*~" files, remove the rm call to prevent unexpected behaviour in the future. Similarly, clean doesn't remove the installable file, so rectify this.

Signed-off-by: James Denholm <nod.helm@gmail.com>
---

Admittedly, git:Makefile does not itself follow the "RM ?= rm -f" setup, instead using "RM = rm -f", but I felt that there were probably $ARCANE_REASONS for this.

Also, Peff, you were right about the dirs.
 contrib/subtree/Makefile | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
Show changes to contrib/subtree/Makefile +5 −4
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index f3834b5..4f96a24 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -11,8 +11,9 @@ man1dir ?= $(mandir)/man1
 
 -include ../../GIT-VERSION-FILE
 
-# this should be set to a 'standard' bsd-type install program
-INSTALL ?= install
+# These should be set to 'standard' bsd-type programs
+INSTALL  ?= install
+RM       ?= rm -f
 
 ASCIIDOC = asciidoc
 XMLTO    = xmlto
@@ -60,7 +61,7 @@ test:
 	$(MAKE) -C t/ test
 
 clean:
-	rm -f *~ *.xml *.html *.1
-	rm -rf subproj mainline
+	$(RM) $(GIT_SUBTREE)
+	$(RM) *.xml *.html *.1
 
 .PHONY: FORCE
-- 
1.9.2
Jeff King· May 5, 2014, 05:09 UTC · re: James Denholm · lore

Re: [PATCH v2 5/5] contrib/subtree/Makefile: clean rule cleanup

On Sat, May 03, 2014 at 10:49:35PM +1000, James Denholm wrote:
Show 13 quoted lines
> diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
> index f3834b5..4f96a24 100644
> --- a/contrib/subtree/Makefile
> +++ b/contrib/subtree/Makefile
> @@ -11,8 +11,9 @@ man1dir ?= $(mandir)/man1
>  
>  -include ../../GIT-VERSION-FILE
>  
> -# this should be set to a 'standard' bsd-type install program
> -INSTALL ?= install
> +# These should be set to 'standard' bsd-type programs
> +INSTALL  ?= install
> +RM       ?= rm -f

I do not think BSD-ism matters for "rm", as it works pretty much the same everywhere. "install", on the other hand, is a bit weirder between systems. So you might want to leave that comment as-is.

OTOH, we do not even bother with such a comment in the main Makefile.
-Peff
James Denholm· May 5, 2014, 21:41 UTC · re: Jeff King · lore

Re: [PATCH v2 5/5] contrib/subtree/Makefile: clean rule cleanup

On 5 May 2014 15:09:39 GMT+10:00, Jeff King <peff@peff.net> wrote:
Show 19 quoted lines
>On Sat, May 03, 2014 at 10:49:35PM +1000, James Denholm wrote:
>
>> diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
>> index f3834b5..4f96a24 100644
>> --- a/contrib/subtree/Makefile
>> +++ b/contrib/subtree/Makefile
>> @@ -11,8 +11,9 @@ man1dir ?= $(mandir)/man1
>>  
>>  -include ../../GIT-VERSION-FILE
>>  
>> -# this should be set to a 'standard' bsd-type install program
>> -INSTALL ?= install
>> +# These should be set to 'standard' bsd-type programs
>> +INSTALL  ?= install
>> +RM       ?= rm -f
>
>I do not think BSD-ism matters for "rm", as it works pretty much the
>same everywhere. "install", on the other hand, is a bit weirder between
>systems. So you might want to leave that comment as-is.

True. I might just buff that out when sending the patch to Junio, unless protocol dictates otherwise - a reroll for a single comment line seems a bit excessive to me at the moment.

Regards, James Denholm.

Jeff King· May 5, 2014, 21:49 UTC · re: James Denholm · lore

Re: [PATCH v2 5/5] contrib/subtree/Makefile: clean rule cleanup

On Tue, May 06, 2014 at 07:41:29AM +1000, James Denholm wrote:
Show 7 quoted lines
> >I do not think BSD-ism matters for "rm", as it works pretty much the
> >same everywhere. "install", on the other hand, is a bit weirder between
> >systems. So you might want to leave that comment as-is.
> 
> True. I might just buff that out when sending the patch to Junio, unless
> protocol dictates otherwise - a reroll for a single comment line seems
> a bit excessive to me at the moment.
I don't think it is that big a deal either way.

It's fine to tweak when you send re-roll the final for Junio. Sometimes for trivial fixups like this, Junio can just tweak it as he applies, but I do not know if he is even paying attention to this thread, so you may want to re-post anyway to get his attention.

Either way, feel free to add my:
  Reviewed-by: Jeff King <peff@peff.net>
-Peff
James Denholm· May 5, 2014, 21:59 UTC · re: Jeff King · lore

Re: [PATCH v2 5/5] contrib/subtree/Makefile: clean rule cleanup

On 6 May 2014 07:49:30 GMT+10:00, Jeff King <peff@peff.net> wrote:
Show 20 quoted lines
>On Tue, May 06, 2014 at 07:41:29AM +1000, James Denholm wrote:
>
>> >I do not think BSD-ism matters for "rm", as it works pretty much the
>> >same everywhere. "install", on the other hand, is a bit weirder
>between
>> >systems. So you might want to leave that comment as-is.
>> 
>> True. I might just buff that out when sending the patch to Junio,
>unless
>> protocol dictates otherwise - a reroll for a single comment line
>seems
>> a bit excessive to me at the moment.
>
>I don't think it is that big a deal either way.
>
>It's fine to tweak when you send re-roll the final for Junio. Sometimes
>for trivial fixups like this, Junio can just tweak it as he applies,
>but
>I do not know if he is even paying attention to this thread, so you may
>want to re-post anyway to get his attention.
Sure, sounds good and will do.
>Either way, feel free to add my:
>
>  Reviewed-by: Jeff King <peff@peff.net>
Awesome, thanks again.

Regards, James Denholm.

Jeff King· May 5, 2014, 05:08 UTC · re: James Denholm · lore

Re: [PATCH v2 0/5] contrib/subtree/Makefile: Standardisation pass

On Sat, May 03, 2014 at 10:49:30PM +1000, James Denholm wrote:
Show 6 quoted lines
> The main issues are that calls are made to git itself in the build
> process, and that a subtree-exclusive variable is used for specifying
> the exec path. Patches 1/5 through 3/5 resolve these.
> 
> The "cleanup" fixes (4/5 and 5/5) are based on precedents set by other
> makefiles across the project.

Thanks, these all look sane to me (I do not use subtree, but since it's just about Makefiles, it was pretty easy to review).

> One problem is foreseen: 3/5 will necessitate that package maintainers
> who already have git-subtree included in their packages update their
> build-scripts.

I think that's probably OK. We strive for backwards compatibility in the tool itself, but refactoring Makefiles in contrib/ affects a pretty limited audience.

-Peff
James Denholm· May 5, 2014, 21:54 UTC · re: Jeff King · lore

Re: [PATCH v2 0/5] contrib/subtree/Makefile: Standardisation pass

On 5 May 2014 15:08:04 GMT+10:00, Jeff King <peff@peff.net> wrote:
Show 12 quoted lines
>On Sat, May 03, 2014 at 10:49:30PM +1000, James Denholm wrote:
>
>> The main issues are that calls are made to git itself in the build
>> process, and that a subtree-exclusive variable is used for specifying
>> the exec path. Patches 1/5 through 3/5 resolve these.
>> 
>> The "cleanup" fixes (4/5 and 5/5) are based on precedents set by
>other
>> makefiles across the project.
>
>Thanks, these all look sane to me (I do not use subtree, but since it's
>just about Makefiles, it was pretty easy to review).
Thanks for the review!

Given that subtree subtree doesn't really generate a lot of discussion, would it be advisable to wrap this up (barring further discussion) and send it off to Junio rather than waiting for further community consensus?

Regards, James Denholm.

Jeff King· May 5, 2014, 22:01 UTC · re: James Denholm · lore

Re: [PATCH v2 0/5] contrib/subtree/Makefile: Standardisation pass

[fixed David's address in cc list]
On Tue, May 06, 2014 at 07:54:30AM +1000, James Denholm wrote:
> Given that subtree subtree doesn't really generate a lot of discussion,
> would it be advisable to wrap this up (barring further discussion) and send
> it off to Junio rather than waiting for further community consensus?

I do not know if "lack of discussion" is a good reason to consider something in good shape; oftentimes it is a sign that nobody is interested in the area. We usually rely on "area maintainers" to give an OK to the patches if they are not something that the maintainer himself has an interest in.

However, in this case, you did get review, and I think it is pretty easy to see the patches are good even if one does not care about the particular area. So I think they are fine to pass on and apply.

Note also that patches like this are a great place to get started, as they help build trust in a contributor, who can later help out with area maintenance.

-Peff
James Denholm· May 6, 2014, 12:41 UTC · re: Jeff King · lore

Re: [PATCH v2 0/5] contrib/subtree/Makefile: Standardisation pass

On 6 May 2014 08:01, Jeff King <peff@peff.net> wrote:
> [fixed David's address in cc list]
Ah, right. Wasn't sure what was going on there.
Show 11 quoted lines
> On Tue, May 06, 2014 at 07:54:30AM +1000, James Denholm wrote:
>
>> Given that subtree subtree doesn't really generate a lot of discussion,
>> would it be advisable to wrap this up (barring further discussion) and send
>> it off to Junio rather than waiting for further community consensus?
>
> I do not know if "lack of discussion" is a good reason to consider
> something in good shape; oftentimes it is a sign that nobody is
> interested in the area. We usually rely on "area maintainers" to give an
> OK to the patches if they are not something that the maintainer himself
> has an interest in.

Yeah, I certainly only meant that in the context of this particular patch, post-review.

> However, in this case, you did get review, and I think it is pretty easy
> to see the patches are good even if one does not care about the
> particular area. So I think they are fine to pass on and apply.
Sounds good, I'll send it on up now. Thanks again for the help.
> Note also that patches like this are a great place to get started, as
> they help build trust in a contributor, who can later help out with
> area maintenance.

Yeah, to be honest, beyond the immediate goal of getting subtree in more distros, that is kinda the plan. A bit of a practical experience in contributing to the project, learning the specific ropes and such before proposing more substantial discussion and fixes/changes.

--- Regards, James Denholm.

← back to recent threads