summary refs log tree commit diff
path: root/pkgs/os-specific/linux/libcap
diff options
context:
space:
mode:
authorJoe Hermaszewski <git@monoid.al>2020-11-10 15:54:52 +0800
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2020-12-08 05:21:05 +0100
commit4fe23ed6cae572b295d0595ad4a4b39021a1468a (patch)
tree087da95f5678921eb92917905700543e2df310d8 /pkgs/os-specific/linux/libcap
parent88fcd687d0defd1aee87733780667a7de6c3c3e3 (diff)
downloadnixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.tar
nixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.tar.gz
nixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.tar.bz2
nixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.tar.lz
nixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.tar.xz
nixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.tar.zst
nixpkgs-4fe23ed6cae572b295d0595ad4a4b39021a1468a.zip
libcap: fix static build
This makes the build correct when cap==null

It also patches the Makefiles so that shared libraries aren't built during the install phase
Diffstat (limited to 'pkgs/os-specific/linux/libcap')
-rw-r--r--pkgs/os-specific/linux/libcap/default.nix12
-rw-r--r--pkgs/os-specific/linux/libcap/no-shared-lib.patch22
2 files changed, 30 insertions, 4 deletions
diff --git a/pkgs/os-specific/linux/libcap/default.nix b/pkgs/os-specific/linux/libcap/default.nix
index 7931e35a844..713c4b5d13d 100644
--- a/pkgs/os-specific/linux/libcap/default.nix
+++ b/pkgs/os-specific/linux/libcap/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, buildPackages, fetchurl, attr, perl, pam }:
+{ stdenv, lib, buildPackages, fetchurl, attr, perl, pam
+, static ? stdenv.targetPlatform.isStatic }:
 
 stdenv.mkDerivation rec {
   pname = "libcap";
@@ -9,7 +10,10 @@ stdenv.mkDerivation rec {
     sha256 = "1qf80lifygbnxwvqjf8jz5j24n6fqqx4ixnkbf76xs2vrmcq664j";
   };
 
-  outputs = [ "out" "dev" "lib" "man" "doc" "pam" ];
+  patches = lib.optional static ./no-shared-lib.patch;
+
+  outputs = [ "out" "dev" "lib" "man" "doc" ]
+    ++ lib.optional (pam != null) "pam";
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
   nativeBuildInputs = [ perl ];
@@ -20,7 +24,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [
     "lib=lib"
-    "PAM_CAP=yes"
+    "PAM_CAP=${if pam == null then "no" else "yes"}"
     "BUILD_CC=$(CC_FOR_BUILD)"
     "CC:=$(CC)"
   ];
@@ -44,7 +48,7 @@ stdenv.mkDerivation rec {
   installFlags = [ "RAISE_SETFCAP=no" ];
 
   postInstall = ''
-    rm "$lib"/lib/*.a
+    ${lib.optionalString (!static) ''rm "$lib"/lib/*.a''}
     mkdir -p "$doc/share/doc/${pname}-${version}"
     cp License "$doc/share/doc/${pname}-${version}/"
   '' + stdenv.lib.optionalString (pam != null) ''
diff --git a/pkgs/os-specific/linux/libcap/no-shared-lib.patch b/pkgs/os-specific/linux/libcap/no-shared-lib.patch
new file mode 100644
index 00000000000..73dc7de063d
--- /dev/null
+++ b/pkgs/os-specific/linux/libcap/no-shared-lib.patch
@@ -0,0 +1,22 @@
+diff --git a/libcap/Makefile b/libcap/Makefile
+index de6a28d..7e4d8ac 100644
+--- a/libcap/Makefile
++++ b/libcap/Makefile
+@@ -22,7 +22,7 @@ MAJLIBNAME=$(LIBNAME).$(VERSION)
+ MINLIBNAME=$(MAJLIBNAME).$(MINOR)
+ GPERF_OUTPUT = _caps_output.gperf
+ 
+-all: $(MINLIBNAME) $(STACAPLIBNAME) pcs $(STAPSXLIBNAME)
++all: $(STACAPLIBNAME) pcs $(STAPSXLIBNAME)
+ 
+ pcs: libcap.pc libpsx.pc
+ 
+@@ -93,7 +93,7 @@ cap_test: cap_test.c libcap.h
+ test: cap_test
+ 	./cap_test
+ 
+-install: install-static install-shared
++install: install-static
+ 
+ install-static: install-static-cap install-static-psx
+