Revert "Update docompress helper docs from bug #260118, comment #26."
[portage.git] / doc / package / ebuild / eapi / 4.docbook
index eda4dc37dd0a16bb8819d35ec29957dd02dd4c1a..e69b698db4804facd3c8d4801a931c2ba1bfc991 100644 (file)
@@ -8,6 +8,66 @@
 The dohard and dosed helpers from previous EAPIs are no longer available.
 </para>
 </section>
+<section id='package-ebuild-eapi-4_pre1-helpers-die-nonfatal'>
+<title>All helpers die on failure</title>
+<para>
+All helpers now die automatically whenever some sort of error occurs.
+Helper calls may be prefixed with the 'nonfatal' helper in order
+to prevent errors from being fatal.
+</para>
+</section>
+<section id='package-ebuild-eapi-4_pre1-helpers-docompress'>
+<title>Controllable Compression</title>
+<para>
+In EAPI 4, the package manager may optionally compress
+a subset of the files under the D
+directory. To control which directories may or may not be compressed, the
+package manager shall maintain two lists:
+<itemizedlist>
+<listitem><para>An inclusion list, which initially contains /usr/share/doc, /usr/share/info
+and /usr/share/man.</para></listitem>
+<listitem><para>An exclusion list, which initially contains /usr/share/doc/${PF}/html.</para></listitem>
+</itemizedlist>
+</para>
+<para>
+The optional compression shall be carried out after src_install has completed,
+and before the execution of any subsequent phase function. For each item in the
+inclusion list, pretend it has the value of the D variable prepended, then:
+<itemizedlist>
+<listitem><para>If it is a directory, act as if every file or directory immediately under
+this directory were in the inclusion list.</para></listitem>
+<listitem><para>If the item is a file, it may be compressed unless it has been excluded as
+described below.</para></listitem>
+<listitem><para>If the item does not exist, it is ignored.</para></listitem>
+</itemizedlist>
+</para>
+<para>
+Whether an item is to be excluded is determined as follows: For each item in
+the exclusion list, pretend it has the value of the D variable prepended, then:
+<itemizedlist>
+<listitem><para>If it is a directory, act as if every file or directory immediately under
+this directory were in the exclusion list.</para></listitem>
+<listitem><para>If the item is a file, it shall not be compressed.</para></listitem>
+<listitem><para>If the item does not exist, it is ignored.</para></listitem>
+</itemizedlist>
+</para>
+<para>
+The package manager shall take appropriate steps to ensure that its compression
+mechanisms behave sensibly even if an item is listed in the inclusion list
+multiple times, if an item is a symlink, or if a file is already compressed.
+</para>
+<para>
+The following commands may be used in src_install to alter these lists. It is
+an error to call any of these functions from any other phase.
+</para>
+<section id='package-ebuild-eapi-4_pre1-helpers-docompress-command'>
+<title>docompress helper</title>
+<para>
+If the first argument is -x, add each of its subsequent arguments to the
+exclusion list. Otherwise, add each argument to the inclusion list.
+</para>
+</section>
+</section>
 <section id='package-ebuild-eapi-4_pre1-helpers-dodoc-r'>
 <title>dodoc -r</title>
 <para>
@@ -21,6 +81,13 @@ The doins and newins helpers now preserve symlinks. In earlier EAPIs
 symlinks are dereferenced rather than preserved.
 </para>
 </section>
+<section id='package-ebuild-eapi-4_pre1-helpers-doman-i18n-precedence'>
+<title>doman -i18n option takes precedence over filename language suffix</title>
+<para>
+When the doman helper is called with the -i18n option, this takes precedence
+over the filename language suffix.
+</para>
+</section>
 <section id='package-ebuild-eapi-4_pre1-helpers-econf-disable-dependency-tracking'>
 <title>econf adds --disable-dependency-tracking</title>
 <para>
@@ -33,6 +100,14 @@ configure arguments.
 <title>Metadata</title>
        <section id='package-ebuild-eapi-4_pre1-metadata-dependencies'>
        <title>Dependencies</title>
+               <section id='package-ebuild-eapi-4_pre1-metadata-dependencies-rdepend-implicit-removed'>
+               <title>unset RDEPEND no longer triggers implicit setting</title>
+               <para>
+               When the RDEPEND variable is unset within an ebuild, it will remain
+               empty. In prior EAPIs, if RDEPEND was left unset then it was
+               implicitly set to the value of DEPEND.
+               </para>
+               </section>
                <section id='package-ebuild-eapi-4_pre1-metadata-dependencies-use-defaults'>
                <title>USE Dependency Defaults</title>
                <para>
@@ -193,6 +268,19 @@ src_install() {
 }
                        </programlisting>
                </section>
+               <section id='package-ebuild-eapi-4_pre1-phases-s-workdir-fallback'>
+                       <title>S to WORKDIR fallback restricted</title>
+                       <para>
+                       For any of the src_* phases that executes after src_unpack,
+                       it is invalid for the S variable to refer to a non-existent
+                       directory. However, these src_* phases are exempt from this
+                       requirement if none of the prior src_* phases are defined by the
+                       ebuild. When a src_* phase is exempt from this requirement, if the
+                       S variable does not refer to an existing directory, the
+                       WORKDIR directory will be used instead of S as the initial working
+                       directory.
+                       </para>
+               </section>
        </section>
        <section id='package-ebuild-eapi-4_pre1-variables'>
                <title>Variables</title>
@@ -202,5 +290,23 @@ src_install() {
                        The AA and KV variables are no longer exported to the ebuild environment.
                        </para>
                </section>
+               <section id='package-ebuild-eapi-4_pre1-variables-replaced-versions'>
+                       <title>REPLACING_VERSIONS and REPLACED_BY_VERSION</title>
+                       <para>
+                       The REPLACING_VERSIONS variable
+                       shall be defined in pkg_preinst and pkg_postinst. In addition, it may be
+                       defined in pkg_pretend and pkg_setup, although ebuild authors should take care
+                       to handle binary package creation and installation correctly when using it in
+                       these phases.
+                       </para>
+                       <para>
+                       REPLACING_VERSIONS is a list, not a single optional value, to handle
+                       pathological cases such as installing foo-2:2 to replace foo-2:1 and foo-3:2.
+                       </para>
+                       <para>
+                       The REPLACED_BY variable shall
+                       be defined in pkg_prerm and pkg_postrm. It shall contain at most one value. 
+                       </para>
+               </section>
        </section>
 </section>