]> Dogcows Code - chaz/tar/blob - bootstrap
Create m4/paxutils.m4
[chaz/tar] / bootstrap
1 #! /bin/sh
2
3 # Bootstrap 'tar' from CVS.
4
5 # Copyright (C) 2003, 2004 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., 59 Temple Place - Suite 330, Boston, MA
20 # 02111-1307, 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://www2.iro.umontreal.ca/~gnutra/po/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 Running without arguments will suffice in most cases. It is equivalent
56 to
57
58 ./bootstrap --cvs-auth=ext --cvs-user=anoncvs
59
60 EOF
61 }
62
63 update_po() {
64 if [ $# = 1 ]; then
65 case $1 in
66 *.po) POFILE=$1;;
67 *) POFILE=${1}.po;;
68 esac
69 echo "$0: getting translation for $1..."
70 wget -r -C off $TP_URL/$POFILE
71 else
72 echo "$0: getting translations into po..."
73 (cd po &&
74 rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'` &&
75 wget -nv -nd -r -l 1 -A .po -C off $TP_URL &&
76 rm -f index.html index.html.[0-9]*
77 ls *.po | sed 's/\.po$//' >LINGUAS
78 ) || exit
79 fi
80 }
81
82 # Parse options.
83
84 DOWNLOAD_PO=yes
85 for option
86 do
87 case $option in
88 --help)
89 usage
90 exit;;
91 --gnulib-srcdir=*)
92 GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
93 --paxutils-srcdir=*)
94 PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
95 --cvs-auth=*)
96 CVS_AUTH=`expr "$option" : '--cvs-auth=\(.*\)'`;;
97 --cvs-user=*)
98 CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
99 --no-po)
100 DOWNLOAD_PO=no;;
101 --update-po=*)
102 DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;
103 --update-po)
104 DOWNLOAD_PO=only;;
105 *)
106 echo >&2 "$0: $option: unknown option"
107 exit 1;;
108 esac
109 done
110
111 case $DOWNLOAD_PO in
112 only) update_po
113 exit 0
114 ;;
115 no|yes) ;;
116 *) update_po $DOWNLOAD_PO
117 exit 0
118 esac
119
120 echo "$0: Bootstrapping CVS tar..."
121
122 build_cvs_prefix() {
123 CVS_PREFIX=:${1}:
124 if [ "${2}" != - ]; then
125 CVS_PREFIX=${CVS_PREFIX}${2}@
126 fi
127 if [ "$1" = "ext" ]; then
128 if [ -z "${CVS_RSH}" ]; then
129 CVS_RSH=ssh
130 export CVS_RSH
131 fi
132 fi
133 }
134
135 # checkout package
136 checkout() {
137 if [ ! -d $1 ]; then
138 echo "$0: getting $1 files..."
139
140 trap exit 1 2 13 15
141 trap 'rm -fr $1; exit 1' 0
142
143 case "${CVS_AUTH--}" in
144 -) build_cvs_prefix ext anoncvs
145 ;;
146 pserver) build_cvs_prefix $CVS_AUTH ${CVS_USER:-anoncvs}
147 ;;
148 gserver|server)
149 build_cvs_prefix $CVS_AUTH ${CVS_USER--}
150 ;;
151 ext) build_cvs_prefix $CVS_AUTH ${CVS_USER--}
152 ;;
153 *) echo "$0: Unknown CVS access method" >&2
154 exit 1;;
155 esac
156 if [ "${CVS_AUTH--}" = "pserver" ]; then
157 cvs -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/$1 login || exit
158 fi
159 cvs -q -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/$1 co $1 || exit
160
161 trap 0
162 fi
163 }
164
165 # Get gnulib files.
166
167 case ${GNULIB_SRCDIR--} in
168 -) checkout gnulib
169 GNULIB_SRCDIR=gnulib
170 esac
171
172 <$GNULIB_SRCDIR/gnulib-tool || exit
173
174 gnulib_modules='
175 alloca
176 argmatch
177 argp
178 backupfile
179 dirname
180 error
181 exclude
182 fileblocks
183 fnmatch-gnu
184 ftruncate
185 full-write
186 getdate
187 getline
188 getopt
189 getpagesize
190 gettext
191 gettime
192 hash
193 human
194 lchown
195 localcharset
196 memset
197 modechange
198 obstack
199 quote
200 quotearg
201 rmdir
202 safe-read
203 save-cwd
204 savedir
205 stdbool
206 stpcpy
207 strtol
208 strtoul
209 timespec
210 unlocked-io
211 utime
212 xalloc
213 xalloc-die
214 xgetcwd
215 xstrtoumax
216 '
217
218 previous_gnulib_modules=
219 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
220 previous_gnulib_modules=$gnulib_modules
221 # In gnulib `alloca-opt' duplicates `alloca', so make sure not
222 # to use it.
223 gnulib_modules=`
224 (echo "$gnulib_modules"
225 for gnulib_module in $gnulib_modules; do
226 $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
227 done) | sort -u
228 `
229 done
230
231 gnulib_files=`
232 (for gnulib_module in $gnulib_modules; do
233 $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
234 done) | sort -u
235 `
236
237 gnulib_dirs=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
238 mkdir -p $gnulib_dirs || exit
239
240 for gnulib_file in $gnulib_files; do
241 dest=$gnulib_file
242
243 case $gnulib_file in
244 m4/codeset.m4) continue;;
245 m4/intdiv0.m4) continue;;
246 m4/inttypes-pri.m4) continue;;
247 m4/isc-posix.m4) continue;;
248 m4/lcmessage.m4) continue;;
249 m4/onceonly_2_57.m4) dest=m4/onceonly.m4;;
250 # These will be overwritten by autopoint, which still uses
251 # old jm_.* macro names, so we have to keep both copies.
252 m4/gettext.m4 | m4/glibc21.m4 | m4/inttypes_h.m4 | m4/lib-ld.m4 | \
253 m4/lib-prefix.m4 | m4/po.m4 | m4/stdint_h.m4 | m4/uintmax_t.m4 | \
254 m4/ulonglong.m4)
255 dest=`expr $gnulib_file : '\(.*\).m4'`_gl.m4;;
256 esac
257
258 rm -f $dest &&
259 echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
260 cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
261 done
262
263 echo "$0: Creating m4/gnulib.m4"
264 (echo "# This file is generated automatically. Please, do not edit."
265 echo "#"
266 echo "AC_DEFUN([tar_GNULIB],["
267 for gnulib_module in $gnulib_modules; do
268 echo "# $gnulib_module"
269 $GNULIB_SRCDIR/gnulib-tool --extract-autoconf-snippet $gnulib_module
270 done | sed '/AM_GNU_GETTEXT/d'
271 echo "])") > ./m4/gnulib.m4
272
273 echo "$0: Creating lib/Makefile.am"
274 (cat lib/Makefile.tmpl
275
276 for gnulib_module in $gnulib_modules; do
277 echo "# $gnulib_module"
278 $GNULIB_SRCDIR/gnulib-tool --extract-automake-snippet $gnulib_module
279 done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib/Makefile.am
280
281 # Get paxutils files
282 case ${PAXUTILS_SRCDIR--} in
283 -) checkout paxutils
284 PAXUTILS_SRCDIR=paxutils
285 esac
286
287 # copy_files srcdir dstdir
288 copy_files() {
289 for file in `cat $1/DISTFILES`
290 do
291 case $file in
292 "#*") continue;;
293 esac
294 echo "$0: Copying file $1/$file"
295 cp -p $1/$file $2/`expr $file : '.*/\(.*\)'`
296 done
297 }
298
299 copy_files ${PAXUTILS_SRCDIR}/m4 m4
300 echo "$0: Creating m4/paxutils.m4"
301 (echo "# This file is generated automatically. Please, do not edit."
302 echo "#"
303 echo "AC_DEFUN([tar_PAXUTILS],["
304 cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
305 echo "])") > ./m4/paxutils.m4
306
307 if [ -d rmt ]; then
308 :
309 else
310 mkdir rmt
311 fi
312
313 copy_files ${PAXUTILS_SRCDIR}/rmt rmt
314
315 copy_files ${PAXUTILS_SRCDIR}/lib lib
316
317 copy_files ${PAXUTILS_SRCDIR}/tests tests
318
319 # Get translations.
320 if test "$DOWNLOAD_PO" = "yes"; then
321 update_po
322 fi
323
324 # Reconfigure, getting other files.
325
326 echo "$0: autoreconf --verbose --install --force ..."
327 autoreconf --verbose --install --force
328
329
330 echo "$0: done. Now you can run './configure'."
This page took 0.049809 seconds and 5 git commands to generate.