diff --git a/functions.mk b/functions.mk index 716d6cd..851c7df 100644 --- a/functions.mk +++ b/functions.mk @@ -87,14 +87,17 @@ endif endef $$(foreach dep,$$(EXTENDS),$$(eval $$(call check_receipe_exist,$$(dep)))) undefine check_receipe_exist -$$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS := $$(foreach depname,$$(EXTENDS),$$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(depname)_DIR)) $$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DIR) -$$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS := $$(foreach dep,$$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS),$$(dep)/) +# Does not contains itself, may be referenced by other receipes +$$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS := $$(foreach depname,$$(EXTENDS),$$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(depname)_DEPS) $$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(depname)_DIR)) +# Itself is listed for constructing current receipe +$$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS_FULL := $$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS) $$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DIR) +$$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS_FULL := $$(foreach dep,$$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS_FULL),$$(dep)/) define GENERATE_SYNC_TARGET -$(STAGING_DIR)/$$(DISTRO_NAME)/$$(RELEASE_NAME)/receipes/$$(RECEIPE_NAME): $$$$(foreach dep,$$$$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS),$$$$(shell find -L $$$$(dep) -type f,d | tr '\n' ' ')) +$(STAGING_DIR)/$$(DISTRO_NAME)/$$(RELEASE_NAME)/receipes/$$(RECEIPE_NAME): $$$$(foreach dep,$$$$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS_FULL),$$$$(shell find -L $$$$(dep) -type f,d | tr '\n' ' ')) $$$$(dir_guard) rm -rf "$$$$@" @# Not preserving modification time, aka -t - rsync -rLpgoD --exclude receipe.mk $$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS) $$$$@ + rsync -rLpgoD --exclude receipe.mk $$($$(DISTRO_NAME)_$$(RELEASE_NAME)_$$(RECEIPE_NAME)_DEPS_FULL) $$$$@ endef # Introduce one level of indirection to evaluate receipes ahead of time $$(eval $$(GENERATE_SYNC_TARGET))