]>
Dogcows Code - chaz/tar/blob - bootstrap
3 # Bootstrap this package 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.
27 # Ensure file names are sorted consistently across platforms.
28 # Also, ensure diagnostics are in English, e.g., "wget --help" below.
35 Bootstrap this package from the checked-out sources.
38 --paxutils-srcdir=DIRNAME Specify the local directory where paxutils
39 sources reside. Use this if you already
40 have paxutils sources on your machine, and
41 do not want to waste your bandwidth dowloading
43 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
44 sources reside. Use this if you already
45 have gnulib sources on your machine, and
46 do not want to waste your bandwidth dowloading
48 --copy Copy files instead of creating symbolic links.
49 --force Attempt to bootstrap even if the sources seem
50 not to have been checked out.
51 --skip-po Do not download po files.
52 --update-po[=LANG] Update po file(s) and exit.
53 --cvs-user=USERNAME Set the CVS username to be used when accessing
54 the gnulib repository.
56 If the file bootstrap.conf exists in the current working directory, its
57 contents are read as shell variables to configure the bootstrap.
59 Local defaults can be provided by placing the file \`.bootstrap' in the
60 current working directory. The file is read after bootstrap.conf, comments
61 and empty lines are removed, shell variables expanded and the result is
62 prepended to the command line options.
64 Running without arguments will suffice in most cases.
70 echo "$0: getting $1 files..."
72 case ${CVS_AUTH-pserver} in
74 CVS_PREFIX
=':pserver:anonymous@';;
76 CVS_PREFIX
="$CVS_USER${CVS_USER+@}";;
78 echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
83 '') CVS_RSH
=ssh; export CVS_RSH
;;
86 trap "cleanup $1" 1 2 13 15
88 cvs
-z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org
:/cvsroot
/"$1" co
$1 ||
103 # List of gnulib modules needed.
106 # Any gnulib files needed that are not in modules.
109 # Translation Project URL, for the registry of all projects
110 # and for the translation-team master directory.
111 TP_URL
='http://www.iro.umontreal.ca/translation/registry.cgi?domain='
112 TP_PO_URL
='http://www.iro.umontreal.ca/translation/teams/PO/'
114 extract_package_name
='
125 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
130 package
=`sed -n "$extract_package_name" configure.ac` || exit
132 # Extra files from gnulib, which override files from other sources.
134 build-aux/announce-gen
138 build-aux/texinfo.tex
140 build-aux/config.guess
145 # Other locale categories that need message catalogs.
146 EXTRA_LOCALE_CATEGORIES
=
148 # Additional xgettext options to use. Use "\\\newline" to break lines.
149 XGETTEXT_OPTIONS
='\\\
150 --flag=_:1:pass-c-format\\\
151 --flag=N_:1:pass-c-format\\\
152 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
155 # Files we don't want to import.
158 # File that should exist in the top directory of a checked out hierarchy,
159 # but not in a distribution tarball.
160 CVS_only_file
=README
-cvs
162 # Whether to use copies instead of symlinks.
165 # Override the default configuration, if necessary.
166 test -r bootstrap.conf
&& . .
/bootstrap.conf
168 # Read local configuration file
169 if [ -r .bootstrap
]; then
170 echo "$0: Reading configuration file .bootstrap"
171 eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
174 # Translate configuration into internal form.
185 PAXUTILS_SRCDIR
=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
187 GNULIB_SRCDIR
=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
189 CVS_USER
=`expr "$option" : '--cvs-user=\(.*\)'`;;
190 --skip-po | --no-po) # --no-po is for compatibility with 'tar' tradition.
193 DOWNLOAD_PO
=`expr "$option" : '--update-po=\(.*\)'`;;
201 echo >&2 "$0: $option: unknown option"
206 if test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then
207 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
211 echo "$0: Bootstrapping CVS $package..."
220 case $WGET_COMMAND in
222 echo "$0: wget not available; skipping translations";;
224 echo "$0: getting ${po_file:-translations} into $subdir for $domain..." &&
226 '') (cd $subdir && rm -f dummy
`ls | sed -n '/\.gmo$/p; /\.po/p'`);;
229 $WGET_COMMAND -O "$subdir/$domain.html" "$TP_URL$domain" &&
231 sed -n 's|.*"http://[^"]*/translation/teams/PO/\([^/"]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\1.\2|p' <"$subdir/$domain.html" |
232 sort -k 1,1 -k 2,2n
-k2,2 -k3,3n
-k3,3 -k4,4n
-k4,4 -k5,5n
-k5.5
|
234 { if (lang && $1 != lang) print lang, ver }
235 { lang = $1; ver = substr($0, index($0, ".") + 1) }
236 END { if (lang) print lang, ver }
237 ' | awk -v domain
="$domain" -v po_file
="$po_file" -v subdir
="$subdir" '
240 if (po_file && po_file != (lang ".po")) next
244 printf "{ $WGET_COMMAND -O %s/%s.po '\'"$TP_PO_URL"'/%s/%s-%s.%s.po'\'' &&\n", subdir, lang, lang, domain, ver, lang
245 printf " msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang
246 printf " echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang
247 printf " rm -f %s/%s.po; }; } &&\n", subdir, lang
250 ' | WGET_COMMAND
="$WGET_COMMAND" sh
;;
252 ls "$subdir"/*.po
2>/dev
/null
|
253 sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
254 rm -f "$subdir/$domain.html"
257 case `wget --help` in
259 WGET_COMMAND
='wget -nv --no-cache';;
261 WGET_COMMAND
='wget -nv --cache=off';;
263 WGET_COMMAND
='wget -nv';;
272 get_translations po
$package || exit
275 get_translations po
$package
279 get_translations po
$package "$DOWNLOAD_PO"
283 get_translations po
$package "${DOWNLOAD_PO}.po"
287 # Get paxutils files.
289 case ${PAXUTILS_SRCDIR--} in
291 PAXUTILS_SRCDIR
=paxutils
294 if [ -r $PAXUTILS_SRCDIR/gnulib.modules
]; then
296 (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) |
301 # copy_files srcdir dstdir
303 for file in `cat $1/DISTFILES`
308 dst
=`echo $file | sed 's^.*/^^'`
309 if [ $# -eq 3 ]; then
315 echo "$0: Copying file $1/$file to $2/$dst"
316 cp -p $1/$file $2/$dst
320 copy_files
${PAXUTILS_SRCDIR}/m4 m4
321 echo "$0: Creating m4/paxutils.m4"
322 (echo "# This file is generated automatically. Please, do not edit."
324 echo "AC_DEFUN([${package}_PAXUTILS],["
325 cat ${PAXUTILS_SRCDIR}/m
4/DISTFILES
| sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a
-z A
-Z
326 echo "])") > .
/m
4/paxutils.
m4
334 for dir
in doc rmt lib tests
336 copy_files
${PAXUTILS_SRCDIR}/$dir $dir
339 copy_files
${PAXUTILS_SRCDIR}/paxlib lib pax
343 case ${GNULIB_SRCDIR--} in
349 gnulib_tool
=$GNULIB_SRCDIR/gnulib
-tool
350 <$gnulib_tool || exit
354 src
=$GNULIB_SRCDIR/$1
360 test ! -h "$dst" || {
361 echo "$0: rm -f $dst" &&
366 cmp -s "$src" "$dst" || {
367 echo "$0: cp -fp $src $dst" &&
372 src_ls
=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i
=$1 &&
373 dst_ls
=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i
=$1 &&
374 test "$src_i" = "$dst_i" || {
380 *//* | */..
/* | */.
/* | /*/*/*/*/*/)
381 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
383 /*/*/*/*/) dot_dots
=..
/..
/..
/;;
384 /*/*/*/) dot_dots
=..
/..
/;;
385 /*/*/) dot_dots
=..
/;;
389 echo "$0: ln -fs $dot_dots$src $dst" &&
390 ln -fs "$dot_dots$src" "$dst"
396 cp_mark_as_generated
()
401 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
402 symlink_to_gnulib
"$cp_dst"
405 *.
[ch
]) c1
='/* '; c2
=' */';;
406 *.texi
) c1
='@c '; c2
= ;;
407 *.
m4|*/Make
*|Make
*) c1
='# ' ; c2
= ;;
411 if test -z "$c1"; then
412 cmp -s "$cp_src" "$cp_dst" || {
413 echo "$0: cp -f $cp_src $cp_dst" &&
414 cp -f "$cp_src" "$cp_dst"
417 # Copy the file first to get proper permissions if it
418 # doesn't already exist. Then overwrite the copy.
419 cp "$cp_src" "$cp_dst-t" &&
421 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
422 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
425 if cmp -s "$cp_dst-t" "$cp_dst"; then
428 echo "$0: cp $cp_src $cp_dst # with edits" &&
429 mv -f "$cp_dst-t" "$cp_dst"
435 version_controlled_file
() {
440 grep -F "/$file/" $dir/CVS
/Entries
2>/dev
/null
|
441 grep '^/[^/]*/[0-9]' > /dev
/null
&& found
=yes
442 elif test -d .git
; then
443 git
-rm -n "$dir/$file" > /dev
/null
2>&1 && found
=yes
445 echo "$0: no version control for $dir/$file?" >&2
451 for dir
in .
`(cd $1 && find * -type d -print)`; do
454 for file in `ls $1/$dir`; do
455 test -d $1/$dir/$file && continue
456 for excluded_file
in $excluded_files; do
457 test "$dir/$file" = "$excluded_file" && continue 2
459 if test $file = Makefile.am
; then
460 copied
=$copied${sep}gnulib.mk
; sep
=$nl
461 remove_intl
='/^[^#].*\/intl/s/^/#/'
462 sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk
|| {
463 echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
464 rm -f $dir/gnulib.mk
&&
465 sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk
467 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
468 version_controlled_file
$dir $file; then
469 echo "$0: $dir/$file overrides $1/$dir/$file"
471 copied
=$copied$sep$file; sep
=$nl
472 if test $file = gettext.
m4; then
473 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
476 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
477 AC_DEFUN([AM_INTL_SUBDIR], [
478 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
479 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
481 AC_DEFUN([gl_LOCK_EARLY], [])
482 ' $1/$dir/$file >$dir/$file
484 cp_mark_as_generated
$1/$dir/$file $dir/$file
489 for dot_ig
in .cvsignore .gitignore
; do
491 if test -n "$copied" && test -f $ig; then
492 echo "$copied" | sort -u - $ig | cmp -s - $ig ||
493 echo "$copied" | sort -u - $ig -o $ig || exit
500 # Create boot temporary directories to import from gnulib and gettext.
505 mkdir $bt $bt2 || exit
507 # Import from gnulib.
509 test -d build
-aux || {
510 echo "$0: mkdir build-aux ..." &&
513 gnulib_tool_options
="\
516 --aux-dir $bt/build-aux\
520 --source-base $bt/lib/\
521 --tests-base $bt/tests\
524 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
525 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
528 for file in $gnulib_files; do
529 symlink_to_gnulib
$file || exit
533 # Import from gettext.
535 echo "$0: (cd $bt2; autopoint) ..."
536 cp configure.ac
$bt2 &&
537 (cd $bt2 && autopoint
&& rm configure.ac
) &&
538 slurp
$bt2 $bt || exit
540 rm -fr $bt $bt2 || exit
543 # Reconfigure, getting other files.
546 'aclocal --force -I m4' \
548 'autoheader --force' \
549 'automake --add-missing --copy --force-missing';
551 echo "$0: $command ..."
556 # Get some extra files from gnulib, overriding existing files.
558 for file in $gnulib_extra_files; do
560 */INSTALL
) dst
=INSTALL
;;
563 symlink_to_gnulib
$file $dst || exit
567 # Create gettext configuration.
568 echo "$0: Creating po/Makevars from po/Makevars.template ..."
571 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
572 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
573 /^XGETTEXT_OPTIONS *=/{
576 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
578 ' po
/Makevars.template
>po
/Makevars
580 if test -d runtime
-po; then
581 # Similarly for runtime-po/Makevars, but not quite the same.
582 rm -f runtime
-po/Makevars
584 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
585 /^subdir *=.*/s/=.*/= runtime-po/
586 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
587 /^XGETTEXT_OPTIONS *=/{
590 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
592 ' <po
/Makevars.template
>runtime
-po/Makevars
594 # Copy identical files from po to runtime-po.
595 (cd po
&& cp -p Makefile.
in.
in *-quot *.header
*.
sed *.sin ..
/runtime
-po)
598 echo "$0: done. Now you can run './configure'."
This page took 0.059934 seconds and 4 git commands to generate.