From 5f3d43fedfa12ad555fd3ebdac8601db924aa803 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold Date: Mon, 9 Sep 2019 10:35:26 +0200 Subject: [PATCH 1/3] pythonPackages.pyopenssl: add missing six dependency It might have been there as a transitive dependency but better be explicity about it. --- pkgs/development/python-modules/pyopenssl/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/pyopenssl/default.nix b/pkgs/development/python-modules/pyopenssl/default.nix index ec17b77ba20..018463ead54 100644 --- a/pkgs/development/python-modules/pyopenssl/default.nix +++ b/pkgs/development/python-modules/pyopenssl/default.nix @@ -9,6 +9,7 @@ , pretend , flaky , glibcLocales +, six }: with stdenv.lib; @@ -84,7 +85,7 @@ buildPythonPackage rec { doCheck = !stdenv.isDarwin; nativeBuildInputs = [ openssl ]; - propagatedBuildInputs = [ cryptography pyasn1 idna ]; + propagatedBuildInputs = [ cryptography pyasn1 idna six ]; checkInputs = [ pytest pretend flaky glibcLocales ]; } From 4fdbdcede0af0ab70d94eecb5358225b1a04407f Mon Sep 17 00:00:00 2001 From: Andreas Rammhold Date: Mon, 9 Sep 2019 10:44:39 +0200 Subject: [PATCH 2/3] google-cloud-sdk: prefer using a pythonEnv vs just a search path Previously only direct dependencies were available in the python search path. Transitive dependencies would not be available and thus a few features would not work due to import errors. Those import errors were being caugth and gave a (wrong) hint why it wouldn't work. By using `python.withPackages` instead of the crafted search path with only the direct dependencies those missing feature should now be working. See issue #67094 for details on the observed errors. Fixes #67094 --- pkgs/tools/admin/google-cloud-sdk/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/admin/google-cloud-sdk/default.nix b/pkgs/tools/admin/google-cloud-sdk/default.nix index 7c81e861ddb..5b701600dd1 100644 --- a/pkgs/tools/admin/google-cloud-sdk/default.nix +++ b/pkgs/tools/admin/google-cloud-sdk/default.nix @@ -13,7 +13,7 @@ let pythonInputs = [ cffi cryptography pyopenssl crcmod ] ++ lib.optional (with-gce) google-compute-engine; - pythonPath = lib.makeSearchPath python.sitePackages pythonInputs; + pythonEnv = python.withPackages (_: pythonInputs); baseUrl = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads"; sources = name: system: { @@ -53,8 +53,8 @@ in stdenv.mkDerivation rec { programPath="$out/google-cloud-sdk/bin/$program" binaryPath="$out/bin/$program" wrapProgram "$programPath" \ - --set CLOUDSDK_PYTHON "${python}/bin/python" \ - --prefix PYTHONPATH : "${pythonPath}" + --set CLOUDSDK_PYTHON "${pythonEnv}/bin/python" \ + --prefix PYTHONPATH : "${pythonEnv}/${python.sitePackages}" mkdir -p $out/bin ln -s $programPath $binaryPath From e023b3b1d935270699c91f626c1062abd7832ef7 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold Date: Mon, 9 Sep 2019 15:36:26 +0200 Subject: [PATCH 3/3] google-cloud-sdk: remove from python-modules It is not a python module just an application using/based on python. --- pkgs/tools/admin/google-cloud-sdk/default.nix | 12 +++++++----- pkgs/top-level/all-packages.nix | 4 ++-- pkgs/top-level/python-packages.nix | 3 --- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/tools/admin/google-cloud-sdk/default.nix b/pkgs/tools/admin/google-cloud-sdk/default.nix index 5b701600dd1..feb0b996b61 100644 --- a/pkgs/tools/admin/google-cloud-sdk/default.nix +++ b/pkgs/tools/admin/google-cloud-sdk/default.nix @@ -7,13 +7,15 @@ # 3) used by `google-cloud-sdk` only on GCE guests # -{ stdenv, lib, fetchurl, makeWrapper, python, cffi, cryptography, pyopenssl, - crcmod, google-compute-engine, with-gce ? false }: +{ stdenv, lib, fetchurl, makeWrapper, python, with-gce ? false }: let - pythonInputs = [ cffi cryptography pyopenssl crcmod ] - ++ lib.optional (with-gce) google-compute-engine; - pythonEnv = python.withPackages (_: pythonInputs); + pythonEnv = python.withPackages (p: with p; [ + cffi + cryptography + pyopenssl + crcmod + ] ++ lib.optional (with-gce) google-compute-engine); baseUrl = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads"; sources = name: system: { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 45acba9fb26..9c3e76484b5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3505,8 +3505,8 @@ in google-authenticator = callPackage ../os-specific/linux/google-authenticator { }; - google-cloud-sdk = python2.pkgs.google-cloud-sdk; - google-cloud-sdk-gce = python2.pkgs.google-cloud-sdk-gce; + google-cloud-sdk = callPackage ../tools/admin/google-cloud-sdk { }; + google-cloud-sdk-gce = google-cloud-sdk.override { with-gce = true; }; google-fonts = callPackage ../data/fonts/google-fonts { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2e0ff367f9e..410a3ba9c17 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2376,9 +2376,6 @@ in { python-gitlab = callPackage ../development/python-modules/python-gitlab { }; - google-cloud-sdk = callPackage ../tools/admin/google-cloud-sdk { }; - google-cloud-sdk-gce = callPackage ../tools/admin/google-cloud-sdk { with-gce=true; }; - google-compute-engine = callPackage ../tools/virtualization/google-compute-engine { }; google-music = callPackage ../development/python-modules/google-music { };