3c40bb0d46
Actually the issue was worse in general: *_PACKAGES weren't quoted when put into .base thus resulting in a potentially broken echo command (silent one). The macro scheme used was overgeneralized; stuffing quoting differentiation into it was doable but ugly (unless one is able to pass an unquoted quote sign as a function's parameter in some elegant manner), let's just make it straightforward.
44 lines
1.2 KiB
Makefile
44 lines
1.2 KiB
Makefile
# step 4: build the distribution image
|
|
|
|
# package lists are needed for installer and live-install images
|
|
METADIR := files/Metadata
|
|
|
|
# preparation targets of ../../build-distro/lib/build-distro.mk
|
|
WHATEVER += metadata
|
|
|
|
# handle these too
|
|
DOT_BASE += $(BASE_PACKAGES_REGEXP)
|
|
|
|
# args: type, name
|
|
define dump
|
|
if [ -n "$($(2)_$(1))" ]; then \
|
|
echo -e "\n## $(2)_$(1)"; \
|
|
case "$(1)" in \
|
|
PACKAGES) echo "$($(2)_$(1))";; \
|
|
LISTS) cat $($(2)_$(1));; \
|
|
esac; \
|
|
fi;
|
|
endef
|
|
|
|
# BASE_PACKAGES, BASE_LISTS and whatever else goes into base install;
|
|
# thus construct requisite .base packagelist for alterator-pkg
|
|
metadata-.base:
|
|
@cd $(call list,/); \
|
|
{ \
|
|
echo "## generated by features.in/metadata/lib/50-metadata.mk";\
|
|
$(foreach p,SYSTEM COMMON THE BASE,$(call dump,PACKAGES,$(p))) \
|
|
$(foreach l,THE BASE,$(call dump,LISTS,$(l))) \
|
|
if [ -n "$(DOT_BASE)" ]; then \
|
|
echo -e "\n## DOT_BASE\n$(DOT_BASE)"; \
|
|
fi; \
|
|
} | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' > .base
|
|
|
|
# see also alterator-pkg (backend3/pkg-install);
|
|
# we only tar up what's up to it
|
|
metadata: metadata-.base
|
|
@mkdir -p $(METADIR); \
|
|
tar -C $(PKGDIR) -cvf - \
|
|
$(call rlist,$(THE_GROUPS) $(MAIN_GROUPS) .base) \
|
|
$(call rgroup,$(THE_GROUPS) $(MAIN_GROUPS)) \
|
|
> $(METADIR)/pkg-groups.tar
|