# [PATCH] Install builtins with the user and group of the installing personality

4 messages from 2009-02-23 to 2009-02-25. Participants: Gerrit Pape, Johannes Sixt, Junio C Hamano.
Thread: https://gitlist.dev/t/17971

## Gerrit Pape, 2009-02-23 15:50

Subject: [PATCH] Install builtins with the user and group of the installing personality
Message-ID: <20090223155042.14806.qmail@518da7eef5d9e4.315fe32.mid.smarden.org>
URL: https://gitlist.dev/e/20090223155042.14806.qmail%40518da7eef5d9e4.315fe32.mid.smarden.org

```
If 'make install' was run with sufficient privileges, then the installed
builtins in gitexecdir, which are either hardlinked, symlinked, or copied,
would receive the user and group of whoever built git.  With this commit the
git-add program is installed using $(INSTALL), and subsequently linked or
copied to the other builtins.

Signed-off-by: Gerrit Pape <pape@smarden.org>
---
 Makefile |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index b040a96..7401603 100644
--- a/Makefile
+++ b/Makefile
@@ -1467,9 +1467,7 @@ ifneq (,$X)
 endif
 	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
 	execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
-	{ $(RM) "$$execdir/git-add$X" && \
-		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
-		cp git-add$X "$$execdir/git-add$X"; } && \
+	$(INSTALL) git-add$X "$$execdir" && \
 	{ for p in $(filter-out git-add$X,$(BUILT_INS)); do \
 		$(RM) "$$execdir/$$p" && \
 		ln "$$execdir/git-add$X" "$$execdir/$$p" 2>/dev/null || \
-- 
1.6.1.3

```

## Johannes Sixt, 2009-02-23 17:00

Subject: Re: [PATCH] Install builtins with the user and group of the installing personality
Message-ID: <49A2D644.6040106@viscovery.net>
URL: https://gitlist.dev/e/49A2D644.6040106%40viscovery.net
In-Reply-To: <20090223155042.14806.qmail@518da7eef5d9e4.315fe32.mid.smarden.org>

```
Gerrit Pape schrieb:
> If 'make install' was run with sufficient privileges, then the installed
> builtins in gitexecdir, which are either hardlinked, symlinked, or copied,
> would receive the user and group of whoever built git.  With this commit the
> git-add program is installed using $(INSTALL), and subsequently linked or
> copied to the other builtins.
> 
> Signed-off-by: Gerrit Pape <pape@smarden.org>
> ---
>  Makefile |    4 +---
>  1 files changed, 1 insertions(+), 3 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index b040a96..7401603 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1467,9 +1467,7 @@ ifneq (,$X)
>  endif
>  	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
>  	execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
> -	{ $(RM) "$$execdir/git-add$X" && \
> -		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
> -		cp git-add$X "$$execdir/git-add$X"; } && \
> +	$(INSTALL) git-add$X "$$execdir" && \
>  	{ for p in $(filter-out git-add$X,$(BUILT_INS)); do \
>  		$(RM) "$$execdir/$$p" && \
>  		ln "$$execdir/git-add$X" "$$execdir/$$p" 2>/dev/null || \

I think the intent of the lines that you removed was actually this:

diff --git a/Makefile b/Makefile
index 27b9569..97087c3 100644
--- a/Makefile
+++ b/Makefile
@@ -1471,8 +1471,8 @@ endif
 	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
 	execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
 	{ $(RM) "$$execdir/git-add$X" && \
-		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
-		cp git-add$X "$$execdir/git-add$X"; } && \
+		ln "$$bindir/git$X" "$$execdir/git-add$X" 2>/dev/null || \
+		cp "$$bindir/git$X" "$$execdir/git-add$X"; } && \
 	{ for p in $(filter-out git-add$X,$(BUILT_INS)); do \
 		$(RM) "$$execdir/$$p" && \
 		ln "$$execdir/git-add$X" "$$execdir/$$p" 2>/dev/null || \

-- Hannes

```

## Gerrit Pape, 2009-02-24 08:58

Subject: [PATCH] Install builtins with the user and group of the installing personality
Message-ID: <20090224085817.16736.qmail@86bc3118539950.315fe32.mid.smarden.org>
URL: https://gitlist.dev/e/20090224085817.16736.qmail%4086bc3118539950.315fe32.mid.smarden.org
In-Reply-To: <49A2D644.6040106@viscovery.net>

```
If 'make install' was run with sufficient privileges, then the installed
builtins in gitexecdir, which are either hardlinked, symlinked, or copied,
would receive the user and group of whoever built git.  With this commit
the initial hardlink or copy is done from the installation tree and not
the build tree to fix this.

Signed-off-by: Gerrit Pape <pape@smarden.org>
---

Thanks, Johannes.


 Makefile |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index b040a96..0675c43 100644
--- a/Makefile
+++ b/Makefile
@@ -1468,8 +1468,8 @@ endif
 	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
 	execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
 	{ $(RM) "$$execdir/git-add$X" && \
-		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
-		cp git-add$X "$$execdir/git-add$X"; } && \
+		ln "$$bindir/git$X" "$$execdir/git-add$X" 2>/dev/null || \
+		cp "$$bindir/git$X" "$$execdir/git-add$X"; } && \
 	{ for p in $(filter-out git-add$X,$(BUILT_INS)); do \
 		$(RM) "$$execdir/$$p" && \
 		ln "$$execdir/git-add$X" "$$execdir/$$p" 2>/dev/null || \
-- 
1.6.1.3

```

## Junio C Hamano, 2009-02-25 09:54

Subject: Re: [PATCH] Install builtins with the user and group of the installing personality
Message-ID: <7vmyca6dvp.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vmyca6dvp.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <20090224085817.16736.qmail@86bc3118539950.315fe32.mid.smarden.org>

```
Thanks, both.

```
