X-Git-Url: https://git.distorted.org.uk/~mdw/distorted-chroot/blobdiff_plain/942fed180961536fa966bfd4db28ee0537755932..800139e66e234ddc920764e9700922e8845a3a63:/Makefile diff --git a/Makefile b/Makefile index 3b431a2..9b52893 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ ### Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ### USA. -all:: +all: clean:: check:: .PHONY: all clean check @@ -134,7 +134,7 @@ CROSS_PATHS += \ 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 \ @@ -155,7 +155,8 @@ CROSS_PATHS += \ $(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/'. @@ -178,6 +179,10 @@ arm64_QEMUHOST = $(64BIT_QEMUHOST) 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) @@ -260,6 +265,24 @@ CLEANFILES += log/*.log SILENCE_LVM = \ LVM_SUPPRESS_FD_WARNINGS=1; export LVM_SUPPRESS_FD_WARNINGS +## $(call file-name,PATH) +## +## Strip any trailing `/' from the PATH. +file-name = $(1:/=) + +## $(call base-name,PATH) +## +## Expand to the last component of PATH, whether or not it's a directory +## name with a trailing `/'. +base-name = $(notdir $(call file-name,$1)) + +## $(call parent-dir,PATH) +## +## Expand to the parent directory of PATH, whether or not it's a directory +## name with a trailing `/'. +## `/'. +parent-dir = $(dir $(call file-name,$1)) + ## $(call definedp,VAR) ## ## Expand non-empty if and only if VAR is defined (but possibly empty). @@ -411,7 +434,7 @@ $(PYEXT_ALLOBJ): $(STATE)/obj/%.o: src/%.c $(call v_tag,CC)$(CC) -c $(CFLAGS) $(PYEXT_CFLAGS) -o$@ $< PYMODULES = $(foreach x,$(PYEXTS),$(STATE)/lib/python/$x.so) -all:: $(PYMODULES) +all: $(PYMODULES) $(PYMODULES): $(STATE)/lib/python/%.so: $$(call c-object,$$($$*_SOURCES)) $(V_AT)mkdir -p $(dir $@) $(call v_tag,LD)$(LD) $(LDFLAGS) $(PYEXT_LDFLAGS) -o$@ $^ @@ -423,7 +446,7 @@ SCRIPTS += chroot-maint SCRIPTS += mkchrootconf SUBST_SCRIPTS = $(addprefix $(STATE)/bin/,$(SCRIPTS)) -all:: $(SUBST_SCRIPTS) +all: $(SUBST_SCRIPTS) $(SUBST_SCRIPTS): $(STATE)/bin/%: bin/% $(STATE)/config.sh $(V_AT)mkdir -p $(dir $@) $(call v_tag,SUBST){ \ @@ -441,7 +464,7 @@ $(SUBST_SCRIPTS): $(STATE)/bin/%: bin/% $(STATE)/config.sh ## In a chroot, `/etc/apt/sources.list' links to ## `/usr/local.schroot/etc/apt/sources.$d' for the appropriate distribution. APT_SOURCES = $(foreach d,$(DISTS),$(LOCAL)/etc/apt/sources.$d) -all:: $(APT_SOURCES) +all: $(APT_SOURCES) $(foreach d,$(DISTS),$(STATE)/etc/apt/aptsrc.$d): $(STATE)/etc/apt/aptsrc.%: $(V_AT)mkdir -p $(dir $@) @@ -462,7 +485,7 @@ CLEANFILES += $(APT_SOURCES) ## In a chroot, a link `/etc/apt/apt.conf.d/FOO' is created for each file in ## `/usr/local.schroot/etc/apt/apt.conf.d/FOO'. APT_CONFIGS = $(addprefix $(LOCAL)/etc/apt/apt.conf.d/,$(APTCONF)) -all:: $(APT_CONFIGS) +all: $(APT_CONFIGS) $(APT_CONFIGS): $(LOCAL)/etc/apt/apt.conf.d/%: \ $$(or $$(_$$*_APTCONFSRC) etc/apt-conf.d/$$*) $(V_AT)mkdir -p $(dir $@) @@ -476,7 +499,7 @@ check::; $(call check-executable,ERR,/usr/bin/eatmydata) EATMYDATA_HACKS += apt-get aptitude dpkg SYMLINK_EATMYDATA_HACKS = $(addprefix $(LOCAL)/hacks/,$(EATMYDATA_HACKS)) -all:: $(SYMLINK_EATMYDATA_HACKS) +all: $(SYMLINK_EATMYDATA_HACKS) $(SYMLINK_EATMYDATA_HACKS): $(LOCAL)/hacks/%: \ $$(if $$(call symlink-ok-p,$$@,/usr/bin/eatmydata),,_force) $(V_AT)mkdir -p $(dir $@) @@ -485,7 +508,7 @@ clean::; rm -f $(SYMLINK_EATMYDATA_HACKS) SCRIPT_HACKS += buildwrap COPY_SCRIPT_HACKS = $(addprefix $(LOCAL)/hacks/,$(SCRIPT_HACKS)) -all:: $(COPY_SCRIPT_HACKS) +all: $(COPY_SCRIPT_HACKS) $(COPY_SCRIPT_HACKS): $(LOCAL)/hacks/%: bin/% $(V_AT)mkdir -p $(dir $@) $(call v_tag,COPY)cp $< $@.new && mv $@.new $@ @@ -494,8 +517,8 @@ clean::; rm -f $(COPY_SCRIPT_HACKS) ###-------------------------------------------------------------------------- ### `schroot' and `sbuild' configuration. -all:: schroot-config -schroot-config:: +all: schroot-config +schroot-config: .PHONY: schroot-config check::; $(call check-mountpoint,WARN,/var/lib/sbuild/build) @@ -517,11 +540,11 @@ $(schroot-config_FILE): $(call v_tag,GEN)$(call %print-varlist,$(CONFIG_VARS)) \ >$@.new && mv $@.new $@ -schroot-config:: $(STATE)/config.sh +schroot-config: $(STATE)/config.sh $(STATE)/config.sh: $(schroot-config_FILE) $(call v_tag,SYMLINK)ln -sf $(notdir $<) $@ -schroot-config:: $(LOCAL)/etc/schroot/sbuild.schroot +schroot-config: $(LOCAL)/etc/schroot/sbuild.schroot $(LOCAL)/etc/schroot/sbuild.schroot: $(STATE)/bin/mkchrootconf $(V_AT)mkdir -p $(dir $@) $(call v_tag,GEN)$(STATE)/bin/mkchrootconf >$@.new && \ @@ -529,7 +552,7 @@ $(LOCAL)/etc/schroot/sbuild.schroot: $(STATE)/bin/mkchrootconf CLEANFILES += $(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 +schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/copyfiles $(LOCAL)/etc/schroot/sbuild.profile/copyfiles: $(schroot-config_STAMP) $(V_AT)mkdir -p $(dir $@) $(call v_tag,GEN){ \ @@ -538,7 +561,7 @@ $(LOCAL)/etc/schroot/sbuild.profile/copyfiles: $(schroot-config_STAMP) } >$@.new && mv $@.new $@ CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/copyfiles -schroot-config:: $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases +schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases: $(schroot-config_STAMP) $(V_AT)mkdir -p $(dir $@) $(call v_tag,GEN){ \ @@ -547,7 +570,7 @@ $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases: $(schroot-config_STAMP) } >$@.new && mv $@.new $@ CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases -schroot-config:: $(LOCAL)/etc/schroot/sbuild.profile/fstab +schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/fstab $(LOCAL)/etc/schroot/sbuild.profile/fstab: \ etc/sbuild.fstab.in $(schroot-config_STAMP) $(V_AT)mkdir -p $(dir $@) @@ -557,7 +580,7 @@ CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/fstab check::; $(call check-symlink,WARN,/etc/schroot/sbuild,$(ABSLOCAL)/etc/schroot/sbuild.profile) -schroot-config:: $(LOCAL)/etc/sbuild.conf +schroot-config: $(LOCAL)/etc/sbuild.conf $(LOCAL)/etc/sbuild.conf: etc/sbuild.conf.in $(schroot-config_STAMP) $(V_AT)mkdir -p $(dir $@) $(call v_tag,SUBST)$(call subst-file,### -*-perl-*-) \ @@ -570,7 +593,7 @@ SCHROOT_SCRIPTS += 11private SCHROOT_SCRIPTS += 15binfmt SCHROOT_SCRIPTS += 51chrootenv COPY_SCHROOT_SCRIPTS = $(addprefix $(LOCAL)/etc/schroot/setup.d/,$(SCHROOT_SCRIPTS)) -schroot-config:: $(COPY_SCHROOT_SCRIPTS) +schroot-config: $(COPY_SCHROOT_SCRIPTS) $(COPY_SCHROOT_SCRIPTS): \ $(LOCAL)/etc/schroot/setup.d/%: etc/schroot-scripts/% $(V_AT)mkdir -p $(dir $@) @@ -588,7 +611,7 @@ $(CHECK_SCHROOT_SCRIPTS): check-script/%: CCACHE_CONFIGS = $(foreach r,$(ALL_CHROOTS), \ /var/lib/sbuild/build/.ccache/$(LVPREFIX)$r/ccache.conf) -all:: $(CCACHE_CONFIGS) +all: $(CCACHE_CONFIGS) $(CCACHE_CONFIGS): /var/lib/sbuild/build/.ccache/$(LVPREFIX)%/ccache.conf: \ etc/ccache.conf $(V_AT)mkdir -p $(dir $@) @@ -599,16 +622,16 @@ $(CCACHE_CONFIGS): /var/lib/sbuild/build/.ccache/$(LVPREFIX)%/ccache.conf: \ LOCAL_COMMON_DIRS = share/ src/ LOCAL_EXTRA_DIRS = share/man/ -all:: $(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d) +all: $(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d) $(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d): - $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@)) + $(V_AT)mkdir -p $(call parent-dir $@) $(call v_tag,MKDIR)mkdir $@ 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),\ +all: $(foreach a,$(ALL_ARCHS),\ $(LOCAL)/$a/ \ $(foreach d,$(LOCAL_ARCH_DIRS),$(LOCAL)/$a/$d) \ $(foreach d,$(LOCAL_ARCH_LINKS),$(LOCAL)/$a/$d) \ @@ -618,18 +641,18 @@ $(foreach a,$(ALL_ARCHS),$(LOCAL)/$a/): $(call v_tag,MKDIR)mkdir $@ $(foreach a,$(ALL_ARCHS),\ $(foreach d,$(LOCAL_ARCH_DIRS),$(LOCAL)/$a/$d)): - $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@)) + $(V_AT)mkdir -p $(call parent-dir,$@) $(call v_tag,MKDIR)mkdir $@ $(foreach a,$(ALL_ARCHS),\ $(foreach d,$(LOCAL_ARCH_LINKS),$(LOCAL)/$a/$d)): \ - $$(if $$(call symlink-ok-p,$$@,$$($$(notdir $$@)_LINKDEST)),,_force) - $(V_AT)mkdir -p $(notdir $@) - $(call v_tag,SYMLINK)ln -sf $($(notdir $@)_LINKDEST) $@ + $$(if $$(call symlink-ok-p,$$@,$$($$(call base-name,$$@)_LINKDEST)),,_force) \ + $(V_AT)mkdir -p $(call parent-dir,$@) + $(call v_tag,SYMLINK)ln -sf $($(call base-name,$@)_LINKDEST) $@ $(foreach a,$(ALL_ARCHS),\ $(foreach d,$(LOCAL_COMMON_DIRS),$(LOCAL)/$a/$d)): \ - $$(if $$(call symlink-ok-p,$$@,../$$(notdir $$(patsubst %/,%,$$@))),,_force) - $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@)) - $(call v_tag,SYMLINK)ln -sf ../$(notdir $(patsubst %/,%,$@)) $(patsubst %/,%,$@) + $$(if $$(call symlink-ok-p,$$@,../$$(call base-name,$$@)),,_force) \ + $(V_AT)mkdir -p $(call parent-dir,$@) + $(call v_tag,SYMLINK)ln -sf ../$(call base-name,$@) $(call file-name,$@) ###-------------------------------------------------------------------------- ### Main chroot maintenance.