@@ -5,7 +5,7 @@ ORG := pulumi
55PROJECT := github.com/$(ORG ) /pulumi-$(PACK )
66PROVIDER_PATH := provider/v3
77VERSION_PATH := $(PROVIDER_PATH ) /pkg/version.Version
8- TFGEN := pulumi-tfgen-$(PACK )
8+ CODEGEN := pulumi-tfgen-$(PACK )
99PROVIDER := pulumi-resource-$(PACK )
1010JAVA_GEN := pulumi-java-gen
1111TESTPARALLELISM := 10
@@ -14,11 +14,17 @@ PULUMI_PROVIDER_BUILD_PARALLELISM ?=
1414PULUMI_CONVERT := 1
1515PULUMI_MISSING_DOCS_ERROR := true
1616
17+ PULUMICTL_VERSION := v0.0.46
18+ PULUMICTL := $(shell which pulumictl || \
19+ (test ! -e $(WORKING_DIR ) /bin/pulumictl && \
20+ GOPATH="$(WORKING_DIR ) " go install "github.com/pulumi/pulumictl/cmd/pulumictl@$(PULUMICTL_VERSION ) "; \
21+ echo "$(WORKING_DIR ) /bin/puluimctl") )
22+
1723# Override during CI using `make [TARGET] PROVIDER_VERSION=""` or by setting a PROVIDER_VERSION environment variable
1824# Local & branch builds will just used this fixed default version unless specified
1925PROVIDER_VERSION ?= 3.0.0-alpha.0+dev
2026# Use this normalised version everywhere rather than the raw input to ensure consistency.
21- VERSION_GENERIC = $(shell pulumictl convert-version --language generic --version "$(PROVIDER_VERSION ) ")
27+ VERSION_GENERIC = $(shell $( PULUMICTL ) convert-version --language generic --version "$(PROVIDER_VERSION ) ")
2228
2329# Strips debug information from the provider binary to reduce its size and speed up builds
2430LDFLAGS_STRIP_SYMBOLS =-s -w
@@ -95,8 +101,8 @@ GEN_ENVS := PULUMI_HOME=$(GEN_PULUMI_HOME) PULUMI_CONVERT_EXAMPLES_CACHE_DIR=$(G
95101generate_dotnet : .make/generate_dotnet
96102build_dotnet : .make/build_dotnet
97103.make/generate_dotnet : export PATH := $(WORKING_DIR ) /.pulumi/bin:$(PATH )
98- .make/generate_dotnet : .make/install_plugins bin/$(TFGEN )
99- $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(TFGEN ) dotnet --out sdk/dotnet/
104+ .make/generate_dotnet : .make/install_plugins bin/$(CODEGEN )
105+ $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(CODEGEN ) dotnet --out sdk/dotnet/
100106 cd sdk/dotnet/ && \
101107 printf " module fake_dotnet_module // Exclude this directory from Go tools\n\ngo 1.17\n" > go.mod && \
102108 echo " $( VERSION_GENERIC) " > version.txt
@@ -109,8 +115,8 @@ build_dotnet: .make/build_dotnet
109115generate_go : .make/generate_go
110116build_go : .make/build_go
111117.make/generate_go : export PATH := $(WORKING_DIR ) /.pulumi/bin:$(PATH )
112- .make/generate_go : .make/install_plugins bin/$(TFGEN )
113- $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(TFGEN ) go --out sdk/go/
118+ .make/generate_go : .make/install_plugins bin/$(CODEGEN )
119+ $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(CODEGEN ) go --out sdk/go/
114120 @touch $@
115121.make/build_go : .make/generate_go
116122 cd sdk && go list " $$ (grep -e " ^module" go.mod | cut -d ' ' -f 2)/go/..." | xargs -I {} bash -c ' go build {} && go clean -i {}'
@@ -136,8 +142,8 @@ build_java: .make/build_java
136142generate_nodejs : .make/generate_nodejs
137143build_nodejs : .make/build_nodejs
138144.make/generate_nodejs : export PATH := $(WORKING_DIR ) /.pulumi/bin:$(PATH )
139- .make/generate_nodejs : .make/install_plugins bin/$(TFGEN )
140- $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(TFGEN ) nodejs --out sdk/nodejs/
145+ .make/generate_nodejs : .make/install_plugins bin/$(CODEGEN )
146+ $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(CODEGEN ) nodejs --out sdk/nodejs/
141147 printf " module fake_nodejs_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/nodejs/go.mod
142148 @touch $@
143149.make/build_nodejs : .make/generate_nodejs
@@ -151,8 +157,8 @@ build_nodejs: .make/build_nodejs
151157generate_python : .make/generate_python
152158build_python : .make/build_python
153159.make/generate_python : export PATH := $(WORKING_DIR ) /.pulumi/bin:$(PATH )
154- .make/generate_python : .make/install_plugins bin/$(TFGEN )
155- $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(TFGEN ) python --out sdk/python/
160+ .make/generate_python : .make/install_plugins bin/$(CODEGEN )
161+ $(GEN_ENVS ) $(WORKING_DIR ) /bin/$(CODEGEN ) python --out sdk/python/
156162 printf " module fake_python_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/python/go.mod
157163 cp README.md sdk/python/
158164 @touch $@
@@ -168,8 +174,8 @@ build_python: .make/build_python
168174.PHONY : generate_python build_python
169175# Run the bridge's registry-docs command to generated the content of the installation docs/ folder at provider repo root
170176build_registry_docs : .make/build_registry_docs
171- .make/build_registry_docs : .make/install_plugins bin/$(TFGEN )
172- bin/$(TFGEN ) registry-docs --out $(WORKING_DIR ) /docs
177+ .make/build_registry_docs : .make/install_plugins bin/$(CODEGEN )
178+ bin/$(CODEGEN ) registry-docs --out $(WORKING_DIR ) /docs
173179 @touch $@
174180.PHONY : build_registry_docs
175181
@@ -199,7 +205,7 @@ install_nodejs_sdk: .make/install_nodejs_sdk
199205install_python_sdk :
200206.PHONY : install_dotnet_sdk install_go_sdk install_java_sdk install_nodejs_sdk install_python_sdk
201207
202- # Install Pulumi plugins required for TFGen to resolve references
208+ # Install Pulumi plugins required for CODEGEN to resolve references
203209install_plugins : .make/install_plugins
204210.make/install_plugins : export PULUMI_HOME := $(WORKING_DIR ) /.pulumi
205211.make/install_plugins : export PATH := $(WORKING_DIR ) /.pulumi/bin:$(PATH )
@@ -219,12 +225,12 @@ lint_provider.fix:
219225# `make provider_no_deps` builds the provider binary directly, without ensuring that
220226# `cmd/pulumi-resource-postgresql/schema.json` is valid and up to date.
221227# To create a release ready binary, you should use `make provider`.
222- build_provider_cmd = cd provider && go build $(PULUMI_PROVIDER_BUILD_PARALLELISM ) -o $( WORKING_DIR ) /bin/ $( PROVIDER ) -ldflags "$(LDFLAGS ) " $(PROJECT ) /$(PROVIDER_PATH ) /cmd/$(PROVIDER )
228+ build_provider_cmd = cd provider && CGO_ENABLED=0 go build $(PULUMI_PROVIDER_BUILD_PARALLELISM ) -o " $( 1 ) " -ldflags "$(LDFLAGS ) " $(PROJECT ) /$(PROVIDER_PATH ) /cmd/$(PROVIDER )
223229provider : bin/$(PROVIDER )
224230provider_no_deps :
225- $(call build_provider_cmd)
231+ $(call build_provider_cmd, $( WORKING_DIR ) /bin/ $( PROVIDER ) )
226232bin/$(PROVIDER ) : .make/schema
227- $(call build_provider_cmd)
233+ $(call build_provider_cmd, $( WORKING_DIR ) /bin/ $( PROVIDER ) )
228234.PHONY : provider provider_no_deps
229235
230236test : export PATH := $(WORKING_DIR ) /bin:$(PATH )
@@ -250,13 +256,13 @@ tfgen_no_deps: .make/schema
250256.make/schema : export PULUMI_CONVERT_EXAMPLES_CACHE_DIR := $(WORKING_DIR ) /.pulumi/examples-cache
251257.make/schema : export PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION := $(PULUMI_CONVERT )
252258.make/schema : export PULUMI_MISSING_DOCS_ERROR := $(PULUMI_MISSING_DOCS_ERROR )
253- .make/schema : bin/$(TFGEN ) .make/install_plugins .make/upstream
254- $(WORKING_DIR ) /bin/$(TFGEN ) schema --out provider/cmd/$(PROVIDER )
259+ .make/schema : bin/$(CODEGEN ) .make/install_plugins .make/upstream
260+ $(WORKING_DIR ) /bin/$(CODEGEN ) schema --out provider/cmd/$(PROVIDER )
255261 (cd provider && VERSION=$( VERSION_GENERIC) go generate cmd/$( PROVIDER) /main.go)
256262 @touch $@
257- tfgen_build_only : bin/$(TFGEN )
258- bin/$(TFGEN ) : provider/* .go provider/go.* .make/upstream
259- (cd provider && go build $( PULUMI_PROVIDER_BUILD_PARALLELISM) -o $( WORKING_DIR) /bin/$( TFGEN ) -ldflags " $( LDFLAGS_PROJ_VERSION) $( LDFLAGS_EXTRAS) " $( PROJECT) /$( PROVIDER_PATH) /cmd/$( TFGEN ) )
263+ tfgen_build_only : bin/$(CODEGEN )
264+ bin/$(CODEGEN ) : provider/* .go provider/go.* .make/upstream
265+ (cd provider && go build $( PULUMI_PROVIDER_BUILD_PARALLELISM) -o $( WORKING_DIR) /bin/$( CODEGEN ) -ldflags " $( LDFLAGS_PROJ_VERSION) $( LDFLAGS_EXTRAS) " $( PROJECT) /$( PROVIDER_PATH) /cmd/$( CODEGEN ) )
260266.PHONY : tfgen schema tfgen_no_deps tfgen_build_only
261267
262268# Apply patches to the upstream submodule, if it exists
@@ -270,7 +276,7 @@ endif
270276.PHONY : upstream
271277
272278bin/pulumi-java-gen : .pulumi-java-gen.version
273- pulumictl download-binary -n pulumi-language-java -v v$(shell cat .pulumi-java-gen.version) -r pulumi/pulumi-java
279+ $( PULUMICTL ) download-binary -n pulumi-language-java -v v$(shell cat .pulumi-java-gen.version) -r pulumi/pulumi-java
274280
275281# To make an immediately observable change to .ci-mgmt.yaml:
276282#
@@ -302,7 +308,7 @@ ci-mgmt: .ci-mgmt.yaml
302308
303309# Start debug server for tfgen
304310debug_tfgen :
305- dlv --listen=:2345 --headless=true --api-version=2 exec $(WORKING_DIR ) /bin/$(TFGEN ) -- schema --out provider/cmd/$(PROVIDER )
311+ dlv --listen=:2345 --headless=true --api-version=2 exec $(WORKING_DIR ) /bin/$(CODEGEN ) -- schema --out provider/cmd/$(PROVIDER )
306312.PHONY : debug_tfgen
307313
308314# Provider cross-platform build & packaging
@@ -316,25 +322,24 @@ SKIP_SIGNING ?=
316322
317323# These targets assume that the schema-embed.json exists - it's generated by tfgen.
318324# We disable CGO to ensure that the binary is statically linked.
319- bin/linux-amd64/$(PROVIDER ) : TARGET := linux-amd64
320- bin/linux-arm64/$(PROVIDER ) : TARGET := linux-arm64
321- bin/darwin-amd64/$(PROVIDER ) : TARGET := darwin-amd64
322- bin/darwin-arm64/$(PROVIDER ) : TARGET := darwin-arm64
323- bin/windows-amd64/$(PROVIDER ) .exe : TARGET := windows-amd64
325+ bin/linux-amd64/$(PROVIDER ) : export GOOS := linux
326+ bin/linux-amd64/$(PROVIDER ) : export GOARCH := amd64
327+ bin/linux-arm64/$(PROVIDER ) : export GOOS := linux
328+ bin/linux-arm64/$(PROVIDER ) : export GOARCH := arm64
329+ bin/darwin-amd64/$(PROVIDER ) : export GOOS := darwin
330+ bin/darwin-amd64/$(PROVIDER ) : export GOARCH := amd64
331+ bin/darwin-arm64/$(PROVIDER ) : export GOOS := darwin
332+ bin/darwin-arm64/$(PROVIDER ) : export GOARCH := arm64
333+ bin/windows-amd64/$(PROVIDER ) .exe : export GOOS := windows
334+ bin/windows-amd64/$(PROVIDER ) .exe : export GOARCH := amd64
324335bin/% /$(PROVIDER ) bin/% /$(PROVIDER ) .exe : bin/jsign-6.0.jar
325- @# check the TARGET is set
326- @test $(TARGET )
327- @cd provider && \
328- export GOOS=$$(echo "$(TARGET ) " | cut -d "-" -f 1 ) && \
329- export GOARCH=$$(echo "$(TARGET ) " | cut -d "-" -f 2 ) && \
330- export CGO_ENABLED=0 && \
331- go build -o " ${WORKING_DIR} /$@ " $(PULUMI_PROVIDER_BUILD_PARALLELISM ) -ldflags " $( LDFLAGS) " " $( PROJECT) /$( PROVIDER_PATH) /cmd/$( PROVIDER) "
336+ $(call build_provider_cmd,$(WORKING_DIR ) /$@ )
332337
333338 @# Only sign windows binary if fully configured.
334339 @# Test variables set by joining with | between and looking for || showing at least one variable is empty.
335340 @# Move the binary to a temporary location and sign it there to avoid the target being up-to-date if signing fails.
336341 @set -e; \
337- if [[ "${TARGET }" = "windows-amd64" && "${SKIP_SIGNING}" != "true" ]]; then \
342+ if [[ "${GOOS}-${GOARCH }" = "windows-amd64" && "${SKIP_SIGNING}" != "true" ]]; then \
338343 if [[ "|${AZURE_SIGNING_CLIENT_ID}|${AZURE_SIGNING_CLIENT_SECRET}|${AZURE_SIGNING_TENANT_ID}|${AZURE_SIGNING_KEY_VAULT_URI}|" == *"||"* ]]; then \
339344 echo "Can't sign windows binaries as required configuration not set: AZURE_SIGNING_CLIENT_ID, AZURE_SIGNING_CLIENT_SECRET, AZURE_SIGNING_TENANT_ID, AZURE_SIGNING_KEY_VAULT_URI"; \
340345 echo "To rebuild with signing delete the unsigned $@ and rebuild with the fixed configuration"; \
0 commit comments