IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Portage de Delphi vers Unix [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Points : 59
    Points
    59
    Par défaut Portage de Delphi vers Unix
    Bonjour,

    Alors voilà, je vais avoir une application Delphi à porter sur Unix ... et donc plusieurs soucis.
    1. l'application utilise -un peu trop- les composants JV* ( jvSplitter, jvButton ... ). Il y a quelques mois, pour évaluer lazarus. J'ai effectué une conversion équivalente ( Delphi -> Lazarus ) mais en restant sur Windows. Ces composants jv* empêchent la conversion automatique de projets par Lazarus.
    2. je n'ai pas la possibilité d'installer Lazarus sur l'OS cible ( un Unix AIX). Par contre j'ai à ma disposition un Kubuntu sur lequel Lazarus est opérationel.
    3. je n'ai pas Delphi à ma disposition.


    1 -> Une idée claire du pré-process à effectuer sur les sources Delphi pour faciliter la conversion ? ( j'ai pensé - mais pas essayé - balayer les DFM et PAS et pour remplacer les composants JV par un composant par défaut de Lazarus ). Le wiki freepascal est très succinct à ce propos.

    2 -> Là c'est plus une question Unix. Est-ce possible de compiler sur un linux et de ne livrer que l'exécutable sur sur Unix ? est-ce possible sans Lazarus et/ou FPC sur l'AIX. est-ce possible d'installer une application sans faire un de ces fameux "make install" ? Je n'y connais pas gd chose en linux

  2. #2
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonjour,

    Pour la première question, je ne crois pas que tu puisses faire mieux...

    Pour la seconde question, entre 2 versions de Linux identiques, tu peux copier l'exécutable, et il n'est pas indispensable de le reconstruire sur le système cible.

    Ca marche même entre des Linux avec des noyaux différents, surtout s'il n'y a pas trop d'interactions avec l'extérieur. Par exemple un CGI compilé sous Ubuntu marche très bien sur un RedHat sans recompiler.

    Mais vers un Unix AIX et pour une application complexe, ça m'étonnerait pas mal... mais tu peux essayer et nous tenir au courant.

    Ceci dit, je pense qu'il faut de toutes façons quand même mieux faire un petit script make, aussi pour garder une trace de la manière de reconstruire l'exécutable. Si tu dois livrer les sources et que j'étais ton employeur ou client, je l'exigerais !

    Ce script va se composer principalement d'une ligne de commande appelant fpc avec les bonnes options que tu récupères avec Projet,Options du compilateur,Afficher les options. Il faut aussi recréer les fichiers ressource.

    Un exemple simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    #!/bin/sh
    
    # following variables must be "exported"
    # ZEOS
    # POWERPDF
    # LAZREPORTPDFEXPORT
    # LAZARUSVERSION
    
    # remove temp directory
    rm -Rf "/tmp/gestinux"
    
    cd "/tmp"
    
    echo "make resource files..."
    for f in *.lfm; do lazres "`basename "$f" .lfm`.lrs" "$f" >/dev/null; done
    
    # compilation
    /usr/bin/fpc gestinux.lpr  -MObjFPC -Sci -CX -Os3 -XX -WG -v0 -l -Fu`echo $ZEOS` -Fu`echo $POWERPDF` -Fu`echo $LAZREPORTPDFEXPORT` -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/sdf/lib/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/memds/lib/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/lazreport/source/lib/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/printers/lib/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/synedit/units/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/ideintf/units/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/lcl/units/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/lcl/units/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/packager/units/i386-linux/ -Fu. -ogestinux -dLCL -dLCLgtk2
    
    exit 0



    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Points : 59
    Points
    59
    Par défaut
    merci pour ces réponses pertinentes tintinux

    Ce script va se composer principalement d'une ligne de commande appelant fpc avec les bonnes options que tu récupères avec Projet,Options du compilateur,Afficher les options. Il faut aussi recréer les fichiers ressource.
    OK je garde l'info au chaud... à l'heure actuelle je ne sais pas encore si mon Client me permettra d'installer, sur son AIX, FPC (et lazarus ... ) ... ni si mon Employeur soit OK pour que je laisse les sources à mon Client.
    Tu l'auras deviné c'est un projet mûrement réfléchi ... ça va être simple

    Mais pourquoi j'ai été parler de Lazarus à mes collègues moi ?

  4. #4
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Citation Envoyé par Labbet
    installer, sur son AIX, FPC (et lazarus ... )
    Juste une précision : il ne sera pas utile de chercher à installer Lazarus (l'EDI) sur AIX. Fpc sera suffisant pour construire l'exécutable avec ton script make. Si tu peux le faire sur un système AIX de test ou recette, tu pourras copier ensuite l'exécutable en production.
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par tintinux Voir le message
    Bonjour,

    Pour la première question, je ne crois pas que tu puisses faire mieux...

    Pour la seconde question, entre 2 versions de Linux identiques, tu peux copier l'exécutable, et il n'est pas indispensable de le reconstruire sur le système cible.

    Ca marche même entre des Linux avec des noyaux différents, surtout s'il n'y a pas trop d'interactions avec l'extérieur. Par exemple un CGI compilé sous Ubuntu marche très bien sur un RedHat sans recompiler.

    Mais vers un Unix AIX et pour une application complexe, ça m'étonnerait pas mal... mais tu peux essayer et nous tenir au courant.

    Ceci dit, je pense qu'il faut de toutes façons quand même mieux faire un petit script make, aussi pour garder une trace de la manière de reconstruire l'exécutable. Si tu dois livrer les sources et que j'étais ton employeur ou client, je l'exigerais !

    Ce script va se composer principalement d'une ligne de commande appelant fpc avec les bonnes options que tu récupères avec Projet,Options du compilateur,Afficher les options. Il faut aussi recréer les fichiers ressource.

    Un exemple simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    #!/bin/sh
    
    # following variables must be "exported"
    # ZEOS
    # POWERPDF
    # LAZREPORTPDFEXPORT
    # LAZARUSVERSION
    
    # remove temp directory
    rm -Rf "/tmp/gestinux"
    
    cd "/tmp"
    
    echo "make resource files..."
    for f in *.lfm; do lazres "`basename "$f" .lfm`.lrs" "$f" >/dev/null; done
    
    # compilation
    /usr/bin/fpc gestinux.lpr  -MObjFPC -Sci -CX -Os3 -XX -WG -v0 -l -Fu`echo $ZEOS` -Fu`echo $POWERPDF` -Fu`echo $LAZREPORTPDFEXPORT` -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/sdf/lib/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/memds/lib/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/lazreport/source/lib/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/printers/lib/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/components/synedit/units/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/ideintf/units/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/lcl/units/i386-linux/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/lcl/units/i386-linux/gtk2/ -Fu/usr/lib/lazarus/`echo $LAZARUSVERSION`/packager/units/i386-linux/ -Fu. -ogestinux -dLCL -dLCLgtk2
    
    exit 0



    vade retro MAKEFILE !

    ce que j'ai toujours apprécié dans Delphi c'est qu'il est possible d'écrire une application pour laquelle :
    1) tu lances Delphi
    2) tu ouvres le .DPR
    3) tu compiles et ça marche !

    évidemment, il ne faut déclarer dans les DFM des composants non standards et il faut préciser les chemins d'accès relatifs à tous les sources (j'ai une préférence pour le mot clé "in" dans le .DPR)

    configure & make & install, c'est bien pour les projets qui utilisent perl, python, et je ne sais quelle autres outils dont il faut s'assurer qu'ils sont présents dans la bonne version pour compiler un "Hello World"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Paul, je ne suis évidemment pas d'accord. Si ta méthode en 3 points était suffisante dans toutes les situations, ça se saurait...

    Elle n'est à mon avis réaliste que si on travaille tout seul, toujours sur la même machine, et pour le même OS cible. Dans ce cas, pourquoi pas ?

    Ce n'est visiblement pas la situation de l'auteur de la question initiale.

    Il ne faut pas diaboliser les makefile. C'est un credo du monde Unix qui a prouvé sa fiabilité de longue date. De plus avec Lazarus, il sont assez simples à réaliser. Personne ne t'oblige à les utiliser, mais il ne faut pas les dénigrer.
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par tintinux Voir le message
    Paul, je ne suis évidemment pas d'accord. Si ta méthode en 3 points était suffisante dans toutes les situations, ça se saurait...

    Elle n'est à mon avis réaliste que si on travaille tout seul, toujours sur la même machine, et pour le même OS cible. Dans ce cas, pourquoi pas ?

    Ce n'est visiblement pas la situation de l'auteur de la question initiale.

    Il ne faut pas diaboliser les makefile. C'est un credo du monde Unix qui a prouvé sa fiabilité de longue date. De plus avec Lazarus, il sont assez simples à réaliser. Personne ne t'oblige à les utiliser, mais il ne faut pas les dénigrer.
    je ne suis évidemment pas d'accord

    le nombre de développeurs importe peu, c'est une question de norme de programmation.

    les chemins relatifs sont là pour s'assurer de la compilation d'une machine à l'autre

    quand à l'OS cible, je parlerais plus des contextes de compilations, j'ai par exemple un projet qui se décline en trois version : stockage fichiers, stockage MySQL Embedded, et le dernier sur MySQL standard...le simple fait de déclarer 3 DPR implique 3 configurations que l'on peu personnaliser à souhait. Il suffit alors de choisir le bon DPR pour avoir le bon résultat.

    ProjetWin.DPR
    ProjetNux.LPR

    et hop ! ça compile

    enfin je ne connais pas assez Lazarus pour garantir qu'il se comporte comme Delphi dans la compilation d'un projet...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je différencierais le portage de la diffusion... suivant le type d'application.

    La difficulté de "porter" une application Delphi vers Lazarus réside grandement dans le remplacement des composants Delphi faisant appel aux API de Windows. Grandement mais pas uniquement. Mais avec du temps...

    Pour la diffusion, le résultat n'est, à mon avis, pas garanti (du tout).

    Compiler chez le Client ne me semble pas réaliste et encore moins si c'est lui qui le fait... même par votre bash. Dans mon lycée, on possède un parc hétérogène de PC sous Linux (Mandriva, Ubuntu). J'ai été désagréablement surpris lorsque j'ai voulu installer une application simple avec GUI. Entre KDE (Mandriva) et Gnome (Ubuntu), il y a eu immédiatement des "incompatibilités". Entre Gnome (Ubuntu 9.x) et Gnome (Ubuntu 10.x) : pas mieux ! Le programme avait été développé sous Ubuntu 9 à l'époque. Impossible de le faire fonctionner en 10. Entre temps, le gtk2 (de Ubuntu) avait fortement évolué et n'était plus compatible. Partant d'une Ubuntu j'avais également rencontré un problème avec kUbuntu [Kde avec Gtk2 installé]. Il m'avait fallu installer : apt-get install gtk2-engines-ubuntulooks. Pas facile pour un client final à imaginer...

    Ce n'est donc pas une solution "certaine". Par ailleurs, supposez que votre client soit sur Ubuntu 9. Il va falloir installer le paquet de cette distribution par défaut de fpc... soit une très vieille version et certainement pas le fpc 2.4.x avec lequel vous développez actuellement... Evidemment, on peut télécharger le svn de fpc et essayer de le compiler (en utilisant le paquet par défaut) sans aucune garantie non plus. Cette solution me semble très hypothétique.

    Le plus simple à mon avis est de se renseigner sur la plateforme utilisée par votre client... de compiler vous même et de lui fournir un paquet ou d'utiliser un installeur sous Linux (InstallJammer,...), équivalent d'Inno Setup sous Windows.

    Compte tenu de cela, je ne sais pas comment on peut diffuser largement un programme Linux développé avec Lazarus/fpc. Par contre évidemment, en diffusion très limitée ou ciblée (ie compatible Ubuntu 10.04) et toujours en vérifiant pendant tout le cycle de vie du programme sa compatibilité... ou en développement strictement interne... cela fonctionne. A noter également que sous Windows (notre parc va de Windows98 à 7), mes programmes Lazarus ont toujours été compatibles (et installés par Inno Setup).

    Cordialement. Gilles
    Dernière modification par Invité ; 02/03/2011 à 11h09.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Points : 59
    Points
    59
    Par défaut
    Bien.
    Finalement, mon Client recevra la version Delphi de l'appli donc sur windows.
    A sa charge d'envisager les procédures d'exploitation à mettre en place pour reporter les maj sur l'AIX ... rien de bien complexe à mon avis.

    C'est un peu frustrant mais cela résout le pb tout seul : Je passe le sujet en "Résolu"

    Merci à Paul Toth, selzig et tintinux pour leurs avis et conseils éclairés.

    ... perso : et sans vouloir faire le 'troll'. Je ne suis pas expert ni en delphi ni lazarus mais à choisir mon camp je serai plutôt pro-makefile.
    C'est une question de retour sur investissement :
    1 logique/mécanisme a apprendre et utiliser avec N outils/compilateurs
    plutôt que
    1 logique/mécanisme spécifique à 1 IDE/compilateur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PC-Unix] Portage Cobol DPS7 vers UNIX
    Par PatrickB3109 dans le forum Cobol
    Réponses: 11
    Dernier message: 15/05/2009, 13h49
  2. Portage Windows vers Unix
    Par ouamtax dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 03/01/2008, 10h10
  3. Portage Delphi vers Turbo Delphi
    Par pi_hellz dans le forum Langage
    Réponses: 16
    Dernier message: 14/08/2007, 14h27
  4. Portage Delphi vers Java ou C#?
    Par delphi5user dans le forum Langage
    Réponses: 4
    Dernier message: 20/04/2006, 09h44
  5. [Kylix] Portage d'application Delphi vers Kylix
    Par BONNEFOI Patrick dans le forum EDI
    Réponses: 4
    Dernier message: 03/05/2005, 22h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo