]> git.donarmstrong.com Git - debian/debian-policy.git/blobdiff - policy.sgml
Switch appendix section for dpkg-buildpackage into a stub
[debian/debian-policy.git] / policy.sgml
index 5d2105e6cdd8f25a50b695c5c69e2c280e4386e2..59d7a71467f9a9d980826c29b31cf415d033998f 100644 (file)
@@ -1729,7 +1729,7 @@ zope.
 /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i
              </example>
              Then all of the bug numbers listed will be closed by the
-             archive maintenance script (<prgn>katie</prgn>) using the
+             archive maintenance software (<prgn>dak</prgn>) using the
              <var>version</var> of the changelog entry.
          </footnote>
          This information is conveyed via the <tt>Closes</tt> field
@@ -1988,51 +1988,33 @@ zope.
              </p>
            </item>
 
-           <tag><tt>build-arch</tt> (optional),
-                <tt>build-indep</tt> (optional)
+           <tag><tt>build-arch</tt> (required),
+                <tt>build-indep</tt> (required)
            </tag>
            <item>
              <p>
-               A package may also provide one or both of the targets
-               <tt>build-arch</tt> and <tt>build-indep</tt>.
-               The <tt>build-arch</tt> target, if provided, should
+               The <tt>build-arch</tt> target must
                perform all the configuration and compilation required for
                producing all architecture-dependant binary packages
                (those packages for which the body of the
                <tt>Architecture</tt> field in <tt>debian/control</tt> is
                not <tt>all</tt>).  Similarly, the <tt>build-indep</tt>
-               target, if provided, should perform all the configuration
+               target must perform all the configuration
                and compilation required for producing all
                architecture-independent binary packages (those packages
                for which the body of the <tt>Architecture</tt> field
                in <tt>debian/control</tt> is <tt>all</tt>).
-             </p>
-
-             <p>
-               If <tt>build-arch</tt> or <tt>build-indep</tt> targets are
-               provided in the rules file, the <tt>build</tt> target
+               The <tt>build</tt> target
                should either depend on those targets or take the same
                actions as invoking those targets would perform.<footnote>
-                 The intent of this split is so that binary-only builds
-                 need not install the dependencies required for
-                 the <tt>build-indep</tt> target.  However, this is not
-                 yet used in practice since <tt>dpkg-buildpackage
-                 -B</tt>, and therefore the autobuilders,
-                 invoke <tt>build</tt> rather than <tt>build-arch</tt>
-                 due to the difficulties in determining whether the
-                 optional <tt>build-arch</tt> target exists.
+                 This split allows binary-only builds to not install the
+                 dependencies required for the <tt>build-indep</tt>
+                 target and skip any resource-intensive build tasks that
+                 are only required when building architecture-independent
+                 binary packages.
                </footnote>
              </p>
 
-             <p>
-               If one or both of the targets <tt>build-arch</tt> and
-               <tt>build-indep</tt> are not provided, then invoking
-               <file>debian/rules</file> with one of the not-provided
-               targets as arguments should produce a exit status code
-               of 2.  Usually this is provided automatically by make
-               if the target is missing.
-             </p>
-
              <p>
                The <tt>build-arch</tt> and <tt>build-indep</tt> targets
                must not do anything that might require root privilege.
@@ -2171,7 +2153,7 @@ zope.
        <p>
          The architectures we build on and build for are determined
          by <prgn>make</prgn> variables using the
-         utility <qref id="pkg-dpkg-architecture"><prgn>dpkg-architecture</prgn></qref>.
+         utility <prgn>dpkg-architecture</prgn>.
          You can determine the Debian architecture and the GNU style
          architecture specification string for the build architecture as
          well as for the host architecture.  The build architecture is
@@ -2667,7 +2649,6 @@ Package: libc6
            <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
            <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
            <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
-           <item><qref id="f-DM-Upload-Allowed"><tt>DM-Upload-Allowed</tt></qref></item>
            <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
            <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
            <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
@@ -2690,6 +2671,7 @@ Package: libc6
            <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
            <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
            <item><qref id="built-using"><tt>Built-Using</tt></qref></item>
+           <item><qref id="f-Package-Type"><tt>Package-Type</tt></qref></item>
          </list>
        </p>
 
@@ -2766,13 +2748,13 @@ Package: libc6
          <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
          <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
          <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
-         <item><qref id="f-DM-Upload-Allowed"><tt>DM-Upload-Allowed</tt></qref></item>
          <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
          <item><qref id="f-VCS-fields"><tt>Vcs-Browser</tt>, <tt>Vcs-Git</tt>, et al.</qref></item>
          <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
          <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
+         <item><qref id="f-Package-List"><tt>Package-List</tt></qref> (recommended)</item>
          <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
-             and <tt>Checksums-Sha256</tt></qref> (recommended)</item>
+             and <tt>Checksums-Sha256</tt></qref> (mandatory)</item>
          <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
        </list>
        </p>
@@ -2825,7 +2807,7 @@ Package: libc6
            <item><qref id="f-Closes"><tt>Closes</tt></qref></item>
            <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
            <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
-               and <tt>Checksums-Sha256</tt></qref> (recommended)</item>
+               and <tt>Checksums-Sha256</tt></qref> (mandatory)</item>
            <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
          </list>
        </p>
@@ -3759,28 +3741,19 @@ Checksums-Sha256:
          </p>
 
          <p>
-           In the <file>.dsc</file> file, these fields should list all
+           In the <file>.dsc</file> file, these fields list all
            files that make up the source package.  In
-           the <file>.changes</file> file, these fields should list all
+           the <file>.changes</file> file, these fields list all
            files being uploaded.  The list of files in these fields
            must match the list of files in the <tt>Files</tt> field.
          </p>
        </sect1>
 
-       <sect1 id="f-DM-Upload-Allowed">
+       <sect1>
          <heading><tt>DM-Upload-Allowed</tt></heading>
 
          <p>
-           Indicates that Debian Maintainers may upload this package to
-           the Debian archive.  The only valid value is <tt>yes</tt>.  If
-           the field <tt>DM-Upload-Allowed: yes</tt> is present in the
-           source section of the source control file of the most recent
-           version of a package in unstable or experimental, the Debian
-           archive will accept uploads of this package signed with a key
-           in the Debian Maintainer keyring.  See the General
-           Resolution <url id="http://www.debian.org/vote/2007/vote_003"
-           name="Endorse the concept of Debian Maintainers"> for more
-           details.
+           Obsolete, see <qref id="f-DM-Upload-Allowed">below</qref>.
          </p>
        </sect1>
 
@@ -3830,6 +3803,34 @@ Checksums-Sha256:
            </taglist>
          </p>
        </sect1>
+
+       <sect1 id="f-Package-List">
+         <heading><tt>Package-List</tt></heading>
+
+         <p>
+           Multiline field listing all the packages that can be built from
+           the source package, considering every architecture.  The first line
+           of the field value is empty.  Each one of the next lines describes
+           one binary package, by listing its name, type, section and priority
+           separated by spaces.  Fifth and subsequent space-separated items
+           may be present and parsers must allow them.  See the
+           <qref id="f-Package-Type">Package-Type</qref> field for a list of
+           package types.
+         </p>
+       </sect1>
+
+       <sect1 id="f-Package-Type">
+         <heading><tt>Package-Type</tt></heading>
+
+         <p>
+           Simple field containing a word indicating the type of package:
+           <tt>deb</tt> for binary packages and <tt>udeb</tt> for micro binary
+           packages.  Other types not defined here may be indicated.  In
+           source package control files, the <tt>Package-Type</tt> field
+           should be omitted instead of giving it a value of <tt>deb</tt>, as
+           this value is assumed for paragraphs lacking this field.
+         </p>
+       </sect1>
       </sect>
 
       <sect>
@@ -3876,6 +3877,28 @@ Checksums-Sha256:
 
       </sect>
 
+      <sect id="obsolete-control-data-fields">
+       <heading>Obsolete fields</heading>
+
+       <p>
+         The following fields have been obsoleted and may be found in packages
+         conforming with previous versions of the Policy.
+       </p>
+
+       <sect1 id="f-DM-Upload-Allowed">
+         <heading><tt>DM-Upload-Allowed</tt></heading>
+
+         <p>
+           Indicates that Debian Maintainers may upload this package to
+           the Debian archive.  The only valid value is <tt>yes</tt>.  This
+           field was used to regulate uploads by Debian Maintainers, See the
+           General Resolution <url id="http://www.debian.org/vote/2007/vote_003"
+           name="Endorse the concept of Debian Maintainers"> for more details.
+         </p>
+       </sect1>
+
+      </sect>
+
     </chapt>
 
 
@@ -6641,7 +6664,7 @@ Built-Using: grub2 (= 1.99-9), loadlin (= 1.6e-1)
          <heading>The <tt>shlibs</tt> system</heading>
 
          <p>
-           The <tt>shlibs</tt> system is an simpler alternative to
+           The <tt>shlibs</tt> system is a simpler alternative to
            the <tt>symbols</tt> system for declaring dependencies for
            shared libraries.  It may be more appropriate for C++
            libraries and other cases where tracking individual symbols is
@@ -8056,33 +8079,28 @@ Reloading <var>description</var> configuration...done.
        </p>
 
        <p>
-         Packages which provide the ability to view/show/play,
-         compose, edit or print MIME types should register themselves
-         as such following the current MIME support policy.
+         Packages which provide programs to view/show/play, compose, edit or
+         print MIME types should register them as such by placing a file in
+         <manref name="mailcap" section="5"> format (RFC 1524) in the directory
+         <file>/usr/lib/mime/packages/</file>.  The file name should be the
+         binary package's name.
        </p>
 
        <p>
          The <package>mime-support</package> package provides the
-         <prgn>update-mime</prgn> program which allows packages to
-         register programs that can show, compose, edit or print
-         MIME types.
-       </p>
-
-       <p>
-         Packages containing such programs must register them
-         with <prgn>update-mime</prgn> as documented in <manref
-         name="update-mime" section="8">. They should <em>not</em> depend
-         on, recommend, or suggest <prgn>mime-support</prgn>. Instead,
-         they should just put something like the following in the
-         <tt>postinst</tt> and <tt>postrm</tt> scripts:
-
-         <example>
-  if [ -x /usr/sbin/update-mime ]; then
-      update-mime
-  fi
-         </example>
+         <prgn>update-mime</prgn> program, which integrates these
+         registrations in the <file>/etc/mailcap</file> file, using dpkg
+         triggers<footnote>
+           Creating, modifying or removing a file in
+           <file>/usr/lib/mime/packages/</file> using maintainer scripts will
+           not activate the trigger.  In that case, it can be done by calling
+           <tt>dpkg-trigger --no-await /usr/lib/mime/packages</tt> from
+           the maintainer script after creating, modifying, or removing
+           the file.
+         </footnote>.
+         Packages using this facility <em>should not</em> depend on,
+         recommend, or suggest <prgn>mime-support</prgn>.
        </p>
-
       </sect>
 
       <sect>
@@ -8296,6 +8314,74 @@ exec /usr/lib/foo/foo "$@"
        </p>
       </sect>
 
+      <sect id="alternateinit">
+        <heading>Alternate init systems</heading>
+        <p>
+          A number of other init systems are available now in Debian that
+          can be used in place of <package>sysvinit</package>.  Alternative
+          init implementations must support running SysV init scripts as
+          described at <ref id="sysvinit"> for compatibility.
+        </p>
+        <p>
+          Packages may integrate with these replacement init systems by
+          providing implementation-specific configuration information about
+          how and when to start a service or in what order to run certain
+          tasks at boot time.  However, any package integrating with other
+          init systems must also be backwards-compatible with
+          <package>sysvinit</package> by providing a SysV-style init script
+          with the same name as and equivalent functionality to any
+          init-specific job, as this is the only start-up configuration
+          method guaranteed to be supported by all init implementations.  An
+          exception to this rule is scripts or jobs provided by the init
+          implementation itself; such jobs may be required for an
+          implementation-specific equivalent of the <file>/etc/rcS.d/</file>
+          scripts and may not have a one-to-one correspondence with the init
+          scripts.
+        </p>
+        <sect1 id="upstart">
+          <heading>Event-based boot with upstart</heading>
+
+         <p>
+            Packages may integrate with the <prgn>upstart</prgn> event-based
+            boot system by installing job files in the
+            <file>/etc/init</file> directory.  SysV init scripts for which
+            an equivalent upstart job is available must query the output of
+            the command <prgn>initctl version</prgn> for the string
+            <tt>upstart</tt> and avoid running in favor of the native
+            upstart job, using a test such as this:
+           <example compact="compact">
+if [ "$1" = start ] && which initctl >/dev/null && initctl version | grep -q upstart
+then
+       exit 1
+fi
+           </example>
+          </p>
+          <p>
+            Because packages shipping upstart jobs may be installed on
+            systems that are not using upstart, maintainer scripts must
+            still use the common <prgn>update-rc.d</prgn> and
+            <prgn>invoke-rc.d</prgn> interfaces for configuring runlevels
+            and for starting and stopping services.  These maintainer
+            scripts must not call the upstart <prgn>start</prgn>,
+            <prgn>restart</prgn>, <prgn>reload</prgn>, or <prgn>stop</prgn>
+            interfaces directly.  Instead, implementations of
+            <prgn>invoke-rc.d</prgn> must detect when upstart is running and
+            when an upstart job with the same name as an init script is
+            present, and perform the requested action using the upstart job
+            instead of the init script.
+          </p>
+          <p>
+            Dependency-based boot managers for SysV init scripts, such as
+            <prgn>startpar</prgn>, may avoid running a given init script
+            entirely when an equivalent upstart job is present, to avoid
+            unnecessary forking of no-op init scripts.  In this case, the
+            boot manager should integrate with upstart to detect when the
+            upstart job in question is started or stopped to know when the
+            dependency has been satisfied.
+          </p>
+         </sect1>
+      </sect>
+
     </chapt>
 
 
@@ -10781,12 +10867,6 @@ END-INFO-DIR-ENTRY
        <prgn>dpkg</prgn>, <prgn>dselect</prgn> et al. and the way
        they interact with packages.</p>
 
-      <p>
-       It also documents the interaction between
-       <prgn>dselect</prgn>'s core and the access method scripts it
-       uses to actually install the selected packages, and describes
-       how to create a new access method.</p>
-
       <p>
        This manual does not go into detail about the options and
        usage of the package building and installation tools.  It
@@ -10796,10 +10876,7 @@ END-INFO-DIR-ENTRY
 
       <p>
        The utility programs which are provided with <prgn>dpkg</prgn>
-       for managing various system configuration and similar issues,
-       such as <prgn>update-rc.d</prgn> and
-       <prgn>install-info</prgn>, are not described in detail here -
-       please see their man pages.
+       not described in detail here, are documented in their man pages.
       </p>
 
       <p>
@@ -11139,55 +11216,7 @@ END-INFO-DIR-ENTRY
          </heading>
 
          <p>
-           <prgn>dpkg-buildpackage</prgn> is a script which invokes
-           <prgn>dpkg-source</prgn>, the <file>debian/rules</file>
-           targets <tt>clean</tt>, <tt>build</tt> and
-           <tt>binary</tt>, <prgn>dpkg-genchanges</prgn> and
-           <prgn>gpg</prgn> (or <prgn>pgp</prgn>) to build a signed
-           source and binary package upload.
-         </p>
-
-         <p>
-           It is usually invoked by hand from the top level of the
-           built or unbuilt source directory.  It may be invoked with
-           no arguments; useful arguments include:
-           <taglist compact="compact">
-             <tag><tt>-uc</tt>, <tt>-us</tt></tag>
-             <item>
-               <p>
-                 Do not sign the <tt>.changes</tt> file or the
-                 source package <tt>.dsc</tt> file, respectively.</p>
-             </item>
-             <tag><tt>-p<var>sign-command</var></tt></tag>
-             <item>
-               <p>
-                 Invoke <var>sign-command</var> instead of finding
-                 <tt>gpg</tt> or <tt>pgp</tt> on the <prgn>PATH</prgn>.
-                 <var>sign-command</var> must behave just like
-                 <prgn>gpg</prgn> or <tt>pgp</tt>.</p>
-             </item>
-             <tag><tt>-r<var>root-command</var></tt></tag>
-             <item>
-               <p>
-                 When root privilege is required, invoke the command
-                 <var>root-command</var>.  <var>root-command</var>
-                 should invoke its first argument as a command, from
-                 the <prgn>PATH</prgn> if necessary, and pass its
-                 second and subsequent arguments to the command it
-                 calls.  If no <var>root-command</var> is supplied
-                 then <var>dpkg-buildpackage</var> will use
-                 the <prgn>fakeroot</prgn> command, which is sufficient
-                 to build most packages without actually requiring root
-                 privileges.</p>
-             </item>
-             <tag><tt>-b</tt>, <tt>-B</tt></tag>
-             <item>
-               <p>
-                 Two types of binary-only build and upload - see
-                 <manref name="dpkg-source" section="1">.
-               </p>
-             </item>
-           </taglist>
+           See <manref name="dpkg-buildpackage" section="1">.
          </p>
        </sect1>
 
@@ -11311,23 +11340,10 @@ END-INFO-DIR-ENTRY
          </heading>
 
          <p>
-           This program is usually called by package-independent
-           automatic building scripts such as
-           <prgn>dpkg-buildpackage</prgn>, but it may also be called
-           by hand.
-         </p>
-
-         <p>
-           It is usually called in the top level of a built source
-           tree, and when invoked with no arguments will print out a
-           straightforward <file>.changes</file> file based on the
-           information in the source package's changelog and control
-           file and the binary and source packages which should have
-           been built.
+           See <manref name="dpkg-genchanges" section="1">.
          </p>
        </sect1>
 
-
        <sect1 id="pkg-dpkg-parsechangelog">
           <heading>
             <prgn>dpkg-parsechangelog</prgn> - produces parsed
@@ -11335,12 +11351,7 @@ END-INFO-DIR-ENTRY
          </heading>
 
          <p>
-           This program is used internally by
-           <prgn>dpkg-source</prgn> et al.  It may also occasionally
-           be useful in <file>debian/rules</file> and elsewhere.  It
-           parses a changelog, <file>debian/changelog</file> by default,
-           and prints a control-file format representation of the
-           information in it to standard output.
+           See <manref name="dpkg-parsechangelog" section="1">.
          </p>
        </sect1>
 
@@ -11351,10 +11362,7 @@ END-INFO-DIR-ENTRY
           </heading>
 
           <p>
-            This program can be used manually, but is also invoked by
-            <tt>dpkg-buildpackage</tt> or <file>debian/rules</file> to set
-            environment or make variables which specify the build and host
-            architecture for the package building process.
+           See <manref name="dpkg-architecture" section="1">.
           </p>
         </sect1>
       </sect>