3 # Bootstrap 'tar' from CVS.
5 # Copyright (C) 2003, 2004, 2005 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=ext --cvs-user=anoncvs
73 echo "$0: getting translation for $1..."
74 wget
-r --cache=off
$TP_URL/$POFILE
76 echo "$0: getting translations into po..."
78 rm -f dummy
`ls | sed -n '/\.gmo$/p; /\.po/p'` &&
79 wget
-nv -nd -r -l 1 -A .po
--cache off
$TP_URL &&
80 rm -f index.html index.html.
[0-9]*
81 ls *.po
| sed 's/\.po$//' >LINGUAS
86 # Read configuration file
87 if [ -r .bootstrap
]; then
88 echo "$0: Reading configuration file .bootstrap"
89 eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
102 GNULIB_SRCDIR
=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
104 PAXUTILS_SRCDIR
=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
106 CVS_AUTH
=`expr "$option" : '--cvs-auth=\(.*\)'`;;
108 CVS_USER
=`expr "$option" : '--cvs-user=\(.*\)'`;;
112 DOWNLOAD_PO
=`expr "$option" : '--update-po=\(.*\)'`;;
116 echo >&2 "$0: $option: unknown option"
126 *) update_po
$DOWNLOAD_PO
130 echo "$0: Bootstrapping CVS tar..."
134 if [ "${2}" != - ]; then
135 CVS_PREFIX
=${CVS_PREFIX}${2}@
137 if [ "$1" = "ext" ]; then
138 if [ -z "${CVS_RSH}" ]; then
148 echo "$0: getting $1 files..."
151 trap 'rm -fr $1; exit 1' 0
153 case "${CVS_AUTH--}" in
154 -) build_cvs_prefix ext anoncvs
156 pserver
) build_cvs_prefix
$CVS_AUTH ${CVS_USER:-anoncvs}
159 build_cvs_prefix
$CVS_AUTH ${CVS_USER--}
161 ext
) build_cvs_prefix
$CVS_AUTH ${CVS_USER--}
163 *) echo "$0: Unknown CVS access method" >&2
166 if [ "${CVS_AUTH--}" = "pserver" ]; then
167 cvs
-d ${CVS_PREFIX}subversions.gnu.org
:/cvsroot
/$1 login
|| exit
169 cvs
-q -d ${CVS_PREFIX}subversions.gnu.org
:/cvsroot
/$1 co
$1 || exit
180 new_gnulib_modules
=`sed '/^[ ]*#/d; /^[ ]*$/d' $*`
181 case $gnulib_modules,$new_gnulib_modules in
182 ?
*,?
*) new_gnulib_modules
=$newline$new_gnulib_modules;;
184 gnulib_modules
=$gnulib_modules$new_gnulib_modules
188 case ${PAXUTILS_SRCDIR--} in
190 PAXUTILS_SRCDIR
=paxutils
193 if [ -r $PAXUTILS_SRCDIR/gnulib.modules
]; then
194 get_modules
$PAXUTILS_SRCDIR/gnulib.modules
197 # copy_files srcdir dstdir
199 for file in `cat $1/DISTFILES`
204 dst
=`echo $file | sed 's^.*/^^'`
205 if [ $# -eq 3 ]; then
211 echo "$0: Copying file $1/$file to $2/$dst"
212 cp -p $1/$file $2/$dst
216 copy_files
${PAXUTILS_SRCDIR}/m4 m4
217 echo "$0: Creating m4/paxutils.m4"
218 (echo "# This file is generated automatically. Please, do not edit."
220 echo "AC_DEFUN([tar_PAXUTILS],["
221 cat ${PAXUTILS_SRCDIR}/m
4/DISTFILES
| sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a
-z A
-Z
222 echo "])") > .
/m
4/paxutils.
m4
230 for dir
in doc rmt lib tests
232 copy_files
${PAXUTILS_SRCDIR}/$dir $dir
235 copy_files
${PAXUTILS_SRCDIR}/paxlib lib pax
239 case ${GNULIB_SRCDIR--} in
244 <$GNULIB_SRCDIR/gnulib
-tool || exit
246 get_modules gnulib.modules
248 gnulib_modules
=`echo "$gnulib_modules" | sort -u`
249 previous_gnulib_modules
=
250 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
251 previous_gnulib_modules
=$gnulib_modules
253 (echo "$gnulib_modules"
254 for gnulib_module in $gnulib_modules; do
255 $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
261 (for gnulib_module in $gnulib_modules; do
262 $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
266 gnulib_dirs
=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
267 mkdir -p $gnulib_dirs || exit
269 for gnulib_file
in $gnulib_files; do
273 m
4/codeset.
m4) continue;;
274 m
4/intdiv0.
m4) continue;;
275 m
4/inttypes
-pri.
m4) continue;;
276 m
4/isc
-posix.
m4) continue;;
277 m
4/lcmessage.
m4) continue;;
278 m
4/onceonly_2_57.
m4) dest
=m
4/onceonly.
m4;;
279 # These will be overwritten by autopoint, which still uses
280 # old jm_.* macro names, so we have to keep both copies.
281 m
4/gettext.
m4 | m
4/glibc21.
m4 | m
4/inttypes_h.
m4 | m
4/lib
-ld.
m4 | \
282 m
4/lib
-prefix.
m4 | m
4/po.
m4 | m
4/stdint_h.
m4 | m
4/uintmax_t.
m4 | \
284 dest
=`expr $gnulib_file : '\(.*\).m4'`_gl.
m4;;
288 echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
289 cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
292 echo "$0: Creating m4/gnulib.m4"
293 (echo "# This file is generated automatically. Please, do not edit."
295 echo "AC_DEFUN([tar_GNULIB],["
296 for gnulib_module
in $gnulib_modules; do
297 echo "# $gnulib_module"
298 $GNULIB_SRCDIR/gnulib
-tool --extract-autoconf-snippet $gnulib_module
299 done | sed '/AM_GNU_GETTEXT/d'
300 echo "])") > .
/m
4/gnulib.
m4
302 echo "$0: Creating lib/Makefile.am"
303 (echo "# This file is generated automatically from lib/Makefile.am. Do not edit!"
304 cat lib
/Makefile.tmpl
306 for gnulib_module
in $gnulib_modules; do
307 echo "# $gnulib_module"
308 $GNULIB_SRCDIR/gnulib
-tool --extract-automake-snippet $gnulib_module
309 done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib
/Makefile.am
312 if test "$DOWNLOAD_PO" = "yes"; then
316 # Reconfigure, getting other files.
318 echo "$0: autoreconf --verbose --install --force ..."
319 autoreconf
--verbose --install --force || exit 1
322 echo "$0: done. Now you can run './configure'."