#1 Le 30/10/2006, à 23:43
- GreenSkol
echo dans Makefile et caractères d'échappement
Bonjour,
Après un upgrade de Breezy vers Edgy, j'ai un souci avec la gestion du "echo" dans les Makefile, qui m'empêche de cross-compiler la glibc-2.3.2 :
Le Makefile minimaliste suivant illustre très bien le problème auquel je suis confronté :
all:
@echo "\"Available extensions:\\n\"";
Sous breezy, ça donnaît (ce que j'attendais) :
"Available extensions:\n"
Et sous Edgy, ça donne malheureusement (et ça ne compile plus...) :
"Available extensions:
"
Ce que je ne comprends pas, c'est que normalement le Makefile s'appuie sur le shell par défaut ($SHELL=/bin/bash) pour exécuter les commandes shell. Sous Edgy et Breezy la commande "echo" me renvoie bien la bonne chaîne quand je l'exécute...
C'est comme si l'option "-e" était passée au bash qu'exécute make.
Quelqu'un aurait-il une solution miracle à me proposer ??
Merci d'avance,
GreenSkol.
Hors ligne
#2 Le 31/10/2006, à 03:08
- foobar2000
Re : echo dans Makefile et caractères d'échappement
Ceci devrait marcher :
all:
@echo '"Available extensions:\n"'
Aucun rapport avec le logiciel du même nom.
Hors ligne
#3 Le 31/10/2006, à 13:28
- GreenSkol
Re : echo dans Makefile et caractères d'échappement
Merci pour le correctif, mais je voulais éviter de me taper tous les Makefile (je cross-compile une distribution complète pour un équipement embarqué...).
J'ai trouvé la solution du problème : avec Edgy, /bin/sh ne pointe plus vers bash, mais vers dash.
Comme la plupart des makefile ne définissent pas la variable SHELL, make se replie alors vers /bin/sh, et donc vers la commande echo du shell qui se cache derrière sh.
Problème : echo ne fonctionne pas de la même façon sous bash et dash, et les Makefile de la glib-2.3.2 ne fonctionnent plus.
Solution : dpkg-reconfigure dash, pour lui dire de ne plus remplacer bash pour /bin/sh
Hors ligne