bootstrap 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  1. #! /bin/sh
  2. # Bootstrap this package from CVS.
  3. # Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation; either version 3, or (at your option)
  7. # any later version.
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. # You should have received a copy of the GNU General Public License
  13. # along with this program; if not, write to the Free Software
  14. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  15. # 02110-1301, USA.
  16. # Written by Paul Eggert and Sergey Poznyakoff.
  17. nl='
  18. '
  19. # Ensure file names are sorted consistently across platforms.
  20. # Also, ensure diagnostics are in English, e.g., "wget --help" below.
  21. LC_ALL=C
  22. export LC_ALL
  23. usage() {
  24. echo >&2 "\
  25. Usage: $0 [OPTION]...
  26. Bootstrap this package from the checked-out sources.
  27. Options:
  28. --paxutils-srcdir=DIRNAME Specify the local directory where paxutils
  29. sources reside. Use this if you already
  30. have paxutils sources on your machine, and
  31. do not want to waste your bandwidth dowloading
  32. them again.
  33. --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
  34. sources reside. Use this if you already
  35. have gnulib sources on your machine, and
  36. do not want to waste your bandwidth dowloading
  37. them again.
  38. --copy Copy files instead of creating symbolic links.
  39. --force Attempt to bootstrap even if the sources seem
  40. not to have been checked out.
  41. --skip-po Do not download po files.
  42. --update-po[=LANG] Update po file(s) and exit.
  43. --cvs-user=USERNAME Set the CVS username to be used when accessing
  44. the gnulib repository.
  45. If the file bootstrap.conf exists in the current working directory, its
  46. contents are read as shell variables to configure the bootstrap.
  47. Local defaults can be provided by placing the file \`.bootstrap' in the
  48. current working directory. The file is read after bootstrap.conf, comments
  49. and empty lines are removed, shell variables expanded and the result is
  50. prepended to the command line options.
  51. Running without arguments will suffice in most cases.
  52. "
  53. }
  54. checkout() {
  55. if [ ! -d $1 ]; then
  56. echo "$0: getting $1 files..."
  57. case ${CVS_AUTH-pserver} in
  58. pserver)
  59. CVS_PREFIX=':pserver:anonymous@';;
  60. ssh)
  61. CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
  62. *)
  63. echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
  64. exit 1;;
  65. esac
  66. case $CVS_RSH in
  67. '') CVS_RSH=ssh; export CVS_RSH;;
  68. esac
  69. trap "cleanup $1" 1 2 13 15
  70. cvs -z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/"$1" co $1 ||
  71. cleanup $1
  72. trap - 1 2 13 15
  73. fi
  74. }
  75. cleanup() {
  76. status=$?
  77. rm -fr $1
  78. exit $status
  79. }
  80. # Configuration.
  81. # List of gnulib modules needed.
  82. gnulib_modules=
  83. # Any gnulib files needed that are not in modules.
  84. gnulib_files=
  85. # Translation Project URL, for the registry of all projects
  86. # and for the translation-team master directory.
  87. tp_url() {
  88. echo "http://translationproject.org/domain/$1.html"
  89. }
  90. extract_package_name='
  91. /^AC_INIT(/{
  92. /.*,.*,.*,/{
  93. s///
  94. s/[][]//g
  95. p
  96. q
  97. }
  98. s/AC_INIT(\[*//
  99. s/]*,.*//
  100. s/^GNU //
  101. y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
  102. s/[^A-Za-z0-9_]/-/g
  103. p
  104. }
  105. '
  106. package=`sed -n "$extract_package_name" configure.ac` || exit
  107. # Extra files from gnulib, which override files from other sources.
  108. gnulib_extra_files='
  109. build-aux/announce-gen
  110. build-aux/install-sh
  111. build-aux/missing
  112. build-aux/mdate-sh
  113. build-aux/texinfo.tex
  114. build-aux/depcomp
  115. build-aux/config.guess
  116. build-aux/config.sub
  117. doc/INSTALL
  118. '
  119. # Other locale categories that need message catalogs.
  120. EXTRA_LOCALE_CATEGORIES=
  121. # Additional xgettext options to use. Use "\\\newline" to break lines.
  122. XGETTEXT_OPTIONS='\\\
  123. --flag=_:1:pass-c-format\\\
  124. --flag=N_:1:pass-c-format\\\
  125. --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
  126. '
  127. # Files we don't want to import.
  128. excluded_files=
  129. # File that should exist in the top directory of a checked out hierarchy,
  130. # but not in a distribution tarball.
  131. CVS_only_file=README-cvs
  132. # Whether to use copies instead of symlinks.
  133. copy=false
  134. # Override the default configuration, if necessary.
  135. test -r bootstrap.conf && . ./bootstrap.conf
  136. # Read local configuration file
  137. if [ -r .bootstrap ]; then
  138. echo "$0: Reading configuration file .bootstrap"
  139. eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
  140. fi
  141. # Translate configuration into internal form.
  142. # Parse options.
  143. for option
  144. do
  145. case $option in
  146. --help)
  147. usage
  148. exit;;
  149. --paxutils-srcdir=*)
  150. PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
  151. --gnulib-srcdir=*)
  152. GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
  153. --cvs-user=*)
  154. CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
  155. --skip-po | --no-po) # --no-po is for compatibility with 'tar' tradition.
  156. DOWNLOAD_PO=skip;;
  157. --update-po=*)
  158. DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;
  159. --update-po)
  160. DOWNLOAD_PO=only;;
  161. --force)
  162. CVS_only_file=;;
  163. --copy)
  164. copy=true;;
  165. *)
  166. echo >&2 "$0: $option: unknown option"
  167. exit 1;;
  168. esac
  169. done
  170. if test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then
  171. echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
  172. exit 1
  173. fi
  174. echo "$0: Bootstrapping CVS $package..."
  175. # Get translations.
  176. get_translations() {
  177. subdir=$1
  178. domain=$2
  179. po_file=$3
  180. case $WGET_COMMAND in
  181. '')
  182. echo "$0: wget not available; skipping translations";;
  183. ?*)
  184. url=`tp_url $domain`
  185. baseurl=`expr "$url" : '\(.*\)/.*'`
  186. echo "$0: getting translations into $subdir for $domain..." &&
  187. case $po_file in
  188. '') (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`);;
  189. esac &&
  190. $WGET_COMMAND -O "$subdir/$domain.html" "$url" &&
  191. sed -n 's|.*href="\(.*\)/\([^/][^/]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\2:\3:\1|p' <"$subdir/$domain.html" |
  192. sort -t: -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |
  193. awk -F: '
  194. { if (lang && $1 != lang) print lang, ver, $3 }
  195. { lang = $1; ver = $2 }
  196. END { if (lang) print lang, ver, $3 }
  197. ' | awk -v domain="$domain" -v baseurl="$baseurl" -v subdir="$subdir" \
  198. -v po_file="$po_file" '
  199. {
  200. lang = $1
  201. if (po_file && po_file != (lang ".po")) next
  202. ver = $2
  203. printf "{ $WGET_COMMAND -O %s/%s.po %s/%s/%s/%s-%s.%s.po &&\n", subdir, lang, baseurl, $3, lang, domain, ver, lang
  204. printf " msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang
  205. printf " echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang
  206. printf " rm -f %s/%s.po; }; } &&\n", subdir, lang
  207. }
  208. END { print ":" }
  209. ' | WGET_COMMAND="$WGET_COMMAND" sh
  210. ;;
  211. esac &&
  212. ls "$subdir"/*.po 2>/dev/null |
  213. sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
  214. rm -f "$subdir/$domain.html"
  215. }
  216. case `wget --help` in
  217. *'--no-cache'*)
  218. WGET_COMMAND='wget -nv --no-cache';;
  219. *'--cache=on/off'*)
  220. WGET_COMMAND='wget -nv --cache=off';;
  221. *'--non-verbose'*)
  222. WGET_COMMAND='wget -nv';;
  223. *)
  224. WGET_COMMAND='';;
  225. esac
  226. case $DOWNLOAD_PO in
  227. 'skip')
  228. ;;
  229. '')
  230. get_translations po $package || exit
  231. ;;
  232. 'only')
  233. get_translations po $package
  234. exit
  235. ;;
  236. *.po)
  237. get_translations po $package "$DOWNLOAD_PO"
  238. exit
  239. ;;
  240. *)
  241. get_translations po $package "${DOWNLOAD_PO}.po"
  242. exit
  243. esac
  244. # Get paxutils files.
  245. case ${PAXUTILS_SRCDIR--} in
  246. -) checkout paxutils
  247. PAXUTILS_SRCDIR=paxutils
  248. esac
  249. if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then
  250. gnulib_modules=`
  251. (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) |
  252. sort -u
  253. `
  254. fi
  255. ignore_file_list=
  256. cleanup_ifl() {
  257. test -n "$ignore_file_list" && rm -f $ignore_file_list
  258. }
  259. trap 'cleanup_ifl' 1 2 3 15
  260. # ignorefile DIR FILE
  261. # add FILE to the temporary ignorelist in the directory DIR
  262. ignorefile() {
  263. file=$1/.ignore.$$
  264. echo "$2" >> $file
  265. if `echo $ignore_list | grep -qv $file`; then
  266. ignore_file_list="$ignore_file_list
  267. $file"
  268. fi
  269. }
  270. # copy_files srcdir dstdir
  271. copy_files() {
  272. for file in `cat $1/DISTFILES`
  273. do
  274. case $file in
  275. "#*") continue;;
  276. esac
  277. dst=`echo $file | sed 's^.*/^^'`
  278. if [ $# -eq 3 ]; then
  279. case $dst in
  280. ${3}*) ;;
  281. *) dst=${3}$dst;;
  282. esac
  283. fi
  284. echo "$0: Copying file $1/$file to $2/$dst"
  285. cp -p $1/$file $2/$dst
  286. ignorefile $2 $dst
  287. done
  288. }
  289. copy_files ${PAXUTILS_SRCDIR}/m4 m4
  290. echo "$0: Creating m4/paxutils.m4"
  291. (echo "# This file is generated automatically. Please, do not edit."
  292. echo "#"
  293. echo "AC_DEFUN([${package}_PAXUTILS],["
  294. cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
  295. echo "])") > ./m4/paxutils.m4
  296. ignorefile m4 paxutils.m4
  297. if [ -d rmt ]; then
  298. :
  299. else
  300. mkdir rmt
  301. fi
  302. for dir in doc rmt lib tests
  303. do
  304. copy_files ${PAXUTILS_SRCDIR}/$dir $dir
  305. done
  306. copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax
  307. # Get gnulib files.
  308. case ${GNULIB_SRCDIR--} in
  309. -)
  310. checkout gnulib
  311. GNULIB_SRCDIR=gnulib
  312. esac
  313. gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
  314. <$gnulib_tool || exit
  315. symlink_to_gnulib()
  316. {
  317. src=$GNULIB_SRCDIR/$1
  318. dst=${2-$1}
  319. test -f "$src" && {
  320. if $copy; then
  321. {
  322. test ! -h "$dst" || {
  323. echo "$0: rm -f $dst" &&
  324. rm -f "$dst"
  325. }
  326. } &&
  327. test -f "$dst" &&
  328. cmp -s "$src" "$dst" || {
  329. echo "$0: cp -fp $src $dst" &&
  330. cp -fp "$src" "$dst"
  331. }
  332. else
  333. test -h "$dst" &&
  334. src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
  335. dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
  336. test "$src_i" = "$dst_i" || {
  337. dot_dots=
  338. case $src in
  339. /*) ;;
  340. *)
  341. case /$dst/ in
  342. *//* | */../* | */./* | /*/*/*/*/*/)
  343. echo >&2 "$0: invalid symlink calculation: $src -> $dst"
  344. exit 1;;
  345. /*/*/*/*/) dot_dots=../../../;;
  346. /*/*/*/) dot_dots=../../;;
  347. /*/*/) dot_dots=../;;
  348. esac;;
  349. esac
  350. echo "$0: ln -fs $dot_dots$src $dst" &&
  351. ln -fs "$dot_dots$src" "$dst"
  352. }
  353. fi
  354. }
  355. }
  356. cp_mark_as_generated()
  357. {
  358. cp_src=$1
  359. cp_dst=$2
  360. if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
  361. symlink_to_gnulib "$cp_dst"
  362. else
  363. case $cp_dst in
  364. *.[ch]) c1='/* '; c2=' */';;
  365. *.texi) c1='@c '; c2= ;;
  366. *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
  367. *) c1= ; c2= ;;
  368. esac
  369. if test -z "$c1"; then
  370. cmp -s "$cp_src" "$cp_dst" || {
  371. echo "$0: cp -f $cp_src $cp_dst" &&
  372. cp -f "$cp_src" "$cp_dst"
  373. }
  374. else
  375. # Copy the file first to get proper permissions if it
  376. # doesn't already exist. Then overwrite the copy.
  377. cp "$cp_src" "$cp_dst-t" &&
  378. (
  379. echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
  380. echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
  381. cat "$cp_src"
  382. ) > $cp_dst-t &&
  383. if cmp -s "$cp_dst-t" "$cp_dst"; then
  384. rm -f "$cp_dst-t"
  385. else
  386. echo "$0: cp $cp_src $cp_dst # with edits" &&
  387. mv -f "$cp_dst-t" "$cp_dst"
  388. fi
  389. fi
  390. fi
  391. }
  392. version_controlled_file() {
  393. dir=$1
  394. file=$2
  395. found=no
  396. if test -d CVS; then
  397. grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
  398. grep '^/[^/]*/[0-9]' > /dev/null && found=yes
  399. elif test -d .git; then
  400. git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
  401. else
  402. echo "$0: no version control for $dir/$file?" >&2
  403. fi
  404. test $found = yes
  405. }
  406. slurp() {
  407. for dir in . `(cd $1 && find * -type d -print)`; do
  408. copied=
  409. sep=
  410. for file in `ls $1/$dir`; do
  411. test -d $1/$dir/$file && continue
  412. for excluded_file in $excluded_files; do
  413. test "$dir/$file" = "$excluded_file" && continue 2
  414. done
  415. if test $file = Makefile.am; then
  416. copied=$copied${sep}gnulib.mk; sep=$nl
  417. remove_intl='/^[^#].*\/intl/s/^/#/;'"s,/$bt,,g"
  418. sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || {
  419. echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
  420. rm -f $dir/gnulib.mk &&
  421. sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk
  422. }
  423. elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
  424. version_controlled_file $dir $file; then
  425. echo "$0: $dir/$file overrides $1/$dir/$file"
  426. else
  427. copied=$copied$sep$file; sep=$nl
  428. if test $file = gettext.m4; then
  429. echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
  430. rm -f $dir/$file
  431. sed '
  432. /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
  433. AC_DEFUN([AM_INTL_SUBDIR], [
  434. /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
  435. AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
  436. $a\
  437. AC_DEFUN([gl_LOCK_EARLY], [])
  438. ' $1/$dir/$file >$dir/$file
  439. else
  440. cp_mark_as_generated $1/$dir/$file $dir/$file
  441. fi
  442. fi || exit
  443. done
  444. if test -n "$copied"; then
  445. copied="Makefile
  446. Makefile.in
  447. $copied"
  448. if test -d CVS; then
  449. dot_ig=.cvsignore
  450. else
  451. dor_ig=.gitignore
  452. fi
  453. ig=$dir/$dot_ig
  454. if [ -f $dir/.ignore.$$ ]; then
  455. tfile=$dir/.ignore.$$
  456. else
  457. tfile=
  458. fi
  459. if test -f $ig; then
  460. echo "$copied" | sort -u - $ig | cmp -s - $ig ||
  461. echo "$copied" | sort -u - $ig $tfile -o $ig
  462. else
  463. copied="$dot_ig
  464. $copied"
  465. if [ "$dir" = "po" ]; then
  466. copied="LINGUAS
  467. Makevars
  468. POTFILES
  469. *.mo
  470. *.gmo
  471. *.po
  472. remove-potcdate.sed
  473. stamp-po
  474. $package.pot
  475. $copied"
  476. fi
  477. echo "$copied" | sort -u - $tfile -o $ig
  478. fi || exit
  479. fi
  480. done
  481. }
  482. # Create boot temporary directories to import from gnulib and gettext.
  483. bt='.#bootmp'
  484. bt2=${bt}2
  485. rm -fr $bt $bt2 &&
  486. mkdir $bt $bt2 || exit
  487. # Import from gnulib.
  488. test -d build-aux || {
  489. echo "$0: mkdir build-aux ..." &&
  490. mkdir build-aux
  491. } || exit
  492. gnulib_tool_options="\
  493. --import\
  494. --no-changelog\
  495. --aux-dir $bt/build-aux\
  496. --doc-base $bt/doc\
  497. --lib lib$package\
  498. --m4-base $bt/m4/\
  499. --source-base $bt/lib/\
  500. --tests-base $bt/tests\
  501. --local-dir gl\
  502. "
  503. echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
  504. $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
  505. slurp $bt || exit
  506. for file in $gnulib_files; do
  507. symlink_to_gnulib $file || exit
  508. done
  509. # Import from gettext.
  510. echo "$0: (cd $bt2; autopoint) ..."
  511. cp configure.ac $bt2 &&
  512. (cd $bt2 && autopoint && rm configure.ac) &&
  513. slurp $bt2 $bt || exit
  514. rm -fr $bt $bt2 || exit
  515. # Reconfigure, getting other files.
  516. for command in \
  517. 'aclocal --force -I m4' \
  518. 'autoconf --force' \
  519. 'autoheader --force' \
  520. 'automake --add-missing --copy --force-missing';
  521. do
  522. echo "$0: $command ..."
  523. $command || exit
  524. done
  525. # Get some extra files from gnulib, overriding existing files.
  526. for file in $gnulib_extra_files; do
  527. case $file in
  528. */INSTALL) dst=INSTALL;;
  529. *) dst=$file;;
  530. esac
  531. symlink_to_gnulib $file $dst || exit
  532. done
  533. # Create gettext configuration.
  534. echo "$0: Creating po/Makevars from po/Makevars.template ..."
  535. rm -f po/Makevars
  536. sed '
  537. /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
  538. /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
  539. /^XGETTEXT_OPTIONS *=/{
  540. s/$/ \\/
  541. a\
  542. '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
  543. }
  544. ' po/Makevars.template >po/Makevars
  545. if test -d runtime-po; then
  546. # Similarly for runtime-po/Makevars, but not quite the same.
  547. rm -f runtime-po/Makevars
  548. sed '
  549. /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
  550. /^subdir *=.*/s/=.*/= runtime-po/
  551. /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
  552. /^XGETTEXT_OPTIONS *=/{
  553. s/$/ \\/
  554. a\
  555. '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
  556. }
  557. ' <po/Makevars.template >runtime-po/Makevars
  558. # Copy identical files from po to runtime-po.
  559. (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
  560. fi
  561. cleanup_ifl
  562. echo "$0: done. Now you can run './configure'."