From 94de7c4c776ec523af4c2eb6a91e6c5361675be3 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 7 Aug 2006 22:57:25 +0000 Subject: [PATCH] * bootstrap: Redo po file retrieval to match Bison's method, since the translation project changed its index format. Don't use --assume-autoconf; it's now replaced by looking in configure.ac. (m4/codeset.m4, m4/intdiv.m4, m4/inttypes-pri.m4, m4/isc-posix.m4): (m4/lcmessage.m4, m4/onceonly_2_57.m4, 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): Don't rename to ..._gl.m4, as this is no longer needed. (m4/geteext.m4): Patch to remove the need for intl/*. Use autopoint manually, then remove the intl files, then undo changes to gnulib files that autoreconf made, and then run aclocal/autoconf/autoheader/automake. This makes our bootstrap procedure closer to Bison's. (po/Makevars): Generate automatically. * configure.ac (AC_PREREQ): Update from 2.59 to 2.60. (gl_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Remove. * gnulib.modules: Add inttypes, stdint. * lib/.cvsignore: Add close-stream.c, close-stream.h, stdint.h, stdint_.h. * po/Makefile: Remove; now automatically generated. --- ChangeLog | 46 +++++++++++- bootstrap | 194 +++++++++++++++++++++++++++++++++++-------------- configure.ac | 4 +- gnulib.modules | 2 + lib/.cvsignore | 4 + po/Makevars | 41 ----------- 6 files changed, 193 insertions(+), 98 deletions(-) delete mode 100644 po/Makevars diff --git a/ChangeLog b/ChangeLog index e237fcd..7d24603 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,47 @@ +2006-08-07 Paul Eggert + + * bootstrap: Redo po file retrieval to match Bison's method, + since the translation project changed its index format. + Don't use --assume-autoconf; it's now replaced + by looking in configure.ac. + (m4/codeset.m4, m4/intdiv.m4, m4/inttypes-pri.m4, m4/isc-posix.m4): + (m4/lcmessage.m4, m4/onceonly_2_57.m4, 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): + Don't rename to ..._gl.m4, as this is no longer needed. + (m4/geteext.m4): Patch to remove the need for intl/*. + Use autopoint manually, then remove the intl files, + then undo changes to gnulib files that autoreconf made, + and then run aclocal/autoconf/autoheader/automake. + This makes our bootstrap procedure closer to Bison's. + (po/Makevars): Generate automatically. + * configure.ac (AC_PREREQ): Update from 2.59 to 2.60. + (gl_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Remove. + * gnulib.modules: Add inttypes, stdint. + * lib/.cvsignore: Add close-stream.c, close-stream.h, + stdint.h, stdint_.h. + * po/Makefile: Remove; now automatically generated. + + * src/incremen.c (read_incr_db_01): Check input strings more + carefully. Do not pass arbitrary char values to isspace, as + this has undefined behavior. Likewise for assigning arbitrary + uintmax_t values to other types. + (read_negative_num, read_unsigned_num, read_timespec): + New functions, to check input values a bit more carefuly. + (read_num): Use read_unsigned_num. New arg MAX_VAL; + all callers changed. + (read_incr_db_2): Use these new functions. + Use a consistent diagnostic for unexpected EOF. + (read_directory_file): Do not assign arbitrary uintmax_t value + to int. + (read_timespec, write_directory_file_entry, write_directory_file): + Handle negative time_t values correctly. We don't bother to do + this with pre-2 formats, since presumably the time stamps were + output incorrectly. + + * src/tar.c (doc): Don't use \v in an argument to gettext; + gettext 0.15 rejects this. + 2006-07-24 Sergey Poznyakoff * src/tar.c (decode_options): Do not require -L with -M -Hpax. @@ -8,7 +52,7 @@ reported by TAMUKI Shoichi , which caused equivalent `tar cf ...' and `tar rf ...' commands to produce different archives. - + * tests/append02.at: New test case * tests/Makefile.am, tests/testsuite.at: Add append02.at 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'." diff --git a/configure.ac b/configure.ac index a88279e..a7ae04d 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_INIT([GNU tar], [1.15.92], [bug-tar@gnu.org]) AC_CONFIG_SRCDIR([src/tar.c]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h:config.hin]) -AC_PREREQ([2.59]) +AC_PREREQ([2.60]) AM_INIT_AUTOMAKE([1.9 gnits tar-ustar dist-bzip2 dist-shar std-options]) gl_USE_SYSTEM_EXTENSIONS @@ -80,8 +80,6 @@ AC_CHECK_TYPE(dev_t, unsigned) AC_CHECK_TYPE(ino_t, unsigned) gt_TYPE_SSIZE_T -gl_AC_TYPE_INTMAX_T -jm_AC_TYPE_UINTMAX_T # gnulib modules tar_GNULIB diff --git a/gnulib.modules b/gnulib.modules index d211ade..c32440e 100644 --- a/gnulib.modules +++ b/gnulib.modules @@ -22,6 +22,7 @@ gettext gettime hash human +inttypes lchown localcharset memset @@ -38,6 +39,7 @@ savedir setenv stat-time stdbool +stdint stpcpy strdup strtol diff --git a/lib/.cvsignore b/lib/.cvsignore index f2ade34..6a5a711 100644 --- a/lib/.cvsignore +++ b/lib/.cvsignore @@ -33,6 +33,8 @@ charset.alias chdir-long.c chdir-long.h chown.c +close-stream.c +close-stream.h closeout.c closeout.h config.charset @@ -158,6 +160,8 @@ stat-macros.h stat-time.h stdbool.h stdbool_.h +stdint.h +stdint_.h stpcpy.c stpcpy.h strcase.h diff --git a/po/Makevars b/po/Makevars deleted file mode 100644 index f428bad..0000000 --- a/po/Makevars +++ /dev/null @@ -1,41 +0,0 @@ -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Free Software Foundation, Inc. - -# This is the email address or URL to which the translators shall report -# bugs in the untranslated strings: -# - Strings which are not entire sentences, see the maintainer guidelines -# in the GNU gettext documentation, section 'Preparing Strings'. -# - Strings which use unclear terms or require additional context to be -# understood. -# - Strings which make invalid assumptions about notation of date, time or -# money. -# - Pluralisation problems. -# - Incorrect English spelling. -# - Incorrect formatting. -# It can be your email address, or a mailing list address where translators -# can write to without being subscribed, or the URL of a web page through -# which the translators can contact you. -MSGID_BUGS_ADDRESS = bug-tar@gnu.org - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = -- 2.44.0