summary refs log tree commit diff
path: root/pkgs/build-support/setup-hooks
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-04-18 08:50:34 +0200
committerVladimír Čunát <vcunat@gmail.com>2016-04-20 16:36:10 +0200
commit9f8751528cd89d343258dd718afa56f8590917bb (patch)
treec16d8e656dbf03c0372176cc9849e4342d6c491d /pkgs/build-support/setup-hooks
parent908aac3ca73ac0b7dbcd3933329fa13c21416506 (diff)
downloadnixlib-9f8751528cd89d343258dd718afa56f8590917bb.tar
nixlib-9f8751528cd89d343258dd718afa56f8590917bb.tar.gz
nixlib-9f8751528cd89d343258dd718afa56f8590917bb.tar.bz2
nixlib-9f8751528cd89d343258dd718afa56f8590917bb.tar.lz
nixlib-9f8751528cd89d343258dd718afa56f8590917bb.tar.xz
nixlib-9f8751528cd89d343258dd718afa56f8590917bb.tar.zst
nixlib-9f8751528cd89d343258dd718afa56f8590917bb.zip
stdenv multiple-outputs: fix #14782 --docdir location
- the default --docdir is typically DATAROOTDIR/doc/pkgName
- I saw no other way than to employ some magic to guess this `pkgName`
- user can override it by setting $shareDocName
Diffstat (limited to 'pkgs/build-support/setup-hooks')
-rw-r--r--pkgs/build-support/setup-hooks/multiple-outputs.sh20
1 files changed, 19 insertions, 1 deletions
diff --git a/pkgs/build-support/setup-hooks/multiple-outputs.sh b/pkgs/build-support/setup-hooks/multiple-outputs.sh
index 2cf08d42ae04..c49ea4b09a7f 100644
--- a/pkgs/build-support/setup-hooks/multiple-outputs.sh
+++ b/pkgs/build-support/setup-hooks/multiple-outputs.sh
@@ -47,11 +47,28 @@ _overrideFirst outputInfo "info" "doc" "$outputMan"
 _multioutConfig() {
     if [ "$outputs" = "out" ] || [ -z "${setOutputFlags-1}" ]; then return; fi;
 
+    # try to detect share/doc/${shareDocName}
+    # Note: sadly, $configureScript detection comes later in configurePhase,
+    #   and reordering would cause more trouble than worth.
+    if [ -z "$shareDocName" ]; then
+        local confScript="$configureScript"
+        if [ -z "$confScript" ] && [ -x ./configure ]; then
+            confScript=./configure
+        fi
+        if [ -f "$confScript" ]; then
+            local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"
+        fi
+                                    # PACKAGE_TARNAME sometimes contains garbage.
+        if [ -n "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z-_0-9]'; then
+            shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"
+        fi
+    fi
+
     configureFlags="\
         --bindir=${!outputBin}/bin --sbindir=${!outputBin}/sbin \
         --includedir=${!outputInclude}/include --oldincludedir=${!outputInclude}/include \
         --mandir=${!outputMan}/share/man --infodir=${!outputInfo}/share/info \
-        --docdir=${!outputDoc}/share/doc \
+        --docdir=${!outputDoc}/share/doc/${shareDocName} \
         --libdir=${!outputLib}/lib --libexecdir=${!outputLib}/libexec \
         --localedir=${!outputLib}/share/locale \
         $configureFlags"
@@ -62,6 +79,7 @@ _multioutConfig() {
         $installFlags"
 }
 
+
 # Add rpath prefixes to library paths, and avoid stdenv doing it for $out.
 _addRpathPrefix "${!outputLib}"
 NIX_NO_SELF_RPATH=1