# [PATCH] Makefile: use git init/add/commit/archive for dist-doc

3 messages from 2020-10-10 to 2020-10-12. Participants: René Scharfe, Junio C Hamano.
Thread: https://gitlist.dev/t/54387

## René Scharfe, 2020-10-10 16:45

Subject: [PATCH] Makefile: use git init/add/commit/archive for dist-doc
Message-ID: <40da2404-8504-e134-7176-f3429c081f12@web.de>
URL: https://gitlist.dev/e/40da2404-8504-e134-7176-f3429c081f12%40web.de

```
Reduce the dependency on external tools by generating the distribution
archives for HTML documentation and manpages using git commands instead
of tar. This gives the archive entries the same meta data as those in
the dist archive for binaries.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 Makefile | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 95571ee3fc..b7f3708292 100644
--- a/Makefile
+++ b/Makefile
@@ -3105,11 +3105,15 @@ artifacts-tar:: $(ALL_COMMANDS_TO_INSTALL) $(SCRIPT_LIB) $(OTHER_PROGRAMS) \
 htmldocs = git-htmldocs-$(GIT_VERSION)
 manpages = git-manpages-$(GIT_VERSION)
 .PHONY: dist-doc distclean
-dist-doc:
+dist-doc: git$X
 	$(RM) -r .doc-tmp-dir
 	mkdir .doc-tmp-dir
 	$(MAKE) -C Documentation WEBDOC_DEST=../.doc-tmp-dir install-webdoc
-	cd .doc-tmp-dir && $(TAR) cf ../$(htmldocs).tar $(TAR_DIST_EXTRA_OPTS) .
+	./git -C .doc-tmp-dir init
+	./git -C .doc-tmp-dir add .
+	./git -C .doc-tmp-dir commit -m htmldocs
+	./git -C .doc-tmp-dir archive --format=tar --prefix=./ HEAD^{tree} \
+		> $(htmldocs).tar
 	gzip -n -9 -f $(htmldocs).tar
 	:
 	$(RM) -r .doc-tmp-dir
@@ -3119,7 +3123,11 @@ dist-doc:
 		man5dir=../.doc-tmp-dir/man5 \
 		man7dir=../.doc-tmp-dir/man7 \
 		install
-	cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar $(TAR_DIST_EXTRA_OPTS) .
+	./git -C .doc-tmp-dir init
+	./git -C .doc-tmp-dir add .
+	./git -C .doc-tmp-dir commit -m manpages
+	./git -C .doc-tmp-dir archive --format=tar --prefix=./ HEAD^{tree} \
+		> $(manpages).tar
 	gzip -n -9 -f $(manpages).tar
 	$(RM) -r .doc-tmp-dir

--
2.28.0

```

## René Scharfe, 2020-10-11 06:14

Subject: [PATCH 2/1] Makefile: remove the unused variable TAR_DIST_EXTRA_OPTS
Message-ID: <a3cf2838-b67d-841e-f5be-887825b5e1e7@web.de>
URL: https://gitlist.dev/e/a3cf2838-b67d-841e-f5be-887825b5e1e7%40web.de
In-Reply-To: <40da2404-8504-e134-7176-f3429c081f12@web.de>

```
Signed-off-by: René Scharfe <l.s.r@web.de>
---
 Makefile | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Makefile b/Makefile
index b7f3708292..db8f07898d 100644
--- a/Makefile
+++ b/Makefile
@@ -3053,9 +3053,6 @@ quick-install-html:

 ### Maintainer's dist rules

-# Allow tweaking to hide local environment effects, like perm bits.
-# With GNU tar, "--mode=u+rwX,og+rX,og-w" would be a good idea, for example.
-TAR_DIST_EXTRA_OPTS =
 GIT_TARNAME = git-$(GIT_VERSION)
 GIT_ARCHIVE_EXTRA_FILES = \
 	--prefix=$(GIT_TARNAME)/ \
--
2.28.0

```

## Junio C Hamano, 2020-10-12 19:20

Subject: Re: [PATCH] Makefile: use git init/add/commit/archive for dist-doc
Message-ID: <xmqqft6jp7xs.fsf@gitster.c.googlers.com>
URL: https://gitlist.dev/e/xmqqft6jp7xs.fsf%40gitster.c.googlers.com
In-Reply-To: <40da2404-8504-e134-7176-f3429c081f12@web.de>

```
René Scharfe <l.s.r@web.de> writes:

> Reduce the dependency on external tools by generating the distribution
> archives for HTML documentation and manpages using git commands instead
> of tar. This gives the archive entries the same meta data as those in
> the dist archive for binaries.

Hmph.  I vaguely recall somebody on a more exotic platform wanted
our "tar" invocations to be tweakable as their "tar" lacked options
or something like that, and hopefully pushing our build procedure in
this direction would help them.

Will queue.  Thanks.

> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
>  Makefile | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 95571ee3fc..b7f3708292 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -3105,11 +3105,15 @@ artifacts-tar:: $(ALL_COMMANDS_TO_INSTALL) $(SCRIPT_LIB) $(OTHER_PROGRAMS) \
>  htmldocs = git-htmldocs-$(GIT_VERSION)
>  manpages = git-manpages-$(GIT_VERSION)
>  .PHONY: dist-doc distclean
> -dist-doc:
> +dist-doc: git$X
>  	$(RM) -r .doc-tmp-dir
>  	mkdir .doc-tmp-dir
>  	$(MAKE) -C Documentation WEBDOC_DEST=../.doc-tmp-dir install-webdoc
> -	cd .doc-tmp-dir && $(TAR) cf ../$(htmldocs).tar $(TAR_DIST_EXTRA_OPTS) .
> +	./git -C .doc-tmp-dir init
> +	./git -C .doc-tmp-dir add .
> +	./git -C .doc-tmp-dir commit -m htmldocs
> +	./git -C .doc-tmp-dir archive --format=tar --prefix=./ HEAD^{tree} \
> +		> $(htmldocs).tar
>  	gzip -n -9 -f $(htmldocs).tar
>  	:
>  	$(RM) -r .doc-tmp-dir
> @@ -3119,7 +3123,11 @@ dist-doc:
>  		man5dir=../.doc-tmp-dir/man5 \
>  		man7dir=../.doc-tmp-dir/man7 \
>  		install
> -	cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar $(TAR_DIST_EXTRA_OPTS) .
> +	./git -C .doc-tmp-dir init
> +	./git -C .doc-tmp-dir add .
> +	./git -C .doc-tmp-dir commit -m manpages
> +	./git -C .doc-tmp-dir archive --format=tar --prefix=./ HEAD^{tree} \
> +		> $(manpages).tar
>  	gzip -n -9 -f $(manpages).tar
>  	$(RM) -r .doc-tmp-dir
>
> --
> 2.28.0

```
