[lfs-support] chapter-6_bash

Ken Moffat zarniwhoop at ntlworld.com
Tue Aug 28 16:52:35 PDT 2012

On Tue, Aug 28, 2012 at 05:33:19PM -0500, Garrett Gaston wrote:
> Below is what I'M getting:
> if test "bash" = "gettext-tools"; then \  /bin/sh /sources/Chapter-6/6.31._Bash-4.2/bash-4.2/./support/mkinstalldirs /usr/share/gettext/po; \  for file in Makefile.in.in remove-potcdate.sin quot.sed boldquot.sed en at quot.header en at boldquot.header insert-header.sin Rules-quot   Makevars.template; do \    /usr/bin/install -c -m 644 ./$file \		    /usr/share/gettext/po/$file; \  done; \  for file in Makevars; do \    rm -f /usr/share/gettext/po/$file; \  done; \else \  : ; \fimake[1]: Leaving directory `/sources/Chapter-6/6.31._Bash-4.2/bash-4.2/po'

 Somehow, you've removed a newline in the middle of \fimake[1] at
the end.  Also, those backslashes make no sense because they should
be at the end of a line.  Next time you are posting, long lines from
make are ok (or you can spread them across multiple email lines),
but anything which is on a separate line in the output needs to be
on a separate line in your mail.  Thanks.

 If it reads as I expect it to, the else is taken because
"bash" is not equal to "gettext-tools" so it just leaves the po
directory.  You've got the bash directory at
/sources/Chapter-6/6.31._Bash/bash-4.2/ - seems verbose, but I
suppose it ensures you keep the build dirs (e.g. gcc) separate for
each invocation.

 My own log ends at that point (apart from a message from my
clean-up routine), so not installing those po files appears to be
correct (odd, but works for me).

> Here is my script from http://www.linuxfromscratch.org/lfs/view/stable/chapter06/bash.html
> ( patch -Np1 -i ../../../bash-4.2-fixes-4.patch 2>&1 | tee patch-bash.log     && exit $PIPESTATUS ) &&( ./configure --prefix=/usr --bindir=/bin \    --htmldir=/usr/share/doc/bash-4.2 --without-bash-malloc \    --with-installed-readline                              2>&1 | tee configure-bash.log && exit $PIPESTATUS ) &&( make                                                                  2>&1 | tee make-bash.log         && exit $PIPESTATUS ) &&chown -Rv nobody .                                                                                                                                               &&su-tools nobody -s /bin/bash -c "make tests"                                                                                                     &&( make install                                                      2>&1 | tee make-install.log      && exit $PIPESTATUS ) &&( exec /bin/bash --login +h                               2>&1 | tee exec-login.log     && exit $PIPESTATUS ) &&date > ../FLAG &&echo GOOD
> Note that one that output from running this script there is a blinking cursor at the bottom but no prompt. 		 	   		  

 Personally, I don't attempt to log in to the new bash in the middle
of a script.  How wicked of me!

 Again, the backslashes in your subshells don't make sense unless
you post them at the end of lines.

 I guess something is still running.  In theory, tee will always
succeed unless it cannot write the log, so 'tee ... && exit
$PIPESTATUS' probably isn't too catastrophic.

 From another term, have a look at top to see if something is still
running.  I can remember tests being left running from time to time
(I only notice when I try to umount at the end).

 You can probably interrupt it with ^C - that won't point to what
needs to be changed in your scripts, but it will either continue
with the next part of a script or give you a prompt.

das eine Mal als Tragödie, das andere Mal als Farce

More information about the lfs-support mailing list