chiark / gitweb /
tweaked
[developers-reference.git] / developers-reference.sgml
index e5cec457ed170abee32fd4ccf90abe0ef14f0d3f..33baa4bdac96b9962f3e2d33a053e994ab3d614d 100644 (file)
@@ -6,7 +6,7 @@
   <!ENTITY % commondata  SYSTEM "common.ent" > %commondata;
 
   <!-- CVS revision of this document -->
-  <!ENTITY cvs-rev "$Revision: 1.255 $">
+  <!ENTITY cvs-rev "$Revision: 1.258 $">
 
   <!-- if you are translating this document, please notate the CVS
        revision of the original developer's reference in cvs-en-rev -->
@@ -30,7 +30,7 @@
 
       <copyright>
        <copyrightsummary>
-copyright &copy; 2004 Andreas Barth</copyrightsummary>
+copyright &copy; 2004&mdash;2005 Andreas Barth</copyrightsummary>
        <copyrightsummary>
 copyright &copy; 1998&mdash;2003 Adam Di Carlo</copyrightsummary>
        <copyrightsummary>
@@ -176,11 +176,9 @@ is not signed yet, you should try to meet a Debian maintainer in
 person to get your key signed.  There's a <url id="&url-gpg-coord;"
 name="GnuPG Key Signing Coordination page"> which should help you find
 a maintainer close to you. (If you cannot find a Debian maintainer
-close to you, there's an alternative way to pass the ID check.  You
-can send in a photo ID signed with your GnuPG key.  Having your GnuPG
-key signed is the preferred way, however.  See the
-<url id="&url-newmaint-id;" name="identification page"> for more
-information about these two options.)
+close to you, there may be alternative ways to pass the ID check.
+See the <url id="&url-newmaint-id;" name="identification page">
+for more informations.)
 
        <p>
 If you do not have an OpenPGP key yet, generate one. Every developer
@@ -197,12 +195,10 @@ You can use some other implementation of OpenPGP as well.  Note that
 OpenPGP is an open standard based on <url id="&url-rfc2440;" name="RFC
 2440">.
        <p>
-<!-- FIXME: DSS is not exactly equivalent to DSA, is it? -->
-The recommended public key algorithm for use in Debian development
-work is DSA (sometimes called ``DSS'' or ``DH/ElGamal'').
-Other key types may be used, however.  Your key length must be at least 1024
+You need a type 4 key for use in Debian Development.
+Your key length must be at least 1024
 bits; there is no reason to use a smaller key, and doing so would be
-much less secure.  Your key must be signed with at least your own user
+much less secure.  Your key must be signed with your own user
 ID; this prevents user ID tampering.  <prgn>gpg</prgn> does this
 automatically.
        <p>
@@ -1217,7 +1213,7 @@ $cfg{'delayed'} = {
 </example>
 Once you've made that change, <prgn>dupload</prgn> can be used to
 easily upload a package in one of the delayed directories:
-<example>DELAY=5 dupload --to delayed &lt;changes-file&gt;</example>
+<example>DELAY=5 dupload -X-to delayed &lt;changes-file&gt;</example>
 -->
 
 
@@ -3123,6 +3119,18 @@ rather than doing an NMU, they should just submit worthwhile patches
 to the Bug Tracking System.  Maintainers almost always appreciate
 quality patches and bug reports.
 
+      <sect1 id="nmu-katie">How dak detects NMUs
+       <p>
+Whether an upload is treated as an NMU or as a maintainer upload by
+the archive scripts and the bugtracking system (see <ref
+id="nmu-patch">) is <em>not</em> decided by looking at the version
+number (see <ref id="nmu-version">). Instead, an upload is handled as
+an NMU if the maintainer address in the <tt>.changes</tt> file is not
+binary the same as the address in the <tt>Maintainer</tt> field, or
+any of the addresses the <tt>Uploaders</tt> field, of the <tt>dsc</tt>
+file, and also if the maintainer address is not special (i.e. it is
+not set to the QA Group address).
+
       <sect1 id="nmu-terms">Terminology
        <p>
 There are two new terms used throughout this section: ``binary-only NMU''
@@ -3494,195 +3502,6 @@ These are just some subjective hints, advice and pointers collected
 from Debian developers.  Feel free to pick and choose whatever works
 best for you.
 
-    <sect id="bpp-origtargz">
-        <heading>Best practices for <file>orig.tar.gz</file> files</heading>
-       <p>
-   There are two kinds of original source tarballs: Pristine source
-   and repackaged upstream source.
-       </p>
-       <sect1 id="pristine source">
-          <heading>Pristine source</heading>
-          <p>
-The defining characteristic of a pristine source tarball is that the
-.orig.tar.gz file is byte-for-byte identical to a tarball officially
-distributed by the upstream author.
-<footnote>
-We cannot prevent upstream authors from changing the tarball
-they distribute without also upping the version number, so
-there can be no guarantee that a pristine tarball is identical
-to what upstream <em>currently</em> distributing at any point in
-time. All that can be expected is that it is identical to
-something that upstream once <em>did</em> distribute.
-
-If a difference arises later (say, if upstream notices that he wasn't
-using maximal comression in his original distribution and then
-re-<tt>gzip</tt>s it), that's just too bad. Since there is no good way
-to upload a new .orig.tar.gz for the same version, there is not even
-any point in treating this situation as a bug.
-</footnote>
-This makes it possible to use checksums to easily verify that all
-changes between Debian's version and upstream's are contained in the
-Debian diff. Also, if the original source is huge, upstream authors
-and others who already have the upstream tarball can save download
-time if they want to inspect your packaging in detail.
-           </p>
-          <p>
-There is no universally accepted guidelines that upstream authors
-follow regarding to the directory structure inside their tarball, but
-<prgn>dpkg-source</prgn> is nevertheless able to deal with most
-upstream tarballs as pristine source. Its strategy is equivalent to
-the following:
-         </p>
-         <p>
-         <enumlist>
-            <item>
-It unpacks the tarball in an empty temporary directory by doing
-
-<example>
-zcat path/to/&lt;packagename&gt;_&lt;upstream-version&gt;.orig.tar.gz | tar xf -                                                                                 +</example>
-             </item>
-             <item>
-If, after this, the temporary directory contains nothing but one
-directory and no other files, <prgn>dpkg-source</prgn> renames that
-directory to
-<tt>&lt;packagename&gt;-&lt;upstream-version&gt;(.orig)</tt>. The name
-of the top-level directory in the tarball does not matter, and is
-forgotten.
-             </item>
-            <item>
-Otherwise, the upstream tarball must have been packaged without a
-common top-level directory (shame on the upstream author!).  In this
-case, <prgn>dpkg-source</prgn> renames the temporary directory
-<em>itself</em> to
-<tt>&lt;packagename&gt;-&lt;upstream-version&gt;(.orig)</tt>.
-             </item>
-          </enumlist>
-         </p>
-         </sect1>
-         <sect1 id="repackaged origtargz">
-            <heading>Repackaged upstream source</heading>
-            <p>
-You <strong>should</strong> upload packages with a pristine source
-tarball if possible, but there are various reasons why it might not be
-possible. This is the case if upstream does not distribute the source
-as gzipped tar at all, or if upstream's tarball contains non-DFSG-free
-material that you must remove before uploading.
-             </p>
-            <p>
-In these cases the developer must construct a suitable .orig.tar.gz
-file himself. We refer to such a tarball as a "repackaged upstream
-source". Note that a "repackaged upstream source" is different from a
-Debian-native package. A repackaged source still comes with
-Debian-specific changes in a separate <tt>.diff.gz</tt> and still has
-a version number composed of <tt>&lt;upstream-version&gt;</tt> and
-<tt>&lt;debian-revision&gt;</tt>.
-             </p>
-            <p>
-There may be cases where it is desirable to repackage the source even
-though upstream distributes a <tt>.tar.gz</tt> that could in principle
-be used in its pristine form. The most obvious is if
-<em>significant</em> space savings can be achieved by recompressing
-the tar archive or by removing genuinely useless cruft from the
-upstream archive. Use your own discretion here, but be prepared to
-defend your decision if you repackage source that could have been
-pristine.
-             </p>
-            <p>
-A repackaged .orig.tar.gz
-             </p>                                                                                                                                                +            <p>
-            <enumlist>
-            <item>
-<p>
-<strong>must</strong> contain detailed information how
-the repackaged source was obtained, and how this can be reproduced, in
-<file>README.Debian-source</file> or a similar file. This file should
-be in the <file>diff.gz</file> part of the Debian source package,
-usually in the <file>debian</file> directory, <em>not</em> in the
-repackaged <file>orig.tar.gz</file>. It is also a good idea to provide a
-<tt>get-orig-source</tt> target in your <file>debian/rules</file> file
-that repeats the process, as described in the Policy Manual, <url
-id="&url-debian-policy;ch-source.html#s-debianrules" name="Main
-building script: debian/rules">.
-</p>
-            </item>
-            <item>
-<strong>should not</strong> contain any file that does not come from the
-upstream author(s), or whose contents has been changed by you.
-<footnote>
-As a special exception, if the omission of non-free files would lead
-to the source failing to build without assistance from the Debian
-diff, it might be appropriate to instead edit the files, omitting only
-the non-free parts of them, and/or explain the situation in a
-README.Debian-source <!-- or similarly named --> file in the root of the source
-tree. But in that case please also urge the upstream author to make
-the non-free components easier seperable from the rest of the source.
-</footnote>
-             </item>
-            <item>
-<p>
-<strong>should</strong>, except where impossible for legal reasons,
-preserve the entire building and portablility infrastructure provided
-by the upstream author. For example, it is not a sufficient reason for
-omitting a file that it is used only when building on
-MS-DOS. Similarly, a Makefile provided by upstream should not be
-omitted even if the first thing your <file>debian/rules</file> does is
-to overwrite it by running a configure script.
-</p>
-<p>
-(<em>Rationale:</em> It is common for Debian users who need to build
-software for non-Debian platforms to fetch the source from a Debian
-mirror rather than trying to locate a canonical upstream distribution
-point).
-</p>             </item>
-            <item>
-<strong>should</strong> use
-<tt>&lt;packagename&gt;-&lt;upstream-version&gt;.orig</tt> as the name
-of the top-level directory in its tarball. This makes it possible to
-distinguish pristine tarballs from repackaged ones.                                                                                                              +             </item>
-            <item>
-<strong>should</strong> be gzipped with maximal compression.
-             </item>
-            </enumlist>
-            </p>
-            <p>
-The canonical way to meet the latter two points is to let
-<tt>dpkg-source -b</tt> construct the repackaged tarball from an
-unpacked directory.
-            </p>
-       </sect1>
-       <sect1 id="changed-binfiles">
-       <heading>Changing binary files in <tt>diff.gz</tt></heading>
-       <p>
-Sometimes it is necessary to change binary files contained in the
-original tarball, or to add binary files that are not in it.
-If this is done by simply copying the files into the debianized source
-tree, <prgn>dpkg-source</prgn> will not be able to handle this. On the
-other hand, according to the guidelines given above, you cannot
-include such a changed binary file in a repackaged
-<file>orig.tar.gz</file>. Instead, include the file in the
-<file>debian</file> directory in <prgn>uuencode</prgn>d (or similar)
-form
-<footnote>
-The file should have a name that makes it clear which binary file it
-encodes. Usually, some postfix indicating the encoding should be
-appended to the original filename.
-</footnote>.
-The file would then be decoded and copied to its place during the
-build process. Thus the change will be visible quite easy.
-</p>
-<p>
-Some packages use <prgn>dbs</prgn> to manage patches to their upstream
-source, and always create a new <tt>orig.tar.gz</tt> file that
-contains the real <tt>orig.tar.gz</tt> in its toplevel directory. This
-is questionable with respect to the preference for pristine source. On
-the other hand, it is easy to modify or add binary files in this case:
-Just put them into the newly created <tt>orig.tar.gz</tt> file,
-besides the real one, and copy them to the right place during the
-build process.
-       </p>
-       </sect1>
-    </sect>
-
     <sect id="bpp-debian-rules">
         <heading>Best practices for <file>debian/rules</file></heading>
         <p>
@@ -3776,7 +3595,7 @@ A single source package will often build several binary packages,
 either to provide several flavors of the same software (e.g.,
 the <package>vim</package> source package) or to make several small
 packages instead of a big one (e.g., if the user can install only the
-subset she needs, and thus save some disk space).
+subset needed, and thus save some disk space).
        <p>
 The second case can be easily managed in <file>debian/rules</file>.
 You just need to move the appropriate files from the build directory
@@ -4791,6 +4610,198 @@ to your short description. If you are looking for examples, just run:
   <example>apt-cache search .|grep transitional</example>.
         </sect1>
 
+
+    <sect1 id="bpp-origtargz">
+        <heading>Best practices for <file>orig.tar.gz</file> files</heading>
+       <p>
+   There are two kinds of original source tarballs: Pristine source
+   and repackaged upstream source.
+       </p>
+       <sect2 id="pristine source">
+          <heading>Pristine source</heading>
+          <p>
+The defining characteristic of a pristine source tarball is that the
+.orig.tar.gz file is byte-for-byte identical to a tarball officially
+distributed by the upstream author.
+<footnote>
+We cannot prevent upstream authors from changing the tarball
+they distribute without also upping the version number, so
+there can be no guarantee that a pristine tarball is identical
+to what upstream <em>currently</em> distributing at any point in
+time. All that can be expected is that it is identical to
+something that upstream once <em>did</em> distribute.
+
+If a difference arises later (say, if upstream notices that he wasn't
+using maximal comression in his original distribution and then
+re-<tt>gzip</tt>s it), that's just too bad. Since there is no good way
+to upload a new .orig.tar.gz for the same version, there is not even
+any point in treating this situation as a bug.
+</footnote>
+This makes it possible to use checksums to easily verify that all
+changes between Debian's version and upstream's are contained in the
+Debian diff. Also, if the original source is huge, upstream authors
+and others who already have the upstream tarball can save download
+time if they want to inspect your packaging in detail.
+           </p>
+          <p>
+There is no universally accepted guidelines that upstream authors
+follow regarding to the directory structure inside their tarball, but
+<prgn>dpkg-source</prgn> is nevertheless able to deal with most
+upstream tarballs as pristine source. Its strategy is equivalent to
+the following:
+         </p>
+         <p>
+         <enumlist>
+            <item>
+It unpacks the tarball in an empty temporary directory by doing
+
+<example>
+zcat path/to/&lt;packagename&gt;_&lt;upstream-version&gt;.orig.tar.gz | tar xf -                                                                                 +</example>
+             </item>
+             <item>
+If, after this, the temporary directory contains nothing but one
+directory and no other files, <prgn>dpkg-source</prgn> renames that
+directory to
+<tt>&lt;packagename&gt;-&lt;upstream-version&gt;(.orig)</tt>. The name
+of the top-level directory in the tarball does not matter, and is
+forgotten.
+             </item>
+            <item>
+Otherwise, the upstream tarball must have been packaged without a
+common top-level directory (shame on the upstream author!).  In this
+case, <prgn>dpkg-source</prgn> renames the temporary directory
+<em>itself</em> to
+<tt>&lt;packagename&gt;-&lt;upstream-version&gt;(.orig)</tt>.
+             </item>
+          </enumlist>
+         </p>
+         </sect2>
+         <sect2 id="repackaged origtargz">
+            <heading>Repackaged upstream source</heading>
+            <p>
+You <strong>should</strong> upload packages with a pristine source
+tarball if possible, but there are various reasons why it might not be
+possible. This is the case if upstream does not distribute the source
+as gzipped tar at all, or if upstream's tarball contains non-DFSG-free
+material that you must remove before uploading.
+             </p>
+            <p>
+In these cases the developer must construct a suitable .orig.tar.gz
+file himself. We refer to such a tarball as a "repackaged upstream
+source". Note that a "repackaged upstream source" is different from a
+Debian-native package. A repackaged source still comes with
+Debian-specific changes in a separate <tt>.diff.gz</tt> and still has
+a version number composed of <tt>&lt;upstream-version&gt;</tt> and
+<tt>&lt;debian-revision&gt;</tt>.
+             </p>
+            <p>
+There may be cases where it is desirable to repackage the source even
+though upstream distributes a <tt>.tar.gz</tt> that could in principle
+be used in its pristine form. The most obvious is if
+<em>significant</em> space savings can be achieved by recompressing
+the tar archive or by removing genuinely useless cruft from the
+upstream archive. Use your own discretion here, but be prepared to
+defend your decision if you repackage source that could have been
+pristine.
+             </p>
+            <p>
+A repackaged .orig.tar.gz
+             </p>
+            <p>
+            <enumlist>
+            <item>
+<p>
+<strong>must</strong> contain detailed information how
+the repackaged source was obtained, and how this can be reproduced, in
+<file>README.Debian-source</file> or a similar file. This file should
+be in the <file>diff.gz</file> part of the Debian source package,
+usually in the <file>debian</file> directory, <em>not</em> in the
+repackaged <file>orig.tar.gz</file>. It is also a good idea to provide a
+<tt>get-orig-source</tt> target in your <file>debian/rules</file> file
+that repeats the process, as described in the Policy Manual, <url
+id="&url-debian-policy;ch-source.html#s-debianrules" name="Main
+building script: debian/rules">.
+</p>
+            </item>
+            <item>
+<strong>should not</strong> contain any file that does not come from the
+upstream author(s), or whose contents has been changed by you.
+<footnote>
+As a special exception, if the omission of non-free files would lead
+to the source failing to build without assistance from the Debian
+diff, it might be appropriate to instead edit the files, omitting only
+the non-free parts of them, and/or explain the situation in a
+README.Debian-source <!-- or similarly named --> file in the root of the source
+tree. But in that case please also urge the upstream author to make
+the non-free components easier seperable from the rest of the source.
+</footnote>
+             </item>
+            <item>
+<p>
+<strong>should</strong>, except where impossible for legal reasons,
+preserve the entire building and portablility infrastructure provided
+by the upstream author. For example, it is not a sufficient reason for
+omitting a file that it is used only when building on
+MS-DOS. Similarly, a Makefile provided by upstream should not be
+omitted even if the first thing your <file>debian/rules</file> does is
+to overwrite it by running a configure script.
+</p>
+<p>
+(<em>Rationale:</em> It is common for Debian users who need to build
+software for non-Debian platforms to fetch the source from a Debian
+mirror rather than trying to locate a canonical upstream distribution
+point).
+</p>             </item>
+            <item>
+<strong>should</strong> use
+<tt>&lt;packagename&gt;-&lt;upstream-version&gt;.orig</tt> as the name
+of the top-level directory in its tarball. This makes it possible to
+distinguish pristine tarballs from repackaged ones.                                                                                                              +             </item>
+            <item>
+<strong>should</strong> be gzipped with maximal compression.
+             </item>
+            </enumlist>
+            </p>
+            <p>
+The canonical way to meet the latter two points is to let
+<tt>dpkg-source -b</tt> construct the repackaged tarball from an
+unpacked directory.
+            </p>
+       </sect2>
+       <sect2 id="changed-binfiles">
+       <heading>Changing binary files in <tt>diff.gz</tt></heading>
+       <p>
+Sometimes it is necessary to change binary files contained in the
+original tarball, or to add binary files that are not in it.
+If this is done by simply copying the files into the debianized source
+tree, <prgn>dpkg-source</prgn> will not be able to handle this. On the
+other hand, according to the guidelines given above, you cannot
+include such a changed binary file in a repackaged
+<file>orig.tar.gz</file>. Instead, include the file in the
+<file>debian</file> directory in <prgn>uuencode</prgn>d (or similar)
+form
+<footnote>
+The file should have a name that makes it clear which binary file it
+encodes. Usually, some postfix indicating the encoding should be
+appended to the original filename.
+</footnote>.
+The file would then be decoded and copied to its place during the
+build process. Thus the change will be visible quite easy.
+</p>
+<p>
+Some packages use <prgn>dbs</prgn> to manage patches to their upstream
+source, and always create a new <tt>orig.tar.gz</tt> file that
+contains the real <tt>orig.tar.gz</tt> in its toplevel directory. This
+is questionable with respect to the preference for pristine source. On
+the other hand, it is easy to modify or add binary files in this case:
+Just put them into the newly created <tt>orig.tar.gz</tt> file,
+besides the real one, and copy them to the right place during the
+build process.
+       </p>
+       </sect2>
+    </sect1>
+
+
       </sect>
     </chapt>
 
@@ -4851,7 +4862,7 @@ close those that you can't reproduce anymore. To find
 out all the bugs you submitted, you just have to visit
 <tt>http://&bugs-host;/from:<var>&lt;your-email-addr&gt;</var></tt>.
 
-      <sect1 id="submit-many-bugs">Reporting lots of bugs at once
+      <sect1 id="submit-many-bugs">Reporting lots of bugs at once (mass bug filing)
        <p>
 Reporting a great number of bugs for the same problem on a great
 number of different packages &mdash; i.e., more than 10 &mdash; is a deprecated
@@ -4862,7 +4873,8 @@ is emitted.
        <p>
 If you report more than 10 bugs on the same topic at once, it is
 recommended that you send a message to &email-debian-devel; describing
-your intention before submitting the report. This will allow other
+your intention before submitting the report, and mentioning the
+fact in the subject of your mail. This will allow other
 developers to verify that the bug is a real problem. In addition, it
 will help prevent a situation in which several maintainers start
 filing the same bug report simultaneously.