mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
gnulib when interrupted. This fixes some race conditions and works around some portability problems (one noted by Paul Hilfinger).
336 lines
8.2 KiB
Bash
Executable File
336 lines
8.2 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
# Bootstrap this package from CVS.
|
|
|
|
# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2, or (at your option)
|
|
# any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
# 02110-1301, USA.
|
|
|
|
# Written by Paul Eggert.
|
|
|
|
package=bison
|
|
|
|
# Ensure file names are sorted consistently across platforms;
|
|
# e.g., m4/ulonglong_gl.m4 should follow m4/ulonglong.m4.
|
|
# Also, ensure diagnostics are in English, e.g., "wget --help" below.
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
# Parse options.
|
|
|
|
for option
|
|
do
|
|
case $option in
|
|
--help)
|
|
echo "$0: usage: $0 [--gnulib-srcdir=DIR] [--cvs-user=USERNAME] [--skip-po]"
|
|
exit;;
|
|
--gnulib-srcdir=*)
|
|
GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
|
|
--cvs-user=*)
|
|
CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
|
|
--skip-po)
|
|
SKIP_PO=t;;
|
|
*)
|
|
echo >&2 "$0: $option: unknown option"
|
|
exit 1;;
|
|
esac
|
|
done
|
|
|
|
echo "$0: Bootstrapping CVS $package..."
|
|
|
|
build_cvs_prefix() {
|
|
CVS_PREFIX=:${1}:
|
|
if [ "${2}" != - ]; then
|
|
CVS_PREFIX=${CVS_PREFIX}${2}@
|
|
fi
|
|
}
|
|
|
|
cleanup_gnulib() {
|
|
status=$?
|
|
rm -fr gnulib
|
|
exit $status
|
|
}
|
|
|
|
# Get gnulib files.
|
|
|
|
case ${GNULIB_SRCDIR--} in
|
|
-)
|
|
if [ ! -d gnulib ]; then
|
|
echo "$0: getting gnulib files..."
|
|
|
|
case ${CVS_AUTH-anoncvs} in
|
|
anoncvs)
|
|
CVS_PREFIX='anoncvs@';;
|
|
ssh)
|
|
CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
|
|
*)
|
|
echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
|
|
exit 1;;
|
|
esac
|
|
|
|
case $CVS_RSH in
|
|
'') export CVS_RSH=ssh;;
|
|
esac
|
|
|
|
trap cleanup_gnulib 1 2 13 15
|
|
|
|
cvs -z3 -q -d ${CVS_PREFIX}subversions.gnu.org:/cvsroot/gnulib co gnulib ||
|
|
cleanup_gnulib
|
|
|
|
trap - 1 2 13 15
|
|
fi
|
|
GNULIB_SRCDIR=gnulib
|
|
esac
|
|
|
|
<$GNULIB_SRCDIR/gnulib-tool || exit
|
|
|
|
gnulib_modules='
|
|
argmatch
|
|
dirname
|
|
error
|
|
extensions
|
|
getopt
|
|
gettext
|
|
hard-locale
|
|
hash
|
|
malloc
|
|
mbswidth
|
|
obstack
|
|
quote
|
|
quotearg
|
|
stdbool
|
|
stdio-safer
|
|
stpcpy
|
|
strerror
|
|
strtoul
|
|
strverscmp
|
|
unistd-safer
|
|
unlocked-io
|
|
verify
|
|
xalloc
|
|
xalloc-die
|
|
xstrndup
|
|
'
|
|
|
|
previous_gnulib_modules=
|
|
while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
|
|
previous_gnulib_modules=$gnulib_modules
|
|
gnulib_modules=`
|
|
(echo "$gnulib_modules"
|
|
for gnulib_module in $gnulib_modules; do
|
|
$GNULIB_SRCDIR/gnulib-tool --extract-dependencies $gnulib_module
|
|
done) | sort -u
|
|
`
|
|
done
|
|
|
|
gnulib_files=`
|
|
(for gnulib_module in $gnulib_modules; do
|
|
$GNULIB_SRCDIR/gnulib-tool --extract-filelist $gnulib_module
|
|
done) | sort -u
|
|
`
|
|
|
|
gnulib_dirs=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
|
|
mkdir -p $gnulib_dirs || exit
|
|
|
|
for gnulib_file in $gnulib_files; do
|
|
dest=$gnulib_file
|
|
|
|
case $gnulib_file in
|
|
m4/onceonly_2_57.m4) dest=m4/onceonly.m4;;
|
|
# These will be overwritten by autopoint, which still uses
|
|
# old jm_.* macro names, so we have to keep both copies.
|
|
# m4/gettext.m4 isn't mentioned here, since it's patched below.
|
|
m4/glibc21.m4 | m4/inttypes_h.m4 | m4/lib-ld.m4 | \
|
|
m4/lib-prefix.m4 | m4/po.m4 | m4/stdint_h.m4 | m4/uintmax_t.m4 | \
|
|
m4/ulonglong.m4)
|
|
dest=`expr $gnulib_file : '\(.*\).m4'`_gl.m4;;
|
|
esac
|
|
|
|
rm -f $dest &&
|
|
echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
|
|
cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
|
|
done
|
|
|
|
# This suppresses a bogus diagnostic
|
|
# "warning: macro `AM_LANGINFO_CODESET' not found in library".
|
|
echo "$0: patching m4/gettext.m4 so that AM_INTL_SUBDIR is empty ..."
|
|
sed '
|
|
/^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
|
|
AC_DEFUN([AM_INTL_SUBDIR], [])
|
|
' m4/gettext.m4 >m4/gettext_gl.m4 || exit
|
|
|
|
|
|
# Get translations.
|
|
|
|
case $SKIP_PO in
|
|
'')
|
|
case `wget --help` in
|
|
*'--no-cache'*)
|
|
no_cache='--no-cache';;
|
|
*'--cache=on/off'*)
|
|
no_cache='--cache=off';;
|
|
*)
|
|
no_cache='';;
|
|
esac
|
|
|
|
echo "$0: getting translations into po (please ignore the robots.txt ERROR 404)..."
|
|
(cd po &&
|
|
rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'` &&
|
|
wget -nv -nd -r -l 1 -A .po $no_cache \
|
|
http://www.iro.umontreal.ca/translation/maint/$package/ &&
|
|
ls *.po | sed 's/\.po$//' >LINGUAS
|
|
) || exit
|
|
|
|
case $package in
|
|
bison)
|
|
echo "$0: getting translations into po (please ignore the robots.txt ERROR 404)..."
|
|
(cd runtime-po &&
|
|
rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po$/p'` &&
|
|
wget -nv -nd -r -l 1 -A .po $no_cache \
|
|
http://www.iro.umontreal.ca/translation/maint/$package-runtime/ &&
|
|
|
|
# For translations that have not yet been upgraded to the new
|
|
# runtime-po domain, prime the pump by extracting the relevant
|
|
# strings from the obsolete translations.
|
|
# This code can be removed once the bison-runtime domain
|
|
# has been translated by each team.
|
|
for po in ../po/*.po; do
|
|
test -f "$po" || continue
|
|
runpo=`basename $po`
|
|
test -f $runpo || {
|
|
msggrep -K \
|
|
-e 'memory exhausted' \
|
|
-e 'syntax error' \
|
|
$po 2>/dev/null |
|
|
sed '
|
|
s/^#~ //
|
|
/^msgid "syntax error; also memory exhausted"$/,/^$/d
|
|
/^$/,${ /^#/d; }
|
|
' >$runpo-
|
|
if cmp -s $runpo- $runpo; then
|
|
rm $runpo-
|
|
else
|
|
mv $runpo- $runpo
|
|
fi
|
|
test -s $runpo || rm -f $runpo
|
|
} || exit
|
|
done &&
|
|
|
|
ls *.po | sed 's/\.po$//' >LINGUAS
|
|
) || exit
|
|
esac;;
|
|
esac
|
|
|
|
|
|
# Generate autoconf and automake snippets.
|
|
|
|
(echo '# This file is generated automatically by "bootstrap".' &&
|
|
echo 'AC_DEFUN([GNULIB_AUTOCONF_SNIPPET],[' &&
|
|
$GNULIB_SRCDIR/gnulib-tool --extract-autoconf-snippet $gnulib_modules &&
|
|
echo '])'
|
|
) >m4/gnulib.m4 || exit
|
|
|
|
(echo '# This file is generated automatically by "bootstrap".' &&
|
|
$GNULIB_SRCDIR/gnulib-tool --extract-automake-snippet $gnulib_modules
|
|
) >lib/gnulib.mk || exit
|
|
|
|
|
|
# Reconfigure, getting other files.
|
|
|
|
echo "$0: autoreconf --verbose --install --force ..."
|
|
autoreconf --verbose --install --force || exit
|
|
|
|
|
|
# We don't need intl, so remove it.
|
|
# Remove aclocal.m4 too, so that it gets rebuilt.
|
|
intl_files_to_remove='
|
|
aclocal.m4
|
|
intl
|
|
m4/codeset.m4
|
|
m4/gettext.m4
|
|
m4/glibc2.m4
|
|
m4/glibc21.m4
|
|
m4/intdiv0.m4
|
|
m4/intmax.m4
|
|
m4/inttypes_h.m4
|
|
m4/inttypes.m4
|
|
m4/inttypes-pri.m4
|
|
m4/isc-posix.m4
|
|
m4/lcmessage.m4
|
|
m4/lib-ld.m4
|
|
m4/lib-prefix.m4
|
|
m4/longdouble.m4
|
|
m4/longlong.m4
|
|
m4/po.m4
|
|
m4/printf-posix.m4
|
|
m4/signed.m4
|
|
m4/size_max.m4
|
|
m4/stdint_h.m4
|
|
m4/uintmax_t.m4
|
|
m4/ulonglong.m4
|
|
m4/wchar_t.m4
|
|
m4/wint_t.m4
|
|
m4/xsize.m4
|
|
'
|
|
echo $0: rm -fr $intl_files_to_remove ...
|
|
rm -fr $intl_files_to_remove || exit
|
|
|
|
# Put bug-reporting address into po/Makevars.
|
|
echo "$0: sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-bison@gnu.org/' po/Makevars.template >po/Makevars ..."
|
|
sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-bison@gnu.org/' po/Makevars.template >po/Makevars
|
|
|
|
# Likewise for runtime-po/Makevars, except also change a few other parameters.
|
|
sed '
|
|
s/^\(DOMAIN\) *=.*/\1 = bison-runtime/
|
|
s/^\(subdir\) *=.*/\1 = runtime-po/
|
|
s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = --keyword=YY_/
|
|
' <po/Makevars >runtime-po/Makevars
|
|
|
|
# Copy identical files from po to runtime-po.
|
|
(cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
|
|
|
|
# if src/parse-gram.[ch] are out of date, rebuild them.
|
|
parse_gram_y=`find src/parse-gram.y \
|
|
'(' -newer src/parse-gram.c -o -newer src/parse-gram.h ')' \
|
|
-print` || exit
|
|
case $parse_gram_y in
|
|
?*)
|
|
echo "$0: warning: bootstrapping with old src/parse-gram.[ch] files."
|
|
|
|
echo "$0: touch -c src/parse-gram.[ch] ... "
|
|
touch -c src/parse-gram.[ch] || exit
|
|
|
|
echo "$0: ./configure --disable-nls ..."
|
|
./configure --disable-nls || exit
|
|
|
|
echo "$0: (cd lib && make) ..."
|
|
(cd lib && make) || exit
|
|
|
|
echo "$0: (cd src && make) ..."
|
|
(cd src && make) || exit
|
|
|
|
echo "$0: rm -f src/parse-gram.c src/parse-gram.h ..."
|
|
rm -f src/parse-gram.c src/parse-gram.h || exit
|
|
|
|
echo "$0: (cd src && make parse-gram.c parse-gram.h) ..."
|
|
(cd src && make parse-gram.c parse-gram.h) || exit
|
|
|
|
echo "$0: make distclean ..."
|
|
make distclean || exit;;
|
|
esac
|
|
|
|
echo "$0: done. Now you can run './configure'."
|