Hush does not handle "set -o pipefail".

Rob Landley rob at landley.net
Thu Nov 18 03:35:18 UTC 2010


On Tuesday 16 November 2010 00:29:51 Denys Vlasenko wrote:
> On Sunday 14 November 2010 22:03, Rob Landley wrote:
> > On Saturday 13 November 2010 20:47:22 Denys Vlasenko wrote:
> > > On Sunday 14 November 2010 02:32, Rob Landley wrote:
> > > > On Saturday 13 November 2010 19:02:33 Denys Vlasenko wrote:
> > > > > On Tuesday 09 November 2010 07:40, Rob Landley wrote:
> > > > > > Or any set -o for that matter.  But pipefail's one that's really
> > > > > > hard to work around if you haven't got it...
> > > > >
> > > > > But this will increase complexity, would it not?
> > > >
> > > > Are you being facetious?  I can't tell in email.
> > >
> > > My mail also contained the patch. ;)
> >
> > Thanks.  It didn't apply to 1.17.3 so making my script work with it is on
> > my todo list.
>
> I propose that I just release 1.18.0 instead. There are more fixes
> in hush which you probably will benefit from.

No objection.  Always happy to try new releases...

> > (I've got somebody interested in poking at aboriginal on real
> > sparc hardware so I need to buckle down and fix the dynamic linker, and
> > I'm in the middle of figuring out why the uClibc prebuilt-locale stuff
> > still wants to call the "locale -a" command on the host, which isn't
> > _there_ on the gentoo box running my cron jobs, and if throwing one in
> > the path that just echoes "C" and "POSIX" will satisfy it.)
> >
> > Oh, by the way, if you point #!/bin/sh to hush and then run the zlib
> > ./configure stage it dies kind of impressively.
>
> What is the bug or missing feature it stumbled over?

It's not one thing.

For example, running the ./configure stage of dropbear hangs.  It never 
produces any output, even if you let it sit there for half an hour.  I have no 
idea where it's hanging because it doesn't support "set -x".  I tried sticking 
"echo" lilnes in there but it's autoconf crap doing this horrible stuff with 
nested parentheses spanning hundreds of lines (within which there are function 
definitions using parentheses of their own) and figuring out the flow control is 
non-obvious...

I eventually tracked it down to this blob:

# Name of the executable.                                          
as_me=`$as_basename -- "$0" ||               
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 
         X"$0" : 'X\(//\)$' \| \                                     
         X"$0" : 'X\(/\)' \| . 2>/dev/null ||                
echo X/"$0" |                                                         
    sed '/^.*\/\([^/][^/]*\)\/*$/{                             
            s//\1/                           
            q                                
          }                       
          /^X\/\(\/\/\)$/{        
            s//\1/        
            q                     
          }                             
          /^X\/\(\/\).*/{                                            
            s//\1/                
            q                     
          }                                                    
          s/.*/./; q'` 

$as_basename=false $as_expr=expr and $0=./configure

That hangs with hush, but not with ash or bash.  No idea why.

> > (The others probably do too,
> > zlib is just the first package my LFS bootstrap tries to build.  Then
> > again the perl ./configure stage segfaulted repeatedly with
> > #!/bin/sh=ash, so what I really need to do is finish the lfs-bootstrap
> > script with sh=bash and _then_ see what hush breaks.  Right now I'm just
> > trying to get the lfs-bootstrap scripts _themselves_ to work with
> > hush...)
>
> Please provide me with the precise information what needs to be
> fixed/implemented, and I will code it up.

If I can find it, I will, but these are large complicated scripts that require 
fairly extensive debugging just to figure out what they're _trying_ to do.

Rob
-- 
GPLv3: as worthy a successor as The Phantom Menace, as timely as Duke Nukem 
Forever, and as welcome as New Coke.


More information about the busybox mailing list