RFC: kernel.spec i configi

Przemyslaw Iskra sparky w pld-linux.org
Wto, 31 Mar 2009, 13:11:22 CEST


Po wyjściu nowego kernela powinno się przesortować configi, _nie
zmieniając w nich nic więcej_, i commitnąć:

./kernel-config-sort.pl ../BUILD/kernel*-VERSION/linux-VERSION/ kernel-multiarch.config

Na końcu configa pojawi się lista "Probably removed options", większość
z nich po prostu zmieniła nazwę. Można się posłużyć wartościami przy
dodawaniu brakujących opcji. Potem listę tę powinno się usunąć.
Nowe opcje można dodawać na końcu, od nowa sortując config przed każdym
commitem.

Struktura configa:
NAZWA_OPCJI arch1=1 arch2=2 all=3

Jeśli opcja nie zaczyna się od CONFIG_ zosanie to dodane.
Jeśli w kernelu kernel-config.awk zostanie wywołany odpowiednio
(tak jak jest teraz w kernel.spec) opcja zostanie wybrana spośród
najlepiej pasującej wartości dla danej architektury.
Wybór w kolejności to: CPU, BASE_ARCH, ARCH_DIR, ALL.

Przykłady:
athlon:	athlon, i386, x86, all
i686:	i686, i386, x86, all
amd64:	amd64, x86_64, x86, all
x86_64:	x86_64, x86_64, x86, all
ppc:	ppc, ppc, powerpc, all
ppc64:	ppc64, ppc64, powerpc, all
ia64:	ia64, ia64, ia64, all

jeśli będzie:
NAZWA_OPCJI all=1 powerpc=2 ppc64=3 x86=6
- na ppc64 wartość będzie 3
- na ppc (32) wartość będzie 2
- na wszystkich x86_64 i i386 wartość będzie 6
- na wszystkich innych będzie 1


kernel-config.awk dodaje opcje w kolejności w jakiej je znalazł, nie
powtarzając żadnej. Jeśli dana opcja powtórzy się w tym samym pliku
program zakończy z błędem. Jeśli opcja powtórzy się w innym pliku
informacja o tym wyląduje na stderr i nie zostanie ona dodana (w
pliku wyjściowym pojawi się tylko pierwsze wystąpienie).


kernel-track-config-change.awk sprawdza czy któraś z opcji nie została
zmieniona przy budowie kernela. W takim przypadku należy odszukać przyczynę
i ją poprawić (np. mamy załączone coś co robi "select" czegoś innego,
co załączone nie jest).


Wróćmy do kernel-multiarch.config. Po posortowaniu może się pojawić na
górze lista: "FILE: arch/* - ARCH SPECIFIC OPTIONS". Wszystkie te opcje
powinny zostać przeniesione do odpowiedniego kernel-ARCH_DIR.config
(gdzie ARCH_DIR to x86, powerpc, ...). Jest parę opcji które się
powtarzają między (prawie) wszystkimi architekturami; mimo to nie powinny
one się znaleźć w multiarch poniewać były przypadki tak samo nazwanych
lecz nie równoznacznych opcji. Do tego skrypt sortujący nie będzie w
stanie poprawnie posortować tych opcji (bo trzeba by sortować wg. jednej
z architektór, co nie będzie poprawne dla innej).

Aby posortować config dla danego ARCH_DIR należy wywołać:

./kernel-config-sort.pl ../BUILD/kernel*-VERSION/linux-VERSION/ -a ARCH_DIR kernel-ARCH_DIR.config

Po wstępnym posortowaniu (bez żadnych innych zmian) i commitnięciu,
dobrze jest popatrzeć na config czy nie ma żadnej opcji spoza
arch/*, wszystkie takie opcje powinny wylądować w multiarch.config.
Oczywiście najlepiej przed każdym commitem posortować i przejrzeć.



Dodatkowe linie w configach:
Linie zaczynające się od #- są kompletnie ignorowane przez sort.pl.
Linie zaczynające się od #* to "sticky comment", będzie on zawsze się
znajdował przed opcją która jest zaraz po nim, sort.pl go nie usunie
i będzie przenosił komentarz wraz z opcją (jeśli ona zmieni miejsce).
Każda inna linia, czyli niepoprawna sformatowana opcja, lub linie
zaczynające się od #<coś innego> zostaną przez sort usunięte; na
wyjściu pojawi się ostrzeżenie o niepoprawnej linii.


Dobrze by było gdyby...
Wszystkie opcje pochodzące z patchy dodawać do kernel-patches.config,
lub do specyficznego configa jeśli dany patch go posiada. Proszę
nie dodawać ich do multiarch.config, ponieważ mogą one wylądować
w "Probably removed options" (kiedy dany patch jeszcze nie jest gotowy)
i być przypadkowo usunięte.


Proszę pamiętać o tym że opcja nie będzie powtórzona w wyjściowym
configu. To co kiedyś było załatwiane przy pomocy seda, teraz wystarczy
się upewnić że zmieniona wartość pojawi się wystarczająco wcześnie
(np. w important.config), przed opcją z wartościami domyślnymi.


-- 
 ____  Sparky{PI] -- Przemyslaw _  ___  _  _  ........... LANG...Pl..Ca..Es..En
/____) ___  ___  _ _ || Iskra  |  | _ \| |  | : WWW........ppcrcd.pld-linux.org
\____\| -_)'___| ||^'||//\\// <   |  _/| |  | : JID......sparky<at>jabberes.org
(____/||   (_-_|_||  ||\\ ||   |_ |_|  |_| _| : Mail....sparky<at>pld-linux.org


Więcej informacji o liście dyskusyjnej pld-devel-pl