fascistic commit r084e2284c700 busybox/scripts/gen_build_files.sh

Rob Landley rob at landley.net
Wed May 19 04:12:43 UTC 2010


On Monday 17 May 2010 09:50:03 Peter Tyser wrote:
> On Mon, 2010-05-17 at 16:07 +0200, Denys Vlasenko wrote:
> > On Mon, May 17, 2010 at 5:59 AM, Peter Tyser <ptyser at xes-inc.com> wrote:
> > > Denys Vlasenko wrote:
> > >> On Sunday 16 May 2010 19:02, Douglas Mencken wrote:
> > >>> This commit declares "gen_build_files.sh" as the one that "uses
> > >>> bashism", and "document it".
> > >>> But what is the real result of this commit? It is:
> > >>>    make:
> > >>> /root/build-farm/busybox-1969-g084e228.srcpkg/scripts/gen_build_files
> > >>>.sh: Command not found
> > >>>    make: *** [gen_build_files] Error 127
> > >>> Because
> > >>>    -#!/bin/sh
> > >>>    +#!/bin/bash
> > >>> So now it is not possible to build busybox having only busybox shell
> > >>> (ash) and not bash.
> > >>
> > >> I reverted fascistic commit :) :)
> > >
> > > This is going to cause the same problem that the "gen_build_files.sh:
> > > Remove bashisms" patch attempted to fix.  gen_build_files.sh is still
> > > using bashisms (only part of "gen_build_files.sh: Remove bashisms" was
> > > applied), so we need to either remove the bashisms, or change the
> > > interpreter to bash, right?
> > >
> > > Eg if I run "make defconfig" on my Ubuntu box I get incorrect behavior:
> > > ptyser at petert busybox $ make defconfig
> > >  CHK     ./findutils/Kbuild
> > > read: 53: arg count
> > >  CHK     ./findutils/Config.in
> > > read: 53: arg count
> > > scripts/kconfig/conf -d Config.in
> >
> > Considering the whole email discussion, I tend to agree with Rob's
> > argument: gratuitous bash incompatibilities caused by dash are dash's
> > fault.
>
> Its not just about dash in my opinion - its about all non-bash shells.
> 'read' without any arguments is bash-specific.  Its not POSIX compliant.

Sould we remove -i from busybox sed then?

> Maybe some other shells happen to allow read without arguments, but its
> a crapshoot as its not a standard.

Which is why you say #!/bin/bash and then teach busybox's shells to understand 
the name "bash".  The name is a promise of an API beyond Posix.

> I'm not understanding the argument
> for using bash-specific functionality, but not using bash as the shell.
> Yes dash has "gratuitous bash incompatibilities", but you are
> *explicitly* saying to use /bin/sh, which dash *is* compatible with.

No, he said #!/bin/bash and somebody complained that busybox couldn't work 
with that.  I agree that's a problem, but the _bug_ is that busybox needs to 
be extended to route the name "bash" to hush and then hush taught to do more 
stuff.

Rob
-- 
Latency is more important than throughput. It's that simple. - Linus Torvalds


More information about the busybox mailing list