| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 | 
							- From 3adadb568fbf15d952bd25a005b6a9afb7e59dc7 Mon Sep 17 00:00:00 2001
 
- From: Pavel Raiskup <[email protected]>
 
- Date: Sun, 4 Oct 2015 21:55:03 +0200
 
- Subject: libtool: mitigate the $sed_quote_subst slowdown
 
- When it is reasonably possible, use shell implementation for
 
- quoting.
 
- References:
 
- http://lists.gnu.org/archive/html/libtool/2015-03/msg00005.html
 
- http://lists.gnu.org/archive/html/libtool/2015-02/msg00000.html
 
- https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20006
 
- * gl/build-aux/funclib.sh (func_quote): New function that can be
 
- used as substitution for '$SED $sed_quote_subst' call.
 
- * build-aux/ltmain.in (func_emit_wrapper): Use func_quote instead
 
- of '$SED $sed_quote_subst'.
 
- (func_mode_link): Likewise.
 
- * NEWS: Document.
 
- * bootstrap: Sync with funclib.sh.
 
- (cherry picked from commit 32f0df9835ac15ac17e04be57c368172c3ad1d19)
 
- (skipping NEWS change)
 
- Signed-off-by: Eneas U de Queiroz <[email protected]>
 
- --- a/bootstrap
 
- +++ b/bootstrap
 
- @@ -230,7 +230,7 @@ vc_ignore=
 
-  
 
-  # Source required external libraries:
 
-  # Set a version string for this script.
 
- -scriptversion=2015-01-20.17; # UTC
 
- +scriptversion=2015-10-04.22; # UTC
 
-  
 
-  # General shell script boiler plate, and helper functions.
 
-  # Written by Gary V. Vaughan, 2004
 
- @@ -1257,6 +1257,57 @@ func_relative_path ()
 
-  }
 
-  
 
-  
 
- +# func_quote ARG
 
- +# --------------
 
- +# Aesthetically quote one ARG, store the result into $func_quote_result.  Note
 
- +# that we keep attention to performance here (so far O(N) complexity as long as
 
- +# func_append is O(1)).
 
- +func_quote ()
 
- +{
 
- +    $debug_cmd
 
- +
 
- +    func_quote_result=$1
 
- +
 
- +    case $func_quote_result in
 
- +      *[\\\`\"\$]*)
 
- +        case $func_quote_result in
 
- +          *'*'*|*'['*)
 
- +            func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"`
 
- +            return 0
 
- +            ;;
 
- +        esac
 
- +
 
- +        func_quote_old_IFS=$IFS
 
- +        for _G_char in '\' '`' '"' '$'
 
- +        do
 
- +          # STATE($1) PREV($2) SEPARATOR($3)
 
- +          set start "" ""
 
- +          func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
 
- +          IFS=$_G_char
 
- +          for _G_part in $func_quote_result
 
- +          do
 
- +            case $1 in
 
- +            quote)
 
- +              func_append func_quote_result "$3$2"
 
- +              set quote "$_G_part" "\\$_G_char"
 
- +              ;;
 
- +            start)
 
- +              set first "" ""
 
- +              func_quote_result=
 
- +              ;;
 
- +            first)
 
- +              set quote "$_G_part" ""
 
- +              ;;
 
- +            esac
 
- +          done
 
- +          IFS=$func_quote_old_IFS
 
- +        done
 
- +        ;;
 
- +      *) ;;
 
- +    esac
 
- +}
 
- +
 
- +
 
-  # func_quote_for_eval ARG...
 
-  # --------------------------
 
-  # Aesthetically quote ARGs to be evaled later.
 
- @@ -1273,12 +1324,8 @@ func_quote_for_eval ()
 
-      func_quote_for_eval_unquoted_result=
 
-      func_quote_for_eval_result=
 
-      while test 0 -lt $#; do
 
- -      case $1 in
 
- -        *[\\\`\"\$]*)
 
- -	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
 
- -        *)
 
- -          _G_unquoted_arg=$1 ;;
 
- -      esac
 
- +      func_quote "$1"
 
- +      _G_unquoted_arg=$func_quote_result
 
-        if test -n "$func_quote_for_eval_unquoted_result"; then
 
-  	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
 
-        else
 
- --- a/build-aux/ltmain.in
 
- +++ b/build-aux/ltmain.in
 
- @@ -3356,7 +3356,8 @@ else
 
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
 
-      file=\"\$0\""
 
-  
 
- -    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
 
- +    func_quote "$ECHO"
 
- +    qECHO=$func_quote_result
 
-      $ECHO "\
 
-  
 
-  # A function that is used when there is no print builtin or printf.
 
- @@ -8618,8 +8619,8 @@ EOF
 
-  	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
 
-  	  fi
 
-  	done
 
- -	relink_command="(cd `pwd`; $relink_command)"
 
- -	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
 
- +	func_quote "(cd `pwd`; $relink_command)"
 
- +	relink_command=$func_quote_result
 
-        fi
 
-  
 
-        # Only actually do things if not in dry run mode.
 
- @@ -8865,7 +8866,8 @@ EOF
 
-        done
 
-        # Quote the link command for shipping.
 
-        relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
 
- -      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
 
- +      func_quote "$relink_command"
 
- +      relink_command=$func_quote_result
 
-        if test yes = "$hardcode_automatic"; then
 
-  	relink_command=
 
-        fi
 
- --- a/build-aux/funclib.sh
 
- +++ b/build-aux/funclib.sh
 
- @@ -1,5 +1,5 @@
 
-  # Set a version string for this script.
 
- -scriptversion=2015-01-20.17; # UTC
 
- +scriptversion=2015-10-04.22; # UTC
 
-  
 
-  # General shell script boiler plate, and helper functions.
 
-  # Written by Gary V. Vaughan, 2004
 
- @@ -1026,6 +1026,57 @@ func_relative_path ()
 
-  }
 
-  
 
-  
 
- +# func_quote ARG
 
- +# --------------
 
- +# Aesthetically quote one ARG, store the result into $func_quote_result.  Note
 
- +# that we keep attention to performance here (so far O(N) complexity as long as
 
- +# func_append is O(1)).
 
- +func_quote ()
 
- +{
 
- +    $debug_cmd
 
- +
 
- +    func_quote_result=$1
 
- +
 
- +    case $func_quote_result in
 
- +      *[\\\`\"\$]*)
 
- +        case $func_quote_result in
 
- +          *[\[\*\?]*)
 
- +            func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"`
 
- +            return 0
 
- +            ;;
 
- +        esac
 
- +
 
- +        func_quote_old_IFS=$IFS
 
- +        for _G_char in '\' '`' '"' '$'
 
- +        do
 
- +          # STATE($1) PREV($2) SEPARATOR($3)
 
- +          set start "" ""
 
- +          func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
 
- +          IFS=$_G_char
 
- +          for _G_part in $func_quote_result
 
- +          do
 
- +            case $1 in
 
- +            quote)
 
- +              func_append func_quote_result "$3$2"
 
- +              set quote "$_G_part" "\\$_G_char"
 
- +              ;;
 
- +            start)
 
- +              set first "" ""
 
- +              func_quote_result=
 
- +              ;;
 
- +            first)
 
- +              set quote "$_G_part" ""
 
- +              ;;
 
- +            esac
 
- +          done
 
- +          IFS=$func_quote_old_IFS
 
- +        done
 
- +        ;;
 
- +      *) ;;
 
- +    esac
 
- +}
 
- +
 
- +
 
-  # func_quote_for_eval ARG...
 
-  # --------------------------
 
-  # Aesthetically quote ARGs to be evaled later.
 
- @@ -1042,12 +1093,8 @@ func_quote_for_eval ()
 
-      func_quote_for_eval_unquoted_result=
 
-      func_quote_for_eval_result=
 
-      while test 0 -lt $#; do
 
- -      case $1 in
 
- -        *[\\\`\"\$]*)
 
- -	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
 
- -        *)
 
- -          _G_unquoted_arg=$1 ;;
 
- -      esac
 
- +      func_quote "$1"
 
- +      _G_unquoted_arg=$func_quote_result
 
-        if test -n "$func_quote_for_eval_unquoted_result"; then
 
-  	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
 
-        else
 
 
  |