123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- #! /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 Project
- 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: $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.
- 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
- ./bootstrap --cvs-auth=ext --cvs-user=anoncvs
- 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
- for option
- do
- 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;;
- 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() {
- 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 package
- checkout() {
- 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 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
- 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
- gnulib_modules=`
- (echo "$gnulib_modules"
- for gnulib_module in $gnulib_modules; do
- $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
- done) | sort -u
- `
- done
- gnulib_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 || exit
- 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
- 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.
- if test "$DOWNLOAD_PO" = "yes"; then
- update_po
- fi
- # Reconfigure, getting other files.
- echo "$0: autoreconf --verbose --install --force ..."
- autoreconf --verbose --install --force || exit 1
- echo "$0: done. Now you can run './configure'."
|