Re: [BUG] `make install' partly ignores `NO_INSTALL_HARDLINKS'
- From
Đoàn Trần Công Danh <congdanhqx@gmail.com>
- Date
- Aug 14, 2020, 15:02 UTC
- Message-ID
- <20200814150214.GC9518@danh.dev>
- In-Reply-To
- <xmqqimdm1ae6.fsf@gitster.c.googlers.com>
On 2020-08-13 14:52:33-0700, Junio C Hamano <gitster@pobox.com> wrote:
Show 41 quoted lines
> Eric Sunshine <sunshine@sunshineco.com> writes: > > > On Wed, Aug 12, 2020 at 4:16 AM Alexander Ost <ost@ieee.org> wrote: > >> Despite installing with `make NO_INSTALL_HARDLINKS=1 install', the > >> installation process tries to create hard links, and the installation > >> fails (a quick workaround is `sed -i git-gui/Makefile -e "s/ln /ln -s > >> /g"'). > >> > >> make NO_INSTALL_HARDLINKS=1 install > >> ln: failed to create hard link > >> ‘/filesystem_without_hardlink_support/libexec/git-core/git-citool’ => > >> ‘/filesystem_without_hardlink_support/libexec/git-core/git-gui’: > >> Operation not permitted > > > > Indeed, it appears that the git-gui Makefile does not respect > > NO_INSTALL_HARDLINKS. The git-gui project is maintained and developed > > outside of the Git project (even though it gets bundled with Git), so > > it has its own issue tracker. It would probably be best to re-submit > > this bug report there: > > > > https://github.com/prati0100/git-gui/issues > > Thanks. Perhaps something along this line (which is totally > untested), as the top-level Makefile already exports > NO_INSTALL_HARDLINKS to submakes? > > > > Makefile | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/Makefile b/Makefile > index f10caedaa7..1cdbf8e504 100644 > --- a/Makefile > +++ b/Makefile > @@ -44,6 +44,11 @@ endif > ifndef INSTALL > INSTALL = install > endif > +ifdef NO_INSTALL_HARDLINKS > + LN = cp
Since both git-citool and git-gui will be installed into same directory "$(libexecdir)", I think it would make more sense to use:
LN = ln -s
here instead?
Show 24 quoted lines
> +else > + LN = ln > +endif > > RM_RF ?= rm -rf > RMDIR ?= rmdir > @@ -57,7 +62,7 @@ INSTALL_X1 = > INSTALL_A0 = find # space is required here > INSTALL_A1 = | cpio -pud > INSTALL_L0 = rm -f # space is required here > -INSTALL_L1 = && ln # space is required here > +INSTALL_L1 = && $(LN) # space is required here > INSTALL_L2 = > INSTALL_L3 = > > @@ -87,7 +92,7 @@ ifndef V > INSTALL_L0 = dst= > INSTALL_L1 = && src= > INSTALL_L2 = && dst= > - INSTALL_L3 = && echo ' ' 'LINK ' `basename "$$dst"` '->' `basename "$$src"` && rm -f "$$dst" && ln "$$src" "$$dst" > + INSTALL_L3 = && echo ' ' 'LINK ' `basename "$$dst"` '->' `basename "$$src"` && rm -f "$$dst" && $(LN) "$$src" "$$dst" > > CLEAN_DST = echo ' ' UNINSTALL > REMOVE_D0 = dir=
-- Danh