Compare commits

..

26 Commits

Author SHA1 Message Date
Michael Shigorin
f5178dee01 features.in/cleanup: auto-add feature tag
The extra tag to filter on was omitted while
moving the code from features.in/cleanup/generate.mk
into the more generic features.in/Makefile; fixed.

Auto-added tags will definitely see an overhaul
when it's more clear what can be done with them.
2011-11-04 16:15:31 +02:00
Michael Shigorin
08b935545a server-ovz.iso: employ proper cleanup
The reason not to add server cleanup right into
distro/server-base is the possibility to build
combined installers (read centaurus).
Gotta sort it out some day...
2011-11-04 16:15:30 +02:00
Michael Shigorin
5d37a0c54d avoid setting GLOBAL_* altogether
Applying set() and only set() to a GLOBAL_* is safe
but still a potentially confusing example; so let's
just do it right (and warn unsuspecting folks too).
2011-11-04 16:15:30 +02:00
Michael Shigorin
75fd795210 ensure that distcfg.mk gets included once at most
This was done while debugging GLOBAL_CLEANUP_PACKAGES
getting doubled... as it got no hard initial value but
rather was always added to, it appeared that at least
stage2/Makefile would obtain a once-initialized value
from upstream and double it while including distcfg.mk
itself.

It's way less hassle to just proxy the value once.
2011-11-04 16:15:30 +02:00
Michael Shigorin
c5bf0529bc initial features.in/cleanup
This is a sort of anti-feature which removes and not builds;
still with mkimage-profiles' approach we can at least build
up the removal procedures as well.

It's what triggered the tagged scripts, BTW.
2011-11-04 16:15:30 +02:00
Michael Shigorin
f32b8d4f6e features.in: tagged scripts support
From now on a feature can contain this tree:

.
+- scripts.d/
+- image-scripts.d/
`- tagged/
   +- scripts.d/
   `- image-scripts.d/

...per subprofile part or in its root -- the latter one
gets merged into toplevel directory responsible for the
final image build.

NB: autoselected tags include only subprofile names
    (or both parts, for complex subprofiles) --
    this is highly prone to change yet!
2011-11-04 16:15:30 +02:00
Michael Shigorin
4801579cf5 profile.mk: export PATH including bin/
Mostly needed for tags2lists at the moment;
note that PATH is exported for make recipes
but has no effect on make functions.
2011-11-04 16:15:30 +02:00
Michael Shigorin
3373a7bc89 Makefile: make everything
$(IMAGES) in prerequisites definitely won't work,
so let's do it straightforward.
2011-11-04 16:15:30 +02:00
Michael Shigorin
0c98733338 install2: use HSH_EXCLUDE_DOCS too
The docs would be purged anyways, let's not install them either.
2011-11-04 16:15:30 +02:00
Michael Shigorin
ef0d5e1581 doc/: minor update
Somewhat more uniform style and a few additional bits.
2011-11-04 16:15:30 +02:00
Michael Shigorin
5dbf407c0f features.in/Makefile: src/dst tweaks
Introduced support for hooks to be added to every
derivative substage of a "base" stage (think stage2/*).

Specific hooks for e.g. stage2/live would live in
features.in/*/live/*scripts.d/ while generic for stage2/* in
features.in/*/stage2/*scripts.d/
2011-11-04 16:15:30 +02:00
Michael Shigorin
74e81984f0 added some missing READMEs to a few features
(these *really* should be added atomically with the changes!)
2011-11-04 16:15:30 +02:00
Michael Shigorin
a3c0d2bbc3 initial features.in/dos
This was tackled before but it took raorn@'s hint regarding
sys-freedos-linux (ms-sys has no bootsectors compatible with
freedos currently) and gns@' quick rush at make-freedos-floppy
script to wrap things up.

Should be further developed to become actually useful though.
2011-11-04 16:15:30 +02:00
Michael Shigorin
eeccd5dfb1 pkg.in/lists/xorg -= wm-select
wm-select should only be needed when multiple window managers
are available.
2011-11-04 16:15:30 +02:00
Michael Shigorin
f32ae716e8 initial features.in/powerbutton
Should support ACPI and APM schemes;
only the former tested so far.
2011-11-04 16:15:30 +02:00
Michael Shigorin
774169c6cd COMMON_PACKAGES and SYSTEM_PACKAGES
It was clear that "common" isn't very apt for packages that
will get *everywhere*, and became apparent when the need for
a "base+live packages" variable arrived with powerbutton feature.

So:
- the former COMMON_PACKAGES are now SYSTEM_PACKAGES;
- COMMON_PACKAGES act as "BASE+LIVE_PACKAGES".

Note that SYSTEM_PACKAGES also got factored out from stage2 based
features into stage2 subprofile itself; cleanups were due as well.
2011-11-04 16:15:30 +02:00
Michael Shigorin
fba30e0675 docs update
Rather minor fixups for things changed in the meanwhile and not
yet (re)documented properly; and a change for memtest feature
to require syslinux feature (the code's been changed to fit
the updated description, actually, and the change is purely
formal as no syslinux alternative is being used/planned so far).
2011-11-04 16:15:30 +02:00
Michael Shigorin
69d5133a3b image.in/vars.mk: dump distcfg variables nicely
distcfg.mk is nice for tracing the variable values' build-up,
but it's more useful to have a look at the final result sometimes.
So here it is, logged for each build and callable by hand.
2011-11-04 16:15:30 +02:00
Michael Shigorin
7f555ed7a1 ensure that image output directory does exist
It turned out that ~/out masked the broken execution path
when it's absent (which was handled incompletely).  Sigh.
2011-11-04 16:15:30 +02:00
Michael Shigorin
b56df31624 cosmetic fixup (s/GROUPS/MAIN_GROUPS/g)
MAIN_GROUPS should align better along with MAIN_PACKAGES
and MAIN_LISTS (even if MAIN_ prefix might be suboptimal
given that these packages are essentially extras within
the particular image).
2011-11-04 16:15:30 +02:00
Michael Shigorin
4dfd689810 minicd.iso -> server-mini.iso (and more tags)
minicd target was a hasty hack indeed, let's put it in line;
an attempt at practical use discovered the lack of important
packages like dhcpcd, these were added on per package basis
and quickly remade to use tags -- which seem to fit better.
2011-11-04 16:15:30 +02:00
Michael Shigorin
cf81cc6785 live, rescue, and use tags
It's still very immature -- base lists should be really base,
and functionality should be sorted out in more consistent way.
So far moved to tagged lists (which need some more experimentation
anyways to get both lists and their use more elegant).

- fixed live.iso (now actually useful):
  + extra cleanup was being done (coming from install2 case)
  + root user was password blocked
  + there was no unprivileged user (added "altlinux" w/o password)
  + added xdm setup hook for future X-based livecd flavours
  + several picks for a less slim "base" list
  + xdm login
- tweaked rescue.iso (added ext3grep)
2011-11-04 16:15:30 +02:00
Michael Shigorin
3d10c59d2b test-based ramdisk size for live squashfs images
Implementation based on m-p-d::profiles/scripts.d/03-syslinux
(but heavily modified for m-p of course)
2011-11-04 16:15:30 +02:00
Michael Shigorin
3a5b47e712 improved logging during profile creation
- better *_LISTS printout
- somewhat cleaner .base comments
- more comprehensible git log messages
  + special handling for complex subprofiles
  + no need to commit build.log ;-)
2011-11-04 16:15:30 +02:00
Michael Shigorin
2b90dffa6f don't override targets for no reason 2011-11-04 16:15:30 +02:00
Michael Shigorin
5c54341044 features.in/Makefile: subtle but important typo fix
dst a shell variable in a makefile recipe,
its dereference must be escaped properly;
the net result was false positive for the test
with no harm being done but extra stuff tossed
into the generated profile
2011-11-04 16:15:30 +02:00
71 changed files with 504 additions and 174 deletions

View File

@@ -18,6 +18,8 @@ include distro.mk
include log.mk
include iso.mk
.PHONY: $(IMAGES)
# we can't use implicit rules for top-level targets, only for prereqs
# NB: what about static pattern rules?
# TODO: move into libdistro?
@@ -30,10 +32,14 @@ IMAGEDIR ?= $(shell [ -d "$$HOME/out" -a -w "$$HOME/out" ] \
|| echo "$(BUILDDIR)/out" )
IMAGENAME ?= mkimage-profiles-$(ARCH).iso
everything:
@for i in $(IMAGES); do $(MAKE) BUILDDIR=$(BUILDDIR) $$i; done
$(IMAGES): %.iso: | profile/init distro/% boot/isolinux profile/populate iso
@# TODO: run automated tests (e.g. iso size)
@OUTNAME="$(@:.iso=)-$(DATE)-$(ARCH).iso"; \
OUTPATH="$(IMAGEDIR)/$$OUTNAME"; \
mkdir -p "$(IMAGEDIR)" && \
test -s "$(IMAGEDIR)/$(IMAGENAME)" && \
mv "$(IMAGEDIR)/$(IMAGENAME)" "$$OUTPATH" && \
echo "** image: $$OUTPATH" && \

4
README
View File

@@ -57,10 +57,10 @@ license: GPLv2+, see COPYING
NB: перечисленные в этих переменных файлы автоматически копируются
в порождаемый профиль => не следует указывать пакаджлисты напрямую
- индивидуальные пакеты (*_PACKAGES): следует крайне осторожно пользоваться
COMMON_PACKAGES -- эти пакеты попадут во все стадии, в том числе в образ
SYSTEM_PACKAGES -- эти пакеты попадут во все стадии, в том числе в образ
чувствительной к объёму install2 (в stage1 -- только в инструментальный
чрут); применяйте для того, что обязано быть и в инсталяторе, и в готовой
системе
системе -- и не путайте с COMMON_PACKAGES (main, live, rescue)
Результат:
- при успешном завершении сборки образ называется сообразно

View File

@@ -26,7 +26,7 @@ distro/syslinux: distro/.init distro/.branding sub/stage1 \
use/syslinux/ui-vesamenu use/hdt use/memtest use/dos
# $(VAR) will be substituted before writing them to $(CONFIG);
# $$(VAR) will remain unsubstituted util $(CONFIG) is included
# $$(VAR) will remain unsubstituted until $(CONFIG) is included
# and their value requested (so the variable referenced
# can change its value during configuration _before_
# it's actually used); just peek inside $(CONFIG) ;-)
@@ -36,6 +36,7 @@ distro/syslinux: distro/.init distro/.branding sub/stage1 \
distro/live: distro/.base use/live use/syslinux/ui-menu
distro/rescue: distro/.base use/rescue use/syslinux/ui-menu
distro/dos: sub/stage1 use/dos use/syslinux/ui-menu
# something actually useful (as a network-only installer)
# NB: doesn't carry stage3 thus cannot use/bootloader
@@ -49,29 +50,37 @@ distro/server-base: distro/installer sub/main \
use/syslinux/ui-menu use/memtest use/bootloader/grub
@$(call add,BASE_LISTS,server-base)
distro/server-ovz: distro/server-base use/hdt use/rescue use/firmware/server
distro/server-mini: distro/server-base use/cleanup/x11-alterator
@$(call set,KFLAVOURS,el-smp)
@$(call add,KMODULES,e1000e igb)
@$(call add,BASE_LISTS,\
$(call tags,base && (server || network || security || pkg)))
@$(call add,BASE_LISTS,$(call tags,extra network))
distro/server-ovz: distro/server-base \
use/hdt use/rescue use/firmware/server use/powerbutton/acpi \
use/cleanup/x11-alterator
@$(call set,STAGE1_KFLAVOUR,std-def)
@$(call set,KFLAVOURS,std-def ovz-el)
@$(call add,KMODULES,bcmwl e1000e igb ndiswrapper rtl8168 rtl8192)
@$(call add,KMODULES,ipset ipt-netflow opendpi pf_ring xtables-addons)
@$(call add,KMODULES,drbd83 kvm)
@$(call add,MAIN_LISTS,kernel-wifi)
@$(call add,BASE_LISTS,ovz-server)
@$(call add,BASE_LISTS,$(call tags,base server))
@$(call add,GROUPS,dns-server http-server ftp-server kvm-server)
@$(call add,GROUPS,ipmi mysql-server dhcp-server mail-server)
@$(call add,GROUPS,monitoring diag-tools)
distro/minicd: distro/server-base
@$(call set,KFLAVOURS,pure-emerald) # usually recent drivers
@$(call add,MAIN_PACKAGES,etcnet-full)
@$(call add,MAIN_LISTS,kernel-wifi)
@$(call add,MAIN_GROUPS,dns-server http-server ftp-server kvm-server)
@$(call add,MAIN_GROUPS,ipmi mysql-server dhcp-server mail-server)
@$(call add,MAIN_GROUPS,monitoring diag-tools)
# desktop distributions
distro/desktop-base: distro/installer sub/main \
use/syslinux/ui-vesamenu use/x11/xorg use/bootloader/grub
distro/icewm: distro/desktop-base use/lowmem use/x11/xdm use/x11/runlevel5 use/bootloader/lilo
distro/icewm: distro/desktop-base \
use/lowmem use/x11/xdm use/x11/runlevel5 \
use/bootloader/lilo use/powerbutton/acpi \
use/cleanup/alterator
@$(call add,BASE_LISTS,$(call tags,icewm desktop))
# NB: if there are too many screens above, it might make sense to distro.d/

View File

@@ -1,3 +1,5 @@
предположения фрагментов кода об окружении
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- pkg.in/lists/Makefile
+ ожидает, что названия пакаджлистов указываются в переменных
вида *_LISTS, и копирует в генерируемый профиль только их
@@ -15,3 +17,13 @@
+ если добавить какой-либо kernel-image в STAGE1_PACKAGES*,
результат может быть неожиданным
+ вероятная ошибка: незагрузка полученного squashfs
- features.in/install2/install2/stage2cfg.mk
- features.in/live/live/stage2cfg.mk
- features.in/rescue/rescue/stage2cfg.mk
- features.in/syslinux/cfg.in/15live.cfg
- features.in/syslinux/cfg.in/20install2.cfg
- features.in/syslinux/cfg.in/80rescue.cfg
- features.in/syslinux/scripts.d/20-propagator-ramdisk
+ ожидают, что названия squashfs-образов второй стадии инсталятора,
livecd и спасательной системы соответственно altinst, live и rescue

21
doc/debug.txt Normal file
View File

@@ -0,0 +1,21 @@
ловля плюх
~~~~~~~~~~
При отладке сборки конфигурации или самого дистрибутива
могут оказаться полезными следующие средства:
- build/distcfg.mk
+ формируется автоматически в процессе построения конфигурации;
+ содержит трассировочную информацию (откуда что взялось);
+ этот файл применяется как авторитетный конфигурационный
- build/build.log
+ подробность зависит от значения переменной DEBUG,
которую можно передать при запуске make (см. variables.txt);
+ содержит коммит, из которого происходит сборка, и признак
"грязности" рабочего каталога при наличии модификаций после
этого коммита;
+ содержит список конфигурационных переменных и их конечных значений,
созданный на основании distcfg.mk (см. тж. build/vars.mk)
Общая информация по отладке сборки профилей mkimage:
http://www.altlinux.org/Mkimage/debug

View File

@@ -1,3 +1,5 @@
фичи
~~~~
Особенности дистрибутива, не учитываемые в пакетной базе
или зависящие от переменных времени сборки/установки образа,
могут быть оформлены несколькими образами:
@@ -18,4 +20,10 @@
* необходимы пакетные зависимости;
* требуется компилируемый платформозависимый код (для чего бы...);
* код фичи достаточно специфичен, нетривиален и объёмен,
чтобы загромождать метапрофиль было не очень осмысленно.
чтобы загромождать метапрофиль было не очень осмысленно;
* фича представляет из себя отдельный мини-продукт, над которым
ведётся активная работа (возможно, несколькими людьми).
Стоит избегать изменения пакетных умолчаний в случае, когда их
представляется осмысленным и возможным скорректировать в пакете:
таким образом они станут более дистрибутивными.

View File

@@ -1,3 +1,5 @@
переменные make
~~~~~~~~~~~~~~~
При запуске на сборку принимается ряд переменных
(см. тж. profiles.mk.sample):
@@ -27,3 +29,7 @@
+ включение средств отладки
+ значение: пусто (по умолчанию), 1 или 2
+ см. log.mk
пример
~~~~~~
make DEBUG=1 CLEAN=1 syslinux.iso

View File

@@ -14,7 +14,8 @@
её в переменную FEATURES -- к сожалению, реализовать добавление
автоматом не представляется возможным). Если название фичи не
упоминается в списке, содержащемся в этой переменной, то она
и не задействуется при построении профиля.
не задействуется при построении профиля, а только при сборке
конфигурации дистрибутива.
Остальное содержимое является дополнительным и используется
в таком порядке (см. features.in/Makefile):
@@ -31,11 +32,11 @@
- затем используется generate.mk, если существует и непустой.
Например, если дистрибутив требует субпрофили stage1, install2
Например, если используются субпрофили stage1, stage2/install2
и main, вы можете решить собрать специфические для фичи скрипты
инсталятора в install2/image-scripts.d/ (или необходимые для
операций с пакетной базой -- в main/scripts.d/, смотря чего надо
добиться; загляните также в документацию mkimage).
операций с пакетной базой -- в main/scripts.d/, смотря чего
надо добиться; загляните также в документацию mkimage).
А если требуются нетривиальные действия по конфигурированию
(как при сборке syslinux.cfg из кусочков, в зависимости от того,

View File

@@ -5,39 +5,72 @@ ifndef BUILDDIR
$(error BUILDDIR not defined)
endif
-include $(BUILDDIR)/distcfg.mk
include $(BUILDDIR)/distcfg.mk
# first rsync what's static, and make backups --
# first rsync what's static, and make backups (*~) --
# these might signal of file clashes (or plain dirt);
# second, care for toplevel and tagged script dirs;
# then handle two more ways of implementing a feature
# NB: subprofile can be specified as src/dest
#
# NB: some subprofiles will be specified as "src/dst"
# -- then both src/ and dst/ can hold the addons;
# still both pieces go into a single destination
### {image-,}scripts.d/ get rsynced twice :-/
### still we don't want the trimmed-down case
all:
@echo "** starting feature configuration"
@if test -n "$(GLOBAL_DEBUG)"; then echo "** requested: $(FEATURES)"; fi
@for dir in $(FEATURES); do \
for sub in $(SUBPROFILES); do \
dst="${sub#*/}" && \
if test -d "$$dir/$$dst/"; then \
if rsync -ab "$$dir/$$dst/" "$(BUILDDIR)/$$dst/"; \
then \
type -t git >&/dev/null && \
pushd "$(BUILDDIR)/$$dst/" && \
git add . && \
git commit -qam "$@/$$dir/$$dst" ||:; \
popd; \
@if [ -n "$(GLOBAL_DEBUG)" ]; then \
echo "** target subprofiles: $(SUBPROFILES)"; \
echo "** requested features: $(FEATURES)"; \
fi
@for feat in $(FEATURES); do \
pushd "$$feat" && \
for sub in / $(SUBPROFILES); do \
src="$${sub%/*}"; \
dst="$${sub#*/}"; \
if [ -d "$$src" ]; then rsync -qab "$$src/" "$(BUILDDIR)/$$dst/"; fi; \
if [ -d "$$dst" ]; then rsync -qab "$$dst/" "$(BUILDDIR)/$$dst/"; fi; \
for scr in {image-,}scripts.d; do \
scriptdir="$(BUILDDIR)/$$dst/$$scr/"; \
if [ -d "$$scriptdir" ]; then \
if [ -d "$$scr" ]; then \
rsync -qab "$$scr/" "$$scriptdir/"; \
fi; \
if [ -d "tagged/$$scr" ]; then \
pushd "tagged/$$scr" && \
echo "$$feat && ($$src || $$dst)" \
| tags2lists . \
| xargs -r cp -v -pLt "$$scriptdir" --; \
popd; \
fi; \
fi; \
done; \
type -t git >&/dev/null && \
pushd "$(BUILDDIR)/$$dst/" && \
git add . && \
if [ -n "$$dst" ]; then \
the="$$sub subprofile"; \
else \
the="toplevel"; \
fi; \
done; \
if test -x "$$dir/generate.sh"; then \
pushd "$$dir" && \
sh generate.sh; \
git commit -qam "$$feat feature ($$the part)" ||:; \
popd; \
fi; \
if test -s "$$dir/generate.mk"; then \
$(MAKE) -C "$$dir" -f generate.mk; \
fi; \
done; \
if [ -x "generate.sh" ]; then sh generate.sh; fi; \
if [ -s "generate.mk" ]; then $(MAKE) -f generate.mk; fi; \
type -t git >&/dev/null && \
pushd "$(BUILDDIR)/" && \
git add . && \
git commit -qam "$$feat feature generation complete" ||:; \
popd; \
popd; \
done
@find "$(BUILDDIR)/" -name '*~' \
| sed "s,$(BUILDDIR)/,** warning: file clash: ," >&2
help:
@echo "** available features:"
@grep -h '^use/' */config.mk
# FIXME: drop or fix regarding undefined BUILDDIR being ok
#help:
# @echo "** available features:"
# @grep -h '^use/' */config.mk | fmt -sw"$$((COLUMNS>>1))" | column -t

View File

@@ -13,8 +13,16 @@
после инициализации профиля (см. ../image.in/) и копирования
субпрофилей (см. ../sub.in/). Для каждой фичи, указанной
в $(FEATURES), копируются подкаталоги сообразно субпрофилям,
а также выполняется скрипт generate.sh и задействуется generate.mk
(при их наличии).
а также производится обработка {tagged/,}{image-},scripts.d/
(см. cleanup/ в качестве примера); затем выполняется скрипт
generate.sh и задействуется generate.mk (при их наличии).
NB: тегированные скрипты являются экспериментальными,
возможны недоработки и существенные изменения!
Если фича дополняет хуками семейство целевых субпрофилей,
построенных на одном базовом, можно воспользоваться подкаталогом
с именем исходного базового субпрофиля (см. $src, $dst в Makefile).
Несложный пример содержится в 00example/, более близкий к жизни
и нынешним пределам возможностей метапрофиля -- в syslinux/.

View File

@@ -6,4 +6,4 @@
и требует пакет выбранного загрузчика.
Реализация экспериментальная (нужно модуляризовать installer-steps),
завязана на installer-distro-altlinux-generic = 6.0-alt2.
пока завязана на installer-distro-altlinux-generic.

View File

@@ -3,7 +3,7 @@
# - remember .base if adding yet another *_PACKAGES
use/bootloader: use/install2 sub/main
@$(call add,BASE_PACKAGES,alterator-$$(GLOBAL_BASE_BOOTLOADER))
@$(call add,BASE_PACKAGES,alterator-$$(BASE_BOOTLOADER))
use/bootloader/grub use/bootloader/lilo: use/bootloader/%: use/bootloader
@$(call set,GLOBAL_BASE_BOOTLOADER,$*)
@$(call set,BASE_BOOTLOADER,$*)

View File

@@ -0,0 +1,6 @@
Эта фича вместо созидания занимается выкидыванием лишнего
(например, части модулей инсталятора из установленной системы).
По возможности стоит работать над дизайном инфраструктуры
и пакетной базой так, чтобы ставить-удалять приходилось как
можно меньше. В идеале такой антифичи не должно быть вовсе :)

View File

@@ -0,0 +1,19 @@
use/cleanup:
@$(call add,FEATURES,cleanup)
use/cleanup/installer: use/cleanup
@$(call add,CLEANUP_PACKAGES,'installer-*')
use/cleanup/x11: use/cleanup
@$(call add,CLEANUP_PACKAGES,libSM libXext libXmu libXi)
# as some alterator modules are installed into stage3 (the destination
# root filesystem) to perform actions like bootloader setup, we might
# have to remove them (contrary to the usual build-up)...
use/cleanup/alterator: use/cleanup
@$(call add,CLEANUP_PACKAGES,'alterator*' rpm-macros-alterator)
@$(call add,CLEANUP_PACKAGES,'guile*' libvhttpd)
# for lightweight server distros
use/cleanup/x11-alterator: use/cleanup/x11 use/cleanup/alterator
@$(call add,CLEANUP_PACKAGES,libmng qt4-common)

View File

@@ -0,0 +1,20 @@
#!/bin/sh -efu
if [ -n "$GLOBAL_VERBOSE" ]; then
echo "** GLOBAL_CLEANUP_PACKAGES: $GLOBAL_CLEANUP_PACKAGES"
fi >&2
SCRIPT="/usr/share/install2/postinstall.d/01+install2+cleanup"
cat > "$SCRIPT" << EOF
#!/bin/sh -efu
. install2-init-functions
# don't override the script start message on the same line
echo "removing $GLOBAL_CLEANUP_PACKAGES"
# remove extra packages from installed system
list="\$(exec_chroot rpmquery -a --qf='%{NAME}\\n' $GLOBAL_CLEANUP_PACKAGES)"
[ -z "\$list" ] || exec_chroot apt-get remove -f -y -- \$list
EOF
chmod +x "$SCRIPT"

6
features.in/dos/README Normal file
View File

@@ -0,0 +1,6 @@
Фича добавляет создание FreeDOS "live floppy" в stage1.
Текущее состояние -- загружается минимальная система.
Для практического применения (в первую очередь это
перешивка firmware) требуется сделать подключение
CD и/или USB Flash с тем, чтобы класть туда прошивки.

View File

@@ -0,0 +1,5 @@
use/dos: use/syslinux
@$(call add,FEATURES,dos)
@$(call add,SYSLINUX_CFG,dos)
@$(call add,SYSLINUX_FILES,/usr/lib/syslinux/memdisk)
@$(call add,STAGE1_PACKAGES,make-freedos-floppy glibc-gconv-modules)

View File

@@ -0,0 +1,6 @@
#!/bin/sh -x
# create a barebone bootable freedos floppy
# TODO: some sub-framework to populate it as well
mkdir -p "$WORKDIR/syslinux"
make-freedos-floppy "$WORKDIR/syslinux/freedos.img"

View File

@@ -0,0 +1,7 @@
Эта фича добавляет комплекты различного firmware в инсталятор,
устанавливаемую систему и т.п.
Следует учитывать, что объём добавленного может быть довольно
существенным -- в десктопе вряд ли нужен микрокод для FC HBA
или SCSI RAID, который может быть критичен для полезного
серверного или спасательного дистрибутива (см. #18047).

View File

@@ -3,14 +3,14 @@
# for mkmodpack to use
use/firmware:
@$(call add,COMMON_PACKAGES,firmware-linux)
@$(call add,SYSTEM_PACKAGES,firmware-linux)
use/firmware/server: use/firmware
@$(call add,COMMON_PACKAGES,firmware-aic94xx-seq)
@$(call add,SYSTEM_PACKAGES,firmware-aic94xx-seq)
@$(call add,MAIN_PACKAGES_REGEXP,firmware-ql.*)
use/firmware/desktop: use/firmware
@$(call add,COMMON_PACKAGES,firmware-psb)
@$(call add,SYSTEM_PACKAGES,firmware-psb)
use/firmware/wireless: use/firmware
@$(call add,MAIN_PACKAGES,firmware-acx100)

View File

@@ -1,4 +1,4 @@
use/install2: use/stage2 sub/stage2/install2
use/install2: use/stage2 sub/stage2/install2 use/cleanup/installer
@$(call add,FEATURES,install2)
@$(call set,INSTALL2_PACKAGES,installer-distro-$$(INSTALLER)-stage2)
@$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator)

View File

@@ -1,11 +1,17 @@
# stage2 mod: build install2 subprofile (installer "live" part)
IMAGE_PACKAGES = $(COMMON_PACKAGES) \
$(INSTALL2_PACKAGES) \
IMAGE_PACKAGES = $(INSTALL2_PACKAGES) \
udev e2fsprogs glibc-nss
MKI_PACK_RESULTS = squash:altinst
# also removed in a cleanup hook but to spare a few cycles...
HSH_EXCLUDE_DOCS = 1
# pass downstream
GLOBAL_BASE_BOOTLOADER := $(BASE_BOOTLOADER)
debug:
@echo "** install2: IMAGE_PACKAGES: $(IMAGE_PACKAGES)"
@echo "** install2: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)"
@echo "** install2: CLEANUP_PACKAGES: $(CLEANUP_PACKAGES)"

View File

@@ -1,3 +1,3 @@
use/live: use/stage2 sub/stage2/live
@$(call add,FEATURES,live)
# @$(call add,LIVE_LISTS,base-live)
@$(call add,LIVE_LISTS,$(call tags,(base || desktop) && (live || network || icewm)))

View File

@@ -0,0 +1,52 @@
#!/bin/sh
# * reset password for root
# * add user `altlinux' (without password)
verbose()
{
if [ -n "$GLOBAL_VERBOSE" ]; then
echo "HOOK: 30-users: $@"
fi
}
add_user()
{
verbose "Add $1 user"
local groups=
for g in users scanner audio radio proc cdrom cdwriter wheel fuse; do
if groupmod $g 2>/dev/null; then
if [ -n "$groups" ]; then
groups="$groups,$g"
else
groups="$g"
fi
fi
done
/usr/sbin/useradd -p "" -G "$groups" "$1" ||:
chown -R "$1:auth" "/etc/tcb/$1"
chown -R "$1:$1" /home/$1
if [ -n "$GLOBAL_CRYPT_HOMES" ]; then
verbose "Set password for user $1"
echo "$1" | passwd --stdin $1
fi
sudoers="/etc/sudoers"
if [ -w "$sudoers" ]; then
verbose "Add $1 to sudoers."
echo "$1 ALL=(root) NOPASSWD:ALL" >> "$sudoers"
else
verbose "Can't find writable $sudoers file."
fi
}
verbose "has started"
verbose "Clear password for root account"
/usr/sbin/usermod -p "" root
chown -R root.auth /etc/tcb/root
add_user altlinux
verbose "finished"

View File

@@ -2,7 +2,7 @@
IMAGE_PACKAGES = $(COMMON_PACKAGES) \
$(LIVE_PACKAGES) \
$(call map,list,$(LIVE_LISTS) $(LIVE_GROUPS)) \
$(call map,list,$(LIVE_LISTS) $(LIVE_MAIN_GROUPS)) \
interactivesystem
MKI_PACK_RESULTS = squash:live

View File

@@ -0,0 +1,2 @@
Эта фича дополняет зачистку "живой" стадии инсталятора
с тем, чтобы уменьшить её размер и требования к памяти.

View File

@@ -1,5 +1,2 @@
Добавление memtest86+ в загрузку с образа и в устанавливаемую пакетную базу;
востребовано для для инсталяторов, live/rescue.
NB: интегрируется с syslinux (проверено/работает), но _не_ требует
use/syslinux на случай, если прикрутим поддержку других загрузчиков.
востребовано для для инсталяторов, live/rescue. Интегрируется с syslinux.

View File

@@ -1,4 +1,4 @@
use/memtest:
use/memtest: use/syslinux
@$(call add,FEATURES,memtest)
@$(call add,COMMON_PACKAGES,memtest86+)
@$(call add,SYSTEM_PACKAGES,memtest86+)
@$(call add,SYSLINUX_CFG,memtest)

View File

@@ -0,0 +1,2 @@
Эта фича конфигурирует поддержку управления кнопкой питания
-- выключение для ACPI, засыпание для APM (не проверялось).

View File

@@ -0,0 +1,14 @@
# common
use/powerbutton:
@$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3)
# modern power management
use/powerbutton/acpi: use/powerbutton
@$(call add,COMMON_PACKAGES,acpid acpid-events-power)
use/powerbutton/powersave: use/powerbutton/acpi
@$(call add,COMMON_PACKAGES,powersave)
# legacy power management
use/powerbutton/apm: use/powerbutton
@$(call add,COMMON_PACKAGES,apmd)

View File

@@ -1,3 +1,4 @@
use/rescue: use/stage2 sub/stage2/rescue
@$(call add,FEATURES,rescue)
@$(call add,RESCUE_LISTS,base-rescue)
@$(call add,RESCUE_LISTS,$(call tags,base && (rescue || network)))
@$(call add,RESCUE_LISTS,$(call tags,extra network))

View File

@@ -1,5 +1,4 @@
label live
menu label ^LiveCD (no hard disk needed)
kernel alt0/vmlinuz
append initrd=alt0/full.cz live ramdisk_size=72000 fastboot stagename=live showopts automatic=method:cdrom
### FIXME: see m-p-d::profiles/scripts.d/03-syslinux
append initrd=alt0/full.cz live ramdisk_size=@live_size@ fastboot stagename=live showopts automatic=method:cdrom

View File

@@ -1,8 +1,8 @@
label linux
menu label ^Install ALT Linux
kernel alt0/vmlinuz
append initrd=alt0/full.cz changedisk vga=0x314 quiet=1 showopts automatic=method:cdrom
append initrd=alt0/full.cz ramdisk_size=@altinst_size@ changedisk vga=0x314 quiet=1 showopts automatic=method:cdrom
label noapic
menu label ^Failsafe install
kernel alt0/vmlinuz
append initrd=alt0/full.cz changedisk showopts nolapic noapic
append initrd=alt0/full.cz ramdisk_size=@altinst_size@ changedisk showopts nolapic noapic

View File

@@ -1,5 +1,4 @@
label rescue
menu label ^Rescue LiveCD
kernel alt0/vmlinuz
append initrd=alt0/full.cz live ramdisk_size=72000 fastboot stagename=rescue showopts automatic=method:cdrom
### FIXME: see m-p-d::profiles/scripts.d/03-syslinux
append initrd=alt0/full.cz live ramdisk_size=@rescue_size@ fastboot stagename=rescue showopts automatic=method:cdrom

View File

@@ -0,0 +1,4 @@
label freedos
menu label Live ^FreeDOS
kernel memdisk
append initrd=freedos.img

View File

@@ -0,0 +1,13 @@
#!/bin/sh -x
# postprocess isolinux configuration
# when the image sizes are finally known
cd "$WORKDIR"
# apply size census while looking for potential squashfs images
find -maxdepth 1 -type f -size +1M \
| sed 's,^\./,,' \
| while read image; do
size="$[ $(stat -c%s "$image") / 1024 + 1 ]"
sed -i "s,@${image}_size@,$size," syslinux/*.cfg
done

View File

@@ -34,3 +34,6 @@ grep -hv '^#' .in/[0-9][0-9]*.cfg > "$BOOTLOADER.cfg"
# snippets are not going into the actual image
if test "$DEBUG" != 2; then rm -r .in/; fi
# NB: there will be final macro expansion based on actual image sizes
# (done by ../../scripts.d/10-propagator-ramdisk)

1
features.in/x11/README Normal file
View File

@@ -0,0 +1 @@
Эта фича добавляет базовую поддержку графической системы X11.

View File

@@ -15,6 +15,7 @@ endef
# add() just appends an additive rule...
add = $(and $(1),$(2),$(add_body))
define add_body
$(if $(filter GLOBAL_% INFO_%,$(1)),$(warning add,$(1) might be a problem)) \
{ $(log_body); \
printf '%s += %s\n' '$(1)' '$(2)' >> "$(CONFIG)"; }
endef

1
image.in/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
build.log

View File

@@ -32,34 +32,35 @@ else
GLOBAL_HSH_APT_CONFIG = $(APTCONF)
endif
# Metadata/ needed only for installers (and not for e.g. syslinux.iso)
ifneq "$(STAGE1_KFLAVOUR)$(KFLAVOURS)" ""
METADATA = metadata
endif
include $(MKIMAGE_PREFIX)/targets.mk
all: $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
$(GLOBAL_CLEAN_WORKDIR)
# Metadata/ needed only for installer (and not for e.g. syslinux.iso)
ifeq "$(STAGE1_KFLAVOUR)$(KFLAVOURS)" ""
metadata:
@echo "** skipping metadata target, no stage1 kernel installed"
else
prep: $(GLOBAL_DEBUG) dot-disk $(METADATA) $(IMAGEDIR)
metadata: dot-base
@mkdir -p files/Metadata
@rm -f files/Metadata/pkg-groups.tar
# see also alterator-pkg (backend3/pkg-install); we only tar up what's up to it
@tar -cvf files/Metadata/pkg-groups.tar -C $(PKGDIR) \
$$(echo $(call list,$(GROUPS) .base) \
$(call group,$(GROUPS)) \
$$(echo $(call list,$(MAIN_GROUPS) .base) \
$(call group,$(MAIN_GROUPS)) \
| sed 's,$(PKGDIR)/*,,g')
endif
dot-base:
@echo -e "# auto-added in image.in/Makefile" >> $(call list,.base)
@echo "$(call kpackages,$(KMODULES),$(KFLAVOURS))" >> $(call list,.base)
prep: $(GLOBAL_DEBUG) dot-disk metadata $(IMAGEDIR)
@{ \
echo -e "\n## added by image.in/Makefile"; \
echo "$(call kpackages,$(KMODULES),$(KFLAVOURS))"; \
} >> $(call list,.base)
$(IMAGEDIR):
mkdir -p "$(IMAGEDIR)"
@mkdir -p "$(IMAGEDIR)"
# specified only for the final image, not for the subparts
pack-image: OUTDIR = $(IMAGEDIR)
@@ -74,7 +75,8 @@ dot-disk:
@echo "ALT Linux based" >files/.disk/info
@echo "$(ARCH)" >files/.disk/arch
@echo "$(DATE)" >files/.disk/date
@type -t git >&/dev/null && ( \
cd $(TOPDIR) && \
git show-ref --head -d -s -- HEAD 2>/dev/null; \
) >files/.disk/commit
@if type -t git >&/dev/null; then \
( cd $(TOPDIR) && \
git show-ref --head -ds -- HEAD ) \
>files/.disk/commit 2>/dev/null; \
fi

View File

@@ -1,7 +1,6 @@
Этот каталог копируется из метапрофиля в профиль "как есть"
и формирует "затравку", собирающую собственно образ из результатов
работы индивидуальных субпрофилей (в т.ч. стадий инсталятора,
см. ../sub.in/).
работы индивидуальных субпрофилей (см. ../sub.in/).
Содержимое files/ копируется в корень образа.

View File

@@ -1,4 +1,4 @@
#!/bin/sh
# TODO: invent some way to remove this inter-subprofile thing
rm -vf $WORKDIR/{squashcfg.mk,initfs}
rm -vf $WORKDIR/{squashcfg.mk,initfs,.gitignore}

View File

@@ -1,4 +1,5 @@
#!/bin/sh
# FIXME: bring to common style
verbose()
{

14
image.in/vars.mk Normal file
View File

@@ -0,0 +1,14 @@
# dump interesting variables' effective values;
# based on http://stackoverflow.com/questions/7117978
SPAM := $(.VARIABLES) DISTCFG_MK
-include distcfg.mk
HAM := $(.VARIABLES)
.PHONY: dump-vars
dump-vars:
$(foreach v, \
$(filter-out $(SPAM) SPAM,$(sort $(HAM))), \
$(info $(v) = $($(v))))
@:

View File

@@ -5,6 +5,7 @@ ifndef BUILDDIR
$(error BUILDDIR not defined)
endif
# sequential execution, no reason to haste
all:
@for dir in lists groups; do \
$(MAKE) -C $$dir; \

View File

@@ -10,15 +10,15 @@ SUFFIX := pkg/groups
TARGET := $(BUILDDIR)/$(SUFFIX)
all: $(GLOBAL_DEBUG)
@if [ -n "$(GROUPS)" ]; then \
@if [ -n "$(MAIN_GROUPS)" ]; then \
mkdir -p $(TARGET) && \
cp -at $(TARGET) -- $(addsuffix .directory,$(GROUPS)); \
cp -at $(TARGET) -- $(addsuffix .directory,$(MAIN_GROUPS)); \
type -t git >&/dev/null && \
cd $(TARGET) && \
git add . && \
git commit -qam "$(SUFFIX)"; \
git commit -qam "requested $(SUFFIX) copied over"; \
cd - >&/dev/null; \
fi
debug:
@echo "** GROUPS: $(GROUPS)"
@echo "** MAIN_GROUPS: $(MAIN_GROUPS)"

View File

@@ -1,6 +1,6 @@
Этот каталог содержит описания групп, копируемые из метапрофиля
в создаваемый профиль по необходимости (только фигурирующие в
списке, которым является значение переменной GROUPS).
списке, которым является значение переменной MAIN_GROUPS).
В данный момент перенесено почти 1:1 из mkimage-profiles-desktop,
требует увязки с ../lists/tagged/.

View File

@@ -10,38 +10,47 @@ SUFFIX := pkg/lists
TARGET := $(BUILDDIR)/$(SUFFIX)
all: $(TARGET) $(GLOBAL_DEBUG)
# env | sort -u | grep _LISTS | xargs cp
@# env | sort -u | grep _LISTS | xargs cp
@$(foreach V, \
$(filter %_LISTS,$(sort $(.VARIABLES))), \
$(if $(filter environment% file,$(origin $V)),\
$(shell cp --parents -at $(TARGET) \
-- $(value $V))))
# construct .base packagelist for alterator-pkg
@( \
echo "### generated via pkg.in/lists/Makefile" && \
echo "### BASE_LISTS" && \
cat $(BASE_LISTS) /dev/null && \
echo "### branding" && \
echo "branding-$(BRANDING)-release" && \
echo "### COMMON_PACKAGES" && \
echo "$(COMMON_PACKAGES)" && \
echo "### BASE_PACKAGES" && \
echo "$(BASE_PACKAGES)" \
) | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' >$(TARGET)/.base
@[ -z $(GROUPS) ] || cp -at $(TARGET) $(GROUPS)
@type -t git >&/dev/null && \
cd $(TARGET) && \
git add . && \
git commit -qam "$(SUFFIX)";
@# construct .base packagelist for alterator-pkg
@{ \
echo "## generated by pkg.in/lists/Makefile"; \
if [ -n "$(BRANDING)" ]; then \
echo "branding-$(BRANDING)-release"; \
fi; \
if [ -n "$(SYSTEM_PACKAGES)" ]; then \
echo -e "\n## SYSTEM_PACKAGES\n$(SYSTEM_PACKAGES)"; \
fi; \
if [ -n "$(COMMON_PACKAGES)" ]; then \
echo -e "\n## COMMON_PACKAGES\n$(COMMON_PACKAGES)"; \
fi; \
if [ -n "$(BASE_PACKAGES)" ]; then \
echo -e "\n## BASE_PACKAGES\n$(BASE_PACKAGES)"; \
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); \
fi
@if type -t git >&/dev/null; then \
cd $(TARGET) && \
git add . && \
git commit -qam "requested $(SUFFIX) copied over"; \
fi
# do beforehand as foreach gets expanded before recipe execution
$(TARGET):
@mkdir -p $(TARGET)
# figure out *_LISTS variables and print them out nicely
debug:
@$(foreach V, \
@echo -e $(foreach V, \
$(filter %_LISTS,$(sort $(.VARIABLES))), \
$(if $(filter environment% file,$(origin $V)),\
$(warning $V=$(value $V))))
@echo "** LISTS: -- see above"
@echo "** GROUPS: $(GROUPS)"
$(shell echo '\\n"**"' $V: $(value $V)))) '\n'

View File

@@ -3,10 +3,8 @@
имён списков в переменных *_LISTS, см. реализацию в Makefile).
Список .base является особенным (формирует базовую систему,
см. http://www.altlinux.org/Alterator-pkg) и копируется безусловно.
Это предполагается изменить в будущем -- возможно, генерацией .base
по тегам.
см. http://www.altlinux.org/Alterator-pkg); он создаётся из
содержимого ряда переменных (см. Makefile).
Подкаталог tagged/ стоит рассматривать как экспериментальный,
хотя весь необходимый код уже на месте -- см. bin/tags2lists
и distro.mk (в корневом каталоге).
но находящий всё более широкое практическое использование.

View File

@@ -1,8 +1,8 @@
Этот каталог содержит тегированные списки; на данный момент
реализация (bin/tags2lists) требует, чтобы каждый тег был
реализация (tags2lists) требует, чтобы каждый из тегов был
отдельным словом, состоящим из символов из набора a-zA-Z0-9_
(внимание: не используйте в слове "-"); рекомендуется
разделять слова "+" или ",".
разделять слова "+" или "," (стандарт ещё не устоялся).
Предположительное применение: дополнение функциональности,
заданной статически (наследственно или явно), факультативным

View File

@@ -0,0 +1,4 @@
wget
apt
vim-console
mc

View File

@@ -0,0 +1,2 @@
etcnet
dhcpcd

View File

@@ -0,0 +1 @@
apt

View File

@@ -82,15 +82,12 @@ recoverdm
reiserfsprogs
xfsprogs
btrfs-progs
ext3grep
### Applications/Networking
arpwatch
bridge-utils
dhcpcd
elinks
etcnet
hostinfo
ifrename
iftop
iproute2
iptables
@@ -115,8 +112,6 @@ telnet
traceroute
wget
whois
wireless-tools
wpa_supplicant
### Applications/Shells
zsh

View File

@@ -0,0 +1,3 @@
sudo
su
passwd

View File

@@ -0,0 +1,4 @@
xdm
xinit
xinitrc
installer-feature-runlevel5-stage3

View File

@@ -0,0 +1,2 @@
etcnet-full
net-tools

View File

@@ -0,0 +1,5 @@
fdisk
parted
mdadm
rsync
etcnet-full

View File

@@ -1,7 +1,6 @@
# network tools
curl
elinks
etcnet
hostinfo
iptables
iputils

View File

@@ -32,7 +32,7 @@ xorg-utils
xinit
# TODO: split these into a separate packagelist or no sense?
wm-select
#wm-select
fonts-ttf-dejavu
fonts-bitmap-terminus

View File

@@ -1,50 +1,68 @@
# this makefile is designed to be included in toplevel one
SYMLINK = build
# this could have come from environment;
# if not, can be symlinked if r/w, or made anew
# NB: immediate assignment matters
# NB: PATH has no effect here
ifndef BUILDDIR
BUILDDIR := $(shell [ -s build ] \
&& realpath build \
BUILDDIR := $(shell [ -s "$(SYMLINK)" ] \
&& realpath "$(SYMLINK)" \
|| bin/mktmpdir mkimage-profiles.build)
endif
# holds a postprocessor; shell test executes in particular situation
# NB: not exported, for toplevel use only
SHORTEN = $(shell [ "$(DEBUG)" != 2 -a -s build ] \
&& echo "| sed 's,$(BUILDDIR),build,'")
# even smart caching only hurts when every build goes from scratch
NO_CACHE ?= 1
export BUILDDIR NO_CACHE
PATH := $(CURDIR)/bin:$(PATH)
export BUILDDIR NO_CACHE PATH
# holds a postprocessor; shell test executes in particular situation
# NB: not exported, for toplevel use only
SHORTEN = $(shell [ "$(DEBUG)" != 2 -a -s "$(SYMLINK)" ] \
&& echo "| sed 's,$(BUILDDIR),$(SYMLINK),'")
# step 1: initialize the off-tree mkimage profile (BUILDDIR)
profile/init: distclean
@echo -n "** initializing BUILDDIR: "
@rsync -qaH --delete image.in/ "$(BUILDDIR)"/
@:> "$(BUILDDIR)"/distcfg.mk
@{ \
echo "ifndef DISTCFG_MK"; \
echo "DISTCFG_MK = 1"; \
} > "$(BUILDDIR)"/distcfg.mk
@{ \
git show-ref --head -d -s -- HEAD && \
git status -s && \
echo; \
} 2>/dev/null >> "$(BUILDLOG)"
} $(LOG)
@mkdir "$(BUILDDIR)"/.mki # mkimage toplevel marker
@type -t git >&/dev/null && \
cd $(BUILDDIR) && \
git init -q && \
git add . && \
git commit -qam 'init'
@rm -f build && \
git commit -qam 'distribution profile initialized'
@rm -f "$(SYMLINK)" && \
if [ -w . ]; then \
ln -sf "$(BUILDDIR)" build && \
echo "build/"; \
ln -sf "$(BUILDDIR)" "$(SYMLINK)" && \
echo "$(SYMLINK)/"; \
else \
echo "$(BUILDDIR)/"; \
fi
profile/finalize: distro/.rc
@echo "endif" >> "$(BUILDDIR)"/distcfg.mk
# requires already formed distcfg.mk for useful output
profile/dump-vars:
@if [ -s "$(SYMLINK)" ]; then \
$(MAKE) --no-print-directory -C "$(SYMLINK)/" -f vars.mk; \
echo; \
fi $(LOG)
# step 3 entry point: copy the needed parts into BUILDDIR
profile/populate: profile/init distro/.rc
profile/populate: profile/init profile/finalize profile/dump-vars
@for dir in sub.in features.in pkg.in; do \
$(MAKE) -C $$dir $(LOG); \
done

View File

@@ -12,19 +12,20 @@ all:
@for sub in $(SUBPROFILES); do \
src="$${sub%/*}" && \
dst="$${sub#*/}" && \
neq="$${src#$$dst}" && \
rsync -a "$$src/" "$(BUILDDIR)/$$dst/" && \
type -t git >&/dev/null && \
cd "$(BUILDDIR)/$$dst/" && \
git add . && \
git commit -qam "$$sub"; \
git commit -qam "$$dst subprofile initialized$${neq:+ (using $$src)}"; \
cd - >&/dev/null; \
done
clean:
@for sub in $(SUBPROFILES); do \
dst="${sub#*/}" && \
if [ -n "$$dst" ]; then \
rm -rf "$(BUILDDIR)/$$dst" && \
if [ -n "$$dst" -a -n "$(BUILDDIR)" ]; then \
rm -r "$(BUILDDIR)/$$dst" && \
mkdir -p "$(BUILDDIR)/$$dst"; \
fi; \
done

View File

@@ -15,7 +15,8 @@ CHROOT_PACKAGES = apt-utils rsync
IMAGE_PACKAGES_REGEXP = $(call kpackages,$(KMODULES),$(KFLAVOURS)) \
$(MAIN_PACKAGES_REGEXP)
IMAGE_PACKAGES = $(call map,list,$(BASE_LISTS) $(MAIN_LISTS) $(GROUPS)) \
IMAGE_PACKAGES = $(call map,list,$(BASE_LISTS) $(MAIN_LISTS) $(MAIN_GROUPS)) \
$(SYSTEM_PACKAGES) \
$(COMMON_PACKAGES) \
$(BASE_PACKAGES) \
$(MAIN_PACKAGES)

View File

@@ -1,12 +1,12 @@
Этот каталог содержит субпрофиль main, собирающий пакетную базу,
которая затем укладывается в образ.
Этот каталог содержит субпрофиль main, собирающий пакетную базу
для локальной инсталяции системы и возможности установки дополнений.
Подбирает:
- COMMON_PACKAGES, BASE_PACKAGES, BASE_LISTS: в установку по умолчанию;
- SYSTEM_PACKAGES, COMMON_PACKAGES, BASE_PACKAGES, BASE_LISTS:
в установку по умолчанию;
- MAIN_PACKAGES, MAIN_LISTS: дополнительные пакеты.
В image-scripts.d/* смысла нет, только scripts.d/* --
рабочий чрут не содержит исполняемых файлов.
Результат -- каталог ALTLinux/RPMS.main, подлежащий копированию
в образ.
Результат -- каталог ALTLinux/RPMS.main для копирования в образ.

View File

@@ -27,20 +27,18 @@ include $(MKIMAGE_PREFIX)/targets.mk
STAGE1_KFLAVOUR ?= $(lastword $(KFLAVOURS))
# propagator needed iff stage1 kernel installed (not for e.g. syslinux.iso)
ifeq "$(STAGE1_KFLAVOUR)" ""
build-propagator:
@echo "** skipping build-propagator target, no kernel installed"
else
ifneq "$(STAGE1_KFLAVOUR)" ""
BUILD_PROPAGATOR = build-propagator
CHROOT_PACKAGES_REGEXP := $(call kpackages,$(STAGE1_KMODULES_REGEXP),$(STAGE1_KFLAVOUR))
INFO_STAGE1_KFLAVOUR := $(STAGE1_KFLAVOUR)
endif
CHROOT_PACKAGES_REGEXP += $(STAGE1_PACKAGES_REGEXP)
CHROOT_PACKAGES = $(STAGE1_PACKAGES) $(COMMON_PACKAGES)
CHROOT_PACKAGES = $(STAGE1_PACKAGES) $(SYSTEM_PACKAGES)
# scripts prepare bootloader configuration, too
# NB: we pass tested squashfs options for ../install2/Makefile
all: | debug prepare-workdir copy-tree run-scripts build-propagator \
all: | debug prepare-workdir copy-tree run-scripts $(BUILD_PROPAGATOR) \
copy-$(BOOTLOADER) $(COPY_SQUASHCFG) pack-image $(GLOBAL_CLEAN_WORKDIR)
@if test -s $(OUTDIR)/squashcfg.mk; then \
cp $(OUTDIR)/squashcfg.mk $(GLOBAL_BUILDDIR)/; \

View File

@@ -2,9 +2,9 @@
здесь место syslinux (загрузчик) и propagator (ориентировка
на местности, вытягивание второй стадии с CD/FTP/...).
Скрипты обычно запускаются извне формируемого образа,
т.е. это scripts.d/; следует крайне бережно относиться
к составу STAGE1_PACKAGES и объёму этой стадии.
Скрипты запускаются извне формируемого образа (scripts.d/);
следует крайне бережно относиться к составу STAGE1_PACKAGES
и объёму этой стадии.
Обратите внимание: если не указать явно требуемый вариант
ядра посредством STAGE1_KFLAVOUR, будет взят последний
@@ -15,5 +15,4 @@ STAGE1_KMODULES_REGEXP -- будет подмножество модулей
Требуется для инсталяционных, live- и rescue-образов.
Результат -- каталог syslinux/, подлежащий копированию
в образ.
Результат -- каталог syslinux/ для копирования в образ.

View File

@@ -19,6 +19,9 @@ include $(MKIMAGE_PREFIX)/config.mk
# this should be brought in by corresponding specific stage2 feature
include stage2cfg.mk
# requisite stuff
IMAGE_PACKAGES += $(SYSTEM_PACKAGES)
# here we also try and come up with the stage1 kernel/modules, if any;
# no kernel flavour specified will result in no modules for stage1 vmlinuz
STAGE1_KFLAVOUR ?= $(lastword $(KFLAVOURS))
@@ -33,8 +36,11 @@ IMAGE_PACKAGES_REGEXP = $(call kpackages,$(STAGE1_KMODULES),$(STAGE1_KFLAVOUR))
include $(MKIMAGE_PREFIX)/targets.mk
# NB: it's a collector variable, add()ing to a GLOBAL_ results in lost hair
GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES)
all: | $(GLOBAL_DEBUG) build-image run-image-scripts pack-image \
$(GLOBAL_CLEAN_WORKDIR)
debug:
@echo "stage2: warning: dummy debug target not redefined"
# dummy
debug: ;

View File

@@ -1,6 +1,6 @@
Этот каталог содержит общий субпрофиль "живой" второй стадии,
используемой в качестве базы для сборки образов install2, live, rescue
(возможно, нескольких одновременно в составе одного дистрибутива).
Этот каталог содержит общий базовый субпрофиль "живой" второй стадии,
используемый для сборки образов install2, live, rescue (возможно,
нескольких одновременно в составе одного дистрибутива).
Результат -- squashfs в названном сообразно варианту файле,
подлежащем копированию в итоговый образ.
Результат -- соответственно названный файл со squashfs,
подлежащий копированию в итоговый образ.