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

Re: [RFC/PATCH] build: avoid possible confusion between GNU/XPG4 make on Solaris

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 2, 2012, 18:35 UTC
Message-ID
<7vhay6etqc.fsf@alter.siamese.dyndns.org>
In-Reply-To
<df98ed215324f521f3aaff7fa4ba41ba2a1894dc.1330679536.git.stefano.lattarini@gmail.com>
Stefano Lattarini <stefano.lattarini@gmail.com> writes:
> On a Solaris 10 system with Solaris XPG4 make installed as /usr/xpg4/bin/make,
> GNU make installed as /usr/local/bin/make, and with /usr/local/bin appearing
> in $PATH *before* /usr/xpg4/bin, I was seeing errors like this upon invoking
> "make all":

After reading this explanation, my first reaction is that the prefixing of path _is_ what is wrong. The prefixing is done to help a subset of Solaris users who are unaware of /usr/xpg4/bin that are more POSIX than what they have in /usr/bin, and that is what is hurting people like you who know what you are doing and have suitable tools in other places, like you do in /usr/local/bin.

And the real fix for your problem is _not_ an ugly override of $(MAKE) like you do in this patch, I think. After all, somebody else who have a tool in /usr/local/bin that is saner than what is in /usr/xpg4/bin may suffer from the same issue for commands other than "make".

So the real solution would probably be to let you override how the BROKEN_PATH_FIX works, no?

Ah... and I think we already have such a solution in our Makefile. Can't you override SANE_TOOL_PATH in your config.mak instead?

Show 16 quoted lines
> +# This Makefile will possibly sanitize PATH by prepending system-specific
> +# directories to it (e.g., /usr/xpg4/bin on Solaris).  This can become
> +# problematic for recursive make invocations, if one of those directories
> +# contains a "make" program and the user has called GNU make by simply
> +# invoking "make" (this can happen e.g. when GNU make has been installed
> +# as /usr/local/bin/make).  To avoid such issues, we redefine $(MAKE) to
> +# point to the absolute path of the originally-invoked make program.
> +# FIXME: this is ugly, and which(1) is quite unportable.  Find a better
> +# 	 way to obtain the same effect.
> +MAKE := $(shell set $(MAKE); m1=$$1; shift; \
> +                m2=`which $$m1 2>/dev/null` && test -n "$$m2" || m2=$$m1; \
> +                echo "$$m2 $$*")
> +
>  # CFLAGS and LDFLAGS are for the users to override from the command line.
>  
>  CFLAGS = -g -O2 -Wall
Previous: Stefano LattariniNext: Stefano Lattarini
Message 5 of 12 in “build: avoid possible confusion between GNU/XPG4 make on Solaris”
  1. build: avoid possible confusion between GNU/XPG4 make on SolarisStefano Lattarini, Mar 2, 2012
  2. Thomas RastMar 2, 2012
  3. Stefano LattariniMar 2, 2012
  4. build: avoid possible confusion between GNU/XPG4 make on SolarisStefano Lattarini, Mar 2, 2012
  5. Junio C HamanoMar 2, 2012
  6. Stefano LattariniMar 2, 2012
  7. Junio C HamanoMar 2, 2012
  8. configure: allow user to prevent $PATH "sanitization" on SolarisStefano Lattarini, Mar 9, 2012
  9. Junio C HamanoMar 9, 2012
  10. Junio C HamanoMar 9, 2012
  11. Stefano LattariniMar 9, 2012
  12. Junio C HamanoMar 9, 2012

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.