1{
2 stdenv,
3 lib,
4 buildPythonPackage,
5 pythonOlder,
6 fetchFromGitHub,
7
8 # build-system
9 cython,
10 setuptools,
11
12 # dependencies
13 decorator,
14
15 # native dependencies
16 GSS,
17 krb5-c, # C krb5 library, not PyPI krb5
18
19 # tests
20 parameterized,
21 k5test,
22 pytestCheckHook,
23}:
24
25buildPythonPackage rec {
26 pname = "gssapi";
27 version = "1.8.3";
28 pyproject = true;
29
30 disabled = pythonOlder "3.6";
31
32 src = fetchFromGitHub {
33 owner = "pythongssapi";
34 repo = "python-${pname}";
35 rev = "refs/tags/v${version}";
36 hash = "sha256-H1JfdvxJvX5dmC9aTqIOkjAqFEL44KoUXEhoYj2uRY8=";
37 };
38
39 postPatch = ''
40 substituteInPlace setup.py \
41 --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5-c}"'
42 '';
43
44 env = lib.optionalAttrs (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) {
45 GSSAPI_SUPPORT_DETECT = "false";
46 };
47
48 build-system = [
49 cython
50 krb5-c
51 setuptools
52 ];
53
54 dependencies = [ decorator ];
55
56 buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ GSS ];
57
58 # k5test is marked as broken on darwin
59 doCheck = !stdenv.hostPlatform.isDarwin;
60
61 nativeCheckInputs = [
62 k5test
63 parameterized
64 pytestCheckHook
65 ];
66
67 preCheck = ''
68 mv gssapi/tests $TMPDIR/
69 pushd $TMPDIR
70 '';
71
72 postCheck = ''
73 popd
74 '';
75
76 pythonImportsCheck = [ "gssapi" ];
77
78 meta = with lib; {
79 homepage = "https://pypi.python.org/pypi/gssapi";
80 description = "Python GSSAPI Wrapper";
81 license = licenses.mit;
82 };
83}