Use THREAD_GETMEM and THREAD_SETMEM to access the elements of the
[kopensolaris-gnu/glibc.git] / README-alpha
1                          GNU libc SNAPSHOT SYSTEM
2                             (general info)
3                            Updated 1997-9-26
4
5 WHAT ARE GNU libc SNAPSHOTS
6 ---------------------------
7
8 Snapshots are an "image" of the main glibc development tree, captured at a
9 particular random instant in time.  When you use the snapshots, you should be
10 able to maintain a local copy of libc that is no more than one day older than
11 the official source tree used by the libc maintainers.
12
13 The primary purpose of providing snapshots is to widen the group of motivated
14 developers that would like to help test, debug, and enhance glibc, by providing
15 you with access to the "latest and greatest" source.  This has several
16 advantages, and several disadvantages.
17
18     First the advantages:
19
20     o   Once we have a large base of motivated testers using the snapshots,
21         this should provide good coverage across all currently supported
22         glibc hosts and targets.  If a new bug is introduced in glibc due to
23         fixing another bug or ongoing development, it should become
24         obvious much more quickly and get fixed before the next general
25         net release.  This should help to reduce the chances of glibc being
26         released to the general public with a major bug that went unnoticed
27         during the release cycle testing because they are machine dependent.
28         We hope to greatly improve glibc's stability and reliability by
29         involving more people and more execution environments in the
30         prerelease testing.
31
32     o   With access to the latest source, any diffs that you send to fix
33         bugs or add new features should be much easier for the glibc team
34         to merge into the official source base (after suitable review
35         of course).  This encourages us to merge your changes quicker,
36         while they are still "fresh".
37
38     o   Once your diffs are merged, you can obtain a new copy of glibc
39         containing your changes almost immediately.  Thus you do not
40         have to maintain local copies of your changes for any longer
41         than it takes to get them merged into the official source base.
42         This encourages you to send in changes quicker.
43
44     And the disadvantages:
45
46     o   The snapshot you get will be largely untested and of unknown quality.
47         It may fail to configure or compile.  It may have serious bugs.
48         You should always keep a copy of the last known working version
49         before updating to the current snapshot, or at least be able to
50         regenerate a working version if the latest snapshot is unusable
51         in your environment for some reason.
52
53         If a production version of glibc has a bug and a snapshot has the fix,
54         and you care about stability, you should put only the fix for that
55         particular problem into your production version.  Of course, if you
56         are eager to test glibc, you can use the snapshot versions in your
57         daily work, but users who have not been consulted about whether they
58         feel like testing glibc should generally have something which is at
59         least as bug free as the last released version.
60
61     o   Providing timely response to your questions, bug reports, and
62         submitted patches will require the glibc development team to allocate
63         time from an already thin time budget.  Please try to help us make
64         this time as productive as possible.  See the section below about
65         how to submit changes.
66
67
68 WHO SHOULD TRY THE SNAPSHOTS
69 ----------------------------
70
71 Remember, these are snapshots not tested versions.  So if you use
72 these versions you should be able to
73
74     o   make sure your system stays usable
75
76     o   locate and hopefully fix problems
77
78     o   to port glibc to a new target yourself
79
80 You should not use the snapshots if
81
82     o   your system is needed in a production environment which needs
83         stability
84
85     o   you expect us to fix your problems since you somehow depend on them.
86         You must be willing to fix the problems yourself, we don't want to
87         see "I have problems, fix this" messages.
88
89
90 HOW TO GET THE SNAPSHOTS
91 ------------------------
92
93 At the moment we provide a full snapshot weekly (every sunday), so
94 that users getting a snapshot for the first time, or updating after
95 a long period of not updating, can get the latest version in a single
96 operation.  Along with the full snapshot, we will provide incremental
97 diffs on a nearly daily basis (whenever code changes).  Each daily
98 diff will be relative to the source tree after applying all previous
99 daily diffs.  The daily diffs are for people who have relatively low
100 bandwidth ftp or uucp connections.
101
102 The files will be available via anonymous ftp from alpha.gnu.org, in
103 directory /gnu/libc and on linux.kernel.org in /pub/software/libs/glibc.  The
104 directories should look something like:
105
106         libc-970921.tar.gz
107         libc-970917-970922.diff.gz
108         libc-970922-970925.diff.gz
109         .
110         .
111         .
112
113 Please note that the snapshots on alpha.gnu.org and on
114 linux.kernel.org are not always in sync. Patches to some files might
115 appear a day a diff earlier or later on alpha than on kernel.
116 Use always alpha or always kernel but don't mix them.
117
118 There are sometimes additionally test releases of the add-ons available in
119 these directories.  If a new version of an add-on is available it is normally
120 required for the corresponding snapshot so always pay attention for these.
121
122 Note that we provide GNU gzip compressed files only.  You can ftp gzip
123 from ftp.gnu.org in directory pub/gnu.
124
125 In some cases the dates for diffs and snapshots do not match like in the
126 example above.  The full release is for 970921 but the patch is for
127 970917-970922.  This only means that nothing changed between 970917 and 970922
128 and that you have to use this patch on top of the 970921 snapshot since the
129 patch is made on 970922.
130
131 Also, as the gcc developers did with their gcc snapshot system, even though we
132 will make the snapshots available on a publically accessible ftp area, we ask
133 that recipients not widely publicise their availability.  The motivation for
134 this request is not to hoard them, but to avoid the situation where the
135 general glibc user base naively attempts to use the snapshots, has trouble with
136 them, complains publically, and the reputation of glibc declines because of a
137 perception of instability or lack of quality control.
138
139
140 GLIBC TEST SUITE
141 ----------------
142
143 A test suite is distributed as an integral part of the snapshots.  A simple
144 "make check" in your build directory is sufficient to run the tests.  glibc
145 should pass all tests and if any fails, please report it.  A failure might not
146 originate from a bug in glibc but also from bugs in the tools, e.g. with gcc
147 2.7.2.x the math tests fail some of the tests because of compiler bugs.
148
149 Note that the test suite is still in its infancy.  The tests themselves only
150 cover a small portion of libc features, and where tests do exist for a feature
151 they are not exhaustive.  New tests are welcome.
152
153
154 GETTING HELP, GLIBC DISCUSSIONS, etc
155 ------------------------------------
156
157 People who want to help with glibc and who test out snapshots regularly should
158 get on the libc-alpha@cygnus.com mailing list by sending an email to
159 libc-alpha-request@cygnus.com.  This list is meant (as the name suggests)
160 for the discussion of test releases and also reports for them.  People who are
161 on this list are welcome to post questions of general interest.
162
163 People who are not only willing to test the snapshots but instead really want
164 to help developing glibc should contact libc-hacker-request@cygnus.com.org to
165 be put on the developers mailing list.  This list is really only meant for
166 developers.  No questions about installation problems or other simple topics
167 are wanted nor will they be answered.
168
169 Do *not* send any questions about the snapshots or patches specific to the
170 snapshots to bug-glibc@gnu.org.  Nobody there will have any idea what
171 you are talking about and it will just cause confusion.
172
173
174 BUG REPORTS
175 -----------
176
177 Send bug reports directly to Ulrich Drepper <drepper@gnu.org>.  Please
178 do *not* use the glibcbug script for reporting bugs in the snapshots.
179 glibcbug should only be used for problems with the official released versions.
180 We don't like bug reports in the bug database because otherwise the impression
181 of instability or lack of quality control of glibc as a whole might manifest
182 in people's mind.
183
184 Note that since no testing is done on the snapshots, and snapshots may even be
185 made when glibc is in an inconsistent state, it may not be unusual for an
186 occasional snapshot to have a very obvious bug, such as failure to compile on
187 *any* machine.  It is likely that such bugs will be fixed by the next
188 snapshot, so it really isn't necessary to report them unless they persist for
189 a couple of days.
190
191 Missing files should always be reported, since they usually mean there is a
192 problem with the snapshot-generating process and we won't know about them
193 unless someone tells us.
194
195 Bugs which are non-obvious, such as failure to compile on only a specific
196 machine, a new machine dependent or obscure bug (particularly one not detected
197 by the testsuite), etc should be reported when you discover them, or have a
198 suggested patch to fix them.
199
200
201 FORMAT FOR PATCHES
202 ------------------
203
204 If you have a fix for a bug, or an enhancement to submit, send your patch to
205 Ulrich Drepper <drepper@gnu.org>.  Here are some simple guidelines for
206 submitting patches:
207
208     o   Use "unified diffs" for patches.  A typical command for generating
209         context diffs is "diff -ru glibc-old glibc-patched".
210
211     o   Use the "minimalist approach" for patches.  That is, each patch
212         should address only one particular bug, new feature, etc.  Do not
213         save up many unrelated changes and submit them all in one big
214         patch, since in general, the larger the patch the more difficult
215         it is for us to decide if the patch is either correct or
216         desirable.  And if we find something about the patch that needs
217         to be corrected before it can be installed, we would have to reject
218         the entire patch, which might contain changes which otherwise would
219         be accepted if submitted separately.
220
221     o   Submit a sample ChangeLog entry with your patch.  See the existing
222         glibc ChangeLog for examples of what a ChangeLog entry should look
223         like.  The emacs command ^X4A will create a ChangeLog entry header
224         for you.
225
226
227 BUILDING SNAPSHOTS
228 ------------------
229
230 The `best' way to build glibc is to use an extra directory, e.g.:
231 tar xzf libc-970921.tar.gz
232 mkdir build-glibc
233 cd build-glibc
234 ../libc-970921/configure ...
235
236 In this way you can easily clean up (since `make clean' doesn't work at
237 the moment) and rebuild glibc.
238
239
240 NECESSARY TOOLS
241 ---------------
242
243 For the recommended versions of gcc, binutils, make, texinfo, gettext,
244 autoconf and other tools which might be especially needed when using patches,
245 please read the file INSTALL.
246
247
248 HOW CAN YOU HELP
249 ----------------
250
251 It helps already a lot if you just install glibc on your system and try to
252 solve any problems.  You might want to look at the file `PROJECTS' and help
253 with one of those projects, fix some bugs (see `BUGS' or the bug database),
254 port to an unsupported platform, ...
255
256
257 FURTHER DOCUMENTATION
258 ---------------------
259
260 A lot of questions are answered in the FAQ.  The files `INSTALL', `README' and
261 `NOTES' contain the most important documentation.  Furthermore glibc has its
262 own 700+ pages info documentation, ...
263
264
265
266 And finally a word of caution: The libc is one of the most fundamental parts
267 of your system - and these snapshots are untested and come without any
268 guarantee or warranty.  You might be lucky and everything works or you might
269 crash your system.  If you install a glibc snapshot as primary library, you
270 should have a backup somewhere.
271
272 On many systems it is also a problem to replace the libc while the system is
273 running.  In the worst case on broken OSes some systems crash.  On better
274 systems you can move the old libc aside but removing it will cause problems
275 since there are still processes using this libc image and so you might have to
276 check the filesystem to get rid of the libc data.  One good alternative (which
277 is also safer) is to use a chroot'ed environment.
278
279 Thanks for your help and support.
280
281 Thanks to Fred Fish from Cygnus for the original version of this text
282 (for GDB).
283
284
285 Ulrich Drepper