1{ lib, fetchFromGitHub, python3
2, libsepol, libselinux, checkpolicy
3, fetchpatch
4, withGraphics ? false
5}:
6
7with lib;
8with python3.pkgs;
9
10buildPythonApplication rec {
11 pname = "setools";
12 version = "4.3.0";
13
14 src = fetchFromGitHub {
15 owner = "SELinuxProject";
16 repo = pname;
17 rev = version;
18 sha256 = "0vr20bi8w147z5lclqz1l0j1b34137zg2r04pkafkgqqk7qbyjk6";
19 };
20
21 patches = [
22 (fetchpatch { # included in 4.4.0
23 url = "https://github.com/SELinuxProject/setools/commit/f1b4a5d375be05fbccedb258c940d771bff8e524.diff";
24 sha256 = "1r38s6i4i6bdr2zdp5wcg1yifpf3pd018c73a511mgynyg7d11xy";
25 })
26 ];
27
28 nativeBuildInputs = [ cython ];
29 buildInputs = [ libsepol ];
30 propagatedBuildInputs = [ enum34 libselinux networkx ]
31 ++ optionals withGraphics [ pyqt5 ];
32
33 checkInputs = [ tox checkpolicy ];
34 preCheck = ''
35 export CHECKPOLICY=${checkpolicy}/bin/checkpolicy
36 '';
37
38 setupPyBuildFlags = [ "-i" ];
39
40 preBuild = ''
41 export SEPOL="${lib.getLib libsepol}/lib/libsepol.a"
42 '';
43
44 meta = {
45 description = "SELinux Policy Analysis Tools";
46 homepage = "https://github.com/SELinuxProject/setools";
47 license = licenses.gpl2;
48 platforms = platforms.linux;
49 };
50}