Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Apr 2009 21:08:39 +0200
From:      Stefan Farfeleder <stefanf@FreeBSD.org>
To:        Jilles Tjoelker <jilles@stack.nl>
Cc:        Wesley Shields <wxs@FreeBSD.org>, standards@freebsd.org
Subject:   Re: FW: shell choice freebsd git port
Message-ID:  <20090404190838.GA1352@lizard.fafoe.narf.at>
In-Reply-To: <20090322214741.GA50879@stack.nl>
References:  <20090322144753.GA48259@atarininja.org> <20090322214741.GA50879@stack.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Mar 22, 2009 at 10:47:41PM +0100, Jilles Tjoelker wrote:
> On Sun, Mar 22, 2009 at 10:47:53AM -0400, Wesley Shields wrote:
> > As the maintainer of devel/git I'd like this port to do the right thing,
> > but I'm not sure if this is a legitimate bug in our /bin/sh or not.
> > Anyone care to comment on this?
> 
> > ----- Forwarded message from Jeff King <peff@peff.net> -----
> 
> > Date: Sun, 22 Mar 2009 05:37:10 -0400
> > From: Jeff King <peff@peff.net>
> > To: wxs@freebsd.org
> > Subject: shell choice freebsd git port
> 
> > Hi,
> 
> > I'm one of the upstream developers of git, and it looks like you are the
> > git ports maintainer for FreeBSD. I wanted to discuss an issue which you
> > may run into while packaging git 1.6.2.1.
> 
> > It seems that FreeBSD's /bin/sh treats blank lines in an eval as a
> > successful command. E.g., (the output is from FreeBSD 6.1, but I built
> > the current HEAD from anoncvs and it seems to have the same problem):
> 
> >   $ /bin/sh
> >   $ eval 'false
> > 
> >   '
> >   $ echo $?
> >   0
> 
> > (whereas bash and dash would print '1').
> 
> > This is problematic for our test suite, which consists of a lot of
> > eval'ing. Failing tests may be missed if their status is ignored, one
> > test in 1.6.2.1 which expects a non-zero exit status actually does
> > report failure when it actually succeeded. On top of that, some of the
> > scripts (like bisect and filter-branch) care about the exit status of
> > evals at run-time to determine whether an error occurred.
> 
> > There is some discussion on the git list here:
> 
> >   http://thread.gmane.org/gmane.comp.version-control.git/112519/focus=112621
> 
> > I don't know if you want to do anything to the port to work around this.
> > The obvious solution is requiring bash, and setting SHELL_PATH
> > appropriately in the Makefile. You may also want to see if anyone is
> > interested in treating this like a bug in /bin/sh and fixing it (I
> > consider it a bug, but others may consider it historical behavior, I
> > suppose).
> 
> As discussed on IRC, I think this is a bug in /bin/sh.
> 
> Just from reading the code, NetBSD does not seem to have fixed this.
> 
> The following patch seems to fix the problem:
> http://www.stack.nl/~jilles/unix/sh-eval-emptyline.patch
> 
> Apart from 'eval', also 'trap', 'fc' and strings passed with '-c' are
> affected.
> 
> Empty lines inside {}, if or similar constructs are treated differently
> and work fine even without the patch.

Committed, thanks!



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090404190838.GA1352>