| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 | #! /bin/sh# Bootstrap 'tar' from CVS.# 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# the Free Software Foundation; either version 2, or (at your option)# any later version.# This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.# 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., 51 Franklin Street, Fifth Floor, Boston, MA# 02110-1301, USA.# Written by Paul Eggert and Sergey Poznyakoff.# URL of our text domain page in Translation ProjectTP_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=Cexport LC_ALLusage() { cat <<EOF usage: $0 [--gnulib-srcdir=DIR][--paxutils-srcdir=DIR][--cvs-auth=AUTH-METHOD][--cvs-user=USERNAME][--no-po] 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                              do not want to waste your bandwidth dowloading                              them again. --cvs-auth=METHOD            Set the CVS access method used for downloading                              gnulib files. METHOD is one of the keywords                              accepted by cvs -d option (see info cvs                              repository). --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.Running without arguments will suffice in most cases. It is equivalentto    ./bootstrap --cvs-auth=ext --cvs-user=anoncvsEOF}update_po() {  if [ $# = 1 ]; then    case $1 in    *.po)  POFILE=$1;;    *)     POFILE=${1}.po;;    esac    echo "$0: getting translation for $1..."    wget -r -C 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 -C off $TP_URL &&      rm -f index.html index.html.[0-9]*      ls *.po | sed 's/\.po$//' >LINGUAS    ) || exit  fi}# Parse options.DOWNLOAD_PO=yesfor optiondo  case $option in  --help)    usage    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;;  --update-po=*)    DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;  --update-po)    DOWNLOAD_PO=only;;  *)    echo >&2 "$0: $option: unknown option"    exit 1;;  esacdonecase $DOWNLOAD_PO inonly)	update_po	exit 0	;;no|yes) ;;*)	update_po $DOWNLOAD_PO	exit 0esacecho "$0: Bootstrapping CVS tar..."build_cvs_prefix() {  CVS_PREFIX=:${1}:  if [ "${2}" != - ]; then    CVS_PREFIX=${CVS_PREFIX}${2}@  fi  if [ "$1" = "ext" ]; then    if [ -z "${CVS_RSH}" ]; then       CVS_RSH=ssh       export CVS_RSH    fi  fi}# checkout packagecheckout() {  if [ ! -d $1 ]; then    echo "$0: getting $1 files..."    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}             ;;    gserver|server)	     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      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    trap - 0  fi}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 filescase ${PAXUTILS_SRCDIR--} in-) checkout paxutils   PAXUTILS_SRCDIR=paxutilsesacif [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then  get_modules $PAXUTILS_SRCDIR/gnulib.modulesfi# copy_files srcdir dstdircopy_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 m4echo "$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.m4if [ -d rmt ]; then   :else   mkdir rmtfifor dir in doc rmt lib testsdo	copy_files ${PAXUTILS_SRCDIR}/$dir $dirdonecopy_files ${PAXUTILS_SRCDIR}/paxlib lib pax# Get gnulib files.case ${GNULIB_SRCDIR--} in-) checkout gnulib   GNULIB_SRCDIR=gnulibesac<$GNULIB_SRCDIR/gnulib-tool || exitget_modules gnulib.modulesgnulib_modules=`echo "$gnulib_modules" | sort -u`previous_gnulib_modules=while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do  previous_gnulib_modules=$gnulib_modules  gnulib_modules=`    (echo "$gnulib_modules"     for gnulib_module in $gnulib_modules; do       $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module     done) | sort -u  `donegnulib_files=`  (for gnulib_module in $gnulib_modules; do     $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module   done) | sort -u`gnulib_dirs=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`mkdir -p $gnulib_dirs || exitfor 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 || exitdoneecho "$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.m4echo "$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.if test "$DOWNLOAD_PO" = "yes"; then  update_pofi# Reconfigure, getting other files.echo "$0: autoreconf --verbose --install --force ..."autoreconf --verbose --install --force || exit 1echo "$0: done.  Now you can run './configure'."
 |