Makefile: NO_INSTALL_HARDLINKS

Your filesystem may support hardlinks, but you may choose not to use them
when installing git-foo builtins and favor symblic links or copies for
whatever reason.

The installation procedure of git-gui/ directory is not touched with this
patch and git-citool still ends up being a hardlink to git-gui, but it
needs to be addressed separately.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2012-05-02 15:12:10 -07:00
parent d0f1ea6003
commit 70de5e65e8

View File

@ -244,6 +244,9 @@ all::
# Define NO_CROSS_DIRECTORY_HARDLINKS if you plan to distribute the installed # Define NO_CROSS_DIRECTORY_HARDLINKS if you plan to distribute the installed
# programs as a tar, where bin/ and libexec/ might be on different file systems. # programs as a tar, where bin/ and libexec/ might be on different file systems.
# #
# Define NO_INSTALL_HARDLINKS if you prefer to use either symbolic links or
# copies to install built-in git commands e.g. git-cat-file.
#
# Define USE_NED_ALLOCATOR if you want to replace the platforms default # Define USE_NED_ALLOCATOR if you want to replace the platforms default
# memory allocators with the nedmalloc allocator written by Niall Douglas. # memory allocators with the nedmalloc allocator written by Niall Douglas.
# #
@ -1777,6 +1780,10 @@ ifdef ASCIIDOC7
export ASCIIDOC7 export ASCIIDOC7
endif endif
ifdef NO_INSTALL_HARDLINKS
export NO_INSTALL_HARDLINKS
endif
### profile feedback build ### profile feedback build
# #
@ -2482,19 +2489,21 @@ endif
{ test "$$bindir/" = "$$execdir/" || \ { test "$$bindir/" = "$$execdir/" || \
for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \ for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
$(RM) "$$execdir/$$p" && \ $(RM) "$$execdir/$$p" && \
test -z "$(NO_CROSS_DIRECTORY_HARDLINKS)" && \ test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \ ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
cp "$$bindir/$$p" "$$execdir/$$p" || exit; \ cp "$$bindir/$$p" "$$execdir/$$p" || exit; \
done; \ done; \
} && \ } && \
for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \ for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \
$(RM) "$$bindir/$$p" && \ $(RM) "$$bindir/$$p" && \
test -z "$(NO_INSTALL_HARDLINKS)" && \
ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \ ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \ ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
cp "$$bindir/git$X" "$$bindir/$$p" || exit; \ cp "$$bindir/git$X" "$$bindir/$$p" || exit; \
done && \ done && \
for p in $(BUILT_INS); do \ for p in $(BUILT_INS); do \
$(RM) "$$execdir/$$p" && \ $(RM) "$$execdir/$$p" && \
test -z "$(NO_INSTALL_HARDLINKS)" && \
ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \ ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
cp "$$execdir/git$X" "$$execdir/$$p" || exit; \ cp "$$execdir/git$X" "$$execdir/$$p" || exit; \
@ -2502,6 +2511,7 @@ endif
remote_curl_aliases="$(REMOTE_CURL_ALIASES)" && \ remote_curl_aliases="$(REMOTE_CURL_ALIASES)" && \
for p in $$remote_curl_aliases; do \ for p in $$remote_curl_aliases; do \
$(RM) "$$execdir/$$p" && \ $(RM) "$$execdir/$$p" && \
test -z "$(NO_INSTALL_HARDLINKS)" && \
ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \
ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \
cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \