support recursive rootfs extends

This commit is contained in:
2025-09-08 16:43:37 +08:00
parent 359f6df2cd
commit bd1988a695
+7 -4
View File
@@ -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))