GNT sans publicité, site mobile, fonctionnalitées exclusives...

Commande evaluée dans un Makefile

Le
NICOLAS MAUPU
Bonjour,

J'ai un petit souci dans un Makefile.
Je souhaite faire une commande pour faire une version
de mon projet sous forme de tar.
Voici ce que j'ai déjà fait:

tar: cleanall
tar cfj simu.`date +%d-%m-%y.%H-%M`.tar.bz2 *

He oui, c'est un projet de simulation ;)
Le problème avec ceci, c'est que lors de la décompression
de l'archive, tous les fichiers et répertoires du projets
sont extraits directement dans le répertoire courant.
J'aimerais donc compresser tout dans un répertoire avec une
commande du type:
tar cfj foo.tar.bz2 rep/

Pour avoir le répertoire courant, j'ai pensé faire:
pwd | sed s/^\\/.*\\///
Stocké dans une variable du Makefile ca donne:
REP = `pwd | sed s/^\\\\/.*\\\\///`

L'idée serait donc de faire:
cd ..
tar cfj simu.`date +%d-%m-%y.%H-%M`.tar.bz2 $(REP)
cd $(REP)

Mais le problème avec ça, c'est le 'cd ..' car le $(REP)
donne le repertoire précédent du projet (..) et non le
répertoire courant.


Merci.
Lire les 9 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #539126
NICOLAS MAUPU
L'idée serait donc de faire:
cd ..
tar cfj simu.`date +%d-%m-%y.%H-%M`.tar.bz2 $(REP)
cd $(REP)


Les lignes des Makefile sont souvent (pas toujours...) interpretees
separement. Mettre des ; a la fin pour n'en faire qu'une grande
ligne logique.

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Laurent Wacrenier
Le #538873
Jean-Marc Bourguet
L'idée serait donc de faire:
cd ..
tar cfj simu.`date +%d-%m-%y.%H-%M`.tar.bz2 $(REP)
cd $(REP)


Les lignes des Makefile sont souvent (pas toujours...) interpretees
separement. Mettre des ; a la fin pour n'en faire qu'une grande
ligne logique.


mettre des && plutôt quand on veut que ça s'arrete quand ça se passe mal.


Nicolas
Le #538868
Laurent Wacrenier wrote:
Jean-Marc Bourguet
L'idée serait donc de faire:
cd ..
tar cfj simu.`date +%d-%m-%y.%H-%M`.tar.bz2 $(REP)
cd $(REP)


Les lignes des Makefile sont souvent (pas toujours...) interpretees
separement. Mettre des ; a la fin pour n'en faire qu'une grande
ligne logique.



mettre des && plutôt quand on veut que ça s'arrete quand ça se passe mal.


Exacte, c'etait une erreur de ma part lors de la copie (j'obterais pour
ma part plutôt pour &&...). Mais le problème ne vient pas de là!

Je me suis mal exprimé, essayons de faire mieux!
Le problème est que je voudrais faire un tar de mon dossier de projet
avec make mais que je voudrais tarrer le dossier entier et non son
contenu.

Par exemple, vous avez le répertoire de projet /home/toto/projet.
Pour le tarrer, on se placera dans /home/toto et on fera:
tar cvfj simu.`date +%d-%m-%y.%H-%M`.tar.bz2 projet/

Il faut donc récupérer le nom du répertoire du projet (projet)
(avec `pwd | sed s/^\\/.*\\///`) et le tarrer.
Sauf que, ça ne fonctionne pas car on fait un cd.. avant et avec la
commande `pwd | sed s/^\\/.*\\///`, on obtient non pas 'projet' mais
toto!

Si quelqu'un a une idée pour stocker le resultat evalué de la commande
sed et non la commande pour pouvoir l'utiliser ensuite...

Merci
dans une variable



Jean-Marc Bourguet
Le #538866
Nicolas writes:

Si quelqu'un a une idée pour stocker le resultat evalué de la commande sed
et non la commande pour pouvoir l'utiliser ensuite...


rep=$(basename $(pwd)) && cd .. && tar cf foo.tar "$rep"

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Nicolas
Le #538613
Jean-Marc Bourguet wrote:
Nicolas writes:


Si quelqu'un a une idée pour stocker le resultat evalué de la commande sed
et non la commande pour pouvoir l'utiliser ensuite...



rep=$(basename $(pwd)) && cd .. && tar cf foo.tar "$rep"

A+



Merci beaucoup!
Ca n'a pas marché du premier coup mais en arrangeant un peu, tout roule!
Voici le code final, si ça peut servir:

REP=`basename $$PWD`; cd .. ;
tar cfj simu.$(NOM_TAR_VERSION).tar.bz2 $$REP &&
cd $$REP


@+
Nicolas


Publicité
Suivre les réponses
Poster une réponse
Anonyme