On 2020-08-13 14:52:33-0700, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > > > On Wed, Aug 12, 2020 at 4:16 AM Alexander Ost <ost@xxxxxxxx> 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? > +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