]> git.saurik.com Git - bison.git/blobdiff - bootstrap
Convert underscores to dashes in some %define variable names.
[bison.git] / bootstrap
index e0ac7c75b2850fa1c4a005337f799e129174d293..4b0abfa64a37221d0cf5a1d3f15703f56b0dffb3 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -2,7 +2,8 @@
 
 # Bootstrap this package from checked-out sources.
 
 
 # Bootstrap this package from checked-out sources.
 
-# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -35,7 +36,7 @@ bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
 bt2=${bt}2
 
 usage() {
 bt2=${bt}2
 
 usage() {
-  echo >&2 "\
+  cat <<EOF
 Usage: $0 [OPTION]...
 Bootstrap this package from the checked-out sources.
 
 Usage: $0 [OPTION]...
 Bootstrap this package from the checked-out sources.
 
@@ -56,7 +57,7 @@ If the file bootstrap.conf exists in the current working directory, its
 contents are read as shell variables to configure the bootstrap.
 
 Running without arguments will suffice in most cases.
 contents are read as shell variables to configure the bootstrap.
 
 Running without arguments will suffice in most cases.
-"
+EOF
 }
 
 # Configuration.
 }
 
 # Configuration.
@@ -128,7 +129,7 @@ excluded_files=
 
 # File that should exist in the top directory of a checked out hierarchy,
 # but not in a distribution tarball.
 
 # File that should exist in the top directory of a checked out hierarchy,
 # but not in a distribution tarball.
-checkout_only_file=README-hacking
+checkout_only_file=HACKING
 
 # Whether to use copies instead of symlinks.
 copy=false
 
 # Whether to use copies instead of symlinks.
 copy=false
@@ -210,7 +211,7 @@ if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
   exit 1
 fi
 
   exit 1
 fi
 
-# If $STR is not already on a line by itself in $FILE, insert it,
+# If each line in $STR is not already on a line by itself in $FILE, insert it,
 # sorting the new contents of the file and replacing $FILE with the result.
 insert_sorted_if_absent() {
   file=$1
 # sorting the new contents of the file and replacing $FILE with the result.
 insert_sorted_if_absent() {
   file=$1
@@ -221,6 +222,21 @@ insert_sorted_if_absent() {
     || exit 1
 }
 
     || exit 1
 }
 
+# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
+# insert_sorted_if_absent.
+insert_vc_ignore() {
+  vc_ignore_file="$1"
+  case $vc_ignore_file in
+  *.gitignore)
+    # A .gitignore entry that does not start with `/' applies recursively to
+    # subdirectories, so prepend `/' to every .gitignore entry.
+    pattern=`echo "$2" | sed s,^,/,`;;
+  *)
+    pattern="$2";;
+  esac
+  insert_sorted_if_absent "$vc_ignore_file" "$pattern"
+}
+
 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
 found_aux_dir=no
 grep '^[        ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
 found_aux_dir=no
 grep '^[        ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
@@ -239,7 +255,7 @@ if test ! -d $build_aux; then
   mkdir $build_aux
   for dot_ig in x $vc_ignore; do
     test $dot_ig = x && continue
   mkdir $build_aux
   for dot_ig in x $vc_ignore; do
     test $dot_ig = x && continue
-    insert_sorted_if_absent $dot_ig $build_aux
+    insert_vc_ignore $dot_ig $build_aux
   done
 fi
 
   done
 fi
 
@@ -251,6 +267,20 @@ cleanup_gnulib() {
   exit $status
 }
 
   exit $status
 }
 
+# See if we can use gnulib's git-merge-changelog merge driver.
+
+if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
+  if git config merge.merge-changelog.driver >/dev/null ; then
+    :
+  elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
+    echo "initializing git-merge-changelog driver"
+    git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
+    git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
+  else
+    echo "consider installing git-merge-changelog from gnulib"
+  fi
+fi
+
 # Get gnulib files.
 
 case ${GNULIB_SRCDIR--} in
 # Get gnulib files.
 
 case ${GNULIB_SRCDIR--} in
@@ -274,7 +304,7 @@ case ${GNULIB_SRCDIR--} in
 
     trap cleanup_gnulib 1 2 13 15
 
 
     trap cleanup_gnulib 1 2 13 15
 
-    cvs -z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/gnulib co gnulib ||
+    cvs -z3 -q -d ${CVS_PREFIX}pserver.git.sv.gnu.org:/gnulib.git co -d gnulib HEAD ||
       cleanup_gnulib
 
     trap - 1 2 13 15
       cleanup_gnulib
 
     trap - 1 2 13 15
@@ -333,6 +363,27 @@ case $SKIP_PO in
   fi;;
 esac
 
   fi;;
 esac
 
+check_dst_dir()
+{
+  dst=$1
+  # If the destination directory doesn't exist, create it.
+  # This is required at least for "lib/uniwidth/cjk.h".
+  dst_dir=`dirname "$dst"`
+  if ! test -d "$dst_dir"; then
+    mkdir -p "$dst_dir"
+
+    # If we've just created a directory like lib/uniwidth,
+    # tell version control system(s) it's ignorable.
+    # FIXME: for now, this does only one level
+    parent=`dirname "$dst_dir"`
+    for dot_ig in x $vc_ignore; do
+      test $dot_ig = x && continue
+      ig=$parent/$dot_ig
+      insert_vc_ignore $ig `echo "$dst_dir"|sed 's,.*/,,'`
+    done
+  fi
+}
+
 symlink_to_dir()
 {
   src=$1/$2
 symlink_to_dir()
 {
   src=$1/$2
@@ -340,22 +391,7 @@ symlink_to_dir()
 
   test -f "$src" && {
 
 
   test -f "$src" && {
 
-    # If the destination directory doesn't exist, create it.
-    # This is required at least for "lib/uniwidth/cjk.h".
-    dst_dir=`dirname "$dst"`
-    if ! test -d "$dst_dir"; then
-      mkdir -p "$dst_dir"
-
-      # If we've just created a directory like lib/uniwidth,
-      # tell version control system(s) it's ignorable.
-      # FIXME: for now, this does only one level
-      parent=`dirname "$dst_dir"`
-      for dot_ig in x $vc_ignore; do
-       test $dot_ig = x && continue
-       ig=$parent/$dot_ig
-       insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
-      done
-    fi
+    check_dst_dir "$dst"
 
     if $copy; then
       {
 
     if $copy; then
       {
@@ -419,6 +455,7 @@ cp_mark_as_generated()
        sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst"
       }
     else
        sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst"
       }
     else
+      check_dst_dir "$cp_dst"
       # Copy the file first to get proper permissions if it
       # doesn't already exist.  Then overwrite the copy.
       cp "$cp_src" "$cp_dst-t" &&
       # Copy the file first to get proper permissions if it
       # doesn't already exist.  Then overwrite the copy.
       cp "$cp_src" "$cp_dst-t" &&
@@ -499,18 +536,18 @@ slurp() {
       test $dot_ig = x && continue
       ig=$dir/$dot_ig
       if test -n "$copied"; then
       test $dot_ig = x && continue
       ig=$dir/$dot_ig
       if test -n "$copied"; then
-       insert_sorted_if_absent $ig "$copied"
+       insert_vc_ignore $ig "$copied"
        # If an ignored file name ends with _.h, then also add
        # the name with just ".h".  Many gnulib headers are generated,
        # e.g., stdint_.h -> stdint.h, dirent_.h ->..., etc.
        # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
        f=`echo "$copied"|sed 's/_\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
        # If an ignored file name ends with _.h, then also add
        # the name with just ".h".  Many gnulib headers are generated,
        # e.g., stdint_.h -> stdint.h, dirent_.h ->..., etc.
        # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
        f=`echo "$copied"|sed 's/_\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
-       insert_sorted_if_absent $ig "$f"
+       insert_vc_ignore $ig "$f"
 
        # For files like sys_stat_.h and sys_time_.h, record as
        # ignorable the directory we might eventually create: sys/.
        f=`echo "$copied"|sed 's/sys_.*_\.h$/sys/'`
 
        # For files like sys_stat_.h and sys_time_.h, record as
        # ignorable the directory we might eventually create: sys/.
        f=`echo "$copied"|sed 's/sys_.*_\.h$/sys/'`
-       insert_sorted_if_absent $ig "$f"
+       insert_vc_ignore $ig "$f"
       fi
     done
   done
       fi
     done
   done