[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: