[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#47382: runtest doesn't work with Solaris 10 /bin/sh
From: |
Jacob Bachmeyer |
Subject: |
bug#47382: runtest doesn't work with Solaris 10 /bin/sh |
Date: |
Fri, 16 Apr 2021 16:50:58 -0500 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.22) Gecko/20090807 MultiZilla/1.8.3.4e SeaMonkey/1.1.17 Mnenhy/0.7.6.0 |
I have had time to address the rest of these:
Rainer Orth wrote:
One can use \{0,1\} instead, but I cannot tell for certain how portable
that is:
diff --git a/dejagnu b/dejagnu
--- a/dejagnu
+++ b/dejagnu
@@ -147,7 +147,7 @@ if $want_version ; then
fi
# Remove any leading autoconf platform prefix and the "dejagnu" prefix.
-command=`basename "$0" | sed -e 's/^.*-\?dejagnu-\?//'`
+command=`basename "$0" | sed -e 's/^.*-\{0,1\}dejagnu-\{0,1\}//'`
while expr $# \> 0 > /dev/null
do
Fixed in commit cc4d2e41f5d72be55e2b506f45fa052e1b3d410b; according to
the latest Autoconf manual, basename is not portable either!
8<----
diff --git a/dejagnu b/dejagnu
index ece4e09..c38dd4d 100755
--- a/dejagnu
+++ b/dejagnu
@@ -147,7 +147,20 @@ if $want_version ; then
fi
# Remove any leading autoconf platform prefix and the "dejagnu" prefix.
-command=`basename "$0" | sed -e 's/^.*-\?dejagnu-\?//'`
+# command=`basename "$0" | sed -e 's/^.*-\?dejagnu-\?//'`
+# The above simple solution is not portable, so we use Awk:
+command=`echo "$0" | awk 'BEGIN { FS = "/" }
+{ OFS = FS = "-"
+ $0 = $NF
+ for (i = 1; i <= NF; i++) if ($i ~ /dejagnu/) break;
+ for (j = 1; j <= (NF - i); j++) $j = $(j+i);
+ NF = j - 1
+ print }'`
+# Initially splitting on "/", then assigning the last field to the record
+# performs the role of basename. Splitting on "-" and searching for a
+# field matching /dejagnu/ identifies the other prefixes, and the second
+# loop removes the "dejagnu" prefix and everything before it. The record
+# is then truncated, printed, and thereby returned to the shell.
while expr $# \> 0 > /dev/null
do
8<----
With that fixed I ran into:
Found subcommand foo with variants: tcl sh
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .
Selected variant tcl
grep -q isn't portable, too, also documented in the Autoconf manual:
Some of the options required by Posix are not portable in practice.
Don't use @samp{grep -q} to suppress output, because traditional @command{grep}
implementations (e.g., Solaris) do not support @option{-q}.
Fixed in commits 84c903914b49e5051f116b7a1512ee6d962d71bc (first) and
e2fa0bcf54e2bb05106be1ce22a73de4f7381444 (second). Splitting this also
allowed for neatly cleaning up the rest of the help display code in the
second commit.
8<----
diff --git a/dejagnu b/dejagnu
index c38dd4d..57767b1 100755
--- a/dejagnu
+++ b/dejagnu
@@ -248,11 +248,10 @@ if $have_gawk ; then
fi
# is "awk" actually GNU Awk?
if $have_awk ; then
- if "$awkbin" --version | sed 1q | grep -qi 'GNU Awk' ; then
- have_gawk_as_awk=true
- else
- have_gawk_as_awk=false
- fi
+ case `"$awkbin" --version 2>&1 | sed 1q` in
+ *'GNU Awk'*) have_gawk_as_awk=true ;;
+ *) have_gawk_as_awk=false ;;
+ esac
fi
if expr "$verbose" \> 2 > /dev/null ; then
if $have_awk ; then
8<----
8<----
diff --git a/dejagnu b/dejagnu
index 57767b1..d323a62 100755
--- a/dejagnu
+++ b/dejagnu
@@ -418,21 +418,15 @@ if $want_help ; then
echo ERROR: file "'$help_file'" is not readable
exit 2
fi
- if grep -q '#help' "$help_file" \
- && grep -q '#end' "$help_file"; then : ; else
+ if awk '/#help$/ { pfxlen = length($0) - 4 }
+ pfxlen && substr($0, pfxlen) == "#end" { exit 1 }
+ ' "$help_file" ; then
echo ERROR: file "'$help_file'" does not contain a help message
exit 2
fi
- help_prefix_pat=`grep '#help' "$help_file" \
- | sed -e 's/#help.*$//' -e '1q' | tr '[:print:][:blank:]' .`
- if expr "$verbose" \> 1 > /dev/null ; then
- echo Extracting help from "'$help_file'" with prefix "'$help_prefix_pat'
- fi
- sed -n < "$help_file" \
- -e '1,/#help/d' \
- -e '/^'"$help_prefix_pat"'#end/q' \
- -e 's/^'"$help_prefix_pat"'//;p'
- exit 0
+ exec awk '/#help$/ { pfxlen = length($0) - 4 }
+ pfxlen && substr($0, pfxlen) == "#end" { exit 0 }
+ pfxlen { print substr($0, pfxlen) }' "$help_file"
fi
if test -z "$command" ; then
8<----
Now I'm down to
Running
/vol/src/gnu/dejagnu/dejagnu-1.6.3-branch/local/testsuite/launcher.all/command.exp
...
FAIL: dejagnu --help works
FAIL: dejagnu foo --help works if shell variant selected
This only occurs when running runtest --tool launcher manually, but
works with make check.
Please try the revised help support above; I suspect that there may have
been other issues. Working with make check but not directly invoked
runtest is ... strange.
-- Jacob