Fix [perl #116523] Configure is confused by '=' in output from uname -a
authorAndy Dougherty <doughera@lafayette.edu>
Mon, 18 Feb 2013 14:33:09 +0000 (09:33 -0500)
committerAndy Dougherty <doughera@lafayette.edu>
Tue, 19 Feb 2013 14:42:07 +0000 (09:42 -0500)
Previously, Configure used to try to post-process the output of uname -a.
This was to support Xenix, which gave output like this:
    sysname=XENIX
    nodename=whatever
    release=2.3.2 .. etc...

Configure attempted to parse that output and build up a $myuname variable
that resembled those generated on traditional Unix systems.
More recently, a user reported uname -a output on a CVS checkout
of NetBSD that also included information such as

       root=username@hostname:/dirname module=src branch=HEAD

The Configure code misparsed that and ended up throwing most of it away.
This patch takes the simplest approach and just skips the attempt to
process the Xenix output.

This is based on commit 05a827803ab3908a795df94f6ed3890e24a6df2 in the
metaconfig repository.

Configure

index 0a70864..f7bbbc5 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -3101,9 +3101,13 @@ case "$config_sh" in
 '')
 myuname=`$uname -a 2>/dev/null`
 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
+# Downcase everything to avoid ambiguity.
+# Remove slashes and single quotes so we can use parts of this in 
+# directory and file names.
+# Remove newlines so myuname is sane to use elsewhere.
 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
 # because the A-Z/a-z are not consecutive.
-myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
+myuname=`echo $myuname | $sed -e "s,['/],,g" | \
        ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
 newmyuname="$myuname"
 dflt=n