]> Dogcows Code - chaz/tar/blob - bootstrap
(gnulib_modules): Add getpagesize.
[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.
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 usage() {
28 cat <<EOF
29 usage: $0 [--gnulib-srcdir=DIR][--cvs-auth=AUTH-METHOD][--cvs-user=USERNAME][--no-po]
30 Options are:
31 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
32 sources reside. Use this if you already
33 have gnulib sources on your machine, and
34 do not want to waste your bandwidth dowloading
35 them again.
36 --cvs-auth=METHOD Set the CVS access method used for downloading
37 gnulib files. METHOD is one of the keywords
38 accepted by cvs -d option (see info cvs
39 repository).
40 --cvs-user=USERNAME Set the CVS username to be used when accessing
41 the gnulib repository.
42 --no-po Do not download po files.
43 --update-po Update po files and exit.
44
45 Running without arguments will suffice in most cases. It is equivalent
46 to
47
48 ./bootstrap --cvs-auth=ext --cvs-user=anoncvs
49
50 EOF
51 }
52
53 update_po() {
54 echo "$0: getting translations into po..."
55 (cd po &&
56 rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'` &&
57 wget -nv -nd -r -l 1 -A .po -C off $TP_URL &&
58 ls *.po | sed 's/\.po$//' >LINGUAS
59 ) || exit
60 }
61
62 # Parse options.
63
64 DOWNLOAD_PO=yes
65 for option
66 do
67 case $option in
68 --help)
69 usage
70 exit;;
71 --gnulib-srcdir=*)
72 GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
73 --cvs-auth=*)
74 CVS_AUTH=`expr "$option" : '--cvs-auth=\(.*\)'`;;
75 --cvs-user=*)
76 CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
77 --no-po)
78 DOWNLOAD_PO=no;;
79 --update-po)
80 DOWNLOAD_PO=only;;
81 *)
82 echo >&2 "$0: $option: unknown option"
83 exit 1;;
84 esac
85 done
86
87 if [ "$DOWNLOAD_PO" = "only" ]; then
88 update_po
89 exit 0
90 fi
91
92 echo "$0: Bootstrapping CVS tar..."
93
94 build_cvs_prefix() {
95 CVS_PREFIX=:${1}:
96 if [ "${2}" != - ]; then
97 CVS_PREFIX=${CVS_PREFIX}${2}@
98 fi
99 if [ "$1" = "ext" ]; then
100 if [ -z "${CVS_RSH}" ]; then
101 CVS_RSH=ssh
102 export CVS_RSH
103 fi
104 fi
105 }
106
107 # Get gnulib files.
108
109 case ${GNULIB_SRCDIR--} in
110 -)
111 if [ ! -d gnulib ]; then
112 echo "$0: getting gnulib files..."
113
114 trap exit 1 2 13 15
115 trap 'rm -fr gnulib; exit 1' 0
116
117 case "${CVS_AUTH--}" in
118 -) build_cvs_prefix ext anoncvs;;
119 pserver) build_cvs_prefix $CVS_AUTH ${CVS_USER:-anoncvs};;
120 gserver|server)
121 build_cvs_prefix $CVS_AUTH ${CVS_USER--};;
122 ext) build_cvs_prefix $CVS_AUTH ${CVS_USER--};;
123 *) echo "$0: Unknown CVS access method" >&2
124 exit 1;;
125 esac
126 if [ "${CVS_AUTH--}" = "pserver" ]; then
127 cvs -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/gnulib login || exit
128 fi
129 cvs -q -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/gnulib co gnulib || exit
130
131 trap 0
132 fi
133 GNULIB_SRCDIR=gnulib
134 esac
135
136 <$GNULIB_SRCDIR/gnulib-tool || exit
137
138 gnulib_modules='
139 alloca
140 argmatch
141 argp
142 backupfile
143 dirname
144 error
145 exclude
146 fileblocks
147 fnmatch-gnu
148 ftruncate
149 full-write
150 getdate
151 getline
152 getopt
153 getpagesize
154 gettext
155 gettime
156 hash
157 human
158 lchown
159 memset
160 modechange
161 obstack
162 quote
163 quotearg
164 rmdir
165 safe-read
166 save-cwd
167 savedir
168 stdbool
169 stpcpy
170 strtol
171 strtoul
172 timespec
173 unlocked-io
174 utime
175 xalloc
176 xgetcwd
177 xstrtoumax
178 '
179
180 previous_gnulib_modules=
181 while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
182 previous_gnulib_modules=$gnulib_modules
183 gnulib_modules=`
184 (echo "$gnulib_modules"
185 for gnulib_module in $gnulib_modules; do
186 $GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
187 done) | sort -u
188 `
189 done
190
191 gnulib_files=`
192 (for gnulib_module in $gnulib_modules; do
193 $GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
194 done) | sort -u
195 `
196
197 gnulib_dirs=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
198 mkdir -p $gnulib_dirs || exit
199
200 for gnulib_file in $gnulib_files; do
201 dest=$gnulib_file
202
203 case $gnulib_file in
204 m4/codeset.m4) continue;;
205 m4/intdiv0.m4) continue;;
206 m4/inttypes-pri.m4) continue;;
207 m4/isc-posix.m4) continue;;
208 m4/lcmessage.m4) continue;;
209 m4/onceonly_2_57.m4) dest=m4/onceonly.m4;;
210 # These will be overwritten by autopoint, which still uses
211 # old jm_.* macro names, so we have to keep both copies.
212 m4/ulonglong.m4) dest=m4/ulonglong_gl.m4;;
213 m4/inttypes_h.m4) dest=m4/inttypes_h_gl.m4;;
214 m4/stdint_h.m4) dest=m4/stdint_h_gl.m4;;
215 m4/uintmax_t.m4) dest=m4/uintmax_t_gl.m4;;
216 esac
217
218 rm -f $dest &&
219 echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
220 cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
221 done
222
223 if [ -d patches ]; then
224 echo "$0: Patching gnulib"
225 for file in patches/*.diff
226 do
227 patch -p0 < $file
228 done
229 fi
230
231 echo "$0: Creating m4/gnulib.m4"
232 (echo "# This file is generated automatically. Please, do not edit."
233 echo "#"
234 echo "AC_DEFUN([tar_GNULIB],["
235 for gnulib_module in $gnulib_modules; do
236 echo "# $gnulib_module"
237 $GNULIB_SRCDIR/gnulib-tool --extract-autoconf-snippet $gnulib_module
238 done | sed '/AM_GNU_GETTEXT/d'
239 echo "])") > ./m4/gnulib.m4
240
241 echo "$0: Creating lib/Makefile.am"
242 (cat lib/Makefile.tmpl
243
244 for gnulib_module in $gnulib_modules; do
245 echo "# $gnulib_module"
246 $GNULIB_SRCDIR/gnulib-tool --extract-automake-snippet $gnulib_module
247 done | sed 's/lib_SOURCES/libtar_a_SOURCES/g' ) > lib/Makefile.am
248
249 # Get translations.
250 if test "$DOWNLOAD_PO" = "yes"; then
251 update_po
252 fi
253
254 # Reconfigure, getting other files.
255
256 echo "$0: autoreconf --verbose --install --force ..."
257 autoreconf --verbose --install --force
258
259
260 echo "$0: done. Now you can run './configure'."
This page took 0.047624 seconds and 5 git commands to generate.