This means that there's at most one `mkdir' attempt for each directory,
and usually none if it already exists.
check-symlink = $(call check,$1,"\`$2' is not a link to \`$3'", \
[ -L "$2" ] && [ "$$(readlink "$2")" = "$3" ])
check-symlink = $(call check,$1,"\`$2' is not a link to \`$3'", \
[ -L "$2" ] && [ "$$(readlink "$2")" = "$3" ])
+## DIR/
+##
+## Make a directory. Use as an order-only dependency.
+%/:; $(V_AT)mkdir -p $@
+
###--------------------------------------------------------------------------
### Python extensions.
###--------------------------------------------------------------------------
### Python extensions.
$(call c-source,$($x_SOURCES)))
PYEXT_ALLOBJ = $(foreach x,$(PYEXTS),\
$(call c-object,$($x_SOURCES)))
$(call c-source,$($x_SOURCES)))
PYEXT_ALLOBJ = $(foreach x,$(PYEXTS),\
$(call c-object,$($x_SOURCES)))
-$(PYEXT_ALLOBJ): $(STATE)/obj/%.o: src/%.c
- $(V_AT)mkdir -p $(dir $@)
+$(PYEXT_ALLOBJ): $(STATE)/obj/%.o: src/%.c | $$(dir $$@)
$(call v_tag,CC)$(CC) -c $(CFLAGS) $(PYEXT_CFLAGS) -o$@ $<
PYMODULES = $(foreach x,$(PYEXTS),$(STATE)/lib/python/$x.so)
all: $(PYMODULES)
$(call v_tag,CC)$(CC) -c $(CFLAGS) $(PYEXT_CFLAGS) -o$@ $<
PYMODULES = $(foreach x,$(PYEXTS),$(STATE)/lib/python/$x.so)
all: $(PYMODULES)
-$(PYMODULES): $(STATE)/lib/python/%.so: $$(call c-object,$$($$*_SOURCES))
- $(V_AT)mkdir -p $(dir $@)
+$(PYMODULES): $(STATE)/lib/python/%.so: \
+ $$(call c-object,$$($$*_SOURCES)) | $$(dir $$@)
$(call v_tag,LD)$(LD) $(LDFLAGS) $(PYEXT_LDFLAGS) -o$@ $^
###--------------------------------------------------------------------------
$(call v_tag,LD)$(LD) $(LDFLAGS) $(PYEXT_LDFLAGS) -o$@ $^
###--------------------------------------------------------------------------
SUBST_SCRIPTS = $(addprefix $(STATE)/bin/,$(SCRIPTS))
all: $(SUBST_SCRIPTS)
SUBST_SCRIPTS = $(addprefix $(STATE)/bin/,$(SCRIPTS))
all: $(SUBST_SCRIPTS)
-$(SUBST_SCRIPTS): $(STATE)/bin/%: bin/% $(STATE)/config.sh
- $(V_AT)mkdir -p $(dir $@)
+$(SUBST_SCRIPTS): $(STATE)/bin/%: bin/% $(STATE)/config.sh | $$(dir $$@)
$(call v_tag,SUBST){ \
sed \
-e '2i### GENERATED by distorted-chroot: do not edit' \
$(call v_tag,SUBST){ \
sed \
-e '2i### GENERATED by distorted-chroot: do not edit' \
APT_SOURCES = $(foreach d,$(DISTS),$(LOCAL)/etc/apt/sources.$d)
all: $(APT_SOURCES)
APT_SOURCES = $(foreach d,$(DISTS),$(LOCAL)/etc/apt/sources.$d)
all: $(APT_SOURCES)
-$(foreach d,$(DISTS),$(STATE)/etc/apt/aptsrc.$d): $(STATE)/etc/apt/aptsrc.%:
- $(V_AT)mkdir -p $(dir $@)
+$(foreach d,$(DISTS),$(STATE)/etc/apt/aptsrc.$d): \
+ $(STATE)/etc/apt/aptsrc.%: | $$(dir $$@)
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
echo "subscribe"; \
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
echo "subscribe"; \
} >$@.new && mv $@.new $@
$(APT_SOURCES): $(LOCAL)/etc/apt/sources.%: \
} >$@.new && mv $@.new $@
$(APT_SOURCES): $(LOCAL)/etc/apt/sources.%: \
- $$(APTSRC) $$($$*_APTSRC) $$(STATE)/etc/apt/aptsrc.$$*
- $(V_AT)mkdir -p $(dir $@)
+ $$(APTSRC) $$($$*_APTSRC) $$(STATE)/etc/apt/aptsrc.$$* \
+ | $$(dir $$@)
$(call v_tag,GEN)bin/mkaptsrc \
$(APTSRC) $($*_APTSRC) $(STATE)/etc/apt/aptsrc.$* \
>$@.new && mv $@.new $@
$(call v_tag,GEN)bin/mkaptsrc \
$(APTSRC) $($*_APTSRC) $(STATE)/etc/apt/aptsrc.$* \
>$@.new && mv $@.new $@
APT_CONFIGS = $(addprefix $(LOCAL)/etc/apt/apt.conf.d/,$(APTCONF))
all: $(APT_CONFIGS)
$(APT_CONFIGS): $(LOCAL)/etc/apt/apt.conf.d/%: \
APT_CONFIGS = $(addprefix $(LOCAL)/etc/apt/apt.conf.d/,$(APTCONF))
all: $(APT_CONFIGS)
$(APT_CONFIGS): $(LOCAL)/etc/apt/apt.conf.d/%: \
- $$(or $$(_$$*_APTCONFSRC) etc/apt-conf.d/$$*)
- $(V_AT)mkdir -p $(dir $@)
+ $$(or $$(_$$*_APTCONFSRC) etc/apt-conf.d/$$*) | $$(dir $$@)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
clean::; rm -f $(APT_CONFIGS)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
clean::; rm -f $(APT_CONFIGS)
SYMLINK_EATMYDATA_HACKS = $(addprefix $(LOCAL)/hacks/,$(EATMYDATA_HACKS))
all: $(SYMLINK_EATMYDATA_HACKS)
$(SYMLINK_EATMYDATA_HACKS): $(LOCAL)/hacks/%: \
SYMLINK_EATMYDATA_HACKS = $(addprefix $(LOCAL)/hacks/,$(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 $@)
+ $$(if $$(call symlink-ok-p,$$@,/usr/bin/eatmydata),,_force) \
+ | $$(dir $$@)
$(call v_tag,SYMLINK)ln -sf /usr/bin/eatmydata $@.new && mv $@.new $@
clean::; rm -f $(SYMLINK_EATMYDATA_HACKS)
SCRIPT_HACKS += buildwrap
COPY_SCRIPT_HACKS = $(addprefix $(LOCAL)/hacks/,$(SCRIPT_HACKS))
all: $(COPY_SCRIPT_HACKS)
$(call v_tag,SYMLINK)ln -sf /usr/bin/eatmydata $@.new && mv $@.new $@
clean::; rm -f $(SYMLINK_EATMYDATA_HACKS)
SCRIPT_HACKS += buildwrap
COPY_SCRIPT_HACKS = $(addprefix $(LOCAL)/hacks/,$(SCRIPT_HACKS))
all: $(COPY_SCRIPT_HACKS)
-$(COPY_SCRIPT_HACKS): $(LOCAL)/hacks/%: bin/%
- $(V_AT)mkdir -p $(dir $@)
+$(COPY_SCRIPT_HACKS): $(LOCAL)/hacks/%: bin/% | $$(dir $$@)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
clean::; rm -f $(COPY_SCRIPT_HACKS)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
clean::; rm -f $(COPY_SCRIPT_HACKS)
$(shell $(call %print-varlist,$(CONFIG_VARS)) | \
sha256sum | cut -c1-32)
schroot-config_FILE = $(STATE)/config.sh-$(schroot-config_HASH)
$(shell $(call %print-varlist,$(CONFIG_VARS)) | \
sha256sum | cut -c1-32)
schroot-config_FILE = $(STATE)/config.sh-$(schroot-config_HASH)
-$(schroot-config_FILE):
- $(V_AT)mkdir -p $(STATE)
+$(schroot-config_FILE): | $(STATE)/
$(V_AT)rm -f $(STATE)/config.sh-*
$(call v_tag,GEN)$(call %print-varlist,$(CONFIG_VARS)) \
>$@.new && mv $@.new $@
schroot-config: $(STATE)/config.sh
$(STATE)/config.sh: $(schroot-config_FILE)
$(V_AT)rm -f $(STATE)/config.sh-*
$(call v_tag,GEN)$(call %print-varlist,$(CONFIG_VARS)) \
>$@.new && mv $@.new $@
schroot-config: $(STATE)/config.sh
$(STATE)/config.sh: $(schroot-config_FILE)
- $(call v_tag,SYMLINK)ln -sf $(notdir $<) $@
+ $(call v_tag,SYMLINK)ln -sf $(call base-name,$<) $@
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 $@)
+$(LOCAL)/etc/schroot/sbuild.schroot: $(STATE)/bin/mkchrootconf | $$(dir $$@)
$(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,$(ABSLOCAL)/etc/schroot/sbuild.schroot)
schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
$(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,$(ABSLOCAL)/etc/schroot/sbuild.schroot)
schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
-$(LOCAL)/etc/schroot/sbuild.profile/copyfiles: $(schroot-config_STAMP)
- $(V_AT)mkdir -p $(dir $@)
+$(LOCAL)/etc/schroot/sbuild.profile/copyfiles: \
+ $(schroot-config_STAMP) | $$(dir $$@)
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
for i in $(SCHROOT_COPYFILES); do echo "$$i"; done; \
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
for i in $(SCHROOT_COPYFILES); do echo "$$i"; done; \
CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases
CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/copyfiles
schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/nssdatabases
-$(LOCAL)/etc/schroot/sbuild.profile/nssdatabases: $(schroot-config_STAMP)
- $(V_AT)mkdir -p $(dir $@)
+$(LOCAL)/etc/schroot/sbuild.profile/nssdatabases: \
+ $(schroot-config_STAMP) | $$(dir $$@)
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
for i in $(SCHROOT_NSSDATABASES); do echo "$$i"; done; \
$(call v_tag,GEN){ \
echo "### -*-conf-*- GENERATED by distorted-chroot: do not edit"; \
for i in $(SCHROOT_NSSDATABASES); do echo "$$i"; done; \
schroot-config: $(LOCAL)/etc/schroot/sbuild.profile/fstab
$(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 $@)
+ etc/sbuild.fstab.in $(schroot-config_STAMP) | $$(dir $$@)
$(call v_tag,SUBST)$(call subst-file,### -*-conf-*-) \
<$< >$@.new && mv $@.new $@
CLEANFILES += $(LOCAL)/etc/schroot/sbuild.profile/fstab
$(call v_tag,SUBST)$(call subst-file,### -*-conf-*-) \
<$< >$@.new && mv $@.new $@
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
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)
- $(V_AT)mkdir -p $(dir $@)
+$(LOCAL)/etc/sbuild.conf: etc/sbuild.conf.in \
+ $(schroot-config_STAMP) | $$(dir $$@)
$(call v_tag,SUBST)$(call subst-file,### -*-perl-*-) \
<$< >$@.new && mv $@.new $@
CLEANFILES += $(LOCAL)/etc/sbuild.conf
$(call v_tag,SUBST)$(call subst-file,### -*-perl-*-) \
<$< >$@.new && mv $@.new $@
CLEANFILES += $(LOCAL)/etc/sbuild.conf
COPY_SCHROOT_SCRIPTS = $(addprefix $(LOCAL)/etc/schroot/setup.d/,$(SCHROOT_SCRIPTS))
schroot-config: $(COPY_SCHROOT_SCRIPTS)
$(COPY_SCHROOT_SCRIPTS): \
COPY_SCHROOT_SCRIPTS = $(addprefix $(LOCAL)/etc/schroot/setup.d/,$(SCHROOT_SCRIPTS))
schroot-config: $(COPY_SCHROOT_SCRIPTS)
$(COPY_SCHROOT_SCRIPTS): \
- $(LOCAL)/etc/schroot/setup.d/%: etc/schroot-scripts/%
- $(V_AT)mkdir -p $(dir $@)
+ $(LOCAL)/etc/schroot/setup.d/%: etc/schroot-scripts/% \
+ | $$(dir $$@)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
CLEANFILES += $(COPY_SCHROOT_SCRIPTS)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
CLEANFILES += $(COPY_SCHROOT_SCRIPTS)
/var/lib/sbuild/build/.ccache/$(LVPREFIX)$r/ccache.conf)
all: $(CCACHE_CONFIGS)
$(CCACHE_CONFIGS): /var/lib/sbuild/build/.ccache/$(LVPREFIX)%/ccache.conf: \
/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 $@)
+ etc/ccache.conf | $$(dir $$@)
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
###--------------------------------------------------------------------------
$(call v_tag,COPY)cp $< $@.new && mv $@.new $@
###--------------------------------------------------------------------------
LOCAL_COMMON_DIRS = share/ src/
LOCAL_EXTRA_DIRS = share/man/
all: $(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d)
LOCAL_COMMON_DIRS = share/ src/
LOCAL_EXTRA_DIRS = share/man/
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 $(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_DIRS = bin/ etc/ games/ include/ include.aside/
LOCAL_ARCH_DIRS += lib/ libexec/ sbin/
$(foreach d,$(LOCAL_ARCH_LINKS),$(LOCAL)/$a/$d) \
$(foreach d,$(LOCAL_COMMON_DIRS),$(LOCAL)/$a/$d))
$(foreach d,$(LOCAL_ARCH_LINKS),$(LOCAL)/$a/$d) \
$(foreach d,$(LOCAL_COMMON_DIRS),$(LOCAL)/$a/$d))
-$(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 $(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,$$@,$$($$(call base-name,$$@)_LINKDEST)),,_force) \
$(foreach a,$(ALL_ARCHS),\
$(foreach d,$(LOCAL_ARCH_LINKS),$(LOCAL)/$a/$d)): \
$$(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,$$@,../$$(call base-name,$$@)),,_force) \
$(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,$$@,../$$(call base-name,$$@)),,_force) \
- $(V_AT)mkdir -p $(call parent-dir,$@)
+ | $$(call parent-dir,$$@)
$(call v_tag,SYMLINK)ln -sf ../$(call base-name,$@) $(call file-name,$@)
###--------------------------------------------------------------------------
$(call v_tag,SYMLINK)ln -sf ../$(call base-name,$@) $(call file-name,$@)
###--------------------------------------------------------------------------