Bash: éxec de cmd, paramètres non passés

Résolu/Fermé
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008 - 16 juin 2008 à 10:13
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008 - 16 juin 2008 à 12:10
Bonjour,

J'ai trouvé déjà beaucoup de réponses en parcourant vos forum, et cette fois-ci je fait appel à la communauté.

Un de mes scripts télécharge, décompresse, configure, et compile une librairie (cURL).

Le petit soucis est que les paramètres passés à configure ne sont pas pris en compte.

code :
`wget -c ${sitecurl}${gzcurl}.tar.gz`
tar -xzvf ${gzcurl}.tar.gz
cd ${gzcurl}/
./configure --disable-debug --enable-ipv6 CFLAGS="-Os"
make


pour la ligne configure j'ai essayé :
`./configure --disable-debug --enable-ipv6 CFLAGS="-Os"`
./configure' --disable-debug --enable-ipv6 CFLAGS="-Os"'
./configure" --disable-debug --enable-ipv6 CFLAGS='-Os'"
sh ./configure" --disable-debug --enable-ipv6 CFLAGS='-Os'"



A l'exécution la sortie est toujours un truc du genre :

./configure --disable-debug --enable-ipv6 CFLAGS='-Os': ./configure --disable-debug --enable-ipv6 CFLAGS='-Os': No such file or directory
./configure #ici se lance le configure normal sans la prise en charge des paramètres passés


Je suis sous Windows avec MinGW32 et MSYS (shell UNIX sous Windows)
Les commandes ont été testées dans la console avec succès.
A voir également:

3 réponses

marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008 382
16 juin 2008 à 10:15
Salut,

t'es sur que le configure existe ?

ls ${gzcurl}
0
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008
16 juin 2008 à 10:20
Oui oui, sûr et certo, j'ai testé la plupart de mes commandes dans la console avant :

$ ls curl-7.18.2
CHANGES aclocal.m4 configure install-sh mkinstalldirs
COPYING buildconf configure.ac lib packages
Makefile buildconf.bat curl-config libcurl.pc reconf
Makefile.am compile curl-config.in libcurl.pc.in sample.emacs
Makefile.in config.guess curl-style.el libtool src
README config.log depcomp ltmain.sh tests
RELEASE-NOTES config.status docs maketgz
acinclude.m4 config.sub include missing
0
marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008 382
16 juin 2008 à 10:26
vire la variable CFLAGS

ou utilise là correctement :)
CFLAGS="-march=native -Os -pipe"
CXXFLAGS="${CFLAGS}"
./configure --optiondelamort


native fonctionne avec GCC4.2 ou supérieur
0
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008
16 juin 2008 à 10:37
Pour gcc c la 3.4.2 :(

cURL livre un super script (1,2Mo quand même), qui configure pour une bonne variété de plate-formes.
Dans le makefile résultant, CFLAGS ne prenanait que deux options "-g -O2", l'option --disable-debug ne virait pas le -g. Les autres flag de compile sont gérés dans d'autres variables puis ajoutés à la exécution de la commande dans le MacFly.

Est-ce que tu définit CFLAGS et CXXFLAGS juste avant la commande ?
./configure peut récupérer ces variables ?
0
marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008 382 > kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008
16 juin 2008 à 10:43
Les variables CFLAGS et CXXFLAGS sont à renseigner avant le configure.

pour gcc 3.4, je te conseil de mettre ceci dans ta variable :
CFLAGS="-O2 -march=i686 -mtune=i686"

si ton proc est un i686 évidement :)
0
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008 > marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008
16 juin 2008 à 11:17
Après quelques tests le résultat c'est :

1- si dans mon script je met
CFLAGS="-O2 -march=..."
./configure --options-deLaMort

CFLAGS n'est pas pris en compte mais les options oui :

configure: Configured to build curl/libcurl:

curl version: 7.18.2
Host setup: i686-pc-mingw32
Install prefix: /usr/local
Compiler: gcc
SSL support: enabled (OpenSSL)
SSH support: no (--with-libssh2)
zlib support: enabled
krb4 support: no (--with-krb4*)
GSSAPI support: no (--with-gssapi)
SPNEGO support: no (--with-spnego)
c-ares support: no (--enable-ares)
ipv6 support: enabled
IDN support: no (--with-libidn)
Build libcurl: Shared=yes, Static=yes
Built-in manual: no (--enable-manual)
Verbose errors: enabled (--disable-verbose)
SSPI support: no (--enable-sspi)
ca cert bundle: no
ca cert path: no
LDAP support: enabled (winldap)
LDAPS support: no (--enable-ldaps)


2- Si dans mon script je met
cflags="CFLAGS=\"-O2\""
./configure --disable-debug --enable-ipv6 ${cflags}


Aucun paramètre n'est pris.

J'ai vérifié, et le mode -686 (sous la forme : host = i686-pc-mingw32; host_cpu = i686; host_os = mingw32) est bien pris en compte dans le makefile, donc je n'est pas besoins de le mentionner dans le CFLAGS.

Je me tâte à faire un :
cat makefile | awk '{ sub("CFLAGS = -g -O2","CFLAGS = -O2");print}' > ./makefile
Je suis pas sûr que ce soit le plus propre mais bon...
0
marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008 382 > kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008
16 juin 2008 à 11:25
A ta place, je ne toucherais pas au CFLAGS, vu qu'il semble déjà correctement utilisé.
Mais bon cela dépends de la finalité de ton binaire.
0
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008 > marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008
16 juin 2008 à 11:38
Ben le pb c'est que l'option -g du makefile reste même avec --disable-debug. Et du coup je me retrouve avec une compil debug de 15Mo.
Je me sert de la librairie statique pour intégrer cURL à une bibliothèque dynamique cette fois. Et je veut pas me retrouver avec une .dll ou .so de 50Mo en debug, alors que le release devrait atteindre 2Mo. C un peut gros pour être installé chez le client ^^, et c pas très propre.
0
marc[i1] Messages postés 2573 Date d'inscription vendredi 1 avril 2005 Statut Contributeur Dernière intervention 6 septembre 2008 382
16 juin 2008 à 11:57
De ce que je connais de curl, personne ne précise le mode debug, car il doit être désactivé par défaut.

Pour info, je te met deux méthodes de script, un pour ArchLinux :
./configure --prefix=/usr --without-libidn --disable-ldap \
    --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt || return 1
  make || return 1
  make DESTDIR=${startdir}/pkg install || return 1


et un pour Slackware :
CFLAGS="-O2 -march=i486 -mtune=i686" \
./configure \
  --prefix=/usr \
  --mandir=/usr/man \
make -j4 || exit 1
make install DESTDIR=$PKG || exit 1


Les deux fonctionnent parfaitement dans un script :)
0
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008
16 juin 2008 à 12:10
héhé ça marche !!!

j'avais pas capté qu'il fallait que ce soit sur la même ligne de commande ( y'avait pas le \ dans les message plus haut).

donc pour résumer :
CFLAGS="..." ./configure --options
ça marche ! Pardon ça fonctionne !!!

Merci beaucoup marc de m'avoir consacré du temps ;)
0