standards: Releases
1
1 7.3 Making Releases
1 ===================
1
1 You should identify each release with a pair of version numbers, a major
1 version and a minor. We have no objection to using more than two
1 numbers, but it is very unlikely that you really need them.
1
1 Package the distribution of 'Foo version 69.96' up in a gzipped tar
1 file with the name 'foo-69.96.tar.gz'. It should unpack into a
1 subdirectory named 'foo-69.96'.
1
1 Building and installing the program should never modify any of the
1 files contained in the distribution. This means that all the files that
1 form part of the program in any way must be classified into "source
1 files" and "non-source files". Source files are written by humans and
1 never changed automatically; non-source files are produced from source
1 files by programs under the control of the Makefile.
1
1 The distribution should contain a file named 'README' with a general
1 overview of the package:
1
1 * the name of the package;
1
1 * the version number of the package, or refer to where in the package
1 the version can be found;
1
1 * a general description of what the package does;
1
1 * a reference to the file 'INSTALL', which should in turn contain an
1 explanation of the installation procedure;
1
1 * a brief explanation of any unusual top-level directories or files,
1 or other hints for readers to find their way around the source;
1
1 * a reference to the file which contains the copying conditions. The
1 GNU GPL, if used, should be in a file called 'COPYING'. If the GNU
1 LGPL is used, it should be in a file called 'COPYING.LESSER'.
1
1 Naturally, all the source files must be in the distribution. It is
1 okay to include non-source files in the distribution along with the
1 source files they are generated from, provided they are up-to-date with
1 the source they are made from, and machine-independent, so that normal
1 building of the distribution will never modify them. We commonly
1 include non-source files produced by Autoconf, Automake, Bison, 'flex',
1 TeX, and 'makeinfo'; this helps avoid unnecessary dependencies between
1 our distributions, so that users can install whichever versions of
1 whichever packages they like. Do not induce new dependencies on other
1 software lightly.
1
1 Non-source files that might actually be modified by building and
1 installing the program should *never* be included in the distribution.
1 So if you do distribute non-source files, always make sure they are up
1 to date when you make a new distribution.
1
1 Make sure that all the files in the distribution are world-readable,
1 and that directories are world-readable and world-searchable (octal mode
1 755). We used to recommend that all directories in the distribution
1 also be world-writable (octal mode 777), because ancient versions of
1 'tar' would otherwise not cope when extracting the archive as an
1 unprivileged user. That can easily lead to security issues when
1 creating the archive, however, so now we recommend against that.
1
1 Don't include any symbolic links in the distribution itself. If the
1 tar file contains symbolic links, then people cannot even unpack it on
1 systems that don't support symbolic links. Also, don't use multiple
1 names for one file in different directories, because certain file
1 systems cannot handle this and that prevents unpacking the distribution.
1
1 Try to make sure that all the file names will be unique on MS-DOS. A
1 name on MS-DOS consists of up to 8 characters, optionally followed by a
1 period and up to three characters. MS-DOS will truncate extra
1 characters both before and after the period. Thus, 'foobarhacker.c' and
1 'foobarhacker.o' are not ambiguous; they are truncated to 'foobarha.c'
1 and 'foobarha.o', which are distinct.
1
1 Include in your distribution a copy of the 'texinfo.tex' you used to
1 test print any '*.texinfo' or '*.texi' files.
1
1 Likewise, if your program uses small GNU software packages like
1 regex, getopt, obstack, or termcap, include them in the distribution
1 file. Leaving them out would make the distribution file a little
1 smaller at the expense of possible inconvenience to a user who doesn't
1 know what other files to get.
1