Mercurial > gnulib
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 |
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 | 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 | 185 * Adding zero to a null pointer does not change the pointer. |
186 For example, 0 + (char *) NULL == (char *) NULL. | |
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/>. */ |