OVH Cloud OVH Cloud

Compilation et déploiement d'un module Perl sous Windows

52 réponses
Avatar
Stephane Dupille
Bonjour,

J'ai une machine sur laquelle je dois déployer une appli Perl. J'ai
donc installé ActivePerl dessus. L'appli doit se connecter à une base
Ingres, et donc je dois utiliser le driver DBD::Ingres.
Malheureusement, ce module n'est pas disponible par PPM, je dois donc
le compiler à la main.

J'ai donc installé sur cette machine « Visual C++ 2005 Express
Edition », ainsi que le SDK pour le dev. La compilation se passe plus
ou moins bien (j'ai par exemple été obligé de patcher le Makefile
généré pour remplacer libc.lib par libcmt.lib, la première n'existant
plus). Bref, sur ma machine de dev, ce module marche correctement, les
tests passent avec succès, et mes scripts de tests maison ne détectent
pas d'anomalie.


Maintenant, je dois déployer Perl, et cette appli sur une autre
machine. Particularité : cette machine n'a pas d'accès Internet, entre
autres contraintes un peu chiantes. Afin de pouvoir automatiser ça le
plus possible, j'ai transféré simplement le répertoire C:\Perl de ma
machine de dev vers la machine de test.

En faisant ça Perl fonctionne correctement, mais pas le module
DBD::Ingres. Quand j'essaye de l'utiliser, il me dit que MSVCR80.dll
est introuvable. Visiblement, il me faut un runtime. C'est bien la
peine de se faire chier à compiler un truc pas déployable. Est-ce
qu'il est possible de se passer du runtime ?

J'installe le runtime vcredist_x86.exe sur ma machine de test, je
relance mon appli, et ça me dit toujours que MSVCR80.dll est
introuvable. C'est pas ça qu'il fallait que j'installe ?

J'ai finit par copier le fichier MSVCR80.dll depuis le répertoire
C:\WINNT\winsxs\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
vers le répertoire C:\Perl\site\lib\auto\DBD\Ingres

Maintenant, quand je lance mon appli, il trouve bien la
bibliothèque, mais ça ne marche toujours pas :
Runtime Error !
R6034
An application has attempt to load the C runtime library incorrectly.

Il faut faire quoi maintenant pour faire marcher ce module ?


Question pour les perliens : est-ce qu'il y aurait un endroit où
trouver un PPM de DBD::Ingres déployable normalement ?


Question pour les windowsiens : est-ce qu'il y aurait un moyen de
pouvoir compiler un machin déployable normalement sans s'emmerder avec
des runtimes pourris qui ne marchent pas ?

Pour info, ma machine de dev est un win2000, ma machine de test un
Win XP pro 2002, et cette appli sera développé sur des machines dont
je ne contrôle absolument pas les versions de Windows installé dessus.


cdlt,

10 réponses

2 3 4 5 6
Avatar
Paul Gaborit
À (at) Tue, 31 Jul 2007 16:42:47 +0200,
Stephane Dupille écrivait (wrote):
Paul Gaborit écrit :
S'il y a des outils de compilation qui me permettent de compiler des
modules Perl sans me prendre la tête, je prends.


Puisque vous utilisez ActivePerl, il n'y pas le choix : il faut
utiliser les mêmes outils que ceux qu'ils ont utilisés.



Pourtant je crois avoir vu dans Google que des gens utilisent
ActivePerl et mingw.



Exact :
<http://devpit.org/wiki/Perl/MinGW>.
<http://www.perlmonks.org/?node_ida4808>

J'avais un doute pour le C++ mais c'est vrai que maintenant l'ABI doit
être normalisée.

C'est peut-être une solution pour votre problème.

Sinon, il y a bien la solution 'cygwin' mais je ne suis pas sûr
qu'elle vous convienne.



J'y ait pensé, mais cela pose des problèmes de déploiment, et la
compilation de DBD::Ingres ne passe pas. Je n'ai testé que rapidement,
mais ça m'a l'air pire que d'utiliser Visual C++.



Ça dépend de quel point de vue on se place. ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Paul Gaborit
À (at) Tue, 31 Jul 2007 16:42:47 +0200,
Stephane Dupille écrivait (wrote):
Paul Gaborit écrit :
S'il y a des outils de compilation qui me permettent de compiler des
modules Perl sans me prendre la tête, je prends.


Puisque vous utilisez ActivePerl, il n'y pas le choix : il faut
utiliser les mêmes outils que ceux qu'ils ont utilisés.



Pourtant je crois avoir vu dans Google que des gens utilisent
ActivePerl et mingw.



Exact :
<http://devpit.org/wiki/Perl/MinGW>.
<http://www.perlmonks.org/?node_ida4808>

J'avais un doute pour le C++ mais c'est vrai que maintenant l'ABI doit
être normalisée.

C'est peut-être une solution pour votre problème.

Sinon, il y a bien la solution 'cygwin' mais je ne suis pas sûr
qu'elle vous convienne.



J'y ait pensé, mais cela pose des problèmes de déploiment, et la
compilation de DBD::Ingres ne passe pas. Je n'ai testé que rapidement,
mais ça m'a l'air pire que d'utiliser Visual C++.



Ça dépend de quel point de vue on se place. ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Paul Gaborit
À (at) Tue, 31 Jul 2007 16:42:47 +0200,
Stephane Dupille écrivait (wrote):
S'il y a des outils de compilation qui me permettent de compiler des
modules Perl sans me prendre la tête, je prends.
Puisque vous utilisez ActivePerl, il n'y pas le choix : il faut

utiliser les mêmes outils que ceux qu'ils ont utilisés.


Pourtant je crois avoir vu dans Google que des gens utilisent
ActivePerl et mingw.


Exact :
<http://devpit.org/wiki/Perl/MinGW>.
<http://www.perlmonks.org/?node_ida4808>

J'avais un doute pour le C++ mais c'est vrai que maintenant l'ABI doit
être normalisée.

C'est peut-être une solution pour votre problème.

Sinon, il y a bien la solution 'cygwin' mais je ne suis pas sûr
qu'elle vous convienne.


J'y ait pensé, mais cela pose des problèmes de déploiment, et la
compilation de DBD::Ingres ne passe pas. Je n'ai testé que rapidement,
mais ça m'a l'air pire que d'utiliser Visual C++.


Ça dépend de quel point de vue on se place. ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>



Avatar
Stephane Dupille
Paul Gaborit écrit :
Pourtant je crois avoir vu dans Google que des gens utilisent
ActivePerl et mingw.


J'avais un doute pour le C++ mais c'est vrai que maintenant l'ABI doit
être normalisée.
C'est peut-être une solution pour votre problème.



J'ai essayé, ça compile, mais ça plante pendant l'édition de lien.
En gros j'obtient le même résultat qu'avec Cygwin.

J'y ait pensé, mais cela pose des problèmes de déploiment, et la
compilation de DBD::Ingres ne passe pas. Je n'ai testé que rapidement,
mais ça m'a l'air pire que d'utiliser Visual C++.


Ça dépend de quel point de vue on se place. ;-)



Entre un module qui ne marche que sur ma machine de dev, et un
module qui ne compile même pas, c'est vite vu.



On en revient à mon problème de départ : j'ai un activePerl qui
marche, un module qui marche, mais uniquement sur ma machine de Dev,
et que je n'arrive pas à déployer, apparement pour un problème de
numéro de version.
Avatar
Stephane Dupille
Paul Gaborit écrit :
Pourtant je crois avoir vu dans Google que des gens utilisent
ActivePerl et mingw.


J'avais un doute pour le C++ mais c'est vrai que maintenant l'ABI doit
être normalisée.
C'est peut-être une solution pour votre problème.



J'ai essayé, ça compile, mais ça plante pendant l'édition de lien.
En gros j'obtient le même résultat qu'avec Cygwin.

J'y ait pensé, mais cela pose des problèmes de déploiment, et la
compilation de DBD::Ingres ne passe pas. Je n'ai testé que rapidement,
mais ça m'a l'air pire que d'utiliser Visual C++.


Ça dépend de quel point de vue on se place. ;-)



Entre un module qui ne marche que sur ma machine de dev, et un
module qui ne compile même pas, c'est vite vu.



On en revient à mon problème de départ : j'ai un activePerl qui
marche, un module qui marche, mais uniquement sur ma machine de Dev,
et que je n'arrive pas à déployer, apparement pour un problème de
numéro de version.
Avatar
Stephane Dupille
Pourtant je crois avoir vu dans Google que des gens utilisent
ActivePerl et mingw.
J'avais un doute pour le C++ mais c'est vrai que maintenant l'ABI doit

être normalisée.
C'est peut-être une solution pour votre problème.


J'ai essayé, ça compile, mais ça plante pendant l'édition de lien.
En gros j'obtient le même résultat qu'avec Cygwin.

J'y ait pensé, mais cela pose des problèmes de déploiment, et la
compilation de DBD::Ingres ne passe pas. Je n'ai testé que rapidement,
mais ça m'a l'air pire que d'utiliser Visual C++.
Ça dépend de quel point de vue on se place. ;-)



Entre un module qui ne marche que sur ma machine de dev, et un
module qui ne compile même pas, c'est vite vu.



On en revient à mon problème de départ : j'ai un activePerl qui
marche, un module qui marche, mais uniquement sur ma machine de Dev,
et que je n'arrive pas à déployer, apparement pour un problème de
numéro de version.


Avatar
Stephane Dupille
Stephane Dupille écrit :
S'il y a des outils de compilation qui me permettent de compiler des
modules Perl sans me prendre la tête, je prends.



J'ai réussi à trouver un CD de Microsoft Visaul C++ 6.0, ça compile
mon module sans soucis, et surtout, ça se déploit sans douleur. Comme
quoi, les outils de dev, c'était mieux avant.

Merci à tous.
Avatar
Stephane Dupille
Stephane Dupille écrit :
S'il y a des outils de compilation qui me permettent de compiler des
modules Perl sans me prendre la tête, je prends.



J'ai réussi à trouver un CD de Microsoft Visaul C++ 6.0, ça compile
mon module sans soucis, et surtout, ça se déploit sans douleur. Comme
quoi, les outils de dev, c'était mieux avant.

Merci à tous.
Avatar
Stephane Dupille
S'il y a des outils de compilation qui me permettent de compiler des
modules Perl sans me prendre la tête, je prends.


J'ai réussi à trouver un CD de Microsoft Visaul C++ 6.0, ça compile
mon module sans soucis, et surtout, ça se déploit sans douleur. Comme
quoi, les outils de dev, c'était mieux avant.

Merci à tous.

Avatar
Paul Gaborit
À (at) Wed, 01 Aug 2007 11:38:18 +0200,
Stephane Dupille écrivait (wrote):
J'ai réussi à trouver un CD de Microsoft Visaul C++ 6.0, ça compile
mon module sans soucis, et surtout, ça se déploit sans douleur.



Parfait.

Comme quoi, les outils de dev, c'était mieux avant.



Ça, c'est un axiome : « C'était vachement mieux avant ! »
;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
2 3 4 5 6