From d6972a39bfc9f6ecd94a5a188b3beab7f7f86038 Mon Sep 17 00:00:00 2001 From: Michael Shigorin Date: Mon, 19 Dec 2011 21:28:42 +0200 Subject: [PATCH] introduced THE_{KMODULES,PACKAGES,LISTS,GROUPS} As too many things started duplicating between distros proper and (e.g. corresponding) LiveCDs, it became apparent that a class of entities which end up working for THE_USER (not a sysadmin, and not a developer, just a Linux user) is in need. So THE_KMODULES will power installed basesystem and live image, while THE_PACKAGES, THE_LISTS and THE_GROUPS will participate in building those. --- conf.d/README | 25 +++++++++++++------- conf.d/server.mk | 10 ++++---- features.in/build-distro/lib/build-distro.mk | 6 ++--- features.in/install2/config.mk | 2 +- features.in/live/live/stage2cfg.mk | 9 ++++--- features.in/virtualbox/config.mk | 4 ++-- features.in/x11/config.mk | 7 +++--- pkg.in/groups/Makefile | 6 +++-- pkg.in/lists/Makefile | 11 +++++++-- sub.in/main/Makefile | 19 +++++++++------ sub.in/stage1/Makefile | 3 ++- sub.in/stage2/Makefile | 4 +++- sub.in/stage2/README | 3 +++ 13 files changed, 71 insertions(+), 38 deletions(-) diff --git a/conf.d/README b/conf.d/README index 34ff47ed..3d9e2491 100644 --- a/conf.d/README +++ b/conf.d/README @@ -11,15 +11,24 @@ Попросту говоря, copy-paste -- тревожный признак. По переменным: -* SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут +- SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут во все стадии, в том числе в образ чувствительной к объёму install2 (в stage1 -- только в инструментальный чрут); применяйте для того, - что обязано быть и в инсталяторе, и в готовой системе; -* для "обычного общего" (main, live, rescue) есть COMMON_PACKAGES - (NB: попадают в базовую систему). + что обязано быть и в инсталяторе, и в готовой системе +- для "обычного общего" (live, main, rescue) есть COMMON_PACKAGES + (NB: попадают в базовую систему) +- для "пользовательского" (live, main) есть THE_GROUPS, THE_LISTS + и THE_PACKAGES +- аналогично по модулям ядра: + + STAGE1_KMODULES доступны в производных от stage2 (install2, live, rescue) + + BASE_KMODULES попадут в установку по умолчанию + + MAIN_KMODULES будут доступны для установки с носителя + + LIVE_KMODULES предназначены для LiveCD/LiveFlash + + THE_KMODULES попадут в "пользовательские" окружения + (live и установленную систему) По подстановкам: -* $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk; -* $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании - значений -- таким образом их значения могут изменяться до окончания - конфигурации, а также зависеть от значений других переменных; +- $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk +- $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании + значений; в этом случае их значения могут изменяться до окончания + конфигурации, а также зависеть от значений других переменных diff --git a/conf.d/server.mk b/conf.d/server.mk index 0051772f..adbbfd88 100644 --- a/conf.d/server.mk +++ b/conf.d/server.mk @@ -7,7 +7,8 @@ distro/server-base: distro/installer use/repo/main \ distro/server-mini: distro/server-base use/cleanup/x11-alterator @$(call set,KFLAVOURS,el-smp) - @$(call add,KMODULES,e1000e igb) + @$(call add,THE_KMODULES,e1000e igb) + @$(call add,STAGE1_KMODULES,e1000e igb) @$(call add,BASE_LISTS,\ $(call tags,base && (server || network || security || pkg))) @$(call add,BASE_LISTS,$(call tags,extra network)) @@ -18,9 +19,10 @@ distro/server-ovz: distro/server-mini \ use/hdt use/rescue use/firmware/server use/power/acpi/button @$(call set,STAGE1_KFLAVOUR,std-def) @$(call set,KFLAVOURS,std-def ovz-el) - @$(call add,KMODULES,bcmwl ndiswrapper rtl8168 rtl8192) - @$(call add,KMODULES,ipset ipt-netflow opendpi pf_ring xtables-addons) - @$(call add,KMODULES,drbd83 kvm) + @$(call add,BASE_KMODULES,rtl8168 rtl8192) + @$(call add,MAIN_KMODULES,bcmwl ndiswrapper) + @$(call add,MAIN_KMODULES,ipset ipt-netflow opendpi pf_ring xtables-addons) + @$(call add,MAIN_KMODULES,drbd83 kvm) @$(call add,INSTALL2_PACKAGES,curl) ### should become curl-mini @$(call add,BASE_LISTS,ovz-server) @$(call add,MAIN_LISTS,kernel-wifi) diff --git a/features.in/build-distro/lib/build-distro.mk b/features.in/build-distro/lib/build-distro.mk index f59a0e1b..ed4a53a2 100644 --- a/features.in/build-distro/lib/build-distro.mk +++ b/features.in/build-distro/lib/build-distro.mk @@ -28,10 +28,8 @@ metadata: dot-base | sed 's,$(PKGDIR)/*,,g') dot-base: - @{ \ - echo -e "\n## added by build-distro.mk"; \ - echo "$(call kpackages,$(KMODULES),$(KFLAVOURS))"; \ - } >> $(call list,.base) + @p="$(call kpackages,$(THE_KMODULES) $(BASE_KMODULES),$(KFLAVOURS))"; \ + echo -e "\n## added by build-distro.mk\n$$p" >> $(call list,.base) dot-disk: @mkdir -p files/.disk diff --git a/features.in/install2/config.mk b/features.in/install2/config.mk index 411b9e3c..5bf6c687 100644 --- a/features.in/install2/config.mk +++ b/features.in/install2/config.mk @@ -2,5 +2,5 @@ use/install2: use/stage2 sub/stage2/install2 use/cleanup/installer @$(call add_feature) @$(call set,INSTALL2_PACKAGES,installer-distro-$$(INSTALLER)-stage2) @$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator) - @$(call add,MAIN_PACKAGES,branding-$$(BRANDING)-release) + @$(call add,BASE_PACKAGES,branding-$$(BRANDING)-release) @$(call add,BASE_LISTS,$(call tags,basesystem)) diff --git a/features.in/live/live/stage2cfg.mk b/features.in/live/live/stage2cfg.mk index ed8964a2..0d6085ac 100644 --- a/features.in/live/live/stage2cfg.mk +++ b/features.in/live/live/stage2cfg.mk @@ -1,8 +1,11 @@ # stage2 mod: livecd -IMAGE_PACKAGES = $(COMMON_PACKAGES) \ - $(LIVE_PACKAGES) \ - $(call map,list,$(LIVE_LISTS) $(LIVE_GROUPS)) \ +STAGE2_KMODULES = $(THE_KMODULES) $(LIVE_KMODULES) + +IMAGE_PACKAGES = $(COMMON_PACKAGES) $(THE_PACKAGES) $(LIVE_PACKAGES) \ + $(call map,list, \ + $(THE_LISTS) $(THE_GROUPS) \ + $(LIVE_LISTS) $(LIVE_GROUPS)) \ interactivesystem MKI_PACK_RESULTS = squash:live diff --git a/features.in/virtualbox/config.mk b/features.in/virtualbox/config.mk index 39ea4d30..452a9b9f 100644 --- a/features.in/virtualbox/config.mk +++ b/features.in/virtualbox/config.mk @@ -1,4 +1,4 @@ use/virtualbox/guest: @$(call add_feature) - @$(call add,KMODULES,virtualbox-addition) - @$(call add,BASE_PACKAGES,virtualbox-guest-additions) + @$(call add,THE_KMODULES,virtualbox-addition) + @$(call add,THE_PACKAGES,virtualbox-guest-additions) diff --git a/features.in/x11/config.mk b/features.in/x11/config.mk index 1eb42421..c684450b 100644 --- a/features.in/x11/config.mk +++ b/features.in/x11/config.mk @@ -1,10 +1,11 @@ use/x11/xorg: - @$(call add,BASE_LISTS,xorg) + @$(call add,THE_LISTS,xorg) + @$(call add,THE_KMODULES,drm) ### strictly speaking, runlevel5 should require a *dm, not vice versa use/x11/runlevel5: use/x11/xorg - @$(call add,BASE_PACKAGES,installer-feature-runlevel5-stage3) + @$(call add,THE_PACKAGES,installer-feature-runlevel5-stage3) ### xdm: see also #23108 use/x11/xdm: use/x11/runlevel5 - @$(call add,BASE_PACKAGES,xdm installer-feature-no-xconsole) + @$(call add,THE_PACKAGES,xdm installer-feature-no-xconsole) diff --git a/pkg.in/groups/Makefile b/pkg.in/groups/Makefile index 79890015..5a69b429 100644 --- a/pkg.in/groups/Makefile +++ b/pkg.in/groups/Makefile @@ -10,9 +10,10 @@ SUFFIX := pkg/groups TARGET := $(BUILDDIR)/$(SUFFIX) all: $(GLOBAL_DEBUG) - @if [ -n "$(MAIN_GROUPS)" ]; then \ + @if [ -n "$(THE_GROUPS)$(MAIN_GROUPS)" ]; then \ mkdir -p $(TARGET) && \ - cp -at $(TARGET) -- $(addsuffix .directory,$(MAIN_GROUPS)); \ + cp -at $(TARGET) -- \ + $(addsuffix .directory,$(THE_GROUPS) $(MAIN_GROUPS)); \ if type -t git >&/dev/null && cd $(TARGET); then \ if [ -n "`git status -s`" ]; then \ git add . && \ @@ -23,4 +24,5 @@ all: $(GLOBAL_DEBUG) fi debug: + @echo "** THE_GROUPS: $(THE_GROUPS)" @echo "** MAIN_GROUPS: $(MAIN_GROUPS)" diff --git a/pkg.in/lists/Makefile b/pkg.in/lists/Makefile index 6ed2d755..bdfcbaed 100644 --- a/pkg.in/lists/Makefile +++ b/pkg.in/lists/Makefile @@ -24,6 +24,7 @@ all: $(TARGET) $(GLOBAL_DEBUG) $(DOTBASE) $(shell cp --parents -at $(TARGET) \ -- $(value $V)))) +### FIXME: move to iterator/static pattern rule dot-base: @# construct .base packagelist for alterator-pkg @{ \ @@ -37,15 +38,21 @@ dot-base: if [ -n "$(COMMON_PACKAGES)" ]; then \ echo -e "\n## COMMON_PACKAGES\n$(COMMON_PACKAGES)"; \ fi; \ + if [ -n "$(THE_PACKAGES)" ]; then \ + echo -e "\n## THE_PACKAGES\n$(THE_PACKAGES)"; \ + fi; \ if [ -n "$(BASE_PACKAGES)" ]; then \ echo -e "\n## BASE_PACKAGES\n$(BASE_PACKAGES)"; \ fi; \ + if [ -n "$(THE_LISTS)" ]; then \ + echo -e "\n## THE_LISTS"; cat $(THE_LISTS); \ + fi; \ if [ -n "$(BASE_LISTS)" ]; then \ echo -e "\n## BASE_LISTS"; cat $(BASE_LISTS); \ fi; \ } | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' >$(TARGET)/.base - @if [ -n "$(MAIN_GROUPS)" ]; then \ - cp -at $(TARGET) -- $(MAIN_GROUPS); \ + @if [ -n "$(THE_GROUPS)$(MAIN_GROUPS)" ]; then \ + cp -at $(TARGET) -- $(THE_GROUPS) $(MAIN_GROUPS); \ fi @if type -t git >&/dev/null && cd $(TARGET); then \ if [ -n "`git status -s`" ]; then \ diff --git a/sub.in/main/Makefile b/sub.in/main/Makefile index c3bb8847..4459f07f 100644 --- a/sub.in/main/Makefile +++ b/sub.in/main/Makefile @@ -12,14 +12,19 @@ include $(MKIMAGE_PREFIX)/config.mk CHROOT_PACKAGES = apt-utils rsync -IMAGE_PACKAGES_REGEXP = $(call kpackages,$(KMODULES),$(KFLAVOURS)) \ - $(MAIN_PACKAGES_REGEXP) +IMAGE_PACKAGES_REGEXP = $(MAIN_PACKAGES_REGEXP) \ + $(call kpackages, \ + $(THE_KMODULES) \ + $(BASE_KMODULES) \ + $(MAIN_KMODULES), \ + $(KFLAVOURS)) -IMAGE_PACKAGES = $(call map,list,$(BASE_LISTS) $(MAIN_LISTS) $(MAIN_GROUPS)) \ - $(SYSTEM_PACKAGES) \ - $(COMMON_PACKAGES) \ - $(BASE_PACKAGES) \ - $(MAIN_PACKAGES) +IMAGE_PACKAGES = $(call map,list, \ + $(THE_LISTS) $(THE_GROUPS) \ + $(BASE_LISTS) \ + $(MAIN_LISTS) $(MAIN_GROUPS)) \ + $(SYSTEM_PACKAGES) $(COMMON_PACKAGES) \ + $(THE_PACKAGES) $(BASE_PACKAGES) $(MAIN_PACKAGES) MKI_DESTDIR = ALTLinux/RPMS.main MKI_PACK_RESULTS = data diff --git a/sub.in/stage1/Makefile b/sub.in/stage1/Makefile index aaba7b53..408da5ba 100644 --- a/sub.in/stage1/Makefile +++ b/sub.in/stage1/Makefile @@ -29,8 +29,9 @@ STAGE1_KFLAVOUR ?= $(lastword $(KFLAVOURS)) # propagator needed iff stage1 kernel installed (not for e.g. syslinux.iso) ifneq "$(STAGE1_KFLAVOUR)" "" BUILD_PROPAGATOR = build-propagator -CHROOT_PACKAGES_REGEXP := $(call kpackages,$(STAGE1_KMODULES_REGEXP),$(STAGE1_KFLAVOUR)) INFO_STAGE1_KFLAVOUR := $(STAGE1_KFLAVOUR) +CHROOT_PACKAGES_REGEXP := $(call kpackages, \ + $(STAGE1_KMODULES_REGEXP),$(STAGE1_KFLAVOUR)) endif CHROOT_PACKAGES_REGEXP += $(STAGE1_PACKAGES_REGEXP) diff --git a/sub.in/stage2/Makefile b/sub.in/stage2/Makefile index c225f8ea..cf724f87 100644 --- a/sub.in/stage2/Makefile +++ b/sub.in/stage2/Makefile @@ -32,7 +32,9 @@ endif # need kernel modules only (which require corresponding kernel-image); # these go into work chroot; NB: no vmlinuz there -IMAGE_PACKAGES_REGEXP = $(call kpackages,$(STAGE1_KMODULES),$(STAGE1_KFLAVOUR)) +IMAGE_PACKAGES_REGEXP = $(call kpackages, \ + $(STAGE1_KMODULES) $(STAGE2_KMODULES), \ + $(STAGE1_KFLAVOUR)) include $(MKIMAGE_PREFIX)/targets.mk diff --git a/sub.in/stage2/README b/sub.in/stage2/README index 95e9b811..75a3504f 100644 --- a/sub.in/stage2/README +++ b/sub.in/stage2/README @@ -5,6 +5,9 @@ Зависимость на него стоит прописывать в таких фичах; сама по себе (без нужного stage2cfg.mk) смысла не имеет. +Обратите внимание, что набор потенциально доступных в stage1 +модулей ядра для stage2 может быть расширен (STAGE2_KMODULES). + Результат -- соответственно названный файл со squashfs, подлежащий копированию в итоговый образ.