git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/3] Optionally skip linking/copying the built-ins

From
JSJohannes Schindelin <gitgitgadget@gmail.com>
Date
Aug 17, 2020, 09:07 UTC
Message-ID
<647f49d62e910fe8392219c3a5c6d86ac98a88e6.1597655273.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.411.git.1597655273.gitgitgadget@gmail.com>

The dashed form of the built-ins is so passé. To save on development time, and to support the idea of eventually dropping the dashed form altogether, let's introduce a Makefile knob to skip generating those hard-links.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 Makefile | 53 ++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 36 insertions(+), 17 deletions(-)
diff --git a/Makefile b/Makefile
index 3f5ba97b70..2a355a4da8 100644
--- a/Makefile
+++ b/Makefile
@@ -348,6 +348,9 @@ all::
 # 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 SKIP_DASHED_BUILT_INS if you do not need the dashed versions of the
+# built-ins to be linked/copied at all.
+#
 # Define USE_NED_ALLOCATOR if you want to replace the platforms default
 # memory allocators with the nedmalloc allocator written by Niall Douglas.
 #
@@ -775,6 +778,16 @@ BUILT_INS += git-whatchanged$X
 # what 'all' will build and 'install' will install in gitexecdir,
 # excluding programs for built-in commands
 ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
+ALL_PROGRAMS_AND_BUILT_INS = $(ALL_PROGRAMS)
+ifeq (,$(SKIP_DASHED_BUILT_INS))
+ALL_PROGRAMS_AND_BUILT_INS += $(BUILT_INS)
+else
+# git-upload-pack, git-receive-pack and git-upload-archive are special: they
+# are _expected_ to be present in the `bin/` directory in their dashed form.
+ALL_PROGRAMS_AND_BUILT_INS += git-receive-pack$(X)
+ALL_PROGRAMS_AND_BUILT_INS += git-upload-archive$(X)
+ALL_PROGRAMS_AND_BUILT_INS += git-upload-pack$(X)
+endif
 
 # what 'all' will build but not install in gitexecdir
 OTHER_PROGRAMS = git$X
@@ -2066,9 +2079,9 @@ profile-fast: profile-clean
 	$(MAKE) PROFILE=USE all
 
 
-all:: $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
+all:: $(ALL_PROGRAMS_AND_BUILT_INS) $(SCRIPT_LIB) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
 ifneq (,$X)
-	$(QUIET_BUILT_IN)$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), test -d '$p' -o '$p' -ef '$p$X' || $(RM) '$p';)
+	$(QUIET_BUILT_IN)$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS_AND_BUILT_INS) git$X)), test -d '$p' -o '$p' -ef '$p$X' || $(RM) '$p';)
 endif
 
 all::
@@ -2928,7 +2941,7 @@ ifndef NO_TCLTK
 	$(MAKE) -C git-gui gitexecdir='$(gitexec_instdir_SQ)' install
 endif
 ifneq (,$X)
-	$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), test '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p' -ef '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p$X' || $(RM) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p';)
+	$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS_AND_BUILT_INS) git$X)), test '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p' -ef '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p$X' || $(RM) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p';)
 endif
 
 	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
@@ -2946,21 +2959,27 @@ endif
 	} && \
 	for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \
 		$(RM) "$$bindir/$$p" && \
-		test -n "$(INSTALL_SYMLINKS)" && \
-		ln -s "git$X" "$$bindir/$$p" || \
-		{ test -z "$(NO_INSTALL_HARDLINKS)" && \
-		  ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
-		  ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
-		  cp "$$bindir/git$X" "$$bindir/$$p" || exit; } \
+		if test -z "$(SKIP_DASHED_BUILT_INS)"; \
+		then \
+			test -n "$(INSTALL_SYMLINKS)" && \
+			ln -s "git$X" "$$bindir/$$p" || \
+			{ test -z "$(NO_INSTALL_HARDLINKS)" && \
+			  ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
+			  ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
+			  cp "$$bindir/git$X" "$$bindir/$$p" || exit; }; \
+		fi \
 	done && \
 	for p in $(BUILT_INS); do \
 		$(RM) "$$execdir/$$p" && \
-		test -n "$(INSTALL_SYMLINKS)" && \
-		ln -s "$$destdir_from_execdir_SQ/$(bindir_relative_SQ)/git$X" "$$execdir/$$p" || \
-		{ test -z "$(NO_INSTALL_HARDLINKS)" && \
-		  ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
-		  ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
-		  cp "$$execdir/git$X" "$$execdir/$$p" || exit; } \
+		if test -z "$(SKIP_DASHED_BUILT_INS)"; \
+		then \
+			test -n "$(INSTALL_SYMLINKS)" && \
+			ln -s "$$destdir_from_execdir_SQ/$(bindir_relative_SQ)/git$X" "$$execdir/$$p" || \
+			{ test -z "$(NO_INSTALL_HARDLINKS)" && \
+			  ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
+			  ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
+			  cp "$$execdir/git$X" "$$execdir/$$p" || exit; }; \
+		fi \
 	done && \
 	remote_curl_aliases="$(REMOTE_CURL_ALIASES)" && \
 	for p in $$remote_curl_aliases; do \
@@ -3051,7 +3070,7 @@ ifneq ($(INCLUDE_DLLS_IN_ARTIFACTS),)
 OTHER_PROGRAMS += $(shell echo *.dll t/helper/*.dll)
 endif
 
-artifacts-tar:: $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) \
+artifacts-tar:: $(ALL_PROGRAMS_AND_BUILT_INS) $(SCRIPT_LIB) $(OTHER_PROGRAMS) \
 		GIT-BUILD-OPTIONS $(TEST_PROGRAMS) $(test_bindir_programs) \
 		$(MOFILES)
 	$(QUIET_SUBDIR0)templates $(QUIET_SUBDIR1) \
@@ -3146,7 +3165,7 @@ endif
 
 ### Check documentation
 #
-ALL_COMMANDS = $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS)
+ALL_COMMANDS = $(ALL_PROGRAMS_AND_BUILT_INS) $(SCRIPT_LIB)
 ALL_COMMANDS += git
 ALL_COMMANDS += git-citool
 ALL_COMMANDS += git-gui
-- 
gitgitgadget
Previous: Johannes SchindelinNext: Junio C Hamano
Message 2 of 50 in “Optionally skip linking/copying the built-ins”
  1. 0/3 Optionally skip linking/copying the built-insJohannes Schindelin, Aug 17, 2020
  2. 2/3 Optionally skip linking/copying the built-insJohannes Schindelin, Aug 17, 2020
  3. Junio C HamanoAug 17, 2020
  4. Johannes SchindelinAug 24, 2020
  5. 1/3 msvc: copy the correct `.pdb` files in the Makefile target `install`Johannes Schindelin, Aug 17, 2020
  6. Jeff KingAug 17, 2020
  7. Johannes SchindelinAug 17, 2020
  8. Jeff KingAug 17, 2020
  9. Johannes SchindelinAug 18, 2020
  10. 3/3 ci: stop linking built-ins to the dashed versionsJohannes Schindelin, Aug 17, 2020
  11. Junio C HamanoAug 17, 2020
  12. Johannes SchindelinAug 17, 2020
  13. Junio C HamanoAug 17, 2020
  14. Johannes SchindelinAug 24, 2020
  15. Junio C HamanoAug 24, 2020
  16. Johannes SchindelinAug 25, 2020
  17. Junio C HamanoAug 25, 2020
  18. 0/3 Optionally skip linking/copying the built-insJohannes Schindelin via GitGitGadget, Aug 24, 2020
  19. 2/3 Optionally skip linking/copying the built-insJohannes Schindelin via GitGitGadget, Aug 24, 2020
  20. Junio C HamanoAug 24, 2020
  21. Johannes SchindelinAug 25, 2020
  22. 3/3 ci: stop linking built-ins to the dashed versionsJohannes Schindelin via GitGitGadget, Aug 24, 2020
  23. Junio C HamanoAug 24, 2020
  24. Johannes SchindelinAug 25, 2020
  25. SZEDER GáborAug 25, 2020
  26. Junio C HamanoAug 25, 2020
  27. Johannes SchindelinAug 26, 2020
  28. Junio C HamanoAug 26, 2020
  29. Junio C HamanoAug 26, 2020
  30. Johannes SchindelinSep 2, 2020
  31. Junio C HamanoSep 2, 2020
  32. SZEDER GáborAug 27, 2020
  33. 1/3 msvc: copy the correct `.pdb` files in the Makefile target `install`Johannes Schindelin via GitGitGadget, Aug 24, 2020
  34. Junio C HamanoAug 24, 2020
  35. Jeff KingAug 24, 2020
  36. Junio C HamanoAug 24, 2020
  37. 0/3 Optionally skip linking/copying the built-insJohannes Schindelin via GitGitGadget, Aug 26, 2020
  38. 1/3 msvc: copy the correct `.pdb` files in the Makefile target `install`Johannes Schindelin via GitGitGadget, Aug 26, 2020
  39. 3/3 ci: stop linking built-ins to the dashed versionsJohannes Schindelin via GitGitGadget, Aug 26, 2020
  40. SZEDER GáborSep 3, 2020
  41. Johannes SchindelinSep 8, 2020
  42. Junio C HamanoSep 8, 2020
  43. SZEDER GáborSep 8, 2020
  44. 2/3 Optionally skip linking/copying the built-insJohannes Schindelin via GitGitGadget, Aug 26, 2020
  45. Junio C HamanoAug 26, 2020
  46. 0/3 Optionally skip linking/copying the built-insJohannes Schindelin via GitGitGadget, Sep 21, 2020
  47. 1/3 msvc: copy the correct `.pdb` files in the Makefile target `install`Johannes Schindelin via GitGitGadget, Sep 21, 2020
  48. 3/3 ci: stop linking built-ins to the dashed versionsJohannes Schindelin via GitGitGadget, Sep 21, 2020
  49. Junio C HamanoSep 21, 2020
  50. 2/3 Optionally skip linking/copying the built-insJohannes Schindelin via GitGitGadget, Sep 21, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.