* README-hacking: New file, taken mostly from coreutils, with changes

for Bison.  Contains much of the contents of:
* README-cvs: Remove.
* bootstrap: Sync from gnulib.
* build-aux/.cvsignore: Remove *.t, mkinstalldirs.
* lib/.cvsignore: Add wchar.h, wctype.h.  Remove exit.h.

SCALAR(0x82833fc)
redefinitions.
This commit is contained in:
Paul Eggert
2007-04-04 22:36:54 +00:00
parent 2955354793
commit bbb44d83f8
5 changed files with 147 additions and 78 deletions

View File

@@ -1,3 +1,12 @@
2007-04-04 Paul Eggert <eggert@cs.ucla.edu>
* README-hacking: New file, taken mostly from coreutils, with changes
for Bison. Contains much of the contents of:
* README-cvs: Remove.
* bootstrap: Sync from gnulib.
* build-aux/.cvsignore: Remove *.t, mkinstalldirs.
* lib/.cvsignore: Add wchar.h, wctype.h. Remove exit.h.
2007-03-10 Joel E. Denny <jdenny@ces.clemson.edu> 2007-03-10 Joel E. Denny <jdenny@ces.clemson.edu>
* doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian * doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
@@ -81,7 +90,7 @@
b4_percent_define_flag_if and b4_percent_define_default. b4_percent_define_flag_if and b4_percent_define_default.
For %define variables, report locations for invalid values and For %define variables, report locations for invalid values and
redefinitions. redefinitions.
* data/bison.m4 (b4_percent_define_flag_if): Read * data/bison.m4 (b4_percent_define_flag_if): Read
b4_percent_define_loc(VARIABLE) to report the location of an invalid b4_percent_define_loc(VARIABLE) to report the location of an invalid
value for VARIABLE. value for VARIABLE.

View File

@@ -1,13 +1,15 @@
-*- outline -*- -*- outline -*-
These notes intend to help people working on the CVS versions of These notes intend to help people working on the checked-out sources.
Bison. These requirements do not apply when building from a distribution tarball.
* Requirements * Requirements
Only the sources are installed in the CVS repository (to ease the We've opted to keep only the highest-level sources in the repository.
maintenance, merges etc.), therefore you will have to get the latest This eases our maintenance burden, (fewer merges etc.), but imposes more
stable versions of the maintainer tools we depend upon, including: requirements on anyone wishing to build from the just-checked-out sources.
For example, you have to use the latest stable versions of the maintainer
tools we depend upon, including:
- Automake <http://www.gnu.org/software/automake/> - Automake <http://www.gnu.org/software/automake/>
- Autoconf <http://www.gnu.org/software/autoconf/> - Autoconf <http://www.gnu.org/software/autoconf/>
@@ -17,8 +19,9 @@ stable versions of the maintainer tools we depend upon, including:
- Tar <http://www.gnu.org/software/tar/> - Tar <http://www.gnu.org/software/tar/>
- Wget <http://www.gnu.org/software/wget/> - Wget <http://www.gnu.org/software/wget/>
As of this writing, the latest stable version of Gzip is 1.2.4 but we Only building the initial full source tree will be a bit painful.
suggest using test version 1.3.5 (or later, if one becomes available). Later, after synchronizing from the repository a plain `make' should
be sufficient.
Valgrind <http://valgrind.org/> is also highly recommended, if Valgrind <http://valgrind.org/> is also highly recommended, if
Valgrind supports your architecture. Valgrind supports your architecture.
@@ -32,24 +35,27 @@ Also, you may run into similar problems yourself if you modify Bison.
Only building the initial full source tree will be a bit painful, Only building the initial full source tree will be a bit painful,
later, a plain `cvs update -P && make' should be sufficient. later, a plain `cvs update -P && make' should be sufficient.
* First CVS checkout * First checkout
Obviously, if you are reading these notes, you did manage to check out Obviously, if you are reading these notes, you did manage to check out
Bison from CVS. For the records, you will find all the relevant Bison from the repository. For the record, you will find all the
information on: relevant information on:
http://savannah.gnu.org/cvs/?group_id=56 http://savannah.gnu.org/cvs/?group_id=56
The next step is asking the installation of all the missing files: The next step is to get other files needed to build, which are
extracted from other source packages:
$ ./bootstrap $ ./bootstrap
And there you are! Just And there you are! Just
$ ./configure && make && make check $ ./configure
$ make
$ make check
At this point, there should be no difference between your local copy, At this point, there should be no difference between your local copy,
and the CVS master copy: and the master copy:
$ cvs diff $ cvs diff
@@ -59,7 +65,8 @@ Enjoy!
----- -----
Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
Foundation, Inc.
This file is part of GNU Bison. This file is part of GNU Bison.

174
bootstrap
View File

@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Bootstrap this package from CVS. # Bootstrap this package from checked-out sources.
# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -29,6 +29,11 @@ nl='
LC_ALL=C LC_ALL=C
export LC_ALL export LC_ALL
# Temporary directory names.
bt='._bootmp'
bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
bt2=${bt}2
usage() { usage() {
echo >&2 "\ echo >&2 "\
Usage: $0 [OPTION]... Usage: $0 [OPTION]...
@@ -38,14 +43,14 @@ Options:
--gnulib-srcdir=DIRNAME Specify the local directory where gnulib --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
sources reside. Use this if you already sources reside. Use this if you already
have gnulib sources on your machine, and have gnulib sources on your machine, and
do not want to waste your bandwidth dowloading do not want to waste your bandwidth downloading
them again. them again.
--copy Copy files instead of creating symbolic links. --copy Copy files instead of creating symbolic links.
--force Attempt to bootstrap even if the sources seem --force Attempt to bootstrap even if the sources seem
not to have been checked out. not to have been checked out.
--skip-po Do not download po files. --skip-po Do not download po files.
--cvs-user=USERNAME Set the CVS username to be used when accessing --cvs-user=USERNAME Set the username to use when checking out
the gnulib repository. sources from the gnulib repository.
If the file .bootstrap.conf exists in the current working directory, its If the file .bootstrap.conf exists in the current working directory, its
contents are read as shell variables to configure the bootstrap. contents are read as shell variables to configure the bootstrap.
@@ -84,19 +89,20 @@ extract_package_name='
} }
' '
package=`sed -n "$extract_package_name" configure.ac` || exit package=`sed -n "$extract_package_name" configure.ac` || exit
gnulib_name=lib$package
build_aux=build-aux
# Extra files from gnulib, which override files from other sources. # Extra files from gnulib, which override files from other sources.
gnulib_extra_files=' gnulib_extra_files="
build-aux/announce-gen $build_aux/install-sh
build-aux/install-sh $build_aux/missing
build-aux/missing $build_aux/mdate-sh
build-aux/mdate-sh $build_aux/texinfo.tex
build-aux/texinfo.tex $build_aux/depcomp
build-aux/depcomp $build_aux/config.guess
build-aux/config.guess $build_aux/config.sub
build-aux/config.sub
doc/INSTALL doc/INSTALL
' "
# Other locale categories that need message catalogs. # Other locale categories that need message catalogs.
EXTRA_LOCALE_CATEGORIES= EXTRA_LOCALE_CATEGORIES=
@@ -113,7 +119,7 @@ excluded_files=
# File that should exist in the top directory of a checked out hierarchy, # File that should exist in the top directory of a checked out hierarchy,
# but not in a distribution tarball. # but not in a distribution tarball.
CVS_only_file=README-cvs checkout_only_file=README-hacking
# Whether to use copies instead of symlinks. # Whether to use copies instead of symlinks.
copy=false copy=false
@@ -138,7 +144,7 @@ do
--skip-po) --skip-po)
SKIP_PO=t;; SKIP_PO=t;;
--force) --force)
CVS_only_file=;; checkout_only_file=;;
--copy) --copy)
copy=true;; copy=true;;
*) *)
@@ -147,12 +153,42 @@ do
esac esac
done done
if test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
exit 1 exit 1
fi fi
echo "$0: Bootstrapping CVS $package..." # If $STR is not already on a line by itself in $FILE, insert it,
# sorting the new contents of the file and replacing $FILE with the result.
insert_sorted_if_absent() {
file=$1
str=$2
echo "$str" | sort -u - $file | cmp -s - $file \
|| echo "$str" | sort -u - $file -o $file \
|| exit 1
}
# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
found_aux_dir=no
grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
>/dev/null && found_aux_dir=yes
grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
>/dev/null && found_aux_dir=yes
if test $found_aux_dir = no; then
echo "$0: expected line not found in configure.ac. Add the following:" >&2
echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2.
fi
# If $build_aux doesn't exist, create it now, otherwise some bits
# below will malfunction. If creating it, also mark it as ignored.
if test ! -d $build_aux; then
mkdir $build_aux
for ig in .cvsignore .gitignore; do
test -f $ig && insert_sorted_if_absent $ig $build_aux
done
fi
echo "$0: Bootstrapping from checked-out $package sources..."
cleanup_gnulib() { cleanup_gnulib() {
status=$? status=$?
@@ -246,7 +282,9 @@ case $SKIP_PO in
WGET_COMMAND='';; WGET_COMMAND='';;
esac esac
get_translations po $package || exit if test -d po; then
get_translations po $package || exit
fi
if test -d runtime-po; then if test -d runtime-po; then
get_translations runtime-po $package-runtime || exit get_translations runtime-po $package-runtime || exit
@@ -315,7 +353,8 @@ cp_mark_as_generated()
if test -z "$c1"; then if test -z "$c1"; then
cmp -s "$cp_src" "$cp_dst" || { cmp -s "$cp_src" "$cp_dst" || {
echo "$0: cp -f $cp_src $cp_dst" && echo "$0: cp -f $cp_src $cp_dst" &&
sed 's/\.#bootmp\///g' "$cp_src" > "$cp_dst" rm -f "$cp_dst" &&
sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst"
} }
else else
# Copy the file first to get proper permissions if it # Copy the file first to get proper permissions if it
@@ -324,7 +363,7 @@ cp_mark_as_generated()
( (
echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" && echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" && echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
sed 's/\.#bootmp\///g' "$cp_src" sed "s!$bt_regex/!!g" "$cp_src"
) > $cp_dst-t && ) > $cp_dst-t &&
if cmp -s "$cp_dst-t" "$cp_dst"; then if cmp -s "$cp_dst-t" "$cp_dst"; then
rm -f "$cp_dst-t" rm -f "$cp_dst-t"
@@ -362,10 +401,7 @@ slurp() {
done done
if test $file = Makefile.am; then if test $file = Makefile.am; then
copied=$copied${sep}gnulib.mk; sep=$nl copied=$copied${sep}gnulib.mk; sep=$nl
remove_intl=' remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
/^[^#].*\/intl/s/^/#/
s,\.#bootmp/,,g
'
sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || { sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || {
echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." && echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
rm -f $dir/gnulib.mk && rm -f $dir/gnulib.mk &&
@@ -396,8 +432,12 @@ slurp() {
for dot_ig in .cvsignore .gitignore; do for dot_ig in .cvsignore .gitignore; do
ig=$dir/$dot_ig ig=$dir/$dot_ig
if test -n "$copied" && test -f $ig; then if test -n "$copied" && test -f $ig; then
echo "$copied" | sort -u - $ig | cmp -s - $ig || insert_sorted_if_absent $ig "$copied"
echo "$copied" | sort -u - $ig -o $ig || exit # If an ignored file name ends with _.h, then also add
# the name with just ".h". Many gnulib headers are generated,
# e.g., stdint_.h -> stdint.h, dirent_.h ->..., etc.
f=`echo "$copied"|sed 's/_\.h$/.h/'`
insert_sorted_if_absent $ig "$f"
fi fi
done done
done done
@@ -405,9 +445,6 @@ slurp() {
# Create boot temporary directories to import from gnulib and gettext. # Create boot temporary directories to import from gnulib and gettext.
bt='.#bootmp'
bt2=${bt}2
rm -fr $bt $bt2 && rm -fr $bt $bt2 &&
mkdir $bt $bt2 || exit mkdir $bt $bt2 || exit
@@ -416,9 +453,9 @@ mkdir $bt $bt2 || exit
gnulib_tool_options="\ gnulib_tool_options="\
--import\ --import\
--no-changelog\ --no-changelog\
--aux-dir $bt/build-aux\ --aux-dir $bt/$build_aux\
--doc-base $bt/doc\ --doc-base $bt/doc\
--lib lib$package\ --lib $gnulib_name\
--m4-base $bt/m4/\ --m4-base $bt/m4/\
--source-base $bt/lib/\ --source-base $bt/lib/\
--tests-base $bt/tests\ --tests-base $bt/tests\
@@ -434,23 +471,34 @@ done
# Import from gettext. # Import from gettext.
with_gettext=yes
grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
with_gettext=no
echo "$0: (cd $bt2; autopoint) ..." if test $with_gettext = yes; then
cp configure.ac $bt2 && echo "$0: (cd $bt2; autopoint) ..."
(cd $bt2 && autopoint && rm configure.ac) && cp configure.ac $bt2 &&
slurp $bt2 $bt || exit (cd $bt2 && autopoint && rm configure.ac) &&
slurp $bt2 $bt || exit
rm -fr $bt $bt2 || exit rm -fr $bt $bt2 || exit
fi
# Reconfigure, getting other files. # Reconfigure, getting other files.
for command in \ for command in \
libtool \
'aclocal --force -I m4' \ 'aclocal --force -I m4' \
'autoconf --force' \ 'autoconf --force' \
'autoheader --force' \ 'autoheader --force' \
'automake --add-missing --copy --force-missing'; 'automake --add-missing --copy --force-missing';
do do
if test "$command" = libtool; then
grep '^[ ]*AM_PROG_LIBTOOL\>' configure.ac >/dev/null ||
continue
command='libtoolize -c -f'
fi
echo "$0: $command ..." echo "$0: $command ..."
$command || exit $command || exit
done done
@@ -466,31 +514,37 @@ for file in $gnulib_extra_files; do
symlink_to_gnulib $file $dst || exit symlink_to_gnulib $file $dst || exit
done done
if test $with_gettext = yes; then
# Create gettext configuration. # Create gettext configuration.
echo "$0: Creating po/Makevars from po/Makevars.template ..." echo "$0: Creating po/Makevars from po/Makevars.template ..."
rm -f po/Makevars rm -f po/Makevars
sed '
/^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
/^XGETTEXT_OPTIONS *=/{
s/$/ \\/
a\
'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
}
' po/Makevars.template >po/Makevars
if test -d runtime-po; then
# Likewise for runtime-po/Makevars, except also change a few other parameters.
rm -f runtime-po/Makevars
sed ' sed '
s/^\(DOMAIN\) *=.*/\1 = '"$package"'-runtime/ /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
s/^\(subdir\) *=.*/\1 = runtime-po/ /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = '"$XGETTEXT_OPTIONS_RUNTIME"'/ /^XGETTEXT_OPTIONS *=/{
' <po/Makevars >runtime-po/Makevars s/$/ \\/
a\
'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
}
' po/Makevars.template >po/Makevars
# Copy identical files from po to runtime-po. if test -d runtime-po; then
(cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) # Similarly for runtime-po/Makevars, but not quite the same.
rm -f runtime-po/Makevars
sed '
/^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
/^subdir *=.*/s/=.*/= runtime-po/
/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
/^XGETTEXT_OPTIONS *=/{
s/$/ \\/
a\
'"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
}
' <po/Makevars.template >runtime-po/Makevars
# Copy identical files from po to runtime-po.
(cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
fi
fi fi
echo "$0: done. Now you can run './configure'." echo "$0: done. Now you can run './configure'."

View File

@@ -1,4 +1,3 @@
*.t
Makefile Makefile
Makefile.in Makefile.in
config.guess config.guess
@@ -11,6 +10,5 @@ javaexec.sh.in
link-warning.h link-warning.h
mdate-sh mdate-sh
missing missing
mkinstalldirs
texinfo.tex texinfo.tex
ylwrap ylwrap

View File

@@ -17,7 +17,6 @@ dirname.h
dup-safer.c dup-safer.c
error.c error.c
error.h error.h
exit.h
exitfail.c exitfail.c
exitfail.h exitfail.h
fd-safer.c fd-safer.c
@@ -69,7 +68,9 @@ unistd.h
unistd_.h unistd_.h
unlocked-io.h unlocked-io.h
verify.h verify.h
wchar.h
wchar_.h wchar_.h
wctype.h
wctype_.h wctype_.h
wcwidth.h wcwidth.h
xalloc-die.c xalloc-die.c