File: Makefile

package info (click to toggle)
image-garden 0.4.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 564 kB
  • sloc: sh: 515; python: 305; makefile: 189
file content (121 lines) | stat: -rw-r--r-- 4,335 bytes parent folder | download
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
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Zygmunt Krynicki
VERSION = 0.4.2
DESTDIR ?=

prefix ?= /usr/local
exec_prefix ?= $(prefix)

bindir ?= $(exec_prefix)/bin
datarootdir ?= $(prefix)/share
datadir ?= $(datarootdir)
includedir ?= $(prefix)/include
mandir ?= $(datarootdir)/man
man1dir ?= $(mandir)/man1

.PHONY: all
all:: image-garden.mk

.PHONY: clean
clean::
	rm -f image-garden.mk
	rm -f data/050-*.gen.mk

.PHONY: install
install:: README.md image-garden image-garden.mk image-garden.1 $(if $(DESTDIR),| $(DESTDIR))
	install -m 755 -d $(DESTDIR)$(bindir)
	install -m 755 -t $(DESTDIR)$(bindir) image-garden
	sed -i \
		-e 's,@PREFIX@,$(prefix),' \
		-e 's,@VERSION@,$(VERSION),' \
		$(DESTDIR)$(bindir)/image-garden
	install -m 755 -d $(DESTDIR)$(includedir)
	install -m 644 -t $(DESTDIR)$(includedir) image-garden.mk
	install -m 755 -d $(DESTDIR)$(datarootdir)
	install -m 755 -d $(DESTDIR)$(datarootdir)/doc
	install -m 755 -d $(DESTDIR)$(datarootdir)/doc/image-garden
	install -m 644 -t $(DESTDIR)$(datarootdir)/doc/image-garden README.md NEWS NEWS.snappy NEWS.docker NEWS.license NEWS.snappy.license NEWS.docker.license
	install -m 755 -d $(DESTDIR)$(man1dir)
	install -m 644 -t $(DESTDIR)$(man1dir) image-garden.1

image-garden.mk: $(wildcard mk/*.mk) $(foreach n,$(wildcard data/*.ini),data/050-$(basename $(notdir $n)).gen.mk)
	cat $(patsubst mk/050-%.gen.mk,data/050-%.gen.mk,$(sort $(patsubst data/%,mk/%,$^))) >$@
	touch --reference=`stat $^ -c '%Y %n' | sort -nr | cut -d ' ' -f 2 | head -n 1` $@

ifneq (,$(DESTDIR))
$(DESTDIR):
	mkdir -p $(DESTDIR)
endif

data/050-%.gen.mk: rulegen.py data/%.ini
	./$< $(wordlist 2,$(words $^),$^) >$@

.PHONY: check check-sh check-py
check: check-sh check-py

FILES_SH = $(wildcard image-garden \
	spread-chooser/spread-chooser \
	snap/hooks/configure snap/hooks/install snap/hooks/post-refresh \
	qemu-stubs/qemu-system-x86_64 qemu-stubs/qemu-system-aarch64 qemu-stubs/qemu-system-riscv64 qemu-stubs/qemu-system-s390x qemu-stubs/qemu-system-ppc64 qemu-stubs/qemu-component-symlinks qemu-stubs/qemu-var-tmp)

FILES_PY = rulegen.py

check-sh: SHELLCHECK ?= $(or $(shell command -v shellcheck),$(error program shellcheck is required))
check-sh: $(FILES_SH)
	$(SHELLCHECK) $^

check-py: MYPY ?= $(or $(shell command -v mypy),$(error program mypy is required))
check-py: MYPY_FLAGS ?= --strict
check-py: $(FILES_PY)
	$(MYPY) $(MYPY_FLAGS) $^

.PHONY: fmt fmt-sh fmt-py
fmt: fmt-sh fmt-py

fmt-sh: SHFMT ?= $(or $(shell command -v shfmt),$(error program shfmt is required))
fmt-sh: $(FILES_SH)
	$(SHFMT) -w $^

fmt-py: BLACK ?= $(or $(shell command -v black),$(error program black is required))
fmt-py: $(FILES_PY)
	$(BLACK) $^

dist: image-garden-$(VERSION).tar.gz
image-garden-$(VERSION).tar.gz: Makefile image-garden image-garden.1 LICENSE LICENSES/Apache-2.0.txt REUSE.toml NEWS NEWS.snappy NEWS.docker NEWS.license NEWS.snappy.license NEWS.docker.license README.md rulegen.py $(wildcard data/*.ini) data/README.md
	tar --transform=s,^,image-garden-$(VERSION)/, -zcf $@ $^

public/index.html: image-garden.1
	mandoc -O style=image-garden.css -T html ./$< >$@

XDG_CACHE_HOME ?= $(HOME)/.cache

.PHONY: docker-test-smoke docker-test-all
docker-test-smoke:
	docker build -t image-garden:latest .
	docker run \
	    $(if $(wildcard /dev/kvm),--device /dev/kvm) \
	    --volume $(XDG_CACHE_HOME)/image-garden:/var/cache/image-garden \
	    --rm \
	    image-garden:latest \
	    ldd /usr/local/bin/qemu-img /usr/local/bin/qemu-system-x86_64 /usr/local/bin/qemu-system-aarch64 /usr/local/bin/qemu-system-riscv64 /usr/local/bin/qemu-system-s390x
	docker run \
	    $(if $(wildcard /dev/kvm),--device /dev/kvm) \
	    --volume $(XDG_CACHE_HOME)/image-garden:/var/cache/image-garden \
	    --rm \
	    image-garden:latest \
	    image-garden news
	docker run \
	    $(if $(wildcard /dev/kvm),--device /dev/kvm) \
	    --volume $(XDG_CACHE_HOME)/image-garden:/var/cache/image-garden \
	    --rm \
	    image-garden:latest \
	    image-garden make -C /tmp ubuntu-cloud-24.04.$(shell uname -m).run

docker-test-all:
	docker build -t image-garden:latest .
	docker run \
	    $(if $(wildcard /dev/kvm),--device /dev/kvm) \
	    --volume $(XDG_CACHE_HOME)/image-garden:/var/cache/image-garden \
	    --rm \
	    image-garden:latest \
	    image-garden make -C /tmp all -k