Update various hacking notes.
[autoconf.git] / README-hacking
blob0b8b0d93266f2220ec67aaa8d247a77b559bb859
1 -*- outline -*-
3 These notes intend to help people working on the checked-out sources.
4 These requirements do not apply when building from a distribution
5 tarball.  Don't put this file into the distribution.  Don't mention it
6 in the ChangeLog.  You may want to also see HACKING for
7 maintainer-specific rules.
9 * Requirements
11 We've opted to keep only the highest-level sources in the GIT repository.
12 This eases our maintenance burden, (fewer merges etc.), but imposes more
13 requirements on anyone wishing to build from the just-checked-out sources.
14 For example, you have to use the latest stable versions of the maintainer
15 tools we depend upon, including:
17 - Autoconf 2.60+ <http://www.gnu.org/software/autoconf/>
18 - Automake 1.10+ <http://www.gnu.org/software/automake/>
19 - Help2man 1.29+ <http://www.gnu.org/software/help2man/>
20 - M4 1.4.5+ <http://www.gnu.org/software/m4/>
21 - Perl 5.005_03+ <http://www.cpan.org/>
22 - Texinfo 4.8+ <http://www.gnu.org/software/texinfo/>
24 The following are useful as well, if you want to be able to run commands
25 like "make dist-lzma" or "make distcheck":
27 - Gzip <http://www.gnu.org/software/gzip/>
28 - Tar <http://www.gnu.org/software/tar/>
29 - LZMA Utils 4.32+ <http://tukaani.org/lzma/>
31 Only building the initial full source tree will be a bit painful.
32 Later, a plain `git pull && make' should be sufficient.
34 * First GIT checkout
36 You can get an anonymous copy of the source repository using any one
37 of these three methods, although the CVS mirror is less tested:
39   $ git clone git://git.sv.gnu.org/autoconf
40   $ git clone http://git.sv.gnu.org/r/autoconf.git
41   $ cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/srv/git/autoconf.git \
42       co -d autoconf HEAD
44 If you have a Savannah user name and commit rights to the Autoconf
45 project, you should use this instead:
47   $ git clone <username>@git.sv.gnu.org:/srv/git/autoconf.git
49 The next step is to generate files like configure and Makefile.in:
51   $ cd autoconf
52   $ autoreconf -vi
54 Since we're building autoconf itself, and its tests are picky, the
55 following procedure includes an extra step to ensure that some
56 generated files are regenerated using the tools just build by "make"
57 (if you use GNU make, the file GNUmakefile sets PATH for you):
59   $ ./configure
60   $ make
61   $ ( PATH=`pwd`/tests:$PATH; autoreconf -vi )
62   $ make check
64 At this point, there should be no difference between your local copy,
65 and the GIT master copy:
67   $ git diff
69 should output no difference.
71 The testsuite is run by 'make check'.  You may find it useful to run a
72 subset of the testsuite; for example, all tests with the 'm4sugar'
73 keyword as well as test 10:
75   $ make check TESTSUITEFLAGS='10 -k m4sugar'
77 * Submitting patches
79 All patches should be submitted to <autoconf-patches@gnu.org> for
80 review, in context or unified diff format against the latest sources.
81 In most cases, a patch should include a test case, to ensure that
82 regressions do not creep back in.  Remember to add documentation and a
83 NEWS entry for anything that is visible to the user.
85 You may find it useful to install the git-merge-changelog merge driver:
86 http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/git-merge-changelog.c
88 If your change is significant (i.e., if it adds more than ~10 lines),
89 then you'll have to have a copyright assignment on file with the FSF.
90 Since that involves first an email exchange between you and the FSF,
91 and then the exchange (FSF to you, then back) of an actual sheet of paper
92 with your signature on it, and finally, some administrative processing
93 in Boston, the process can take a few weeks.
95 The forms to choose from are in gnulib's doc/Copyright/ directory.
96 If you want to assign a single change, you should use the file,
97 doc/Copyright/request-assign.changes:
99     http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob;f=doc/Copyright/request-assign.changes;hb=HEAD
101 If you would like to assign past and future autoconf work,
102 you'd use doc/Copyright/request-assign.future:
104     http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob;f=doc/Copyright/request-assign.future;hb=HEAD
106 Enjoy!
108 -----
110 Copyright (C) 2002-2008 Free Software Foundation, Inc.
112 This program is free software: you can redistribute it and/or modify
113 it under the terms of the GNU General Public License as published by
114 the Free Software Foundation, either version 3 of the License, or
115 (at your option) any later version.
117 This program is distributed in the hope that it will be useful,
118 but WITHOUT ANY WARRANTY; without even the implied warranty of
119 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
120 GNU General Public License for more details.
122 You should have received a copy of the GNU General Public License
123 along with this program.  If not, see <http://www.gnu.org/licenses/>.