@@ -7,7 +7,7 @@ CODEGEN := pulumi-gen-azure-native
7
7
WORKING_DIR := $(shell pwd)
8
8
9
9
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
11
11
12
12
# Fail fast if the specs submodule doesn't exist
13
13
ifeq (,$(SPECS ) )
@@ -31,10 +31,12 @@ endif
31
31
# Input during CI using `make [TARGET] PROVIDER_VERSION=""` or by setting a PROVIDER_VERSION environment variable
32
32
# Local builds will just used this fixed default version unless specified
33
33
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}"
38
40
MAJOR_VERSION = $(shell echo $(PROVIDER_VERSION ) | cut -d. -f1)
39
41
PREVIOUS_MAJOR_VERSION = $(shell echo $(MAJOR_VERSION ) -1 | bc)
40
42
NEXT_MAJOR_VERSION = $(shell echo $(MAJOR_VERSION ) +1 | bc)
@@ -48,7 +50,7 @@ _ := $(shell mkdir -p .make)
48
50
.PHONY : default ensure dist
49
51
default : provider build_sdks
50
52
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
52
54
53
55
# Binaries
54
56
.PHONY : codegen provider
@@ -168,7 +170,7 @@ test_nodejs: provider install_nodejs_sdk
168
170
169
171
.PHONY : schema_squeeze
170
172
schema_squeeze : bin/$(CODEGEN )
171
- bin/$(CODEGEN ) squeeze $(VERSION_GENERIC )
173
+ bin/$(CODEGEN ) squeeze $(PROVIDER_VERSION )
172
174
173
175
.PHONY : explode_schema
174
176
explode_schema : dist/docs-schema.json
@@ -218,20 +220,20 @@ dist/docs-schema.json: bin/schema-full.json
218
220
mkdir -p dist
219
221
yarn schema implode --cwd bin/schema --outFile dist/docs-schema.json
220
222
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 )
222
224
cd provider && go build -o $(WORKING_DIR ) /bin/$(CODEGEN ) $(VERSION_FLAGS ) $(PROJECT ) /v2/provider/cmd/$(CODEGEN )
223
225
224
226
# Writes schema-full.json and metadata-compact.json to bin/
225
227
# Also re-calculates files in versions/ at same time
226
228
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 )
228
230
229
231
# Docs schema - treat as phony becasuse it's committed so we always need to rebuild it.
230
232
.PHONY : provider/cmd/pulumi-resource-azure-native/schema.json
231
233
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 )
233
235
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 )
235
237
cd provider && \
236
238
CGO_ENABLED=0 go build -o $(WORKING_DIR ) /bin/$(LOCAL_PROVIDER_FILENAME ) $(VERSION_FLAGS ) $(PROJECT ) /v2/provider/cmd/$(PROVIDER )
237
239
@@ -240,7 +242,7 @@ bin/linux-arm64/$(PROVIDER): TARGET := linux-arm64
240
242
bin/darwin-amd64/$(PROVIDER ) : TARGET := darwin-amd64
241
243
bin/darwin-arm64/$(PROVIDER ) : TARGET := darwin-arm64
242
244
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 )
244
246
@# check the TARGET is set
245
247
test $(TARGET )
246
248
cd provider && \
@@ -258,12 +260,12 @@ dist/$(PROVIDER)-v$(PROVIDER_VERSION)-%.tar.gz:
258
260
@# $< is the last dependency (the binary path from above)
259
261
tar --gzip -cf $@ README.md LICENSE -C $$(dirname $< ) .
260
262
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
267
269
268
270
# --------- Sentinel targets --------- #
269
271
@@ -289,14 +291,14 @@ endef
289
291
export FAKE_MODULE
290
292
291
293
# 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
293
295
@mkdir -p sdk/java
294
296
rm -rf $$(find sdk/java -mindepth 1 -maxdepth 1 )
295
297
bin/$(JAVA_GEN ) generate --schema provider/cmd/$(PROVIDER ) /schema.json --out sdk/java --build gradle-nexus
296
298
echo " $$ FAKE_MODULE" | sed ' s/fake_module/fake_java_module/g' > sdk/java/go.mod
297
299
@touch $@
298
300
299
- .make/generate_nodejs : bin/pulumictl .pulumi/bin/pulumi bin/schema-full.json
301
+ .make/generate_nodejs : .pulumi/bin/pulumi bin/schema-full.json
300
302
mkdir -p sdk/nodejs
301
303
rm -rf $$(find sdk/nodejs -mindepth 1 -maxdepth 1 ! -name "go.mod" )
302
304
.pulumi/bin/pulumi package gen-sdk bin/schema-full.json --language nodejs
@@ -305,29 +307,30 @@ export FAKE_MODULE
305
307
rm sdk/nodejs/tsconfig.json.bak
306
308
@touch $@
307
309
308
- .make/generate_python : bin/pulumictl .pulumi/bin/pulumi bin/schema-full.json
310
+ .make/generate_python : .pulumi/bin/pulumi bin/schema-full.json
309
311
mkdir -p sdk/python
310
312
rm -rf $$(find sdk/python -mindepth 1 -maxdepth 1 ! -name "go.mod" )
311
313
.pulumi/bin/pulumi package gen-sdk bin/schema-full.json --language python
312
314
echo " $$ FAKE_MODULE" | sed ' s/fake_module/fake_python_module/g' > sdk/python/go.mod
313
315
cp README.md sdk/python
314
316
@touch $@
315
317
316
- .make/generate_dotnet : bin/pulumictl .pulumi/bin/pulumi bin/schema-full.json
318
+ .make/generate_dotnet : .pulumi/bin/pulumi bin/schema-full.json
317
319
mkdir -p sdk/dotnet
318
320
rm -rf $$(find sdk/dotnet -mindepth 1 -maxdepth 1 ! -name "go.mod" )
319
321
.pulumi/bin/pulumi package gen-sdk bin/schema-full.json --language dotnet
320
322
echo " $$ FAKE_MODULE" | sed ' s/fake_module/fake_dotnet_module/g' > sdk/dotnet/go.mod
321
323
sed -i.bak -e " s/<\/Nullable>/<\/Nullable>\n <UseSharedCompilation>false<\/UseSharedCompilation>/g" sdk/dotnet/Pulumi.AzureNative.csproj
322
324
rm sdk/dotnet/Pulumi.AzureNative.csproj.bak
325
+ echo " azure-native\n$( PROVIDER_VERSION) " > sdk/dotnet/version.txt
323
326
@touch $@
324
327
325
- .make/generate_go_local : bin/pulumictl bin/ $(CODEGEN ) bin/schema-full.json
328
+ .make/generate_go_local : bin/$(CODEGEN ) bin/schema-full.json
326
329
@mkdir -p sdk/pulumi-azure-native-sdk
327
330
@# Unmark this is as an up-to-date local build
328
331
rm -f .make/prepublish_go
329
332
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 )
331
334
@# Tidy up all go.mod files
332
335
find sdk/pulumi-azure-native-sdk -type d -maxdepth 1 -exec sh -c " cd \" {}\" && go mod tidy" \;
333
336
@touch $@
@@ -352,39 +355,30 @@ export FAKE_MODULE
352
355
yarn install --cwd sdk/nodejs
353
356
@touch $@
354
357
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
357
359
cd sdk/nodejs/ && \
358
360
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/
362
362
@touch $@
363
363
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
366
365
cd sdk/python && \
367
366
git clean -fxd && \
368
367
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 && \
371
368
rm ./bin/go.mod && \
372
369
python3 -m venv venv && \
373
370
./venv/bin/python -m pip install build && \
374
371
cd ./bin && \
375
372
../venv/bin/python -m build .
376
373
@touch $@
377
374
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
383
377
@touch $@
384
378
385
- .make/build_java : bin/pulumictl .make/generate_java
379
+ .make/build_java : .make/generate_java
386
380
cd sdk/java/ && \
387
- gradle --console=plain -Pversion=$(VERSION_GENERIC ) build
381
+ gradle --console=plain -Pversion=$(PROVIDER_VERSION ) build
388
382
@touch $@
389
383
390
384
.make/build_go : .make/generate_go_local
@@ -405,6 +399,6 @@ export FAKE_MODULE
405
399
; fi
406
400
@touch $@
407
401
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 )
409
403
cd provider && go install $(VERSION_FLAGS ) $(PROJECT ) /provider/cmd/$(PROVIDER )
410
404
@touch $@
0 commit comments