You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Andrew Black <ab...@roguewave.com> on 2006/12/08 23:19:44 UTC
locale testing failures on Tru64
Greetings all.
One of the persistent failures observed in automated testing is the
locale tests on Tru64. I have performed a manual build, and it appears
that the cause is a failure in the run_locale_utils.sh script. The
output of running both the sanity_test.sh wrapper script and the
en_US.ANSI_X3.4-1968.sh wrapper script is as follows:
> ./run_utils: Usage :
> script -s -b <bindir> ## checking sanity
> script -f -i <nlsdir> -l <locale name> ## check functionality
Looking at the script, it seems to me that the version of sh living in
/bin/sh is deficient in it's processing of the getopts command. I do
not have a solution to this problem at this time, but I hope to look
into it next week.
--Andrew Black
Re: locale testing failures on Tru64
Posted by Martin Sebor <se...@roguewave.com>.
Andrew Black wrote:
> Greetings all.
>
> One more follow up on this issue.
>
> Attached is a patch that aims to fix this issue by altering the
> generated locale testing wrapper scripts to set BIN_SH to xpg4 (not xgp4
> as I erroneously noted in the previous message) for the run_utils script.
Thanks, but I'm afraid I don't like this patch. The makefile
shouldn't need to know that the script it invokes uses getopts.
Here's what I committed instead:
http://svn.apache.org/viewvc?view=rev&rev=487746
Martin
Re: locale testing failures on Tru64
Posted by Andrew Black <ab...@roguewave.com>.
Greetings all.
One more follow up on this issue.
Attached is a patch that aims to fix this issue by altering the
generated locale testing wrapper scripts to set BIN_SH to xpg4 (not xgp4
as I erroneously noted in the previous message) for the run_utils script.
--Andrew Black
Changelog:
* GNUmakefile.bin (SHENV): Define on Compaq Tru64, for use ...
($(RUNTARGET)): ... Here. Forces usage of posix compliant Bourne shell.
Re: locale testing failures on Tru64
Posted by Andrew Black <ab...@roguewave.com>.
Greetings all.
A quick follow-up on this issue. The following simplified test case,
when passed the options '-x -a -b foo bar' demonstrates the behavior
problem we're seeing.
> #!/bin/sh
> echo $*
> while getopts "ab:" opt_name; do
> echo "Option $opt_name=$OPTARG"
> done
A Bourne shell with a functional getopt command will return something
similar to the following, while /bin/sh on Tru64 (by default) produces
only the first line.
> -x -a -b foo bar
> /tmp/shtest.sh: illegal option -- x
> Option ?=
> Option a=
> Option b=foo
According to http://www.in-ulm.de/~mascheck/bourne/#osf1 , the Bourne
shell on this platform appears to be a SVR2 shell with a number of
backports. (getopts was added in SVR3, and wasn't included in those
backports).
The reason I say 'by default' is because the behavior of /bin/sh changes
if BIN_SH is set to 'xgp4' or 'svr4'. The former value causes an
XCUS5.0/POSIX.2 compliant shell to be launched, while the later causes a
SVR4 compliant shell to be launched. Both shells include support for
the getopts built-in.
It seems to me that the best solution to the behavior observed is to set
BIN_SH to xgp4 prior to invoking the run_locale_utils.sh script, but I
am uncertain as to the best place to do so. One option is to embed the
setting of this variable into the generated locale test scripts
($(RUNTARGET) pattern rule in GNUmakefile.bin). A second option is to
set this variable when running each locale test script (run and %.out
targets in makefile.rules, I think). The third option is to set this
variable outside the infrastructure (in the glue scripts).
Of these options, I view the first and third as more desirable than the
second. The first two either require a new makefile variable or
platform specific logic in the rules. The third doesn't require
makefile changes, but will be a tripping point for users unfamiliar with
this quirk. I consider the first more desirable than the second, as it
would ensure that the variable is always set if it's needed. In
choosing between the shell variants, my understanding is that the shell
scripts are coded to the POSIX spec, and therefore xgp4 would be a more
accurate shell choice.
--Andrew Black
Andrew Black wrote:
> Greetings all.
>
> One of the persistent failures observed in automated testing is the
> locale tests on Tru64. I have performed a manual build, and it appears
> that the cause is a failure in the run_locale_utils.sh script. The
> output of running both the sanity_test.sh wrapper script and the
> en_US.ANSI_X3.4-1968.sh wrapper script is as follows:
>
>> ./run_utils: Usage : script -s -b <bindir> ## checking sanity
>> script -f -i <nlsdir> -l <locale name> ## check functionality
>
> Looking at the script, it seems to me that the version of sh living in
> /bin/sh is deficient in it's processing of the getopts command. I do
> not have a solution to this problem at this time, but I hope to look
> into it next week.
>
> --Andrew Black