]> Dogcows Code - chaz/tar/commitdiff
* bootstrap: Use rsync to get translations.
authorSergey Poznyakoff <gray@gnu.org.ua>
Thu, 6 Mar 2008 08:17:33 +0000 (08:17 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Thu, 6 Mar 2008 08:17:33 +0000 (08:17 +0000)
* doc/tar.texi: Minor change.
* lib/.cvsignore: Update
* po/.cvsignore: Update
* src/system.c: Remove include setenv.h.
* tests/atlocal.in (STAR_DATA_URL): Update.
* tests/star/README: Update URL.

ChangeLog
bootstrap
doc/tar.texi
lib/.cvsignore
src/system.c
tests/atlocal.in
tests/star/README

index c2eec4d330ac71e1dd7f6d6db5018be47ceaaaf6..83a613f8aa62fbbf040bb6bcf403a69ead22f24f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-03-06  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       * bootstrap: Use rsync to get translations.
+       * doc/tar.texi: Minor change.
+       * lib/.cvsignore: Update
+       * po/.cvsignore: Update
+       * src/system.c: Remove include setenv.h.
+       * tests/atlocal.in (STAR_DATA_URL): Update.
+       * tests/star/README: Update URL. 
+
 2008-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * doc/tar.texi: Fix a typo. Reported by Denis Excoffier.
index a318f68f2c7bd73219faea1a6980f46e40d4a641..a967cc74f0e6123a01091aed5423d1108264931a 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -49,7 +49,7 @@ Options:
  --force                  Attempt to bootstrap even if the sources seem
                           not to have been checked out.
  --skip-po                Do not download po files.
- --update-po[=LANG]       Update po file(s) and exit.
+ --update-po              Update po files and exit.
  --cvs-user=USERNAME      Set the CVS username to be used when accessing
                           the paxutils repository.
 
@@ -116,11 +116,13 @@ gnulib_modules=
 # Any gnulib files needed that are not in modules.
 gnulib_files=
 
-# Translation Project URL, for the registry of all projects
-# and for the translation-team master directory.
-tp_url() {
-       echo "http://translationproject.org/domain/$1.html"
-}
+# The command to download all .po files for a specified domain into
+# a specified directory.  Fill in the first %s is the domain name, and
+# the second with the destination directory.  Use rsync's -L and -r
+# options because the latest/%s directory and the .po files within are
+# all symlinks.
+po_download_command_format=\
+"rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
 
 extract_package_name='
   /^AC_INIT(/{
@@ -223,78 +225,60 @@ echo "$0: Bootstrapping CVS $package..."
 
 # Get translations.
 
-get_translations() {
+download_po_files() {
   subdir=$1
   domain=$2
-  po_file=$3
-
-  case $WGET_COMMAND in
-  '')
-    echo "$0: wget not available; skipping translations";;
-  ?*)
-    url=`tp_url $domain`
-    baseurl=`expr "$url" : '\(.*\)/.*'`
-    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" "$url" &&
-
-    sed -n 's|.*href="\(.*\)/\([^/][^/]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\2:\3:\1|p' <"$subdir/$domain.html" |
-    sort -t: -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, $3 }
-      { lang = $1; ver = $2 }
-      END { if (lang) print lang, ver, $3 }
-    ' | awk -v domain="$domain" -v baseurl="$baseurl" -v subdir="$subdir" \
-            -v po_file="$po_file" '
-      {
-       lang = $1
-        if (po_file && po_file != (lang ".po")) next
-       ver = $2
-       printf "{ $WGET_COMMAND -O %s/%s.po %s/%s/%s/%s-%s.%s.po &&\n", subdir, lang, baseurl, $3, lang, domain, ver, lang
-       printf "  msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang
-       printf "    echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang
-       printf "    rm -f %s/%s.po; }; } &&\n", subdir, lang
-      }
-      END { print ":" }
-    ' | WGET_COMMAND="$WGET_COMMAND" sh 
-    ;;
-  esac &&
-  ls "$subdir"/*.po 2>/dev/null |
-    sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
-  rm -f "$subdir/$domain.html"
+  echo "$0: getting translations into $subdir for $domain..."
+  cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
+  eval "$cmd"
 }
 
-case `wget --help` in
-*'--no-cache'*)
-    WGET_COMMAND='wget -nv --no-cache';;
-*'--cache=on/off'*)
-    WGET_COMMAND='wget -nv --cache=off';;
-*'--non-verbose'*)
-    WGET_COMMAND='wget -nv';;
-*)
-    WGET_COMMAND='';;
-esac
+# Download .po files to $po_dir/.reference and copy only the new
+# or modified ones into $po_dir.  Also update $po_dir/LINGUAS.
+update_po_files() {
+  # Directory containing primary .po files.
+  # Overwrite them only when we're sure a .po file is new.
+  po_dir=$1
+  domain=$2
+
+  # Download *.po files into this dir.
+  # Usually contains *.s1 checksum files.
+  ref_po_dir="$po_dir/.reference"
+
+  test -d $ref_po_dir || mkdir $ref_po_dir || return
+  download_po_files $ref_po_dir $domain \
+    && ls "$ref_po_dir"/*.po 2>/dev/null |
+      sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
+
+  langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
+  test "$langs" = '*' && langs=x
+  for po in `cd $ref_po_dir && echo *.po|sed 's/\.po//g'`; do
+    case $po in x) continue;; esac
+    new_po="$ref_po_dir/$po.po"
+    cksum_file="$ref_po_dir/$po.s1"
+    if ! test -f "$cksum_file" ||
+       ! test -f "$po_dir/$po.po" ||
+       ! sha1sum -c --status "$cksum_file" < "$new_po" > /dev/null; then
+      echo "updated $po_dir/$po.po..."
+      cp "$new_po" "$po_dir/$po.po" && sha1sum < "$new_po" > "$cksum_file"
+    fi
+  done
+}
 
 case $DOWNLOAD_PO in
 'skip')
   ;;
 '')
-  get_translations po $package || exit
+  if test -d po; then
+    update_po_files po $package || exit
+  fi
   ;;
 'only')
-  get_translations po $package
-  exit
-  ;;
-*.po)
-  get_translations po $package "$DOWNLOAD_PO"
+  if test -d po; then
+    update_po_files po $package || exit
+  fi
   exit
   ;;
-*)
-  get_translations po $package "${DOWNLOAD_PO}.po"
-  exit
 esac
 
 # Get paxutils files.
index 4e382151fbb3a5c3a48d150a6768cb9c59748fad..29fe5aab785dd7f4e152ac13b2061f24e04b91c0 100644 (file)
@@ -1765,6 +1765,7 @@ use @w{@kbd{tar --list --verbose}} to list them correctly.
 
 @node going further
 @section Going Further Ahead in this Manual
+@UNREVISED
 
 @FIXME{need to write up a node here about the things that are going to
 be in the rest of the manual.}
index 6f13217c98104e2bfe12d908e8f5c81590ce4fd2..0290a6e677fad753289b807eededeff6666e7ebc 100644 (file)
@@ -87,6 +87,7 @@ getopt.h
 getopt.in.h
 getopt1.c
 getopt_int.h
+getpagesize.c
 getpagesize.h
 gettext.h
 gettime.c
@@ -196,6 +197,7 @@ streq.h
 strerror.c
 string.h
 string.in.h
+strings.in.h
 stripslash.c
 strncasecmp.c
 strndup.c
index fb5a8fa5a147e2040cfd99535ab5d5d6bf5eec30..e57e6dafb6398e6b65d3a5cfb5e4b11fa5445112 100644 (file)
@@ -17,7 +17,6 @@
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 #include <system.h>
-#include <setenv.h>
 
 #include "common.h"
 #include <rmt.h>
index f0950807acbed72dab761918ad17451f2e0514da..380cac01aed4882869207bd043635e6f3917cecd 100644 (file)
@@ -13,7 +13,7 @@ if test -z "$TEST_DATA_DIR"; then
   TEST_DATA_DIR=$abs_builddir
 fi
 
-STAR_DATA_URL=http://download.berlios.de/pub/star/testscripts
+STAR_DATA_URL=ftp://ftp.berlios.de/pub/star/testscripts
 if test -z "$STAR_TESTSCRIPTS"; then
   STAR_TESTSCRIPTS=$TEST_DATA_DIR
 fi  
index e4be22f8ea0a42e8a4ac917c55827a96024ae3e8..e247ff4fba4cde651de2defd04b96180b7294159 100644 (file)
@@ -1,6 +1,6 @@
 This directory contains scripts for testing GNU tar using
 star "test archives". The archives themselves can be obtained
-from http://download.berlios.de/pub/star/testscripts.
+from ftp://ftp.berlios.de/pub/star/testscripts.
 
 These tests are disabled by default. There are two ways to run
 them.  The simplest is by `make check-full' command.  It requires wget
This page took 0.039001 seconds and 4 git commands to generate.