]>
Dogcows Code - chaz/tar/blob - bootstrap
3 # Bootstrap this package from CVS.
5 # Copyright (C) 2003, 2004, 2005, 2006, 2007 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 3, 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) |
303 test -n "$ignore_file_list" && rm -f $ignore_file_list
306 trap 'cleanup_ifl' 1 2 3 15
308 # ignorefile DIR FILE
309 # add FILE to the temporary ignorelist in the directory DIR
313 if `echo $ignore_list | grep -qv $file`; then
314 ignore_file_list
="$ignore_file_list
319 # copy_files srcdir dstdir
321 for file in `cat $1/DISTFILES`
326 dst
=`echo $file | sed 's^.*/^^'`
327 if [ $# -eq 3 ]; then
333 echo "$0: Copying file $1/$file to $2/$dst"
334 cp -p $1/$file $2/$dst
339 copy_files
${PAXUTILS_SRCDIR}/m4 m4
340 echo "$0: Creating m4/paxutils.m4"
341 (echo "# This file is generated automatically. Please, do not edit."
343 echo "AC_DEFUN([${package}_PAXUTILS],["
344 cat ${PAXUTILS_SRCDIR}/m
4/DISTFILES
| sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a
-z A
-Z
345 echo "])") > .
/m
4/paxutils.
m4
346 ignorefile
m4 paxutils.
m4
354 for dir
in doc rmt lib tests
356 copy_files
${PAXUTILS_SRCDIR}/$dir $dir
359 copy_files
${PAXUTILS_SRCDIR}/paxlib lib pax
363 case ${GNULIB_SRCDIR--} in
369 gnulib_tool
=$GNULIB_SRCDIR/gnulib
-tool
370 <$gnulib_tool || exit
374 src
=$GNULIB_SRCDIR/$1
380 test ! -h "$dst" || {
381 echo "$0: rm -f $dst" &&
386 cmp -s "$src" "$dst" || {
387 echo "$0: cp -fp $src $dst" &&
392 src_ls
=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i
=$1 &&
393 dst_ls
=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i
=$1 &&
394 test "$src_i" = "$dst_i" || {
400 *//* | */..
/* | */.
/* | /*/*/*/*/*/)
401 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
403 /*/*/*/*/) dot_dots
=..
/..
/..
/;;
404 /*/*/*/) dot_dots
=..
/..
/;;
405 /*/*/) dot_dots
=..
/;;
409 echo "$0: ln -fs $dot_dots$src $dst" &&
410 ln -fs "$dot_dots$src" "$dst"
416 cp_mark_as_generated
()
421 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
422 symlink_to_gnulib
"$cp_dst"
425 *.
[ch
]) c1
='/* '; c2
=' */';;
426 *.texi
) c1
='@c '; c2
= ;;
427 *.
m4|*/Make
*|Make
*) c1
='# ' ; c2
= ;;
431 if test -z "$c1"; then
432 cmp -s "$cp_src" "$cp_dst" || {
433 echo "$0: cp -f $cp_src $cp_dst" &&
434 cp -f "$cp_src" "$cp_dst"
437 # Copy the file first to get proper permissions if it
438 # doesn't already exist. Then overwrite the copy.
439 cp "$cp_src" "$cp_dst-t" &&
441 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
442 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
445 if cmp -s "$cp_dst-t" "$cp_dst"; then
448 echo "$0: cp $cp_src $cp_dst # with edits" &&
449 mv -f "$cp_dst-t" "$cp_dst"
455 version_controlled_file
() {
460 grep -F "/$file/" $dir/CVS
/Entries
2>/dev
/null
|
461 grep '^/[^/]*/[0-9]' > /dev
/null
&& found
=yes
462 elif test -d .git
; then
463 git
-rm -n "$dir/$file" > /dev
/null
2>&1 && found
=yes
465 echo "$0: no version control for $dir/$file?" >&2
471 for dir
in .
`(cd $1 && find * -type d -print)`; do
474 for file in `ls $1/$dir`; do
475 test -d $1/$dir/$file && continue
476 for excluded_file
in $excluded_files; do
477 test "$dir/$file" = "$excluded_file" && continue 2
479 if test $file = Makefile.am
; then
480 copied
=$copied${sep}gnulib.mk
; sep
=$nl
481 remove_intl
='/^[^#].*\/intl/s/^/#/;'"s,/$bt,,g"
482 sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk
|| {
483 echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
484 rm -f $dir/gnulib.mk
&&
485 sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk
487 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
488 version_controlled_file
$dir $file; then
489 echo "$0: $dir/$file overrides $1/$dir/$file"
491 copied
=$copied$sep$file; sep
=$nl
492 if test $file = gettext.
m4; then
493 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
496 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
497 AC_DEFUN([AM_INTL_SUBDIR], [
498 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
499 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
501 AC_DEFUN([gl_LOCK_EARLY], [])
502 ' $1/$dir/$file >$dir/$file
504 cp_mark_as_generated
$1/$dir/$file $dir/$file
509 if test -n "$copied"; then
520 if [ -f $dir/.ignore.$$
]; then
521 tfile
=$dir/.ignore.$$
526 echo "$copied" | sort -u - $ig | cmp -s - $ig ||
527 echo "$copied" | sort -u - $ig $tfile -o $ig
531 if [ "$dir" = "po" ]; then
543 echo "$copied" | sort -u - $tfile -o $ig
550 # Create boot temporary directories to import from gnulib and gettext.
555 mkdir $bt $bt2 || exit
557 # Import from gnulib.
559 test -d build
-aux || {
560 echo "$0: mkdir build-aux ..." &&
563 gnulib_tool_options
="\
566 --aux-dir $bt/build-aux\
570 --source-base $bt/lib/\
571 --tests-base $bt/tests\
574 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
575 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
578 for file in $gnulib_files; do
579 symlink_to_gnulib
$file || exit
583 # Import from gettext.
585 echo "$0: (cd $bt2; autopoint) ..."
586 cp configure.ac
$bt2 &&
587 (cd $bt2 && autopoint
&& rm configure.ac
) &&
588 slurp
$bt2 $bt || exit
590 rm -fr $bt $bt2 || exit
593 # Reconfigure, getting other files.
596 'aclocal --force -I m4' \
598 'autoheader --force' \
599 'automake --add-missing --copy --force-missing';
601 echo "$0: $command ..."
606 # Get some extra files from gnulib, overriding existing files.
608 for file in $gnulib_extra_files; do
610 */INSTALL
) dst
=INSTALL
;;
613 symlink_to_gnulib
$file $dst || exit
617 # Create gettext configuration.
618 echo "$0: Creating po/Makevars from po/Makevars.template ..."
621 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
622 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
623 /^XGETTEXT_OPTIONS *=/{
626 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
628 ' po
/Makevars.template
>po
/Makevars
630 if test -d runtime
-po; then
631 # Similarly for runtime-po/Makevars, but not quite the same.
632 rm -f runtime
-po/Makevars
634 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
635 /^subdir *=.*/s/=.*/= runtime-po/
636 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
637 /^XGETTEXT_OPTIONS *=/{
640 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
642 ' <po
/Makevars.template
>runtime
-po/Makevars
644 # Copy identical files from po to runtime-po.
645 (cd po
&& cp -p Makefile.
in.
in *-quot *.header
*.
sed *.sin ..
/runtime
-po)
648 echo "$0: done. Now you can run './configure'."
This page took 0.066739 seconds and 4 git commands to generate.