aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Crute <mike@crute.us>2020-05-21 14:21:29 -0700
committerMike Crute <mike@crute.us>2020-05-28 17:55:26 -0700
commit1241cb5aaf519ac3d9187383e6784210afb1c9a9 (patch)
tree8f0437792cee037d7aebd44e7b66a130a10bee97
parenta36d0616bfee07e903e27a63348b7a65e2504c22 (diff)
downloadalpine-ec2-ami-1241cb5aaf519ac3d9187383e6784210afb1c9a9.tar.bz2
alpine-ec2-ami-1241cb5aaf519ac3d9187383e6784210afb1c9a9.tar.xz
alpine-ec2-ami-1241cb5aaf519ac3d9187383e6784210afb1c9a9.zip
Better model make dependencies on build files
-rw-r--r--Makefile39
1 files changed, 20 insertions, 19 deletions
diff --git a/Makefile b/Makefile
index bc9b842..3aa7464 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,9 @@
1# vim: ts=8 noet: 1# vim: ts=8 noet:
2 2
3ALL_SCRIPTS := $(wildcard scripts/*) 3NVME_SCRIPTS := $(subst scripts/,build/,$(wildcard scripts/nvme/*))
4CORE_PROFILES := $(wildcard profiles/*/*) 4CORE_PROFILES := $(wildcard profiles/*/*)
5TARGET_PROFILES := $(wildcard profiles/*.conf) 5TARGET_PROFILES := $(wildcard profiles/*.conf)
6
6PROFILE := 7PROFILE :=
7BUILD := 8BUILD :=
8BUILDS := $(BUILD) 9BUILDS := $(BUILD)
@@ -24,36 +25,36 @@ __check_defined = \
24 25
25.PHONY: amis prune release-readme clean 26.PHONY: amis prune release-readme clean
26 27
27amis: build build/packer.json build/profile/$(PROFILE) build/update-release.py build/make-amis.py 28amis: build/packer.json build/profile/$(PROFILE) build build/setup-ami $(NVME_SCRIPTS)
28 @:$(call check_defined, PROFILE, target profile name) 29 @:$(call check_defined, PROFILE, target profile name)
29 build/make-amis.py $(PROFILE) $(BUILDS) 30 build/builder make-amis $(PROFILE) $(BUILDS)
30 31
31prune: build build/prune-amis.py 32prune: build
32 @:$(call check_defined, LEVEL, pruning level) 33 @:$(call check_defined, LEVEL, pruning level)
33 @:$(call check_defined, PROFILE, target profile name) 34 @:$(call check_defined, PROFILE, target profile name)
34 build/prune-amis.py $(LEVEL) $(PROFILE) $(BUILD) 35 build/builder prune-amis $(LEVEL) $(PROFILE) $(BUILD)
35 36
36release-readme: build build/gen-release-readme.py 37release-readme: releases/README.md
38releases/README.md: build
37 @:$(call check_defined, PROFILE, target profile name) 39 @:$(call check_defined, PROFILE, target profile name)
38 @:$(call require_var, PROFILE) 40 @:$(call require_var, PROFILE)
39 build/gen-release-readme.py $(PROFILE) 41 build/builder gen-release-readme $(PROFILE)
40 42
41build: $(ALL_SCRIPTS) 43build:
44 python3 -m venv build
42 [ -d build/profile ] || mkdir -p build/profile 45 [ -d build/profile ] || mkdir -p build/profile
43 python3 -m venv build/.py3 46 build/bin/pip install -U pip pyhocon pyyaml boto3
44 build/.py3/bin/pip install pyhocon pyyaml boto3
45 (cd build; for i in $(ALL_SCRIPTS); do ln -sf ../$$i .; done)
46 47
47build/packer.json: build packer.conf 48 echo -e "#!/bin/sh\n$$(pwd)/build/bin/python scripts/builder.py \$$@" > $@
48 build/.py3/bin/pyhocon -i packer.conf -f json > build/packer.json 49 chmod +x $@
49 50
50build/profile/$(PROFILE): build build/resolve-profile.py $(CORE_PROFILES) $(TARGET_PROFILES) 51build/packer.json: packer.conf build
51 @:$(call check_defined, PROFILE, target profile name) 52 build/builder convert-packer-config
52 build/resolve-profile.py $(PROFILE)
53 53
54%.py: %.py.in build 54.PHONY: build/profile/$(PROFILE)
55 sed "s|@PYTHON@|#!`pwd`/build/.py3/bin/python|" $< > $@ 55build/profile/$(PROFILE): build $(CORE_PROFILES) $(TARGET_PROFILES)
56 chmod +x $@ 56 @:$(call check_defined, PROFILE, target profile name)
57 build/builder resolve-profile $(PROFILE)
57 58
58clean: 59clean:
59 rm -rf build 60 rm -rf build