Forum Linux.général make et tar -abiscoté

Posté par . Licence CC by-sa
Tags :
4
2
oct.
2017

Bonjour,

Pour archiver la partie programmes d'une arborescence contenant des exemples de programmes C++, j'utilise une commande tar un peu tarabiscotée :

tar cf ../documents_cours.tar --exclude "modele*" C_Cpp/Sources/{*.[hc]pp,Makefile}  Objets/Sources/{*.[hc]pp,Makefile}  Polymorphisme/Sources/{*.[hc]pp,Makefile}

Elle fonctionne parfaitement en ligne de commande bash.

Comme est elle est compliquée, je souhaite l'intégrer dans le Makefile qui me sert par ailleurs à gérer les exemples.
J'ai donc écrit une cible :

archive:
    tar cf ../documents_cours.tar --exclude "modele*" C_Cpp/Sources/{*.[hc]pp,Makefile}  Objets/Sources/{*.[hc]pp,Makefile}  Polymorphisme/Sources/{*.[hc]pp,Makefile}
_$ make archive

me répond :

tar cf ../documents_cours.tar --exclude "modele*" C_Cpp/Sources/{*.[hc]pp,Makefile}  Objets/Sources/{*.[hc]pp,Makefile}  Polymorphisme/Sources/{*.[hc]pp,Makefile}
tar: C_Cpp/Sources/{*.[hc]pp,Makefile} : stat impossible: Aucun fichier ou dossier de ce type
tar: Objets/Sources/{*.[hc]pp,Makefile} : stat impossible: Aucun fichier ou dossier de ce type
tar: Polymorphisme/Sources/{*.[hc]pp,Makefile} : stat impossible: Aucun fichier ou dossier de ce type
tar: Arrêt avec code d'échec à cause des erreurs précédentes

Je ne comprends pas pourquoi.

Quelqu'un aurait une suggestion ?

Cordialement

Dominique

  • # Bash vs POSIX

    Posté par (page perso) . Évalué à 9 (+7/-0).

    La syntaxe {...,...} est un bashisme non-POSIX. Visiblement, chez toi make n'utilise pas bash (du point de vue du Makefile, une action n'est qu'une chaîne de caractère, c'est un shell qui s'occupe de la découper proprement selon les espaces, et d'expanser les noms de fichiers comme *.ext et ton {...,...}).

    Quelque chose comme

    SHELL=/bin/bash
    

    en début de Makefile devrait régler ça.

    • [^] # Re: Bash vs POSIX (make et tar)

      Posté par . Évalué à 4 (+3/-0).

      Bonjour,

      devrait

      Inutile d'employer le conditionnel : je viens d'essayer et cela fonctionne parfaitement.

      Grand merci.

      Je crois même tenir l'explication à d'autres "défaillances" de make :-)

      Cordialement

      Dominique

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.