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