From: Paul Eggert Date: Wed, 4 Apr 2007 22:36:54 +0000 (+0000) Subject: * README-hacking: New file, taken mostly from coreutils, with changes X-Git-Tag: v2.3b~132 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/bbb44d83f8b72e9e432ce9ae89d20e8e42dfc9f1 * 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. --- diff --git a/ChangeLog b/ChangeLog index 5b60a19a..9d4f1a8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-04-04 Paul Eggert + + * 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 * doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian @@ -81,7 +90,7 @@ b4_percent_define_flag_if and b4_percent_define_default. For %define variables, report locations for invalid values and - redefinitions. + redefinitions. * data/bison.m4 (b4_percent_define_flag_if): Read b4_percent_define_loc(VARIABLE) to report the location of an invalid value for VARIABLE. diff --git a/README-cvs b/README-cvs deleted file mode 100644 index 6f3bcb4c..00000000 --- a/README-cvs +++ /dev/null @@ -1,79 +0,0 @@ --*- outline -*- - -These notes intend to help people working on the CVS versions of -Bison. - -* Requirements - -Only the sources are installed in the CVS repository (to ease the -maintenance, merges etc.), therefore you will have to get the latest -stable versions of the maintainer tools we depend upon, including: - -- Automake -- Autoconf -- Flex -- Gettext -- Gzip -- Tar -- Wget - -As of this writing, the latest stable version of Gzip is 1.2.4 but we -suggest using test version 1.3.5 (or later, if one becomes available). - -Valgrind is also highly recommended, if -Valgrind supports your architecture. - -Bison is written using Bison grammars, so there are bootstrapping -issues. The bootstrap script attempts to discover when the C code -generated from the grammars is out of date, and to bootstrap with an -out-of-date version of the C code, but the process is not foolproof. -Also, you may run into similar problems yourself if you modify Bison. - -Only building the initial full source tree will be a bit painful, -later, a plain `cvs update -P && make' should be sufficient. - -* First CVS checkout - -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 -information on: - - http://savannah.gnu.org/cvs/?group_id=56 - -The next step is asking the installation of all the missing files: - - $ ./bootstrap - -And there you are! Just - - $ ./configure && make && make check - -At this point, there should be no difference between your local copy, -and the CVS master copy: - - $ cvs diff - -should output no difference. - -Enjoy! - ------ - -Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - -This file is part of GNU Bison. - -GNU Bison 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. - -GNU Bison 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 Bison; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. diff --git a/README-hacking b/README-hacking new file mode 100644 index 00000000..28b4ee5e --- /dev/null +++ b/README-hacking @@ -0,0 +1,86 @@ +-*- outline -*- + +These notes intend to help people working on the checked-out sources. +These requirements do not apply when building from a distribution tarball. + +* Requirements + +We've opted to keep only the highest-level sources in the repository. +This eases our maintenance burden, (fewer merges etc.), but imposes more +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 +- Autoconf +- Flex +- Gettext +- Gzip +- Tar +- Wget + +Only building the initial full source tree will be a bit painful. +Later, after synchronizing from the repository a plain `make' should +be sufficient. + +Valgrind is also highly recommended, if +Valgrind supports your architecture. + +Bison is written using Bison grammars, so there are bootstrapping +issues. The bootstrap script attempts to discover when the C code +generated from the grammars is out of date, and to bootstrap with an +out-of-date version of the C code, but the process is not foolproof. +Also, you may run into similar problems yourself if you modify Bison. + +Only building the initial full source tree will be a bit painful, +later, a plain `cvs update -P && make' should be sufficient. + +* First checkout + +Obviously, if you are reading these notes, you did manage to check out +Bison from the repository. For the record, you will find all the +relevant information on: + + http://savannah.gnu.org/cvs/?group_id=56 + +The next step is to get other files needed to build, which are +extracted from other source packages: + + $ ./bootstrap + +And there you are! Just + + $ ./configure + $ make + $ make check + +At this point, there should be no difference between your local copy, +and the master copy: + + $ cvs diff + +should output no difference. + +Enjoy! + +----- + +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software +Foundation, Inc. + +This file is part of GNU Bison. + +GNU Bison 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. + +GNU Bison 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 Bison; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. diff --git a/bootstrap b/bootstrap index 65a8584e..32940850 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,6 @@ #! /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. @@ -29,6 +29,11 @@ nl=' LC_ALL=C export LC_ALL +# Temporary directory names. +bt='._bootmp' +bt_regex=`echo "$bt"| sed 's/\./[.]/g'` +bt2=${bt}2 + usage() { echo >&2 "\ Usage: $0 [OPTION]... @@ -38,14 +43,14 @@ Options: --gnulib-srcdir=DIRNAME Specify the local directory where gnulib sources reside. Use this if you already 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. --copy Copy files instead of creating symbolic links. --force Attempt to bootstrap even if the sources seem not to have been checked out. --skip-po Do not download po files. - --cvs-user=USERNAME Set the CVS username to be used when accessing - the gnulib repository. + --cvs-user=USERNAME Set the username to use when checking out + sources from the gnulib repository. If the file .bootstrap.conf exists in the current working directory, its 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 +gnulib_name=lib$package +build_aux=build-aux # Extra files from gnulib, which override files from other sources. -gnulib_extra_files=' - build-aux/announce-gen - build-aux/install-sh - build-aux/missing - build-aux/mdate-sh - build-aux/texinfo.tex - build-aux/depcomp - build-aux/config.guess - build-aux/config.sub +gnulib_extra_files=" + $build_aux/install-sh + $build_aux/missing + $build_aux/mdate-sh + $build_aux/texinfo.tex + $build_aux/depcomp + $build_aux/config.guess + $build_aux/config.sub doc/INSTALL -' +" # Other locale categories that need message catalogs. EXTRA_LOCALE_CATEGORIES= @@ -113,7 +119,7 @@ excluded_files= # File that should exist in the top directory of a checked out hierarchy, # but not in a distribution tarball. -CVS_only_file=README-cvs +checkout_only_file=README-hacking # Whether to use copies instead of symlinks. copy=false @@ -138,7 +144,7 @@ do --skip-po) SKIP_PO=t;; --force) - CVS_only_file=;; + checkout_only_file=;; --copy) copy=true;; *) @@ -147,12 +153,42 @@ do esac 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 exit 1 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() { status=$? @@ -246,7 +282,9 @@ case $SKIP_PO in WGET_COMMAND='';; esac - get_translations po $package || exit + if test -d po; then + get_translations po $package || exit + fi if test -d runtime-po; then get_translations runtime-po $package-runtime || exit @@ -315,7 +353,8 @@ cp_mark_as_generated() if test -z "$c1"; then cmp -s "$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 # 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}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" && - sed 's/\.#bootmp\///g' "$cp_src" + sed "s!$bt_regex/!!g" "$cp_src" ) > $cp_dst-t && if cmp -s "$cp_dst-t" "$cp_dst"; then rm -f "$cp_dst-t" @@ -362,10 +401,7 @@ slurp() { done if test $file = Makefile.am; then copied=$copied${sep}gnulib.mk; sep=$nl - remove_intl=' - /^[^#].*\/intl/s/^/#/ - s,\.#bootmp/,,g - ' + remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g" sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || { echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." && rm -f $dir/gnulib.mk && @@ -396,8 +432,12 @@ slurp() { for dot_ig in .cvsignore .gitignore; do ig=$dir/$dot_ig if test -n "$copied" && test -f $ig; then - echo "$copied" | sort -u - $ig | cmp -s - $ig || - echo "$copied" | sort -u - $ig -o $ig || exit + insert_sorted_if_absent $ig "$copied" + # 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 done done @@ -405,9 +445,6 @@ slurp() { # Create boot temporary directories to import from gnulib and gettext. - -bt='.#bootmp' -bt2=${bt}2 rm -fr $bt $bt2 && mkdir $bt $bt2 || exit @@ -416,9 +453,9 @@ mkdir $bt $bt2 || exit gnulib_tool_options="\ --import\ --no-changelog\ - --aux-dir $bt/build-aux\ + --aux-dir $bt/$build_aux\ --doc-base $bt/doc\ - --lib lib$package\ + --lib $gnulib_name\ --m4-base $bt/m4/\ --source-base $bt/lib/\ --tests-base $bt/tests\ @@ -434,23 +471,34 @@ done # Import from gettext. +with_gettext=yes +grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ + with_gettext=no -echo "$0: (cd $bt2; autopoint) ..." -cp configure.ac $bt2 && -(cd $bt2 && autopoint && rm configure.ac) && -slurp $bt2 $bt || exit +if test $with_gettext = yes; then + echo "$0: (cd $bt2; autopoint) ..." + cp configure.ac $bt2 && + (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. for command in \ + libtool \ 'aclocal --force -I m4' \ 'autoconf --force' \ 'autoheader --force' \ 'automake --add-missing --copy --force-missing'; do + if test "$command" = libtool; then + grep '^[ ]*AM_PROG_LIBTOOL\>' configure.ac >/dev/null || + continue + command='libtoolize -c -f' + fi echo "$0: $command ..." $command || exit done @@ -466,31 +514,37 @@ for file in $gnulib_extra_files; do symlink_to_gnulib $file $dst || exit done - -# Create gettext configuration. -echo "$0: Creating po/Makevars from po/Makevars.template ..." -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 +if test $with_gettext = yes; then + # Create gettext configuration. + echo "$0: Creating po/Makevars from po/Makevars.template ..." + rm -f po/Makevars sed ' - s/^\(DOMAIN\) *=.*/\1 = '"$package"'-runtime/ - s/^\(subdir\) *=.*/\1 = runtime-po/ - s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = '"$XGETTEXT_OPTIONS_RUNTIME"'/ - ' runtime-po/Makevars + /^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 - # Copy identical files from po to runtime-po. - (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) + if test -d runtime-po; then + # 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+} + } + ' 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 echo "$0: done. Now you can run './configure'." diff --git a/build-aux/.cvsignore b/build-aux/.cvsignore index 23a5d983..4a0cfefb 100644 --- a/build-aux/.cvsignore +++ b/build-aux/.cvsignore @@ -1,4 +1,3 @@ -*.t Makefile Makefile.in config.guess @@ -11,6 +10,5 @@ javaexec.sh.in link-warning.h mdate-sh missing -mkinstalldirs texinfo.tex ylwrap diff --git a/lib/.cvsignore b/lib/.cvsignore index 9175bcc4..6a7d55a3 100644 --- a/lib/.cvsignore +++ b/lib/.cvsignore @@ -17,7 +17,6 @@ dirname.h dup-safer.c error.c error.h -exit.h exitfail.c exitfail.h fd-safer.c @@ -69,7 +68,9 @@ unistd.h unistd_.h unlocked-io.h verify.h +wchar.h wchar_.h +wctype.h wctype_.h wcwidth.h xalloc-die.c