## Volume group from which to allocate chroot volumes and snapshots.
CONFIG_VARS += VG LVPREFIX
-VG = vg-$(shell hostname)
+VG := vg-$(shell hostname)
LVPREFIX =
## Logical volume size, as an LVM option.
## Proxy setting.
CONFIG_VARS += PROXY
-PROXY := $(shell \
+PROXY = $(shell \
eval $$(apt-config $(foreach a,$(APTCONF),-cetc/apt-conf.d/$a) \
shell proxy Acquire::http::proxy); \
case $${proxy+t} in (t) echo "$$proxy" ;; (*) echo nil ;; esac)
## Host's native architecture(s).
CONFIG_VARS += MYARCH NATIVE_ARCHS
-MYARCH = $(shell dpkg --print-architecture)
-OTHERARCHS = $(shell dpkg --print-foreign-architectures)
+MYARCH := $(shell dpkg --print-architecture)
+OTHERARCHS := $(shell dpkg --print-foreign-architectures)
NATIVE_ARCHS = $(MYARCH) $(OTHERARCHS)
## Foreign (emulated) architectures to support.
sha256sum sha384sum sha512sum shred shuf sort split stat \
stdbuf sum tac tail tee test timeout tr truncate tsort tty \
unexpand uniq unlink users wc who whoami yes) \
- /usr/lib/MULTI/coreutils/ \
+ ?/usr/lib/MULTI/coreutils/ \
$(addprefix /lib/MULTI/, \
libnsl.so.* libnss_*.so.*) \
/usr/bin/gpgv \
$(addprefix /usr/bin/$a-, \
cpp gcc g++ gcov gcov-dump gcov-tool gprof \
gcc-ar gcc-nm gcc-ranlib) \
- /usr/lib/gcc-cross/$a/)
+ /usr/lib/gcc-cross/$a/ \
+ /usr/$a/include/c++)
## Local packages to be compiled and installed in chroots. Archives can be
## found in `pkg/'.
i386_QEMUHOST = $(32BIT_QEMUHOST)
amd64_QEMUHOST = $(64BIT_QEMUHOST)
+## Which distribution of Qemu to use.
+CONFIG_VARS += $(foreach d,$(DISTS),$d_QEMUDIST)
+stretch_QEMUDIST = buster
+
## Qemu architecture names. These tell us which Qemu binary to use for a
## particular Debian architecture.
CONFIG_VARS += $(foreach a,$(FOREIGN_ARCHS),$a_QEMUARCH)
## $(call squote,TXT)
##
## Single-quote TXT.
-squote = '$(subst ','\\'',$1)'
+squote = '$(subst ','\'',$1)'
+#'
## $(call chroot-dist,D-A) -> D
## $(call chroot-arch,D-A) -> A
$(call check-symlink,WARN,/etc/schroot/setup.d/$*,$(ABSLOCAL)/etc/schroot/setup.d/$*)
.PHONY: $(addprefix check-script/,$(SCHROOT_SCRIPTS))
+###--------------------------------------------------------------------------
+### Ccache setup.
+
+CCACHE_CONFIGS = $(foreach r,$(ALL_CHROOTS), \
+ /var/lib/sbuild/build/.ccache/$(LVPREFIX)$r/ccache.conf)
+all:: $(CCACHE_CONFIGS)
+$(CCACHE_CONFIGS): /var/lib/sbuild/build/.ccache/$(LVPREFIX)%/ccache.conf: \
+ etc/ccache.conf
+ $(V_AT)mkdir -p $(dir $@)
+ $(call v_tag,COPY)cp $< $@.new && mv $@.new $@
+
###--------------------------------------------------------------------------
### `/usr/local/' structure.
$(V_AT)mkdir -p $(dir $(patsubst %/,%,$@))
$(call v_tag,MKDIR)mkdir $@
-LOCAL_ARCH_DIRS = bin/ etc/ games/ include/ lib/ libexec/ sbin/
+LOCAL_ARCH_DIRS = bin/ etc/ games/ include/ include.aside/
+LOCAL_ARCH_DIRS += lib/ libexec/ sbin/
LOCAL_ARCH_LINKS = man
man_LINKDEST = share/man
all:: $(foreach a,$(ALL_ARCHS),\
### Main chroot maintenance.
OPTS =
-FRESH = create
+FRESH = 1w
JOBS = chroot cross-tools pkg-build
MAINTQ_ = -q
MAINTQ_0 = -q
-MAINT = +$(call v_tag,RUN)\
+MAINT = +$(call v_tag,MAINT)\
PYTHONPATH=$(STATE)/lib/python $(STATE)/bin/chroot-maint \
$(MAINTQ_$V) $(OPTS)
$(MAINT) -f$(FRESH) $(JOBS)
.PHONY: maint
+###--------------------------------------------------------------------------
+### Running random commands.
+
+CMD = echo %d %a
+subst-command = $(subst %d,$(call chroot-dist,$1), \
+ $(subst %a,$(call chroot-arch,$1), \
+ $(subst %r,$1, $(CMD))))
+
+run: $(foreach c,$(ALL_CHROOTS),run/$c)
+$(foreach c,$(ALL_CHROOTS),run/$c): run/%:
+ $(V_AT)$(call v_print,RUN,$(call subst-command,$*))\
+ $(call subst-command,$*)
+
###--------------------------------------------------------------------------
### Other maintenance targets.