]> git.donarmstrong.com Git - debian/debian-policy.git/commitdiff
Merge branch 'master' into bug224509-rra
authorRuss Allbery <rra@debian.org>
Thu, 3 Jun 2010 16:26:14 +0000 (09:26 -0700)
committerRuss Allbery <rra@debian.org>
Thu, 3 Jun 2010 16:26:14 +0000 (09:26 -0700)
.gitignore
debian/changelog
perl-policy.sgml
policy.sgml
upgrading-checklist.sgml

index 22a2f0c5e37652024afdd0e0a60149e8d3796b91..60fc2c9db2691a59b874bdd7798454c259c051ce 100644 (file)
@@ -7,6 +7,7 @@
 /perl-policy.html/
 /policy.html/
 /stamp-build
+/upgrading-checklist.html/
 /version.ent
 *-1.html
 *.html.tar.gz
index 0c616c92d13de11e7d0a1ec42de110ac1ce3c9ef..fbd6097abeb5a0ccbe0b2cb3fc3c8c53cca3db58 100644 (file)
@@ -27,9 +27,25 @@ debian-policy (3.8.5.0) UNRELEASED; urgency=low
     Closes: #582495
 
   [ Russ Allbery ]
+  * Policy: Except init.d scripts from the normal set -e requirement
+    Wording: Russ Allbery <rra@debian.org>
+    Seconded: Raphael Hertzog <hertzog@debian.org>
+    Seconded: Guillem Jover <guillem@debian.org>
+    Closes: #562506
   * Standardize dpkg state wording and bring it in line with dpkg,
     renaming Failed-Config to Half-Configured and use uniform
     capitalization and punctuation.  (Closes: #442134)
+  * Remove documentation of alternative changelog formats.  This feature
+    is not allowed in the Debian archive and will be documented in the
+    dpkg-dev documentation instead.  The documentation that was in Policy
+    was also somewhat outdated.  (Closes: #555009, see #584141)
+  * Remove obsolete footnote sentence saying that dpkg-statoverride is a
+    new feature and not well-known.  (Closes: #563425)
+  * Clarify in the Perl Policy that perl-base is essential, not perl, and
+    don't imply packages need to depend on perl-base.  (Closes: #576594)
+  * Document the special debian-installer section in the list of current
+    sections and add a link to the list of sections in unstable, which
+    contains longer descriptions.  (Closes: #577666)
 
  -- Bill Allombert <ballombe@debian.org>  Mon, 31 May 2010 20:00:28 +0200
 
index 1d26df7c40ab75eaa6cb2a1cf4e768c116aa7d0f..ef1fbe64c479bb31637e785d27d4ede211345c95 100644 (file)
          the binary and a basic set of modules.
        </p>
        <p>
-         As Perl is currently used by such things as
-         <file>update-alternatives</file> and some package maintainer
-         scripts, it must be priority <em>required</em> and marked as
-         <em>essential</em>.
+         As Perl has been part of the essential set for some time and is
+         used without dependencies by such things as package maintainer
+         scripts, <package>perl-base</package> must be
+         priority <em>required</em> and marked as <em>essential</em>.
        </p>
        <p>
          Note that the <package>perl-base</package> package is intended
          only to provide for exceptional circumstances and the contents
-         may change.  In general only packages which form part of the
-         base system should declare a dependency on
-         <package>perl-base</package> rather than
-         <package>perl</package>.
+         may change.  In general, only packages which form part of the
+         base system should use only the facilities
+         of <package>perl-base</package> rather than declaring a
+         dependency on <package>perl</package>.
        </p>
       </sect>
 
index 4bd7c9b6532d5166e5d9a49736c834326251f9d6..1e9934cd29e49b489cccca7584f84719c1637f09 100644 (file)
          <em>ruby</em>, <em>science</em>, <em>shells</em>, <em>sound</em>,
          <em>tex</em>, <em>text</em>, <em>utils</em>, <em>vcs</em>,
          <em>video</em>, <em>web</em>, <em>x11</em>, <em>xfce</em>,
-         <em>zope</em>.
+         <em>zope</em>.  The additional section <em>debian-installer</em>
+         contains special packages used by the installer and is not used
+         for normal Debian packages.
+       </p>
+
+       <p>
+         For more information about the sections and their definitions,
+         see the <url id="http://packages.debian.org/unstable/"
+                      name="list of sections in unstable">.
        </p>
       </sect>
 
@@ -6008,7 +6016,7 @@ rmdir /usr/local/share/emacs 2>/dev/null || true
          </p>
        </sect1>
 
-       <sect1>
+       <sect1 id="writing-init">
          <heading>Writing the scripts</heading>
 
          <p>
@@ -6058,6 +6066,23 @@ rmdir /usr/local/share/emacs 2>/dev/null || true
            option.
          </p>
 
+         <p>
+           Be careful of using <tt>set -e</tt> in <file>init.d</file>
+           scripts.  Writing correct <file>init.d</file> scripts requires
+           accepting various error exit statuses when daemons are already
+           running or already stopped without aborting
+           the <file>init.d</file> script, and common <file>init.d</file>
+           function libraries are not safe to call with <tt>set -e</tt>
+           in effect<footnote>
+             <tt>/lib/lsb/init-functions</tt>, which assists in writing
+             LSB-compliant init scripts, may fail if <tt>set -e</tt> is
+             in effect and echoing status messages to the console fails,
+             for example.
+           </footnote>.  For <tt>init.d</tt> scripts, it's often easier
+           to not use <tt>set -e</tt> and instead check the result of
+           each command separately.
+         </p>
+
          <p>
            If a service reloads its configuration automatically (as
            in the case of <prgn>cron</prgn>, for example), the
@@ -7155,13 +7180,19 @@ strip --strip-unneeded <var>your-lib</var>
           language currently used to implement it.
         </p>
        <p>
-         Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>)
-         should almost certainly start with <tt>set -e</tt> so that
-         errors are detected.  Every script should use
-         <tt>set -e</tt> or check the exit status of <em>every</em>
-         command.
+         Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>) other than
+         <file>init.d</file> scripts should almost certainly start
+         with <tt>set -e</tt> so that errors are detected.
+         <file>init.d</file> scripts are something of a special case, due
+         to how frequently they need to call commands that are allowed to
+         fail, and it may instead be easier to check the exit status of
+         commands directly.  See <ref id="writing-init"> for more
+         information about writing <file>init.d</file> scripts.
+       </p>
+       <p>
+         Every script should use <tt>set -e</tt> or check the exit status
+         of <em>every</em> command.
        </p>
-
        <p>
          Scripts may assume that <file>/bin/sh</file> implements the
          SUSv3 Shell Command Language<footnote>
@@ -7755,15 +7786,12 @@ endscript
          security policy by changing the permissions on a binary:
          they can do this by using <prgn>dpkg-statoverride</prgn>, as
          described below.<footnote>
-             Ordinary files installed by <prgn>dpkg</prgn> (as
-             opposed to <tt>conffile</tt>s and other similar objects)
-             normally have their permissions reset to the distributed
-             permissions when the package is reinstalled.  However,
-             the use of <prgn>dpkg-statoverride</prgn> overrides this
-             default behavior.  If you use this method, you should
-             remember to describe <prgn>dpkg-statoverride</prgn> in
-             the package documentation; being a relatively new
-             addition to Debian, it is probably not yet well-known.
+           Ordinary files installed by <prgn>dpkg</prgn> (as
+           opposed to <tt>conffile</tt>s and other similar objects)
+           normally have their permissions reset to the distributed
+           permissions when the package is reinstalled.  However,
+           the use of <prgn>dpkg-statoverride</prgn> overrides this
+           default behavior.
          </footnote>
          Another method you should consider is to create a group for
          people allowed to use the program(s) and make any setuid
@@ -9985,120 +10013,6 @@ END-INFO-DIR-ENTRY
          </p>
        </sect1>
 
-
-       <sect1 id="pkg-dpkgchangelog">
-         <heading><file>debian/changelog</file></heading>
-
-         <p>
-           See <ref id="dpkgchangelog">.
-         </p>
-
-         <sect2><heading>Defining alternative changelog formats
-           </heading>
-
-           <p>
-             It is possible to use a different format to the standard
-             one, by providing a parser for the format you wish to
-             use.
-           </p>
-
-           <p>
-             In order to have <tt>dpkg-parsechangelog</tt> run your
-             parser, you must include a line within the last 40 lines
-             of your file matching the Perl regular expression:
-             <tt>\schangelog-format:\s+([0-9a-z]+)\W</tt> The part in
-             parentheses should be the name of the format.  For
-             example, you might say:
-             <example>
-  @@@ changelog-format: joebloggs @@@
-             </example>
-             Changelog format names are non-empty strings of alphanumerics.
-           </p>
-
-           <p>
-             If such a line exists then <tt>dpkg-parsechangelog</tt>
-             will look for the parser as
-             <file>/usr/lib/dpkg/parsechangelog/<var>format-name</var></file>
-             or
-             <file>/usr/local/lib/dpkg/parsechangelog/<var>format-name</var></file>;
-             it is an error for it not to find it, or for it not to
-             be an executable program.  The default changelog format
-             is <tt>dpkg</tt>, and a parser for it is provided with
-             the <tt>dpkg</tt> package.
-           </p>
-
-           <p>
-             The parser will be invoked with the changelog open on
-             standard input at the start of the file.  It should read
-             the file (it may seek if it wishes) to determine the
-             information required and return the parsed information
-             to standard output in the form of a series of control
-             fields in the standard format.  By default it should
-             return information about only the most recent version in
-             the changelog; it should accept a
-             <tt>-v<var>version</var></tt> option to return changes
-             information from all versions present <em>strictly
-             after</em> <var>version</var>, and it should then be an
-             error for <var>version</var> not to be present in the
-             changelog.
-           </p>
-
-           <p>
-             The fields are:
-             <list compact="compact">
-               <item><qref id="f-Source"><tt>Source</tt></qref></item>
-               <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
-               <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
-               <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (mandatory)</item>
-               <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
-               <item><qref id="f-Date"><tt>Date</tt></qref></item>
-               <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
-             </list>
-           </p>
-
-           <p>
-             If several versions are being returned (due to the use
-             of <tt>-v</tt>), the urgency value should be of the
-             highest urgency code listed at the start of any of the
-             versions requested followed by the concatenated
-             (space-separated) comments from all the versions
-             requested; the maintainer, version, distribution and
-             date should always be from the most recent version.
-           </p>
-
-           <p>
-             For the format of the <tt>Changes</tt> field see
-             <ref id="f-Changes">.
-           </p>
-
-           <p>
-             If the changelog format which is being parsed always or
-             almost always leaves a blank line between individual
-             change notes these blank lines should be stripped out,
-             so as to make the resulting output compact.
-           </p>
-
-           <p>
-             If the changelog format does not contain date or package
-             name information this information should be omitted from
-             the output.  The parser should not attempt to synthesize
-             it or find it from other sources.
-           </p>
-
-           <p>
-             If the changelog does not have the expected format the
-             parser should exit with a nonzero exit status, rather
-             than trying to muddle through and possibly generating
-             incorrect output.
-           </p>
-
-           <p>
-             A changelog parser may not interact with the user at
-             all.
-           </p>
-         </sect2>
-       </sect1>
-
        <sect1 id="pkg-srcsubstvars">
          <heading><file>debian/substvars</file> and variable substitutions</heading>
 
index 99ad63cea2a5f3791175e7726197b48ad5784c9a..91b4e172a90d2547320a564bf7818316ab6b9e94 100644 (file)
@@ -41,7 +41,11 @@ Release Jun 2010.
 
 </p><p><taglist>
 <tag>9.2.2</tag>
-  <item> The UID range of user accounts is extended to 1000-59999.
+  <item>The UID range of user accounts is extended to 1000-59999.
+  </item>
+<tag>9.3.2, 10.4</tag>
+  <item><file>init.d</file> scripts are a possible exception from the
+  normal requirement to use <code>set -e</code> in each shell script.
   </item>
 </taglist></p>