Package: debmake-doc
Version: 1.9-1
Tags: patch

Section 5.16.1 recommends running autoreconf when building a package
on Debian GNU/Linux, to improve portability to new systems.  That
brings with it considerations about automake.  The default
"strictness" level of an automake setup is the "gnu" level, which
requires files AUTHORS, ChangeLog, INSTALL, NEWS, and README along
with the Makefile.am and configure.ac files that autoreconf will
expect.  That then brings other implications for using such a package
on Debian.

Elsewhere, the document refers to the GNU Coding Standards, which is
further reason to make mention of the above files, and which get
installed and which do not get installed (COPYING and INSTALL) on
Debian.

I propose that wording like what follows be considered for the end of
Section 8.9 or 8.11.  Both of those examples set the automake
strictness level to "foreign", which is good for a simple example but
leaves out some details that could help someone new with Debian
packaging.

I tried to capture the major considerations for packages that follow
GNU standards, and think something along these lines would help:

[begin insert]
The line AM_INIT_AUTOMAKE([foreign]) in configure.ac above tells
automake to use a "foreign" strictness level, which has loose
requirements for what files are in a package.  The default strictness
level for automake is "gnu", which expects the following files in the
top-level directory: AUTHORS, INSTALL, NEWS, README, ChangeLog, and
either COPYING (with a copy of a GPL license) or COPYING.LESSER (with
a copy of a LGPL license).  If you are building such a package,
Section 5.16.1 [Autotools] of this guide recommends invoking autoreconf
in debian/rules to provide better support for porting to new architectures,
compared to just running "./configure && make".  If you intend to run
autoreconf on a package with automake set to a strictness level of "gnu",
automake will complain if the files it expects in the top-level directory
are not present.  In this case the INSTALL and COPYING (or COPYING.LESSER)
files must be present in the source directory.  However, they are not
installed on Debian systems because Debian uses its own package manager
for installation, and keeps copies of common licenses in
/usr/share/common-licenses.

The other files besides Makefile.am and configure.ac that Autotools
expects in the top-level directory (AUTHORS, NEWS, README, and
ChangeLog) can be installed in /usr/share/doc/<package>.  This
can be done by listing those files in debian/doc.  If you keep any
Autotools-generated files in the Debian package, make sure that
those files have their copyright and license information captured
in the debian/copyright file.  Their copyright notices and license
terms differ slightly, so you will have to check every one.  The
GNU Project standard practice is to leave all such files in place
if a "make distclean" leaves them, so asking upstream to remove
them is probably not the correct solution.

Running "autoreconf -ivf"  as described in Section 5.16.1 will create
a new INSTALL file even if one existed.  That file will have a copyright,
as will the GPL or LGPL in the COPYING or COPYING.LESSER file.  Therefore,
list those files in the Files-Exclude field in the first paragraph of
debian/copyright.  Also list any files that "autoreconf -ivf" creates
but that remain following a "make distclean" in the Files-Exclude field,
because autoreconf will recreate those files.  Some maintainer discretion
is allowed to leave a config.h file that should not change, etc.

Apart from those files, the only other files that must exist with the
"gnu" automake strictness level to run autoreconf in the top-level
directory are Makefile.am and configure.ac.

One of the standard "make" targets that automake creates is "distcheck".
That builds a copy of the package in a staging directory by defining
the DESTDIR variable, then creates a distribution tar file of the package
from the newly-built copy, and finally tries building from that tar file
a second time along with running various checks on the final result (see
the GNU Automake manual for further details).  It is advisable if you are
using GNU Autotools to ensure that "make distcheck" succeeds on the upstream
package before attempting to create a debianized version.  If the upstream
package fails a "make distcheck" with Autotools, it will probably have
issues on Debian.
[end insert]

Thanks,


Paul Hardy

Reply via email to