6f5be91827
The issue actually hit image.in/Makefile: "metadata" target in features.in/metadata/lib/50-metadata.mk wasn't reached even if features.in/build-distro/lib/90-build-distro.mk would ACK that the "whatever" actions included "metadata"; thus Metadata/pkg-groups.tar wasn't created and the installer silently failed to install the .base system. Let's armour the rest of the cases where the order of inclusion might be important as well.
79 lines
2.5 KiB
Makefile
79 lines
2.5 KiB
Makefile
# steps to build an image:
|
|
# --- here
|
|
# 1. initialize new profile (BUILDDIR) as a copy of image.in/
|
|
# 2. configure distro
|
|
# 3. copy the needed bits from metaprofile to a new profile
|
|
# --- in BUILDDIR
|
|
# 4. build subprofiles and subsequently an image
|
|
|
|
# deal with one target at a time
|
|
IMAGE_TARGET := $(firstword $(MAKECMDGOALS))# ve/generic.tar.gz
|
|
ifeq (./,$(dir $(IMAGE_TARGET)))# convenience fallback
|
|
IMAGE_TARGET := distro/$(IMAGE_TARGET)# for omitted "distro/"
|
|
endif
|
|
IMAGE_CONF := $(firstword $(subst ., ,$(IMAGE_TARGET)))# ve/generic
|
|
IMAGE_CLASS := $(firstword $(subst /, ,$(IMAGE_TARGET)))# ve
|
|
IMAGE_FILE := $(lastword $(subst /, ,$(IMAGE_TARGET)))# generic.tar.gz
|
|
IMAGE_NAME := $(firstword $(subst ., ,$(IMAGE_FILE)))# generic
|
|
IMAGE_TYPE := $(subst $(IMAGE_NAME).,,$(IMAGE_FILE))# tar.gz
|
|
|
|
# readjustable
|
|
ifeq (1,$(NUM_TARGETS))
|
|
BUILDDIR_PREFIX ?= mkimage-profiles.build
|
|
else
|
|
BUILDDIR_PREFIX ?= mkimage-profiles.build/$(IMAGE_CONF).$(ARCH)
|
|
endif
|
|
|
|
export MKIMAGE_PROFILES := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
|
|
|
|
# preferences
|
|
-include $(HOME)/.mkimage/profiles.mk
|
|
|
|
# most of the actual work done elsewhere
|
|
include $(sort $(wildcard lib/*.mk))
|
|
include conf.d/*.mk
|
|
include features.in/*/config.mk
|
|
|
|
# starts to look copypastey
|
|
DISTRO_TARGETS := $(shell sed -n 's,^\(distro/[^:.]\+\):.*$$,\1,p' \
|
|
lib/distro.mk $(wildcard conf.d/*.mk) | sort -u)
|
|
VE_TARGETS := $(shell sed -n 's,^\(ve/[^:.]\+\):.*$$,\1,p' \
|
|
lib/ve.mk $(wildcard conf.d/*.mk) | sort -u)
|
|
VM_TARGETS := $(shell sed -n 's,^\(vm/[^:.]\+\):.*$$,\1,p' \
|
|
lib/vm.mk $(wildcard conf.d/*.mk) | sort -u)
|
|
DISTROS := $(call addsuffices,$(DISTRO_EXTS),$(DISTRO_TARGETS))
|
|
VES := $(call addsuffices,$(VE_EXTS),$(VE_TARGETS))
|
|
VMS := $(call addsuffices,$(VM_EXTS),$(VM_TARGETS))
|
|
IMAGES := $(DISTROS) $(VES) $(VMS)
|
|
|
|
.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS) $(VM_TARGETS)
|
|
.PHONY: debug everything help space
|
|
|
|
### duplicate but still needed
|
|
everything:
|
|
@n=1; sum=$(words $(DISTROS)); \
|
|
for distro in $(DISTROS); do \
|
|
echo "** building $$distro [$$n/$$sum]:"; \
|
|
$(MAKE) -f main.mk --no-print-directory $$distro; \
|
|
[ "$$n" -lt "$$sum" ] && echo; \
|
|
n=$$(($$n+1)); \
|
|
done
|
|
|
|
# config/with/ve/generic config/like/ve config/name/generic config/pack/tar.gz
|
|
$(IMAGES): debug \
|
|
config/with/$(IMAGE_CONF) \
|
|
config/like/$(IMAGE_CLASS) \
|
|
config/name/$(IMAGE_NAME) \
|
|
config/pack/$(IMAGE_TYPE) \
|
|
build; @:
|
|
|
|
# convenience shortcut
|
|
$(DISTROS:distro/%=%): %: distro/%; @:
|
|
|
|
debug:
|
|
ifeq (2,$(DEBUG))
|
|
@$(foreach v,\
|
|
$(filter IMAGE_%,$(sort $(.VARIABLES))),\
|
|
$(warning $v = $($v)))
|
|
endif
|