]> Dogcows Code - chaz/tar/blobdiff - bootstrap
(struct name): New member `explicit'. Remove unused member `isdir'
[chaz/tar] / bootstrap
index b1a2ee76c1c936e6958daa8640a79deba4673f12..2afc661991aae58d9921a9f14c5810db73cf4716 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -2,7 +2,7 @@
 
 # Bootstrap 'tar' from CVS.
 
 
 # Bootstrap 'tar' from CVS.
 
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005 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
 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
 
 
-# Written by Paul Eggert.
+# Written by Paul Eggert and Sergey Poznyakoff.
 
 # URL of our text domain page in Translation Project
 
 # URL of our text domain page in Translation Project
-TP_URL="http://www2.iro.umontreal.ca/~gnutra/po/maint/tar/"
+TP_URL="http://www.iro.umontreal.ca/translation/maint/tar/"
+
+# Ensure file names are sorted consistently across platforms;
+# e.g., m4/ulonglong_gl.m4 should follow m4/ulonglong.m4.
+LC_ALL=C
+export LC_ALL
 
 usage() {
  cat <<EOF
 
 usage() {
  cat <<EOF
- usage: $0 [--gnulib-srcdir=DIR][--cvs-auth=AUTH-METHOD][--cvs-user=USERNAME][--no-po]
+ usage: $0 [--gnulib-srcdir=DIR][--paxutils-srcdir=DIR][--cvs-auth=AUTH-METHOD][--cvs-user=USERNAME][--no-po]
  Options are:
  Options are:
+ --paxutils-srcdir=DIRNAME    Specify the local directory where paxutils
+                              sources reside. Use this if you already
+                              have paxutils sources on your machine, and
+                              do not want to waste your bandwidth dowloading
+                              them again.
  --gnulib-srcdir=DIRNAME      Specify the local directory where gnulib
                               sources reside. Use this if you already
                               have gnulib sources on your machine, and
  --gnulib-srcdir=DIRNAME      Specify the local directory where gnulib
                               sources reside. Use this if you already
                               have gnulib sources on your machine, and
@@ -40,6 +50,11 @@ usage() {
  --cvs-user=USERNAME          Set the CVS username to be used when accessing
                               the gnulib repository.
  --no-po                      Do not download po files.
  --cvs-user=USERNAME          Set the CVS username to be used when accessing
                               the gnulib repository.
  --no-po                      Do not download po files.
+ --update-po[=LANG]           Update po file(s) and exit.
+
+If the file \`.bootstrap' exists in the current working directory, its
+contents is read, comments and empty lines removed, shell variables expanded
+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
@@ -49,6 +64,31 @@ to
 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"
+  eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
+fi
+
 # Parse options.
 
 DOWNLOAD_PO=yes
 # Parse options.
 
 DOWNLOAD_PO=yes
@@ -60,18 +100,33 @@ do
     exit;;
   --gnulib-srcdir=*)
     GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
     exit;;
   --gnulib-srcdir=*)
     GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
+  --paxutils-srcdir=*)
+    PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
   --cvs-auth=*)
     CVS_AUTH=`expr "$option" : '--cvs-auth=\(.*\)'`;;
   --cvs-user=*)
     CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
   --no-po)
     DOWNLOAD_PO=no;;
   --cvs-auth=*)
     CVS_AUTH=`expr "$option" : '--cvs-auth=\(.*\)'`;;
   --cvs-user=*)
     CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
   --no-po)
     DOWNLOAD_PO=no;;
+  --update-po=*)
+    DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;
+  --update-po)
+    DOWNLOAD_PO=only;;
   *)
     echo >&2 "$0: $option: unknown option"
     exit 1;;
   esac
 done
 
   *)
     echo >&2 "$0: $option: unknown option"
     exit 1;;
   esac
 done
 
+case $DOWNLOAD_PO in
+only)  update_po
+       exit 0
+       ;;
+no|yes) ;;
+*)     update_po $DOWNLOAD_PO
+       exit 0
+esac
+
 echo "$0: Bootstrapping CVS tar..."
 
 build_cvs_prefix() {
 echo "$0: Bootstrapping CVS tar..."
 
 build_cvs_prefix() {
@@ -87,77 +142,110 @@ build_cvs_prefix() {
   fi
 }
 
   fi
 }
 
-# Get gnulib files.
-
-case ${GNULIB_SRCDIR--} in
--)
-  if [ ! -d gnulib ]; then
-    echo "$0: getting gnulib files..."
+# checkout package
+checkout() {
+  if [ ! -d $1 ]; then
+    echo "$0: getting $1 files..."
 
     trap exit 1 2 13 15
 
     trap exit 1 2 13 15
-    trap 'rm -fr gnulib; exit 1' 0
+    trap 'rm -fr $1; exit 1' 0
 
     case "${CVS_AUTH--}" in
 
     case "${CVS_AUTH--}" in
-    -)       build_cvs_prefix ext anoncvs;;
-    pserver) build_cvs_prefix $CVS_AUTH ${CVS_USER:-anoncvs};;
+    -)       build_cvs_prefix ext anoncvs
+             ;;
+    pserver) build_cvs_prefix $CVS_AUTH ${CVS_USER:-anoncvs}
+             ;;
     gserver|server)
     gserver|server)
-            build_cvs_prefix $CVS_AUTH ${CVS_USER--};;
-    ext)     build_cvs_prefix $CVS_AUTH ${CVS_USER--};;
+            build_cvs_prefix $CVS_AUTH ${CVS_USER--}
+            ;;
+    ext)     build_cvs_prefix $CVS_AUTH ${CVS_USER--}
+             ;;
     *)       echo "$0: Unknown CVS access method" >&2
             exit 1;;
     esac
     if [ "${CVS_AUTH--}" = "pserver" ]; then
     *)       echo "$0: Unknown CVS access method" >&2
             exit 1;;
     esac
     if [ "${CVS_AUTH--}" = "pserver" ]; then
-      cvs -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/gnulib login || exit
+      cvs -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/$1 login || exit
     fi
     fi
-    cvs -q -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/gnulib co gnulib || exit
+    cvs -q -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/$1 co $1 || exit
 
 
-    trap 0
+    trap 0
   fi
   fi
-  GNULIB_SRCDIR=gnulib
+}
+
+gnulib_modules=
+newline='
+'
+
+get_modules() {
+  new_gnulib_modules=`sed '/^[  ]*#/d; /^[      ]*$/d' $*`
+  case $gnulib_modules,$new_gnulib_modules in
+  ?*,?*) new_gnulib_modules=$newline$new_gnulib_modules;;
+  esac
+  gnulib_modules=$gnulib_modules$new_gnulib_modules
+}
+
+# Get paxutils files
+case ${PAXUTILS_SRCDIR--} in
+-) checkout paxutils
+   PAXUTILS_SRCDIR=paxutils
+esac
+
+if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then
+  get_modules $PAXUTILS_SRCDIR/gnulib.modules
+fi
+
+# copy_files srcdir dstdir
+copy_files() {
+  for file in `cat $1/DISTFILES`
+  do
+    case $file in
+    "#*")  continue;;
+    esac
+    dst=`echo $file | sed 's^.*/^^'`
+    if [ $# -eq 3 ]; then
+      case $dst in  
+      ${3}*) ;;
+      *) dst=${3}$dst;;
+      esac
+    fi  
+    echo "$0: Copying file $1/$file to $2/$dst"
+    cp -p $1/$file $2/$dst
+  done
+}
+
+copy_files ${PAXUTILS_SRCDIR}/m4 m4
+echo "$0: Creating m4/paxutils.m4"
+(echo "# This file is generated automatically. Please, do not edit."
+ echo "#"
+ echo "AC_DEFUN([tar_PAXUTILS],["
+ cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
+ echo "])") > ./m4/paxutils.m4
+
+if [ -d rmt ]; then
+   :
+else
+   mkdir rmt
+fi
+
+for dir in doc rmt lib tests
+do
+       copy_files ${PAXUTILS_SRCDIR}/$dir $dir
+done
+
+copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax
+
+# Get gnulib files.
+
+case ${GNULIB_SRCDIR--} in
+-) checkout gnulib
+   GNULIB_SRCDIR=gnulib
 esac
 
 <$GNULIB_SRCDIR/gnulib-tool || exit
 
 esac
 
 <$GNULIB_SRCDIR/gnulib-tool || exit
 
-gnulib_modules='
-alloca
-argmatch
-backupfile
-dirname
-error
-exclude
-fileblocks
-fnmatch-gnu
-ftruncate
-full-write
-getdate
-getline
-getopt
-gettext
-gettime
-hash
-human
-lchown
-memset
-modechange
-obstack
-quote
-quotearg
-rmdir
-safe-read
-save-cwd
-savedir
-stdbool
-stpcpy
-strtol
-strtoul
-timespec
-unlocked-io
-utime
-xalloc
-xgetcwd
-xstrtoumax
-'
+get_modules gnulib.modules
 
 
+gnulib_modules=`echo "$gnulib_modules" | sort -u`
 previous_gnulib_modules=
 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
   previous_gnulib_modules=$gnulib_modules
 previous_gnulib_modules=
 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
   previous_gnulib_modules=$gnulib_modules
@@ -183,14 +271,17 @@ for gnulib_file in $gnulib_files; do
 
   case $gnulib_file in
   m4/codeset.m4) continue;;
 
   case $gnulib_file in
   m4/codeset.m4) continue;;
-  m4/glibc21.m4) continue;;
   m4/intdiv0.m4) continue;;
   m4/intdiv0.m4) continue;;
-  m4/inttypes_h.m4) continue;;
-  m4/inttypes.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;;
   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 &&
   esac
 
   rm -f $dest &&
@@ -198,22 +289,34 @@ for gnulib_file in $gnulib_files; do
   cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
 done
 
   cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
 done
 
+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
+ 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!"
+ cat lib/Makefile.tmpl
+
+ for gnulib_module in $gnulib_modules; do
+    echo "# $gnulib_module"
+    $GNULIB_SRCDIR/gnulib-tool --extract-automake-snippet $gnulib_module
+ done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib/Makefile.am
 
 # Get translations.
 
 # Get translations.
-
 if test "$DOWNLOAD_PO" = "yes"; then
 if test "$DOWNLOAD_PO" = "yes"; then
-  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 -C off $TP_URL &&
-    ls *.po | sed 's/\.po$//' >LINGUAS
-  ) || exit
+  update_po
 fi
 
 # Reconfigure, getting other files.
 
 echo "$0: autoreconf --verbose --install --force ..."
 fi
 
 # Reconfigure, getting other files.
 
 echo "$0: autoreconf --verbose --install --force ..."
-autoreconf --verbose --install --force
+autoreconf --verbose --install --force || exit 1
 
 
 echo "$0: done.  Now you can run './configure'."
 
 
 echo "$0: done.  Now you can run './configure'."
This page took 0.029746 seconds and 4 git commands to generate.