annotate README @ 10246:50a9076d476d

Make gnulib-cache.m4 easier to diff. * gnulib-tool (func_import): Allow newlines when reading cached gl_MODULES, and generate newlines when outputting gnulib-cache.m4. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Mon, 23 Jun 2008 11:30:06 -0600
parents a9ad63cc6c1a
children 5ebb27d6a0cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
1 Gnulib
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
2 ======
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
3
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
4 Gnulib is intended to be the canonical source for most of the important
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
5 "portability" and/or common files for GNU projects. These are files
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
6 intended to be shared at the source level; Gnulib is not a library meant
6506
a199553cf8b5 Gnulib doesn't generate a tarball.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6019
diff changeset
7 to be installed and linked against. Unlike most projects, Gnulib does
a199553cf8b5 Gnulib doesn't generate a tarball.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6019
diff changeset
8 not normally generate a source tarball distribution; instead, developers
a199553cf8b5 Gnulib doesn't generate a tarball.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6019
diff changeset
9 should just grab modules directly from the repository.
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
10
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
11 While portability across operating systems is not one of GNU's primary
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
12 goals, it has helped introduce many people to the GNU system, and is
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
13 worthwhile when it can be achieved at a low cost. This collection helps
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
14 lower that cost.
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
15
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
16
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
17 Contributing to Gnulib
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
18 ======================
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
19 All software here is Copyright (c) Free Software Foundation - you need
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
20 to have filled out an assignment form for a project that uses the
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
21 module for that contribution to be accepted here.
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
22
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
23 If you have a piece of code that you would like to contribute, please
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
24 email bug-gnulib@gnu.org. You can review the archives, subscribe, etc.,
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
25 via http://lists.gnu.org/mailman/listinfo/bug-gnulib.
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
26
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
27 Generally we are looking for files that fulfill at least one of the
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
28 following requirements:
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
29
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
30 * If your .c and .h files define functions that are broken or
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
31 missing on some other system, we should be able to include it.
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
32
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
33 * If your functions remove arbitrary limits from existing
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
34 functions (either under the same name, or as a slightly different
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
35 name), we should be able to include it.
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
36
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
37 If your functions define completely new but rarely used functionality,
4415
d95557dd7a75 spelling.
Bruno Haible <bruno@clisp.org>
parents: 4396
diff changeset
38 you should probably consider packaging it as a separate library.
4393
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
39
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
40
5258
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
41 License
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
42 -------
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
43 Gnulib contains code both under GPL and LGPL. Because several packages
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
44 that use Gnulib are GPL, the files state they are licensed under GPL.
5258
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
45 However, to support LGPL projects as well, you may use some of the
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
46 files under LGPL. The "License:" information in the files under
6016
699468ab4fea 2005-08-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
Simon Josefsson <simon@josefsson.org>
parents: 5848
diff changeset
47 modules/ clarifies the real license that applies to the module source.
5258
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
48
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
49 Keep in mind that if you submit patches to files in Gnulib, you should
6016
699468ab4fea 2005-08-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
Simon Josefsson <simon@josefsson.org>
parents: 5848
diff changeset
50 license them under a compatible license, which means that sometimes
5258
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
51 the contribution will have to be LGPL, if the original file is
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
52 available under LGPL via a "License: LGPL" information in the
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
53 projects' modules/ file.
bff440dded40 Note about licensing, from Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 5073
diff changeset
54
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
55
4393
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
56 How to add a new module
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
57 -----------------------
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
58 * Add the header files and source files to lib/.
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
59 * If the module needs configure-time checks, write an autoconf
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
60 macro for it in m4/<module>.m4. See m4/README for details.
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
61 * Write a module description modules/<module>, based on modules/TEMPLATE.
6951
9934ce51cefd Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents: 6506
diff changeset
62 * If the module contributes a section to the end-user documentation,
9934ce51cefd Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents: 6506
diff changeset
63 put this documentation in doc/<module>.texi and add it to the "Files"
9934ce51cefd Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents: 6506
diff changeset
64 section of modules/<module>. Most modules don't do this; they have only
9934ce51cefd Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents: 6506
diff changeset
65 documentation for the programmer (= gnulib user). Such documentation
9934ce51cefd Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents: 6506
diff changeset
66 usually goes into the lib/ source files. It may also go into doc/;
9934ce51cefd Mention where to put documentation.
Bruno Haible <bruno@clisp.org>
parents: 6506
diff changeset
67 but don't add it to the module description in this case.
4393
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
68 * Add the module to the list in MODULES.html.sh.
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
69
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
70 You can test that a module builds correctly with:
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
71 $ ./gnulib-tool --create-testdir --dir=/tmp/testdir module1 ... moduleN
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
72 $ cd /tmp/testdir
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
73 $ ./configure && make
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
74
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
75 Other things:
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
76 * Check the license and copyright year of headers.
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
77 * Check that the source code follows the GNU coding standards;
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
78 see <http://www.gnu.org/prep/standards>.
4393
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
79 * Add source files to config/srclist* if they are identical to upstream
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
80 and should be upgraded in gnulib whenever the upstream source changes.
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
81 * Include header files in source files to verify the function prototypes.
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
82 * Make sure a replacement function doesn't cause warnings or clashes on
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
83 systems that have the function.
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
84 * Autoconf functions can use gl_* prefix. The AC_* prefix is for
03ca5982ec96 Add a section "how to add a new module", suggested by Simon Josefsson.
Bruno Haible <bruno@clisp.org>
parents: 3563
diff changeset
85 autoconf internal functions.
4768
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
86 * Build files only if they are needed on a platform. Look at the
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
87 alloca and fnmatch modules for how to achieve this. If for some
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
88 reason you cannot do this, and you have a .c file that leads to an
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
89 empty .o file on some platforms (through some big #if around all the
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
90 code), then ensure that the compilation unit is not empty after
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
91 preprocessing. One way to do this is to #include <stddef.h> or
3027c8485825 Rework advice for preventing empty .o files.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4726
diff changeset
92 <stdio.h> before the big #if.
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
93
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
94 Portability guidelines
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
95 ----------------------
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
96
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
97 Gnulib code is intended to be portable to a wide variety of platforms,
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
98 not just GNU platforms.
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
99
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
100 Many Gnulib modules exist so that applications need not worry about
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
101 undesirable variability in implementations. For example, an
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
102 application that uses the 'malloc' module need not worry about (malloc
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
103 (0)) returning NULL on some Standard C platforms; and 'time_r' users
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
104 need not worry about localtime_r returning int (not char *) on some
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
105 platforms that predate POSIX 1003.1-2001.
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
106
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
107 Originally much of the Gnulib code was portable to ancient hosts like
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
108 4.2BSD, but it is a maintenance hassle to maintain compatibility with
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
109 unused hosts, so currently we assume at least a freestanding C89
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
110 compiler, possibly operating with a C library that predates C89. The
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
111 oldest environment currently ported to is probably SunOS 4 + GCC 1.x,
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
112 though we haven't tested this exact combination. SunOS 4 last shipped
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
113 on 1998-09-30, and Sun dropped support for it on 2003-10-01, so at
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
114 some point we may start assuming a C89 library as well.
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
115
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
116 Because we assume a freestanding C89 compiler, Gnulib code can include
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
117 <float.h>, <limits.h>, <stdarg.h>, and <stddef.h> unconditionally. It
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
118 can also include hosted headers like <errno.h> that were present in
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
119 Unix Version 7 and are thus widely available. Similarly, many modules
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
120 include <sys/types.h> even though it's not even in C99; that's OK
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
121 since <sys/types.h> has been around nearly forever. <string.h> and
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
122 <stdlib.h> were not in Unix Version 7, so they weren't universally
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
123 available on ancient hosts, but they are both in SunOS 4 (the oldest
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
124 platform still in relatively-common use) so Gnulib assumes them now.
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
125
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
126 Even if the include files exist, they may not conform to C89.
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
127 However, GCC has a "fixincludes" script that attempts to fix most
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
128 C89-conformance problems. So Gnulib currently assumes include files
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
129 largely conform to C89 or better. People still using ancient hosts
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
130 should use fixincludes or fix their include files manually.
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
131
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
132 Even if the include files conform to C89, the library itself may not.
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
133 For example, SunOS 4's (free (NULL)) can dump core, so Gnulib code
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
134 must avoid freeing a null pointer, even though C89 allows it.
5073
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
135 You can work around some of these problems by requiring the relevant
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
136 modules, e.g., the Gnulib 'free' module supplies a conforming 'free'.
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
137
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
138 The GNU coding standards allow one departure from strict C99: Gnulib
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
139 code can assume that standard internal types like size_t are no wider
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
140 than 'long'. POSIX 1003.1-2001 and the GNU coding standards both
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
141 require 'int' to be at least 32 bits wide, so Gnulib code assumes this
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
142 as well. Gnulib code makes the following additional assumptions:
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
143
8255
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
144 * With one exception noted below, signed integer arithmetic is two's
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
145 complement, without runtime overflow checking. This is the
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
146 traditional behavior, and is supported by C99 implementations that
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
147 conform to ISO/IEC 10967-1 (LIA-1) and that define signed integer
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
148 types as being modulo.
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
149
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
150 The exception is signed loop indexes. Here, the behavior is
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
151 undefined if any signed expression derived from the loop index
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
152 overflows. For example, the following code contains two such
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
153 overflows (the "i++" and the "i + 1") and therefore has undefined
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
154 behavior:
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
155
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
156 int i;
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
157 for (i = INT_MAX - 10; i <= INT_MAX; i++)
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
158 if (i + 1 < 0)
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
159 {
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
160 report_overflow ();
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
161 break;
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
162 }
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
163
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
164 This exception is a concession to modern optimizing compilers,
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
165 which can turn the above loop into code that executes the loop body
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
166 11 times, even though wraparound arithmetic would cause the loop to
77e7d77d96c7 * README: Document signed integer overflow situation more
Paul Eggert <eggert@cs.ucla.edu>
parents: 7698
diff changeset
167 iterate forever.
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
168
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
169 * There are no "holes" in integer values: all the bits of an integer
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
170 contribute to its value in the usual way.
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
171
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
172 * If two nonoverlapping objects have sizes S and T represented as
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
173 size_t values, then S + T cannot overflow. This assumption is true
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
174 for all practical hosts with flat address spaces, but it is not
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
175 always true for hosts with segmented address spaces.
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
176
4875
2f724c1e6ebe Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents: 4797
diff changeset
177 * If an existing object has size S, and if T is sufficiently small
2f724c1e6ebe Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents: 4797
diff changeset
178 (e.g., 8 KiB), then S + T cannot overflow. Overflow in this case
2f724c1e6ebe Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents: 4797
diff changeset
179 would mean that the rest of your program fits into T bytes, which
2f724c1e6ebe Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents: 4797
diff changeset
180 can't happen in realistic flat-address-space hosts.
2f724c1e6ebe Mention that S+T cannot overflow if S is the size of an existing
Paul Eggert <eggert@cs.ucla.edu>
parents: 4797
diff changeset
181
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
182 * Objects with all bits zero are treated as 0 or NULL. For example,
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
183 memset (A, 0, sizeof A) initializes an array A of pointers to NULL.
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
184
4797
84a4a0e1da42 (foo *) NULL + 0 == NULL
Paul Eggert <eggert@cs.ucla.edu>
parents: 4768
diff changeset
185 * Adding zero to a null pointer does not change the pointer.
84a4a0e1da42 (foo *) NULL + 0 == NULL
Paul Eggert <eggert@cs.ucla.edu>
parents: 4768
diff changeset
186 For example, 0 + (char *) NULL == (char *) NULL.
84a4a0e1da42 (foo *) NULL + 0 == NULL
Paul Eggert <eggert@cs.ucla.edu>
parents: 4768
diff changeset
187
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
188 The above assumptions are not required by the C or POSIX standards but
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
189 hold on all practical porting targets that we're familiar with. If
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
190 you have a porting target where these assumptions are not true, we'd
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
191 appreciate hearing of any fixes. We need fixes that do not increase
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
192 runtime overhead on standard hosts and that are relatively easy to
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
193 maintain.
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
194
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
195 With the above caveats, Gnulib code should port without problem to new
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
196 hosts, e.g., hosts conforming to C99 or to recent POSIX standards.
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
197 Hence Gnulib code should avoid using constructs (e.g., undeclared
4726
f6c445bbf87c * README: Document assumptions that 'int' is at least 32 bits
Paul Eggert <eggert@cs.ucla.edu>
parents: 4661
diff changeset
198 functions return 'int') that do not conform to C99.
4661
3d0185179f62 New section: portability guidelines.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4415
diff changeset
199
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
200 High Quality
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
201 ============
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
202
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
203 We will be developing a testsuite for these applications. The goal is
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
204 to have a 100% firm interface so that maintainers can feel free to
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
205 update to the code in git at *any* time and know that their
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
206 application will not break. This means that before any change can be
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
207 committed to the repository, a test suite program must be produced
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
208 that exposes the bug for regression testing. All experimental work
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
209 should be done on branches to help promote this.
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
210
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
211 git and CVS
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
212 ===========
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
213
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
214 Gnulib is available for anonymous checkout. In any Bourne-shell the
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
215 following should work:
9406
a9ad63cc6c1a * README: Append ".git" to git and cg examples.
Paul Eggert <eggert@cs.ucla.edu>
parents: 9309
diff changeset
216 $ git clone git://git.sv.gnu.org/gnulib.git
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
217 Or, if you prefer the CVS-like 'cogito' frontend to plain 'git':
9406
a9ad63cc6c1a * README: Append ".git" to git and cg examples.
Paul Eggert <eggert@cs.ucla.edu>
parents: 9309
diff changeset
218 $ cg clone git://git.sv.gnu.org/gnulib.git
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
219
9223
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
220 For a read-write checkout you need to have a login on savannah.gnu.org and be
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
221 a member of the gnulib project at http://savannah.gnu.org/projects/gnulib .
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
222 Then, instead of the URL
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
223 git://git.sv.gnu.org/gnulib
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
224 use the URL
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
225 ssh://<user>@git.sv.gnu.org/srv/git/gnulib
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
226 where <user> is your login name on savannah.gnu.org.
eea467fa230c Explain how to get a read-write checkout of gnulib.
Bruno Haible <bruno@linuix.haible.de>
parents: 9219
diff changeset
227
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
228 git resources:
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
229 Overview: http://en.wikipedia.org/wiki/Git_(software)
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
230 Homepage: http://git.or.cz/
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
231 Download: http://www.kernel.org/pub/software/scm/git/
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
232 Tutorial: http://git.or.cz/course/
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
233 http://www.kernel.org/pub/software/scm/git/docs/tutorial.html
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
234 FAQ: http://git.or.cz/gitwiki/GitFaq
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
235
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
236 cogito resources:
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
237 Overview: http://en.wikipedia.org/wiki/Cogito_(software)
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
238 Homepage: http://git.or.cz/cogito/
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
239 Download: http://kernel.org/pub/software/scm/cogito/
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
240 Tutorial: http://git.or.cz/course/
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
241
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
242 For those among us who have tightly limited disk space and a fast network
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
243 connection, CVS checkouts are also supported:
9219
0d037d707401 * README: Update CVS instructions.
Eric Blake <ebb9@byu.net>
parents: 8597
diff changeset
244 $ cvs -d :pserver:anonymous@pserver.git.sv.gnu.org:/gnulib.git co -d gnulib HEAD
3563
1a9a7f5d6536 Checking initial copies various licenses, README, and general COPYING document.
Jeff Bailey <jbailey@nisa.net>
parents:
diff changeset
245
9235
997c4ac150c7 Add CVS checkout update instructions.
Bruno Haible <bruno@linuix.haible.de>
parents: 9223
diff changeset
246 CVS checkouts from before 2007-09-19 can be converted to the new read-only CVS
997c4ac150c7 Add CVS checkout update instructions.
Bruno Haible <bruno@linuix.haible.de>
parents: 9223
diff changeset
247 location through commands like these:
997c4ac150c7 Add CVS checkout update instructions.
Bruno Haible <bruno@linuix.haible.de>
parents: 9223
diff changeset
248 $ find . -name Root -exec sed --in-place 's|.*|:pserver:anonymous@pserver.git.sv.gnu.org:/gnulib.git|' {} ';'
997c4ac150c7 Add CVS checkout update instructions.
Bruno Haible <bruno@linuix.haible.de>
parents: 9223
diff changeset
249 $ find . -name Repository -exec sed --in-place 's|^gnulib|/srv/git/gnulib.git/HEAD|' {} ';'
997c4ac150c7 Add CVS checkout update instructions.
Bruno Haible <bruno@linuix.haible.de>
parents: 9223
diff changeset
250
6019
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
251 Gnulib is hosted on savannah.gnu.org. The project page is
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
252 http://savannah.gnu.org/projects/gnulib.
9336c75a2ed8 typos from Ralf, other updates
Karl Berry <karl@freefriends.org>
parents: 6016
diff changeset
253
7698
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
254 Keeping Up-to-date
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
255 ==================
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
256
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
257 The best way to work with Gnulib is to check it out of git.
7698
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
258 Subscribing to the bug-gnulib@gnu.org mailing list will help you to
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
259 plan when to update your local copy of Gnulib (which you use to
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
260 maintain your software) from git. To synchronize, you can use "git pull"
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
261 or "cg update", or "cvs update -dP" if you are still using CVS.
7698
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
262
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
263 Sometimes, using an updated version of Gnulib will require you to use
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
264 newer versions of GNU Automake or Autoconf. You may find it helpful
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
265 to join the autotools-announce mailing list to be advised of such
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
266 changes.
8f2cc37b285f * README: Advise users that they might find the bug-gnulig@gnu.org
Paul Eggert <eggert@cs.ucla.edu>
parents: 7618
diff changeset
267
5073
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
268
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
269 -----
8597
c1709670004e Talk primarily about git, not CVS.
Bruno Haible <bruno@clisp.org>
parents: 8255
diff changeset
270 Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
5073
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
271
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9235
diff changeset
272 This program is free software: you can redistribute it and/or modify
5073
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
273 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9235
diff changeset
274 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9235
diff changeset
275 (at your option) any later version.
5073
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
276
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
277 This program is distributed in the hope that it will be useful,
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
278 but WITHOUT ANY WARRANTY; without even the implied warranty of
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
279 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
280 GNU General Public License for more details.
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
281
d4c310e7951f Mention that the 'free' module, LIA-1.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4875
diff changeset
282 You should have received a copy of the GNU General Public License
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9235
diff changeset
283 along with this program. If not, see <http://www.gnu.org/licenses/>. */