Include sparsemvp.at, spmvp00.at, spmvp01.at, spmvp10.at
[debian/tar] / bootstrap
1 #! /bin/sh
2
3 # Bootstrap 'tar' from CVS.
4
5 # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6
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)
10 # any later version.
11
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.
16
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
20 # 02110-1301, USA.
21
22 # Written by Paul Eggert and Sergey Poznyakoff.
23
24 # URL of our text domain page in Translation Project
25 TP_URL="http://www.iro.umontreal.ca/translation/maint/tar/"
26
27 # Ensure file names are sorted consistently across platforms;
28 # e.g., m4/ulonglong_gl.m4 should follow m4/ulonglong.m4.
29 LC_ALL=C
30 export LC_ALL
31
32 usage() {
33  cat <<EOF
34  usage: $0 [--gnulib-srcdir=DIR][--paxutils-srcdir=DIR][--cvs-auth=AUTH-METHOD][--cvs-user=USERNAME][--no-po]
35  Options are:
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
40                               them again.
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
45                               them again.
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
49                               repository).
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.
54
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.
58
59 Running without arguments will suffice in most cases. It is equivalent
60 to
61
62     ./bootstrap --cvs-auth=pserver
63
64 EOF
65 }
66
67 update_po() {
68   if [ $# = 1 ]; then
69     case $1 in
70     *.po)  POFILE=$1;;
71     *)     POFILE=${1}.po;;
72     esac
73     echo "$0: getting translation for $1..."
74     wget -r --cache=off $TP_URL/$POFILE
75   else
76     echo "$0: getting translations into po..."
77     (cd 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
82     ) || exit
83   fi
84 }
85
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' ' '` $*"
90 fi
91
92 # Parse options.
93
94 DOWNLOAD_PO=yes
95 for option
96 do
97   case $option in
98   --help)
99     usage
100     exit;;
101   --gnulib-srcdir=*)
102     GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
103   --paxutils-srcdir=*)
104     PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
105   --cvs-auth=*)
106     CVS_AUTH=`expr "$option" : '--cvs-auth=\(.*\)'`;;
107   --cvs-user=*)
108     CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
109   --no-po)
110     DOWNLOAD_PO=no;;
111   --update-po=*)
112     DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;
113   --update-po)
114     DOWNLOAD_PO=only;;
115   *)
116     echo >&2 "$0: $option: unknown option"
117     exit 1;;
118   esac
119 done
120
121 case $DOWNLOAD_PO in
122 only)   update_po
123         exit 0
124         ;;
125 no|yes) ;;
126 *)      update_po $DOWNLOAD_PO
127         exit 0
128 esac
129
130 echo "$0: Bootstrapping CVS tar..."
131
132 build_cvs_prefix() {
133   CVS_PREFIX=:${1}:
134   if [ "${2}" != - ]; then
135     CVS_PREFIX=${CVS_PREFIX}${2}@
136   fi
137   if [ "$1" = "ext" ]; then
138     if [ -z "${CVS_RSH}" ]; then
139        CVS_RSH=ssh
140        export CVS_RSH
141     fi
142   fi
143 }
144
145 # checkout package
146 checkout() {
147   if [ ! -d $1 ]; then
148     echo "$0: getting $1 files..."
149
150     trap exit 1 2 13 15
151     trap 'rm -fr $1; exit 1' 0
152
153     case "${CVS_AUTH-pserver}" in
154     pserver) build_cvs_prefix pserver ${CVS_USER:-anonymous}
155              ;;
156     gserver|server)
157              build_cvs_prefix $CVS_AUTH ${CVS_USER--}
158              ;;
159     ext)     build_cvs_prefix $CVS_AUTH ${CVS_USER--}
160              ;;
161     *)       echo "$0: Unknown CVS access method" >&2
162              exit 1;;
163     esac
164     cvs -q -d ${CVS_PREFIX}cvs.sv.gnu.org:/cvsroot/$1 co $1 || exit
165
166     trap - 0
167   fi
168 }
169
170 gnulib_modules=
171 newline='
172 '
173
174 get_modules() {
175   new_gnulib_modules=`sed '/^[   ]*#/d; /^[      ]*$/d' $*`
176   case $gnulib_modules,$new_gnulib_modules in
177   ?*,?*) new_gnulib_modules=$newline$new_gnulib_modules;;
178   esac
179   gnulib_modules=$gnulib_modules$new_gnulib_modules
180 }
181
182 # Get paxutils files
183 case ${PAXUTILS_SRCDIR--} in
184 -) checkout paxutils
185    PAXUTILS_SRCDIR=paxutils
186 esac
187
188 if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then
189   get_modules $PAXUTILS_SRCDIR/gnulib.modules
190 fi
191
192 # copy_files srcdir dstdir
193 copy_files() {
194   for file in `cat $1/DISTFILES`
195   do
196     case $file in
197     "#*")  continue;;
198     esac
199     dst=`echo $file | sed 's^.*/^^'`
200     if [ $# -eq 3 ]; then
201       case $dst in
202       ${3}*) ;;
203       *) dst=${3}$dst;;
204       esac
205     fi
206     echo "$0: Copying file $1/$file to $2/$dst"
207     cp -p $1/$file $2/$dst
208   done
209 }
210
211 copy_files ${PAXUTILS_SRCDIR}/m4 m4
212 echo "$0: Creating m4/paxutils.m4"
213 (echo "# This file is generated automatically. Please, do not edit."
214  echo "#"
215  echo "AC_DEFUN([tar_PAXUTILS],["
216  cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
217  echo "])") > ./m4/paxutils.m4
218
219 if [ -d rmt ]; then
220    :
221 else
222    mkdir rmt
223 fi
224
225 for dir in doc rmt lib tests
226 do
227         copy_files ${PAXUTILS_SRCDIR}/$dir $dir
228 done
229
230 copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax
231
232 # Get gnulib files.
233
234 case ${GNULIB_SRCDIR--} in
235 -) checkout gnulib
236    GNULIB_SRCDIR=gnulib
237 esac
238
239 <$GNULIB_SRCDIR/gnulib-tool || exit
240
241 get_modules gnulib.modules
242
243 gnulib_modules=`echo "$gnulib_modules" | sort -u`
244 previous_gnulib_modules=
245 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
246   previous_gnulib_modules=$gnulib_modules
247   gnulib_modules=`
248     (echo "$gnulib_modules"
249      for gnulib_module in $gnulib_modules; do
250        $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
251      done) | sort -u
252   `
253 done
254
255 gnulib_files=`
256   (for gnulib_module in $gnulib_modules; do
257      $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
258    done) | sort -u
259 `
260
261 gnulib_dirs=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
262 mkdir -p $gnulib_dirs || exit
263
264 for gnulib_file in $gnulib_files; do
265   dest=$gnulib_file
266
267   case $gnulib_file in
268   m4/codeset.m4) continue;;
269   m4/intdiv0.m4) continue;;
270   m4/inttypes-pri.m4) continue;;
271   m4/isc-posix.m4) continue;;
272   m4/lcmessage.m4) continue;;
273   m4/onceonly_2_57.m4) dest=m4/onceonly.m4;;
274   # These will be overwritten by autopoint, which still uses
275   # old jm_.* macro names, so we have to keep both copies.
276   m4/gettext.m4 | m4/glibc21.m4 | m4/inttypes_h.m4 | m4/lib-ld.m4 | \
277   m4/lib-prefix.m4 | m4/po.m4 | m4/stdint_h.m4 | m4/uintmax_t.m4 | \
278   m4/ulonglong.m4)
279     dest=`expr $gnulib_file : '\(.*\).m4'`_gl.m4;;
280   esac
281
282   rm -f $dest &&
283   echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
284   cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
285 done
286
287 echo "$0: Creating m4/gnulib.m4"
288 (echo "# This file is generated automatically. Please, do not edit."
289  echo "#"
290  echo "AC_DEFUN([tar_GNULIB],["
291  for gnulib_module in $gnulib_modules; do
292     echo "# $gnulib_module"
293     $GNULIB_SRCDIR/gnulib-tool --extract-autoconf-snippet $gnulib_module
294  done | sed '/AM_GNU_GETTEXT/d'
295  echo "])") > ./m4/gnulib.m4
296
297 echo "$0: Creating lib/Makefile.am"
298 (echo "# This file is generated automatically. Do not edit!"
299  cat lib/Makefile.tmpl
300
301  for gnulib_module in $gnulib_modules; do
302     echo "# $gnulib_module"
303     $GNULIB_SRCDIR/gnulib-tool --extract-automake-snippet $gnulib_module
304  done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib/Makefile.am
305
306 # Get translations.
307 if test "$DOWNLOAD_PO" = "yes"; then
308   update_po
309 fi
310
311 # Reconfigure, getting other files.
312
313 echo "$0: autoreconf --verbose --install --force ..."
314 autoreconf --verbose --install --force || exit 1
315
316
317 echo "$0: done.  Now you can run './configure'."