X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftar;a=blobdiff_plain;f=bootstrap;h=8cdc00cc8a14304243c7c4eca7719e6a170248fb;hp=5c42b3426d6c4ef728da467aa760bfda9a701740;hb=94de7c4c776ec523af4c2eb6a91e6c5361675be3;hpb=05805868f26533141b8b02d5a6449965652ef187 diff --git a/bootstrap b/bootstrap index 5c42b34..8cdc00c 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh -# Bootstrap 'tar' from CVS. +# Bootstrap this package from CVS. # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -21,11 +21,13 @@ # 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 @@ -64,31 +66,6 @@ to EOF } -update_po() { - if [ $# = 1 ]; then - case $1 in - *.po) POFILE=$1;; - *) POFILE=${1}.po;; - esac - echo "$0: getting translation for $1..." - (cd po; - wget -r --cache=off -O $POFILE $TP_URL/$POFILE || exit - LANG=`expr $POFILE : '\(.*\)\.po'` - if ! grep -q $LANG LINGUAS; then - mv LINGUAS LINGUAS.$$ - (echo $LANG; cat LINGUAS.$$) | sort > LINGUAS - fi) - 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" @@ -124,16 +101,87 @@ do 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 - exit 0 + exit ;; no|yes) ;; *) update_po $DOWNLOAD_PO - exit 0 + exit esac -echo "$0: Bootstrapping CVS tar..." + +echo "$0: Bootstrapping CVS $package..." build_cvs_prefix() { CVS_PREFIX=:${1}: @@ -242,8 +290,8 @@ case ${GNULIB_SRCDIR--} in GNULIB_SRCDIR=gnulib esac -<$GNULIB_SRCDIR/gnulib-tool || exit -gnulib_tool="$GNULIB_SRCDIR/gnulib-tool --assume-autoconf=latest-stable" +gnulib_tool=$GNULIB_SRCDIR/gnulib-tool +<$gnulib_tool || exit get_modules gnulib.modules @@ -270,27 +318,21 @@ 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 +# 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 "#" @@ -317,8 +359,54 @@ fi # 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'."