-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove the need for custom Make targets #1292
Changes from all commits
0b5372d
6e05216
3f082b5
0bafe9b
b8e723b
a11bf10
8f11534
278df6f
3b4cfa3
07fac7a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -255,32 +255,45 @@ lint_provider.fix: | |||||||||||||||||||
cd provider && golangci-lint run --path-prefix provider -c ../.golangci.yml --fix | ||||||||||||||||||||
.PHONY: lint_provider lint_provider.fix | ||||||||||||||||||||
|
||||||||||||||||||||
# `make provider_no_deps` builds the provider binary directly, without ensuring that | ||||||||||||||||||||
# `cmd/pulumi-resource-#{{ .Config.Provider }}#/schema.json` is valid and up to date. | ||||||||||||||||||||
# To create a release ready binary, you should use `make provider`. | ||||||||||||||||||||
#{{- if .Config.BuildProviderCmd }}# | ||||||||||||||||||||
build_provider_cmd = #{{ .Config.BuildProviderCmd }}# | ||||||||||||||||||||
build_provider_cmd = #{{ if .Config.BuildProviderPre -}}# | ||||||||||||||||||||
#{{ .Config.BuildProviderPre }}#; | ||||||||||||||||||||
#{{- end -}}# | ||||||||||||||||||||
#{{ .Config.BuildProviderCmd }}# | ||||||||||||||||||||
#{{- else }}# | ||||||||||||||||||||
build_provider_cmd = cd provider && CGO_ENABLED=0 go build $(PULUMI_PROVIDER_BUILD_PARALLELISM) -o "$(1)" -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(PROVIDER) | ||||||||||||||||||||
build_provider_cmd = #{{ if .Config.BuildProviderPre -}}# | ||||||||||||||||||||
#{{ .Config.BuildProviderPre }}#; | ||||||||||||||||||||
#{{- end -}}# | ||||||||||||||||||||
cd provider && GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 go build $(PULUMI_PROVIDER_BUILD_PARALLELISM) -o "$(3)" -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(PROVIDER) | ||||||||||||||||||||
#{{- end }}# | ||||||||||||||||||||
|
||||||||||||||||||||
provider: bin/$(PROVIDER) | ||||||||||||||||||||
|
||||||||||||||||||||
# `make provider_no_deps` builds the provider binary directly, without ensuring that | ||||||||||||||||||||
# `cmd/pulumi-resource-#{{ .Config.Provider }}#/schema.json` is valid and up to date. | ||||||||||||||||||||
# To create a release ready binary, you should use `make provider`. | ||||||||||||||||||||
provider_no_deps: | ||||||||||||||||||||
$(call build_provider_cmd,$(WORKING_DIR)/bin/$(PROVIDER)) | ||||||||||||||||||||
$(call build_provider_cmd,$(shell go env GOOS),$(shell go env GOARCH),$(WORKING_DIR)/bin/$(PROVIDER)) | ||||||||||||||||||||
bin/$(PROVIDER): .make/schema | ||||||||||||||||||||
$(call build_provider_cmd,$(WORKING_DIR)/bin/$(PROVIDER)) | ||||||||||||||||||||
$(call build_provider_cmd,$(shell go env GOOS),$(shell go env GOARCH),$(WORKING_DIR)/bin/$(PROVIDER)) | ||||||||||||||||||||
.PHONY: provider provider_no_deps | ||||||||||||||||||||
|
||||||||||||||||||||
test: export PATH := $(WORKING_DIR)/bin:$(PATH) | ||||||||||||||||||||
test: | ||||||||||||||||||||
cd examples && go test -v -tags=all -parallel $(TESTPARALLELISM) -timeout 2h | ||||||||||||||||||||
.PHONY: test | ||||||||||||||||||||
|
||||||||||||||||||||
#{{- if .Config.TestProviderCmd }}# | ||||||||||||||||||||
test_provider_cmd = #{{ .Config.TestProviderCmd }}# | ||||||||||||||||||||
#{{- else }}# | ||||||||||||||||||||
test_provider_cmd = cd provider && go test -v -short \ | ||||||||||||||||||||
-coverprofile="coverage.txt" \ | ||||||||||||||||||||
-coverpkg="./...,github.com/hashicorp/terraform-provider-..." \ | ||||||||||||||||||||
-parallel $(TESTPARALLELISM) \ | ||||||||||||||||||||
./... | ||||||||||||||||||||
#{{- end }}# | ||||||||||||||||||||
test_provider: | ||||||||||||||||||||
cd provider && go test -v -short \ | ||||||||||||||||||||
-coverprofile="coverage.txt" \ | ||||||||||||||||||||
-coverpkg="./...,github.com/hashicorp/terraform-provider-..." \ | ||||||||||||||||||||
-parallel $(TESTPARALLELISM) \ | ||||||||||||||||||||
./... | ||||||||||||||||||||
$(call test_provider_cmd) | ||||||||||||||||||||
.PHONY: test_provider | ||||||||||||||||||||
|
||||||||||||||||||||
tfgen: schema | ||||||||||||||||||||
|
@@ -370,18 +383,18 @@ SKIP_SIGNING ?= | |||||||||||||||||||
|
||||||||||||||||||||
# These targets assume that the schema-embed.json exists - it's generated by tfgen. | ||||||||||||||||||||
# We disable CGO to ensure that the binary is statically linked. | ||||||||||||||||||||
bin/linux-amd64/$(PROVIDER): export GOOS := linux | ||||||||||||||||||||
bin/linux-amd64/$(PROVIDER): export GOARCH := amd64 | ||||||||||||||||||||
bin/linux-arm64/$(PROVIDER): export GOOS := linux | ||||||||||||||||||||
bin/linux-arm64/$(PROVIDER): export GOARCH := arm64 | ||||||||||||||||||||
bin/darwin-amd64/$(PROVIDER): export GOOS := darwin | ||||||||||||||||||||
bin/darwin-amd64/$(PROVIDER): export GOARCH := amd64 | ||||||||||||||||||||
bin/darwin-arm64/$(PROVIDER): export GOOS := darwin | ||||||||||||||||||||
bin/darwin-arm64/$(PROVIDER): export GOARCH := arm64 | ||||||||||||||||||||
bin/windows-amd64/$(PROVIDER).exe: export GOOS := windows | ||||||||||||||||||||
bin/windows-amd64/$(PROVIDER).exe: export GOARCH := amd64 | ||||||||||||||||||||
bin/linux-amd64/$(PROVIDER): GOOS := linux | ||||||||||||||||||||
bin/linux-amd64/$(PROVIDER): GOARCH := amd64 | ||||||||||||||||||||
bin/linux-arm64/$(PROVIDER): GOOS := linux | ||||||||||||||||||||
bin/linux-arm64/$(PROVIDER): GOARCH := arm64 | ||||||||||||||||||||
bin/darwin-amd64/$(PROVIDER): GOOS := darwin | ||||||||||||||||||||
bin/darwin-amd64/$(PROVIDER): GOARCH := amd64 | ||||||||||||||||||||
bin/darwin-arm64/$(PROVIDER): GOOS := darwin | ||||||||||||||||||||
bin/darwin-arm64/$(PROVIDER): GOARCH := arm64 | ||||||||||||||||||||
bin/windows-amd64/$(PROVIDER).exe: GOOS := windows | ||||||||||||||||||||
bin/windows-amd64/$(PROVIDER).exe: GOARCH := amd64 | ||||||||||||||||||||
bin/%/$(PROVIDER) bin/%/$(PROVIDER).exe: bin/jsign-6.0.jar | ||||||||||||||||||||
$(call build_provider_cmd,$(WORKING_DIR)/$@) | ||||||||||||||||||||
$(call build_provider_cmd,$(GOOS),$(GOARCH),$(WORKING_DIR)/$@) | ||||||||||||||||||||
|
||||||||||||||||||||
@# Only sign windows binary if fully configured. | ||||||||||||||||||||
@# Test variables set by joining with | between and looking for || showing at least one variable is empty. | ||||||||||||||||||||
|
@@ -440,5 +453,12 @@ provider_dist-windows-amd64: bin/$(PROVIDER)-v$(VERSION_GENERIC)-windows-amd64.t | |||||||||||||||||||
provider_dist: provider_dist-linux-amd64 provider_dist-linux-arm64 provider_dist-darwin-amd64 provider_dist-darwin-arm64 provider_dist-windows-amd64 | ||||||||||||||||||||
.PHONY: provider_dist-linux-amd64 provider_dist-linux-arm64 provider_dist-darwin-amd64 provider_dist-darwin-arm64 provider_dist-windows-amd64 provider_dist | ||||||||||||||||||||
|
||||||||||||||||||||
#{{- if .Config.RenovateCmd }}# | ||||||||||||||||||||
renovate_cmd = #{{ .Config.RenovateCmd }}# | ||||||||||||||||||||
renovate: | ||||||||||||||||||||
$(call renovate_cmd) | ||||||||||||||||||||
.PHONY: renovate | ||||||||||||||||||||
#{{- end }}# | ||||||||||||||||||||
Comment on lines
+456
to
+461
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As discussed, I think this is a backwards way of configuring renovate - we should just be building an existing makefile target via the per-repo renovate config instead. The renovate target is fine as a temporary workaround until we figure out why renovate won't let us call One suggestion here for simplifying would be to not make it an arbirary command but make it This would also simplify the readability of the code as it's just creating an alias to an existing target:
Suggested change
Having the configuration as an existing target will also make it trivial in the future to remove this target and instead generate the renovate config with the call to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The suggested change does make https://github.com/pulumi/pulumi-awsx/pull/1485/files#diff-76ed074a9305c04054cdebb9e9aad2d818052b07091de1f20cad0bbac34ffb52R381 more difficult - we're not just generating SDKs, renovate might need to do something else specific to the repo. I think I will leave the Cmd hook. The Target hook seems to invite backdoors such as:
|
||||||||||||||||||||
|
||||||||||||||||||||
# Permit providers to extend the Makefile with provider-specific Make includes. | ||||||||||||||||||||
include $(wildcard .mk/*.mk) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Found that
export
transitively affects all sub-targets, which is unfortunate and not needed. Passing it more precisely is more predictable.