mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 16:33:15 +00:00
98b8a9369b
libcap hasn't used attr since commit 85f38a5 ("Drop use of libattr for our trivial use case of kernel API."). Because it was propagated, we have to be careful about packages that depended on it indirectly. To mitigate this, I've tested building every direct dependency of libcap. The only one I found that was missing an attr dependency of its own was bfs.
91 lines
2.1 KiB
Nix
91 lines
2.1 KiB
Nix
{ stdenv, lib, buildPackages, fetchurl, runtimeShell
|
|
, usePam ? !isStatic, pam ? null
|
|
, isStatic ? stdenv.hostPlatform.isStatic
|
|
|
|
# passthru.tests
|
|
, bind
|
|
, chrony
|
|
, htop
|
|
, libgcrypt
|
|
, libvirt
|
|
, ntp
|
|
, qemu
|
|
, squid
|
|
, tor
|
|
, uwsgi
|
|
}:
|
|
|
|
assert usePam -> pam != null;
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "libcap";
|
|
version = "2.70";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://kernel/linux/libs/security/linux-privs/libcap2/${pname}-${version}.tar.xz";
|
|
sha256 = "sha256-I6bviq2vHj6HX2M7stEWz++JUtunvHxWmxNFjhlSsw8=";
|
|
};
|
|
|
|
outputs = [ "out" "dev" "lib" "man" "doc" ]
|
|
++ lib.optional usePam "pam";
|
|
|
|
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
|
|
|
buildInputs = lib.optional usePam pam;
|
|
|
|
makeFlags = [
|
|
"lib=lib"
|
|
"PAM_CAP=${if usePam then "yes" else "no"}"
|
|
"BUILD_CC=$(CC_FOR_BUILD)"
|
|
"CC:=$(CC)"
|
|
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
|
|
] ++ lib.optionals isStatic [ "SHARED=no" "LIBCSTATIC=yes" ];
|
|
|
|
postPatch = ''
|
|
patchShebangs ./progs/mkcapshdoc.sh
|
|
|
|
# use full path to bash
|
|
substituteInPlace progs/capsh.c --replace "/bin/bash" "${runtimeShell}"
|
|
|
|
# set prefixes
|
|
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"
|
|
'';
|
|
|
|
installFlags = [ "RAISE_SETFCAP=no" ];
|
|
|
|
postInstall = ''
|
|
${lib.optionalString (!isStatic) ''rm "$lib"/lib/*.a''}
|
|
mkdir -p "$doc/share/doc/${pname}-${version}"
|
|
cp License "$doc/share/doc/${pname}-${version}/"
|
|
'' + lib.optionalString usePam ''
|
|
mkdir -p "$pam/lib/security"
|
|
mv "$lib"/lib/security "$pam/lib"
|
|
'';
|
|
|
|
passthru.tests = {
|
|
inherit
|
|
bind
|
|
chrony
|
|
htop
|
|
libgcrypt
|
|
libvirt
|
|
ntp
|
|
qemu
|
|
squid
|
|
tor
|
|
uwsgi;
|
|
};
|
|
|
|
meta = {
|
|
description = "Library for working with POSIX capabilities";
|
|
homepage = "https://sites.google.com/site/fullycapable";
|
|
platforms = lib.platforms.linux;
|
|
license = lib.licenses.bsd3;
|
|
};
|
|
}
|