]> Dogcows Code - chaz/tar/blobdiff - bootstrap
* bootstrap: Redo po file retrieval to match Bison's method,
[chaz/tar] / bootstrap
index 2afc661991aae58d9921a9f14c5810db73cf4716..8cdc00cc8a14304243c7c4eca7719e6a170248fb 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -1,8 +1,8 @@
 #! /bin/sh
 
 #! /bin/sh
 
-# Bootstrap 'tar' from CVS.
+# Bootstrap this package from CVS.
 
 
-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006 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
 
 # Written by Paul Eggert and Sergey Poznyakoff.
 
 
 # Written by Paul Eggert and Sergey Poznyakoff.
 
-# URL of our text domain page in Translation Project
-TP_URL="http://www.iro.umontreal.ca/translation/maint/tar/"
+package=tar
 
 
-# Ensure file names are sorted consistently across platforms;
-# e.g., m4/ulonglong_gl.m4 should follow m4/ulonglong.m4.
+# Translation Project URL, for the registry of all projects.
+TP_URL='http://www.iro.umontreal.ca/translation/registry.cgi?domain='
+
+# Ensure file names are sorted consistently across platforms.
+# Also, ensure diagnostics are in English, e.g., "wget --help" below.
 LC_ALL=C
 export LC_ALL
 
 LC_ALL=C
 export LC_ALL
 
@@ -59,30 +61,11 @@ and the result is prepended to the command line options.
 Running without arguments will suffice in most cases. It is equivalent
 to
 
 Running without arguments will suffice in most cases. It is equivalent
 to
 
-    ./bootstrap --cvs-auth=ext --cvs-user=anoncvs
+    ./bootstrap --cvs-auth=pserver
 
 EOF
 }
 
 
 EOF
 }
 
-update_po() {
-  if [ $# = 1 ]; then
-    case $1 in
-    *.po)  POFILE=$1;;
-    *)     POFILE=${1}.po;;
-    esac
-    echo "$0: getting translation for $1..."
-    wget -r --cache=off $TP_URL/$POFILE
-  else
-    echo "$0: getting translations into po..."
-    (cd po &&
-     rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'` &&
-      wget -nv -nd -r -l 1 -A .po --cache off $TP_URL &&
-      rm -f index.html index.html.[0-9]*
-      ls *.po | sed 's/\.po$//' >LINGUAS
-    ) || exit
-  fi
-}
-
 # Read configuration file
 if [ -r .bootstrap ]; then
   echo "$0: Reading configuration file .bootstrap"
 # Read configuration file
 if [ -r .bootstrap ]; then
   echo "$0: Reading configuration file .bootstrap"
@@ -118,16 +101,87 @@ do
   esac
 done
 
   esac
 done
 
+# Get translations.
+
+get_translations() {
+  subdir=$1
+  domain=$2
+  po_file=$3
+
+  echo "$0: getting translations into $subdir for $domain..."
+  (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`) &&
+
+  $WGET_COMMAND -O "$subdir/$domain.html" "$TP_URL$domain" &&
+
+  sed -n 's|.*"http://[^"]*/translation/teams/PO/\([^/"]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\1.\2|p' <"$subdir/$domain.html" |
+  sort -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |
+  awk -F. '
+    { if (lang && $1 != lang) print lang, ver }
+    { lang = $1; ver = substr($0, index($0, ".") + 1) }
+    END { if (lang) print lang, ver }
+  ' |
+  awk -v domain="$domain" -v po_file="$po_file" -v subdir="$subdir" '
+    {
+      lang = $1
+      if (po_file == (lang ".po")) next
+
+      # Work around bugs in translations uncovered by gettext 0.15.
+      # This workaround can be removed once the translations are fixed.
+      if (lang == "hu" || lang == "ja" || lang == "ky" || lang == "zh_TW") next
+
+      ver = $2
+      urlfmt = ""
+      printf "$WGET_COMMAND -O %s/%s.po 'http://www.iro.umontreal.ca/translation/teams/PO/%s/%s-%s.%s.po' &&\n", subdir, lang, lang, domain, ver, lang
+    }
+    END { print ":" }
+  ' |
+  sh &&
+  ls "$subdir"/*.po | sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
+:  rm "$subdir/$domain.html"
+}
+
+update_po() {
+  if [ $# = 1 ]; then
+    case $1 in
+    *.po)  POFILE=$1;;
+    *)     POFILE=${1}.po;;
+    esac
+    get_translations po $package "$POFILE" &&
+    LANG=`expr $POFILE : '\(.*\)\.po'` &&
+    { grep -q $LANG po/LINGUAS ||
+        (echo $LANG; cat po/LINGUAS) | sort -o po/LINGUAS; }
+  else
+    get_translations po $package
+  fi
+}
+
+case $DOWNLOAD_PO in
+no) ;;
+*)
+  case `wget --help` in
+  *'--no-cache'*)
+    no_cache='--no-cache';;
+  *'--cache=on/off'*)
+    no_cache='--cache=off';;
+  *)
+    no_cache='';;
+  esac
+
+  WGET_COMMAND="wget -nv $no_cache"
+  export WGET_COMMAND
+esac
+
 case $DOWNLOAD_PO in
 only)  update_po
 case $DOWNLOAD_PO in
 only)  update_po
-       exit 0
+       exit
        ;;
 no|yes) ;;
 *)     update_po $DOWNLOAD_PO
        ;;
 no|yes) ;;
 *)     update_po $DOWNLOAD_PO
-       exit 0
+       exit
 esac
 
 esac
 
-echo "$0: Bootstrapping CVS tar..."
+
+echo "$0: Bootstrapping CVS $package..."
 
 build_cvs_prefix() {
   CVS_PREFIX=:${1}:
 
 build_cvs_prefix() {
   CVS_PREFIX=:${1}:
@@ -150,10 +204,8 @@ checkout() {
     trap exit 1 2 13 15
     trap 'rm -fr $1; exit 1' 0
 
     trap exit 1 2 13 15
     trap 'rm -fr $1; exit 1' 0
 
-    case "${CVS_AUTH--}" in
-    -)       build_cvs_prefix ext anoncvs
-             ;;
-    pserver) build_cvs_prefix $CVS_AUTH ${CVS_USER:-anoncvs}
+    case "${CVS_AUTH-pserver}" in
+    pserver) build_cvs_prefix pserver ${CVS_USER:-anonymous}
              ;;
     gserver|server)
             build_cvs_prefix $CVS_AUTH ${CVS_USER--}
              ;;
     gserver|server)
             build_cvs_prefix $CVS_AUTH ${CVS_USER--}
@@ -163,10 +215,7 @@ checkout() {
     *)       echo "$0: Unknown CVS access method" >&2
             exit 1;;
     esac
     *)       echo "$0: Unknown CVS access method" >&2
             exit 1;;
     esac
-    if [ "${CVS_AUTH--}" = "pserver" ]; then
-      cvs -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/$1 login || exit
-    fi
-    cvs -q -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/$1 co $1 || exit
+    cvs -q -d ${CVS_PREFIX}cvs.sv.gnu.org:/cvsroot/$1 co $1 || exit
 
     trap - 0
   fi
 
     trap - 0
   fi
@@ -203,11 +252,11 @@ copy_files() {
     esac
     dst=`echo $file | sed 's^.*/^^'`
     if [ $# -eq 3 ]; then
     esac
     dst=`echo $file | sed 's^.*/^^'`
     if [ $# -eq 3 ]; then
-      case $dst in  
+      case $dst in
       ${3}*) ;;
       *) dst=${3}$dst;;
       esac
       ${3}*) ;;
       *) dst=${3}$dst;;
       esac
-    fi  
+    fi
     echo "$0: Copying file $1/$file to $2/$dst"
     cp -p $1/$file $2/$dst
   done
     echo "$0: Copying file $1/$file to $2/$dst"
     cp -p $1/$file $2/$dst
   done
@@ -241,7 +290,8 @@ case ${GNULIB_SRCDIR--} in
    GNULIB_SRCDIR=gnulib
 esac
 
    GNULIB_SRCDIR=gnulib
 esac
 
-<$GNULIB_SRCDIR/gnulib-tool || exit
+gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
+<$gnulib_tool || exit
 
 get_modules gnulib.modules
 
 
 get_modules gnulib.modules
 
@@ -252,14 +302,14 @@ while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
   gnulib_modules=`
     (echo "$gnulib_modules"
      for gnulib_module in $gnulib_modules; do
   gnulib_modules=`
     (echo "$gnulib_modules"
      for gnulib_module in $gnulib_modules; do
-       $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
+       $gnulib_tool --extract-dependencies $gnulib_module
      done) | sort -u
   `
 done
 
 gnulib_files=`
   (for gnulib_module in $gnulib_modules; do
      done) | sort -u
   `
 done
 
 gnulib_files=`
   (for gnulib_module in $gnulib_modules; do
-     $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
+     $gnulib_tool --extract-filelist $gnulib_module
    done) | sort -u
 `
 
    done) | sort -u
 `
 
@@ -268,44 +318,38 @@ mkdir -p $gnulib_dirs || exit
 
 for gnulib_file in $gnulib_files; do
   dest=$gnulib_file
 
 for gnulib_file in $gnulib_files; do
   dest=$gnulib_file
-
-  case $gnulib_file in
-  m4/codeset.m4) continue;;
-  m4/intdiv0.m4) continue;;
-  m4/inttypes-pri.m4) continue;;
-  m4/isc-posix.m4) continue;;
-  m4/lcmessage.m4) continue;;
-  m4/onceonly_2_57.m4) dest=m4/onceonly.m4;;
-  # These will be overwritten by autopoint, which still uses
-  # old jm_.* macro names, so we have to keep both copies.
-  m4/gettext.m4 | m4/glibc21.m4 | m4/inttypes_h.m4 | m4/lib-ld.m4 | \
-  m4/lib-prefix.m4 | m4/po.m4 | m4/stdint_h.m4 | m4/uintmax_t.m4 | \
-  m4/ulonglong.m4)
-    dest=`expr $gnulib_file : '\(.*\).m4'`_gl.m4;;
-  esac
-
   rm -f $dest &&
   echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
   cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
 done
 
   rm -f $dest &&
   echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
   cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
 done
 
+# This suppresses a bogus diagnostic
+# "warning: macro `AM_LANGINFO_CODESET' not found in library".
+echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
+sed '
+  /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
+    AC_DEFUN([AM_INTL_SUBDIR], [])
+  /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
+    AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
+' m4/gettext.m4 >m4/gettext_gl.m4 || exit
+
 echo "$0: Creating m4/gnulib.m4"
 (echo "# This file is generated automatically. Please, do not edit."
  echo "#"
  echo "AC_DEFUN([tar_GNULIB],["
  for gnulib_module in $gnulib_modules; do
     echo "# $gnulib_module"
 echo "$0: Creating m4/gnulib.m4"
 (echo "# This file is generated automatically. Please, do not edit."
  echo "#"
  echo "AC_DEFUN([tar_GNULIB],["
  for gnulib_module in $gnulib_modules; do
     echo "# $gnulib_module"
-    $GNULIB_SRCDIR/gnulib-tool --extract-autoconf-snippet $gnulib_module
+    $gnulib_tool --extract-autoconf-snippet $gnulib_module
  done | sed '/AM_GNU_GETTEXT/d'
  echo "])") > ./m4/gnulib.m4
 
 echo "$0: Creating lib/Makefile.am"
  done | sed '/AM_GNU_GETTEXT/d'
  echo "])") > ./m4/gnulib.m4
 
 echo "$0: Creating lib/Makefile.am"
-(echo "# This file is generated automatically from lib/Makefile.am. Do not edit!"
+(echo "# This file is generated automatically. Do not edit!"
  cat lib/Makefile.tmpl
 
  for gnulib_module in $gnulib_modules; do
     echo "# $gnulib_module"
  cat lib/Makefile.tmpl
 
  for gnulib_module in $gnulib_modules; do
     echo "# $gnulib_module"
-    $GNULIB_SRCDIR/gnulib-tool --extract-automake-snippet $gnulib_module
+    $gnulib_tool --extract-automake-snippet $gnulib_module
  done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib/Makefile.am
 
 # Get translations.
  done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib/Makefile.am
 
 # Get translations.
@@ -315,8 +359,54 @@ fi
 
 # Reconfigure, getting other files.
 
 
 # Reconfigure, getting other files.
 
-echo "$0: autoreconf --verbose --install --force ..."
-autoreconf --verbose --install --force || exit 1
+echo "$0: autopoint --force ..."
+autopoint --force || exit
+
+# We don't need intl, so remove it.
+intl_files_to_remove='
+  intl
+  m4/gettext.m4
+  m4/glibc2.m4
+  m4/intdiv0.m4
+  m4/intmax.m4
+  m4/inttypes-h.m4
+  m4/inttypes-pri.m4
+  m4/lcmessage.m4
+  m4/lock.m4
+  m4/printf-posix.m4
+  m4/visibility.m4
+'
+echo $0: rm -fr $intl_files_to_remove ...
+rm -fr $intl_files_to_remove || exit
+
+
+# Undo changes to gnulib files that autoreconf made.
+for gnulib_file in $gnulib_files; do
+  test ! -f $gnulib_file || cmp -s $gnulib_file $GNULIB_SRCDIR/$gnulib_file || {
+    rm -f $gnulib_file &&
+    echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file again" &&
+    cp -p $GNULIB_SRCDIR/$gnulib_file $gnulib_file || exit
+  }
+done
+
+# Make sure aclocal.m4 is not older than input files.
+sleep 1
+
+for command in \
+  'aclocal --force -I m4' \
+  'autoconf --force' \
+  'autoheader --force' \
+  'automake --add-missing --copy --force-missing';
+do
+  echo "$0: $command ..."
+  $command || exit
+done
+
+
+# Put bug-reporting address into po/Makevars.
+echo "$0: sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-$package@gnu.org/' po/Makevars.template >po/Makevars ..."
+sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/' po/Makevars.template >po/Makevars
+
 
 
 echo "$0: done.  Now you can run './configure'."
 
 
 echo "$0: done.  Now you can run './configure'."
This page took 0.031327 seconds and 4 git commands to generate.