1 | -*-text-*-
|
---|
2 |
|
---|
3 | -------------------------------------------------------------------------------
|
---|
4 | Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
---|
5 | Software Foundation, Inc. This file is part of GNU Make.
|
---|
6 |
|
---|
7 | GNU Make is free software; you can redistribute it and/or modify it under the
|
---|
8 | terms of the GNU General Public License as published by the Free Software
|
---|
9 | Foundation; either version 3 of the License, or (at your option) any later
|
---|
10 | version.
|
---|
11 |
|
---|
12 | GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
|
---|
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
---|
14 | A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
---|
15 |
|
---|
16 | You should have received a copy of the GNU General Public License along with
|
---|
17 | this program. If not, see <http://www.gnu.org/licenses/>.
|
---|
18 | -------------------------------------------------------------------------------
|
---|
19 |
|
---|
20 | Obtaining CVS Code
|
---|
21 | ------------------
|
---|
22 |
|
---|
23 | This seems redundant, since if you're reading this you most likely have
|
---|
24 | already performed this step; however, for completeness, you can obtain
|
---|
25 | the GNU make source code via anonymous CVS from the FSF's Savannah
|
---|
26 | project <http://savannah.gnu.org/projects/make/>:
|
---|
27 |
|
---|
28 | $ cvs -d:pserver:[email protected]:/sources/make co make
|
---|
29 |
|
---|
30 | You might want to use the "-z3" option to get compression, and you most
|
---|
31 | certainly will want the -P option to avoid unneeded directories
|
---|
32 | cluttering up your source. Personally I add these (as well as -dP for
|
---|
33 | update) to my ~/.cvsrc file.
|
---|
34 |
|
---|
35 |
|
---|
36 | If you have an older version of CVS, you might have to login first.
|
---|
37 | There is no password; just hit the ENTER key if you are asked for one.
|
---|
38 |
|
---|
39 |
|
---|
40 | Building From CVS
|
---|
41 | -----------------
|
---|
42 |
|
---|
43 | To build GNU make from CVS, you will need Autoconf, Automake, and
|
---|
44 | Gettext, and any tools that those utilities require (GNU m4, Perl,
|
---|
45 | etc.). See the configure.in file to find the minimum versions of each
|
---|
46 | of these tools. You will also need a copy of wget.
|
---|
47 |
|
---|
48 | When building from CVS you must build in the source directory: "VPATH
|
---|
49 | builds" from remote directories are not supported. Once you've created
|
---|
50 | a distribution, of course, you can unpack it and do a VPATH build from
|
---|
51 | there.
|
---|
52 |
|
---|
53 | After checking out the code, you will need to perform these steps to get
|
---|
54 | to the point where you can run "make".
|
---|
55 |
|
---|
56 |
|
---|
57 | 1) $ autoreconf -i
|
---|
58 |
|
---|
59 | This rebuilds all the things that need rebuilding, installing
|
---|
60 | missing files as symbolic links.
|
---|
61 |
|
---|
62 | You may get warnings here about missing files like README, etc.
|
---|
63 | Ignore them, they are harmless.
|
---|
64 |
|
---|
65 |
|
---|
66 | 2) $ ./configure
|
---|
67 |
|
---|
68 | Generate a Makefile
|
---|
69 |
|
---|
70 |
|
---|
71 | 3) $ make update
|
---|
72 |
|
---|
73 | Use wget to retrieve various other files that GNU make relies on,
|
---|
74 | but does not keep in its own source tree.
|
---|
75 |
|
---|
76 | NB: You may need GNU make to correctly perform this step; if you use
|
---|
77 | a platform-local make you may get problems with missing files in doc/.
|
---|
78 |
|
---|
79 |
|
---|
80 | At this point you have successfully brought your CVS copy of the GNU
|
---|
81 | make source directory up to the point where it can be treated
|
---|
82 | more-or-less like the official package you would get from ftp.gnu.org.
|
---|
83 | That is, you can just run:
|
---|
84 |
|
---|
85 | $ make && make check && make install
|
---|
86 |
|
---|
87 | to build and install GNU make.
|
---|
88 |
|
---|
89 |
|
---|
90 | Windows builds from CVS
|
---|
91 | -----------------------
|
---|
92 |
|
---|
93 | If you have a UNIX emulation like CYGWIN you can opt to run the general
|
---|
94 | build procedure above; it will work. Be sure to read
|
---|
95 | README.W32.template for information on options you might want to use
|
---|
96 | when running ./configure.
|
---|
97 |
|
---|
98 | If you can't or don't want to do that, then rename the file
|
---|
99 | README.W32.template to README.W32 and follow those instructions.
|
---|
100 |
|
---|
101 |
|
---|
102 | Creating a Package
|
---|
103 | ------------------
|
---|
104 |
|
---|
105 | Once you have performed the above steps (including the configuration and
|
---|
106 | build) you can create a GNU make package. This is very simple, just
|
---|
107 | run:
|
---|
108 |
|
---|
109 | $ make dist-gzip
|
---|
110 |
|
---|
111 | and, if you like:
|
---|
112 |
|
---|
113 | $ make dist-bzip2
|
---|
114 |
|
---|
115 | Even better, you should run this:
|
---|
116 |
|
---|
117 | $ make distcheck
|
---|
118 |
|
---|
119 | Which will build both .gz and .bz2 package files, then unpack them into
|
---|
120 | a temporary location, try to build them, and repack them, verifying that
|
---|
121 | everything works, you get the same results, _and_ no extraneous files
|
---|
122 | are left over after the "distclean" rule--whew!! Now, _that_ is why
|
---|
123 | converting to Automake is worth the trouble! A big "huzzah!" to Tom
|
---|
124 | T. and the AutoToolers!
|
---|
125 |
|
---|
126 |
|
---|
127 | Steps to Release
|
---|
128 | ----------------
|
---|
129 |
|
---|
130 | Here are the things that need to be done (in more or less this order)
|
---|
131 | before making an official release:
|
---|
132 |
|
---|
133 | * Update the configure.in file with the new release number.
|
---|
134 | * Update the NEWS file with the release number and date.
|
---|
135 | * Create the new release in the Savannah "Bugs" Administration for
|
---|
136 | both the "Component Version" and "Fixed Release" fields.
|
---|
137 | * Create the new release in the Savannah "Patches" Administration for
|
---|
138 | the "Fixed Release" field.
|
---|
139 | * Update the Savannah bug list URL in the NEWS file to use the correct
|
---|
140 | "Fixed Release" ID number.
|
---|
141 | * Run "make distcheck" to be sure it all works.
|
---|
142 | * Commit everything.
|
---|
143 | * cvs tag <RTAG> where RTAG is constructed by replacing each "." in
|
---|
144 | the version with "-" and prefixing it with "make-".
|
---|
145 |
|
---|
146 |
|
---|
147 | Publishing a Package
|
---|
148 | --------------------
|
---|
149 |
|
---|
150 | In order to publish a package on the FSF FTP site, either the release
|
---|
151 | site ftp://ftp.gnu.org, or the prerelease site ftp://alpha.gnu.org, you
|
---|
152 | first need to have my GPG private key and my passphrase to unlock it.
|
---|
153 | And, you can't have them! So there! But, just so I remember here's
|
---|
154 | what you do:
|
---|
155 |
|
---|
156 | Make sure the "Steps to Release" are complete and committed and tagged.
|
---|
157 |
|
---|
158 | cvs -d :pserver:[email protected]:/sources/make \
|
---|
159 | export -r<RTAG> -d make-release make
|
---|
160 |
|
---|
161 | cd make-release
|
---|
162 |
|
---|
163 | <run the commands above to build the release>
|
---|
164 |
|
---|
165 | make upload-alpha # for alpha.gnu.org (pre-releases)
|
---|
166 | -OR-
|
---|
167 | make upload-ftp # for ftp.gnu.org (official releases)
|
---|
168 |
|
---|
169 | It will ask for the GPG passphrase _THREE_ times. Sigh.
|
---|
170 |
|
---|
171 |
|
---|
172 | For both final releases and pre-releases, send an email with the URL of
|
---|
173 | the package to the GNU translation robot to allow the translators to
|
---|
174 | work on it:
|
---|
175 |
|
---|
176 | <[email protected]>
|
---|
177 |
|
---|
178 |
|
---|
179 | Where to Announce
|
---|
180 | -----------------
|
---|
181 |
|
---|
182 | Create the announcement in a text file, then sign it with GPG.
|
---|
183 |
|
---|
184 | gpg --clearsign <announcement.txt>
|
---|
185 |
|
---|
186 | Upload to gnu.org, then login and send from my account there.
|
---|
187 |
|
---|
188 | Email to: [email protected], [email protected], [email protected], [email protected].
|
---|
189 | Email to: [email protected]
|
---|
190 |
|
---|
191 | Add a news item to the Savannah project site.
|
---|
192 |
|
---|
193 | Add an update to freshmeat.net.
|
---|
194 |
|
---|
195 |
|
---|
196 | Appendix A - For The Brave
|
---|
197 | --------------------------
|
---|
198 |
|
---|
199 | For those of you who trust me implicitly, or are just brave (or
|
---|
200 | foolhardy), here is a canned sequence of commands to build a GNU make
|
---|
201 | distribution package from a virgin CVS source checkout (assuming all the
|
---|
202 | prerequisites are available of course).
|
---|
203 |
|
---|
204 | This list is eminently suitable for a quick swipe o' the mouse and a
|
---|
205 | swift click o' mouse-2 into an xterm. Go for it!
|
---|
206 |
|
---|
207 | autoreconf -i
|
---|
208 | ./configure
|
---|
209 | make update
|
---|
210 | make
|
---|
211 | make check
|
---|
212 |
|
---|
213 | Or, for a debugging version:
|
---|
214 |
|
---|
215 | autoreconf -i && ./configure CFLAGS=-g && make update && make && make check
|
---|
216 |
|
---|
217 | Or, all-in-one:
|
---|
218 |
|
---|
219 | autoreconf -i && ./configure && make update && make && make check
|
---|