about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-09-20 17:39:11 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-09-20 17:42:43 +0200
commit594c47e5eb8a1589008a372d9b40e0bab2121c56 (patch)
tree1fa0f568abe7806aca7d2664f0f863048ff6d339
parentad8f31df7f2e85edeb22809ada0949f9f72a7bfd (diff)
Don't nuke section 3 manpages by default
They now go to devman, devdoc, or $outputMan, in that order. This is
to prevent cases such as the man-pages package quietly losing its
section 3 pages.
-rw-r--r--doc/multiple-output.xml31
-rw-r--r--pkgs/build-support/setup-hooks/multiple-outputs.sh4
2 files changed, 25 insertions, 10 deletions
diff --git a/doc/multiple-output.xml b/doc/multiple-output.xml
index 0bbb9ef8be3a8..c4e92c7e79a2e 100644
--- a/doc/multiple-output.xml
+++ b/doc/multiple-output.xml
@@ -45,34 +45,48 @@
     <title>File type groups</title>
     <para>The support code currently recognizes some particular kinds of outputs and either instructs the build system of the package to put files into their desired outputs or it moves the files during the fixup phase.  Each group of file types has an <varname>outputFoo</varname> variable specifying the output name where they should go.  If that variable isn't defined by the derivation writer, it is guessed &ndash; a default output name is defined, falling back to other possibilities if the output isn't defined.</para>
     <variablelist>
+
       <varlistentry><term><varname>
          $outputDev</varname></term><listitem><para>
          is for development-only files. These include C(++) headers, pkg-config, cmake and aclocal files.  They go to <varname>dev</varname> or <varname>out</varname> by default.
-        </para></listitem></varlistentry>
+       </para></listitem>
+      </varlistentry>
+
       <varlistentry><term><varname>
         $outputBin</varname></term><listitem><para>
         is meant for user-facing binaries, typically residing in bin/.  They go to <varname>bin</varname> or <varname>out</varname> by default.
-        </para></listitem></varlistentry>
+      </para></listitem></varlistentry>
+
       <varlistentry><term><varname>
         $outputLib</varname></term><listitem><para>
         is meant for libraries, typically residing in <filename>lib/</filename> and <filename>libexec/</filename>.  They go to <varname>lib</varname> or <varname>out</varname> by default.
-        </para></listitem></varlistentry>
+      </para></listitem></varlistentry>
+
       <varlistentry><term><varname>
         $outputDoc</varname></term><listitem><para>
         is for user documentation, typically residing in <filename>share/doc/</filename>.  It goes to <varname>doc</varname> or <varname>out</varname> by default.
-        </para></listitem></varlistentry>
+      </para></listitem></varlistentry>
+
       <varlistentry><term><varname>
         $outputDocdev</varname></term><listitem><para>
-        is for <emphasis>developer</emphasis> documentation.  Currently we count gtk-doc and man3 pages in there.  It goes to <varname>devdoc</varname> or is removed (!) by default.  This is because e.g. gtk-doc tends to be rather large and completely unused by nixpkgs users.
-        </para></listitem></varlistentry>
+        is for <emphasis>developer</emphasis> documentation.  Currently we count gtk-doc in there.  It goes to <varname>devdoc</varname> or is removed (!) by default.  This is because e.g. gtk-doc tends to be rather large and completely unused by nixpkgs users.
+      </para></listitem></varlistentry>
+
       <varlistentry><term><varname>
         $outputMan</varname></term><listitem><para>
         is for man pages (except for section 3). They go to <varname>man</varname> or <varname>doc</varname> or <varname>$outputBin</varname> by default.
-        </para></listitem></varlistentry>
+      </para></listitem></varlistentry>
+
+      <varlistentry><term><varname>
+        $outputDevman</varname></term><listitem><para>
+        is for section 3 man pages. They go to <varname>devman</varname> or <varname>$outputMan</varname> by default.
+      </para></listitem></varlistentry>
+
       <varlistentry><term><varname>
         $outputInfo</varname></term><listitem><para>
         is for info pages. They go to <varname>info</varname> or <varname>doc</varname> or <varname>$outputMan</varname> by default.
-        </para></listitem></varlistentry>
+      </para></listitem></varlistentry>
+
     </variablelist>
   </section>
 
@@ -88,4 +102,3 @@
 </section><!--Writing a split derivation-->
 
 </chapter>
-
diff --git a/pkgs/build-support/setup-hooks/multiple-outputs.sh b/pkgs/build-support/setup-hooks/multiple-outputs.sh
index 189c98cdfa711..2e853ac407820 100644
--- a/pkgs/build-support/setup-hooks/multiple-outputs.sh
+++ b/pkgs/build-support/setup-hooks/multiple-outputs.sh
@@ -16,6 +16,7 @@ _assignFirst() {
     echo "Error: _assignFirst found no valid variant!"
     return 1 # none found
 }
+
 # Same as _assignFirst, but only if "$1" = ""
 _overrideFirst() {
     if [ -z "${!1}" ]; then
@@ -40,6 +41,7 @@ _overrideFirst outputDoc "doc" "out"
 _overrideFirst outputDocdev "devdoc" REMOVE # documentation for developers
 # man and info pages are small and often useful to distribute with binaries
 _overrideFirst outputMan "man" "doc" "$outputBin"
+_overrideFirst outputDevman "devman" "devdoc" "$outputMan"
 _overrideFirst outputInfo "info" "doc" "$outputMan"
 
 
@@ -140,7 +142,7 @@ _multioutDocs() {
 
     # the default outputMan is in $bin
     moveToOutput share/man "${!outputMan}"
-    moveToOutput share/man/man3 "${!outputDocdev}"
+    moveToOutput share/man/man3 "${!outputDevman}"
 }
 
 # Move development-only stuff to the desired outputs.