forked from tylert/packer-build
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
70 lines (58 loc) · 1.77 KB
/
Makefile
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
SHELL := /usr/bin/env bash
BUILD_DIR ?= build
BUILDER ?= vbox # vbox or qemu
BUILD_OPTS ?= # leave this undefined unless needed
OS_NAME ?= debian
OS_VERSION ?= 10_buster
PACKER_CACHE_DIR ?= packer_cache
PYTHON ?= python3
TEMPLATE ?= base-uefi
TEMPLATE_DIR ?= template
VENV_DIR ?= .venv
.SUFFIXES:
.SUFFIXES: .yaml .json .iso .preseed .vagrant .ova .box
.PRECIOUS: .yaml .preseed .vagrant
.PHONY: all
all:
ACTIVATE_SCRIPT = $(VENV_DIR)/bin/activate
.PHONY: venv
venv: $(ACTIVATE_SCRIPT)
$(ACTIVATE_SCRIPT): requirements.txt
@test -d $(VENV_DIR) || $(PYTHON) -m venv $(VENV_DIR) && \
source $(ACTIVATE_SCRIPT) && \
pip install --upgrade --requirement requirements.txt && \
touch $(ACTIVATE_SCRIPT)
.PHONY: venv_upgrade
venv_upgrade: venv
@source $(ACTIVATE_SCRIPT) && \
pip install --upgrade --requirement requirements_bare.txt && \
pip freeze > requirements.txt && \
touch $(ACTIVATE_SCRIPT)
# Don't depend on source files, always regenerate templates!!!
$(TEMPLATE_DIR): venv
@source $(ACTIVATE_SCRIPT) && \
$(error $(OS_NAME) $(OS_VERSION) $(TEMPLATE))
.PHONY: build
build: $(TEMPLATE_DIR)
@source $(ACTIVATE_SCRIPT) && \
CHECKPOINT_DISABLE=1 PACKER_CACHE_DIR=$(PACKER_CACHE_DIR) \
packer build $(BUILD_OPTS) -only=$(BUILDER) -force $(TEMPLATE_DIR)/$(OS_NAME)/$(OS_VERSION)/$(TEMPLATE).json
# PACKER_CACHE_DIR=packer_cache
# PACKER_CONFIG="${HOME}/.packerconfig"
# PACKER_LOG=1
# PACKER_LOG_PATH=vbox.log
# PACKER_NO_COLOR=0
# PACKER_PLUGIN_MAX_PORT=25000
# PACKER_PLUGIN_MIN_PORT=10000
# PACKER_TMP_DIR=/tmp/packer.d
# TMPDIR=/tmp
.PHONY: clean
clean:
@rm -rf $(TEMPLATE_DIR) $(BUILD_DIR) && \
rm -rf Vagrantfile .vagrant
.PHONY: reallyclean
reallyclean: clean
@rm -rf $(PACKER_CACHE_DIR)
.PHONY: reallyreallyclean
reallyreallyclean: reallyclean
@rm -rf $(VENV_DIR)