From eebf361edd82d14af4bb4eb92cbdefb57c8582cf Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 13:43:08 -0400 Subject: [PATCH 1/9] python3Packages.pykerberos: disambiguate krb5 PyPI also has a package called krb5 and this package wants the system krb5, not the PyPI one. --- pkgs/development/python-modules/pykerberos/default.nix | 7 ++++--- pkgs/top-level/python-packages.nix | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/pykerberos/default.nix b/pkgs/development/python-modules/pykerberos/default.nix index b7b8953a72b3..653d978922ba 100644 --- a/pkgs/development/python-modules/pykerberos/default.nix +++ b/pkgs/development/python-modules/pykerberos/default.nix @@ -2,7 +2,7 @@ lib, fetchPypi, buildPythonPackage, - krb5, + pkgs, }: buildPythonPackage rec { @@ -15,12 +15,13 @@ buildPythonPackage rec { hash = "sha256-nXAevY/FlsmdMVXVukWBO9WQjSbvg7oK3SUO22IqvtQ="; }; - nativeBuildInputs = [ krb5 ]; # for krb5-config + nativeBuildInputs = [ pkgs.krb5 ]; # for krb5-config - buildInputs = [ krb5 ]; + buildInputs = [ pkgs.krb5 ]; # there are no tests doCheck = false; + pythonImportsCheck = [ "kerberos" ]; meta = with lib; { diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ac6b04ff3897..e4e924cfbd3e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11603,7 +11603,9 @@ self: super: with self; { pykeepass = callPackage ../development/python-modules/pykeepass { }; - pykerberos = callPackage ../development/python-modules/pykerberos { }; + pykerberos = callPackage ../development/python-modules/pykerberos { + krb5-c = pkgs.krb5; + }; pykeyatome = callPackage ../development/python-modules/pykeyatome { }; From cd7aa8d5842f7b2a3499ed1e9c15c314e480f749 Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 13:44:22 -0400 Subject: [PATCH 2/9] python3Packages.pypsrp: propagate kerberos deps from pyspnego This is more faithful to the project's pyproject.toml, which specifies pyspnego[kerberos] as the dependencies for kerberos. --- pkgs/development/python-modules/pypsrp/default.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/pypsrp/default.nix b/pkgs/development/python-modules/pypsrp/default.nix index 7cf8c56581dc..faddf2906f5f 100644 --- a/pkgs/development/python-modules/pypsrp/default.nix +++ b/pkgs/development/python-modules/pypsrp/default.nix @@ -4,10 +4,8 @@ buildPythonPackage, cryptography, fetchFromGitHub, - gssapi, httpcore, httpx, - krb5, psrpcore, psutil, pyspnego, @@ -52,11 +50,7 @@ buildPythonPackage rec { passthru.optional-dependencies = { credssp = [ requests-credssp ]; - kerberos = [ - # pyspnego[kerberos] will have those two dependencies - gssapi - krb5 - ]; + kerberos = pyspnego.optional-dependencies.kerberos; named_pipe = [ psutil ]; ssh = [ asyncssh ]; }; From a1fd7ef9ae2b3d5df8866d12be3c344b7ab2696e Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 13:50:29 -0400 Subject: [PATCH 3/9] python3Packages.cccolutils: disambiguate krb5 PyPI also has a package called krb5 and this package wants the system krb5, not the PyPI one. --- pkgs/development/python-modules/cccolutils/default.nix | 4 ++-- pkgs/top-level/python-packages.nix | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/cccolutils/default.nix b/pkgs/development/python-modules/cccolutils/default.nix index 829ebd248c41..53baa3c3e034 100644 --- a/pkgs/development/python-modules/cccolutils/default.nix +++ b/pkgs/development/python-modules/cccolutils/default.nix @@ -4,7 +4,7 @@ fetchPypi, git, gitpython, - krb5, + krb5-c, # C krb5 library, not PyPI krb5 mock, pytestCheckHook, pythonOlder, @@ -23,7 +23,7 @@ buildPythonPackage rec { hash = "sha256-YzKjG43biRbTZKtzSUHHhtzOfcZfzISHDFolqzrBjL8="; }; - buildInputs = [ krb5 ]; + buildInputs = [ krb5-c ]; propagatedBuildInputs = [ git diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e4e924cfbd3e..9d130bf76835 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2031,7 +2031,9 @@ self: super: with self; { cbor = callPackage ../development/python-modules/cbor { }; - cccolutils = callPackage ../development/python-modules/cccolutils { }; + cccolutils = callPackage ../development/python-modules/cccolutils { + krb5-c = pkgs.krb5; + }; cdcs = callPackage ../development/python-modules/cdcs { }; From 4c2d4a4fbb3ca03ba88f5953982a7b4a45105114 Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 13:52:25 -0400 Subject: [PATCH 4/9] python3Packages.requests-credssp: propagate kerberos deps from pyspnego This is more faithful to the project's pyproject.toml, which specifies pyspnego[kerberos] as the dependencies for kerberos. --- .../python-modules/requests-credssp/default.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/requests-credssp/default.nix b/pkgs/development/python-modules/requests-credssp/default.nix index 243332123f79..f6be7b9908f2 100644 --- a/pkgs/development/python-modules/requests-credssp/default.nix +++ b/pkgs/development/python-modules/requests-credssp/default.nix @@ -3,8 +3,6 @@ buildPythonPackage, cryptography, fetchFromGitHub, - gssapi, - krb5, pyspnego, pytestCheckHook, pythonOlder, @@ -34,11 +32,7 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook ]; passthru.optional-dependencies = { - kerberos = [ - # pyspnego[kerberos] will have those two dependencies - gssapi - krb5 - ]; + kerberos = pyspnego.optional-dependencies.kerberos; }; pythonImportsCheck = [ "requests_credssp" ]; From 392892b6bb6dff55acd12b61beee847960fcbe7d Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 14:04:39 -0400 Subject: [PATCH 5/9] python3Packages.k5test: disambiguate krb5 PyPI also has a package called krb5 and this package wants the system krb5, not the PyPI one. --- pkgs/development/python-modules/k5test/default.nix | 11 ++++++----- .../development/python-modules/pykerberos/default.nix | 6 +++--- pkgs/top-level/python-packages.nix | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pkgs/development/python-modules/k5test/default.nix b/pkgs/development/python-modules/k5test/default.nix index 676fea31f827..208f24c2b2bf 100644 --- a/pkgs/development/python-modules/k5test/default.nix +++ b/pkgs/development/python-modules/k5test/default.nix @@ -1,12 +1,12 @@ { lib, buildPythonPackage, - pythonOlder, fetchPypi, - substituteAll, findutils, - krb5, + krb5-c, + pythonOlder, setuptools, + substituteAll, }: buildPythonPackage rec { @@ -24,9 +24,10 @@ buildPythonPackage rec { patches = [ (substituteAll { src = ./fix-paths.patch; - inherit findutils krb5; + inherit findutils; + krb5 = krb5-c; # krb5-config is in dev output - krb5Dev = krb5.dev; + krb5Dev = krb5-c.dev; }) ]; diff --git a/pkgs/development/python-modules/pykerberos/default.nix b/pkgs/development/python-modules/pykerberos/default.nix index 653d978922ba..8b8be76b12e5 100644 --- a/pkgs/development/python-modules/pykerberos/default.nix +++ b/pkgs/development/python-modules/pykerberos/default.nix @@ -2,7 +2,7 @@ lib, fetchPypi, buildPythonPackage, - pkgs, + krb5-c, # C krb5 library, not PyPI krb5 }: buildPythonPackage rec { @@ -15,9 +15,9 @@ buildPythonPackage rec { hash = "sha256-nXAevY/FlsmdMVXVukWBO9WQjSbvg7oK3SUO22IqvtQ="; }; - nativeBuildInputs = [ pkgs.krb5 ]; # for krb5-config + nativeBuildInputs = [ krb5-c ]; # for krb5-config - buildInputs = [ pkgs.krb5 ]; + buildInputs = [ krb5-c ]; # there are no tests doCheck = false; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9d130bf76835..69ea001aeac3 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6536,7 +6536,8 @@ self: super: with self; { k-diffusion = callPackage ../development/python-modules/k-diffusion { }; k5test = callPackage ../development/python-modules/k5test { - inherit (pkgs) krb5 findutils; + inherit (pkgs) findutils; + krb5-c = pkgs.krb5; }; kaa-base = callPackage ../development/python-modules/kaa-base { }; From 79d9127ea6c56b07b9ccf4303ebadbd294c04b74 Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Thu, 8 Aug 2024 15:02:30 -0400 Subject: [PATCH 6/9] python3Packages.gssapi: disambiguate krb5 PyPI also has a package called krb5 and this package wants the system krb5, not the PyPI one. --- pkgs/development/python-modules/gssapi/default.nix | 6 +++--- pkgs/top-level/python-packages.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/gssapi/default.nix b/pkgs/development/python-modules/gssapi/default.nix index 44a7b87ec7c3..08683996db8d 100644 --- a/pkgs/development/python-modules/gssapi/default.nix +++ b/pkgs/development/python-modules/gssapi/default.nix @@ -7,7 +7,6 @@ # build-system cython, - krb5, setuptools, # dependencies @@ -15,6 +14,7 @@ # native dependencies GSS, + krb5-c, # C krb5 library, not PyPI krb5 # tests parameterized, @@ -38,7 +38,7 @@ buildPythonPackage rec { postPatch = '' substituteInPlace setup.py \ - --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5}"' + --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5-c}"' ''; env = lib.optionalAttrs (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) { @@ -47,7 +47,7 @@ buildPythonPackage rec { build-system = [ cython - krb5 + krb5-c setuptools ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 69ea001aeac3..b63d0c230734 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5370,8 +5370,8 @@ self: super: with self; { gspread = callPackage ../development/python-modules/gspread { }; gssapi = callPackage ../development/python-modules/gssapi { - inherit (pkgs) krb5; inherit (pkgs.darwin.apple_sdk.frameworks) GSS; + krb5-c = pkgs.krb5; }; gst-python = callPackage ../development/python-modules/gst-python { From bbdd87069f0e0d822f642626a4d095949e51d382 Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 14:16:25 -0400 Subject: [PATCH 7/9] python3Packages.krb5: init at 0.6.0 This causes pyspnego to get this krb5 package instead of the top-level system krb5 package. That's actually intentional because pyspnego's current dependency on the system package is incorrect. --- .../python-modules/krb5/default.nix | 46 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 50 insertions(+) create mode 100644 pkgs/development/python-modules/krb5/default.nix diff --git a/pkgs/development/python-modules/krb5/default.nix b/pkgs/development/python-modules/krb5/default.nix new file mode 100644 index 000000000000..ee520b0f0012 --- /dev/null +++ b/pkgs/development/python-modules/krb5/default.nix @@ -0,0 +1,46 @@ +{ + lib, + buildPythonPackage, + cython, + fetchPypi, + k5test, + krb5-c, # C krb5 library + pytestCheckHook, + pythonOlder, + setuptools, +}: + +buildPythonPackage rec { + pname = "krb5"; + version = "0.6.0"; + pyproject = true; + + disabled = pythonOlder "3.7"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-cSugkvvjoo7BiCC7Gx7SzBA3t1xccDP5cMaoyXu9Egk="; + }; + + build-system = [ + cython + setuptools + ]; + + nativeBuildInputs = [ krb5-c ]; + + nativeCheckInputs = [ + k5test + pytestCheckHook + ]; + + pythonImportsCheck = [ "krb5" ]; + + meta = with lib; { + changelog = "https://github.com/jborean93/pykrb5/blob/v${version}/CHANGELOG.md"; + description = "Kerberos API bindings for Python"; + homepage = "https://github.com/jborean93/pykrb5"; + license = licenses.mit; + maintainers = teams.deshaw.members; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b63d0c230734..11134e49709c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6686,6 +6686,10 @@ self: super: with self; { krakenex = callPackage ../development/python-modules/krakenex { }; + krb5 = callPackage ../development/python-modules/krb5 { + krb5-c = pkgs.krb5; + }; + krfzf-py = callPackage ../development/python-modules/krfzf-py { }; kserve = callPackage ../development/python-modules/kserve { }; From 45172e6548430d06b652aff88b690280f0d31d52 Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Wed, 7 Aug 2024 14:26:40 -0400 Subject: [PATCH 8/9] python3Packages.requests-kerberos: use pyspnego[kerberos] This drops the hack to avoid these dependencies because PyPI's krb5 (not to be confused with the top-level system krb5) was not previously packaged in Nixpkgs. --- .../python-modules/requests-kerberos/default.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/requests-kerberos/default.nix b/pkgs/development/python-modules/requests-kerberos/default.nix index c231233a4f29..6c4be7273e79 100644 --- a/pkgs/development/python-modules/requests-kerberos/default.nix +++ b/pkgs/development/python-modules/requests-kerberos/default.nix @@ -30,19 +30,13 @@ buildPythonPackage rec { requests pykerberos pyspnego - ]; + ] ++ pyspnego.optional-dependencies.kerberos; nativeCheckInputs = [ pytestCheckHook pytest-mock ]; - # avoid needing to package krb5 - postPatch = '' - substituteInPlace setup.py \ - --replace "pyspnego[kerberos]" "pyspnego" - ''; - pythonImportsCheck = [ "requests_kerberos" ]; meta = with lib; { From 21faf599aa2a9cb56b018ce7828a30ed73f751d0 Mon Sep 17 00:00:00 2001 From: Elliot Cameron <nixpkgs-commits@deshaw.com> Date: Thu, 8 Aug 2024 15:14:42 -0400 Subject: [PATCH 9/9] python3Packages.requests-kerberos: drop unused pykerberos dependency --- pkgs/development/python-modules/requests-kerberos/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/development/python-modules/requests-kerberos/default.nix b/pkgs/development/python-modules/requests-kerberos/default.nix index 6c4be7273e79..210e792cfbf7 100644 --- a/pkgs/development/python-modules/requests-kerberos/default.nix +++ b/pkgs/development/python-modules/requests-kerberos/default.nix @@ -3,7 +3,6 @@ buildPythonPackage, cryptography, fetchFromGitHub, - pykerberos, pyspnego, pytest-mock, pytestCheckHook, @@ -28,7 +27,6 @@ buildPythonPackage rec { propagatedBuildInputs = [ cryptography requests - pykerberos pyspnego ] ++ pyspnego.optional-dependencies.kerberos;