Compare commits

..

11 Commits

Author SHA1 Message Date
Michael Shigorin
958f37028b 0.6.2.3-alt0.M60T.1
- mktmpdir: fixed sort key
2015-09-07 23:57:07 +03:00
Michael Shigorin
32c1bcaa23 mktmpdir: fixed sort key
The sort key field value has been off-by-one apparently,
"6" corresponds to "capacity" field of df -PT output
while the "available" one was meant:

Filesystem     Type  1024-blocks     Used Available Capacity Mounted on
/dev/sda9      ext4     15350768 12799972   1747980      88% /
tmpfs          tmpfs     1967204    27396   1939808       2% /tmp

1              2               3        4         5       6

This lapse has been five years old, looks like it's only
been masked by lower available space limit *and* filesystem
ordering by type so far.  It didn't hit me even now, rather
inspected the code while implementing volumes-profile-starterkit...
2015-09-07 23:46:16 +03:00
Michael Shigorin
f3c47f0730 gear-store-tags 2015-02-02 23:51:50 +03:00
Michael Shigorin
0950c70adc 0.6.2.2-alt0.M60T.1
- backported pkg/lists fix (and the commit before it)
2015-02-02 23:51:33 +03:00
Michael Shigorin
a0d39e2ed1 pkg/lists: uncrustify Makefile
The problem with the changed piece of code is that it would
- both call cp(1) multiple times if multiple *_LIST variables
  were non-empty (which is usually the case), and
- try to evaluate stdout of the called commands as a shell
  script (which would be empty unless someone passed e.g. -v
  to that cp(1) but it's crazy to rely on things like this).

So the functions should prepare arguments for a single copy
command that is predictable and could be made verbose.

Ouch.
2015-02-02 23:50:41 +03:00
Michael Shigorin
33d35de8fb pkg/lists: tweak Makefile to expand variables
The issue at hand is the hack to be employed in the init feature:

	@$(call add,THE_LISTS,$$(INIT_TYPE))

where INIT_TYPE is set separately; $(value $V) would leave that kind
of substitution unmolested while we would actually need it done.
2015-02-02 23:50:26 +03:00
Michael Shigorin
51e0fb762e gear-store-tags 2014-03-25 00:00:25 +04:00
Michael Shigorin
71c4404c4e 0.6.2.1-alt0.M60T.1
- altlinux-t6-server-ovz
2014-03-24 16:35:23 +04:00
Michael Shigorin
ed2d904ef0 install2: added branding-*-notes
Fix "License file not found" at the second step.
2014-03-24 15:58:25 +04:00
Michael Shigorin
b356d98baa t6.mk: barebones name proxy
Just like p7.mk in 1.1.x/1.0.x, this file is a kludge
serving to "rename" a particular image.
2014-03-24 15:41:22 +04:00
Michael Shigorin
33e6100d02 server.mk: more complete installer to server-ovz
It's not about "desktop vs server" but about installer-steps
included; hiddenman@ badly needs network and users setup,
those have been dropped from installer-distro-altlinux-generic
to trim testing cycles and -desktop has those.
2014-03-24 15:41:22 +04:00
135 changed files with 263 additions and 1636 deletions

View File

@@ -1,6 +1,6 @@
Name: mkimage-profiles
Version: 0.7.0
Release: alt1
Version: 0.6.2.3
Release: alt0.M60T.1
Summary: ALT Linux based distribution metaprofile
License: GPLv2+
@@ -61,29 +61,14 @@ cp -a * %buildroot%mpdir
%doc README QUICKSTART
%changelog
* Mon Jun 18 2012 Michael Shigorin <mike@altlinux.org> 0.7.0-alt1
- new features:
+ initial build-vm
+ plymouth
* Mon Sep 07 2015 Michael Shigorin <mike@altlinux.org> 0.6.2.3-alt0.M60T.1
- mktmpdir: fixed sort key
* Mon May 28 2012 Michael Shigorin <mike@altlinux.org> 0.6.8-alt1
- minor bugfixes
* Mon Feb 02 2015 Michael Shigorin <mike@altlinux.org> 0.6.2.2-alt0.M60T.1
- backported pkg/lists fix (and the commit before it)
* Mon May 21 2012 Michael Shigorin <mike@altlinux.org> 0.6.7-alt1
- docs updates
* Mon May 14 2012 Michael Shigorin <mike@altlinux.org> 0.6.6-alt1
- build helpers refactored
- initial frontend support
* Mon May 07 2012 Michael Shigorin <mike@altlinux.org> 0.6.5-alt1
- branding feature
* Mon Apr 23 2012 Michael Shigorin <mike@altlinux.org> 0.6.4-alt1
- simply better (tm)
* Mon Apr 09 2012 Michael Shigorin <mike@altlinux.org> 0.6.3-alt1
- massive squashfs tuning
* Mon Mar 24 2014 Michael Shigorin <mike@altlinux.org> 0.6.2.1-alt0.M60T.1
- altlinux-t6-server-ovz
* Mon Apr 02 2012 Michael Shigorin <mike@altlinux.org> 0.6.2-alt1
- better live-webkiosk and initial live-flightgear

View File

@@ -1,6 +0,0 @@
object ebeb52b5da710cf354f4e2bea16d3d72e2ad052e
type commit
tag v0.6.8
tagger Michael Shigorin <mike@altlinux.org> 1338232536 +0300
fixups

View File

@@ -0,0 +1,6 @@
object 0950c70adc1d129757a7418e57658401d6429729
type commit
tag v0.6.2.2
tagger Michael Shigorin <mike@altlinux.org> 1422910304 +0300
lists fix backported

View File

@@ -1 +1 @@
5c3b721d4cfae520e1fae593de6dd128da862699 v0.6.8
b936ec8ec888da813b0632ea39288e6ff59debad v0.6.2.2

View File

@@ -2,9 +2,6 @@
# iterate over multiple goals/arches,
# collect proceedings
# preferences
-include $(HOME)/.mkimage/profiles.mk
# for immediate assignment
ifndef ARCHES
ifdef ARCH
@@ -15,31 +12,24 @@ endif
endif
export ARCHES
export PATH := $(CURDIR)/bin:$(PATH)
# supervise target tracing; leave stderr alone
ifdef REPORT
export REPORT_PATH := $(shell mktemp --tmpdir mkimage-profiles.report.XXXXXXX)
POSTPROC := | report-filter > $(REPORT_PATH)
POSTPROC := | bin/report-filter > $(REPORT_PATH)
endif
# recursive make considered useful for m-p
MAKE += -r --no-print-directory
DIRECT_TARGETS := clean distclean check help help/distro help/ve
.PHONY: $(DIRECT_TARGETS)
$(DIRECT_TARGETS):
.PHONY: clean distclean help
clean distclean help:
@$(MAKE) -f main.mk $@
export NUM_TARGETS := $(words $(MAKECMDGOALS))
# for pipefail
SHELL = /bin/bash
# real targets need real work
%:
@n=1; \
set -o pipefail; \
say() { echo "$$@" >&2; }; \
if [ "$(NUM_TARGETS)" -gt 1 ]; then \
n="`echo $(MAKECMDGOALS) \
@@ -51,10 +41,7 @@ SHELL = /bin/bash
for ARCH in $(ARCHES); do \
if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then say; fi; \
say "** ARCH: $$ARCH" >&2; \
if $(MAKE) -f main.mk ARCH=$$ARCH $@ $(POSTPROC); then \
if [ -n "$$REPORT" ]; then \
$(MAKE) -f reports.mk ARCH=$$ARCH; \
fi; \
fi; \
$(MAKE) -f main.mk ARCH=$$ARCH $@ $(POSTPROC); \
$(MAKE) -f reports.mk ARCH=$$ARCH; \
done; \
if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi

4
README
View File

@@ -32,7 +32,7 @@ Most docs are in Russian, welcome to learn it or ask for English.
- сборка образа
Объекты:
- дистрибутивы и виртуальные среды/машины:
- дистрибутивы и виртуальные окружения:
+ описываются в conf.d/*.mk или соответственно lib/{distro,ve}.mk
+ могут основываться на предшественниках, расширяя их
+ дистрибутивы также:
@@ -43,7 +43,7 @@ Most docs are in Russian, welcome to learn it or ask for English.
+ базовые комплекты помещены в подкаталогах под sub.in/;
их наборы скриптов могут расширяться фичами
- фичи:
+ накопительный список собирается в $(FEATURES)
+ список собирается в $(FEATURES)
+ законченные блоки функциональности (или наборы таковых)
+ описываются в индивидуальных features.in/*/config.mk
+ могут требовать другие фичи, а также субпрофили

View File

@@ -45,7 +45,7 @@ choose_tmpdir() {
echo -n "$i "
df -Tl "$i" | tail -1
done \
| sort -unk6 \
| sort -unk5 \
| while read dir dev fstype size used free percent mnt; do
check_options "$dev" "$mnt" || continue
[ "$free" -gt "$MINSIZE" ] || continue

View File

@@ -1,130 +0,0 @@
#!/bin/sh -e
. shell-error
if [ $# -lt 2 ]; then
fatal "error: tar2vm needs at least two arguments"
fi
# this needs env_keep sudo setup to actually work
if [ -n "$GLOBAL_BUILDDIR" ]; then
WORKDIR="$GLOBAL_BUILDDIR/vmroot"
else
WORKDIR="$(mktemp --tmpdir -d vmroot-XXXXX)"
fi
[ -n "$WORKDIR" ] || fatal "couldn't come up with suitable WORKDIR"
[ -n "$GLOBAL_DEBUG" ] || message "WORKDIR: $WORKDIR"
# a tarball containing chroot with a kernel
TAR="$1"
[ -s "$TAR" ] || fatal "source tarball doesn't really exist"
# a path to the image to be generated
IMG="$2"
[ -d "$(dirname "$IMG")" ] || fatal "target directory doesn't exist"
# image size in bytes (256M is a fallback)
TARSIZE="$(stat -Lc %s "$TAR")"
DEFSIZE="$(expr 3 '*' "$TARSIZE" '/' 2)"
DISKSIZE="${3:-${DEFSIZE:-268435456}}"
# ...and in megabytes
DISKSIZEM="$(expr "$DISKSIZE" / 1048576)"
# tested to work: ext[234], jfs
ROOTFSTYPE="${4:-ext4}"
# single root partition hardwired so far,
# add another image for swap if needed
ROOTDEV="/dev/sda1"
# last preparations...
for i in losetup parted kpartx mkfs."$ROOTFSTYPE"; do
if ! type -t "$i" >&/dev/null; then
fatal "$i required but not found"
fi
done
LOOPDEV="$(losetup --find)"
ROOTFS="$WORKDIR/chroot"
exit_handler()
{
rc=$?
if [ -n "$ROOTFS" ]; then
umount "$ROOTFS"{/dev,/proc,/sys,}
if [ -n "$LOOPDEV" ]; then
kpartx -d "$LOOPDEV"
losetup --detach "$LOOPDEV"
fi
rm -r -- "$ROOTFS"
rmdir -- "$WORKDIR"
fi
exit $rc
}
trap exit_handler EXIT
# prepare disk image and a filesystem inside it
rm -f -- "$IMG"
dd if=/dev/zero of="$IMG" bs=1 count=1 seek="$DISKSIZE" conv=notrunc
losetup "$LOOPDEV" "$IMG"
parted --script "$LOOPDEV" mklabel msdos
parted --script "$LOOPDEV" mkpart primary ext2 1 "$DISKSIZEM"
kpartx -a "$LOOPDEV"
LOOPDEV1="/dev/mapper/$(basename "$LOOPDEV")p1"
mkfs."$ROOTFSTYPE" "$LOOPDEV1"
# mount and populate it
mkdir -pm755 "$ROOTFS"
mount "$LOOPDEV1" "$ROOTFS"
tar -C "$ROOTFS" --numeric-owner -xf "$TAR"
for i in /dev /proc /sys; do mount --bind "$i" "$ROOTFS$i"; done
# NB: different storage modules might be needed for non-kvm
echo "$LOOPDEV1 / $ROOTFSTYPE defaults 1 1" >> "$ROOTFS/etc/fstab"
echo "MODULES_PRELOAD=sd_mod ata_piix $ROOTFSTYPE" >> "$ROOTFS/etc/initrd.mk"
KERNEL="$(readlink $ROOTFS/boot/vmlinuz | sed 's,vmlinuz-,,')"
chroot "$ROOTFS" make-initrd -k "$KERNEL"
sed -i "s,$LOOPDEV1,$ROOTDEV," "$ROOTFS/etc/fstab"
# configure and install bootloader
REGEXP='^([0-9]+) heads, ([0-9]+) sectors/track, ([0-9]+) cylinders.*$'
set -- $(fdisk -l "$LOOPDEV" | grep -E "$REGEXP" | sed -r "s@$REGEXP@\1 \2 \3@")
LILO_COMMON="lba32
delay=1
vga=0
image=/boot/vmlinuz
initrd=/boot/initrd.img
append=\"root=$ROOTDEV rootdelay=3\"
label=linux"
cat > "$ROOTFS"/etc/lilo-loop.conf << EOF
boot=$LOOPDEV
disk=$LOOPDEV
bios=0x80
heads=$1
sectors=$2
cylinders=$3
partition=$LOOPDEV1
start=63
$LILO_COMMON
EOF
chroot "$ROOTFS" lilo -C /etc/lilo-loop.conf
cat > "$ROOTFS"/etc/lilo.conf << EOF
boot=${ROOTDEV%[0-9]*}
$LILO_COMMON
EOF
if [ -n "$SUDO_USER" ]; then
chown "$SUDO_USER" "$IMG" "$ROOTFS" "$WORKDIR"
fi

View File

@@ -17,35 +17,18 @@
что обязано быть и в инсталяторе, и в готовой системе
- для "обычного общего" (live, main, rescue) есть COMMON_PACKAGES
(NB: попадают в базовую систему)
- для "пользовательского" окружения (live, main) предназначены
THE_PACKAGES, THE_LISTS, THE_GROUPS, THE_PACKAGES_REGEXP
- для строго направленного действия служат:
+ STAGE1_PACKAGES, STAGE1_PACKAGES_REGEXP (первая стадия загрузки)
+ STAGE2_PACKAGES (инсталятор и спасательная/"живая" система)
+ INSTALL2_PACKAGES (инсталятор)
+ BASE_PACKAGES, BASE_LISTS, BASE_PACKAGES_REGEXP (базовая система)
+ MAIN_PACKAGES, MAIN_LISTS, MAIN_PACKAGES_REGEXP (дополнительные пакеты)
+ LIVE_PACKAGES, LIVE_LISTS, LIVE_PACKAGES_REGEXP ("живая" система)
- для "пользовательского" (live, main) есть THE_GROUPS, THE_LISTS
и THE_PACKAGES
- аналогично по модулям ядра:
+ THE_KMODULES попадут в "пользовательскую" среду (live, main)
+ STAGE1_KMODULES доступны в производных от stage2 (install2, live, rescue)
+ BASE_KMODULES попадут в установку по умолчанию
+ MAIN_KMODULES будут доступны для установки с носителя
+ LIVE_KMODULES предназначены для LiveCD/LiveFlash
+ THE_KMODULES попадут в "пользовательские" окружения
(live и установленную систему)
По подстановкам:
- $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk
- $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании
значений; в этом случае их значения могут изменяться до окончания
конфигурации, а также зависеть от значений других переменных
По спискам пакетов:
- на этапе экспериментирования можно забивать прямо в описание образа
- при фиксации состояния стоит воспользоваться существующими списками,
а дополнительные оформить как можно более чётко обособленными по тем
задачам, для решения которых они и подобраны
- повторяющиеся логически связанные группы списков может иметь смысл
выделить в фичу (см., например, power или x11)
- если явной фичи не наблюдается, но у группы дистрибутивов намечается
заметная общая часть -- её можно выделить в промежуточную цель вида
distro/.name, не являющуюся самостоятельно собираемой

View File

@@ -6,15 +6,13 @@ distro/.desktop-base: distro/.installer use/syslinux/ui/vesamenu use/x11/xorg
distro/.desktop-mini: distro/.desktop-base use/x11/xdm +power; @:
distro/.desktop-network: distro/.desktop-mini +vmguest
@$(call add,BASE_LISTS, \
$(call tags,(base || desktop) && (l10n || network)))
distro/.desktop-network: distro/.desktop-mini use/virtualbox/guest
@$(call add,BASE_LISTS,$(call tags,(base || desktop) && network))
distro/icewm: distro/.desktop-network use/lowmem +icewm; @:
distro/tde: distro/.desktop-mini +tde; @:
distro/ltsp-tde: distro/tde +ltsp; @:
distro/ltsp-icewm: distro/icewm +ltsp; @:
distro/desktop-systemd: distro/icewm use/systemd; @:
distro/desktop-plymouth: distro/icewm +plymouth; @:
endif

View File

@@ -9,7 +9,7 @@ distro/rescue: distro/.base use/rescue use/syslinux/ui/menu; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @:
distro/.live-base: distro/.base use/live/base use/power/acpi/button; @:
distro/.live-desktop: distro/.base +live use/plymouth/live; @:
distro/.live-desktop: distro/.base +live use/syslinux/ui/vesamenu; @:
distro/.live-kiosk: distro/.base use/live/base use/live/autologin \
use/syslinux/timeout/1 use/cleanup +power
@@ -21,20 +21,18 @@ distro/live-isomd5sum: distro/.base use/live/base use/isomd5sum
distro/live-builder: pkgs := livecd-tmpfs livecd-online-repo mkimage-profiles
distro/live-builder: distro/.live-base use/dev/mkimage use/dev/repo
@$(call set,KFLAVOURS,$(BIGRAM))
@$(call add,LIVE_LISTS,$(call tags,base && (server || builder)))
@$(call add,LIVE_PACKAGES,zsh sudo)
@$(call add,LIVE_PACKAGES,$(pkgs))
@$(call add,MAIN_PACKAGES,$(pkgs))
@$(call add,MAIN_PACKAGES,syslinux pciids memtest86+ mkisofs)
distro/live-install: distro/.live-base use/live/textinst; @:
distro/.livecd-install: distro/.live-base use/live/install; @:
distro/live-install: distro/.live-base use/syslinux/localboot.cfg
@$(call add,LIVE_PACKAGES,live-install)
distro/live-icewm: distro/.live-desktop use/live/autologin +icewm; @:
distro/live-razorqt: distro/.live-desktop use/live/autologin +razorqt; @:
distro/live-tde: distro/.live-desktop use/live/ru use/live/install +tde; @:
distro/live-plymouth: distro/.live-base use/plymouth/live; @:
distro/live-razorqt: distro/.live-desktop +razorqt; @:
distro/live-tde: distro/.live-desktop use/live/ru +tde; @:
distro/live-rescue: distro/live-icewm
@$(call add,LIVE_LISTS,$(call tags,rescue && (fs || live || x11)))
@@ -49,24 +47,7 @@ distro/live-webkiosk-mini: distro/.live-kiosk use/live/hooks use/live/ru
distro/live-webkiosk: distro/live-webkiosk-mini use/live/desktop; @:
distro/live-flightgear: distro/live-icewm use/live/sound use/x11/3d-proprietary
@$(call add,LIVE_PACKAGES,FlightGear fgo input-utils)
@$(call add,LIVE_PACKAGES,FlightGear fgo)
@$(call try,HOMEPAGE,http://www.4p8.com/eric.brasseur/flight_simulator_tutorial.html)
distro/live-cinnamon: distro/.live-desktop use/live/autologin use/live/ru \
use/x11/cinnamon use/x11/3d-proprietary; @:
distro/live-mate: distro/.live-desktop use/live/nodm use/live/ru use/x11/3d-free
@$(call add,LIVE_LISTS,$(call tags,(desktop || mobile) && mate))
distro/live-enlightenment: distro/.live-desktop use/live/autologin \
use/live/ru use/x11/3d-free
@$(call add,LIVE_PACKAGES,enlightenment)
distro/live-gimp: distro/live-icewm use/x11/3d-free use/live/ru
@$(call add,LIVE_PACKAGES,gimp tintii immix fim)
@$(call add,LIVE_PACKAGES,cvltonemap darktable geeqie rawstudio ufraw)
@$(call add,LIVE_PACKAGES,macrofusion python-module-pygtk-libglade)
@$(call add,LIVE_PACKAGES,qtfm openssh-clients rsync)
@$(call add,LIVE_PACKAGES,design-graphics-sisyphus2)
endif

View File

@@ -17,17 +17,19 @@ distro/server-mini: distro/.server-base use/cleanup/x11-alterator
$(call tags,base && (server || network || security || pkg)))
@$(call add,BASE_LISTS,$(call tags,extra (server || network)))
distro/server-systemd: distro/server-mini use/systemd
@$(call set,KFLAVOURS,std-def)
distro/server-systemd: distro/server-mini use/systemd use/bootloader/lilo; @:
distro/server-ovz: distro/server-mini use/install2/net use/hdt use/rescue \
use/firmware/server use/firmware/wireless use/power/acpi/button
distro/server-ovz: distro/server-mini use/install2/net \
use/hdt use/rescue use/firmware/server use/power/acpi/button
@$(call set,INSTALLER,desktop)
@$(call set,STAGE1_KFLAVOUR,std-def)
@$(call set,KFLAVOURS,std-def ovz-el)
@$(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,BASE_LISTS,ovz-server)
@$(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)

View File

@@ -1,11 +0,0 @@
# simply images
ifeq (distro,$(IMAGE_CLASS))
distro/live-simply: distro/.livecd-install use/slinux/full
@$(call add,THE_LISTS,slinux/live-install)
distro/simply: distro/.installer use/slinux/full
@$(call set,INSTALLER,desktop)
endif

7
conf.d/t6.mk Normal file
View File

@@ -0,0 +1,7 @@
# t6 base kits
ifeq (distro,$(IMAGE_CLASS))
distro/altlinux-t6-server-ovz: distro/server-ovz; @:
endif

View File

@@ -1,9 +1,8 @@
фичи
~~~~
Особенности дистрибутива, не учитываемые в пакетной базе
или зависящие от переменных времени сборки/установки образа;
по необходимости влияют на конфигурацию, приносят с собой
или запрашивают скрипты, которые могут быть оформлены как:
или зависящие от переменных времени сборки/установки образа,
могут быть оформлены как:
* scripts.d/ или image-scripts.d/ различных стадий;
* пакеты installer-feature-*
@@ -28,12 +27,3 @@
Стоит избегать изменения пакетных умолчаний в случае, когда их
представляется осмысленным и возможным скорректировать в пакете:
таким образом они станут более дистрибутивными.
Обратите внимание, что фичи включаются в комплект инкрементально:
что добавили, то уже не убрать; поэтому при необходимости следует
выделять промежуточные цели сборки, собирающие необходимые фичи
и оставляющие те, по которым есть расхождения, на включение ближе
к конечной дистрибутивной цели.
Соглашение по именованию таково, что цели use/ФИЧА и use/ФИЧА/...
определяются в файле features.in/ФИЧА/config.mk и только в нём.

View File

@@ -14,9 +14,9 @@
+ см. ../lib/build.mk
- ARCHES
+ задаёт набор целевых архитектур при параметрическом задании APTCONF
+ задаёт набор целевых архитектур образов
+ значение: пусто (по умолчанию авто) либо список через пробел
+ см. ../Makefile, profiles.mk.sample
+ см. ../Makefile
- BELL
+ подаёт сигнал после завершения сборки
@@ -39,7 +39,7 @@
+ см. ../lib/log.mk
- CHECK
+ включает режим проверки сборки конфигурации (без сборки образа)
+ включает режим проверки сборки конфигурации
+ значение: пусто (по умолчанию) либо любая строка
+ см. ../lib/build.mk
@@ -71,35 +71,16 @@
+ см. ../lib/build.mk
- REPORT
+ запрашивает создание отчётов о собранном образе
+ запрашивает создание отчёта о собранном образе
+ значение: пусто (по умолчанию) либо любая строка
+ NB: в силу специфики обработки передаётся только явно
+ см. ../Makefile, ../report.mk, ../lib/report.mk
- ROOTPW
+ устанавливает пароль root по умолчанию для образов виртуальных машин
+ значение: пусто (по умолчанию root) либо строка
+ см. ../features.in/build-vm/image-scripts.d/00root
- SAVE_PROFILE
+ сохраняет архив сгенерированного профиля в .disk/
+ значение: пусто (по умолчанию) либо любая строка
+ см. ../image.in/Makefile
- SQUASHFS
+ определяет характер сжатия squashfs для stage2
+ значение:
- пусто (по умолчанию) либо normal: xz
- tight: xz с -Xbcj по платформе (лучше, но дольше -- подбор в два прохода)
- fast: gzip/lzo (быстрее запаковывается и распаковывается, меньше степень)
+ см. ../features.in/stage2/stage1/scripts.d/03-test-kernel
- SORTDIR
+ дополнительно структурирует каталог собранных образов
+ значение: пусто (по умолчанию) либо строка
- например, '$(IMAGE_NAME)/$(DATE)'
+ см. ../image.in/Makefile
пример
~~~~~~
make DEBUG=1 CLEAN=1 distro/syslinux.iso

View File

@@ -1,20 +0,0 @@
сборка образов виртуальных машин
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ВНИМАНИЕ: заключительная операция создания образа жёсткого диска
из архива с содержимым корневой файловой системы требует доступа
к sudo и разрешения на выполнение скрипта bin/tar2vm в корневом
каталоге метапрофиля при установке mkimage-profiles из пакета.
Соответствующий фрагмент конфигурации sudo(8) может выглядеть как:
mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2vm
При работе с git следует иметь в виду, что предоставлять недоверенному
пользователю право выполнять с повышенными привилегиями доступный ему
по записи скрипт равнозначно предоставлению полных привилегий root.
Также потребуется пакет multipath-tools (/sbin/kpartx).
Пример сборки и запуска VM:
$ make ROOTPW=reallysecret1 vm/bare.img && kvm -hda ~/out/bare.img

View File

@@ -25,9 +25,6 @@ define grepper_body
done
endef
%:
$(error BUILDDIR not defined)
else
include $(BUILDDIR)/distcfg.mk
@@ -65,9 +62,11 @@ $(FEATURES):
for sub in / $(SUBPROFILES); do \
dirtags=; \
if [ "$$sub" = / ]; then \
parts=lib; \
srcdirs="."; \
dst="."; \
else \
parts=; \
src="$${sub%/*}"; \
dst="$${sub#*/}"; \
srcdirs=; \
@@ -90,7 +89,7 @@ $(FEATURES):
for srcdir in $$srcdirs; do \
[ -d "$$srcdir" ] || continue; \
pushd "$$srcdir" >&/dev/null; \
for part in lib {image-,}scripts.d; do \
for part in $$parts {image-,}scripts.d; do \
destdir="$(BUILDDIR)/$$dst/$$part"; \
[ -d "$$destdir" ] || continue; \
if [ "$$sub" = / -a -d "$$part" ]; then \

View File

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

View File

@@ -1,21 +0,0 @@
Эта фича врезается в makefile субпрофилей и обеспечивает
добавление задающих внешний вид и сообщения дистрибутива
пакетов; см. тж. http://www.altlinux.org/Branding
Назначение и возможные значения (если требуются):
- STAGE1_BRANDING
+ относится к загрузке со сгенерированного образа (например, ISO)
+ bootloader bootsplash (при старте)
- STAGE2_BRANDING
+ общая часть для всех вариантов stage2
+ bootsplash (при выключении)
- INSTALL2_BRANDING
+ специфические пакеты брендирования инсталятора
+ notes slideshow
- THE_BRANDING
+ общий список для использования в установленной системе и LiveCD
+ alterator bootsplash graphics indexhtml notes slideshow

View File

@@ -1,11 +0,0 @@
# NB: release part of branding goes to install2 feature
use/branding:
@$(call add_feature)
# NB: not every distro might have all the branding of its own
use/branding/full: use/branding use/syslinux/ui/gfxboot
@$(call add,THE_BRANDING,alterator bootsplash graphics)
@$(call add,THE_BRANDING,indexhtml notes slideshow)
use/branding/complete: use/branding/full use/plymouth/full
@$(call add,INSTALL2_BRANDING,notes slideshow)

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(INSTALL2_BRANDING))

View File

@@ -1,4 +0,0 @@
# step 4: build the distribution image
# NB: this comes just before build-distro.mk
DOT_BASE += $(call branding,$(THE_BRANDING))

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(THE_BRANDING))

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(THE_BRANDING))

View File

@@ -1 +0,0 @@
CHROOT_PACKAGES_REGEXP += $(call branding,$(STAGE1_BRANDING))

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(STAGE2_BRANDING))

View File

@@ -16,13 +16,33 @@ BOOT_ABST := $(META_ABSTRACT)
BOOT_TYPE := isolinux
# Metadata/ needed only for installers (and not for e.g. syslinux.iso)
# FIXME: installable live needs it too, don't move to install2 feature
### see also .../pkg.in/lists/Makefile
ifneq (,$(findstring install2,$(FEATURES)))
METADATA = metadata
endif
# see also ../scripts.d/01-isosort; needs mkimage-0.2.2+
MKI_SORTFILE := /tmp/isosort
all: $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
postprocess $(GLOBAL_CLEAN_WORKDIR)
prep: $(GLOBAL_DEBUG) dot-disk $(WHATEVER) imagedir
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,$(MAIN_GROUPS) .base) \
$(call group,$(MAIN_GROUPS)) \
| sed 's,$(PKGDIR)/*,,g')
dot-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

View File

@@ -8,6 +8,6 @@
[ -x /sbin/chkconfig ] || exit 0
for i in network random syslogd; do chkconfig $i on; done
for i in network random syslogd random; do chkconfig $i on; done
for i in fbsetfont netfs rawdevices; do chkconfig $i off; done
:

View File

@@ -1,3 +0,0 @@
Эта фича конфигурирует создание образа виртуальной машины (VM).
Дополняет финальную стадию сборки (lib/, image-scripts.d/).
Требует для работы sudo(8) -- см. тж. ../../doc/vm.txt .

View File

@@ -1,3 +0,0 @@
# hooked from ../../lib/sugar.mk
use/build-vm:
@$(call add_feature)

View File

@@ -1,7 +0,0 @@
#!/bin/sh
ROOTPW="${GLOBAL_ROOTPW:-root}"
if type -t chpasswd >&/dev/null; then
echo "root:$ROOTPW" | chpasswd
fi

View File

@@ -1,9 +0,0 @@
#!/bin/sh
# VMs might have no means to communicate with the outer
# world except for networking
[ -x /sbin/chkconfig ] || exit 0
for i in network random syslogd; do chkconfig $i on; done
for i in fbsetfont netfs rawdevices; do chkconfig $i off; done
:

View File

@@ -1,4 +0,0 @@
#!/bin/sh -e
# we don't need no extra gettys in VMs
[ -s /etc/inittab ] || exit 0
sed -i 's,^[3-9]\+:[0-9]\+:respawn:/sbin/mingetty.*,#&,' /etc/inittab

View File

@@ -1,16 +0,0 @@
#!/bin/sh -e
# tweak syslog configuration to:
# - avoid logging to a nonexistent tty;
# - avoid hard sync logging (one is better off doing
# remote syslog if you do care for reliable data anyways)
# credits: vvk@, thresh@ (2010)
CONFIG=/etc/syslog.conf
[ ! -f "$CONFIG" ] || \
sed -i \
-e 's,/dev/tty12,/var/log/syslog/console,' \
-e 's,^.*/var/log/syslog/console$,#&,' \
-e 's,-/var/log/,/var/log/,g' \
-e 's,/var/log/,-/var/log/,g' \
"$CONFIG"

View File

@@ -1,13 +0,0 @@
#!/bin/sh
# predictable file locations make bootloader configuration simple;
# this script relates to .../features.in/stage2/stage1/scripts.d/80-make-initfs
kver="$(rpm -qa 'kernel-image*' \
--qf '%{installtime} %{version}-%{name}-%{release}\n' \
| sort -n \
| tail -n 1 \
| cut -f 2 -d ' ' \
| sed 's/kernel-image-//')"
ln -s vmlinuz-$kver /boot/vmlinuz
ln -s initrd-$kver.img /boot/initrd.img

View File

@@ -1,33 +0,0 @@
# step 4: build the virtual machine image
IMAGE_PACKAGES = $(SYSTEM_PACKAGES) \
$(COMMON_PACKAGES) \
$(BASE_PACKAGES) \
$(THE_PACKAGES) \
$(call list,$(BASE_LISTS) $(THE_LISTS)) \
$(call kpackages,$(THE_KMODULES) $(BASE_KMODULES),$(KFLAVOURS))
# intermediate chroot archive
VM_TARBALL := $(IMAGE_OUTDIR)/$(IMAGE_NAME).tar
check-sudo:
@if ! type -t sudo >&/dev/null; then \
echo "** error: sudo not available, see doc/vm.txt" >&2; \
exit 1; \
fi
convert-image: check-sudo
@if ! sudo $(TOPDIR)/bin/tar2vm \
"$(VM_TARBALL)" "$(IMAGE_OUTPATH)" $$VM_SIZE; then \
echo "** error: sudo tar2vm failed, see also doc/vm.txt" >&2; \
exit 1; \
fi
run-image-scripts: GLOBAL_ROOTPW := $(ROOTPW)
pack-image: MKI_PACK_RESULTS := tar:$(VM_TARBALL)
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
convert-image postprocess $(GLOBAL_CLEAN_WORKDIR)
prep: imagedir

View File

@@ -3,23 +3,17 @@
# for mkmodpack to use
use/firmware:
@$(call add_feature)
@$(call add,SYSTEM_PACKAGES,firmware-linux)
use/firmware/server: use/firmware
@$(call add,SYSTEM_PACKAGES,firmware-aic94xx-seq)
@$(call add,THE_PACKAGES_REGEXP,firmware-ql.*)
@$(call add,MAIN_PACKAGES_REGEXP,firmware-ql.*)
# NB: individual firmwarez would sometimes conflict
# with ones newly merged into firmware-linux
# FIXME: kernel modules rather belong to use/hardware
use/firmware/wireless: use/firmware
@$(call add,THE_KMODULES,bcmwl ndiswrapper)
@$(call add,THE_PACKAGES,firmware-acx100)
@#$(call add,THE_PACKAGES,firmware-i2400m)
@$(call add,THE_PACKAGES_REGEXP,firmware-carl9170.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-prism.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-ipw.*)
@#$(call add,THE_PACKAGES_REGEXP,firmware-iwl.*)
@#$(call add,THE_PACKAGES_REGEXP,firmware-rt.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-zd.*)
@$(call add,MAIN_PACKAGES,firmware-acx100)
@$(call add,MAIN_PACKAGES,firmware-i2400m)
@$(call add,MAIN_PACKAGES_REGEXP,firmware-carl9170.*)
@$(call add,MAIN_PACKAGES_REGEXP,firmware-ipw.*)
@#$(call add,MAIN_PACKAGES_REGEXP,firmware-iwl.*)
@$(call add,MAIN_PACKAGES_REGEXP,firmware-rt.*)
@$(call add,MAIN_PACKAGES_REGEXP,firmware-zd.*)

View File

@@ -1,18 +1,11 @@
# alterator-based installer, second (livecd) stage
use/install2: use/stage2 sub/stage2/install2 use/metadata use/cleanup/installer
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,INSTALL2_PACKAGES,branding-$$(BRANDING)-notes)
@$(call add,BASE_PACKAGES,branding-$$(BRANDING)-release)
@$(call add,BASE_LISTS,$(call tags,basesystem))
### FR: curl-mini
use/install2/net: use/install2
@$(call add,INSTALL2_PACKAGES,curl)
# modern free xorg drivers for mainstream hardware requires KMS support
use/install2/kms: use/stage2/kms
@$(call add,BASE_KMODULES_REGEXP,drm.*)
# see also use/vm/kvm/guest; qxl included in xorg pkglist
use/install2/kvm:
@$(call add,INSTALL2_PACKAGES,spice-vdagent xorg-drv-qxl)

View File

@@ -3,6 +3,9 @@
echo "** install2 packages before rpmdb purge:"
rpmquery -a --qf='%{NAME} %{VERSION}-%{RELEASE}\n'
# not going to need them without rpmdb, it's not even rescue anymore
apt-get remove -f -y apt libapt
# remove rpm, apt databases and cache
find /var/lib/rpm /var/lib/apt /var/cache/apt -type f -delete

View File

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

View File

@@ -1,4 +0,0 @@
###
use/kernel:
@$(call add_feature)
@$(call set,KFLAVOURS,std-def)

View File

@@ -1,6 +0,0 @@
# step 4: build the distribution image
# take care for kernel bits
DOT_BASE += $(call kpackages, \
$(THE_KMODULES) $(BASE_KMODULES) $(BASE_KMODULES_REGEXP), \
$(KFLAVOURS))

View File

@@ -9,33 +9,18 @@ use/live: use/stage2 sub/stage2/live
use/live/base: use/live use/syslinux/ui/menu
@$(call add,LIVE_LISTS,$(call tags,base && (live || network)))
# a very simplistic one
use/live/x11: use/live use/x11/xorg
@$(call add,LIVE_PACKAGES,xinit)
# optimized out: use/x11/xorg
use/live/desktop: use/live/base use/x11/wacom use/live/sound +vmguest +power
use/live/desktop: use/live/base use/x11/wacom use/virtualbox/guest \
use/live/sound +power
@$(call add,LIVE_LISTS,$(call tags,desktop && (live || network)))
@$(call add,LIVE_LISTS,$(call tags,base l10n))
@$(call add,LIVE_PACKAGES,fonts-ttf-dejavu fonts-ttf-droid)
@$(call add,SYSLINUX_CFG,localboot)
# alterator-based permanent installation
use/live/install: use/metadata use/syslinux/localboot.cfg
@$(call add,LIVE_PACKAGES,livecd-install)
# text-based installation script
use/live/textinstall: use/syslinux/localboot.cfg
@$(call add,LIVE_PACKAGES,live-install)
# NB: there's an unconditional live/image-scripts.d/40-autologin script
# *but* it only configures some of the *existing* means; let's add one
# or another for the cases when there should be no display manager
use/live/autologin: use/live/x11
@$(call add,LIVE_PACKAGES,autologin)
use/live/nodm: use/live/x11
@$(call add,LIVE_PACKAGES,nodm)
# for the cases when there should be no display manager
use/live/autologin: use/live use/x11/xorg
@$(call add,LIVE_PACKAGES,autologin xinit)
use/live/hooks: use/live
@$(call add,LIVE_PACKAGES,livecd-run-hooks)

View File

@@ -1,42 +0,0 @@
#!/bin/sh
# see also m-p-d::profiles/live/image-scripts.d/init3-services
[ -x /sbin/chkconfig ] || exit 0
ENABLE="
alteratord
livecd-evms
livecd-fstab
livecd-hostname
livecd-save-nfs
livecd-setauth
livecd-setlocale
network
NetworkManager
random
rpcbind
"
# NB: dnsmasq: https://bugzilla.altlinux.org/show_bug.cgi?id=18799
# NB: sshd might be needed for some particular cases
DISABLE="
anacron
bridge
clamd
crond
dhcpd
dnsmasq
mdadm
netfs
openvpn
rawdevices
slapd
smartd
sshd
update_wms
xinetd
"
for i in $ENABLE; do chkconfig $i on 2>/dev/null; done
for i in $DISABLE; do chkconfig $i off 2>/dev/null; done
:

View File

@@ -1,20 +1,20 @@
#!/bin/sh -e
#!/bin/sh -ef
if [ ! -x /usr/bin/X ]; then
echo "SKIP autologin: X not installed" >&2
echo "warning: autologin feature requested but X not installed" >&2
exit 0
fi
USER=altlinux
## setup runlevel
# setup runlevel
INITTAB=/etc/inittab
if [ -f "$INITTAB" ]; then
[ -z "$runlevel" ] && runlevel=5
sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB"
fi
## autologin^2
# autologin^2
if [ -x /usr/sbin/autologin ]; then
cat << E_O_F >> /etc/sysconfig/autologin
USER=$USER
@@ -22,7 +22,7 @@ AUTOLOGIN=yes
E_O_F
fi
## lightdm autologin
# lightdm autologin
LIGHTDM_CONF=/etc/lightdm/lightdm.conf
if [ -f "$LIGHTDM_CONF" ]; then
sed -i \
@@ -31,14 +31,14 @@ if [ -f "$LIGHTDM_CONF" ]; then
"$LIGHTDM_CONF"
fi
## gdm2 autologin
# gdm2 autologin
GDM_CONF=/etc/X11/gdm/custom.conf
if [ -f "$GDM_CONF" ]; then
sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \
"$GDM_CONF"
fi
## kdm3 autologin
# kdm3 autologin
# TODO: iterate over kdm{,4} if feasible
KDMRC=/etc/X11/kdm/kdmrc
if [ -f "$KDMRC" ]; then
@@ -47,66 +47,3 @@ if [ -f "$KDMRC" ]; then
-e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \
"$KDMRC"
fi
## nodm autologin (the last since the most intrusive)
# FIXME nodm and xinitrc should be modified (also in p6)
NODM_RC=/etc/sysconfig/nodm
NODM_EXE=/usr/sbin/nodm
if [ -x "$NODM_EXE" ]; then
cat << E_O_F >> "$NODM_RC"
export NODM_USER=$USER
E_O_F
else
exit 0
fi
# FIXME: drop when #27449 is fixed
PREFDM=/etc/X11/prefdm
if [ -f "$PREFDM" ] && ! grep -q nodm "$PREFDM"; then
sed -i \
-e '/AUTOLOGIN_EXE=/ s,^.*$,AUTOLOGIN_EXE='$NODM_EXE',' \
-e '/AUTOLOGIN_CFG=/ s,^.*$,AUTOLOGIN_CFG='$NODM_RC',' \
"$PREFDM"
fi
# FIXME: drop when #27451 is fixed
NODM_PAM=/etc/pam.d/nodm
for module in pam_console.so pam_ck_connector.so; do
if [ -f /lib*/security/$module ]; then
str="-session optional $module"
grep -q "^$str$" "$NODM_PAM" || echo -e "$str" >> "$NODM_PAM"
fi
done
NODM_POLKIT_CONFDIR=/etc/polkit-1/localauthority/50-local.d
NODM_POLKIT_CONF=org.freedesktop.NetworkManager.pkla
if [ -d "$NODM_POLKIT_CONFDIR" ]; then
cat > "$NODM_POLKIT_CONFDIR/$NODM_POLKIT_CONF" << _EOF_
[nm-applet]
Identity=unix-group:users
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
_EOF_
fi
NODM_DBUS_NM_CONF=/etc/dbus-1/system.d/nm-applet.conf
if [ -f "$NODM_DBUS_NM_CONF" ]; then
sed -i "s/at_console=\"true\"/user=\"$USER\"/" "$NODM_DBUS_NM_CONF"
fi
NODM_G2KR_DIR=/etc/skel/.gnome2/keyrings
mkdir -p "$NODM_G2KR_DIR"
echo -n login > "$NODM_G2KR_DIR"/default
cat > "$NODM_G2KR_DIR"/login.keyring << _EOF_
[keyring]
display-name=login
ctime=0
mtime=0
lock-on-idle=false
lock-after=false
_EOF_
:

View File

@@ -2,9 +2,6 @@
STAGE2_KMODULES = $(THE_KMODULES) $(LIVE_KMODULES)
IMAGE_PACKAGES_REGEXP = $(THE_PACKAGES_REGEXP) \
$(LIVE_PACKAGES_REGEXP)
IMAGE_PACKAGES = $(COMMON_PACKAGES) $(THE_PACKAGES) $(LIVE_PACKAGES) \
$(call map,list, \
$(THE_LISTS) $(THE_GROUPS) \
@@ -12,7 +9,3 @@ IMAGE_PACKAGES = $(COMMON_PACKAGES) $(THE_PACKAGES) $(LIVE_PACKAGES) \
interactivesystem
MKI_PACK_RESULTS = squash:live
debug::
@echo "** live: IMAGE_PACKAGES: $(IMAGE_PACKAGES)"
@echo "** live: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)"

View File

@@ -1,7 +1,6 @@
+ltsp: use/ltsp/base; @:
use/ltsp:
@$(call add_feature)
@$(call add,INSTALL2_PACKAGES,installer-feature-ltsp-stage2)
@$(call add,MAIN_LISTS,ltsp-client ltsp-client.$(ARCH))
@$(call add,BASE_LISTS,ltsp)

View File

@@ -1,3 +0,0 @@
Эта фича занимается метаданными в составе образов --
в первую очередь инсталяционных и пригодных к установке
"живых".

View File

@@ -1,2 +0,0 @@
use/metadata:
@$(call add_feature)

View File

@@ -1,40 +0,0 @@
# 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: name, suffix, command
define dump-THEM
if [ -n "$($(1)_$(2))" ]; then echo -e "\n## $(1)_$(2)"; $(3) $($(1)_$(2)); fi;
endef
dump-PACKAGES = $(call dump-THEM,$(1),PACKAGES,echo)
dump-LISTS = $(call dump-THEM,$(1),LISTS,cat)
# 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/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,$(MAIN_GROUPS) .base) \
$(call rgroup,$(MAIN_GROUPS)) \
> $(METADIR)/pkg-groups.tar

View File

@@ -1,4 +1,3 @@
# distributions
DISTRO_EXTS := .iso
use/pack:
@@ -13,7 +12,6 @@ else
@$(call set,IMAGE_PACKTYPE,isodata)
endif
# virtual environments
VE_ARCHIVES := tar cpio
VE_COMPRESSORS := gz xz# there's no sense in bzip2 by now
VE_ZIPS := $(call addsuffices, \
@@ -36,8 +34,3 @@ $(foreach c,$(VE_ARCHIVES), \
$(eval $(call PACK_containers,$(c))) \
$(foreach z,$(VE_COMPRESSORS), \
$(eval $(call PACK_compressors,$(c),$(z)))))
# virtual machines
VM_EXTS := .img
use/pack/img: use/pack; @:

View File

@@ -1,5 +0,0 @@
Эта фича предназначена для добавления поддержки plymouth
-- современной реализации bootsplash. Плотно взаимодействует
с фичей branding по объективным причинам, но оформлена отдельно
для возможности собирать образы с частичным брендированием либо
"без излишеств".

View File

@@ -1,28 +0,0 @@
+plymouth: use/plymouth/full; @:
# and a few silent aliases
use/plymouth/live: use/plymouth/stage2
use/plymouth/install2: use/plymouth/stage2
use/plymouth:
@$(call add_feature)
# NB: *_REGEXP due to branding() using regexp and the
# dependency resolution having to occur within a
# single transaction (due to plymouth-system-theme)
# looks like there's no sense to pull in progressbars
# while leaving the very basic text bootloader screen
use/plymouth/stage2: use/plymouth use/branding \
use/syslinux/ui/gfxboot use/stage2/kms
@$(call add,STAGE1_PACKAGES_REGEXP,make-initrd-plymouth)
@$(call add,STAGE1_BRANDING,bootsplash)
@$(call add,STAGE2_BRANDING,bootsplash)
use/plymouth/base: use/plymouth use/install2/kms
@$(call add,INSTALL2_BOOTARGS,quiet splash)
@$(call add,INSTALL2_PACKAGES,installer-feature-setup-plymouth)
@$(call add,BASE_PACKAGES_REGEXP,make-initrd-plymouth cpio)
@$(call add,THE_BRANDING,bootsplash)
use/plymouth/full: use/plymouth/stage2 use/plymouth/base; @:

View File

@@ -1,7 +0,0 @@
#!/bin/sh
CONFIG=/etc/plymouth/plymouthd.conf
if [ -f "$CONFIG" ]; then
grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG"
echo 'FEATURES += plymouth' >> /etc/initrd.mk
fi

View File

@@ -1,3 +0,0 @@
#!/bin/sh
cp -a /usr/share/plymouth/default-install-duration /var/lib/plymouth/boot-duration

View File

@@ -3,7 +3,6 @@
# common
# TODO: invent multi-target scripts and integrate that 08-powerbutton
use/power:
@$(call add_feature)
@$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3)
# modern power management
@@ -21,4 +20,4 @@ use/power/acpi/powersave: use/power/acpi
# legacy power management
use/power/apm: use/power
@$(call add,COMMON_PACKAGES,apmd lphdisk)
@$(call add,COMMON_PACKAGES,apmd)

View File

@@ -1 +0,0 @@
Наборы пакетов для семейства дистрибутивов Simply Linux.

View File

@@ -1,20 +0,0 @@
use/slinux: use/x11/xfce use/x11/gdm2.20
@$(call add_feature)
@$(call set,BRANDING,simply-linux)
@$(call add,THE_BRANDING,menu xfce-settings)
@$(call add,THE_LISTS,gnome-p2p)
@$(call add,THE_LISTS,slinux/$(ARCH))
@$(call add,THE_LISTS,slinux/games)
@$(call add,THE_LISTS,slinux/graphics)
@$(call add,THE_LISTS,slinux/live)
@$(call add,THE_LISTS,slinux/misc)
@$(call add,THE_LISTS,slinux/misc-dvd)
@$(call add,THE_LISTS,slinux/multimedia)
@$(call add,THE_LISTS,slinux/network)
@$(call add,THE_LISTS,slinux/xfce)
@$(call add,THE_LISTS,$(call tags,base l10n))
use/slinux/full: use/isohybrid use/slinux use/systemd \
use/firmware/wireless use/branding/complete \
use/x11/drm use/x11/3d-proprietary
@$(call add,THE_PACKAGES,apt-conf-sisyphus)

View File

@@ -1,29 +0,0 @@
#!/bin/sh
# see also m-p-d::profiles/live/image-scripts.d/init3-services
#[ -x /bin/systemctl ] || exit 0
#[ -x /bin/systemctl ] || exit 0
ENABLE="
network
NetworkManager
lvm2-monitor
mdadm
"
# NB: dnsmasq: https://bugzilla.altlinux.org/show_bug.cgi?id=18799
# NB: sshd might be needed for some particular cases
DISABLE="
sshd
"
for i in $ENABLE; do
[ -x /bin/systemctl ] && /bin/systemctl enable ${i}.service
[ -x /sbin/chkconfig ] && /sbin/chkconfig $i on
done
for i in $DISABLE; do
[ -x /bin/systemctl ] && /bin/systemctl disable ${i}.service
[ -x /sbin/chkconfig ] && /sbin/chkconfig $i off
done
:

View File

@@ -3,9 +3,6 @@ use/stage2: sub/stage1
@$(call add_feature)
@$(call add,STAGE1_PACKAGES,file make-initrd make-initrd-propagator)
use/stage2/kms:
@$(call add,STAGE1_KMODULES_REGEXP,drm.*)
# NB: sub/stage2 isn't used standalone but rather
# as a base for various livecd modifications
# (currently install2, live, rescue)

View File

@@ -1,55 +1,32 @@
#!/bin/sh
# NB: -f prohibited in this shebang
# check relevant kernel features availability
CONFIGS=/boot/config-*
GZ_OPTS="-comp gzip -noI"
XZ_OPTS="-comp xz"
LZO_OPTS="-comp lzo -noI"
verbose() { [ -n "$GLOBAL_VERBOSE" ] && echo "** $@" >&2; }
fatal() { echo "** error: $@" >&2; exit 1; }
configured()
{
local option="CONFIG_$1"
if grep -q "^$option" $CONFIGS; then
verbose "${option%=*} available"
return 0
else
return 1
fi
}
ls $CONFIGS >&/dev/null || fatal "no stage1 kernel config found in /boot"
GZ_OPTS="-comp gzip"
XZ_OPTS="-comp xz -b 524288 -noI"
# test for installer-required filesystems support
for opt in SQUASHFS AUFS_FS; do
configured "$opt=[my]" || fatal "stage1 kernel must have $opt support"
done
verbose "GLOBAL_SQUASHFS: $GLOBAL_SQUASHFS"
options()
{
# squashfs options: not really neccessary but better than none
# NB: this config file should be carried over into install2
if [ "$GLOBAL_SQUASHFS" != "fast" ] && configured "SQUASHFS_XZ=y"; then
# NB: the decompression filter overhead might hurt
# NB: there are arm, powerpc and some other filters too
if [ "$GLOBAL_SQUASHFS" = "tight" ] && configured "X86"; then
XZ_OPTS="$XZ_OPTS -b 524288 -Xbcj x86"
else
XZ_OPTS="$XZ_OPTS -b 262144 -noI"
fi
echo "$XZ_OPTS"
else # go fast, or even faster if possible
if configured "SQUASHFS_LZO=y"; then
echo "$LZO_OPTS"
else # safe default
echo "$GZ_OPTS"
for opt in CONFIG_SQUASHFS CONFIG_AUFS_FS; do
if grep -q "^$opt=[my]$" /boot/config-*; then
[ -n "$GLOBAL_VERBOSE" ] && echo "** $opt available"
else
if [ "$?" = 1 ]; then # a file exists but lacks the pattern
echo "** error: stage1 kernel must have $opt support" >&2
exit 1
fi
fi
}
done
echo "PACK_SQUASHFS_OPTS=-no-recovery `options`" > /.image/squashcfg.mk
# squashfs options: not really neccessary but better than none
# NB: this config file should be carried over into install2
if grep -q '^CONFIG_SQUASHFS_XZ=y$' /boot/config-*; then
# TODO: figure out if it's generally worth it even on x86:
# if binaries account for less than ~70% of blocks,
# the decompression filter overhead might hurt
# NB: there are arm, powerpc and some other filters too
if grep -q "^CONFIG_X86" /boot/config-*; then
XZ_OPTS="$XZ_OPTS -Xbcj x86"
fi
echo "PACK_SQUASHFS_OPTS=$XZ_OPTS" > /.image/squashcfg.mk
else
echo "PACK_SQUASHFS_OPTS=$GZ_OPTS" > /.image/squashcfg.mk
fi

View File

@@ -2,3 +2,10 @@
# FIXME: move somewhere else
#echo 'FEATURES += nfs' >> /etc/initrd.mk
# FIXME: move to plymouth feature
#if [ -f /etc/plymouth/plymouthd.conf ];then
# sed -i 's/#\([T\[]\)/\1/' /etc/plymouth/plymouthd.conf
# echo 'FEATURES += plymouth' >> /etc/initrd.mk
#fi

View File

@@ -1,26 +1,15 @@
#!/bin/sh -efu
# NB: /etc/initrd.mk carefully prepared by earlier scripts
kver="$(rpm -qa 'kernel-image*' \
--qf '%{installtime} %{version}-%{name}-%{release}\n' \
kver="$(rpm -qa 'kernel-image*' --qf '%{installtime} %{version}-%{name}-%{release}\n' \
| sort -n \
| tail -n 1 \
| cut -f 2 -d ' ' \
| sed 's/kernel-image-//')"
MAKE_INITRD_OPTS="--no-checks -k $kver"
MAKE_INITRD_VER="`make-initrd -V \
| sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`"
if [ "`rpmvercmp "$MAKE_INITRD_VER" "0.7.8"`" != "-1" ]; then
MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS --no-depmod"
fi
if make-initrd $MAKE_INITRD_OPTS; then
gzip < /boot/initrd-$kver.img > $(getconf LIBDIR)/propagator/initfs
else
exit 1
fi
make-initrd --no-checks -k $kver \
&& gzip < /boot/initrd-$kver.img > $(getconf LIBDIR)/propagator/initfs \
|| exit 1
[ -h /boot/vmlinuz ] || ln -s vmlinuz-$kver /boot/vmlinuz
[ -h /boot/initrd.img ] || ln -s initrd-$kver.img /boot/initrd.img

View File

@@ -1,5 +1,5 @@
label live
menu label ^LiveCD (no hard disk needed)
kernel alt0/vmlinuz
append initrd=alt0/full.cz fastboot live lowmem showopts automatic=method:cdrom ramdisk_size=@live_size@ stagename=live splash quiet=1 vga=0x314
append initrd=alt0/full.cz fastboot live lowmem showopts automatic=method:cdrom ramdisk_size=@live_size@ stagename=live

View File

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

View File

@@ -9,7 +9,7 @@ use/syslinux/ui/%: use/syslinux
@$(call set,SYSLINUX_UI,$*)
@if [ "$*" == gfxboot ]; then \
$(call add,STAGE1_PACKAGES,gfxboot); \
$(call add,STAGE1_BRANDING,bootloader); \
$(call add,STAGE1_PACKAGES,branding-$$(BRANDING)-bootloader); \
fi
# modules and config snippets just add up

View File

@@ -55,7 +55,7 @@ all: debug timeout
@echo $(SYSLINUX_FILES) > $(DSTDIR)/syslinux.list
# integerity check
timeout: bootargs
timeout: copy
@if [ "$(SYSLINUX_TIMEOUT)" -ge 0 ] 2>/dev/null; then \
TIMEOUT="$(SYSLINUX_TIMEOUT)"; \
else \
@@ -63,18 +63,6 @@ timeout: bootargs
fi; \
sed -i "s,@timeout@,$$TIMEOUT," $(DSTDIR)/*.cfg
# pass over additional parameters, if any
bootargs: clean
@if [ -n "$(INSTALL2_BOOTARGS)" ]; then \
sed -i "s,@bootargs@,$(INSTALL2_BOOTARGS)," $(DSTDIR)/*.cfg; \
fi; \
sed -i "s,@bootargs@,," $(DSTDIR)/*.cfg
clean: copy
@if [ "$(SYSLINUX_UI)" = gfxboot ]; then \
sed -i "s,\^,," $(DSTDIR)/*.cfg; \
fi
copy: prep
@cp -pLt $(DSTDIR) -- $(sort \
$(foreach C,$(SYSLINUX_CFG),$(call cfg,$(C))) \

View File

@@ -0,0 +1,4 @@
use/virtualbox/guest:
@$(call add_feature)
@$(call add,THE_KMODULES,virtualbox-addition)
@$(call add,THE_PACKAGES,virtualbox-guest-additions)

View File

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

View File

@@ -1,13 +0,0 @@
+vmguest: use/vm/virtualbox/guest use/vm/kvm/guest; @:
use/vm/virtualbox/guest:
@$(call add_feature)
@$(call add,THE_KMODULES,virtualbox-addition drm)
@$(call add,THE_PACKAGES,virtualbox-guest-additions)
# NB: only reasonable for X11-bearing images
use/vm/kvm/guest:
@$(call add_feature)
@$(call add,THE_PACKAGES,spice-vdagent)
# see also use/install2/kvm

View File

@@ -1,9 +1,8 @@
+icewm: use/x11/icewm; @:
+razorqt: use/x11/razorqt use/x11/lightdm/qt; @:
+razorqt: use/x11/razorqt use/x11/lightdm; @:
+tde: use/x11/tde use/x11/kdm; @:
use/x11/xorg:
@$(call add_feature)
@$(call add,THE_LISTS,xorg)
use/x11/wacom: use/x11/xorg
@@ -30,15 +29,12 @@ use/x11/xdm: use/x11/runlevel5
@$(call add,THE_PACKAGES,xdm installer-feature-no-xconsole)
### : some set()-like thing might be better?
use/x11/lightdm/qt use/x11/lightdm/gtk: use/x11/lightdm/%: use/x11/runlevel5
@$(call add,THE_PACKAGES,lightdm-$*-greeter)
use/x11/lightdm: use/x11/runlevel5
@$(call add,THE_PACKAGES,lightdm)
use/x11/kdm: use/x11/runlevel5
@$(call add,THE_PACKAGES,kdebase-kdm)
use/x11/gdm2.20: use/x11/runlevel5
@$(call add,THE_PACKAGES,gdm2.20)
use/x11/icewm: use/x11/xorg
@$(call add,THE_LISTS,$(call tags,icewm desktop))
@@ -47,9 +43,3 @@ use/x11/razorqt: use/x11/xorg
use/x11/tde: use/x11/xorg
@$(call add,THE_LISTS,$(call tags,tde desktop))
use/x11/xfce: use/x11/xorg
@$(call add,THE_LISTS,$(call tags,xfce desktop))
use/x11/cinnamon: use/x11/xorg use/x11/drm
@$(call add,THE_LISTS,$(call tags,cinnamon desktop))

View File

@@ -11,7 +11,6 @@ MKI_VER_OPTIMAL = 0.2.0
include distcfg.mk
include functions.mk
# check the build environment
ifeq (,$(realpath $(MKIMAGE_PREFIX)/config.mk))
$(error please apt-get install mkimage and have a look at QUICKSTART as well)
endif
@@ -27,19 +26,9 @@ $(info warning: mkimage-$(MKI_VERSION) is suboptimal, consider upgrading)
$(warning consider upgrading mkimage to $(MKI_VER_OPTIMAL) or better)
endif
# additional means to reduce havoc in IMAGEDIR
IMAGE_SORTDIR := $(SORTDIR)
# reconstruct instead of passing yet another variable
IMAGE_OUTDIR := $(IMAGEDIR)$(IMAGE_SORTDIR:%=/%)
IMAGE_OUTFILE := $(IMAGE_NAME)-$(DATE)-$(ARCH).$(IMAGE_TYPE)
IMAGE_OUTPATH := $(IMAGE_OUTDIR)/$(IMAGE_OUTFILE)
IMAGE_RELPATH := $(IMAGE_SORTDIR:%=%/)$(IMAGE_OUTFILE)
IMAGE_RELDIR := $(IMAGE_OUTDIR:$(GLOBAL_BUILDDIR)/%=%)
IMAGE_LINK := $(IMAGE_NAME).$(IMAGE_TYPE)
IMAGE_LINKPATH := $(IMAGEDIR)/$(IMAGE_LINK)
### multi-pack can be useful (think netinst iso/tree)
IMAGE_LINK := $(IMAGE_NAME).$(IMAGE_TYPE)
IMAGE_OUTFILE := $(IMAGE_NAME)-$(DATE)-$(ARCH).$(IMAGE_TYPE)
MKI_PACK_RESULTS = $(IMAGE_PACKTYPE):$(IMAGE_OUTFILE)
# these get opied over as is
@@ -55,7 +44,7 @@ include lib/*.mk
include $(MKIMAGE_PREFIX)/targets.mk
# specified only for the final image (target-specific)
pack-image: OUTDIR = $(IMAGE_OUTDIR)
pack-image: OUTDIR = $(IMAGEDIR)
pack-image: imagedir
copy-tree: $(SAVE_PROFILE:%=save-profile)
@@ -68,18 +57,18 @@ save-profile:
.PHONY: imagedir postprocess debug
imagedir:
@mkdir -p "$(IMAGE_OUTDIR)"
@mkdir -p "$(IMAGEDIR)"
postprocess: | $(addprefix postprocess-,$(sort $(POSTPROCESS_TARGETS)))
@OUTSIZE="`ls -lh "$(IMAGE_OUTPATH)" | cut -f5 -d' '`"; \
echo "** image: $(IMAGE_OUTPATH) [$$OUTSIZE]" >&2 && \
echo "IMAGE_OUTPATH = $(IMAGE_OUTPATH)" && \
ln -sf "$(IMAGE_RELPATH)" "$(IMAGE_LINKPATH)" && \
ln -sf "$(IMAGE_RELDIR)" "$(OUT_LINK)" && \
ln -sf "$(IMAGE_LINK)" "$(IMAGEDIR)/$(CURRENT_LINK).$(IMAGE_TYPE)"; \
@OUTPATH="$(IMAGEDIR)/$(IMAGE_OUTFILE)"; \
OUTSIZE="`ls -lh "$$OUTPATH" | cut -f5 -d' '`"; \
echo "** image: $$OUTPATH [$$OUTSIZE]" >&2 && \
ln -sf "$(IMAGE_OUTFILE)" "$(IMAGEDIR)/$(IMAGE_LINK)" && \
ln -sf "$${IMAGEDIR#`pwd`/}" "$(OUT_LINK)"; \
ln -sf "$(IMAGE_LINK)" $(OUT_LINK)/"$(CURRENT_LINK).$(IMAGE_TYPE)"; \
if [ -n "$(GLOBAL_DEBUG)" ]; then \
cp -a build.log "$(IMAGE_OUTPATH).log"; \
cp -a distcfg.mk "$(IMAGE_OUTPATH).cfg"; \
cp -a build.log "$$OUTPATH.log"; \
cp -a distcfg.mk "$$OUTPATH.cfg"; \
fi
debug:

View File

@@ -5,13 +5,11 @@ PKGDIR := $(GLOBAL_BUILDDIR)/pkg
ARCH ?= $(shell arch | sed 's/i686/i586/')
DATE ?= $(shell date +%Y%m%d)
# prefix pkglist name with its directory to form a path (relative/absolute)
rlist = $(1:%=lists/%)
list = $(addprefix $(PKGDIR)/,$(call rlist,$(1)))
# prefix pkglist name with its directory to form a path
list = $(1:%=$(PKGDIR)/lists/%)
# prefix/suffix group name to form a path (relative/absolute)
rgroup = $(1:%=groups/%.directory)
group = $(addprefix $(PKGDIR)/,$(call rgroup,$(1)))
# prefix/suffix group name to form a path
group = $(1:%=$(PKGDIR)/groups/%.directory)
# map first argument (a function) onto second one (an argument list)
map = $(foreach a,$(2),$(call $(1),$(a)))
@@ -21,10 +19,5 @@ NULL :=
SPACE := $(NULL) # the officially documented way of getting a space
list2re = $(subst $(SPACE),|,$(strip $(1)))
# args: KMODULES, KFLAVOURS
kpackages = $(and $(1),$(2), \
^kernel-(image|modules-($(call list2re,$(1))))-($(call list2re,$(2)))$$)
# arg: branding subpackages
branding = $(and $(1),^branding-$(BRANDING)-($(call list2re,$(1)))$$)
kpackages = ^kernel-(image|modules-($(call list2re,$(1))))-($(call list2re,$(2)))$$

View File

@@ -2,9 +2,6 @@
ANSI_OK ?= 1;32
ANSI_FAIL ?= 1;31
MAX_ERRORS = 3
GOTCHA := ^(((\*\* )?(E:|[Ee]rror|[Ww]arning).*)|(.* (conflicts|Depends:) .*)|(.* (Stop|failed)\.))$$
ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
@@ -51,10 +48,8 @@ build-image: profile/populate
echo "$(TIME) done (`tail -1 $(BUILDLOG) | cut -f1 -d.`)"; \
tail -200 "$(BUILDLOG)" $(SHORTEN) \
| GREP_COLOR="$(ANSI_OK)" GREP_OPTIONS="--color=auto" \
grep '^\*\* image: .*$$' ||:; \
RETVAL=0; \
grep '^\*\* image: .*' ||:; \
else \
RETVAL=$$?; \
echo -n "$(TIME) failed, see log"; \
if [ -z "$(DEBUG)" ]; then \
echo ": $(BUILDLOG)" $(SHORTEN); \
@@ -64,10 +59,9 @@ build-image: profile/populate
fi; \
tail -200 "$(BUILDLOG)" \
| GREP_COLOR="$(ANSI_FAIL)" GREP_OPTIONS="--color=auto" \
egrep -m "$(MAX_ERRORS)" "$(GOTCHA)"; \
egrep "^((E:|[Ee]rror|[Ww]arning).*)|(.* Stop\.)$$"; \
df -P $(BUILDDIR) | awk 'END { if ($$4 < $(LOWSPACE)) \
{ print "NB: low space on "$$6" ("$$5" used)"}}'; \
fi; \
if [ -n "$(BELL)" ]; then echo -ne '\a'; fi; \
exit $$RETVAL; \
} >&2

View File

@@ -1,17 +0,0 @@
ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
check:
@find sub.in features.in \
-path '*scripts.d/*' \
\! \( -perm 755 -o -name .gitignore \) \
| while read line; do \
echo "chmod 755 $$line"; \
done
@find features.in -maxdepth 1 -type d \
| while read dir; do \
if [ ! -s "$$dir/README" ]; then \
echo "$$dir: missing README"; \
fi; \
done

View File

@@ -53,7 +53,7 @@ distclean: clean
# than BUILDDIR is -- usually it's unneeded afterwards so just zap it
postclean: build-image
@{ \
if [ "$(NUM_TARGETS)" -gt 1 -a -z "$(DEBUG)" -a -z "$(__frontend)" ] ||\
if [ "$(NUM_TARGETS)" -gt 1 -a -z "$(DEBUG)" ] || \
[ ! -L "$(SYMLINK)" -a "0$(DEBUG)" -lt 2 ]; then \
echo "$(TIME) cleaning up after build"; \
$(MAKE) -C "$(BUILDDIR)" distclean \

View File

@@ -1,23 +0,0 @@
# common bits for building and reporting parts
# somewhat reusable
BUILD_LOG = build.log
# link it to BUILDDIR if possible
SYMLINK = build
# brevity postprocessor; not exported, for toplevel use only
SHORTEN = $(shell FILTER=; \
if [ -s "$(SYMLINK)" ]; then \
FILTER=" -e 's,$(BUILDDIR),$(SYMLINK),'"; \
fi; \
if [ -n "$$TMP" ]; then \
FILTER="$$FILTER -e 's,$$TMP,\$$TMP,'"; \
fi; \
if [ -n "$$HOME" ]; then \
FILTER="$$FILTER -e 's,$$HOME,~,'"; \
fi; \
if [ -n "$$FILTER" ]; then \
echo -n "| sed $$FILTER"; \
fi; \
)

View File

@@ -23,16 +23,17 @@ distro/.init: profile/bare
# NB: the last flavour in KFLAVOURS gets to be the default one;
# the kernel packages regexp evaluation has to take place at build stage
distro/.base: distro/.init use/kernel
distro/.base: distro/.init
@$(call set,KFLAVOURS,std-def)
@$(call set,META_SYSTEM_ID,LINUX)
@$(call set,META_VOL_ID,ALT Linux $(IMAGE_NAME)/$(ARCH))
@$(call set,META_VOL_ID,ALT Linux $(ARCH))
@$(call set,META_VOL_SET,ALT Linux)
# something marginally useful (as a network-only installer)
# NB: doesn't carry stage3 thus cannot use/bootloader
distro/installer: distro/.base use/syslinux/localboot.cfg \
use/install2 use/install2/kms use/install2/kvm
distro/installer: distro/.base use/install2 use/syslinux/localboot.cfg
@$(call set,INSTALLER,altlinux-generic)
@$(call set,STAGE1_KMODULES_REGEXP,drm.*) # for KMS
distro/.installer: distro/installer use/bootloader/grub use/repo/main; @:

View File

@@ -47,8 +47,7 @@ add_feature = $(call add,FEATURES,$(word 2,$(subst /, ,$@)))
# convert tag list into a list of relative package list paths
# NB: tags can do boolean expressions: (tag1 && !(tag2 || tag3))
tags = $(and $(strip $(1)),$(addprefix tagged/,$(shell echo "$(1)" \
| tags2lists pkg.in/lists/tagged)))
tags = $(and $(strip $(1)),$(addprefix tagged/,$(shell echo "$(1)" | bin/tags2lists pkg.in/lists/tagged)))
# toplevel Makefile convenience
addsuffices = $(foreach s,$(1),$(call addsuffix,$s,$(2)))

View File

@@ -1,28 +1,12 @@
# this makefile holds the most helpful bits for the toplevel one
ifdef __frontend
define help_body
@for i in $(2); do echo $$i; done
endef
else
define help_body
echo '** available $(1) targets:'; \
columnize $(2)
endef
endif
help = $(and $(2),$(help_body))
help/distro:
@$(call help,distribution,$(sort $(DISTROS:distro/%=%)))
@echo '** available distribution targets:'; \
bin/columnize $(sort $(DISTROS:distro/%=%))
help/ve:
@[ -n "$(SPACE)" ] && echo; \
$(call help,virtual environment,$(sort $(VES)))
@echo '** available virtual environment targets:'; \
bin/columnize $(sort $(VES))
help/vm:
@[ -n "$(SPACE)" ] && echo; \
$(call help,virtual machine,$(sort $(VMS)))
help: SPACE = 1
help: help/distro help/ve help/vm; @:
help: | help/distro help/space help/ve; @:
help/space:; @echo

View File

@@ -1,10 +0,0 @@
ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
# choose std kernel flavour for max RAM size support
ifeq (i586,$(ARCH))
BIGRAM := std-pae
else
BUGRAM := std-def
endif

View File

@@ -6,15 +6,7 @@ ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
# 1.3.22 fixes http://bugzilla.altlinux.org/26217
HSH_VER_OPTIMAL = 1.3.22
HSH_VERSION := $(shell hsh -V | sed -n 's/^.* version \([0-9.]\+\).*$$/\1/p')
ifeq (-,$(shell rpmvercmp $(HSH_VERSION) $(HSH_VER_OPTIMAL) | tr -d [0-9]))
$(info warning: hasher-$(HSH_VERSION) is suboptimal, consider upgrading)
endif
BUILDLOG ?= $(BUILDDIR)/$(BUILD_LOG)
BUILDLOG ?= $(BUILDDIR)/build.log
# LOG holds a redirecting postprocessor
ifdef DEBUG
@@ -35,3 +27,12 @@ DATE = $(shell date +%Y%m%d)
TIME = `date +%H:%M:%S`
export BUILDLOG DATE GLOBAL_DEBUG GLOBAL_VERBOSE LOG MAKE SHELL
# brevity postprocessor; not exported, for toplevel use only
SHORTEN = $(shell \
echo -n "| sed"; \
if [ -s "$(SYMLINK)" ]; then \
echo -n " -e 's,$(BUILDDIR),$(SYMLINK),'"; \
fi; \
echo -n " -e 's,$(TMP),\$$TMP,' -e 's,$(HOME),~,'"; \
)

View File

@@ -2,6 +2,8 @@ ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
SYMLINK = build
# this could have come from env; or could be symlinked; or is made anew
# (the reuse rationale is avoiding extra tmpdir lookups)
# NB: immediate assignment matters
@@ -13,7 +15,7 @@ if [ -s "$(SYMLINK)" -a "$(NUM_TARGETS)" = 1 ] && \
then \
echo "$(BUILDLINK)"; \
else \
mktmpdir $(BUILDDIR_PREFIX) || exit 200; \
bin/mktmpdir $(BUILDDIR_PREFIX) || exit 200; \
fi; )
endif
@@ -24,7 +26,9 @@ endif
# 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
CONFIG := $(BUILDDIR)/distcfg.mk
RC := $(HOME)/.mkimage/profiles.mk

View File

@@ -1,17 +0,0 @@
# step 2: build up virtual machine's configuration
ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
ifeq (vm,$(IMAGE_CLASS))
#vm/.bare: profile/bare use/bootloader/grub
vm/.bare: profile/bare
@$(call add,BASE_PACKAGES,basesystem interactivesystem lilo passwd shadow-utils e2fsprogs mingetty)
@$(call set,KFLAVOURS,std-def)
vm/bare: vm/.bare
@$(call add,BASE_PACKAGES,apt)
endif

10
main.mk
View File

@@ -6,7 +6,7 @@
# --- in BUILDDIR
# 4. build subprofiles and subsequently an image
MKIMAGE_PROFILES := $(dir $(lastword $(MAKEFILE_LIST)))
MKIMAGE_PROFILES = $(dir $(lastword $(MAKEFILE_LIST)))
# deal with one target at a time
IMAGE_TARGET := $(firstword $(MAKECMDGOALS))# ve/generic.tar.gz
@@ -34,19 +34,15 @@ include 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)
IMAGES := $(DISTROS) $(VES)
.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS) $(VM_TARGETS)
.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS)
.PHONY: debug everything help space
### duplicate but still needed

View File

@@ -2,22 +2,20 @@
# (and only those!) over to $(BUILDDIR)
ifndef BUILDDIR
pkgdups:
@find -type f ! -name README ! -name Makefile \
| grep -v '~$$' \
| sed 's,^\./,,g' \
| xargs ../../bin/pkgdups
%:
$(error BUILDDIR not defined)
else
$(error BUILDDIR not defined)
endif
include $(BUILDDIR)/distcfg.mk
SUFFIX := pkg/lists
TARGET := $(BUILDDIR)/$(SUFFIX)
# Metadata/ needed only for installers (and not for e.g. syslinux.iso)
# FIXME: installable live needs it too, don't move to install2 feature
### see also .../features.in/build-distro/lib/build-distro.mk
ifneq (,$(findstring install2,$(FEATURES)))
DOTBASE := dot-base
endif
all: $(TARGET) $(GLOBAL_DEBUG) $(DOTBASE) copy-lists copy-groups
@if type -t git >&/dev/null && cd $(TARGET); then \
if [ -n "`git status -s`" ]; then \
@@ -27,19 +25,34 @@ all: $(TARGET) $(GLOBAL_DEBUG) $(DOTBASE) copy-lists copy-groups
cd - >&/dev/null; \
fi
# env | sort -u | grep _LISTS | xargs cp
copy-lists:
@# 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))))
@cp --parents -at $(TARGET) -- \
$(foreach V, \
$(filter %_LISTS,$(sort $(.VARIABLES))), \
$(if $(filter environment% file,$(origin $V)),$($V)))
copy-groups:
@if [ -n "$(THE_GROUPS)$(MAIN_GROUPS)" ]; then \
cp -at $(TARGET) -- $(THE_GROUPS) $(MAIN_GROUPS); \
fi
# args: name, suffix, command
define dump-THEM
if [ -n "$($(1)_$(2))" ]; then echo -e "\n## $(1)_$(2)"; $(3) $($(1)_$(2)); fi;
endef
dump-PACKAGES = $(call dump-THEM,$(1),PACKAGES,echo)
dump-LISTS = $(call dump-THEM,$(1),LISTS,cat)
dot-base:
@# construct .base packagelist for alterator-pkg
@{ \
echo "## generated by pkg.in/lists/Makefile"; \
$(foreach p,SYSTEM COMMON THE BASE,$(call dump-PACKAGES,$(p))) \
$(foreach l,THE BASE,$(call dump-LISTS,$(l))) \
} | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' >$(TARGET)/.base
# do beforehand as foreach gets expanded before recipe execution
$(TARGET):
@mkdir -p $(TARGET)
@@ -49,6 +62,5 @@ debug:
@echo -e $(foreach V, \
$(filter %_LISTS,$(sort $(.VARIABLES))), \
$(if $(filter environment% file,$(origin $V)),\
$(shell echo '\\n"**"' $V: $(value $V)))) '\n'
$(shell echo '\\n"**"' $V: $($V)))) '\n'
endif

View File

@@ -8,8 +8,3 @@
Подкаталог tagged/ содержит тегированные списки, имена которых
удобно получать функцией tags() (см. ../../lib/functions.mk).
Для выявления дубликатов в составе списков служит `make pkgdups';
пытаться избежать дублей на 100% скорее бесполезно, но бродячие
устойчивые группы пакетов могут заслуживать выделения отдельным
списком.

View File

@@ -1,2 +0,0 @@
transmission-gtk
eiskaltdcpp-gtk

1
pkg.in/lists/kernel-wifi Normal file
View File

@@ -0,0 +1 @@
firmware-rt73

View File

@@ -1,2 +0,0 @@
dropbox
thunar-dropbox-plugin

View File

@@ -1,17 +0,0 @@
# gnome-games
#gnome-games-glines
#gnome-games-gnect
#gnome-games-gnibbles
gnome-games-gnobots
#gnome-games-quadrapassel
gnome-games-gnomine
gnome-games-gnotravex
gnome-games-gnotski
#gnome-games-gtali
#gnome-games-iagno
gnome-games-mahjongg
#gnome-games-swell-foop
gnome-games-sol
gnome-games-sudoku
gnome-games-glchess

View File

@@ -1,18 +0,0 @@
freeciv
wesnoth
ppracer
sauerbraten
instead-launcher
instead-cat
Ri-li
openttd
openastromenace
PokerTH
celestia-gnome
gcompris
gcompris-voices-en
gcompris-voices-ru

View File

@@ -1,10 +0,0 @@
gimp2
gimp-plugin-gutenprint
xsane-gimp2
# inkscape
gphoto2
sane
xsane
gthumb
yagf

View File

@@ -1,3 +0,0 @@
blender
blender-plugins-yafaray
blender-plugins-localdocs

Some files were not shown because too many files have changed in this diff Show More