3 # Bootstrap this package from checked-out sources.
5 # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
6 # Software Foundation, Inc.
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 # Written by Paul Eggert.
26 # Ensure file names are sorted consistently across platforms.
27 # Also, ensure diagnostics are in English, e.g., "wget --help" below.
33 # Temporary directory names.
35 bt_regex
=`echo "$bt"| sed 's/\./[.]/g'`
41 Bootstrap this package from the checked-out sources.
44 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
45 sources reside. Use this if you already
46 have gnulib sources on your machine, and
47 do not want to waste your bandwidth downloading
49 --copy Copy files instead of creating symbolic links.
50 --force Attempt to bootstrap even if the sources seem
51 not to have been checked out.
52 --skip-po Do not download po files.
54 If the file $0.conf exists in the same directory as this script, its
55 contents are read as shell variables to configure the bootstrap.
57 For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
60 Running without arguments will suffice in most cases.
66 # Name of the Makefile.am
69 # List of gnulib modules needed.
72 # Any gnulib files needed that are not in modules.
75 # A function to be called after everything else in this script.
76 # Override it via your own definition in bootstrap.conf.
77 bootstrap_epilogue
() { :; }
79 # The command to download all .po files for a specified domain into
80 # a specified directory. Fill in the first %s is the domain name, and
81 # the second with the destination directory. Use rsync's -L and -r
82 # options because the latest/%s directory and the .po files within are
84 po_download_command_format
=\
85 "rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
87 extract_package_name
='
99 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
104 package
=`sed -n "$extract_package_name" configure.ac` || exit
105 gnulib_name
=lib
$package
113 # Extra files from gnulib, which override files from other sources.
115 $build_aux/install-sh
118 $build_aux/texinfo.tex
120 $build_aux/config.guess
121 $build_aux/config.sub
125 # Additional gnulib-tool options to use. Use "\newline" to break lines.
126 gnulib_tool_option_extras
=
128 # Other locale categories that need message catalogs.
129 EXTRA_LOCALE_CATEGORIES
=
131 # Additional xgettext options to use. Use "\\\newline" to break lines.
132 XGETTEXT_OPTIONS
='\\\
133 --flag=_:1:pass-c-format\\\
134 --flag=N_:1:pass-c-format\\\
135 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
138 # Package bug report address for gettext files
139 MSGID_BUGS_ADDRESS
=bug
-$package@gnu.org
141 # Files we don't want to import.
144 # File that should exist in the top directory of a checked out hierarchy,
145 # but not in a distribution tarball.
146 checkout_only_file
=HACKING
148 # Whether to use copies instead of symlinks.
151 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
152 # those files to be generated in directories like lib/, m4/, and po/.
153 # Or set it to 'auto' to make this script select which to use based
154 # on which version control system (if any) is used in the source directory.
157 # find_tool ENVVAR NAMES...
158 # -------------------------
159 # Search for a required program. Use the value of ENVVAR, if set,
160 # otherwise find the first of the NAMES that can be run (i.e.,
161 # supports --version). If found, set ENVVAR to the program name,
165 # Find sha1sum, named gsha1sum on MacPorts.
169 eval "find_tool_res=\$$find_tool_envvar"
170 if test x
"$find_tool_res" = x
; then
173 if ($i --version </dev
/null
) >/dev
/null
2>&1; then
179 find_tool_error_prefix
="\$$find_tool_envvar: "
181 if test x
"$find_tool_res" = x
; then
182 echo >&2 "$0: one of these is required: $find_tool_names"
185 ($find_tool_res --version </dev
/null
) >/dev
/null
2>&1 || {
186 echo >&2 "$0: ${find_tool_error_prefix}cannot run $find_tool_res --version"
189 eval "$find_tool_envvar=\$find_tool_res"
190 eval "export $find_tool_envvar"
193 # Find sha1sum, named gsha1sum on MacPorts.
194 find_tool SHA1SUM
sha1sum gsha1sum
196 # Override the default configuration, if necessary.
197 # Make sure that bootstrap.conf is sourced from the current directory
198 # if we were invoked as "sh bootstrap".
200 */*) test -r "$0.conf" && .
"$0.conf" ;;
201 *) test -r "$0.conf" && . .
/"$0.conf" ;;
205 if test "$vc_ignore" = auto
; then
207 test -d .git
&& vc_ignore
=.gitignore
208 test -d CVS
&& vc_ignore
="$vc_ignore .cvsignore"
211 # Translate configuration into internal form.
222 GNULIB_SRCDIR
=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
226 checkout_only_file
=;;
230 echo >&2 "$0: $option: unknown option"
235 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
236 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
240 # If $STR is not already on a line by itself in $FILE, insert it,
241 # sorting the new contents of the file and replacing $FILE with the result.
242 insert_sorted_if_absent
() {
245 test -f $file || touch $file
246 echo "$str" | sort -u - $file | cmp - $file > /dev
/null \
247 || echo "$str" | sort -u - $file -o $file \
251 # Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
252 # insert_sorted_if_absent.
255 case $vc_ignore_file in
257 # A .gitignore entry that does not start with `/' applies recursively to
258 # subdirectories, so prepend `/' to every .gitignore entry.
259 pattern
=`echo "$2" | sed s,^,/,`;;
263 insert_sorted_if_absent
"$vc_ignore_file" "$pattern"
266 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
268 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
269 >/dev
/null
&& found_aux_dir
=yes
270 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
271 >/dev
/null
&& found_aux_dir
=yes
272 if test $found_aux_dir = no
; then
273 echo "$0: expected line not found in configure.ac. Add the following:" >&2
274 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
278 # If $build_aux doesn't exist, create it now, otherwise some bits
279 # below will malfunction. If creating it, also mark it as ignored.
280 if test ! -d $build_aux; then
282 for dot_ig
in x
$vc_ignore; do
283 test $dot_ig = x
&& continue
284 insert_vc_ignore
$dot_ig $build_aux
288 # Note this deviates from the version comparison in automake
289 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
290 # but this should suffice as we won't be specifying old
291 # version formats or redundant trailing .0 in bootstrap.conf.
292 # If we did want full compatibility then we should probably
293 # use m4_version_compare from autoconf.
294 sort_ver
() { # sort -V is not generally available
298 # split on '.' and compare each component
301 p1
=$(echo "$ver1" | cut -d. -f$i)
302 p2
=$(echo "$ver2" | cut -d. -f$i)
306 elif [ ! "$p2" ]; then
309 elif [ ! "$p1" = "$p2" ]; then
310 if [ "$p1" -gt "$p2" ] 2>/dev
/null
; then # numeric comparison
312 elif [ "$p2" -gt "$p1" ] 2>/dev
/null
; then # numeric comparison
314 else # numeric, then lexicographic comparison
315 lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
316 if [ "$lp" = "$p2" ]; then
331 $app --version >/dev
/null
2>&1 || return 1
333 $app --version 2>&1 |
334 sed -n '# extract version within line
335 s/.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
338 # extract version at start of line
339 s/^\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
345 #the following essentially does s/5.005/5.5/
346 s/\.0*\([1-9]\)/.\1/g
354 while read app req_ver
; do
355 # Honor $APP variables ($TAR, $AUTOCONF, etc.)
356 appvar
=`echo $app | tr '[a-z]' '[A-Z]'`
357 test "$appvar" = TAR
&& appvar
=AMTAR
358 eval "app=\${$appvar-$app}"
359 inst_ver
=$(get_version $app)
360 if [ ! "$inst_ver" ]; then
361 echo "Error: '$app' not found" >&2
363 elif [ ! "$req_ver" = "-" ]; then
364 latest_ver
=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
365 if [ ! "$latest_ver" = "$inst_ver" ]; then
366 echo "Error: '$app' version == $inst_ver is too old" >&2
367 echo " '$app' version >= $req_ver is required" >&2
377 echo "Program Min_version"
378 echo "----------------------"
380 echo "----------------------"
381 # can't depend on column -t
384 if ! printf "$buildreq" | check_versions
; then
385 test -f README
-prereq &&
386 echo "See README-prereq for notes on obtaining these prerequisite programs:" >&2
392 echo "$0: Bootstrapping from checked-out $package sources..."
394 # See if we can use gnulib's git-merge-changelog merge driver.
395 if test -d .git
&& (git
--version) >/dev
/null
2>/dev
/null
; then
396 if git config merge.merge
-changelog.driver
>/dev
/null
; then
398 elif (git
-merge-changelog --version) >/dev
/null
2>/dev
/null
; then
399 echo "initializing git-merge-changelog driver"
400 git config merge.merge
-changelog.name
'GNU-style ChangeLog merge driver'
401 git config merge.merge
-changelog.driver
'git-merge-changelog %O %A %B'
403 echo "consider installing git-merge-changelog from gnulib"
414 git_modules_config
() {
415 test -f .gitmodules
&& git config
--file .gitmodules
"$@"
420 case ${GNULIB_SRCDIR--} in
422 if git_modules_config submodule.gnulib.url
>/dev
/null
; then
423 echo "$0: getting gnulib files..."
424 git submodule init
|| exit $?
425 git submodule update
|| exit $?
427 elif [ ! -d gnulib
]; then
428 echo "$0: getting gnulib files..."
430 trap cleanup_gnulib
1 2 13 15
432 git clone
--help|grep depth
> /dev
/null
&& shallow
='--depth 2' || shallow
=
433 git clone
$shallow git
://git.sv.gnu.org
/gnulib
||
441 # Redirect the gnulib submodule to the directory on the command line
443 if test -d "$GNULIB_SRCDIR"/.git
&& \
444 git_modules_config submodule.gnulib.url
>/dev
/null
; then
446 GNULIB_SRCDIR
=`cd $GNULIB_SRCDIR && pwd`
447 git_modules_config
--replace-all submodule.gnulib.url
$GNULIB_SRCDIR
448 echo "$0: getting gnulib files..."
449 git submodule update
|| exit $?
455 gnulib_tool
=$GNULIB_SRCDIR/gnulib
-tool
456 <$gnulib_tool || exit
460 download_po_files
() {
463 echo "$0: getting translations into $subdir for $domain..."
464 cmd
=`printf "$po_download_command_format" "$domain" "$subdir"`
468 # Download .po files to $po_dir/.reference and copy only the new
469 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
471 # Directory containing primary .po files.
472 # Overwrite them only when we're sure a .po file is new.
476 # Download *.po files into this dir.
477 # Usually contains *.s1 checksum files.
478 ref_po_dir
="$po_dir/.reference"
480 test -d $ref_po_dir || mkdir $ref_po_dir || return
481 download_po_files
$ref_po_dir $domain \
482 && ls "$ref_po_dir"/*.po
2>/dev
/null
|
483 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
485 langs
=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
486 test "$langs" = '*' && langs
=x
488 case $po in x
) continue;; esac
489 new_po
="$ref_po_dir/$po.po"
490 cksum_file
="$ref_po_dir/$po.s1"
491 if ! test -f "$cksum_file" ||
492 ! test -f "$po_dir/$po.po" ||
493 ! $SHA1SUM -c --status "$cksum_file" \
494 < "$new_po" > /dev
/null
; then
495 echo "updated $po_dir/$po.po..."
496 cp "$new_po" "$po_dir/$po.po" \
497 && $SHA1SUM < "$new_po" > "$cksum_file"
505 update_po_files po
$package || exit
508 if test -d runtime
-po; then
509 update_po_files runtime
-po $package-runtime || exit
516 # If the destination directory doesn't exist, create it.
517 # This is required at least for "lib/uniwidth/cjk.h".
518 dst_dir
=`dirname "$dst"`
519 if ! test -d "$dst_dir"; then
522 # If we've just created a directory like lib/uniwidth,
523 # tell version control system(s) it's ignorable.
524 # FIXME: for now, this does only one level
525 parent
=`dirname "$dst_dir"`
526 for dot_ig
in x
$vc_ignore; do
527 test $dot_ig = x
&& continue
529 insert_vc_ignore
$ig `echo "$dst_dir"|sed 's,.*/,,'`
545 test ! -h "$dst" || {
546 echo "$0: rm -f $dst" &&
551 cmp -s "$src" "$dst" || {
552 echo "$0: cp -fp $src $dst" &&
557 src_ls
=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i
=$1 &&
558 dst_ls
=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i
=$1 &&
559 test "$src_i" = "$dst_i" || {
565 *//* | */..
/* | */.
/* | /*/*/*/*/*/)
566 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
568 /*/*/*/*/) dot_dots
=..
/..
/..
/;;
569 /*/*/*/) dot_dots
=..
/..
/;;
570 /*/*/) dot_dots
=..
/;;
574 echo "$0: ln -fs $dot_dots$src $dst" &&
575 ln -fs "$dot_dots$src" "$dst"
581 cp_mark_as_generated
()
586 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
587 symlink_to_dir
"$GNULIB_SRCDIR" "$cp_dst"
588 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
589 symlink_to_dir
$local_gl_dir "$cp_dst"
592 *.
[ch
]) c1
='/* '; c2
=' */';;
593 *.texi
) c1
='@c '; c2
= ;;
594 *.
m4|*/Make
*|Make
*) c1
='# ' ; c2
= ;;
598 if test -z "$c1"; then
599 cmp -s "$cp_src" "$cp_dst" || {
600 # Copy the file first to get proper permissions if it
601 # doesn't already exist. Then overwrite the copy.
602 echo "$0: cp -f $cp_src $cp_dst" &&
604 cp "$cp_src" "$cp_dst-t" &&
605 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
606 mv -f "$cp_dst-t" "$cp_dst"
609 check_dst_dir
"$cp_dst"
610 # Copy the file first to get proper permissions if it
611 # doesn't already exist. Then overwrite the copy.
612 cp "$cp_src" "$cp_dst-t" &&
614 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
615 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
616 sed "s!$bt_regex/!!g" "$cp_src"
618 if cmp -s "$cp_dst-t" "$cp_dst"; then
621 echo "$0: cp $cp_src $cp_dst # with edits" &&
622 mv -f "$cp_dst-t" "$cp_dst"
628 version_controlled_file
() {
633 grep -F "/$file/" $dir/CVS
/Entries
2>/dev
/null
|
634 grep '^/[^/]*/[0-9]' > /dev
/null
&& found
=yes
635 elif test -d .git
; then
636 git
rm -n "$dir/$file" > /dev
/null
2>&1 && found
=yes
637 elif test -d .svn
; then
638 svn log
-r HEAD
"$dir/$file" > /dev
/null
2>&1 && found
=yes
640 echo "$0: no version control for $dir/$file?" >&2
646 for dir
in .
`(cd $1 && find * -type d -print)`; do
649 for file in `ls -a $1/$dir`; do
652 .
*) continue;; # FIXME: should all file names starting with "." be ignored?
654 test -d $1/$dir/$file && continue
655 for excluded_file
in $excluded_files; do
656 test "$dir/$file" = "$excluded_file" && continue 2
658 if test $file = Makefile.am
; then
659 copied
=$copied${sep}$gnulib_mk; sep
=$nl
660 remove_intl
='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
661 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..."
662 rm -f $dir/$gnulib_mk
663 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
664 etc
/prefix
-gnulib-mk $dir/$gnulib_mk
665 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
666 version_controlled_file
$dir $file; then
667 echo "$0: $dir/$file overrides $1/$dir/$file"
669 copied
=$copied$sep$file; sep
=$nl
670 if test $file = gettext.
m4; then
671 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
674 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
675 AC_DEFUN([AM_INTL_SUBDIR], [
676 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
677 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
679 AC_DEFUN([gl_LOCK_EARLY], [])
680 ' $1/$dir/$file >$dir/$file
682 cp_mark_as_generated
$1/$dir/$file $dir/$file
687 for dot_ig
in x
$vc_ignore; do
688 test $dot_ig = x
&& continue
690 if test -n "$copied"; then
691 insert_vc_ignore
$ig "$copied"
692 # If an ignored file name ends with .in.h, then also add
693 # the name with just ".h". Many gnulib headers are generated,
694 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
695 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
696 f
=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
697 insert_vc_ignore
$ig "$f"
699 # For files like sys_stat.in.h and sys_time.in.h, record as
700 # ignorable the directory we might eventually create: sys/.
701 f
=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
702 insert_vc_ignore
$ig "$f"
709 # Create boot temporary directories to import from gnulib and gettext.
711 mkdir $bt $bt2 || exit
713 # Import from gnulib.
715 gnulib_tool_options
="\
718 --aux-dir $bt/$build_aux\
719 --doc-base $bt/$doc_base\
721 --m4-base $bt/$m4_base/\
722 --source-base $bt/$source_base/\
723 --tests-base $bt/$tests_base\
724 --local-dir $local_gl_dir\
725 $gnulib_tool_option_extras\
727 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
728 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
731 for file in $gnulib_files; do
732 symlink_to_dir
"$GNULIB_SRCDIR" $file || exit
736 # Import from gettext.
738 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac
>/dev
/null
|| \
741 if test $with_gettext = yes; then
742 echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
743 cp configure.ac
$bt2 &&
744 (cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac
) &&
745 slurp
$bt2 $bt || exit
747 rm -fr $bt $bt2 || exit
749 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
750 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
751 # The following requires GNU find 4.2.3 or newer. Considering the usual
752 # portability constraints of this script, that may seem a very demanding
753 # requirement, but it should be ok. Ignore any failure, which is fine,
754 # since this is only a convenience to help developers avoid the relatively
755 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
756 # between successive runs of this script.
757 find "$m4_base" "$source_base" \
758 -depth \
( -name '*.m4' -o -name '*.[ch]' \
) \
759 -type l
-xtype l
-delete > /dev
/null
2>&1
761 # Reconfigure, getting other files.
763 # Skip autoheader if it's not needed.
764 grep -E '^[ ]*AC_CONFIG_HEADERS?\>' configure.ac
>/dev
/null
||
769 "${ACLOCAL-aclocal} --force -I m4" \
770 "${AUTOCONF-autoconf} --force" \
771 "${AUTOHEADER-autoheader} --force" \
772 "${AUTOMAKE-automake} --add-missing --copy --force-missing"
774 if test "$command" = libtool
; then
776 # We'd like to use grep -E, to see if any of LT_INIT,
777 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
778 # but that's not portable enough (e.g., for Solaris).
779 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac
>/dev
/null \
781 grep '^[ ]*LT_INIT' configure.ac
>/dev
/null \
783 test $use_libtool = 0 \
785 command="${LIBTOOLIZE-libtoolize} -c -f"
787 echo "$0: $command ..."
792 # Get some extra files from gnulib, overriding existing files.
793 for file in $gnulib_extra_files; do
795 */INSTALL
) dst
=INSTALL
;;
796 build
-aux/*) dst
=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
799 symlink_to_dir
"$GNULIB_SRCDIR" $file $dst || exit
802 if test $with_gettext = yes; then
803 # Create gettext configuration.
804 echo "$0: Creating po/Makevars from po/Makevars.template ..."
807 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
808 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
809 /^XGETTEXT_OPTIONS *=/{
812 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
814 ' po
/Makevars.template
>po
/Makevars
816 if test -d runtime
-po; then
817 # Similarly for runtime-po/Makevars, but not quite the same.
818 rm -f runtime
-po/Makevars
820 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
821 /^subdir *=.*/s/=.*/= runtime-po/
822 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
823 /^XGETTEXT_OPTIONS *=/{
826 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
828 ' <po
/Makevars.template
>runtime
-po/Makevars
830 # Copy identical files from po to runtime-po.
831 (cd po
&& cp -p Makefile.
in.
in *-quot *.header
*.
sed *.sin ..
/runtime
-po)
837 echo "$0: done. Now you can run './configure'."
840 # indent-tabs-mode: nil