### -*-makefile-*- all: clean:: .PHONY: all clean .SECONDEXPANSION: #sorry confdir = /etc/schroot/chroot.d DISTS = stretch buster sid MYARCH = $(shell dpkg --print-architecture) OTHERARCHS = $(shell dpkg --print-foreign-architectures) TOOLSARCH = $(MYARCH) NATIVE_ARCHS = $(MYARCH) $(OTHERARCHS) FOREIGN_ARCHS = ARCHS = $(NATIVE_ARCHS) $(FOREIGN_ARCHS) cross = $(foreach i,$1, $(foreach j,$2, $i-$j)) NATIVE_CHROOTS = $(call cross,$(DISTS),$(NATIVE_ARCHS)) FOREIGN_CHROOTS = $(call cross,$(DISTS),$(FOREIGN_ARCHS)) CHROOTS = $(NATIVE_CHROOTS) $(FOREIGN_CHROOTS) chroot-dist = $(patsubst %/,%,$(dir $(subst -,/,$1))) chroot-arch = $(notdir $(subst -,/,$1)) native-chroot-p = $(findstring $(call chroot-arch,$1), $(NATIVE_ARCHS)) qemuarch/armel = i386 qemuarch/armhf = i386 qemuarch/arm64 = amd64 chroot-toolsarch = $(TOOLSARCH) chroot-qemuarch = $(qemuarch/$(call chroot-arch,$1)) chroot-deps = $(if $(call native-chroot-p,$2),,$(addprefix $1/$(call chroot-dist,$2)-,\ $(sort $(call chroot-toolsarch,$2) $(call chroot-qemuarch,$2)))) VG = vg-$(shell hostname) mkbuildchroot_OPTS = -a$(TOOLSARCH) -f -v$(VG) mkchrootconf_OPTS = -v$(VG) install-cross-tools_OPTS = update-cross-tools_OPTS = -include local.mk all: config CONFIG = $(confdir)/sbuild config:; locking -w Makefile make $(CONFIG) $(CONFIG): Makefile $(wildcard local.mk) mkchrootconf ./mkchrootconf $(mkchrootconf_OPTS) $(CHROOTS) >$@.new && \ mv $@.new $@ clean::; rm -f $(CONFIG) .PHONY: config UPDATE_CROSS = $(addprefix update-cross/, $(NATIVE_CHROOTS)) update-cross: $(UPDATE_CROSS) $(UPDATE_CROSS): update-cross/%: update/% ./update-cross-tools $(update-cross-tools_OPTS) \ -a$(call chroot-arch,$*) $(call chroot-dist,$*) .PHONY: update-cross $(UPDATE_CROSS) UPDATE = $(addprefix update/, $(CHROOTS)) update: $(UPDATE) $(UPDATE): update/%: chroot-stamps/% $$(call chroot-deps,update-cross,$$*) $(if $(call native-chroot-p,$*),,\ ./install-cross-tools $(install-cross-tools_OPTS) \ -a$(call chroot-toolsarch,$*) \ -q$(call chroot-qemuarch,$*) \ $*) schroot -uroot -csource:$* -- apt-get update schroot -uroot -csource:$* -- apt-get -y dist-upgrade schroot -uroot -csource:$* -- apt-get -y autoremove schroot -uroot -csource:$* -- apt-get -y clean .PHONY: update $(UPDATE) all: create CREATESTAMPS = $(addprefix chroot-stamps/, $(CHROOTS)) create: $(CREATESTAMPS) $(CREATESTAMPS): chroot-stamps/%: $$(call chroot-deps,chroot-stamps,$$*) make config mkdir -p $(dir $@) ./mkbuildchroot $(mkbuildchroot_OPTS) \ $(if $(call native-chroot-p,$*),,\ -Q -a$(call chroot-toolsarch,$*) \ -q$(call chroot-qemuarch,$*)) \ $* echo done >$@ clean::; rm -f chroot-stamps/* .PHONY: create all: prune PRUNESTAMPS = $(patsubst chroot-stamps/%,prune/%, \ $(filter-out $(CREATESTAMPS),$(wildcard chroot-stamps/*))) prune: $(PRUNESTAMPS) $(PRUNESTAMPS): prune/%: lvremove -f $(VG)/$* rm -f chroot-stamps/$* .PHONY: prune $(PRUNESTAMPS)