about summary refs log tree commit diff
path: root/pkgs/tools/admin/pulumi-packages
diff options
context:
space:
mode:
authorAndreas Stührk <andy@hammerhartes.de>2022-10-18 17:06:05 +0200
committerVincent Haupert <mail@vincent-haupert.de>2022-11-06 12:58:55 +0100
commit3582d5c4aa39a1072e2476fc2ef7a242c76ba721 (patch)
tree8eac7a6afea38d4cde5002e3dc4e6e5821adeadf /pkgs/tools/admin/pulumi-packages
parent54e896edba273f406c39701b9e464863b1389262 (diff)
pulumiPackages: add support for Python SDKs
Diffstat (limited to 'pkgs/tools/admin/pulumi-packages')
-rw-r--r--pkgs/tools/admin/pulumi-packages/base.nix53
1 files changed, 53 insertions, 0 deletions
diff --git a/pkgs/tools/admin/pulumi-packages/base.nix b/pkgs/tools/admin/pulumi-packages/base.nix
index c14b6ec32ac5a..001a247379bc3 100644
--- a/pkgs/tools/admin/pulumi-packages/base.nix
+++ b/pkgs/tools/admin/pulumi-packages/base.nix
@@ -1,5 +1,6 @@
 { buildGoModule
 , fetchFromGitHub
+, python3Packages
 }:
 let
   mkBasePackage =
@@ -24,6 +25,52 @@ let
         "-w"
       ] ++ extraLdflags;
     } // args);
+
+  mkPythonPackage =
+    { meta
+    , pname
+    , src
+    , version
+    , ...
+    }: python3Packages.callPackage
+      ({ buildPythonPackage, pythonOlder, parver, pulumi, semver }:
+      buildPythonPackage rec {
+        inherit pname meta src version;
+        format = "setuptools";
+
+        disabled = pythonOlder "3.7";
+
+        sourceRoot = "${src.name}/sdk/python";
+
+        propagatedBuildInputs = [
+          parver
+          pulumi
+          semver
+        ];
+
+        postPatch = ''
+          sed -i \
+            -e 's/^VERSION = .*/VERSION = "${version}"/g' \
+            -e 's/^PLUGIN_VERSION = .*/PLUGIN_VERSION = "${version}"/g' \
+            setup.py
+        '';
+
+        # Auto-generated; upstream does not have any tests.
+        # Verify that the version substitution works
+        checkPhase = ''
+          runHook preCheck
+
+          pip show "${pname}" | grep "Version: ${version}" > /dev/null \
+            || (echo "ERROR: Version substitution seems to be broken"; exit 1)
+
+          runHook postCheck
+        '';
+
+        pythonImportsCheck = [
+          (builtins.replaceStrings [ "-" ] [ "_" ] pname)
+        ];
+      })
+      { };
 in
 { owner
 , repo
@@ -72,4 +119,10 @@ mkBasePackage ({
 
     VERSION=v${version} go generate cmd/${cmdRes}/main.go
   '';
+
+  passthru.sdks.python = mkPythonPackage {
+    inherit meta src version;
+
+    pname = repo;
+  };
 } // args)