ls: --color now highlights hard linked files, too
[coreutils/bo.git] / bootstrap
blob5ba45255770f14a07f6ed0a9c234226f29eb4737
1 #! /bin/sh
3 # Bootstrap this package from checked-out sources.
5 # Copyright (C) 2003-2008 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 of the License, or
10 # (at your option) any later version.
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, see <http://www.gnu.org/licenses/>.
20 # Written by Paul Eggert.
22 nl='
25 # Ensure file names are sorted consistently across platforms.
26 LC_ALL=C
27 export LC_ALL
29 local_gl_dir=gl
31 # Temporary directory names.
32 bt='._bootmp'
33 bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
34 bt2=${bt}2
36 usage() {
37 echo >&2 "\
38 Usage: $0 [OPTION]...
39 Bootstrap this package from the checked-out sources.
41 Options:
42 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
43 sources reside. Use this if you already
44 have gnulib sources on your machine, and
45 do not want to waste your bandwidth downloading
46 them again.
47 --copy Copy files instead of creating symbolic links.
48 --force Attempt to bootstrap even if the sources seem
49 not to have been checked out.
50 --skip-po Do not download po files.
52 If the file $0.conf exists in the same directory as this script, its
53 contents are read as shell variables to configure the bootstrap.
55 Running without arguments will suffice in most cases.
59 # Configuration.
61 # Name of the Makefile.am
62 gnulib_mk=gnulib.mk
64 # List of gnulib modules needed.
65 gnulib_modules=
67 # Any gnulib files needed that are not in modules.
68 gnulib_files=
70 # The command to download all .po files for a specified domain into
71 # a specified directory. Fill in the first %s is the domain name, and
72 # the second with the destination directory. Use rsync's -L and -r
73 # options because the latest/%s directory and the .po files within are
74 # all symlinks.
75 po_download_command_format=\
76 "rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
78 extract_package_name='
79 /^AC_INIT(/{
80 /.*,.*,.*, */{
81 s///
82 s/[][]//g
83 s/)$//
87 s/AC_INIT(\[*//
88 s/]*,.*//
89 s/^GNU //
90 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
91 s/[^A-Za-z0-9_]/-/g
95 package=`sed -n "$extract_package_name" configure.ac` || exit
96 gnulib_name=lib$package
98 build_aux=build-aux
99 source_base=lib
100 m4_base=m4
101 doc_base=doc
102 tests_base=tests
104 # Extra files from gnulib, which override files from other sources.
105 gnulib_extra_files="
106 $build_aux/install-sh
107 $build_aux/missing
108 $build_aux/mdate-sh
109 $build_aux/texinfo.tex
110 $build_aux/depcomp
111 $build_aux/config.guess
112 $build_aux/config.sub
113 doc/INSTALL
116 # Additional gnulib-tool options to use. Use "\newline" to break lines.
117 gnulib_tool_option_extras=
119 # Other locale categories that need message catalogs.
120 EXTRA_LOCALE_CATEGORIES=
122 # Additional xgettext options to use. Use "\\\newline" to break lines.
123 XGETTEXT_OPTIONS='\\\
124 --flag=_:1:pass-c-format\\\
125 --flag=N_:1:pass-c-format\\\
126 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
129 # Package bug report address for gettext files
130 MSGID_BUGS_ADDRESS=bug-$package@gnu.org
132 # Files we don't want to import.
133 excluded_files=
135 # File that should exist in the top directory of a checked out hierarchy,
136 # but not in a distribution tarball.
137 checkout_only_file=README-hacking
139 # Whether to use copies instead of symlinks.
140 copy=false
142 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
143 # those files to be generated in directories like lib/, m4/, and po/.
144 # Or set it to 'auto' to make this script select which to use based
145 # on which version control system (if any) is used in the source directory.
146 vc_ignore=auto
148 # Override the default configuration, if necessary.
149 # Make sure that bootstrap.conf is sourced from the current directory
150 # if we were invoked as "sh bootstrap".
151 case "$0" in
152 */*) test -r "$0.conf" && . "$0.conf" ;;
153 *) test -r "$0.conf" && . ./"$0.conf" ;;
154 esac
157 if test "$vc_ignore" = auto; then
158 vc_ignore=
159 test -d .git && vc_ignore=.gitignore
160 test -d CVS && vc_ignore="$vc_ignore .cvsignore"
163 # Translate configuration into internal form.
165 # Parse options.
167 for option
169 case $option in
170 --help)
171 usage
172 exit;;
173 --gnulib-srcdir=*)
174 GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
175 --skip-po)
176 SKIP_PO=t;;
177 --force)
178 checkout_only_file=;;
179 --copy)
180 copy=true;;
182 echo >&2 "$0: $option: unknown option"
183 exit 1;;
184 esac
185 done
187 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
188 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
189 exit 1
192 # If $STR is not already on a line by itself in $FILE, insert it,
193 # sorting the new contents of the file and replacing $FILE with the result.
194 insert_sorted_if_absent() {
195 file=$1
196 str=$2
197 test -f $file || touch $file
198 echo "$str" | sort -u - $file | cmp -s - $file \
199 || echo "$str" | sort -u - $file -o $file \
200 || exit 1
203 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
204 found_aux_dir=no
205 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
206 >/dev/null && found_aux_dir=yes
207 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
208 >/dev/null && found_aux_dir=yes
209 if test $found_aux_dir = no; then
210 echo "$0: expected line not found in configure.ac. Add the following:" >&2
211 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
212 exit 1
215 # If $build_aux doesn't exist, create it now, otherwise some bits
216 # below will malfunction. If creating it, also mark it as ignored.
217 if test ! -d $build_aux; then
218 mkdir $build_aux
219 for dot_ig in x $vc_ignore; do
220 test $dot_ig = x && continue
221 insert_sorted_if_absent $dot_ig $build_aux
222 done
225 # Note this deviates from the version comparison in automake
226 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
227 # but this should suffice as we won't be specifying old
228 # version formats or redundant trailing .0 in bootstrap.conf.
229 # If we did want full compatibility then we should probably
230 # use m4_version_compare from autoconf.
231 sort_ver() { #sort -V is not generally available
232 ver1="$1"
233 ver2="$2"
235 #split on '.' and compare each component
237 while : ; do
238 p1=$(echo "$ver1" | cut -d. -f$i)
239 p2=$(echo "$ver2" | cut -d. -f$i)
240 if [ ! "$p1" ]; then
241 echo "$1 $2"
242 break
243 elif [ ! "$p2" ]; then
244 echo "$2 $1"
245 break
246 elif [ ! "$p1" = "$p2" ]; then
247 if [ "$p1" -gt "$p2" ] 2>/dev/null; then #numeric comparision
248 echo "$2 $1"
249 elif [ "$p2" -gt "$p1" ] 2>/dev/null; then #numeric comparision
250 echo "$1 $2"
251 else #numeric, then lexographic comparison
252 lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
253 if [ "$lp" = "$p2" ]; then
254 echo "$1 $2"
255 else
256 echo "$2 $1"
259 break
261 i=$(($i+1))
262 done
265 get_version() {
266 app=$1
268 $app --version >/dev/null 2>&1 || return 1
270 $app --version |
271 sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]\{,\}\).*/\1/p;T;q'
274 check_versions() {
275 ret=0
277 while read app req_ver; do
278 inst_ver=$(get_version $app)
279 if [ ! "$inst_ver" ]; then
280 echo "Error: '$app' not found" >&2
281 ret=1
282 elif [ ! "$req_ver" = "-" ]; then
283 latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
284 if [ ! "$latest_ver" = "$inst_ver" ]; then
285 echo "Error: '$app' version == $inst_ver is too old" >&2
286 echo " '$app' version >= $req_ver is required" >&2
287 ret=1
290 done
292 return $ret
295 print_versions() {
296 echo "Program Min_version"
297 echo "----------------------"
298 printf "$buildreq"
299 echo "----------------------"
300 #can't depend on column -t
303 if ! printf "$buildreq" | check_versions; then
304 test -f README-prereq &&
305 echo "Please see README-prereq for notes on obtaining these prerequisite programs:" >&2
306 echo
307 print_versions
308 exit 1
311 echo "$0: Bootstrapping from checked-out $package sources..."
313 # See if we can use gnulib's git-merge-changelog merge driver.
314 if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
315 if git config merge.merge-changelog.driver >/dev/null ; then
317 elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
318 echo "initializing git-merge-changelog driver"
319 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
320 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
321 else
322 echo "consider installing git-merge-changelog from gnulib"
327 cleanup_gnulib() {
328 status=$?
329 rm -fr gnulib
330 exit $status
333 git_modules_config () {
334 GIT_CONFIG_LOCAL=.gitmodules git config "$@"
337 # Get gnulib files.
339 case ${GNULIB_SRCDIR--} in
341 if git_modules_config submodule.gnulib.url >/dev/null; then
342 echo "$0: getting gnulib files..."
343 git submodule init || exit $?
344 git submodule update || exit $?
346 elif [ ! -d gnulib ]; then
347 echo "$0: getting gnulib files..."
349 trap cleanup_gnulib 1 2 13 15
351 git clone --help|grep depth > /dev/null && depth='--depth 2' || depth=
352 git clone $depth git://git.sv.gnu.org/gnulib ||
353 cleanup_gnulib
355 trap - 1 2 13 15
357 GNULIB_SRCDIR=gnulib
360 # Redirect the gnulib submodule to the directory on the command line
361 # if possible.
362 if test -d "$GNULIB_SRCDIR"/.git && \
363 git_modules_config submodule.gnulib.url >/dev/null; then
364 git submodule init
365 GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
366 git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
367 echo "$0: getting gnulib files..."
368 git submodule update || exit $?
369 GNULIB_SRCDIR=gnulib
372 esac
374 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
375 <$gnulib_tool || exit
377 # Get translations.
379 download_po_files() {
380 subdir=$1
381 domain=$2
382 echo "$0: getting translations into $subdir for $domain..."
383 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
384 eval "$cmd"
387 # Download .po files to $po_dir/.reference and copy only the new
388 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
389 update_po_files() {
390 # Directory containing primary .po files.
391 # Overwrite them only when we're sure a .po file is new.
392 po_dir=$1
393 domain=$2
395 # Download *.po files into this dir.
396 # Usually contains *.s1 checksum files.
397 ref_po_dir="$po_dir/.reference"
399 test -d $ref_po_dir || mkdir $ref_po_dir || return
400 download_po_files $ref_po_dir $domain \
401 && ls "$ref_po_dir"/*.po 2>/dev/null |
402 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
404 langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
405 test "$langs" = '*' && langs=x
406 for po in $langs; do
407 case $po in x) continue;; esac
408 new_po="$ref_po_dir/$po.po"
409 cksum_file="$ref_po_dir/$po.s1"
410 if ! test -f "$cksum_file" ||
411 ! test -f "$po_dir/$po.po" ||
412 ! sha1sum -c --status "$cksum_file" < "$new_po" > /dev/null; then
413 echo "updated $po_dir/$po.po..."
414 cp "$new_po" "$po_dir/$po.po" && sha1sum < "$new_po" > "$cksum_file"
416 done
419 case $SKIP_PO in
421 if test -d po; then
422 update_po_files po $package || exit
425 if test -d runtime-po; then
426 update_po_files runtime-po $package-runtime || exit
427 fi;;
428 esac
430 symlink_to_dir()
432 src=$1/$2
433 dst=${3-$2}
435 test -f "$src" && {
437 # If the destination directory doesn't exist, create it.
438 # This is required at least for "lib/uniwidth/cjk.h".
439 dst_dir=`dirname "$dst"`
440 if ! test -d "$dst_dir"; then
441 mkdir -p "$dst_dir"
443 # If we've just created a directory like lib/uniwidth,
444 # tell version control system(s) it's ignorable.
445 # FIXME: for now, this does only one level
446 parent=`dirname "$dst_dir"`
447 for dot_ig in x $vc_ignore; do
448 test $dot_ig = x && continue
449 ig=$parent/$dot_ig
450 insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
451 done
454 if $copy; then
456 test ! -h "$dst" || {
457 echo "$0: rm -f $dst" &&
458 rm -f "$dst"
460 } &&
461 test -f "$dst" &&
462 cmp -s "$src" "$dst" || {
463 echo "$0: cp -fp $src $dst" &&
464 cp -fp "$src" "$dst"
466 else
467 test -h "$dst" &&
468 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
469 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
470 test "$src_i" = "$dst_i" || {
471 dot_dots=
472 case $src in
473 /*) ;;
475 case /$dst/ in
476 *//* | */../* | */./* | /*/*/*/*/*/)
477 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
478 exit 1;;
479 /*/*/*/*/) dot_dots=../../../;;
480 /*/*/*/) dot_dots=../../;;
481 /*/*/) dot_dots=../;;
482 esac;;
483 esac
485 echo "$0: ln -fs $dot_dots$src $dst" &&
486 ln -fs "$dot_dots$src" "$dst"
492 cp_mark_as_generated()
494 cp_src=$1
495 cp_dst=$2
497 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
498 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
499 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
500 symlink_to_dir $local_gl_dir "$cp_dst"
501 else
502 case $cp_dst in
503 *.[ch]) c1='/* '; c2=' */';;
504 *.texi) c1='@c '; c2= ;;
505 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
506 *) c1= ; c2= ;;
507 esac
509 # If the destination directory doesn't exist, create it.
510 # This is required at least for "lib/uniwidth/cjk.h".
511 dst_dir=`dirname "$cp_dst"`
512 test -d "$dst_dir" || mkdir -p "$dst_dir"
514 if test -z "$c1"; then
515 cmp -s "$cp_src" "$cp_dst" || {
516 # Copy the file first to get proper permissions if it
517 # doesn't already exist. Then overwrite the copy.
518 echo "$0: cp -f $cp_src $cp_dst" &&
519 rm -f "$cp_dst" &&
520 cp "$cp_src" "$cp_dst-t" &&
521 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
522 mv -f "$cp_dst-t" "$cp_dst"
524 else
525 # Copy the file first to get proper permissions if it
526 # doesn't already exist. Then overwrite the copy.
527 cp "$cp_src" "$cp_dst-t" &&
529 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
530 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
531 echo '#line 1' &&
532 sed "s!$bt_regex/!!g" "$cp_src"
533 ) > $cp_dst-t &&
534 if cmp -s "$cp_dst-t" "$cp_dst"; then
535 rm -f "$cp_dst-t"
536 else
537 echo "$0: cp $cp_src $cp_dst # with edits" &&
538 mv -f "$cp_dst-t" "$cp_dst"
544 version_controlled_file() {
545 dir=$1
546 file=$2
547 found=no
548 if test -d CVS; then
549 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
550 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
551 elif test -d .git; then
552 git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
553 elif test -d .svn; then
554 svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
555 else
556 echo "$0: no version control for $dir/$file?" >&2
558 test $found = yes
561 slurp() {
562 for dir in . `(cd $1 && find * -type d -print)`; do
563 copied=
564 sep=
565 for file in `ls -a $1/$dir`; do
566 case $file in
567 .|..) continue;;
568 .*) continue;; # FIXME: should all file names starting with "." be ignored?
569 esac
570 test -d $1/$dir/$file && continue
571 for excluded_file in $excluded_files; do
572 test "$dir/$file" = "$excluded_file" && continue 2
573 done
574 if test $file = Makefile.am; then
575 copied=$copied${sep}$gnulib_mk; sep=$nl
576 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
577 sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || {
578 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
579 rm -f $dir/$gnulib_mk &&
580 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
582 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
583 version_controlled_file $dir $file; then
584 echo "$0: $dir/$file overrides $1/$dir/$file"
585 else
586 copied=$copied$sep$file; sep=$nl
587 if test $file = gettext.m4; then
588 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
589 rm -f $dir/$file
590 sed '
591 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
592 AC_DEFUN([AM_INTL_SUBDIR], [
593 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
594 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
596 AC_DEFUN([gl_LOCK_EARLY], [])
597 ' $1/$dir/$file >$dir/$file
598 else
599 cp_mark_as_generated $1/$dir/$file $dir/$file
601 fi || exit
602 done
604 for dot_ig in x $vc_ignore; do
605 test $dot_ig = x && continue
606 ig=$dir/$dot_ig
607 if test -n "$copied"; then
608 insert_sorted_if_absent $ig "$copied"
609 # If an ignored file name ends with .in.h, then also add
610 # the name with just ".h". Many gnulib headers are generated,
611 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
612 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
613 f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
614 insert_sorted_if_absent $ig "$f"
616 # For files like sys_stat.in.h and sys_time.in.h, record as
617 # ignorable the directory we might eventually create: sys/.
618 f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
619 insert_sorted_if_absent $ig "$f"
621 done
622 done
626 # Create boot temporary directories to import from gnulib and gettext.
627 rm -fr $bt $bt2 &&
628 mkdir $bt $bt2 || exit
630 # Import from gnulib.
632 gnulib_tool_options="\
633 --import\
634 --no-changelog\
635 --aux-dir $bt/$build_aux\
636 --doc-base $bt/$doc_base\
637 --lib $gnulib_name\
638 --m4-base $bt/$m4_base/\
639 --source-base $bt/$source_base/\
640 --tests-base $bt/$tests_base\
641 --local-dir $local_gl_dir\
642 $gnulib_tool_option_extras\
644 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
645 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
646 slurp $bt || exit
648 for file in $gnulib_files; do
649 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
650 done
653 # Import from gettext.
654 with_gettext=yes
655 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
656 with_gettext=no
658 if test $with_gettext = yes; then
659 echo "$0: (cd $bt2; autopoint) ..."
660 cp configure.ac $bt2 &&
661 (cd $bt2 && autopoint && rm configure.ac) &&
662 slurp $bt2 $bt || exit
664 rm -fr $bt $bt2 || exit
666 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
667 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
668 # The following requires GNU find 4.2.3 or newer. Considering the usual
669 # portability constraints of this script, that may seem a very demanding
670 # requirement, but it should be ok. Ignore any failure, which is fine,
671 # since this is only a convenience to help developers avoid the relatively
672 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
673 # between successive runs of this script.
674 find "$m4_base" "$source_base" \
675 -depth \( -name '*.m4' -o -name '*.[ch]' \) \
676 -type l -xtype l -delete > /dev/null 2>&1
678 # Reconfigure, getting other files.
680 for command in \
681 libtool \
682 'aclocal --force -I m4' \
683 'autoconf --force' \
684 'autoheader --force' \
685 'automake --add-missing --copy --force-missing';
687 if test "$command" = libtool; then
688 use_libtool=0
689 # We'd like to use grep -E, to see if any of LT_INIT,
690 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
691 # but that's not portable enough (e.g., for Solaris).
692 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
693 && use_libtool=1
694 grep '^[ ]*LT_INIT' configure.ac >/dev/null \
695 && use_libtool=1
696 test $use_libtool = 0 \
697 && continue
698 command='libtoolize -c -f'
700 echo "$0: $command ..."
701 $command || exit
702 done
705 # Get some extra files from gnulib, overriding existing files.
706 for file in $gnulib_extra_files; do
707 case $file in
708 */INSTALL) dst=INSTALL;;
709 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
710 *) dst=$file;;
711 esac
712 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
713 done
715 if test $with_gettext = yes; then
716 # Create gettext configuration.
717 echo "$0: Creating po/Makevars from po/Makevars.template ..."
718 rm -f po/Makevars
719 sed '
720 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
721 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
722 /^XGETTEXT_OPTIONS *=/{
723 s/$/ \\/
725 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
727 ' po/Makevars.template >po/Makevars
729 if test -d runtime-po; then
730 # Similarly for runtime-po/Makevars, but not quite the same.
731 rm -f runtime-po/Makevars
732 sed '
733 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
734 /^subdir *=.*/s/=.*/= runtime-po/
735 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
736 /^XGETTEXT_OPTIONS *=/{
737 s/$/ \\/
739 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
741 ' <po/Makevars.template >runtime-po/Makevars
743 # Copy identical files from po to runtime-po.
744 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
748 # Horrible, coreutils-specific kludges.
749 # Change paths in gnulib-tests/gnulib.mk from "../.." to "..".
750 m=gnulib-tests/gnulib.mk
751 sed 's,\.\./\.\.,..,g' $m > $m-t
752 mv -f $m-t $m
754 echo "$0: done. Now you can run './configure'."