diff --git a/pkgs/development/python-modules/asyncssh/default.nix b/pkgs/development/python-modules/asyncssh/default.nix index 42335a0393f..ba94e395f67 100644 --- a/pkgs/development/python-modules/asyncssh/default.nix +++ b/pkgs/development/python-modules/asyncssh/default.nix @@ -5,12 +5,12 @@ buildPythonPackage rec { pname = "asyncssh"; - version = "1.17.0"; + version = "1.17.1"; disabled = pythonOlder "3.4"; src = fetchPypi { inherit pname version; - sha256 = "1qrpkdyl77956qg6g7g66bbd6bfvb2nwi2sjy3v3li8m3irx8d7d"; + sha256 = "0gyqms4zs9j9k7dgy24va4w42vf20x75yx9jvsds0sg42mqlkd5v"; }; patches = [ diff --git a/pkgs/development/python-modules/gssapi/default.nix b/pkgs/development/python-modules/gssapi/default.nix index 14d27e7442e..c64013624a4 100644 --- a/pkgs/development/python-modules/gssapi/default.nix +++ b/pkgs/development/python-modules/gssapi/default.nix @@ -1,13 +1,30 @@ -{ stdenv, lib, buildPythonPackage, fetchPypi, six, enum34, decorator, -nose, gss, krb5Full, darwin }: +{ stdenv +, lib +, buildPythonPackage +, fetchFromGitHub +, six +, enum34 +, decorator +, nose +, krb5Full +, darwin +, isPy27 +, parameterized +, shouldbe +, cython +, python +, k5test +}: buildPythonPackage rec { pname = "gssapi"; - version = "1.5.1"; + version = "1.6.0"; - src = fetchPypi { - inherit pname version; - sha256 = "76c9fda88a7178f41bf6454a06d64054c56b46f0dcbc73307f2e57bb8c25d8cc"; + src = fetchFromGitHub { + owner = "pythongssapi"; + repo = "python-${pname}"; + rev = "v${version}"; + sha256 = "1chmxhjbs39paaxlfsdrr13v4zvv94ijvhxasdphxlxkqlycbm4a"; }; # It's used to locate headers @@ -16,18 +33,36 @@ buildPythonPackage rec { --replace "get_output('krb5-config gssapi --prefix')" "'${lib.getDev krb5Full}'" ''; - LD_LIBRARY_PATH = "${krb5Full}/lib"; + nativeBuildInputs = [ + cython + krb5Full + ]; - nativeBuildInputs = [ krb5Full ] - ++ ( if stdenv.isDarwin then [ darwin.apple_sdk.frameworks.GSS ] else [ gss ] ); + propagatedBuildInputs = [ + decorator + six + ] ++ lib.optional isPy27 enum34; - propagatedBuildInputs = [ decorator enum34 six ]; + buildInputs = lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.GSS + ]; - checkInputs = [ nose ]; + checkInputs = [ + k5test + nose + parameterized + shouldbe + six + ]; - doCheck = false; # No such file or directory: '/usr/sbin/kadmin.local' + doCheck = !stdenv.isDarwin; # many failures on darwin - meta = with stdenv.lib; { + checkPhase = '' + export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH" + ${python.interpreter} setup.py nosetests + ''; + + meta = with lib; { homepage = https://pypi.python.org/pypi/gssapi; description = "Python GSSAPI Wrapper"; license = licenses.mit; diff --git a/pkgs/development/python-modules/k5test/default.nix b/pkgs/development/python-modules/k5test/default.nix new file mode 100644 index 00000000000..d3937300a5e --- /dev/null +++ b/pkgs/development/python-modules/k5test/default.nix @@ -0,0 +1,43 @@ +{ lib +, buildPythonPackage +, fetchPypi +, substituteAll +, six +, krb5Full +, findutils +, which +}: + +buildPythonPackage rec { + pname = "k5test"; + version = "0.9.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "1lqp3jgfngyhaxjgj3n230hn90wsylwilh120yjf62h7b1s02mh8"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit findutils krb5Full; + # krb5-config is in dev output + krb5FullDev = krb5Full.dev; + which = "${which}/bin/which"; + }) + ]; + + propagatedBuildInputs = [ + six + ]; + + # No tests + doCheck = false; + + meta = with lib; { + description = "Library for setting up self-contained Kerberos 5 environment"; + homepage = https://github.com/pythongssapi/k5test; + license = licenses.mit; + maintainers = [ ]; + }; +} diff --git a/pkgs/development/python-modules/k5test/fix-paths.patch b/pkgs/development/python-modules/k5test/fix-paths.patch new file mode 100644 index 00000000000..f99835b5f2a --- /dev/null +++ b/pkgs/development/python-modules/k5test/fix-paths.patch @@ -0,0 +1,90 @@ +diff --git a/k5test/_utils.py b/k5test/_utils.py +index e289fac..e2f486a 100644 +--- a/k5test/_utils.py ++++ b/k5test/_utils.py +@@ -65,12 +65,12 @@ def find_plugin_dir(): + + # if there was no LD_LIBRARY_PATH, or the above failed + if _PLUGIN_DIR is None: +- lib_dir = os.path.join(get_output('krb5-config --prefix'), 'lib64') ++ lib_dir = os.path.join(get_output('@krb5FullDev@/bin/krb5-config --prefix'), 'lib64') + _PLUGIN_DIR = _decide_plugin_dir(_find_plugin_dirs_installed(lib_dir)) + + # /usr/lib64 seems only to be distinct on Fedora/RHEL/Centos family + if _PLUGIN_DIR is None: +- lib_dir = os.path.join(get_output('krb5-config --prefix'), 'lib') ++ lib_dir = os.path.join(get_output('@krb5FullDev@/bin/krb5-config --prefix'), 'lib') + _PLUGIN_DIR = _decide_plugin_dir(_find_plugin_dirs_installed(lib_dir)) + + if _PLUGIN_DIR is not None: +@@ -89,7 +89,7 @@ def _decide_plugin_dir(dirs): + + for path in shortest_first: + # check to see if it actually contains .so files +- if get_output('find %s -name "*.so"' % path): ++ if get_output('@findutils@/bin/find %s -name "*.so"' % path): + return path + + return None +@@ -97,7 +97,7 @@ def _decide_plugin_dir(dirs): + + def _find_plugin_dirs_installed(search_path): + try: +- options_raw = get_output('find %s/ -type d \( ! -executable -o ! -readable \) ' ++ options_raw = get_output('@findutils@/bin/find %s/ -type d \( ! -executable -o ! -readable \) ' + '-prune -o ' + '-type d -path "*/krb5/plugins" -print' % search_path, + stderr=subprocess.STDOUT) +@@ -111,7 +111,7 @@ def _find_plugin_dirs_installed(search_path): + + + def _find_plugin_dirs_src(search_path): +- options_raw = get_output('find %s/../ -type d -name plugins' % search_path) ++ options_raw = get_output('@findutils@/bin/find %s/../ -type d -name plugins' % search_path) + + if options_raw: + return options_raw.split('\n') +diff --git a/k5test/realm.py b/k5test/realm.py +index f57946b..ad78579 100644 +--- a/k5test/realm.py ++++ b/k5test/realm.py +@@ -181,19 +181,13 @@ class K5Realm(object): + return path + + def _init_paths(self, **paths): +- self.kdb5_util = self._discover_path('kdb5_util', +- '/usr/sbin/kdb5_util', paths) +- self.krb5kdc = self._discover_path('krb5kdc', +- '/usr/sbin/krb5kdc', paths) +- self.kadmin_local = self._discover_path('kadmin_local', +- '/usr/sbin/kadmin.local', +- paths) +- self.kprop = self._discover_path('kprop', '/usr/sbin/kprop', paths) +- self.kadmind = self._discover_path('kadmind', +- '/usr/sbin/kadmind', paths) +- +- self._kinit = self._discover_path('kinit', '/usr/bin/kinit', paths) +- self._klist = self._discover_path('klist', '/usr/bin/klist', paths) ++ self.kdb5_util = '@krb5Full@/bin/kdb5_util' ++ self.krb5kdc = '@krb5Full@/bin/krb5kdc' ++ self.kadmin_local = '@krb5Full@/bin/kadmin.local' ++ self.kprop = '@krb5Full@/bin/kprop' ++ self.kadmind = '@krb5Full@/bin/kadmind' ++ self._kinit = '@krb5Full@/bin/kinit' ++ self._klist = '@krb5Full@/bin/klist' + + def _create_conf(self, profile, filename): + with open(filename, 'w') as conf_file: +diff --git a/k5test/unit.py b/k5test/unit.py +index 4ee7f98..543d662 100644 +--- a/k5test/unit.py ++++ b/k5test/unit.py +@@ -38,7 +38,7 @@ _KRB_VERSION = None + def krb_minversion_test(target_version, problem): + global _KRB_VERSION + if _KRB_VERSION is None: +- _KRB_VERSION = _utils.get_output("krb5-config --version") ++ _KRB_VERSION = _utils.get_output("@krb5FullDev@/bin/krb5-config --version") + _KRB_VERSION = _KRB_VERSION.split(' ')[-1].split('.') + + def make_ext_test(func): diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 0896322e510..cb92e696789 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -606,7 +606,9 @@ in { gsd = callPackage ../development/python-modules/gsd { }; - gssapi = callPackage ../development/python-modules/gssapi { }; + gssapi = callPackage ../development/python-modules/gssapi { + inherit (pkgs) darwin krb5Full; + }; guestfs = callPackage ../development/python-modules/guestfs { }; @@ -3438,6 +3440,10 @@ in { kubernetes = callPackage ../development/python-modules/kubernetes { }; + k5test = callPackage ../development/python-modules/k5test { + inherit (pkgs) krb5Full findutils which; + }; + pylast = callPackage ../development/python-modules/pylast { }; pylru = callPackage ../development/python-modules/pylru { };