Bonjour,

On Sat, May 08, 2004 at 04:33:39PM +0200, JusTiCe8 wrote:
> Bonjour,
> 
> attention risque d'apparition d'un gros troll m�chant pas beaux, j'aurai 
> pr�venu ;).
> 

Pkoi un troll ? Ca me parait un tr�s bonne question, qui n'a pas de
raison de faire un troll.

> Je me demandais si quelqu'un parmi vous pouvez m'expliquer le pourquoi 
> du comment de la pr�sence des diff�rentes libpngx-dev (x= ,2,3), leur 
> utilit� et la raison pour laquelle un paquet A utilise une version y 
> plut�t que z (avantages/inconv�nients).
> 
> Aussi, et c'est la que c'est le plus emb�tant, c'est que par un esprit 
> plus que tordu et, �videmment ;), par le plus grand des hasard, les libs 
> qt3 (kde) d�pendent d'une version (libpng-dev) et les lib gtk (gnome) 
> d'une autre (libpng2-dev), ces 2 versions �tant conflictuelles.
> 
> Pour ma part, je pense que c'est une ab�rration de voir une chose pareil 
> et c'est plus que sao�lant de devoir vir� des libs de dev qt pour 
> compiler une appli gtk et vice-versa. Surtout que la solution du 
> chroot-ing me parait un peu lourde dans ce genre de cas.
> 

Ben en fait c'est tr�s simple, 

C'est une question d'API. Les API de libpngX et libpngY ( X != Y ) sont
incompatibles ( je ne parles pas des paquets de dev ). La c'est tr�s
simple, puisque le fichier qui contient ces API ( � savoir les .so )
portent la marque de la version ( .X ou .Y + dans le fichier ) et son
g�r� par ld.

Donc pour les librairies y a pas de pb.

En revanche, et c'est la que ca se corse, les API des fichiers header
sont aussi diff�rents, mais peuvent ne pas l'�tre suffisament pour
emp�cher une compil ( ie g�n�ralement le cas quand une fonction initX()
faisait A + B et que pour des raisons quelconques elle fait plus que A
mais il faut faire B quand m�me � la main, ca se voit pas, mais ca fait
un SIGSEGV ). 

Et la, c'est rare que le fichiers headers porte la marque de leur version, 
ou plutot c'est compliqu� qu'il porte la marque de leur version : 
- les fichiers headers sont souvent dans /usr/include/ ( png.h par ex )
- tous les progs qui utilisent un header l'utilisent explicitement ( ou
  presque ) #include <png.h>

Donc si les headers port� la marque de leur version, comme avec ld, ca
serait bien, mais il faudrait une certaines forme de gestion de la
version ( note ca existe, ca s'appelle pkgconfig, avec lequel tu fais
pkgconfig "gtk2.0 > 2.0.0" par exemple" ). La plupart des programmes
n'utilisant pas ce type de chose, ben on se trouve dans la n�cessit�
d'avoir recour � des libs exclusives ( parcequ'elles ont le meme fichier
header qu'elles installent au meme endroit ). 

Note : ce type de probleme peut se r�soudre avec des bons
configure/config.h/Makefile... Mais pour penser � tous et faire des
programmes parfait c'est difficile.

Voila ma r�ponse -- peut etre fausse
Cordialement 
Sylvain Le Gall

Répondre à