From owner-freebsd-standards@FreeBSD.ORG Sun Mar 22 22:04:00 2009 Return-Path: Delivered-To: standards@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 31FA1106564A; Sun, 22 Mar 2009 22:04:00 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (meestal-mk5.stack.nl [131.155.140.149]) by mx1.freebsd.org (Postfix) with ESMTP id E4A9C8FC08; Sun, 22 Mar 2009 22:03:59 +0000 (UTC) (envelope-from jilles@stack.nl) Received: by mx1.stack.nl (Postfix, from userid 65534) id F36383FA6B; Sun, 22 Mar 2009 22:48:05 +0100 (CET) X-Spam-DCC: : X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on meestal-mk5.stack.nl X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, NO_RELAYS autolearn=no version=3.2.3 X-Spam-Relay-Country: Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id 9707F3F698; Sun, 22 Mar 2009 22:47:54 +0100 (CET) Received: by snail.stack.nl (Postfix, from userid 1677) id E07BD22892; Sun, 22 Mar 2009 22:47:41 +0100 (CET) Date: Sun, 22 Mar 2009 22:47:41 +0100 From: Jilles Tjoelker To: Wesley Shields Message-ID: <20090322214741.GA50879@stack.nl> References: <20090322144753.GA48259@atarininja.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090322144753.GA48259@atarininja.org> X-Operating-System: FreeBSD 7.1-PRERELEASE i386 User-Agent: Mutt/1.5.18 (2008-05-17) Cc: standards@freebsd.org Subject: Re: FW: shell choice freebsd git port X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Mar 2009 22:04:00 -0000 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 ----- > Date: Sun, 22 Mar 2009 05:37:10 -0400 > From: Jeff King > 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. -- Jilles Tjoelker