X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=bootstrap;h=c250cf05bdfb1854e6191d56b8aa4852d1b3296a;hb=023c766600a4c2565455e5cfdd5820eb24fa7776;hp=d113f5a0ff19aa064c2c44f84ebe1a1f99fd5abf;hpb=64aea5de535c1e9d66d993a6648d86e18e259443;p=chaz%2Ftar diff --git a/bootstrap b/bootstrap index d113f5a..c250cf0 100755 --- a/bootstrap +++ b/bootstrap @@ -1,8 +1,8 @@ #! /bin/sh -# Bootstrap 'tar' from CVS. +# Bootstrap this package from CVS. -# Copyright (C) 2003, 2004, 2005 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 @@ -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 @@ -52,37 +54,18 @@ usage() { --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 +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 + ./bootstrap --cvs-auth=pserver EOF } -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 -} - # Read configuration file if [ -r .bootstrap ]; then echo "$0: Reading configuration file .bootstrap" @@ -118,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..." + + case $po_file in + '') (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`);; + esac && + + $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 && 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 == "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" + 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}: @@ -150,10 +204,8 @@ checkout() { 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} + case "${CVS_AUTH-pserver}" in + pserver) build_cvs_prefix pserver ${CVS_USER:-anonymous} ;; gserver|server) build_cvs_prefix $CVS_AUTH ${CVS_USER--} @@ -163,10 +215,7 @@ checkout() { *) 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 + cvs -q -d ${CVS_PREFIX}cvs.sv.gnu.org:/cvsroot/$1 co $1 || exit trap - 0 fi @@ -203,11 +252,11 @@ copy_files() { esac dst=`echo $file | sed 's^.*/^^'` if [ $# -eq 3 ]; then - case $dst in + case $dst in ${3}*) ;; *) dst=${3}$dst;; esac - fi + fi echo "$0: Copying file $1/$file to $2/$dst" cp -p $1/$file $2/$dst done @@ -217,7 +266,7 @@ 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],[" + echo "AC_DEFUN([${package}_PAXUTILS],[" cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z echo "])") > ./m4/paxutils.m4 @@ -241,7 +290,8 @@ case ${GNULIB_SRCDIR--} in GNULIB_SRCDIR=gnulib esac -<$GNULIB_SRCDIR/gnulib-tool || exit +gnulib_tool=$GNULIB_SRCDIR/gnulib-tool +<$gnulib_tool || exit get_modules gnulib.modules @@ -252,14 +302,14 @@ while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do 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 ` @@ -268,45 +318,39 @@ 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 "#" - echo "AC_DEFUN([tar_GNULIB],[" + echo "AC_DEFUN([${package}_GNULIB],[" for gnulib_module in $gnulib_modules; do echo "# $gnulib_module" - $GNULIB_SRCDIR/gnulib-tool --extract-autoconf-snippet $gnulib_module + $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!" +(echo "# This file is generated automatically. 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 + $gnulib_tool --extract-automake-snippet $gnulib_module + done | sed "s/lib_SOURCES/lib${package}_a_SOURCES/g" ) > lib/Makefile.am # Get translations. if test "$DOWNLOAD_PO" = "yes"; then @@ -315,8 +359,68 @@ 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/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 + + +# Create gettext configuration. +echo "$0: Creating po/Makevars from po/Makevars.template ..." +sed ' + /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + --flag=_:1:pass-c-format \\\ + --flag=N_:1:pass-c-format \\\ + --flag=error:3:c-format --flag=error_at_line:5:c-format \\\ + --flag=asnprintf:3:c-format --flag=vasnprintf:3:c-format \\\ + --flag=argp_error:2:c-format \\\ + --flag=__argp_error:2:c-format \\\ + --flag=argp_failure:4:c-format \\\ + --flag=__argp_failure:4:c-format \\\ + --flag=argp_fmtstream_printf:2:c-format \\\ + --flag=__argp_fmtstream_printf:2:c-format + } +' po/Makevars.template >po/Makevars echo "$0: done. Now you can run './configure'."