## Level of pickiness to aspire to.
NOTIFY_FATAL = 1
-## Path to this working tree.
-CONFIG_VARS += HERE
-HERE = $(abspath .)
-
## 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.
## A directory which will be spliced into chroots as `/usr/local.schroot/'.
## This will be our primary point of contact with the chroot.
-CONFIG_VARS += LOCAL
+CONFIG_VARS += LOCAL ABSLOCAL
LOCAL = local.schroot
+ABSLOCAL = $(abspath $(LOCAL))
## How to run a command as a privileged user.
CONFIG_VARS += ROOTLY
### Scripts.
SCRIPTS += chroot-maint
-SCRIPTS += mkbuildchroot
SCRIPTS += mkchrootconf
-SCRIPTS += install-cross-tools update-cross-tools
SUBST_SCRIPTS = $(addprefix $(STATE)/bin/,$(SCRIPTS))
all:: $(SUBST_SCRIPTS)
$(call v_tag,GEN)$(STATE)/bin/mkchrootconf >$@.new && \
$(ROOTLY) chown root:root $@.new && mv $@.new $@
CLEANFILES += $(LOCAL)/etc/schroot/sbuild.schroot
-check::; $(call check-symlink,WARN,/etc/schroot/chroot.d/sbuild,$(HERE)/$(LOCAL)/etc/schroot/sbuild.schroot)
+check::; $(call check-symlink,WARN,/etc/schroot/chroot.d/sbuild,$(ABSLOCAL)/etc/schroot/sbuild.schroot)
schroot-config:: $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
$(LOCAL)/etc/schroot/sbuild.profile/copyfiles: $(schroot-config_STAMP)
<$< >$@.new && mv $@.new $@
CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/fstab
-check::; $(call check-symlink,WARN,/etc/schroot/sbuild,$(HERE)/$(LOCAL)/etc/schroot/sbuild.profile)
+check::; $(call check-symlink,WARN,/etc/schroot/sbuild,$(ABSLOCAL)/etc/schroot/sbuild.profile)
schroot-config:: $(LOCAL)/etc/sbuild.conf
$(LOCAL)/etc/sbuild.conf: etc/sbuild.conf.in $(schroot-config_STAMP)
$(call v_tag,SUBST)$(call subst-file,### -*-perl-*-) \
<$< >$@.new && mv $@.new $@
CLEANFILES += $(LOCAL)/etc/sbuild.conf
-check::; $(call check-symlink,WARN,/etc/sbuild/sbuild.conf,$(HERE)/$(LOCAL)/etc/sbuild.conf)
+check::; $(call check-symlink,WARN,/etc/sbuild/sbuild.conf,$(ABSLOCAL)/etc/sbuild.conf)
check::; $(call check-executable,WARN,/usr/local.schroot/hacks/apt-get)
SCHROOT_SCRIPTS += 11private
CHECK_SCHROOT_SCRIPTS = $(addprefix check-script/,$(SCHROOT_SCRIPTS))
check:: $(CHECK_SCHROOT_SCRIPTS)
$(CHECK_SCHROOT_SCRIPTS): check-script/%:
- $(call check-symlink,WARN,/etc/schroot/setup.d/$*,$(HERE)/$(LOCAL)/etc/schroot/setup.d/$*)
+ $(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.
LOCAL_COMMON_DIRS = share/ src/
### Main chroot maintenance.
OPTS =
-FRESH = create
+FRESH = 1w
JOBS = chroot cross-tools pkg-build
MAINTQ_ = -q