From 55e531a5e579b0af9c925d2375850b3c0e36fd7d Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:24:11 +0300 Subject: [PATCH 1/9] pulumi: move withPackages implementation to separate file Also do not set LD_LIBRARY_PATH for wrapper. Pulumi and its plugins are self-contained executables, so it does not make sense to set it. --- pkgs/by-name/pu/pulumi/package.nix | 16 ++--------- pkgs/by-name/pu/pulumi/with-packages.nix | 35 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 pkgs/by-name/pu/pulumi/with-packages.nix diff --git a/pkgs/by-name/pu/pulumi/package.nix b/pkgs/by-name/pu/pulumi/package.nix index a7eaaf051273..662580d68120 100644 --- a/pkgs/by-name/pu/pulumi/package.nix +++ b/pkgs/by-name/pu/pulumi/package.nix @@ -7,8 +7,7 @@ git, buildPackages, # passthru - runCommand, - makeWrapper, + callPackage, testers, pulumi, pulumiPackages, @@ -118,18 +117,7 @@ buildGoModule rec { passthru = { pkgs = pulumiPackages; - withPackages = - f: - runCommand "${pulumi.name}-with-packages" - { - nativeBuildInputs = [ makeWrapper ]; - } - '' - mkdir -p $out/bin - makeWrapper ${pulumi}/bin/pulumi $out/bin/pulumi \ - --suffix PATH : ${lib.makeBinPath (f pulumiPackages)} \ - --set LD_LIBRARY_PATH "${lib.getLib stdenv.cc.cc}/lib" - ''; + withPackages = callPackage ./with-packages.nix { }; tests = { version = testers.testVersion { package = pulumi; diff --git a/pkgs/by-name/pu/pulumi/with-packages.nix b/pkgs/by-name/pu/pulumi/with-packages.nix new file mode 100644 index 000000000000..68b98228fce9 --- /dev/null +++ b/pkgs/by-name/pu/pulumi/with-packages.nix @@ -0,0 +1,35 @@ +{ + lib, + runCommand, + pulumi, + pulumiPackages, + makeBinaryWrapper, +}: +f: +# Note that Pulumi prints a warning for “ambient” plugins (i.e. from PATH). E.g. +# warning: using pulumi-resource-* from $PATH at /nix/store/* +# See also https://github.com/pulumi/pulumi/issues/14525 +# +# We can install packages alongside pulumi executable, but that would only +# suppress the warning for packages that are bundled with the official +# distribution. Refer to the implementation of workspace.IsPluginBundled: +# https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3@v3.150.0/go/common/workspace#IsPluginBundled +# https://github.com/pulumi/pulumi/blob/v3.150.0/sdk/go/common/workspace/plugins.go#L2202-L2210 +runCommand "pulumi-with-packages" + { + inherit pulumi; + makeWrapperArgs = [ + "--suffix" + "PATH" + ":" + (lib.makeBinPath (f pulumiPackages)) + ]; + __structuredAttrs = true; + nativeBuildInputs = [ makeBinaryWrapper ]; + meta.mainProgram = "pulumi"; + } + '' + mkdir -p "$out/bin" + ln -s -t "$out" "$pulumi/share" + makeWrapper "$pulumi/bin/pulumi" "$out/bin/pulumi" "''${makeWrapperArgs[@]}" + '' From f6d23ee78eec3ec9993374b6fde970b85c2e963a Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:32:37 +0300 Subject: [PATCH 2/9] pulumiPackages: move implementation to pkgs/by-name/pu/pulumi/plugins --- .../pu/pulumi/extra/mk-pulumi-package.nix} | 0 pkgs/by-name/pu/pulumi/package.nix | 3 +-- pkgs/by-name/pu/pulumi/plugins.nix | 16 ++++++++++++++++ .../pu/pulumi/plugins}/pulumi-aws-native.nix | 0 .../pu/pulumi/plugins}/pulumi-azure-native.nix | 0 .../pu/pulumi/plugins}/pulumi-command.nix | 0 .../pu/pulumi/plugins}/pulumi-hcloud.nix | 0 .../pu/pulumi/plugins}/pulumi-language-go.nix | 0 .../pulumi/plugins}/pulumi-language-nodejs.nix | 0 .../pulumi/plugins}/pulumi-language-python.nix | 0 .../pu/pulumi/plugins}/pulumi-random.nix | 0 .../pulumi/plugins}/pulumi-yandex-unofficial.nix | 0 pkgs/tools/admin/pulumi-packages/default.nix | 16 ---------------- pkgs/top-level/all-packages.nix | 4 +--- 14 files changed, 18 insertions(+), 21 deletions(-) rename pkgs/{tools/admin/pulumi-packages/base.nix => by-name/pu/pulumi/extra/mk-pulumi-package.nix} (100%) create mode 100644 pkgs/by-name/pu/pulumi/plugins.nix rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-aws-native.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-azure-native.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-command.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-hcloud.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-language-go.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-language-nodejs.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-language-python.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-random.nix (100%) rename pkgs/{tools/admin/pulumi-packages => by-name/pu/pulumi/plugins}/pulumi-yandex-unofficial.nix (100%) delete mode 100644 pkgs/tools/admin/pulumi-packages/default.nix diff --git a/pkgs/tools/admin/pulumi-packages/base.nix b/pkgs/by-name/pu/pulumi/extra/mk-pulumi-package.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/base.nix rename to pkgs/by-name/pu/pulumi/extra/mk-pulumi-package.nix diff --git a/pkgs/by-name/pu/pulumi/package.nix b/pkgs/by-name/pu/pulumi/package.nix index 662580d68120..9909de24fef2 100644 --- a/pkgs/by-name/pu/pulumi/package.nix +++ b/pkgs/by-name/pu/pulumi/package.nix @@ -10,7 +10,6 @@ callPackage, testers, pulumi, - pulumiPackages, }: buildGoModule rec { pname = "pulumi"; @@ -116,7 +115,7 @@ buildGoModule rec { ''; passthru = { - pkgs = pulumiPackages; + pkgs = callPackage ./plugins.nix { }; withPackages = callPackage ./with-packages.nix { }; tests = { version = testers.testVersion { diff --git a/pkgs/by-name/pu/pulumi/plugins.nix b/pkgs/by-name/pu/pulumi/plugins.nix new file mode 100644 index 000000000000..015dfd0db6f2 --- /dev/null +++ b/pkgs/by-name/pu/pulumi/plugins.nix @@ -0,0 +1,16 @@ +{ callPackage }: +let + mkPulumiPackage = callPackage ./extra/mk-pulumi-package.nix { }; + callPackage' = p: args: callPackage p (args // { inherit mkPulumiPackage; }); +in +{ + pulumi-aws-native = callPackage' ./plugins/pulumi-aws-native.nix { }; + pulumi-azure-native = callPackage' ./plugins/pulumi-azure-native.nix { }; + pulumi-command = callPackage' ./plugins/pulumi-command.nix { }; + pulumi-hcloud = callPackage' ./plugins/pulumi-hcloud.nix { }; + pulumi-language-go = callPackage ./plugins/pulumi-language-go.nix { }; + pulumi-language-nodejs = callPackage ./plugins/pulumi-language-nodejs.nix { }; + pulumi-language-python = callPackage ./plugins/pulumi-language-python.nix { }; + pulumi-random = callPackage' ./plugins/pulumi-random.nix { }; + pulumi-yandex-unofficial = callPackage' ./plugins/pulumi-yandex-unofficial.nix { }; +} diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-aws-native.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-aws-native.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-azure-native.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-azure-native.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-command.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-command.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-command.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-command.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-hcloud.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-hcloud.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-hcloud.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-hcloud.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-language-go.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-language-go.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-language-nodejs.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-language-nodejs.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-language-nodejs.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-language-nodejs.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-language-python.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-language-python.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-language-python.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-language-python.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-random.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-random.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-random.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-random.nix diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-yandex-unofficial.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-yandex-unofficial.nix similarity index 100% rename from pkgs/tools/admin/pulumi-packages/pulumi-yandex-unofficial.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-yandex-unofficial.nix diff --git a/pkgs/tools/admin/pulumi-packages/default.nix b/pkgs/tools/admin/pulumi-packages/default.nix deleted file mode 100644 index f46dffbfdfe8..000000000000 --- a/pkgs/tools/admin/pulumi-packages/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ callPackage }: -let - mkPulumiPackage = callPackage ./base.nix { }; - callPackage' = p: args: callPackage p (args // { inherit mkPulumiPackage; }); -in -{ - pulumi-aws-native = callPackage' ./pulumi-aws-native.nix { }; - pulumi-azure-native = callPackage' ./pulumi-azure-native.nix { }; - pulumi-command = callPackage' ./pulumi-command.nix { }; - pulumi-hcloud = callPackage' ./pulumi-hcloud.nix { }; - pulumi-language-go = callPackage ./pulumi-language-go.nix { }; - pulumi-language-nodejs = callPackage ./pulumi-language-nodejs.nix { }; - pulumi-language-python = callPackage ./pulumi-language-python.nix { }; - pulumi-random = callPackage' ./pulumi-random.nix { }; - pulumi-yandex-unofficial = callPackage' ./pulumi-yandex-unofficial.nix { }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 69b69cea9e58..ecd69a09d0a6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4511,9 +4511,7 @@ with pkgs; pipecontrol = libsForQt5.callPackage ../applications/audio/pipecontrol { }; - pulumiPackages = recurseIntoAttrs ( - callPackage ../tools/admin/pulumi-packages { } - ); + pulumiPackages = recurseIntoAttrs pulumi.pkgs; pulumi-bin = callPackage ../tools/admin/pulumi-bin { }; From f891f97079d3f28ee1491bca61162ce8e1bb0b53 Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:34:53 +0300 Subject: [PATCH 3/9] pulumiPackages: make scope with splicing --- pkgs/by-name/pu/pulumi/plugins.nix | 31 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/pkgs/by-name/pu/pulumi/plugins.nix b/pkgs/by-name/pu/pulumi/plugins.nix index 015dfd0db6f2..fbac4a249770 100644 --- a/pkgs/by-name/pu/pulumi/plugins.nix +++ b/pkgs/by-name/pu/pulumi/plugins.nix @@ -1,16 +1,19 @@ -{ callPackage }: -let - mkPulumiPackage = callPackage ./extra/mk-pulumi-package.nix { }; - callPackage' = p: args: callPackage p (args // { inherit mkPulumiPackage; }); -in { - pulumi-aws-native = callPackage' ./plugins/pulumi-aws-native.nix { }; - pulumi-azure-native = callPackage' ./plugins/pulumi-azure-native.nix { }; - pulumi-command = callPackage' ./plugins/pulumi-command.nix { }; - pulumi-hcloud = callPackage' ./plugins/pulumi-hcloud.nix { }; - pulumi-language-go = callPackage ./plugins/pulumi-language-go.nix { }; - pulumi-language-nodejs = callPackage ./plugins/pulumi-language-nodejs.nix { }; - pulumi-language-python = callPackage ./plugins/pulumi-language-python.nix { }; - pulumi-random = callPackage' ./plugins/pulumi-random.nix { }; - pulumi-yandex-unofficial = callPackage' ./plugins/pulumi-yandex-unofficial.nix { }; + lib, + config, + generateSplicesForMkScope, + makeScopeWithSplicing', + attributePathToSplice ? [ "pulumiPackages" ], +}: +makeScopeWithSplicing' { + otherSplices = generateSplicesForMkScope attributePathToSplice; + extra = self: { + mkPulumiPackage = self.callPackage ./extra/mk-pulumi-package.nix { }; + }; + f = + self: + lib.packagesFromDirectoryRecursive { + inherit (self) callPackage; + directory = ./plugins; + }; } From 375e54f81ad4ac5823240d7476ec6a88504615cb Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:37:59 +0300 Subject: [PATCH 4/9] pulumiPackages.pulumi-{go,nodejs,python}: rename from pulumi-language-{go,nodejs,python} --- pkgs/by-name/pu/pulumi/plugins.nix | 5 +++++ .../pulumi/plugins/{pulumi-language-go.nix => pulumi-go.nix} | 2 +- .../{pulumi-language-nodejs.nix => pulumi-nodejs.nix} | 2 +- .../{pulumi-language-python.nix => pulumi-python.nix} | 2 +- pkgs/development/python-modules/pulumi/default.nix | 4 ++-- 5 files changed, 10 insertions(+), 5 deletions(-) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-language-go.nix => pulumi-go.nix} (96%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-language-nodejs.nix => pulumi-nodejs.nix} (97%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-language-python.nix => pulumi-python.nix} (96%) diff --git a/pkgs/by-name/pu/pulumi/plugins.nix b/pkgs/by-name/pu/pulumi/plugins.nix index fbac4a249770..a90ca04eab88 100644 --- a/pkgs/by-name/pu/pulumi/plugins.nix +++ b/pkgs/by-name/pu/pulumi/plugins.nix @@ -15,5 +15,10 @@ makeScopeWithSplicing' { lib.packagesFromDirectoryRecursive { inherit (self) callPackage; directory = ./plugins; + } + // lib.optionalAttrs config.allowAliases { + pulumi-language-go = lib.warnOnInstantiate "pulumi-language-go has been renamed to pulumi-go" self.pulumi-go; + pulumi-language-nodejs = lib.warnOnInstantiate "pulumi-language-nodejs has been renamed to pulumi-nodejs" self.pulumi-nodejs; + pulumi-language-python = lib.warnOnInstantiate "pulumi-language-python has been renamed to pulumi-python" self.pulumi-python; }; } diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-language-go.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-go.nix similarity index 96% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-language-go.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-go.nix index eb6094277569..a7371c0e6b67 100644 --- a/pkgs/by-name/pu/pulumi/plugins/pulumi-language-go.nix +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-go.nix @@ -4,7 +4,7 @@ pulumi, }: buildGoModule rec { - pname = "pulumi-language-go"; + pname = "pulumi-go"; inherit (pulumi) version src; sourceRoot = "${src.name}/sdk/go/pulumi-language-go"; diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-language-nodejs.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs.nix similarity index 97% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-language-nodejs.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs.nix index 835e46e43c9d..c3dd0f050239 100644 --- a/pkgs/by-name/pu/pulumi/plugins/pulumi-language-nodejs.nix +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs.nix @@ -7,7 +7,7 @@ python3, }: buildGoModule rec { - pname = "pulumi-language-nodejs"; + pname = "pulumi-nodejs"; inherit (pulumi) version src; sourceRoot = "${src.name}/sdk/nodejs/cmd/pulumi-language-nodejs"; diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-language-python.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-python.nix similarity index 96% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-language-python.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-python.nix index 45a346cd0bf3..3d9a76c58681 100644 --- a/pkgs/by-name/pu/pulumi/plugins/pulumi-language-python.nix +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-python.nix @@ -6,7 +6,7 @@ python3, }: buildGoModule rec { - pname = "pulumi-language-python"; + pname = "pulumi-python"; inherit (pulumi) version src; sourceRoot = "${src.name}/sdk/python/cmd/pulumi-language-python"; diff --git a/pkgs/development/python-modules/pulumi/default.nix b/pkgs/development/python-modules/pulumi/default.nix index 89ae0e6193d4..c05401d20f74 100644 --- a/pkgs/development/python-modules/pulumi/default.nix +++ b/pkgs/development/python-modules/pulumi/default.nix @@ -20,7 +20,7 @@ }: let inherit (pkgs.pulumi) pname version src; - inherit (pulumiPackages) pulumi-language-python; + inherit (pulumiPackages) pulumi-python; sourceRoot = "${src.name}/sdk/python"; in buildPythonPackage { @@ -63,7 +63,7 @@ buildPythonPackage { pytest pytest-asyncio pytest-timeout - pulumi-language-python + pulumi-python ]; # https://github.com/pulumi/pulumi/blob/0acaf8060640fdd892abccf1ce7435cd6aae69fe/sdk/python/scripts/test_fast.sh#L10-L11 From 71143d17c40bdd46ea5f7e0a26aea937fff7e50f Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:43:14 +0300 Subject: [PATCH 5/9] pulumiPackages: add testResourceSchema helper --- .../pu/pulumi/extra/test-resource-schema.nix | 35 +++++++++++++++++++ pkgs/by-name/pu/pulumi/plugins.nix | 1 + 2 files changed, 36 insertions(+) create mode 100644 pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix diff --git a/pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix b/pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix new file mode 100644 index 000000000000..99ca01b0b7bf --- /dev/null +++ b/pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix @@ -0,0 +1,35 @@ +{ + lib, + runCommand, + pulumi, + jq, +}: +{ + package, + name ? lib.removePrefix "pulumi-" (lib.getName package), + version ? lib.getVersion package, +}: +runCommand "pulumi-resource-${name}-schema-version-check" + { + resourceName = name; + expectedVersion = if version != null then version else "null"; + nativeBuildInputs = [ + jq + pulumi + package + ]; + env = { + PULUMI_SKIP_UPDATE_CHECK = "1"; + PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "1"; + }; + __darwinAllowLocalNetworking = true; + meta.timeout = 120; + } + '' + actualVersion=$(pulumi package get-schema -- "$resourceName" | jq -j .version) + if [[ $expectedVersion != "$actualVersion" ]]; then + echo "Expected schema version $expectedVersion, but got $actualVersion" >&2 + false + fi + mkdir -p "$out" + '' diff --git a/pkgs/by-name/pu/pulumi/plugins.nix b/pkgs/by-name/pu/pulumi/plugins.nix index a90ca04eab88..026ee5260b2d 100644 --- a/pkgs/by-name/pu/pulumi/plugins.nix +++ b/pkgs/by-name/pu/pulumi/plugins.nix @@ -9,6 +9,7 @@ makeScopeWithSplicing' { otherSplices = generateSplicesForMkScope attributePathToSplice; extra = self: { mkPulumiPackage = self.callPackage ./extra/mk-pulumi-package.nix { }; + testResourceSchema = self.callPackage ./extra/test-resource-schema.nix { }; }; f = self: From 16aef35e9d34ca78f83b1684953023e2239abcf5 Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:48:38 +0300 Subject: [PATCH 6/9] pulumiPackages: add pulumiTestHook helper --- pkgs/by-name/pu/pulumi/extra/pulumi-test-hook.sh | 15 +++++++++++++++ pkgs/by-name/pu/pulumi/package.nix | 4 ++++ pkgs/by-name/pu/pulumi/plugins.nix | 1 + 3 files changed, 20 insertions(+) create mode 100644 pkgs/by-name/pu/pulumi/extra/pulumi-test-hook.sh diff --git a/pkgs/by-name/pu/pulumi/extra/pulumi-test-hook.sh b/pkgs/by-name/pu/pulumi/extra/pulumi-test-hook.sh new file mode 100644 index 000000000000..f62a9418c46c --- /dev/null +++ b/pkgs/by-name/pu/pulumi/extra/pulumi-test-hook.sh @@ -0,0 +1,15 @@ +# shellcheck shell=bash + +appendToVar preCheckHooks pulumiTestHook + +pulumiTestHook() { + local tmpdir + tmpdir=$(mktemp -d) + export USER=${USER-nixbld} HOME=${HOME-$tmpdir} + export PULUMI_HOME=$tmpdir/.pulumi + export PULUMI_CONFIG_PASSPHRASE=5up3r53cr37 + export PULUMI_SKIP_UPDATE_CHECK=1 + export PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION=1 + pulumi login "file://$tmpdir" + pulumi stack init -- "${pulumiStackName-nixpkgs}" +} diff --git a/pkgs/by-name/pu/pulumi/package.nix b/pkgs/by-name/pu/pulumi/package.nix index 9909de24fef2..219a23859dec 100644 --- a/pkgs/by-name/pu/pulumi/package.nix +++ b/pkgs/by-name/pu/pulumi/package.nix @@ -123,6 +123,10 @@ buildGoModule rec { version = "v${version}"; command = "PULUMI_SKIP_UPDATE_CHECK=1 pulumi version"; }; + pulumiTestHookShellcheck = testers.shellcheck { + name = "pulumi-test-hook-shellcheck"; + src = ./extra/pulumi-test-hook.sh; + }; }; }; diff --git a/pkgs/by-name/pu/pulumi/plugins.nix b/pkgs/by-name/pu/pulumi/plugins.nix index 026ee5260b2d..194d8483c1e5 100644 --- a/pkgs/by-name/pu/pulumi/plugins.nix +++ b/pkgs/by-name/pu/pulumi/plugins.nix @@ -10,6 +10,7 @@ makeScopeWithSplicing' { extra = self: { mkPulumiPackage = self.callPackage ./extra/mk-pulumi-package.nix { }; testResourceSchema = self.callPackage ./extra/test-resource-schema.nix { }; + pulumiTestHook = ./extra/pulumi-test-hook.sh; }; f = self: From 893eed259e93a35a586b2a1fa0b1fcbdeb6cfdd3 Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:51:14 +0300 Subject: [PATCH 7/9] pulumiPackages: rename $f.nix to ${f%.nix}/package.nix --- .../{pulumi-aws-native.nix => pulumi-aws-native/package.nix} | 0 .../{pulumi-azure-native.nix => pulumi-azure-native/package.nix} | 0 .../plugins/{pulumi-command.nix => pulumi-command/package.nix} | 0 .../pu/pulumi/plugins/{pulumi-go.nix => pulumi-go/package.nix} | 0 .../plugins/{pulumi-hcloud.nix => pulumi-hcloud/package.nix} | 0 .../plugins/{pulumi-nodejs.nix => pulumi-nodejs/package.nix} | 0 .../plugins/{pulumi-python.nix => pulumi-python/package.nix} | 0 .../plugins/{pulumi-random.nix => pulumi-random/package.nix} | 0 .../package.nix} | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-aws-native.nix => pulumi-aws-native/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-azure-native.nix => pulumi-azure-native/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-command.nix => pulumi-command/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-go.nix => pulumi-go/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-hcloud.nix => pulumi-hcloud/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-nodejs.nix => pulumi-nodejs/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-python.nix => pulumi-python/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-random.nix => pulumi-random/package.nix} (100%) rename pkgs/by-name/pu/pulumi/plugins/{pulumi-yandex-unofficial.nix => pulumi-yandex-unofficial/package.nix} (100%) diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-aws-native.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-aws-native/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-aws-native.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-aws-native/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-azure-native.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-azure-native/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-azure-native.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-azure-native/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-command.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-command/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-command.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-command/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-go.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-go/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-go.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-go/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-hcloud.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-hcloud/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-hcloud.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-hcloud/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-nodejs/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-python.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-python.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-python/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-random.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-random/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-random.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-random/package.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-yandex-unofficial.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-yandex-unofficial/package.nix similarity index 100% rename from pkgs/by-name/pu/pulumi/plugins/pulumi-yandex-unofficial.nix rename to pkgs/by-name/pu/pulumi/plugins/pulumi-yandex-unofficial/package.nix From 500ee16a0df86c280d019d1d695296aa505041d4 Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Wed, 19 Feb 2025 18:55:09 +0300 Subject: [PATCH 8/9] pulumiPackages.pulumi-python: add smoke test --- .../pulumi/plugins/pulumi-python/package.nix | 3 ++ .../pulumi-python/smoke-test/Pulumi.yaml | 2 + .../pulumi-python/smoke-test/__main__.py | 18 +++++++++ .../pulumi-python/smoke-test/default.nix | 37 +++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/Pulumi.yaml create mode 100644 pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/__main__.py create mode 100644 pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/default.nix diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-python/package.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/package.nix index 3d9a76c58681..74ff53ad2b08 100644 --- a/pkgs/by-name/pu/pulumi/plugins/pulumi-python/package.nix +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/package.nix @@ -1,6 +1,7 @@ { lib, buildGoModule, + callPackage, pulumi, bash, python3, @@ -45,6 +46,8 @@ buildGoModule rec { ../../dist/pulumi-analyzer-policy-python ''; + passthru.tests.smokeTest = callPackage ./smoke-test/default.nix { }; + meta = { homepage = "https://www.pulumi.com/docs/iac/languages-sdks/python/"; description = "Language host for Pulumi programs written in Python"; diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/Pulumi.yaml b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/Pulumi.yaml new file mode 100644 index 000000000000..94072ba5e3aa --- /dev/null +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/Pulumi.yaml @@ -0,0 +1,2 @@ +name: smoke-test +runtime: python diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/__main__.py b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/__main__.py new file mode 100644 index 000000000000..43b7d1a8e895 --- /dev/null +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/__main__.py @@ -0,0 +1,18 @@ +from binascii import b2a_hex +from os import urandom + +from pulumi import export, ResourceOptions +from pulumi.dynamic import Resource, ResourceProvider, CreateResult + + +class RandomProvider(ResourceProvider): + def create(self, inputs): + return CreateResult(b2a_hex(urandom(16)), outs={}) + + +class Random(Resource): + def __init__(self, name, opts = None): + super().__init__(RandomProvider(), name, {}, opts) + + +export("out", Random(name="random_test").id) diff --git a/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/default.nix b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/default.nix new file mode 100644 index 000000000000..903461878342 --- /dev/null +++ b/pkgs/by-name/pu/pulumi/plugins/pulumi-python/smoke-test/default.nix @@ -0,0 +1,37 @@ +{ + lib, + stdenvNoCC, + pulumiTestHook, + pulumi, + pulumi-python, + python3Packages, +}: +stdenvNoCC.mkDerivation { + name = "pulumi-python-smoke-test"; + src = builtins.filterSource (name: _: !(lib.hasSuffix ".nix" name)) ./.; + + doCheck = true; + + nativeCheckInputs = [ + pulumiTestHook + pulumi + pulumi-python + python3Packages.pulumi + ]; + + __darwinAllowLocalNetworking = true; + + checkPhase = '' + runHook preCheck + pulumi update --skip-preview + stackOutput=$(pulumi stack output out) + [[ $stackOutput =~ ^[0-9a-f]{32}$ ]] + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + mkdir -p "$out" + runHook postInstall + ''; +} From 9e91d890122239cfdf03dc694330e4fcf09620a2 Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Mon, 3 Mar 2025 19:48:24 +0300 Subject: [PATCH 9/9] pulumiPackages: format with nixfmt --- .../pu/pulumi/extra/mk-pulumi-package.nix | 194 +++++++++++------- 1 file changed, 122 insertions(+), 72 deletions(-) diff --git a/pkgs/by-name/pu/pulumi/extra/mk-pulumi-package.nix b/pkgs/by-name/pu/pulumi/extra/mk-pulumi-package.nix index 5c5e9c687469..9981bb8d2251 100644 --- a/pkgs/by-name/pu/pulumi/extra/mk-pulumi-package.nix +++ b/pkgs/by-name/pu/pulumi/extra/mk-pulumi-package.nix @@ -1,42 +1,69 @@ -{ buildGoModule -, fetchFromGitHub -, python3Packages +{ + buildGoModule, + fetchFromGitHub, + python3Packages, }: let mkBasePackage = - { pname - , src - , version - , vendorHash - , cmd - , extraLdflags - , env - , ... - }@args: buildGoModule (rec { - inherit pname src vendorHash version env; + { + pname, + src, + version, + vendorHash, + cmd, + extraLdflags, + env, + ... + }@args: + buildGoModule ( + rec { + inherit + pname + src + vendorHash + version + env + ; - sourceRoot = "${src.name}/provider"; + sourceRoot = "${src.name}/provider"; - subPackages = [ "cmd/${cmd}" ]; + subPackages = [ "cmd/${cmd}" ]; - doCheck = false; + doCheck = false; - ldflags = [ - "-s" - "-w" - ] ++ extraLdflags; - } // args); + ldflags = [ + "-s" + "-w" + ] ++ extraLdflags; + } + // args + ); mkPythonPackage = - { meta - , pname - , src - , version - , ... - }: python3Packages.callPackage - ({ buildPythonPackage, pythonOlder, parver, pip, pulumi, semver, setuptools }: + { + meta, + pname, + src, + version, + ... + }: + python3Packages.callPackage ( + { + buildPythonPackage, + pythonOlder, + parver, + pip, + pulumi, + semver, + setuptools, + }: buildPythonPackage { - inherit pname meta src version; + inherit + pname + meta + src + version + ; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -77,61 +104,84 @@ let pythonImportsCheck = [ (builtins.replaceStrings [ "-" ] [ "_" ] pname) ]; - }) - { }; + } + ) { }; in -{ owner -, repo -, rev -, version -, hash -, vendorHash -, cmdGen -, cmdRes -, extraLdflags -, env ? { } -, meta -, fetchSubmodules ? false -, ... +{ + owner, + repo, + rev, + version, + hash, + vendorHash, + cmdGen, + cmdRes, + extraLdflags, + env ? { }, + meta, + fetchSubmodules ? false, + ... }@args: let src = fetchFromGitHub { name = "source-${repo}-${rev}"; - inherit owner repo rev hash fetchSubmodules; + inherit + owner + repo + rev + hash + fetchSubmodules + ; }; pulumi-gen = mkBasePackage rec { - inherit src version vendorHash extraLdflags env; + inherit + src + version + vendorHash + extraLdflags + env + ; cmd = cmdGen; pname = cmdGen; }; in -mkBasePackage ({ - inherit meta src version vendorHash extraLdflags env; - - pname = repo; - - nativeBuildInputs = [ - pulumi-gen - ]; - - cmd = cmdRes; - - postConfigure = '' - pushd .. - - chmod +w sdk/ - ${cmdGen} schema - - popd - - VERSION=v${version} go generate cmd/${cmdRes}/main.go - ''; - - passthru.sdks.python = mkPythonPackage { - inherit meta src version; +mkBasePackage ( + { + inherit + meta + src + version + vendorHash + extraLdflags + env + ; pname = repo; - }; -} // args) + + nativeBuildInputs = [ + pulumi-gen + ]; + + cmd = cmdRes; + + postConfigure = '' + pushd .. + + chmod +w sdk/ + ${cmdGen} schema + + popd + + VERSION=v${version} go generate cmd/${cmdRes}/main.go + ''; + + passthru.sdks.python = mkPythonPackage { + inherit meta src version; + + pname = repo; + }; + } + // args +)