summary refs log tree commit diff
path: root/pkgs/os-specific/linux/libcap
diff options
context:
space:
mode:
authorAlexander Ried <ried@mytum.de>2016-04-19 23:12:45 +0200
committerAlexander Ried <ried@mytum.de>2016-05-03 19:52:10 +0200
commit7382afac40c23841e5d6a491bd4a9412d766ecab (patch)
tree0c68f305082321ac61ed69f04ff9d4ba73067bfd /pkgs/os-specific/linux/libcap
parent64ef643833de573ccec8bb0d923b5d6807ef81b0 (diff)
downloadnixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.tar
nixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.tar.gz
nixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.tar.bz2
nixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.tar.lz
nixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.tar.xz
nixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.tar.zst
nixpkgs-7382afac40c23841e5d6a491bd4a9412d766ecab.zip
libcap: replace old split with multi-output
Diffstat (limited to 'pkgs/os-specific/linux/libcap')
-rw-r--r--pkgs/os-specific/linux/libcap/default.nix42
-rw-r--r--pkgs/os-specific/linux/libcap/man.nix13
-rw-r--r--pkgs/os-specific/linux/libcap/pam.nix15
-rw-r--r--pkgs/os-specific/linux/libcap/progs.nix28
4 files changed, 35 insertions, 63 deletions
diff --git a/pkgs/os-specific/linux/libcap/default.nix b/pkgs/os-specific/linux/libcap/default.nix
index 411044c1b92..13d2fb7f5c5 100644
--- a/pkgs/os-specific/linux/libcap/default.nix
+++ b/pkgs/os-specific/linux/libcap/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, attr, perl }:
+{ stdenv, fetchurl, attr, perl, pam ? null }:
+assert pam != null -> stdenv.isLinux;
 
 stdenv.mkDerivation rec {
   name = "libcap-${version}";
@@ -9,19 +10,46 @@ stdenv.mkDerivation rec {
     sha256 = "0qjiqc5pknaal57453nxcbz3mn1r4hkyywam41wfcglq3v2qlg39";
   };
 
-  outputs = [ "dev" "out" ];
+  outputs = [ "dev" "lib" "doc" "out" ]
+    ++ stdenv.lib.optional (pam != null) "pam";
 
   nativeBuildInputs = [ perl ];
+
+  buildInputs = [ pam ];
+
   propagatedBuildInputs = [ attr ];
 
-  preConfigure = "cd libcap";
+  makeFlags = [
+    "lib=lib"
+    (stdenv.lib.optional (pam != null) "PAM_CAP=yes")
+  ];
+
+  prePatch = ''
+    # use relative bash path
+    substituteInPlace progs/capsh.c --replace "/bin/bash" "bash"
+
+    # ensure capsh can find bash in $PATH
+    substituteInPlace progs/capsh.c --replace execve execvpe
+  '';
+
+  preInstall = ''
+    substituteInPlace Make.Rules \
+      --replace 'prefix=/usr' "prefix=$lib" \
+      --replace 'exec_prefix=' "exec_prefix=$out" \
+      --replace 'lib_prefix=$(exec_prefix)' "lib_prefix=$lib" \
+      --replace 'inc_prefix=$(prefix)' "inc_prefix=$dev" \
+      --replace 'man_prefix=$(prefix)' "man_prefix=$doc"
+  '';
 
-  makeFlags = "lib=lib prefix=$(out)";
+  installFlags = "RAISE_SETFCAP=no";
 
   postInstall = ''
-    rm "$out"/lib/*.a
-    mkdir -p "$dev/share/doc/${name}"
-    cp ../License "$dev/share/doc/${name}/License"
+    rm "$lib"/lib/*.a
+    mkdir -p "$doc/share/doc/${name}"
+    cp License "$doc/share/doc/${name}/"
+  '' + stdenv.lib.optionalString (pam != null) ''
+    mkdir -p "$pam/lib/security"
+    mv "$lib"/lib/security "$pam/lib"
   '';
 
   meta = {
diff --git a/pkgs/os-specific/linux/libcap/man.nix b/pkgs/os-specific/linux/libcap/man.nix
deleted file mode 100644
index eeb780f095b..00000000000
--- a/pkgs/os-specific/linux/libcap/man.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, libcap}:
-
-assert stdenv.isLinux;
-
-stdenv.mkDerivation rec {
-  name = "libcap-docs-${libcap.version}";
-
-  inherit (libcap) src;
-
-  makeFlags = "MANDIR=$(out)/share/man";
-
-  preConfigure = "cd doc";
-}
diff --git a/pkgs/os-specific/linux/libcap/pam.nix b/pkgs/os-specific/linux/libcap/pam.nix
deleted file mode 100644
index 3dd7cd947af..00000000000
--- a/pkgs/os-specific/linux/libcap/pam.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{stdenv, pam, libcap}:
-
-assert stdenv.isLinux;
-
-stdenv.mkDerivation rec {
-  name = "libcap-pam-${libcap.version}";
-
-  inherit (libcap) src;
-
-  buildInputs = [ libcap pam ];
-
-  preConfigure = "cd pam_cap";
-
-  makeFlags = "${libcap.makeFlags} PAM_CAP=yes";
-}
diff --git a/pkgs/os-specific/linux/libcap/progs.nix b/pkgs/os-specific/linux/libcap/progs.nix
deleted file mode 100644
index e3871f15f88..00000000000
--- a/pkgs/os-specific/linux/libcap/progs.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{stdenv, libcap}:
-
-assert stdenv.isLinux;
-
-stdenv.mkDerivation rec {
-  name = "libcap-progs-${libcap.version}";
-
-  inherit (libcap) src makeFlags;
-
-  buildInputs = [ libcap ];
-
-  prePatch = ''
-    # use relative bash path
-    substituteInPlace progs/capsh.c --replace "/bin/bash" "bash"
-
-    # ensure capsh can find bash in $PATH
-    substituteInPlace progs/capsh.c --replace execve execvpe
-  '';
-
-  preConfigure = "cd progs";
-
-  installFlags = "RAISE_SETFCAP=no";
-
-  postInstall = ''
-    mkdir -p "$out/share/doc/${name}"
-    cp ../License "$out/share/doc/${name}/"
-  '';
-}