From 938392f5a1025d8453e1af5ce12fff74c37cc994 Mon Sep 17 00:00:00 2001 From: Thomas Neil James Shadwell Date: Mon, 3 Apr 2023 17:10:29 -0700 Subject: [PATCH] multiplatform pulumi --- bin/linux/pulumi/BUILD.bazel | 83 ++++++++++++++++++++++++++++++------ bin/linux/pulumi/smoke.sh | 15 ------- bzl/deps.bzl | 59 ++++++++++++++++++++++++- 3 files changed, 128 insertions(+), 29 deletions(-) delete mode 100755 bin/linux/pulumi/smoke.sh diff --git a/bin/linux/pulumi/BUILD.bazel b/bin/linux/pulumi/BUILD.bazel index e34ab02b5f..b46a940330 100644 --- a/bin/linux/pulumi/BUILD.bazel +++ b/bin/linux/pulumi/BUILD.bazel @@ -1,19 +1,78 @@ package(default_visibility = ["//:__subpackages__"]) +# the pulumi cli tool +load("@bazel_skylib//rules:native_binary.bzl", "native_test") +load("@bazel_skylib//lib:selects.bzl", "selects") + + +config_setting( + name = "darwin_arm64", + constraint_values = [ + "@platforms//os:macos", + "@platforms//cpu:arm64", + ], +) + +config_setting( + name = "darwin_x64", + constraint_values = [ + "@platforms//os:macos", + "@platforms//cpu:x86_64", + ], +) + +config_setting( + name = "linux_arm64", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:arm64", + ], +) + +config_setting( + name = "linux_x64", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + ], +) + +config_setting( + name = "windows_arm64", + constraint_values = [ + "@platforms//os:windows", + "@platforms//cpu:arm64", + ], +) + +config_setting( + name = "windows_x64", + constraint_values = [ + "@platforms//os:windows", + "@platforms//cpu:x86_64", + ], +) + + alias( name = "pulumi", - actual = "@pulumi_cli//:pulumi/pulumi", + actual = select({ + ":darwin_arm64": "@pulumi_cli_darwin_arm64//:pulumi/pulumi", + ":darwin_x64": "@pulumi_cli_darwin_x64//:pulumi/pulumi", + ":linux_arm64": "@pulumi_cli_linux_arm64//:pulumi/pulumi", + ":linux_x64": "@pulumi_cli_linux_x64//:pulumi/pulumi", + ":windows_arm64": "@pulumi_cli_windows_arm64//:pulumi/pulumi", + ":windows_x64": "@pulumi_cli_windows_x64//:pulumi/pulumi", + "//conditions:default": "@pulumi_cli_linux_x64//:pulumi/pulumi", + }), ) -sh_test( + +native_test( + # The name of the test rule. name = "smoke", - srcs = ["smoke.sh"], - data = [":pulumi"], - env = { - # the below should become rlocationpath when https://github.com/bazelbuild/bazel/pull/16668 has a release - "PULUMI_BIN": "$(rootpath :pulumi)", - }, - deps = [ - "@bazel_tools//tools/bash/runfiles", - ], -) + # label; path of the pre-built executable + src = ":pulumi", + # output; an output name for the copy of the binary + out = "pulumi.local", +) \ No newline at end of file diff --git a/bin/linux/pulumi/smoke.sh b/bin/linux/pulumi/smoke.sh deleted file mode 100755 index 7b10eb821f..0000000000 --- a/bin/linux/pulumi/smoke.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/bin/env bash - -# --- begin runfiles.bash initialization v2 --- -# Copy-pasted from the Bazel Bash runfiles library v2. -set -uo pipefail; f=bazel_tools/tools/bash/runfiles/runfiles.bash -source "${RUNFILES_DIR:-/dev/null}/$f" 2>/dev/null || \ - source "$(grep -sm1 "^$f " "${RUNFILES_MANIFEST_FILE:-/dev/null}" | cut -f2- -d' ')" 2>/dev/null || \ - source "$0.runfiles/$f" 2>/dev/null || \ - source "$(grep -sm1 "^$f " "$0.runfiles_manifest" | cut -f2- -d' ')" 2>/dev/null || \ - source "$(grep -sm1 "^$f " "$0.exe.runfiles_manifest" | cut -f2- -d' ')" 2>/dev/null || \ - { echo>&2 "ERROR: cannot find $f"; exit 1; }; f=; set -e -# --- end runfiles.bash initialization v2 --- - - -"$(rlocation monorepo/$PULUMI_BIN)" version \ No newline at end of file diff --git a/bzl/deps.bzl b/bzl/deps.bzl index 9dd7c23b7c..a88cea05a7 100644 --- a/bzl/deps.bzl +++ b/bzl/deps.bzl @@ -119,14 +119,69 @@ def fetch_dependencies(): ) http_archive( - name = "pulumi_cli", + name = "pulumi_cli_linux_x64", sha256 = "4b917ffa38e5084074557bdd9a39025676922b6433cab809be26493276f00a67", urls = [ "https://github.com/pulumi/pulumi/releases/download/v3.58.0/pulumi-v3.58.0-linux-x64.tar.gz", ], build_file_content = """ exports_files(glob(["**/*"])) - """, +""", + ) + + http_archive( + name = "pulumi_cli_darwin_arm64", + urls = [ + "https://github.com/pulumi/pulumi/releases/download/v3.59.0/pulumi-v3.59.0-darwin-arm64.tar.gz", + ], + sha256 = "6726d7dec38e5852650dace98928e6b5dbca650f6f137c829c0f62a12f8addf7", + build_file_content = """ +exports_files(glob(["**/*"])) +""", + ) + + http_archive( + name = "pulumi_cli_darwin_x64", + urls = [ + "https://github.com/pulumi/pulumi/releases/download/v3.59.0/pulumi-v3.59.0-darwin-x64.tar.gz", + ], + + build_file_content = """ +exports_files(glob(["**/*"])) +""", + ) + + http_archive( + name = "pulumi_cli_linux_arm64", + urls = [ + "https://github.com/pulumi/pulumi/releases/download/v3.59.0/pulumi-v3.59.0-linux-arm64.tar.gz", + ], + sha256 = "28b12b585a080e833471af99ab4b3c1cc9a644c88d952d2a35034fcd143eaf05", + build_file_content = """ +exports_files(glob(["**/*"])) +""", + ) + + http_archive( + name = "pulumi_cli_windows_arm64", + urls = [ + "https://github.com/pulumi/pulumi/releases/download/v3.59.0/pulumi-v3.59.0-windows-arm64.zip", + ], + + build_file_content = """ +exports_files(glob(["**/*"])) +""", + ) + + http_archive( + name = "pulumi_cli_windows_x64", + urls = [ + "https://github.com/pulumi/pulumi/releases/download/v3.59.0/pulumi-v3.59.0-windows-x64.zip", + ], + + build_file_content = """ +exports_files(glob(["**/*"])) +""", ) http_archive(