On Sat, 2006-07-08 15:03:27 -0400, Shawn Pearce <spearce@xxxxxxxxxxx> wrote: > Junio C Hamano <junkio@xxxxxxx> wrote: > > Shawn Pearce <spearce@xxxxxxxxxxx> 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. > > - 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@xxxxxxxxxx . +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));
Attachment:
signature.asc
Description: Digital signature