threads / patch / 15247

patchFix use of hardlinks in "make install"

Subject: [PATCH] Fix use of hardlinks in "make install"

## tl;dr

8 messages between Aug 28, 2008 and Aug 30, 2008. Diffs are folded; open one to read it.

replies: 7people: 2as markdown or json

Alex Riesen· Aug 28, 2008, 14:04 UTC · lore

The code tried to create a hardlink to the file ($execdir/git-add) it just removed, so ln failed (but because stderr was redirected into /dev/null the error was never seen), and the whole install ended up using "ln -s" instead.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
It created endless symlink loops on cygwin, but obviously nowhere else.
 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
From 943e0824b9fd1a8c2798ae9fd341b6a9b7429cc1 Mon Sep 17 00:00:00 2001
From: Alex Riesen <raa.lkml@gmail.com>
Date: Thu, 28 Aug 2008 15:57:32 +0200
Subject: [PATCH] Fix use of hardlinks in "make install"

The code tried to create a hardlink to the file ($execdir/git-add) it just removed, so ln failed (but because stderr was redirected into /dev/null the error was never seen), and the whole install ended up using "ln -s" instead.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to Makefile +1 −1
diff --git a/Makefile b/Makefile
index bf400e6..20a1704 100644
--- a/Makefile
+++ b/Makefile
@@ -1380,7 +1380,7 @@ endif
 		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
 		cp git-add$X "$$execdir/git-add$X"; } && \
 	{ $(foreach p,$(filter-out git-add,$(BUILT_INS)), $(RM) "$$execdir/$p" && \
-		ln "$$execdir/git-add$X" "$$execdir/$p" 2>/dev/null || \
+		ln "git-add$X" "$$execdir/$p" || \
 		ln -s "git-add$X" "$$execdir/$p" 2>/dev/null || \
 		cp "$$execdir/git-add$X" "$$execdir/$p" || exit;) } && \
 	./check_bindir "z$$bindir" "z$$execdir" "$$bindir/git-add$X"
-- 
1.6.0.1.150.g8307.dirty
Alex Riesen· Aug 28, 2008, 14:17 UTC · re: Alex Riesen · lore

Re: [PATCH] Fix use of hardlinks in "make install"

2008/8/28 Alex Riesen <raa.lkml@gmail.com>:
Show 9 quoted lines
> The code tried to create a hardlink to the file ($execdir/git-add) it just
> removed, so ln failed (but because stderr was redirected into /dev/null the
> error was never seen), and the whole install ended up using "ln -s" instead.
>
> Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
> ---
>
> It created endless symlink loops on cygwin, but obviously nowhere else.
>
Sh@#! Scrap that, there is something else going on in that cygwindows thing...
Alex Riesen· Aug 28, 2008, 14:30 UTC · re: Alex Riesen · lore

The code failed to filter-out git-add properly on platforms were $X is not empty (ATM there is only one such a platform).

Than it tried to create a hardlink to the file ($execdir/git-add) it just removed (because git-add is first in the BUILT_INS), so ln failed (but because stderr was redirected into /dev/null the error was never seen), and the whole install ended up using "ln -s" instead.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
2008/8/28 Alex Riesen <raa.lkml@gmail.com>:
Show 7 quoted lines
> 2008/8/28 Alex Riesen <raa.lkml@gmail.com>:
>>
>> It created endless symlink loops on cygwin, but obviously nowhere else.
>>
>
> Sh@#! Scrap that, there is something else going on in that cygwindows thing...
>

Well, as usual, simple fix for trivial typo caused by existence of an idiotic platform.

From 6d83dbb0e3b78bfaad9522b2266d0864e434acce Mon Sep 17 00:00:00 2001
From: Alex Riesen <raa.lkml@gmail.com>
Date: Thu, 28 Aug 2008 15:57:32 +0200
Subject: [PATCH] Fix use of hardlinks in "make install"

The code failed to filter-out git-add properly on platforms were $X is not empty (ATM there is only one such a platform).

Than it tried to create a hardlink to the file ($execdir/git-add) it just removed (because git-add is first in the BUILT_INS), so ln failed (but because stderr was redirected into /dev/null the error was never seen), and the whole install ended up using "ln -s" instead.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to Makefile +1 −1
diff --git a/Makefile b/Makefile
index bf400e6..20f028f 100644
--- a/Makefile
+++ b/Makefile
@@ -1379,7 +1379,7 @@ endif
 	{ $(RM) "$$execdir/git-add$X" && \
 		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
 		cp git-add$X "$$execdir/git-add$X"; } && \
-	{ $(foreach p,$(filter-out git-add,$(BUILT_INS)), $(RM) "$$execdir/$p" && \
+	{ $(foreach p,$(filter-out git-add$X,$(BUILT_INS)), $(RM) "$$execdir/$p" && \
 		ln "$$execdir/git-add$X" "$$execdir/$p" 2>/dev/null || \
 		ln -s "git-add$X" "$$execdir/$p" 2>/dev/null || \
 		cp "$$execdir/git-add$X" "$$execdir/$p" || exit;) } && \
-- 
1.6.0.1.152.g6969c
Alex Riesen· Aug 30, 2008, 00:20 UTC · re: Alex Riesen · lore

[PATCH/resend] Fix use of hardlinks in "make install"

The code failed to filter-out git-add properly on platforms were $X is not empty (ATM there is only one such a platform).

Than it tried to create a hardlink to the file ($execdir/git-add) it just removed (because git-add is first in the BUILT_INS), so ln failed (but because stderr was redirected into /dev/null the error was never seen), and the whole install ended up using "ln -s" instead.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
2008/8/28 Alex Riesen <raa.lkml@gmail.com>:
Show 7 quoted lines
> 2008/8/28 Alex Riesen <raa.lkml@gmail.com>:
>>
>> It created endless symlink loops on cygwin, but obviously nowhere else.
>>
>
> Sh@#! Scrap that, there is something else going on in that cygwindows thing...
>

Well, as usual, simple fix for a trivial typo caused by existence of an idiotic platform.

 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to Makefile +1 −1
diff --git a/Makefile b/Makefile
index bf400e6..20f028f 100644
--- a/Makefile
+++ b/Makefile
@@ -1379,7 +1379,7 @@ endif
 	{ $(RM) "$$execdir/git-add$X" && \
 		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
 		cp git-add$X "$$execdir/git-add$X"; } && \
-	{ $(foreach p,$(filter-out git-add,$(BUILT_INS)), $(RM) "$$execdir/$p" && \
+	{ $(foreach p,$(filter-out git-add$X,$(BUILT_INS)), $(RM) "$$execdir/$p" && \
 		ln "$$execdir/git-add$X" "$$execdir/$p" 2>/dev/null || \
 		ln -s "git-add$X" "$$execdir/$p" 2>/dev/null || \
 		cp "$$execdir/git-add$X" "$$execdir/$p" || exit;) } && \
-- 
1.6.0.1.152.g6969c
Andreas Färber· Aug 30, 2008, 08:59 UTC · re: Alex Riesen · lore

Re: [PATCH/resend] Fix use of hardlinks in "make install"

Am 30.08.2008 um 02:20 schrieb Alex Riesen:
Show 12 quoted lines
> The code failed to filter-out git-add properly on platforms were $X is
> not empty (ATM there is only one such a platform).
>
> Than it tried to create a hardlink to the file ($execdir/git-add) it  
> just
> removed (because git-add is first in the BUILT_INS), so ln failed (but
> because stderr was redirected into /dev/null the error was never  
> seen), and
> the whole install ended up using "ln -s" instead.
>
> Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
> ---
Show 24 quoted lines
> Well, as usual, simple fix for a trivial typo caused by existence of  
> an
> idiotic platform.
>
> Makefile |    2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index bf400e6..20f028f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1379,7 +1379,7 @@ endif
> 	{ $(RM) "$$execdir/git-add$X" && \
> 		ln git-add$X "$$execdir/git-add$X" 2>/dev/null || \
> 		cp git-add$X "$$execdir/git-add$X"; } && \
> -	{ $(foreach p,$(filter-out git-add,$(BUILT_INS)), $(RM) "$$execdir/ 
> $p" && \
> +	{ $(foreach p,$(filter-out git-add$X,$(BUILT_INS)), $(RM) "$ 
> $execdir/$p" && \
> 		ln "$$execdir/git-add$X" "$$execdir/$p" 2>/dev/null || \
> 		ln -s "git-add$X" "$$execdir/$p" 2>/dev/null || \
> 		cp "$$execdir/git-add$X" "$$execdir/$p" || exit;) } && \
> -- 
> 1.6.0.1.152.g6969c

Your patch seems to work on Haiku, don't have a MinGW setup to test. Sorry for the breakage.

Andreas
Alex Riesen· Aug 30, 2008, 10:08 UTC · re: Andreas Färber · lore

Re: [PATCH/resend] Fix use of hardlinks in "make install"

2008/8/30 Andreas Färber <planche2k@googlemail.com>:
Show 7 quoted lines
> Am 30.08.2008 um 02:20 schrieb Alex Riesen:
>
>> Well, as usual, simple fix for a trivial typo caused by existence of an
>> idiotic platform.
>>
> Your patch seems to work on Haiku, don't have a MinGW setup to test. Sorry
> for the breakage.
What?! Haiku uses stupid file extensions to mark executables?
Andreas Färber· Aug 30, 2008, 11:39 UTC · re: Alex Riesen · lore

Re: [PATCH/resend] Fix use of hardlinks in "make install"

Am 30.08.2008 um 12:08 schrieb Alex Riesen:
Show 12 quoted lines
> 2008/8/30 Andreas Färber <planche2k@googlemail.com>:
>> Am 30.08.2008 um 02:20 schrieb Alex Riesen:
>>
>>> Well, as usual, simple fix for a trivial typo caused by existence  
>>> of an
>>> idiotic platform.
>>>
>> Your patch seems to work on Haiku, don't have a MinGW setup to  
>> test. Sorry
>> for the breakage.
>
> What?! Haiku uses stupid file extensions to mark executables?

No, it doesn't. Like BeOS, it uses MIME types stored as BFS attributes as well as the standard POSIX executable bit.

Since no one appeared to have replied yet, I confirmed that your Windows patch does not break things here and looks reasonable to me as co-author of the offending commit.

Andreas
Alex Riesen· Aug 30, 2008, 15:48 UTC · re: Andreas Färber · lore

Re: [PATCH/resend] Fix use of hardlinks in "make install"

2008/8/30 Andreas Färber <planche2k@googlemail.com>:
>
> Since no one appeared to have replied yet, I confirmed that your Windows
> patch does not break things here and looks reasonable to me as co-author of
> the offending commit.
Ok

← back to recent threads