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

[PATCH 4/4] Makefile: introduce SANE_TOOL_PATH for prepending required elements to PATH

From
Brandon Casey <casey@nrlssc.navy.mil>
Date
May 28, 2009, 02:17 UTC
Message-ID
<8D9Pn2N3FZLQcyxrPABrGxTLa3Dlq25WDqK5xSJyY6cvQv4mphIUXvRu59EA7ewVS-vbi5IZUc4@cipher.nrlssc.navy.mil>
In-Reply-To
<8D9Pn2N3FZLQcyxrPABrG-BSSbTCg9PE0lVG9rBAr5BVQibQYcIzXrxDf4S0P9Pb6AZO5MBuasg@cipher.nrlssc.navy.mil>
From: Junio C Hamano <gitster@pobox.com>

Some platforms (like SunOS and family) have kept their common binaries at some historical moment in time, and introduced new binaries with modern features in a special location like /usr/xpg4/bin or /usr/ucb. Some of the features provided by these modern binaries are expected and required by git. If the featureful binaries are not in the users path, then git could end up using the less featureful binary and fail.

So provide a mechanism to prepend elements to the users PATH at runtime so the modern binaries will be found.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
---
I liked this patch.  Seems like the right thing to do on Solaris.
-brandon
 Makefile        |   14 ++++++++++++++
 git-sh-setup.sh |    2 ++
 2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
index 8b377f3..3f4708f 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,11 @@ all::
 
 # Define V=1 to have a more verbose compile.
 #
+# Define SHELL_PATH to a POSIX shell if your /bin/sh is broken.
+#
+# Define SANE_TOOL_PATH to a colon-separated list of paths to prepend
+# to PATH if your tools in /usr/bin are broken.
+#
 # Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf()
 # or vsnprintf() return -1 instead of number of characters which would
 # have been written to the final string if enough space had been available.
@@ -703,6 +708,7 @@ ifeq ($(uname_S),SunOS)
 	NEEDS_NSL = YesPlease
 	NEEDS_RESOLV = YesPlease
 	SHELL_PATH = /bin/bash
+	SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
 	NO_STRCASESTR = YesPlease
 	NO_MEMMEM = YesPlease
 	NO_MKDTEMP = YesPlease
@@ -871,6 +877,13 @@ endif
 -include config.mak.autogen
 -include config.mak
 
+ifdef SANE_TOOL_PATH
+BROKEN_PATH_FIX = s|^. @@PATH@@|PATH=$(SANE_TOOL_PATH)|
+PATH := $(SANE_TOOL_PATH):${PATH}
+else
+BROKEN_PATH_FIX = d
+endif
+
 ifeq ($(uname_S),Darwin)
 	ifndef NO_FINK
 		ifeq ($(shell test -d /sw/lib && echo y),y)
@@ -1272,6 +1285,7 @@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
 	    -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
 	    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
 	    -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
+	    -e '/^# @@PATH@@/$(BROKEN_PATH_FIX)' \
 	    $@.sh >$@+ && \
 	chmod +x $@+ && \
 	mv $@+ $@
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index 8382339..7802581 100755
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -11,6 +11,8 @@
 # exporting it.
 unset CDPATH
 
+# @@PATH@@:$PATH
+
 die() {
 	echo >&2 "$@"
 	exit 1
-- 
1.6.3.1.24.g152f4
Previous: Brandon CaseyNext: Jeff King
Message 4 of 10 in “Makefile: use /usr/ucb/install on SunOS platforms rather than ginstall”
  1. 1/4 Makefile: use /usr/ucb/install on SunOS platforms rather than ginstallBrandon Casey, May 28, 2009
  2. 2/4 Makefile: add NEEDS_RESOLV to optionally add -lresolv to compile argumentsBrandon Casey, May 28, 2009
  3. 3/4 Makefile: add section for SunOS 5.7Brandon Casey, May 28, 2009
  4. 4/4 Makefile: introduce SANE_TOOL_PATH for prepending required elements to PATHBrandon Casey, May 28, 2009
  5. Jeff KingMay 28, 2009
  6. Junio C HamanoMay 29, 2009
  7. Jeff KingMay 28, 2009
  8. Brandon CaseyMay 28, 2009
  9. Jeff KingMay 28, 2009
  10. Jeff KingMay 28, 2009

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.