php-pear-DB

Adam Gołębiowski adamg w biomerieux.pl
Śro, 10 Lis 2004, 19:20:24 CET


On Mon, Nov 01, 2004 at 11:09:57PM +0100, Paweł Gołaszewski wrote:
> On Mon, 1 Nov 2004, Adam [iso-8859-2] Gołębiowski wrote:
> > > Nie wiem czy tak powinno być, ale wydaje mi się że przydałoby się R:  
> > > php-pear-PEAR w php-pear-DB skoro pierwsza linia to "require_once
> > > 'PEAR.php';". Dodatkowe zamieszanie wprowadza php-pear, który ma tylko
> > > katalogi, a ja przez trzy godziny myślałem że mam PEAR.php :-(
> > Bleeee... cały problem rozbija się o skrypty do generowania zależności,
> > które na chwilę obecną nie działają [1]. Zdaję sobię z tego sprawę, i
> > jeśli ktoś (tm) mi z nimi nie pomoże, trzeba będzie cofnąć się do
> > skryptów, które mieliśmy w Ra, a które nie zawsze działały (te, w
> > założeniu, miały działać).
> 
> Tyle, że to będzie wymagało często poprawek typu "case sensitivity", choć 
> tego da się łatwo uniknąć (wszystko na małe litery).
> 
> > [1] cvs::PLD-doc/PLD_2.0_TODO - na samiuteńkim dole.
> 
> Jaki jest powód, że nie parsuje tego pliku?
> 
> Kopiowanie do wynikowego pakietu to nie jest problem przecież, można się z 
> tym pogodzić nawet

Uhm, ale to takie nieeleganckie... 

W każdym bądź razie, na chwilę obecną moja idea była (jest) następująca

Do makr /usr/lib/rpm/macros.php dodajemy na końcu:
%{_builddir}/%{name}-%{version}, co jak słusznie zauważyl qboosh już
samo w sobie jest brzydkie.

Przykład:
%define __php_provides  /usr/lib/rpm/php.prov	%{_builddir}/%{name}-%{version}

Zawartość przykładowego php.prov:
$ cat php.prov
-f "$ARGV[0]/package.xml" and open(F, "$ARGV[0]/package.xml") or die("$!\n");
/^\s+\<name\>([a-zA-Z0-9\_]+)\<\/name\>$/ and print "php-pear-$1\n" while (<F>);
$

Odpalone z palca, działa:
$ /usr/lib/rpm/php.prov ~builder/rpm/BUILD/php-pear-HTML_Common2-0.1.0/ 
php-pear-HTML_Common2
$

A przy próba odpalenia przez tę wielką machinę rpmem zwaną:
$ rpmbuild -bb php-pear-HTML_Common2.spec
[...]
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.50713
+ umask 022
+ cd /home/users/builder/rpm/BUILD
+ cd php-pear-HTML_Common2-0.1.0
+ DOCDIR=/home/users/builder/tmp/php-pear-HTML_Common2-0.1.0-root-builder/usr/share/doc/php-pear-HTML_Common2-0.1.0
+ export DOCDIR
+ rm -rf /home/users/builder/tmp/php-pear-HTML_Common2-0.1.0-root-builder/usr/share/doc/php-pear-HTML_Common2-0.1.0
+ /bin/mkdir -p /home/users/builder/tmp/php-pear-HTML_Common2-0.1.0-root-builder/usr/share/doc/php-pear-HTML_Common2-0.1.0
+ cp -pr HTML_Common2-0.1.0/tests /home/users/builder/tmp/php-pear-HTML_Common2-0.1.0-root-builder/usr/share/doc/php-pear-HTML_Common2-0.1.0
+ /usr/lib/rpm/compress-doc
Compressing documentation in /home/users/builder/tmp/php-pear-HTML_Common2-0.1.0-root-builder/usr/share/doc/php-pear-HTML_Common2-0.1.0...
./tests/HTML_Common2_Test.php 
Documentation compressed.
+ exit 0
Parsing SELinux file contexts skipped: /etc/security/selinux/src/policy/file_contexts/file_contexts: No such file or directory
getOutputFrom(): Broken pipe
$

I na tym koniec. Być może jest to jakaś bzdura, ale ja nie wiem 
jak się z tym uporać. 

Plusy tego rozwiązania:
- porządek z R:
- automatyczna obsługa zależności zarówno pearów, jak i pecli

Minusy:
- działa tylko dla pearów/pecli - dla pozostałych phpowych paczek, 
  trzeba R: ustawiać ręcznie

Co jeszcze:
- można by zastanowić się nad wdrozeniem "pear makerpm"...

-- 
http://www.mysza.eu.org/ | Everybody needs someone sure, someone true,
   PLD Linux developer   | Everybody needs some solid rock, I know I do.




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