From bbb44d83f8b72e9e432ce9ae89d20e8e42dfc9f1 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 4 Apr 2007 22:36:54 +0000 Subject: [PATCH] * 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. --- ChangeLog | 11 ++- README-cvs => README-hacking | 35 ++++--- bootstrap | 174 +++++++++++++++++++++++------------ build-aux/.cvsignore | 2 - lib/.cvsignore | 3 +- 5 files changed, 147 insertions(+), 78 deletions(-) rename README-cvs => README-hacking (66%) 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-hacking similarity index 66% rename from README-cvs rename to README-hacking index 6f3bcb4c..28b4ee5e 100644 --- a/README-cvs +++ b/README-hacking @@ -1,13 +1,15 @@ -*- outline -*- -These notes intend to help people working on the CVS versions of -Bison. +These notes intend to help people working on the checked-out sources. +These requirements do not apply when building from a distribution tarball. * 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: +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 @@ -17,8 +19,9 @@ stable versions of the maintainer tools we depend upon, including: - 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). +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. @@ -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, 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 -Bison from CVS. For the records, you will find all the relevant -information on: +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 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 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, -and the CVS master copy: +and the master copy: $ 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. 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 -- 2.47.2