parę sugestii dot. rpmmen
Paweł Gajda
mis w k2.net.pl
Sob, 27 Mar 1999, 15:21:49 CET
Montując insta przyjrzałem się nieco rpmmenowi, kilka
sugestii/postulatów/pomysłów skierowanych głównie
do Pawła Kołodzieja:
1. Uczytelnienie kodu
- ident -kr (wcięcia, spacje wokół operatorów, itd)
- zastąpienie kodu w rodzaju(z funkcji preparetoinstall()):
rpmdepAddPackage(rpmdep,rpmmen_pkgs.packages[i].h,\
&(rpmmen_pkgs.packages[i]));
czymś takim:
TPkgInfo *pkg = &rpmmen_pkgs.packages[i];
rpmdepAddPackage(rpmdep, pkg->h, pkg);
Przy kilku tego typu linijkach jest to IMO czytelne tylko dla
autora. Znika też problem z tymi straszliwymi łamaniami ;-)
2. ,,Ubibliotecznienie'' kodu
- myślę, że lepiej było by nie operować na statycznych zmiennych,
tzn:
zbiór funkcji operujących na TPkgSet i dopiero w osobnym
module zrobić statyczne zmienne. Przede wszystkim ułatwia to
zrozumienie kodu => IMO ułatwia jego rozwijanie.
- funkcje inicjujące set_src, set_dst itd udostępniłbym pod 1:
rpmmen_init(src, dest)
- rmpmen_() nazwa niewiele mówiąca => może rpmmen_close() ?
3. Inne
- nie korzystaj z nagłówków pldilib wprost, znajduje się ona
we wczesnej fazie rozwoju i nie jestem w stanie zapewnić stabilności
ich nazw i zawartości. Po prostu:
#include <pldi.h>
- _wszystkie_ stałe w rodzaju "coinst.rpmy", "install.stderr",
"basesystem" do config.h (co ja się naszukałem...)
- nie inicjuj iointf'a => będzie to robione na zewnątrz.
Do testów powinno wylądować to w rpmmenExample.c.
- zauważyłem, że rpmen potrzebuje pkgsel i na odwrót,
IMHO nie powinno to mieć miejsca.
Co zmieniłem:
- wyrzuciłem na razie czytanie listy pakietów z coinst, w obecnej
fazie rozwoju PLD było by to tylko utrudnieniem(nieustalony skład
Base).
Zastaniawiam się, czy rzeczywiście warto w ogóle robić
taką listę. Co zyskujemy ? IMHO nie tak wiele, bo jedynie
wcześniejszą weryfikację, czy tocfile odpowiada liście.
Lista z kolei nie będzie raczej tworzona ręcznie, tylko
przy pomocy dumptocf(zmodyfikowanego).
Tak więc każda aktualizacja PLD będzie wymagała nowej dyskietki.
IMHO sens tego niewielki.
- ponieważ inst korzysta też w innym miejscu z rpmliba(cpio.gz) to
przekierowanie stderr robię wcześniej, czy na stdout rpmlib
też pisze ?
- poprawiłem gentocfile(i zmieniłem nazwę na gentocf):
- uczytelniłem go
- zapis FILE_SIZE jako RPMTAG(przenośność) => wymaga to poprawki
w rpmmenie.
- dołożyłem dumptocf
Powstał pakiecik tocfile.
- my_openf() jest już zbędne, dorobiłem iointf_chroot()
Zauważyłem, że instalacja base wymaga dosyć sporo pamięci
(zajętość skacze z 700 kB do prawie 3 MB), m.in.
dlatego, że cały tocfile jest wczytywany do ramu.
Dla base (100 pakietów) to jeszcze ujdzie, ale jak będzie ich
500-600 ? Zastanawiam się, czy nie warto robić
indeksu odczas czytania tocfile. Co o tym myślisz ?
Zmieniłem dosyć mocno pldilib, na czym Ty głównie ,,ucierpisz''.
Zaktualizowałem opis iointf'a, także nie powinno być ze zmianą
wielkich problemów, jeżeli by jednak, to albo pytaj,
albo ja machnę łatkę i Ci podeślę.
Jestem też w stanie wziąć udział w robieniu wyżej postulowanych
poprawek, wymaga to jedynie Twojego ,,błogosławieństwa'' :-) Więc jak ?
Paweł
--
mailto: mis w k2.net.pl
Więcej informacji o liście dyskusyjnej pld-installer