bug-gnulib
[Top][All Lists]
Advanced

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

Re: test-vc-cvs [was: IRIX failures]


From: Eric Blake
Subject: Re: test-vc-cvs [was: IRIX failures]
Date: Thu, 02 Sep 2010 08:25:51 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100806 Fedora/3.1.2-1.fc13 Mnenhy/0.8.3 Thunderbird/3.1.2

On 09/02/2010 08:02 AM, Tom G. Christensen wrote:

> > zsh -vx ./test-vc-list-files-cvs.sh
> >
Sure, output here:
http://jupiterrise.com/tmp/zsh_vx_test-vc-list-files-cvs.out

Thanks.  I definitely see a couple of problems.

First, there's no 'emulate sh' command anywhere in the trace, and zsh when NOT in POSIX mode does weird things (such as failure to do field splitting). I guess part of my init.sh patching today will be fixing init.sh to properly sanitize zsh when bash is skipped would be appropriate (zsh installed as /bin/sh already behaves in POSIX mode, so you are probably the first case of someone actually hitting zsh as the preferred fallback shell).

Next, your trace showed the cause of the first message:

+mktempd_:51> template_length_=+mktempd_:1> wc -c
+mktempd_:51> template_length_='            16'
+mktempd_:52> nx_=+mktempd_:1> echo gt-init.sh.
+mktempd_:52> nx_=+mktempd_:1> wc -c
+mktempd_:52> nx_='            12'
+mktempd_:53> nx_=+mktempd_:1> expr '            16' - '            12'
non-numeric argument

So wc is outputting space-padded results, and expr doesn't like the leading spaces. And once expr dies, the rest of the temporary directory creation goes downhill.

I also noticed (in trying this myself) that directly running the script doesn't quite work if build-aux is not in PATH (that aspect is automatically taken care of when run via the Makefile). But at this point, let's wait until some more gnulib patches are in, and I make another m4 snapshot, to see if we caught everything on this go-around.

echo $BASH_VERSION
+ echo '3.1.16(1)-release'
3.1.16(1)-release
test $(echo y) = y || exit 1
cho y
++ cho y
bash: line 2: cho: command not found
+ test = y
bash: line 2: test: =: unary operator expected
+ exit 1

Definitely something funny going on there.
Inserting a space so it's $( echo y) and the test passes.

Oh my. Your bash installation is quite broken - no wonder the script bypasses it. Is this a self-built bash? If so, you may want to upgrade to 3.1.17 (and/or 3.2, 4.0, or 4.1), and hope that the rebuild fixes whatever was broken about your 3.1.16. But looking at bash31-017, that only touches array expansion, so it's not directly related to your weird command substitution behavior. But at least it's not a bug in gnulib.

If it were a more recent bash version, I'd suggest reporting it to the bash list; but since it is rather old, it may be that upgrading to a newer bash is all you need.

--
Eric Blake   address@hidden    +1-801-349-2682
Libvirt virtualization library http://libvirt.org



reply via email to

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