Bug#556015: Clarify requirements for copyright file
Don Armstrong <don@debian.org> writes:
> On Mon, 05 Jul 2010, Russ Allbery wrote:
>> Well, they do, in that binNMUs do change the changelog included in the
>> package. I'm inclined to agree that it's not a big deal if we lose that
>> information in the installed package, though.
> Right; this is kind of an odd thing, because a binNMU has a source
> version which doesn't match the entry in the changelog.
>> any -> any can use (= ${binary:Version})
>> any -> all can use (= ${source:Version})
>> all -> all can use (= ${source:Version})
>>
>> The question is what to do for all -> any. Right now, I think best
>> practice is to do something like:
>>
>> (>= ${source:Version}), (<< ${source:Version}+b99)
> In general, if you had an arch all package which had to be installed, it
> should have the changelog in it, and the arch any package wouldn't.
> The only exception I can see is a case where the arch: all package
> wouldn't be a dependency of the arch: any package, but the arch: all
> package requires functionality in the arch: any package (and there isn't
> any required arch: all package from the same source). [Like a source
> package which builds a core set of binaries, and an -examples package of
> perl scripts which needs the core set to function.]
Here's a patch that is explicit about the required dependencies and
discourages the last case. Does this look good to everyone?
diff --git a/policy.sgml b/policy.sgml
index 7736ddb..c7be32f 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -573,10 +573,15 @@
<heading>Copyright considerations</heading>
<p>
- Every package must be accompanied by a verbatim copy of its
+ Every binary package must include a verbatim copy of its
copyright information and distribution license in the file
- <file>/usr/share/doc/<var>package</var>/copyright</file>
- (see <ref id="copyrightfile"> for further details).
+ <file>/usr/share/doc/<var>package</var>/copyright</file> or
+ symlink the <file>/usr/share/doc/<var>package</var></file>
+ directory to a package that does (see <ref id="copyrightfile">
+ for further details). Every source package must include a
+ verbatim copy of its copyright information and distribution
+ license in the file <file>debian/copyright</file>
+ (see <ref id="dpkgcopyright">).
</p>
<p>
@@ -1679,12 +1684,11 @@
<sect id="dpkgcopyright">
<heading>Copyright: <file>debian/copyright</file></heading>
<p>
- Every package must be accompanied by a verbatim copy of its
- copyright information and distribution license in the file
- <file>/usr/share/doc/<var>package</var>/copyright</file>
- (see <ref id="copyrightfile"> for further details). Also see
- <ref id="pkgcopyright"> for further considerations related
- to copyrights for packages.
+ Every source package must include a verbatim copy of
+ its copyright information and distribution license in the file
+ <file>debian/copyright</file> (see <ref id="copyrightfile"> for
+ further details). Also see <ref id="pkgcopyright"> for further
+ considerations related to copyrights for packages.
</p>
</sect>
<sect>
@@ -9247,7 +9251,7 @@ END-INFO-DIR-ENTRY
</p>
</sect>
- <sect>
+ <sect id="addl-docs">
<heading>Additional documentation</heading>
<p>
@@ -9289,21 +9293,65 @@ END-INFO-DIR-ENTRY
</p>
<p>
- <file>/usr/share/doc/<var>package</var></file> may be a symbolic
- link to another directory in <file>/usr/share/doc</file> only if
- the two packages both come from the same source and the
- first package Depends on the second.<footnote>
- <p>
- Please note that this does not override the section on
- changelog files below, so the file
- <file>/usr/share/doc/<var>package</var>/changelog.Debian.gz</file>
- must refer to the changelog for the current version of
- <var>package</var> in question. In practice, this means
- that the sources of the target and the destination of the
- symlink must be the same (same source package and
- version).
- </p>
- </footnote>
+ If two packages should share the same documentation, including
+ the copyright file and the Debian
+ changelog, <file>/usr/share/doc/<var>package</var></file> may be
+ a symbolic link to the documentation directory
+ in <file>/usr/share/doc</file> included in another package.
+ This may only be done if all of the following requirements are
+ met:
+ <enumlist>
+ <item>
+ The two packages are built from the same source package.
+ </item>
+ <item>
+ The package containing the symlink depends strongly
+ (<tt>Depends</tt> or <tt>Pre-Depends</tt>) on the package
+ containing the the <file>/usr/share/doc</file> and the files
+ required to be in that directory. This dependency may be
+ indirect through other packages (for example, packages A and
+ B may have symlinks pointing to package C with A depending
+ on B and B depending on C), but only if all packages
+ involved in the dependency chain are built from the same
+ source package.
+ </item>
+ <item>
+ The packages are the same version (both source and Debian
+ revision) with the possible exception of binary-only
+ rebuilds of one of the packages, since otherwise
+ the <file>changelog.Debian.gz</file> in one of the two
+ packages would not be the changelog for the latest version.
+ This requires a dependency that ensures exactly the right
+ version of the other package be installed. For a dependency
+ between two binary-dependent packages, use:
+ <example>
+Depends: foo (= ${binary:Version})
+ </example>
+ For a dependency between two architecture-independent
+ packages or from an architecture-dependent package to an
+ architecture-independent package, use:
+ <example>
+Depends: foo (= ${source:Version})
+ </example>
+ Putting the symlink in an architecture-independent package
+ and the documentation directory in an architecture-dependent
+ package should be avoided if the documentation can be moved
+ to an architecture-independent package instead, but if
+ required, a dependency similar to:
+ <example>
+Depends: foo (>= ${source:Version}), foo (<< ${source:Version}+b99)
+ </example>
+ can be used.
+ </item>
+ <item>
+ The <file>/usr/share/doc/<var>package</var>/copyright</file>
+ file contained in the other package must contain the
+ copyright information and distribution license for both
+ packages and must meet all of the requirements for both
+ packages. See <ref id="copyrightfile"> for more
+ information.
+ </item>
+ </enumlist>
</p>
<p>
@@ -9349,39 +9397,55 @@ END-INFO-DIR-ENTRY
<heading>Copyright information</heading>
<p>
- Every package must be accompanied by a verbatim copy of its
+ Every binary package must either include a verbatim copy of its
copyright information and distribution license in the file
- <file>/usr/share/doc/<var>package</var>/copyright</file>. This
- file must neither be compressed nor be a symbolic link.
+ <file>/usr/share/doc/<var>package</var>/copyright</file> or must
+ include a symlink
+ named <file>/usr/share/doc/<var>package</var></file> that points
+ to the <file>/usr/share/doc</file> directory of another package
+ that includes the copyright file.<footnote>
+ The <package>perl-base</package> and <package>perl</package>
+ packages do not meet these requirements.
+ <package>perl-base</package> contains the copyright file for
+ both packages in the location appropriate for
+ the <package>perl</package>, and <package>perl</package> does
+ not include either a symlink or a copyright file. Fixing this
+ would be complex and result in potentially fragile upgrades,
+ in part because <package>perl-base</package> is essential.
+ This is therefore permitted as a special exception. Other
+ packages do not have the added complexity of being essential
+ and do not get the same exception.
+ </footnote>
+ The second option may only be used if all the requirements
+ described in <ref id="addl-docs"> are met.
</p>
<p>
- In addition, the copyright file must say where the upstream
- sources (if any) were obtained. It should name the original
- authors of the package and the Debian maintainer(s) who were
- involved with its creation.
+ The copyright file must neither be compressed nor be a symbolic
+ link.
</p>
<p>
- Packages in the <em>contrib</em> or <em>non-free</em> archive
- areas should state in the copyright file that the package is not
- part of the Debian GNU/Linux distribution and briefly explain
- why.
+ In addition to the copyright and distribution license, the
+ copyright file must say where the upstream sources (if any) were
+ obtained. Packages in the <em>contrib</em> or <em>non-free</em>
+ archive areas should state in the copyright file that the
+ package is not part of the Debian GNU/Linux distribution and
+ briefly explain why.
</p>
<p>
A copy of the file which will be installed in
<file>/usr/share/doc/<var>package</var>/copyright</file> should
- be in <file>debian/copyright</file> in the source package.
- </p>
-
- <p>
- <file>/usr/share/doc/<var>package</var></file> may be a symbolic
- link to another directory in <file>/usr/share/doc</file> only if
- the two packages both come from the same source and the
- first package Depends on the second. These rules are
- important because copyrights must be extractable by
- mechanical means.
+ normally be in <file>debian/copyright</file> in the
+ corresponding source package. If a source package produces
+ binary packages with separate copyright files (if, for instance,
+ different binary packages produced from one source package have
+ substantially different distribution licenses), it may include
+ multiple copyright files for installation into the different
+ binary packages, but <file>debian/copyright</file> in the source
+ package must still contain the copyright and distribution
+ license for the entirety of the source package.
</p>
<p>
--
Russ Allbery (rra@debian.org) <http://www.eyrie.org/~eagle/>
Reply to: