bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Bug in autoconf 2.62 with old GNU awk


From: Daniel Richard G.
Subject: RE: Bug in autoconf 2.62 with old GNU awk
Date: Sat, 13 Dec 2008 16:37:30 -0500

Hi Ralf,

> -----Original Message-----
> From: Ralf Wildenhues [mailto:address@hidden
>
> Thank you for the bug report.  I think this is a coreutils bug or two.
> configure is working as intended in substituting a multiline value
> (Autoconf supports multiline values since a couple of years), but the
> configure.ac bits from coreutils somehow fail to flatten the value of
> $MANS.
>
> coreutils/configure.ac contains something like this:
>
[...]
>
> which should remove newlines from $MAN altogether.  There is more
> munging of $optional_bin_progs earlier, and through the macros in
> m4/include-exclude-prog.m4.  I don't quite see yet where this code
> should fail.  Likely another 'tr' incompatibility we are not aware
> of yet?  Can you try to look into this?  I cannot reproduce it on
> Tru64/OSF 4.0D.  ($PATH would be interesting, too, to see which tr
> you are using).

The PATH just gets me /usr/bin/tr. I've instrumented the configure script a 
bit...

----begin hacked-up configure snippet----
echo "optional_bin_progs = >>$optional_bin_progs<<"

MAN=`echo "$optional_bin_progs "|sed 's/ /.1 /g;s/ $//'|tr -d '\\015\\012'`

echo "MAN (1) = >>$MAN<<"

# Change ginstall.1 to "install.h" in $MAN.
MAN=`for m in $MAN; do test $m = ginstall.1 && m=install.1; echo $m; done \
  | tr '\015\012' ' '; echo`

echo "MAN (2) = >>$MAN<<"

# Remove [.1, since writing a portable rule for it in man/Makefile.am
# is not practical.  The sed LHS below uses the autoconf quadrigraph
# representing '['.
MAN=`echo "$MAN"|sed 's/\[\.1//'`

echo "MAN (3) = >>$MAN<<"
----end hacked-up configure snippet----

...and obtained some interesting results:

----begin configure output excerpt----
checking for getspnam... no
checking for library containing crypt... none required
optional_bin_progs = >>uname chroot hostid nice who users pinky uptime stty df 
[ chcon chgrp chown chmod cp dd dircolors du \ ginstall link ln dir vdir ls 
mkdir \ mkfifo mknod mktemp \ mv nohup readlink rm rmdir shred stat sync touch 
unlink \ cat cksum comm csplit cut expand fmt fold head join groups md5sum \ 
nl od paste pr ptx sha1sum sha224sum sha256sum sha384sum sha512sum \ shuf sort 
split sum tac tail tr tsort unexpand uniq wc \ basename date dirname echo env 
expr factor false \ id kill logname pathchk printenv printf pwd \ runcon seq 
sleep tee \ test true tty whoami yes \ base64<<
MAN (1) = >>uname.1 chroot.1 hostid.1 nice.1 who.1 users.1 pinky.1 uptime.1 
stty.1 df.1 [.1 chcon.1 chgrp.1 chown.1 chmod.1 cp.1 dd.1 dircolors.1 du.1 \.1 
ginstall.1 link.1 ln.1 dir.1 vdir.1 ls.1 mkdir.1 \.1 mkfifo.1 mknod.1 mktemp.1 
\.1 mv.1 nohup.1 readlink.1 rm.1 rmdir.1 shred.1 stat.1 sync.1 touch.1 
unlink.1 \.1 cat.1 cksum.1 comm.1 csplit.1 cut.1 expand.1 fmt.1 fold.1 head.1 
join.1 groups.1 md5sum.1 \.1 nl.1 od.1 paste.1 pr.1 ptx.1 sha1sum.1 
sha224sum.1 sha256sum.1 sha384sum.1 sha512sum.1 \.1 shuf.1 sort.1 split.1 
sum.1 tac.1 tail.1 tr.1 tsort.1 unexpand.1 uniq.1 wc.1 \.1 basename.1 date.1 
dirname.1 echo.1 env.1 expr.1 factor.1 false.1 \.1 id.1 kill.1 logname.1 
pathchk.1 printenv.1 printf.1 pwd.1 \.1 runcon.1 seq.1 sleep.1 tee.1 \.1 
test.1 true.1 tty.1 whoami.1 yes.1 \.1 base64.1<<
MAN (2) = >>uname.1
chroot.1
hostid.1
nice.1
who.1
users.1
pinky.1
uptime.1
stty.1
df.1
[.1
chcon.1
chgrp.1
chown.1
chmod.1
cp.1
dd.1
dircolors.1
du.1
\.1
install.1
link.1
ln.1
[...]
tty.1
whoami.1
yes.1
\.1
base64.1<<
MAN (3) = >>uname.1
chroot.1
hostid.1
nice.1
who.1
users.1
pinky.1
uptime.1
stty.1
df.1

chcon.1
chgrp.1
chown.1
chmod.1
cp.1
dd.1
dircolors.1
du.1
\.1
install.1
link.1
ln.1
[...]
tty.1
whoami.1
yes.1
\.1
base64.1<<
checking whether NLS is requested... no
checking for msgfmt... no
----end configure output excerpt----

Here is the real problem---not gawk(1), but indeed tr(1):

% ( echo foo ; echo bar ) | tr '\015\012' ' '
foo
bar
% ( echo foo ; echo bar ) | tr '\015\012' '  '  <---- note the two-space 
string
foo bar %

The expected "SET2 is extended to length of SET1 by repeating its last 
character as necessary" thing is not happening!


--Daniel






reply via email to

[Prev in Thread] Current Thread [Next in Thread]