From 4fe23ed6cae572b295d0595ad4a4b39021a1468a Mon Sep 17 00:00:00 2001 From: Joe Hermaszewski Date: Tue, 10 Nov 2020 15:54:52 +0800 Subject: 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 --- pkgs/os-specific/linux/libcap/default.nix | 12 ++++++++---- pkgs/os-specific/linux/libcap/no-shared-lib.patch | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 pkgs/os-specific/linux/libcap/no-shared-lib.patch (limited to 'pkgs/os-specific/linux/libcap') diff --git a/pkgs/os-specific/linux/libcap/default.nix b/pkgs/os-specific/linux/libcap/default.nix index 7931e35a84413..713c4b5d13d96 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 0000000000000..73dc7de063d46 --- /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 + -- cgit 1.4.1