3 # Bootstrap 'tar' from CVS.
5 # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2, or (at your option)
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 # Written by Paul Eggert and Sergey Poznyakoff.
24 # URL of our text domain page in Translation Project
25 TP_URL
="http://www.iro.umontreal.ca/translation/maint/tar/"
27 # Ensure file names are sorted consistently across platforms;
28 # e.g., m4/ulonglong_gl.m4 should follow m4/ulonglong.m4.
34 usage: $0 [--gnulib-srcdir=DIR][--paxutils-srcdir=DIR][--cvs-auth=AUTH-METHOD][--cvs-user=USERNAME][--no-po]
36 --paxutils-srcdir=DIRNAME Specify the local directory where paxutils
37 sources reside. Use this if you already
38 have paxutils sources on your machine, and
39 do not want to waste your bandwidth dowloading
41 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
42 sources reside. Use this if you already
43 have gnulib sources on your machine, and
44 do not want to waste your bandwidth dowloading
46 --cvs-auth=METHOD Set the CVS access method used for downloading
47 gnulib files. METHOD is one of the keywords
48 accepted by cvs -d option (see info cvs
50 --cvs-user=USERNAME Set the CVS username to be used when accessing
51 the gnulib repository.
52 --no-po Do not download po files.
53 --update-po[=LANG] Update po file(s) and exit.
55 If the file \`.bootstrap' exists in the current working directory, its
56 contents is read, comments and empty lines removed, shell variables expanded
57 and the result is prepended to the command line options.
59 Running without arguments will suffice in most cases. It is equivalent
62 ./bootstrap --cvs-auth=pserver
73 echo "$0: getting translation for $1..."
75 wget
-r --cache=off
-O $POFILE $TP_URL/$POFILE || exit
76 LANG
=`expr $POFILE : '\(.*\)\.po'`
77 if ! grep -q $LANG LINGUAS
; then
79 (echo $LANG; cat LINGUAS.$$
) | sort > LINGUAS
82 echo "$0: getting translations into po..."
84 rm -f dummy
`ls | sed -n '/\.gmo$/p; /\.po/p'` &&
85 wget
-nv -nd -r -l 1 -A .po
--cache off
$TP_URL &&
86 rm -f index.html index.html.
[0-9]*
87 ls *.po
| sed 's/\.po$//' >LINGUAS
92 # Read configuration file
93 if [ -r .bootstrap
]; then
94 echo "$0: Reading configuration file .bootstrap"
95 eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
108 GNULIB_SRCDIR
=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
110 PAXUTILS_SRCDIR
=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
112 CVS_AUTH
=`expr "$option" : '--cvs-auth=\(.*\)'`;;
114 CVS_USER
=`expr "$option" : '--cvs-user=\(.*\)'`;;
118 DOWNLOAD_PO
=`expr "$option" : '--update-po=\(.*\)'`;;
122 echo >&2 "$0: $option: unknown option"
132 *) update_po
$DOWNLOAD_PO
136 echo "$0: Bootstrapping CVS tar..."
140 if [ "${2}" != - ]; then
141 CVS_PREFIX
=${CVS_PREFIX}${2}@
143 if [ "$1" = "ext" ]; then
144 if [ -z "${CVS_RSH}" ]; then
154 echo "$0: getting $1 files..."
157 trap 'rm -fr $1; exit 1' 0
159 case "${CVS_AUTH-pserver}" in
160 pserver
) build_cvs_prefix pserver
${CVS_USER:-anonymous}
163 build_cvs_prefix
$CVS_AUTH ${CVS_USER--}
165 ext
) build_cvs_prefix
$CVS_AUTH ${CVS_USER--}
167 *) echo "$0: Unknown CVS access method" >&2
170 cvs
-q -d ${CVS_PREFIX}cvs.sv.gnu.org
:/cvsroot
/$1 co
$1 || exit
181 new_gnulib_modules
=`sed '/^[ ]*#/d; /^[ ]*$/d' $*`
182 case $gnulib_modules,$new_gnulib_modules in
183 ?
*,?
*) new_gnulib_modules
=$newline$new_gnulib_modules;;
185 gnulib_modules
=$gnulib_modules$new_gnulib_modules
189 case ${PAXUTILS_SRCDIR--} in
191 PAXUTILS_SRCDIR
=paxutils
194 if [ -r $PAXUTILS_SRCDIR/gnulib.modules
]; then
195 get_modules
$PAXUTILS_SRCDIR/gnulib.modules
198 # copy_files srcdir dstdir
200 for file in `cat $1/DISTFILES`
205 dst
=`echo $file | sed 's^.*/^^'`
206 if [ $# -eq 3 ]; then
212 echo "$0: Copying file $1/$file to $2/$dst"
213 cp -p $1/$file $2/$dst
217 copy_files
${PAXUTILS_SRCDIR}/m4 m4
218 echo "$0: Creating m4/paxutils.m4"
219 (echo "# This file is generated automatically. Please, do not edit."
221 echo "AC_DEFUN([tar_PAXUTILS],["
222 cat ${PAXUTILS_SRCDIR}/m
4/DISTFILES
| sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a
-z A
-Z
223 echo "])") > .
/m
4/paxutils.
m4
231 for dir
in doc rmt lib tests
233 copy_files
${PAXUTILS_SRCDIR}/$dir $dir
236 copy_files
${PAXUTILS_SRCDIR}/paxlib lib pax
240 case ${GNULIB_SRCDIR--} in
245 <$GNULIB_SRCDIR/gnulib
-tool || exit
247 get_modules gnulib.modules
249 gnulib_modules
=`echo "$gnulib_modules" | sort -u`
250 previous_gnulib_modules
=
251 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
252 previous_gnulib_modules
=$gnulib_modules
254 (echo "$gnulib_modules"
255 for gnulib_module in $gnulib_modules; do
256 $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
262 (for gnulib_module in $gnulib_modules; do
263 $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
267 gnulib_dirs
=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
268 mkdir -p $gnulib_dirs || exit
270 for gnulib_file
in $gnulib_files; do
274 m
4/codeset.
m4) continue;;
275 m
4/intdiv0.
m4) continue;;
276 m
4/inttypes
-pri.
m4) continue;;
277 m
4/isc
-posix.
m4) continue;;
278 m
4/lcmessage.
m4) continue;;
279 m
4/onceonly_2_57.
m4) dest
=m
4/onceonly.
m4;;
280 # These will be overwritten by autopoint, which still uses
281 # old jm_.* macro names, so we have to keep both copies.
282 m
4/gettext.
m4 | m
4/glibc21.
m4 | m
4/inttypes_h.
m4 | m
4/lib
-ld.
m4 | \
283 m
4/lib
-prefix.
m4 | m
4/po.
m4 | m
4/stdint_h.
m4 | m
4/uintmax_t.
m4 | \
285 dest
=`expr $gnulib_file : '\(.*\).m4'`_gl.
m4;;
289 echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
290 cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
293 echo "$0: Creating m4/gnulib.m4"
294 (echo "# This file is generated automatically. Please, do not edit."
296 echo "AC_DEFUN([tar_GNULIB],["
297 for gnulib_module
in $gnulib_modules; do
298 echo "# $gnulib_module"
299 $GNULIB_SRCDIR/gnulib
-tool --extract-autoconf-snippet $gnulib_module
300 done | sed '/AM_GNU_GETTEXT/d'
301 echo "])") > .
/m
4/gnulib.
m4
303 echo "$0: Creating lib/Makefile.am"
304 (echo "# This file is generated automatically. Do not edit!"
305 cat lib
/Makefile.tmpl
307 for gnulib_module
in $gnulib_modules; do
308 echo "# $gnulib_module"
309 $GNULIB_SRCDIR/gnulib
-tool --extract-automake-snippet $gnulib_module
310 done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib
/Makefile.am
313 if test "$DOWNLOAD_PO" = "yes"; then
317 # Reconfigure, getting other files.
319 echo "$0: autoreconf --verbose --install --force ..."
320 autoreconf
--verbose --install --force || exit 1
323 echo "$0: done. Now you can run './configure'."