2.2 vs 2.4 -- propozycja

Paweł Sakowski pawel w sakowski.eu.org
Sob, 21 Lip 2001, 20:01:57 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ostatnio rozgrywa się dyskusja, którą wersję jądra wspierać jako
standardowe jądro PLD. Ponieważ są argumenty zarówno za 2.2 jak i 2.4,
wypadałoby rozwijać oba jądra równolegle (do czasu, kiedy wszyscy uznają
serię 2.4 za jedynie słuszną). Zatem proponuję, żeby na eftepie (w
/PLD-1.0/.../RPMS) leżały obie wersje jądra i pakiety pomocnicze dla
jednej i drugiej. O ile mi wiadomo, pakiety zależne od wersji jądra dzielą
się na:

1. moduły (alsa, ltmodem, ...)
2. narzędzia (firewall-init i okolice)

Ad.1: Tutaj jest też problem także z aktualizacją, kiedy zmienia się
wersja jądra. Dlatego proponuję w przypadku pakietów z modułami odejść od
standardowego nazewnictwa plików .rpm i stworzyć coś w stylu
alsa-driver-up-0.5.10b-1-2.2.19.i686.rpm (przy odpowiednim wsparciu ze
strony rpm'a). Do tego Conflicts: kernel != %{_kernel_ver}, żeby ktoś się
nie zagapił. Tu IMO branczowanie nie jest potrzebne, bo nawet jeśli są
jakieś różnice w budowaniu między 2.2 a 2.4, można to rozwiązać
odpowiednimi konstrukcjami shella w stylu if %{_kernel_ver}... (zrobiłem
tak w przypadku lirca).

Ad.2: Tu nie występuje zależność od SUBLEVELa, ale można zastosować
analogiczny mechanizm nazewnictwa: firewall-init-2.99.5-1-2.4.i686.rpm.
Różnice są tu dalej idące, niż w przypadku modułów, ale także dałoby się
uniknąć rozbranczowienia speców. Widziałbym to tak, że z CVSowego modułu
firewall-init do SOURCES wyeksportowałoby się oba brancze (z nazwami
np. %{name}-2.99.5-2.2.tar.gz i %{name}-2.99.5-2.4.tar.gz. Oba byłyby
wymienione w specu jako Source i wybór właściwego dokonywałby się na
podstawie %{_kernel_ver} (n.b. czy nie warto tego makra wrzucić do
macros.pld?). Innych narzędzi z rozbiciem wersji nie znam, ale można
zastosować analogiczny mechanizm.

Pozostaje jeszcze problem przebudowywania wszystkiego dla odpowiednich
wersji jądra (iptables dla 2.4, alsa-driver-up dla obu). Widziałbym to
tak: na górze speca dopisuje się:

# BUILD FOR 2.2
# BUILD FOR 2.4

i na builderach daje się coś takiego (z zastrzeżeniem, że nie mam pojęcia
jak działają nasze buildery):

if head -5 $SPECFILE|grep '^# BUILD FOR 2.2'>/dev/zero; then
	rm -f /usr/src/linux
	ln -s linux-2.2.19 /usr/src/linux
	do_build
	built=1
fi
if head -5 $SPECFILE|grep '^# BUILD FOR 2.4'>/dev/zero; then
	rm -f /usr/src/linux
	ln -s linux-2.4.5 /usr/src/linux
	do_build
	built=1
fi
[ -z "$built" ] && do_build

Oczywiście potrzeba, żeby na builderach leżały po dwa kernel-source i
kernel-headers, ale to chyba da się zrobić.

Koments?

+--------------------------------------------------------------------+
|   In God we trust. All others must   :            Paweł Sakowski   |
|  present a valid X.500 certificate.  :   <pawel w sakowski.eu.org>   |
+--------------------------------------------------------------------+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
Filter: gpg4pine 4.2 (http://azzie.robotics.net)

iD8DBQE7WcOcNJmavqlTkb0RAm40AKDMq6P+f3SeA4DqaxyzUNPGKpu1UQCdFngS
aHSwp09r4e+7oZ9sP3QMF2g=
=5rWr
-----END PGP SIGNATURE-----



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