SPECS: rpm.spec (NEW_PEAR_REQUIRES) [misto]

Michal Moskal malekith w pld-linux.org
Sob, 12 Paź 2002, 17:00:33 CEST


On Sat, Oct 12, 2002 at 04:48:54PM +0200, Tomasz Kłoczko wrote:
> On Fri, 11 Oct 2002, Michal Stochmialek wrote:
> 
> > On Fri, Oct 11, 2002 at 09:28:31PM +0200, PLD CVS wrote:
> > > Module name:	SPECS	(BRANCH: NEW_PEAR_REQUIRES)
> > > Changes by:	misto	02/10/11 21:28:29
> > > 
> > > Modified files:
> > > 	rpm.spec
> > > 
> > > Log message:
> > > - testing new pear provides/requires scripts
> > > 
> > 
> > Utworzylem nowy branch z nowym systemem Requires/Provides
> > dla PEARa. Poprzedni w sumie dzialal, ale pojawily sie
> > problemy przy dodawaniu do PLD horde'y i impa. Problem
> > polega(l) glownie na konflikcie nazw klas hordy i peara.
> > Na poziomie PHP bylo to zalatwiane poprzez odpowiednie
> > includowanie plikow (include_path lub HORDE_BASE).
> > Tu wlasciwie zbieznosc nazw nie przeszkadzala.
> 
> Z tego co rozmawiałęm z bluesem jakiś czs temu o chorde i imp to wnioski
> były takie, że jeżeli juz to poprawiane powinny być horde, imp a nie cała
> reszta. IIRC chodzi o to że ludzie zajmujcy się tymi projektami ignorują
> to że wchodza w konflikt z nazwami klas pearowych. Ergo: poprawki powinny
> raczje dotyczyć takiego dostosowywanuia *reszty* żeby używaż klas
> pearowych i tym samyum żeby nie zmieniać nic za dużo tutaj skoro ta część
> oprogramowanai rozwija się w miae aktywnie.

Zauważ jak są generowane zależności dla perla. Zależności są od pakietów
(wywołań use Foo::Bar; czy jak to się tam nazywa). W php jak zwykle
wszystko jest dorabiane a nie robione od początku, więc nawet nie ma tam
systemu pakietów, nawet tak ,,wspaniałego'' jak w perlu. Jest tylko include. 
Z czego prosty wniosek, że include_once w php jest odpowiednikiem use z perla.

Teraz dlaczego generujemy zależności od pakietów a nie nazw klas w
perlu? To proste, nazwy pakietów *muszą* być jednoznaczne. Język to
wymusza. W php jest jeszcze prościej, nazwy plików *myszą* być unikalne, 
bo wymusza to *filesystem*.

Innymi słowy generując zależności od plików a nie klas nie musimy
martwić się sytuacją, że dwa php-pear zawierają klasa, która nazywa się
tak samo (co, biorąc pod uwagę brak namespaces oraz typowe praktyki
koderów php jest bardzo prawdopodobne). Nic nie tracimy, wygrywamy.

Dodatkowo zależności od plików jest dużo łatwiej znaleźć w kodzie
źródłowym (skrypt na wszystkich naszych pear pomylił się tylko raz).
Ponieważ struktura leksykalna php jest niebanalna (2 rodzaj quotingu,
${...}, ?> ... <? etc) jest to istotna zaleta.

> imp traci dystans do wiewióry i za kawałek w sytucji kiedy wiewióra będzie
> dalej rozwiajana a imp stanie w miejscu (na co się zanosi) zostaniemy z 
> garsicią poprawek na coś czego wogóle nie będziemy musiali uwzglęniać to
> to coś jako projkt upadło.

Sam imp czy horde są tu raczej mało istotne. Ważne jest, aby system
pearowych zależności był dobry i skuteczny, tak jak ten z perla.
Bez konieczności dodatkowego rzeźbienia.

-- 
: Michal Moskal ::::: malekith/at/pld-linux.org :  GCS {C,UL}++++$ a? !tv
: PLD Linux ::::::: Wroclaw University, CS Dept :  {E-,w}-- {b++,e}>+++ h



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