Commit | Line | Data |
---|---|---|
fd0f20e1 MW |
1 | ### -*-makefile-*- |
2 | ||
3 | all: | |
4 | clean:: | |
5 | .PHONY: all clean | |
6 | .SECONDEXPANSION: #sorry | |
7 | ||
8 | confdir = /etc/schroot/chroot.d | |
9 | ||
10 | DISTS = stretch buster sid | |
11 | ||
12 | MYARCH = $(shell dpkg --print-architecture) | |
13 | OTHERARCHS = $(shell dpkg --print-foreign-architectures) | |
14 | TOOLSARCH = $(MYARCH) | |
15 | NATIVE_ARCHS = $(MYARCH) $(OTHERARCHS) | |
16 | FOREIGN_ARCHS = | |
17 | ARCHS = $(NATIVE_ARCHS) $(FOREIGN_ARCHS) | |
18 | ||
19 | cross = $(foreach i,$1, $(foreach j,$2, $i-$j)) | |
20 | NATIVE_CHROOTS = $(call cross,$(DISTS),$(NATIVE_ARCHS)) | |
21 | FOREIGN_CHROOTS = $(call cross,$(DISTS),$(FOREIGN_ARCHS)) | |
22 | CHROOTS = $(NATIVE_CHROOTS) $(FOREIGN_CHROOTS) | |
23 | ||
24 | chroot-dist = $(patsubst %/,%,$(dir $(subst -,/,$1))) | |
25 | chroot-arch = $(notdir $(subst -,/,$1)) | |
26 | ||
27 | native-chroot-p = $(findstring $(call chroot-arch,$1), $(NATIVE_ARCHS)) | |
28 | ||
29 | qemuarch/armel = i386 | |
30 | qemuarch/armhf = i386 | |
31 | qemuarch/arm64 = amd64 | |
32 | chroot-toolsarch = $(TOOLSARCH) | |
33 | chroot-qemuarch = $(qemuarch/$(call chroot-arch,$1)) | |
34 | chroot-deps = $(if $(call native-chroot-p,$2),,$(addprefix $1/$(call chroot-dist,$2)-,\ | |
35 | $(sort $(call chroot-toolsarch,$2) $(call chroot-qemuarch,$2)))) | |
36 | ||
37 | VG = vg-$(shell hostname) | |
38 | mkbuildchroot_OPTS = -a$(TOOLSARCH) -f -v$(VG) | |
39 | mkchrootconf_OPTS = -v$(VG) | |
40 | install-cross-tools_OPTS = | |
41 | update-cross-tools_OPTS = | |
42 | ||
43 | -include local.mk | |
44 | ||
45 | all: config | |
46 | CONFIG = $(confdir)/sbuild | |
47 | config:; locking -w Makefile make $(CONFIG) | |
48 | $(CONFIG): Makefile $(wildcard local.mk) mkchrootconf | |
49 | ./mkchrootconf $(mkchrootconf_OPTS) $(CHROOTS) >$@.new && \ | |
50 | mv $@.new $@ | |
51 | clean::; rm -f $(CONFIG) | |
52 | .PHONY: config | |
53 | ||
54 | UPDATE_CROSS = $(addprefix update-cross/, $(NATIVE_CHROOTS)) | |
55 | update-cross: $(UPDATE_CROSS) | |
56 | $(UPDATE_CROSS): update-cross/%: update/% | |
57 | ./update-cross-tools $(update-cross-tools_OPTS) \ | |
58 | -a$(call chroot-arch,$*) $(call chroot-dist,$*) | |
59 | .PHONY: update-cross $(UPDATE_CROSS) | |
60 | ||
61 | UPDATE = $(addprefix update/, $(CHROOTS)) | |
62 | update: $(UPDATE) | |
63 | $(UPDATE): update/%: chroot-stamps/% $$(call chroot-deps,update-cross,$$*) | |
64 | $(if $(call native-chroot-p,$*),,\ | |
65 | ./install-cross-tools $(install-cross-tools_OPTS) \ | |
66 | -a$(call chroot-toolsarch,$*) \ | |
67 | -q$(call chroot-qemuarch,$*) \ | |
68 | $*) | |
69 | schroot -uroot -csource:$* -- apt-get update | |
70 | schroot -uroot -csource:$* -- apt-get -y dist-upgrade | |
71 | schroot -uroot -csource:$* -- apt-get -y autoremove | |
72 | schroot -uroot -csource:$* -- apt-get -y clean | |
73 | .PHONY: update $(UPDATE) | |
74 | ||
75 | all: create | |
76 | CREATESTAMPS = $(addprefix chroot-stamps/, $(CHROOTS)) | |
77 | create: $(CREATESTAMPS) | |
78 | $(CREATESTAMPS): chroot-stamps/%: $$(call chroot-deps,chroot-stamps,$$*) | |
79 | make config | |
80 | mkdir -p $(dir $@) | |
81 | ./mkbuildchroot $(mkbuildchroot_OPTS) \ | |
82 | $(if $(call native-chroot-p,$*),,\ | |
83 | -Q -a$(call chroot-toolsarch,$*) \ | |
84 | -q$(call chroot-qemuarch,$*)) \ | |
85 | $* | |
86 | echo done >$@ | |
87 | clean::; rm -f chroot-stamps/* | |
88 | .PHONY: create | |
89 | ||
90 | all: prune | |
91 | PRUNESTAMPS = $(patsubst chroot-stamps/%,prune/%, \ | |
92 | $(filter-out $(CREATESTAMPS),$(wildcard chroot-stamps/*))) | |
93 | prune: $(PRUNESTAMPS) | |
94 | $(PRUNESTAMPS): prune/%: | |
95 | lvremove -f $(VG)/$* | |
96 | rm -f chroot-stamps/$* | |
97 | .PHONY: prune $(PRUNESTAMPS) |