forked from scality/metalk8s
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
156 lines (130 loc) · 6.27 KB
/
Makefile
File metadata and controls
156 lines (130 loc) · 6.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
.POSIX:
# Using this variable, on can run shell commands or scripts inside a `make
# shell` environment easily.
# The following values are supported:
# - `-`, in which case `bash` will be invoked as-is, and a script could be
# passed on `stdin` (`echo "echo 123" | make shell C=-`). Unlike the
# invocation without `C` being set, the exit code will be retained.
# - A file, in which case `bash $C` will be invoked.
# - Any other string, which will be passed verbatim to `bash -c "$C"`.
C=
MAKEFLAGS += -r
.DEFAULT_GOAL := default
.DELETE_ON_ERROR:
.SUFFIXES:
default: help
.PHONY: default
VIRTUALENV_SRC = https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz
VIRTUALENV_SRC_SHA256SUM = ca07b4c0b54e14a91af9f34d0919790b016923d157afda5efdde55c96718f752
KUBECTL_VERSION = 1.11.3
KUBECTL_BIN_SHA256SUM.linux = 0d4c70484e90d4310f03f997b4432e0a97a7f5b5be5c31d281f3d05919f8b46c
KUBECTL_BIN_SHA256SUM.darwin = cf1feeac2fdedfb069131e7d62735b99b49ec43bf0d7565a30379c35056906c4
HELM_VERSION = 2.9.1
HELM_SRC_SHA256SUM.linux = 56ae2d5d08c68d6e7400d462d6ed10c929effac929fedce18d2636a9b4e166ba
HELM_SRC_SHA256SUM.darwin = 3bf676b6adbc4bb1a513c22c59f8d183fed278c9cb4db5808473541888f1efcb
HELM_BIN_SHA256SUM.linux = 9c9b77b0aa9c25debcadd1b538e0f42311e8c2d60a356b256b552642fcd5c6d5
HELM_BIN_SHA256SUM.darwin = bee3146de8b0cf940e74c9b1e7d3e23a1ffd8f7c4b8aad59c3e5a5152d7b818b
V=@
uname_kernel = uname -s | tr '[:upper:]' '[:lower:]'
uname_machine = uname -m | sed 's/^x86_64$$/amd64/'
UNAME_KERNEL = $(shell $(uname_kernel))$(uname_kernel:sh)
UNAME_MACHINE = $(shell $(uname_machine))$(uname_machine:sh)
KUBECTL_SRC = https://storage.googleapis.com/kubernetes-release/release/v$(KUBECTL_VERSION)/bin/$(UNAME_KERNEL)/$(UNAME_MACHINE)/kubectl
KUBECTL_BIN_SHA256SUM = $(KUBECTL_BIN_SHA256SUM.$(UNAME_KERNEL))
HELM_SRC = https://storage.googleapis.com/kubernetes-helm/helm-v$(HELM_VERSION)-$(UNAME_KERNEL)-$(UNAME_MACHINE).tar.gz
HELM_SRC_SHA256SUM = $(HELM_SRC_SHA256SUM.$(UNAME_KERNEL))
HELM_BIN_SHA256SUM = $(HELM_BIN_SHA256SUM.$(UNAME_KERNEL))
PYTHON = python
SHELL_ENV = .shell-env
SHELL_ENV_EXISTS = $(SHELL_ENV)/.exists
$(SHELL_ENV_EXISTS):
$(V)mkdir -p $(SHELL_ENV)
$(V)touch $@
VIRTUALENV_SRC_BASENAME = basename $(VIRTUALENV_SRC)
PYTHON_VIRTUALENV_SRC = $(SHELL_ENV)/$(shell $(VIRTUALENV_SRC_BASENAME))$(VIRTUALENV_SRC_BASENAME:sh)
$(PYTHON_VIRTUALENV_SRC): $(SHELL_ENV_EXISTS)
$(V)rm -f $@.tmp
$(V)$(PYTHON) hack/download.py $(VIRTUALENV_SRC) $@.tmp
$(V)echo $(VIRTUALENV_SRC_SHA256SUM) $@.tmp | $(PYTHON) hack/sha256sum.py -c > /dev/null
$(V)mv $@.tmp $@
PYTHON_VIRTUALENV_SRC_BASENAME = basename $(PYTHON_VIRTUALENV_SRC) .tar.gz
PYTHON_VIRTUALENV_SRC_DIRNAME = dirname $(PYTHON_VIRTUALENV)
PYTHON_VIRTUALENV = $(SHELL_ENV)/$(shell $(PYTHON_VIRTUALENV_SRC_BASENAME))$(PYTHON_VIRTUALENV_SRC_BASENAME:sh)
PYTHON_VIRTUALENV_EXISTS = $(PYTHON_VIRTUALENV)/.exists
$(PYTHON_VIRTUALENV_EXISTS): $(SHELL_ENV_EXISTS) $(PYTHON_VIRTUALENV_SRC)
$(V)rm -rf $(PYTHON_VIRTUALENV)
$(V)tar -xf $(PYTHON_VIRTUALENV_SRC) -C $(shell $(PYTHON_VIRTUALENV_SRC_DIRNAME))$(PYTHON_VIRTUALENV_SRC_DIRNAME:sh)
$(V)touch $@
VENV = $(SHELL_ENV)/metalk8s
VENV_BIN = $(VENV)/bin
VENV_ACTIVATE = $(VENV_BIN)/activate
VENV_EXISTS = $(VENV)/.exists
$(VENV_EXISTS): $(PYTHON_VIRTUALENV_EXISTS)
$(V)rm -rf $(VENV)
$(V)echo "Creating virtualenv..."
$(V)PYTHONPATH=$(PYTHON_VIRTUALENV) $(PYTHON) -m virtualenv $(VENV) > /dev/null
$(V)touch $@
REQUIREMENTS_INSTALLED = $(SHELL_ENV)/.requirements_installed
$(REQUIREMENTS_INSTALLED): $(VENV_EXISTS) requirements.txt
$(V)echo "Installing Python dependencies..."
$(V). $(VENV_ACTIVATE) && pip install -r requirements.txt > /dev/null
$(V)touch $@
KUBECTL_BIN = $(SHELL_ENV)/kubectl-$(KUBECTL_VERSION)
$(KUBECTL_BIN): $(SHELL_ENV_EXISTS)
$(V)rm -f $@.tmp
$(V)echo "Downloading kubectl..."
$(V)$(PYTHON) hack/download.py $(KUBECTL_SRC) $@.tmp
$(V)echo $(KUBECTL_BIN_SHA256SUM) $@.tmp | $(PYTHON) hack/sha256sum.py -c > /dev/null
$(V)chmod a+x $@.tmp
$(V)mv $@.tmp $@
KUBECTL = $(VENV_BIN)/kubectl
KUBECTL_REALPATH = $(PYTHON) hack/realpath.py $(KUBECTL_BIN)
$(KUBECTL): $(KUBECTL_BIN) $(VENV_EXISTS)
$(V)ln -sf $(shell $(KUBECTL_REALPATH))$(KUBECTL_REALPATH:sh) $@
HELM_SRC_BASENAME = basename $(HELM_SRC)
HELM_SRC_TAR = $(SHELL_ENV)/$(shell $(HELM_SRC_BASENAME))$(HELM_SRC_BASENAME:sh)
$(HELM_SRC_TAR): $(SHELL_ENV_EXISTS)
$(V)rm -f $@.tmp
$(V)echo "Downloading Helm..."
$(V)$(PYTHON) hack/download.py $(HELM_SRC) $@.tmp
$(V)echo $(HELM_SRC_SHA256SUM) $@.tmp | $(PYTHON) hack/sha256sum.py -c > /dev/null
$(V)mv $@.tmp $@
HELM_BIN = $(SHELL_ENV)/helm-$(HELM_VERSION)
$(HELM_BIN): $(HELM_SRC_TAR) $(SHELL_ENV_EXISTS)
$(V)rm -f $(SHELL_ENV)/$(UNAME_KERNEL)-$(UNAME_MACHINE)/helm
$(V)tar -xf $(HELM_SRC_TAR) -C $(SHELL_ENV) $(UNAME_KERNEL)-$(UNAME_MACHINE)/helm
$(V)echo $(HELM_BIN_SHA256SUM) $(SHELL_ENV)/$(UNAME_KERNEL)-$(UNAME_MACHINE)/helm | $(PYTHON) hack/sha256sum.py -c > /dev/null
$(V)mv $(SHELL_ENV)/$(UNAME_KERNEL)-$(UNAME_MACHINE)/helm $@
$(V)touch $@
HELM = $(VENV_BIN)/helm
HELM_REALPATH = $(PYTHON) hack/realpath.py $(HELM_BIN)
$(HELM): $(HELM_BIN) $(VENV_EXISTS)
$(V)ln -sf $(shell $(HELM_REALPATH))$(HELM_REALPATH:sh) $@
BASHRC = $(SHELL_ENV)/bashrc
$(BASHRC): $(SHELL_ENV_EXISTS) hack/shell-bashrc
$(V)rm -f $@
$(V)sed s:@VENV_ACTIVATE@:$(VENV_ACTIVATE):g < hack/shell-bashrc > $@ || (rm -f $@; exit 1)
shell: $(VENV_EXISTS) $(REQUIREMENTS_INSTALLED) $(KUBECTL) $(HELM) $(BASHRC) ## Run a shell with `ansible-playbook`, `kubectl` and `helm` pre-installed
$(V)BASH_ENV="$(BASHRC)"; export BASH_ENV; if test -z "$(C)"; then \
`# Interactive shell` \
echo "Launching MetalK8s shell environment. Run 'exit' to quit."; \
bash --rcfile $(BASHRC) ||:; \
elif test "x$(C)" = "x-"; then \
`# Semi-interactive shell, keeping exit-code` \
bash --rcfile $(BASHRC); \
elif test -e "$(C)"; then \
`# A script` \
bash --rcfile $(BASHRC) "$(C)"; \
else \
`# A command` \
bash --rcfile $(BASHRC) -c "$(C)"; \
fi
.PHONY: shell
clean-shell: ## Clean-up the `shell` environment
$(V)rm -rf $(SHELL_ENV)
.PHONY: clean-shell
help: ## Show this help message
$(V)echo "The following targets are available:"
$(V)echo
$(V)grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: help