X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=bootstrap;h=8cdc00cc8a14304243c7c4eca7719e6a170248fb;hb=94de7c4c776ec523af4c2eb6a91e6c5361675be3;hp=51f87528891e5ae6de64469b1306f477443c4d7a;hpb=c22a8b44d78a0bc511868a17dd401dbdb7b2bac5;p=chaz%2Ftar diff --git a/bootstrap b/bootstrap index 51f8752..8cdc00c 100755 --- a/bootstrap +++ b/bootstrap @@ -1,8 +1,8 @@ #! /bin/sh -# Bootstrap 'tar' from CVS. +# Bootstrap this package from CVS. -# Copyright (C) 2003 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 @@ -16,99 +16,300 @@ # 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. +package=tar + +# 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 + +usage() { + cat <&2 "$0: $option: unknown option" exit 1;; esac done +# Get translations. -echo "$0: Bootstrapping CVS tar..." +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'`) && -# Get gnulib files. + $WGET_COMMAND -O "$subdir/$domain.html" "$TP_URL$domain" && -echo "$0: getting gnulib files..." + 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 -case ${GNULIB_SRCDIR--} in --) - if [ ! -d gnulib ]; then - trap exit 1 2 13 15 - trap 'rm -fr gnulib; exit 1' 0 - cvs -q -d savannah.gnu.org:/cvsroot/gnulib co gnulib || exit - trap 0 + # 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 - GNULIB_SRCDIR=gnulib +} + +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 + exit + ;; +no|yes) ;; +*) update_po $DOWNLOAD_PO + exit esac -<$GNULIB_SRCDIR/gnulib-tool || exit - -gnulib_modules=' -alloca -argmatch -backupfile -dirname -error -exclude -fileblocks -fnmatch -ftruncate -full-write -getdate -getline -getopt -gettext -hash -human -lchown -memset -modechange -obstack -safe-read -quote -quotearg -rmdir -save-cwd -savedir -stdbool -strtol -strtoul -unlocked-io -utime -xalloc -xgetcwd -xstrtoumax + +echo "$0: Bootstrapping CVS $package..." + +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-pserver}" in + pserver) build_cvs_prefix pserver ${CVS_USER:-anonymous} + ;; + 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 + cvs -q -d ${CVS_PREFIX}cvs.sv.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_tool=$GNULIB_SRCDIR/gnulib-tool +<$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 + $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 + $gnulib_tool --extract-filelist $gnulib_module done) | sort -u ` @@ -117,40 +318,95 @@ mkdir -p $gnulib_dirs || exit for gnulib_file in $gnulib_files; do dest=$gnulib_file - - case $gnulib_file in - m4/codeset.m4) continue;; - m4/glibc21.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;; - esac - 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 -# Get translations. +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_tool --extract-autoconf-snippet $gnulib_module + done | sed '/AM_GNU_GETTEXT/d' + echo "])") > ./m4/gnulib.m4 -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 \ - http://www.iro.umontreal.ca/contrib/po/maint/tar/ && - ls *.po | sed 's/\.po$//' >LINGUAS -) || exit +echo "$0: Creating lib/Makefile.am" +(echo "# This file is generated automatically. Do not edit!" + cat lib/Makefile.tmpl + for gnulib_module in $gnulib_modules; do + echo "# $gnulib_module" + $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 +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'."