Skip to content

Commit 2b508ee

Browse files
Remove generic version calculation (#3775)
Remove unrequired complexity of parsing the version through pulumictl and the fiddly dependency because it's in a variable but uses a binary downloaded through a target. Instead, just validate that the version isn't in the wrong format with a leading "v". ## Speed boost Speed up makefile initialisation by not scanning for updates of every individual spec file but instead just check the timestamp of the git internal file tracking what upstream HEAD is pointing at. This doesn't account for manual edits to the specs - this is not supported behaviour if using the default makefile build caching. ## Remove SDK version injection Use the same approach as bridged providers and just rely on `gen-sdk` to insert the version into the SDK which it's already been doing since enabling `respectSchemaVersion` in the schema for each language.
1 parent fcdfe88 commit 2b508ee

File tree

1 file changed

+35
-41
lines changed

1 file changed

+35
-41
lines changed

Makefile

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ CODEGEN := pulumi-gen-azure-native
77
WORKING_DIR := $(shell pwd)
88

99
PROVIDER_PKG := $(shell find provider/pkg -type f)
10-
SPECS := $(shell find azure-rest-api-specs/specification/*/resource-manager -type f -name "*.json" ! -path "**/examples/**")
10+
SPECS := .git/modules/azure-rest-api-specs/HEAD
1111

1212
# Fail fast if the specs submodule doesn't exist
1313
ifeq (,$(SPECS))
@@ -31,10 +31,12 @@ endif
3131
# Input during CI using `make [TARGET] PROVIDER_VERSION=""` or by setting a PROVIDER_VERSION environment variable
3232
# Local builds will just used this fixed default version unless specified
3333
PROVIDER_VERSION ?= 2.0.0-alpha.0+dev
34-
# Ensure the leading "v" is removed - use this normalised version everywhere rather than the raw input to ensure consistency.
35-
# These variables are lazy (no `:`) so they're not calculated until after the dependency is installed
36-
VERSION_GENERIC = $(shell bin/pulumictl convert-version -l generic -v "$(PROVIDER_VERSION)")
37-
VERSION_FLAGS = -ldflags "-X github.com/pulumi/pulumi-azure-native/v2/provider/pkg/version.Version=${VERSION_GENERIC}"
34+
# Check version doesn't start with a "v" - this is a common mistake
35+
ifeq ($(shell echo $(PROVIDER_VERSION) | cut -c1),v)
36+
$(error PROVIDER_VERSION should not start with a "v")
37+
endif
38+
39+
VERSION_FLAGS = -ldflags "-X github.com/pulumi/pulumi-azure-native/v2/provider/pkg/version.Version=${PROVIDER_VERSION}"
3840
MAJOR_VERSION = $(shell echo $(PROVIDER_VERSION) | cut -d. -f1)
3941
PREVIOUS_MAJOR_VERSION = $(shell echo $(MAJOR_VERSION)-1 | bc)
4042
NEXT_MAJOR_VERSION = $(shell echo $(MAJOR_VERSION)+1 | bc)
@@ -48,7 +50,7 @@ _ := $(shell mkdir -p .make)
4850
.PHONY: default ensure dist
4951
default: provider build_sdks
5052
ensure: bin/pulumictl .make/provider_mod_download
51-
dist: dist/pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt dist/docs-schema.json
53+
dist: dist/pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt dist/docs-schema.json
5254

5355
# Binaries
5456
.PHONY: codegen provider
@@ -168,7 +170,7 @@ test_nodejs: provider install_nodejs_sdk
168170

169171
.PHONY: schema_squeeze
170172
schema_squeeze: bin/$(CODEGEN)
171-
bin/$(CODEGEN) squeeze $(VERSION_GENERIC)
173+
bin/$(CODEGEN) squeeze $(PROVIDER_VERSION)
172174

173175
.PHONY: explode_schema
174176
explode_schema: dist/docs-schema.json
@@ -218,20 +220,20 @@ dist/docs-schema.json: bin/schema-full.json
218220
mkdir -p dist
219221
yarn schema implode --cwd bin/schema --outFile dist/docs-schema.json
220222

221-
bin/$(CODEGEN): bin/pulumictl .make/prebuild .make/provider_mod_download provider/cmd/$(CODEGEN)/* $(PROVIDER_PKG)
223+
bin/$(CODEGEN): .make/prebuild .make/provider_mod_download provider/cmd/$(CODEGEN)/* $(PROVIDER_PKG)
222224
cd provider && go build -o $(WORKING_DIR)/bin/$(CODEGEN) $(VERSION_FLAGS) $(PROJECT)/v2/provider/cmd/$(CODEGEN)
223225

224226
# Writes schema-full.json and metadata-compact.json to bin/
225227
# Also re-calculates files in versions/ at same time
226228
bin/schema-full.json bin/metadata-compact.json &: bin/$(CODEGEN) $(SPECS) versions/az-provider-list.json versions/v${PREVIOUS_MAJOR_VERSION}-lock.json versions/v${MAJOR_VERSION}-config.yaml versions/v${MAJOR_VERSION}-spec.yaml versions/v${MAJOR_VERSION}-removed-resources.json versions/v${NEXT_MAJOR_VERSION}-removed-resources.json
227-
bin/$(CODEGEN) schema $(VERSION_GENERIC)
229+
bin/$(CODEGEN) schema $(PROVIDER_VERSION)
228230

229231
# Docs schema - treat as phony becasuse it's committed so we always need to rebuild it.
230232
.PHONY: provider/cmd/pulumi-resource-azure-native/schema.json
231233
provider/cmd/pulumi-resource-azure-native/schema.json: bin/$(CODEGEN) $(SPECS) versions/v${PREVIOUS_MAJOR_VERSION}-lock.json versions/v${MAJOR_VERSION}-config.yaml versions/v${MAJOR_VERSION}-removed-resources.json
232-
bin/$(CODEGEN) docs $(VERSION_GENERIC)
234+
bin/$(CODEGEN) docs $(PROVIDER_VERSION)
233235

234-
bin/$(LOCAL_PROVIDER_FILENAME): bin/pulumictl .make/prebuild .make/provider_mod_download provider/cmd/$(PROVIDER)/*.go .make/provider_prebuild $(PROVIDER_PKG)
236+
bin/$(LOCAL_PROVIDER_FILENAME): .make/prebuild .make/provider_mod_download provider/cmd/$(PROVIDER)/*.go .make/provider_prebuild $(PROVIDER_PKG)
235237
cd provider && \
236238
CGO_ENABLED=0 go build -o $(WORKING_DIR)/bin/$(LOCAL_PROVIDER_FILENAME) $(VERSION_FLAGS) $(PROJECT)/v2/provider/cmd/$(PROVIDER)
237239

@@ -240,7 +242,7 @@ bin/linux-arm64/$(PROVIDER): TARGET := linux-arm64
240242
bin/darwin-amd64/$(PROVIDER): TARGET := darwin-amd64
241243
bin/darwin-arm64/$(PROVIDER): TARGET := darwin-arm64
242244
bin/windows-amd64/$(PROVIDER).exe: TARGET := windows-amd64
243-
bin/%/$(PROVIDER) bin/%/$(PROVIDER).exe: bin/pulumictl .make/provider_mod_download .make/prebuild provider/cmd/$(PROVIDER)/*.go .make/provider_prebuild $(PROVIDER_PKG)
245+
bin/%/$(PROVIDER) bin/%/$(PROVIDER).exe: .make/provider_mod_download .make/prebuild provider/cmd/$(PROVIDER)/*.go .make/provider_prebuild $(PROVIDER_PKG)
244246
@# check the TARGET is set
245247
test $(TARGET)
246248
cd provider && \
@@ -258,12 +260,12 @@ dist/$(PROVIDER)-v$(PROVIDER_VERSION)-%.tar.gz:
258260
@# $< is the last dependency (the binary path from above)
259261
tar --gzip -cf $@ README.md LICENSE -C $$(dirname $<) .
260262

261-
dist/pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-amd64.tar.gz
262-
dist/pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-arm64.tar.gz
263-
dist/pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-amd64.tar.gz
264-
dist/pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-arm64.tar.gz
265-
dist/pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-windows-amd64.tar.gz
266-
cd dist && shasum *.tar.gz > pulumi-azure-native_$(VERSION_GENERIC)_checksums.txt
263+
dist/pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-amd64.tar.gz
264+
dist/pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-arm64.tar.gz
265+
dist/pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-amd64.tar.gz
266+
dist/pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-arm64.tar.gz
267+
dist/pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt: dist/$(PROVIDER)-v$(PROVIDER_VERSION)-windows-amd64.tar.gz
268+
cd dist && shasum *.tar.gz > pulumi-azure-native_$(PROVIDER_VERSION)_checksums.txt
267269

268270
# --------- Sentinel targets --------- #
269271

@@ -289,14 +291,14 @@ endef
289291
export FAKE_MODULE
290292

291293
# We use the docs schema for java but don't depend on it because it changes on every generation
292-
.make/generate_java: bin/pulumictl bin/pulumi-java-gen
294+
.make/generate_java: bin/pulumi-java-gen
293295
@mkdir -p sdk/java
294296
rm -rf $$(find sdk/java -mindepth 1 -maxdepth 1)
295297
bin/$(JAVA_GEN) generate --schema provider/cmd/$(PROVIDER)/schema.json --out sdk/java --build gradle-nexus
296298
echo "$$FAKE_MODULE" | sed 's/fake_module/fake_java_module/g' > sdk/java/go.mod
297299
@touch $@
298300

299-
.make/generate_nodejs: bin/pulumictl .pulumi/bin/pulumi bin/schema-full.json
301+
.make/generate_nodejs: .pulumi/bin/pulumi bin/schema-full.json
300302
mkdir -p sdk/nodejs
301303
rm -rf $$(find sdk/nodejs -mindepth 1 -maxdepth 1 ! -name "go.mod")
302304
.pulumi/bin/pulumi package gen-sdk bin/schema-full.json --language nodejs
@@ -305,29 +307,30 @@ export FAKE_MODULE
305307
rm sdk/nodejs/tsconfig.json.bak
306308
@touch $@
307309

308-
.make/generate_python: bin/pulumictl .pulumi/bin/pulumi bin/schema-full.json
310+
.make/generate_python: .pulumi/bin/pulumi bin/schema-full.json
309311
mkdir -p sdk/python
310312
rm -rf $$(find sdk/python -mindepth 1 -maxdepth 1 ! -name "go.mod")
311313
.pulumi/bin/pulumi package gen-sdk bin/schema-full.json --language python
312314
echo "$$FAKE_MODULE" | sed 's/fake_module/fake_python_module/g' > sdk/python/go.mod
313315
cp README.md sdk/python
314316
@touch $@
315317

316-
.make/generate_dotnet: bin/pulumictl .pulumi/bin/pulumi bin/schema-full.json
318+
.make/generate_dotnet: .pulumi/bin/pulumi bin/schema-full.json
317319
mkdir -p sdk/dotnet
318320
rm -rf $$(find sdk/dotnet -mindepth 1 -maxdepth 1 ! -name "go.mod")
319321
.pulumi/bin/pulumi package gen-sdk bin/schema-full.json --language dotnet
320322
echo "$$FAKE_MODULE" | sed 's/fake_module/fake_dotnet_module/g' > sdk/dotnet/go.mod
321323
sed -i.bak -e "s/<\/Nullable>/<\/Nullable>\n <UseSharedCompilation>false<\/UseSharedCompilation>/g" sdk/dotnet/Pulumi.AzureNative.csproj
322324
rm sdk/dotnet/Pulumi.AzureNative.csproj.bak
325+
echo "azure-native\n$(PROVIDER_VERSION)" > sdk/dotnet/version.txt
323326
@touch $@
324327

325-
.make/generate_go_local: bin/pulumictl bin/$(CODEGEN) bin/schema-full.json
328+
.make/generate_go_local: bin/$(CODEGEN) bin/schema-full.json
326329
@mkdir -p sdk/pulumi-azure-native-sdk
327330
@# Unmark this is as an up-to-date local build
328331
rm -f .make/prepublish_go
329332
rm -rf $$(find sdk/pulumi-azure-native-sdk -mindepth 1 -maxdepth 1 ! -name ".git")
330-
bin/$(CODEGEN) go $(VERSION_GENERIC)
333+
bin/$(CODEGEN) go $(PROVIDER_VERSION)
331334
@# Tidy up all go.mod files
332335
find sdk/pulumi-azure-native-sdk -type d -maxdepth 1 -exec sh -c "cd \"{}\" && go mod tidy" \;
333336
@touch $@
@@ -352,39 +355,30 @@ export FAKE_MODULE
352355
yarn install --cwd sdk/nodejs
353356
@touch $@
354357

355-
.make/build_nodejs: VERSION_JS = $(shell bin/pulumictl convert-version -l javascript -v "$(VERSION_GENERIC)")
356-
.make/build_nodejs: bin/pulumictl .make/nodejs_yarn_install
358+
.make/build_nodejs: .make/nodejs_yarn_install
357359
cd sdk/nodejs/ && \
358360
NODE_OPTIONS=--max-old-space-size=12288 yarn run tsc --diagnostics --incremental && \
359-
cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/ && \
360-
mkdir -p bin/scripts && \
361-
sed -i.bak -e "s/\$${VERSION}/$(VERSION_JS)/g" ./bin/package.json
361+
cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/
362362
@touch $@
363363

364-
.make/build_python: VERSION_PYTHON = $(shell bin/pulumictl convert-version -l python -v "$(VERSION_GENERIC)")
365-
.make/build_python: bin/pulumictl .make/generate_python
364+
.make/build_python: .make/generate_python
366365
cd sdk/python && \
367366
git clean -fxd && \
368367
rm -rf ./bin/ ../python.bin/ && cp -R . ../python.bin && mv ../python.bin ./bin && \
369-
sed -i.bak -e 's/^ version = .*/ version = "$(VERSION_PYTHON)"/g' ./bin/pyproject.toml && \
370-
rm ./bin/pyproject.toml.bak && \
371368
rm ./bin/go.mod && \
372369
python3 -m venv venv && \
373370
./venv/bin/python -m pip install build && \
374371
cd ./bin && \
375372
../venv/bin/python -m build .
376373
@touch $@
377374

378-
.make/build_dotnet: VERSION_DOTNET = $(shell bin/pulumictl convert-version -l dotnet -v "$(PROVIDER_VERSION)")
379-
.make/build_dotnet: bin/pulumictl .make/generate_dotnet
380-
cd sdk/dotnet && \
381-
echo "azure-native\n$(VERSION_DOTNET)" >version.txt && \
382-
dotnet build /p:Version=$(VERSION_DOTNET)
375+
.make/build_dotnet: .make/generate_dotnet
376+
cd sdk/dotnet && dotnet build
383377
@touch $@
384378

385-
.make/build_java: bin/pulumictl .make/generate_java
379+
.make/build_java: .make/generate_java
386380
cd sdk/java/ && \
387-
gradle --console=plain -Pversion=$(VERSION_GENERIC) build
381+
gradle --console=plain -Pversion=$(PROVIDER_VERSION) build
388382
@touch $@
389383

390384
.make/build_go: .make/generate_go_local
@@ -405,6 +399,6 @@ export FAKE_MODULE
405399
; fi
406400
@touch $@
407401

408-
.make/install_provider: bin/pulumictl .make/provider_mod_download provider/cmd/$(PROVIDER)/* $(PROVIDER_PKG)
402+
.make/install_provider: .make/provider_mod_download provider/cmd/$(PROVIDER)/* $(PROVIDER_PKG)
409403
cd provider && go install $(VERSION_FLAGS) $(PROJECT)/provider/cmd/$(PROVIDER)
410404
@touch $@

0 commit comments

Comments
 (0)