X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/138d4cd91642ec0c51cdf58dca8ab06f8f5c821e..81535bfa352e0a289a6b5448b37b53afb8542d79:/HACKING diff --git a/HACKING b/HACKING index 68c70a0c..10cac90a 100644 --- a/HACKING +++ b/HACKING @@ -1,8 +1,7 @@ -*- outline -*- This file attempts to describe the rules to use when hacking Bison. -Don't put this file into the distribution. Don't mention it in the -ChangeLog. +Don't put this file into the distribution. Everything related to the development of Bison is on Savannah: @@ -26,6 +25,15 @@ The correct response to most actual bugs is to write a new test case which demonstrates the bug. Then fix the bug, re-run the test suite, and check everything in. +** You may find it useful to install the git-merge-changelog merge driver: + + http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/git-merge-changelog.c + +When following the generic installation instructions there, keep in mind that +your clone of Bison's git repository already contains appropriate +.gitattributes files, and running Bison's bootstrap script will make the +necessary changes to .git/config. + * Hacking @@ -57,11 +65,22 @@ release: - runs the parsers under Valgrind. - runs the test suite with G++ as C compiler... +- run `make maintainer-push-check', which runs `make maintainer-check' + while activating the push implementation and its pull interface wrappers + in many test cases that were originally written to exercise only the + pull implementation. This makes certain the push implementation can + perform every task the pull implementation can. + +- run `make maintainer-xml-check', which runs `make maintainer-check' + while checking Bison's XML automaton report for every working grammar + passed to Bison in the test suite. The check just diffs the output of + Bison's included XSLT style sheets with the output of --report=all and + --graph. + - Change tests/atlocal/CFLAGS to add your preferred options. For instance, `-traditional' to check that the parsers are K&R. Note that it does not make sense for glr.c, which should be ANSI, - but currently is actually GNU C, nor for lalr1.cc, which anyway is - not exercised yet in the test suite. + but currently is actually GNU C, nor for lalr1.cc. * Release Procedure @@ -78,15 +97,39 @@ This covers PO files too. Sometimes a PO file contains problems that causes it to be rejected by recent Gettext releases; please report these to the Translation Project. +** Update README +Make sure the information in this file is current. Most notably, make sure it +recommends a version of GNU M4 that is compatible with the latest Bison +sources. + ** Update NEWS The version number, *and* the date of the release (including for betas). ** Update ChangeLog Should have an entry similar to `Version 1.49b.'. -Check all this in once `make distcheck' passes. + +** Update configure.ac +Be sure PACKAGE_COPYRIGHT_YEAR is up-to-date. + +** Tag the release +Before Bison will build with the right version number, you must tag the release +in git. Do this after all other changes. The command is similar to: + + git tag -a v2.3b + +The log message can be simply: + + Bison 2.3b + +** Push +Once `make distcheck' passes, push your changes and the tag. +`git push' without arguments will not push the tag. ** make alpha +FIXME: `make alpha' is not maintained and is broken. These +instructions need to be replaced or removed. + Running `make alpha' is absolutely perfect for beta releases: it makes the tarballs, the xdeltas, and prepares (in /tmp/) a proto announcement. It is so neat, that that's what I use anyway for @@ -98,13 +141,45 @@ If it fails, you're on your own... It requires GNU Make. ** Upload -Put the tarballs/xdeltas where they should be. Or put it somewhere, -and send the URL to ftp-upload@gnu.org. +The generic GNU upload procedure is at: -** Bump the version number -In configure.ac. Run `make', check this in. + http://www.gnu.org/prep/maintain/maintain.html#Automated-FTP-Uploads + +Follow the instructions there to register your information so you're permitted +to upload. Make sure your public key has been uploaded at least to +keys.gnupg.net. You can upload it with: + + gpg --keyserver keys.gnupg.net --send-keys F125BDF3 + +where F125BDF3 should be replaced with your key ID. + +Here's a brief reminder of how to roll the tarballs and upload them: + +*** make distcheck +*** gpg -b bison-2.3b.tar.gz +*** In a file named `bison-2.3b.tar.gz.directive', type: + + version: 1.1 + directory: bison + filename: bison-2.3b.tar.gz + +*** gpg --clearsign bison-2.3b.tar.gz.directive +*** ftp ftp-upload.gnu.org # Log in as anonymous. +*** cd /incoming/alpha # cd /incoming/ftp for full release. +*** put bison-2.3b.tar.gz # This can take a while. +*** put bison-2.3b.tar.gz.sig +*** put bison-2.3b.tar.gz.directive.asc +*** Repeat all these steps for bison-2.3b.tar.bz2. ** Announce +To generate a template announcement file: + + make RELEASE_TYPE=alpha gpg_key_ID=F125BDF3 announcement + +where alpha can be replaced by beta or major and F125BDF3 should be replaced +with your key ID. For an example of how to fill out the template, search the +mailing list archives for the most recent release announcement. + Complete/fix the announcement file, and send it at least to info-gnu@gnu.org (if a real release, or a ``serious beta''), bug-bison@gnu.org, help-bison@gnu.org, bison-patches@gnu.org, @@ -115,10 +190,18 @@ email to compilers@iecc.com. Do not make any Cc as the moderator will throw away anything cross-posted or Cc'ed. It really needs to be a separate message. +** Bump the version number +In configure.ac. Run `make'. So that developers don't accidentally add new +items to the old NEWS entry, create a new empty NEWS entry something like: + + Changes in version ?.? (????-??-??): + +Push these changes. + ----- -Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. This file is part of GNU Bison.