63 lines
2 KiB
Nix
63 lines
2 KiB
Nix
{ stdenv, fetchurl, pythonPackages, gettext
|
|
, setools, libsepol, libselinux, libcap_ng, libsemanage, sepolgen
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "policycoreutils-${version}";
|
|
version = "2.4";
|
|
inherit (libsepol) se_release se_url;
|
|
|
|
src = fetchurl {
|
|
url = "${se_url}/${se_release}/policycoreutils-${version}.tar.gz";
|
|
sha256 = "0y9l9k60iy21hj0lcvfdfxs1fxydg6d3pxp9rhy7hwr4y5vgh6dq";
|
|
};
|
|
|
|
postPatch = ''
|
|
# Fix references to libsepol.a
|
|
find . -name Makefile -exec sed -i 's,[^ ]*/libsepol.a,${libsepol}/lib/libsepol.a,g' {} \;
|
|
|
|
# Fix install references
|
|
substituteInPlace po/Makefile --replace /usr/bin/install install
|
|
|
|
# Fix references to /usr/share
|
|
grep -r '/usr/share' | awk -F: '{print $1}' | xargs sed -i "s,\(\$(DESTDIR)\)*/usr/share,$out/share,g"
|
|
|
|
# Fix sepolicy install
|
|
sed -i "s,\(setup.py install\).*,\1 --prefix=$out,g" sepolicy/Makefile
|
|
'';
|
|
|
|
nativeBuildInputs = [ pythonPackages.python gettext ];
|
|
buildInputs = [ setools libsepol libselinux libcap_ng libsemanage ];
|
|
pythonPath = [ libselinux sepolgen ];
|
|
|
|
preBuild = ''
|
|
makeFlagsArray+=("PREFIX=$out")
|
|
makeFlagsArray+=("DESTDIR=$out")
|
|
'';
|
|
|
|
# Creation of the system-config-selinux directory is broken
|
|
preInstall = ''
|
|
mkdir -p $out/share/system-config-selinux
|
|
'';
|
|
|
|
# Fix the python scripts to include paths to libraries
|
|
# NOTE: We are not using wrapPythonPrograms or makeWrapper as these scripts
|
|
# purge the environment as a security measure
|
|
postInstall = ''
|
|
grep -r '#!.*python' $out/bin | awk -F: '{print $1}' | xargs sed -i "1a \
|
|
import sys; \
|
|
sys.path.append('$(toPythonPath "$out")'); \
|
|
${stdenv.lib.flip stdenv.lib.concatMapStrings pythonPath (lib: ''
|
|
sys.path.append('$(toPythonPath "${lib}")'); \
|
|
'')}"
|
|
'';
|
|
|
|
NIX_CFLAGS_COMPILE = "-fstack-protector-all";
|
|
|
|
meta = with stdenv.lib; {
|
|
description = "SELinux policy core utilities";
|
|
license = licenses.gpl2;
|
|
inherit (libsepol.meta) homepage platforms maintainers;
|
|
};
|
|
}
|
|
|