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

Systèmes de compilation Discussion :

[Automake] creer une tarball "personalisé"


Sujet :

Systèmes de compilation

  1. #1
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut [Automake] creer une tarball "personalisé"
    Bonjour,
    ça fait un moment que je galere avec les autotools pour creer une tarball perso cest adire sans certains fichiers alros pour ça ce que j'ai testé pour le moment est :

    1- essayer de supprimer les fichiers lors de l'appel de dist
    donc j'ai fait dist-hook pas de chance il le fait apres (j'ai mal lu le man automake) donc je me suis dit puisqu'il appel distcheck si on lui tappe make dist donc je ferai un distcheck-hook sauf que cela ne marche pas non plus.

    2- et bien j'ai essayer de definir une var TODEL=toto.m4 nodist_TODEL=toto.m4 comme il disent dans le manuel GNU automake et bien ca ne marche pas.

    toutes ces modifs je les ai faites dans mon Makefile.am

    Je resume voici le contenu de mon repertoire :
    war-1.0
    war-1.0/src
    war-1.0/src/include
    war-1.0/src/include/print.hh
    war-1.0/src/Makefile.am
    war-1.0/src/Makefile.in
    war-1.0/src/main.cc
    war-1.0/src/print.cc
    war-1.0/README
    war-1.0/configure.ac
    war-1.0/aclocal.m4
    war-1.0/Makefile.am
    war-1.0/Makefile.in
    war-1.0/configure
    war-1.0/AUTHORS
    war-1.0/ChangeLog
    war-1.0/TODO
    war-1.0/depcomp
    war-1.0/install-sh
    war-1.0/missing
    war-1.0/doc
    war-1.0/doc/war.man
    war-1.0/check

    Ce que je veux c'est tapper make dist et dans la tarball je veux pas de *.m4 ni les *.am voila.

    Je vous remercie meme si .. j'aurais pas de reponse vu que c'est rare les gens qui lisent ces forums.
    mais je suis OPTIMISTE a tres bientot.

    aa
    ..::: aa du bocal ..:::
    Il nous faut deux ans pour apprendre à parler et toute une vie pour apprendre se taire.
    N'oublier surtout pas de ne pas poster la réponse même si on vous a pas aidé

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    J'ai longtemps travaillé avec les autotools et c'est bien la première fois que je vois quelqu'un qui veut supprimer les fichiers de base. Tu es conscient que ton paquet est certes distribuable mais il n'est plus compilable. En effet, Makefile.in a besoin de savoir si le fichier Makefile.am a été modifié pour si nécessaire se regénérer.

    Sinon, ceci répond à ta réponse mais bien sûr le tarball n'est pas compilable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # wars-1.0/Makefile.am
    ...
    dist-hook:
    	-rm $(distdir)/aclocal.m4 \
    	    $(distdir)/Makefile.am \
    	    $(distdir)/src/Makefile.am
    j'aurais pas de reponse vu que c'est rare les gens qui lisent ces forums.
    Merci de respecter Developpez.com. C'est, contrairement à ce que tu dis un forum fréquenté. J'ai presque eu envie de ne pas te répondre.

  3. #3
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    Bonsoir,
    1st :
    Je m'en excuse mais j'ai cherche des topic sur les autotools mais yen a pas beaucoup d'ou ma phrase y aura moins de monde.
    Je m'en excuse, mais je compare aux topicsque je frequente bcp (java).

    2nd:
    Je te remercie pour la reponse mais bie sur qu'il est compilable (je viens de comencer il ya 48h de cela les autotools) :
    D'apres ce que j'ai lu, pour que ma distrib soit compilable il faut juste le fichier configure.ac qui lui generera configure (aclocal + autoconf) ensuite un petit appel a automake generera les Makefile.in et Makefile grace aux Makefile.am ,
    Donc, on conclusion Je veux que les fichiers *.ac et *.am c'est tout et voici ma tarball type
    war/AUTHORS*
    war/Makefile*
    war/README*
    war/TODO
    war/configure*
    war/check*
    war/src*
    voila, je te remercie mais je ne veux pas supprimer mes .ac et .am sinon ca compilera pas par contre ta solution fonctionne tres tres bien j'ai oublier le $(distdir) et le - avant rm, sinon j'aimerai bien savoir -par curieusite- pourquoi ceci ne marche pas :
    KAKA=aclocal.m4
    # nodist_ can be used to omit the files from the distribution
    nodist_KAKA = aclocal.m4
    ???

    Je te remercie enormememt, j'abuserai un peu en posant une autre question comment definir les repertoires par default de dist et de bin.
    je veux que ma dist soit a .. (dossier parent) a la place de . (courant) et le bin dans le . (courant) a la place de src/war, comment lui dire de mettre ces fichiers dans les repertoires voulu ?
    Si t'as besoin de Makefile.am miserable n'hesite pas a demander mais c tout simple d'ailleurs el voici :
    bin_PROGRAMS=war
    war_SOURCES=main.cc print.cc war.cc
    INCLUDES= -I$(top_srcdir)/src/include/
    Merci bcp parceque la j'ai fait un gros pas sur les autotools grace a toi !
    C coool ! MERCIII
    ..::: aa du bocal ..:::
    Il nous faut deux ans pour apprendre à parler et toute une vie pour apprendre se taire.
    N'oublier surtout pas de ne pas poster la réponse même si on vous a pas aidé

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Tu te contredis avec ton premier message mais bon c'est déjà un peu plus logique.
    Ce que je veux c'est tapper make dist et dans la tarball je veux pas de *.m4 ni les *.am voila.
    La raison pour laquelle on conserve l'aclocal.m4, les Makefile.in et le configure dans le tarball, c'est pour justement pouvoir se passer des autotools sur la machine de compilation. Le but des autotools est de générer des Makefiles portable sur n'importe quelle plateforme UNIX. Une fois ton tarball généré, tu le déploies sur la machine cible, tu lances le configure puis make et make install. Il est inutile d'y installer les autotools.

  5. #5
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    Hi,

    ouuii je me contredis mais je veux juste les *.ac et *.am
    et pour le fichier de alocal.m4 install-sh missing . enfin j'en veux pas
    on est bien d'accord que la personne tappe juste ./configure && make clean all

    moi j v pas m'en servir de make install, je veux juste les regles dist clean et all

    dist : cree la tarball au dossier parent ..
    distclean & clean : nettoie les rep
    all : cree l'executable et le met dans le fichier ou make s'est lancer

    Donc, la j'ai pas trouve pour le moment comment lui dire pour les repertoires ou il doit mettre l'executable et la tarball.

    j'ai vu que je peux le faire lors d'un appel de ake install avec --prefix lors du configure ou defnir une variable dont je me rappel plus pour lui dire le repertoire d'installation or moi je ferai jamais appel a make install !

    c vraimenent tres simple ce que je veux faire.

    Je te remercie beaucoup.
    et desole pour le premier post je savais pas ce que j'ecrivais.
    ..::: aa du bocal ..:::
    Il nous faut deux ans pour apprendre à parler et toute une vie pour apprendre se taire.
    N'oublier surtout pas de ne pas poster la réponse même si on vous a pas aidé

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    KAKA=aclocal.m4
    # nodist_ can be used to omit the files from the distribution
    nodist_KAKA = aclocal.m4
    C'est un fichier dont normalement on ne se passe pas dans un tarball. Tu outrepasses le fonctionnement des autotools. C'est pour cela qu'il faut passer par la règle dist-hook.

    on est bien d'accord que la personne tappe juste ./configure && make clean all
    oui en utilisation normale. Dans ton cas, une fois le tarball décompressé, il faudra d'abord faire autoreconf -i pour regénérer les fichiers.

    Donc, la j'ai pas trouve pour le moment comment lui dire pour les repertoires ou il doit mettre l'executable et la tarball.
    De même, tu vas contre le principe des autotools. Definir un répertoire d'installation n'a de sens que si tu utilises make install, qui est comme son nom le dit la règle pour installer les produits.

    Vu que tu viens à peine de commencer avec les autotools, je te conseillerais de passer à CMake (www.cmake.org). L'écriture des Makefiles est largement simplifiée, en comparaison des autotools.

    war-1.0/CMakeLists.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PROJECT (war CXX)
     
    ADD_SUBDIRECTORY (src)
    war-1.0/src/CMakeLists.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INCLUDE_DIRECTORIES (include)
     
    ADD_EXECUTABLE (war main.cc print.cc)
    Et là tu peux préfixer war avec le répertoire de ton choix pour changer le "répertoire d'installation" mais de même ce n'est pas conseillé.

  7. #7
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    Oula !
    Donc tu me dis qu'il n'y a pas moyen avec les autotools ?

    ./configure && gmake

    puis de faire ./mon_bin

    c'est pas possible ?

    effectiveent vu que c'est un simple projet en plus on est pas oblige de faire avec les autotools c pour ca j'ai pas besoin de tout ce ke les autotools m'offre
    --> et je veux 'en passer de mes propres scripts configure et Makefile.

    je te dirai si ya moyen je vais regarder le manuel et cette fois ci pas en diagonal lol

    mais je crois que je vais faire un hook sur all en indiquqnt qu'il faut faire un mv ./mn_bin ../
    c tout, enfin on verra bien !
    en tout cas je veux pas de :
    definir an install-exec-local or install-data-local parceque je vais pas faire un make install
    Merci bcp et bonne fin de soiree
    ..::: aa du bocal ..:::
    Il nous faut deux ans pour apprendre à parler et toute une vie pour apprendre se taire.
    N'oublier surtout pas de ne pas poster la réponse même si on vous a pas aidé

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Citation Envoyé par AliJava Voir le message
    Oula !
    Donc tu me dis qu'il n'y a pas moyen avec les autotools ?
    ./configure && gmake
    puis de faire ./mon_bin
    c'est pas possible ?
    Tel qu'est ton tarball, il faut d'abord faire autoreconf -i.
    Si tu crée ton programme dans le Makefile à la racine, c'est possible mais bon...
    Ou tu peux te faire une règle pour copier l'exécutable à la racine mais bon...
    C'est pour cela qu'on fait make install...

  9. #9
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    Justement j'ai deux Makefile.am:
    1- a la racine :
    SUBDIRS = src
    dist-hook:
    echo "--------------- Distclean avant dist"
    -rm $(distdir)/aclocal.m4 *~

    2- src/
    bin_PROGRAMS=war
    war_SOURCES=main.cc print.cc

    voila , donc je pense que meme sansla solution crade defaire un move je peux voir du cote des flags de automake :
    buildir=.. ou builddir=$(top_srcdir)
    ou bindir ... etc
    je vais trouver !

    merci
    ..::: aa du bocal ..:::
    Il nous faut deux ans pour apprendre à parler et toute une vie pour apprendre se taire.
    N'oublier surtout pas de ne pas poster la réponse même si on vous a pas aidé

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    builddir est une variable donnée (en lecture seule) et bindir c'est le répertoire d'installation des binaires.

  11. #11
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    oui mais je veux pas de make install donc j'ai fait la solution crade de faire un move lol
    et t'as completement raison je le redis au cas ou quelqu'un lis ce forum je vais contre le principe des autotools
    maintenant ma tarball est cree la ou je veux l'exec aussi, par contre comme j'ai un solution svn sur ma machine et bien .. dans la dist il prend aussi les .svn ce qui est vraiment troop moche (je veux pas tapper a chaque fois svn export pour que ca marche)
    alors j'ai trouvé cette solution
    1- qui marche moi bien : EXTRA_DIST : j'ai mis les sous-rep que je veux mettre dans la tarball mais j'ai des sous repertoire qui non pas de Makefile.am du coup ERREUR
    2- ca marche mais pas tres bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dist-hook:
    #       echo "--------------- svn log > ChangeLog"
    #       echo "--------------- Distclean avant dist"
            -rm -rf $(top_srcdir)/src/include/.svn $(top_srcdir)/doc/.svn \
            $(top_srcdir)/check/.svn *.log *.cache $(MY_BIN)
    voila je supprime les .svn ! c troo crade et mechant en meme temps puisque je supprime mes propres fichiers .svn !
    je peux ameliorer cette version en mettant a la place de $(top_srcdir) le repertoire temporaire de la tarball (j'imagine que les ATools cree un repertoire tmp pour cree le tar)*

    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #set the variable DIST_SUBDIRS to the exact list of subdirectories to include in the distribution
    #DIST_SUBDIRS =  $(SUBDIRS) $(HEADERDIR) ./doc ./check
    Celle ci il me dit pas de MAkefile.am il sest pas cmt cree la target
    voila voilou c'est super sympa les autotools ! mais il faut les maitriser
    je te remercie pour ton aide surtout au debut la je suis bien a laiz avec la bete.
    ..::: aa du bocal ..:::
    Il nous faut deux ans pour apprendre à parler et toute une vie pour apprendre se taire.
    N'oublier surtout pas de ne pas poster la réponse même si on vous a pas aidé

Discussions similaires

  1. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12

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