RFR: JDK-8034199 Add 'reconfigure' target for re-creating a configuration

Martin Buchholz martinrb at google.com
Wed Feb 12 18:19:32 UTC 2014


>
>
> >
> >>>
> >>> Have you tried running with complex arguments, like
> --with-extra-cflags="-flag1 -flag2"?
> >>
> >> No. It will probably fail. :( Maybe we can detect this and warn/refuse
> to run, but I don't even want to start thinking how we could support that
> in the reconfigure target. It's probably not worth it.
>
> This worries me. If someone does use complicated options that would fail
> on re-run perhaps it's best to fail immediately rather than leave a
> mysterious (possibly silent) failure for some later point. Either fully
> support it or don't support it at all.
>
> Imagine --with-extra-cflags="-flag1 -q"
>
> If the -q gets turned into a configure option on reconfigure what havoc
> might this wreak?
>
>
I agree with not flaking out randomly and getting this right.

I'm not sure exactly what the problem is, but do you need a contribution
like this:

# Prints the shell-escaped version of the argument words.  If the
# result is later passed within input to any Bourne-family or csh-family
shell,
# the original words will be reconstituted, with the sole exception that the
# newline character is not reconstituted properly in a csh-family shell.
#
# This function is a good choice for providing a readable version of a
# command, used for example in log files, so that they can later be
# copy/pasted into a shell and executed with the original meaning.
function shell_quote() {
  local word
  local -a quoted_words=()
  for word in "$@"; do
    # Uses only shell-safe characters?  No quoting needed.
    # '=' is a zsh meta-character, but only in word-initial position.
    if [[ "${word}" =~
^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.:,%/+=_-]+$
          && ! "${word}" =~ ^= ]]; then
      quoted_words+=("${word}")
    else
      if [[ "${word}" =~ [\'!] ]]; then
        # csh does history expansion within single quotes, but not
        # when backslash-escaped!
        local quoted_quote="'\\''" quoted_exclam="'\\!'"
        word="${word//\'/${quoted_quote}}"
        word="${word//\!/${quoted_exclam}}"
      fi
      quoted_words+=("'${word}'")
    fi
  done
  local IFS=' '
  printf "%s" "${quoted_words[*]}"
}



More information about the build-dev mailing list