Re: [PATCH] Remove more gcc extension usage.
- From
- Jan-Benedict Glaw <jbglaw@lug-owl.de>
- Date
- Jul 9, 2006, 07:31 UTC
- Message-ID
- <20060709073155.GP22573@lug-owl.de>
- In-Reply-To
- <20060708190327.GA17763@spearce.org>
On Sat, 2006-07-08 15:03:27 -0400, Shawn Pearce <spearce@spearce.org> wrote:
Show 18 quoted lines
> Junio C Hamano <junkio@cox.net> wrote: > > Shawn Pearce <spearce@spearce.org> writes: > > > > > Removing these last remaining extension uses allows GIT to compile > > > with the Sun C compiler rather then gcc. This can be handy when > > > you are trying to compile GIT on a Solaris system that seems to > > > have a total lack of GNU utilities. > > > > Two points. > > > > - Aren't the constructs you ripped out not GCC extension, > > rather proper ISO C99? > > Hmm. I'm not sure actually. I don't do much C hacking these days > so I haven't kept current with what C99 has and doesn't. I just > know that these small changes made the core plumbing build and run > fine on Solaris with only GNU make being present. I didn't even > attempt to use the higher level Poreclainish shell script commands.
Yes, that's valid C99. So Sun ships a compiler conforming to old standards only, or which is configured to do so.
> Monday I'll look to see if there's an option that can be given to > the Solaris compiler to make it accept these constructs. Maybe a > simple CFLAGS change in my config.mak would resolve what this patch > was trying to do.
Thanks.
Show 11 quoted lines
> > - Our Makefile is pretty GNU already. I think people have > > pointed out and ripped out bashisms from our shell scripts, > > but I would not be surprised if the default Sun /bin/sh does > > not understand POSIXy features some of them use. > > I realize that. Asking someone to compile GNU make in their home > directory before they build GIT to their home directory isn't a > big deal (took me all of 30 seconds to download the latest and > ./configure&&make install it). Asking someone to download and > compile binutils and gcc because their local site manager won't > install them for you is another matter entirely...
AFAIK, relying on the '#!/bin/sh' thing is, from the POSIX point of view, just plain wrong. IIRC, the '#!' thing even doesn't need to be implemented! POSIX tells you to call scripts with their interpreters, for a reason. /bin/sh needn't be POSIX compliant, but the first shell found in the $PATH has to. So for what it's worth, shell scripts should be called like `sh foo.sh', and if we narrow to expect the `#!' to work, we'd better call it like `#!/usr/bin/env sh' to get the $PATH `sh' and not /bin/sh .
MfG, JBG
-- Jan-Benedict Glaw jbglaw@lug-owl.de . +49-172-7608481 _ O _ "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O für einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! O O O ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));