git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Carlo Marcelo Arenas Belón" <carenas@gmail.com>
Cc: Daniel Villeneuve <dvilleneuve.4142@gmail.com>, git@vger.kernel.org
Subject: Re: permissions of main folder for git-manpages.tar.gz
Date: Wed, 09 Sep 2020 12:07:12 -0700	[thread overview]
Message-ID: <xmqqimcmvkf3.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <20200909032838.GA59978@Carlos-MBP> ("Carlo Marcelo Arenas Belón"'s message of "Tue, 8 Sep 2020 20:28:38 -0700")

Carlo Marcelo Arenas Belón <carenas@gmail.com> writes:

> On Tue, Sep 08, 2020 at 05:09:35PM -0700, Junio C Hamano wrote:
>> 
>> I'm contemplating to apply something like the following patch to the
>> build procedure so that I can externally control the mode bits
>> recorded in the tarball by setting TAR_C_EXTRA_OPTS to options that
>> overrides mode bits and stuff (it takes GNU tar unfortunately, but
>> I suspect I am the only person that runs dist-doc target anyway)
>
> also useful (albeit not for the same reason) with BSD tar for adding
> things like "--check-links", either way don't forget the signed-off
> while adding:
>
>   Tested-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>

I just realized that we should do the same for the soure release
tarball, not just preformatted documentation tarballs that are not
really sources.

The use of the 'c' mode with 'tar' is an implementation detail of
doing a 'distribution'; TAR_C_EXTRA_OPTS in the draft version was
renamed to TAR_DIST_EXTRA_OPTS to make it more clear that this is
for use with $(TAR) for dist targets.

Thanks.

-- >8 --
From: Junio C Hamano <gitster@pobox.com>
Date: Wed, 9 Sep 2020 11:53:04 -0700
Subject: [PATCH] Makefile: allow extra tweaking of distribution tarball

The maintainer's dist rules are used to produce distribution
tarballs.  They use "$(TAR) cf" and "$(TAR) rf" to produce archives
out of a freshly created local installation area, which means that
the built product can be affected by maintainer's umask and other
local environment.

Implementations of "tar" have ways (implementation specific,
unfortunately) to force permission bits and other stuff to allow the
user to hide these effects coming from the local environment.  Teach
our Makefile to allow the maintainer to tweak the invocation of the
$(TAR) commands by setting TAR_DIST_EXTRA_OPTS.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Makefile | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 86e5411f39..62e8bfcf6e 100644
--- a/Makefile
+++ b/Makefile
@@ -2992,6 +2992,9 @@ 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)
 dist: git-archive$(X) configure
 	./git-archive --format=tar \
@@ -3000,7 +3003,7 @@ dist: git-archive$(X) configure
 	@cp configure $(GIT_TARNAME)
 	@echo $(GIT_VERSION) > $(GIT_TARNAME)/version
 	@$(MAKE) -C git-gui TARDIR=../$(GIT_TARNAME)/git-gui dist-version
-	$(TAR) rf $(GIT_TARNAME).tar \
+	$(TAR) rf $(GIT_TARNAME).tar $(TAR_DIST_EXTRA_OPTS) \
 		$(GIT_TARNAME)/configure \
 		$(GIT_TARNAME)/version \
 		$(GIT_TARNAME)/git-gui/version
@@ -3014,7 +3017,7 @@ ifdef DC_SHA1_SUBMODULE
 		$(GIT_TARNAME)/sha1collisiondetection/lib/
 	@cp sha1collisiondetection/lib/ubc_check.[ch] \
 		$(GIT_TARNAME)/sha1collisiondetection/lib/
-	$(TAR) rf $(GIT_TARNAME).tar \
+	$(TAR) rf $(GIT_TARNAME).tar $(TAR_DIST_EXTRA_OPTS) \
 		$(GIT_TARNAME)/sha1collisiondetection/LICENSE.txt \
 		$(GIT_TARNAME)/sha1collisiondetection/lib/sha1.[ch] \
 		$(GIT_TARNAME)/sha1collisiondetection/lib/ubc_check.[ch]
@@ -3048,7 +3051,7 @@ dist-doc:
 	$(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 .
+	cd .doc-tmp-dir && $(TAR) cf ../$(htmldocs).tar $(TAR_DIST_EXTRA_OPTS) .
 	gzip -n -9 -f $(htmldocs).tar
 	:
 	$(RM) -r .doc-tmp-dir
@@ -3058,7 +3061,7 @@ dist-doc:
 		man5dir=../.doc-tmp-dir/man5 \
 		man7dir=../.doc-tmp-dir/man7 \
 		install
-	cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar .
+	cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar $(TAR_DIST_EXTRA_OPTS) .
 	gzip -n -9 -f $(manpages).tar
 	$(RM) -r .doc-tmp-dir
 
-- 
2.28.0-558-g7a0184fd7b


      parent reply	other threads:[~2020-09-09 19:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-08 15:56 permissions of main folder for git-manpages.tar.gz Daniel Villeneuve
2020-09-09  0:09 ` Junio C Hamano
2020-09-09  3:28   ` Carlo Marcelo Arenas Belón
2020-09-09 18:10     ` Junio C Hamano
2020-09-09 19:07     ` Junio C Hamano [this message]

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=xmqqimcmvkf3.fsf@gitster.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=carenas@gmail.com \
    --cc=dvilleneuve.4142@gmail.com \
    --cc=git@vger.kernel.org \
    /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).