libtool
[Top][All Lists]
Advanced

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

Re: ksh bug on Tru64 UNIX causes current libtool failure


From: Ralf Wildenhues
Subject: Re: ksh bug on Tru64 UNIX causes current libtool failure
Date: Wed, 25 May 2005 18:22:37 +0200
User-agent: Mutt/1.4.1i

[ Alexander, the patch to work around shell bugs on your platform breaks
on other ones.  As the failure on yours are "more" harmless, I'd like to
revert them.  See the thread on the libtool mailing list. ]

* Nicolas Joly wrote on Thu, May 19, 2005 at 12:39:43AM CEST:
> On Wed, May 18, 2005 at 11:09:21PM +0200, Ralf Wildenhues wrote:
> > * Nicolas Joly wrote on Wed, May 18, 2005 at 05:03:05PM CEST:
> > >
> > > I can't even compile libtool 1.5.18 on my Tru64 unix V5.1B
> > > workstation:
> > *snip*
> > > /bin/ksh ./libtool --tag=CC --mode=compile cc -DHAVE_CONFIG_H  -I. -I. 
> > > -I.      -g -c -o ltdl.lo ltdl.c
> > > libtool: compile: libobj name `ltdl.lo' may not contain shell special 
> > > characters.
> > > *** Exit 1
> > 
> > That'll teach me to ever do fatal errors based on shell correctness
> > assumptions again.  :(

OK to apply this patch to branch-2-0 and HEAD, and then backport to
branch-1-5?

BTW, I have been working on actually allowing these special characters
in object file names.  Just not done yet (and that will certainly not be
backported).

Regards,
Ralf

        * config/ltmain.m4sh (func_mode_compile): In order to find out
        about forbidden characters in output, check with grep after checking
        func_quote_for_eval result.  Also, warn instead of fail.
        * config/general.m4sh (func_quote_for_eval, func_quote_for_expand):
        Revert SunOS sh bug workaround patch from 2004-12-28 as it
        triggers bugs in the Tru64 5.1B shell.
        Reported by Albert Chin <address@hidden> and
        Nicolas Joly <address@hidden>.

Index: config/ltmain.m4sh
===================================================================
RCS file: /cvsroot/libtool/libtool/config/ltmain.m4sh,v
retrieving revision 1.66
diff -u -r1.66 ltmain.m4sh
--- config/ltmain.m4sh  27 Apr 2005 11:30:38 -0000      1.66
+++ config/ltmain.m4sh  25 May 2005 16:06:23 -0000
@@ -1228,7 +1228,8 @@
 
     func_quote_for_eval "$libobj"
     test "X$libobj" != "X$func_quote_for_eval_result" \
-      && func_fatal_error "libobj name \`$libobj' may not contain shell 
special characters."
+      && $ECHO "X$libobj" | $GREP ['[@:>@~#^*{};<>?"'"'"'      &()|`$@<:@]'] \
+      && func_warning "libobj name \`$libobj' may not contain shell special 
characters."
     func_basename "$obj"
     objname="$func_basename_result"
     func_dirname "$obj" "/" ""
Index: config/general.m4sh
===================================================================
RCS file: /cvsroot/libtool/libtool/config/general.m4sh,v
retrieving revision 1.17
diff -u -r1.17 general.m4sh
--- config/general.m4sh 22 Apr 2005 10:10:30 -0000      1.17
+++ config/general.m4sh 25 May 2005 16:06:23 -0000
@@ -96,9 +96,6 @@
 # Same as above, but do not quote variable references.
 double_quote_subst='s/\([["`\\]]\)/\\\1/g'
 
-# Protect character class for func_quote_* by variable expansion.
-quote_scanset='[[@<:@~#^*{};<>?'"'"'   ]]'
-
 # Re-`\' parameter expansions in output of double_quote_subst that were
 # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
 # in input to double_quote_subst, that '$' was protected from expansion.
@@ -286,11 +283,9 @@
       # Double-quote args containing shell metacharacters to delay
       # word splitting, command substitution and and variable
       # expansion for a subsequent eval.
-      # in scan sets, and some SunOS ksh mistreat backslash-escaping
-      # in scan sets (worked around with variable expansion),
-      # and furthermore cannot handle '|' '&' '(' ')' in scan sets
-      # at all, so we specify them separately.
-      *$quote_scanset* | *@:>@* | *\|* | *\&* | *\(* | *\)* | "")
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[[\@<:@\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \        ]]*|*@:>@*|"")
         func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
         ;;
       *)
@@ -316,11 +311,8 @@
       # Double-quote args containing shell metacharacters to delay
       # word splitting and command substitution for a subsequent eval.
       # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, and some SunOS ksh mistreat backslash-escaping
-      # in scan sets (worked around with variable expansion),
-      # and furthermore cannot handle '|' '&' '(' ')' in scan sets
-      # at all, so we specify them separately.
-      *$quote_scanset* | *@:>@* | *\|* | *\&* | *\(* | *\)* | "")
+      # in scan sets, so we specify it separately.
+      *[[\@<:@\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \        ]]*|*@:>@*|"")
         my_arg="\"$my_arg\""
         ;;
     esac




reply via email to

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