autoconf et localisation

Le
JKB
Bonjour à tous,

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200

Une idée ?

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Ducrot
Le #26356742
On 2015-06-16, JKB wrote:
Bonjour à tous,

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200

Une idée ?




Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias

IL me semble que les debian récentes ne positionne plus l'alias
en question.

NB : tu peux aussi modifier DATE_FR afin d'utiliser fr_FR.ISO-8859-15,
ce qui, AMHA, serait plus approprié.

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Sergio
Le #26356741
Le 16/06/2015 09:14, JKB a écrit :

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200




T'inquiètes...

Chez moi, ça donne :

$ DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
$ DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
:~$ echo $DATE
mardi, 16 juin 2015 09:32:24 +0200
$ echo $DATE_FR
Tuesday, 16 June 2015 09:32:24 +0200

Donc exactement le contraire de ce qu'on attendait !

LinuxMint 17.1:
$ uname -a
Linux slibovix 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.[...]

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
JKB
Le #26356746
Le Tue, 16 Jun 2015 07:32:34 +0000 (UTC),
Bruno Ducrot
On 2015-06-16, JKB wrote:
Bonjour à tous,

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200

Une idée ?




Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.

IL me semble que les debian récentes ne positionne plus l'alias
en question.

NB : tu peux aussi modifier DATE_FR afin d'utiliser fr_FR.ISO-8859-15,
ce qui, AMHA, serait plus approprié.



En l'occurrence, je préférerais même l'UTF-8 ;-)

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
JKB
Le #26356745
Le Tue, 16 Jun 2015 09:37:25 +0200,
Sergio
Le 16/06/2015 09:14, JKB a écrit :

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.



J'ai écrit il y a plusieurs années ceci dans un configure.ac :



dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200




T'inquiètes...

Chez moi, ça donne :

$ DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
$ DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
:~$ echo $DATE
mardi, 16 juin 2015 09:32:24 +0200
$ echo $DATE_FR
Tuesday, 16 June 2015 09:32:24 +0200

Donc exactement le contraire de ce qu'on attendait !

LinuxMint 17.1:
$ uname -a
Linux slibovix 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.[...]



Ce n'est pas vraiment pour me rassurer...

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
YBM
Le #26356762
Le 16/06/2015 09:59, JKB a écrit :
Le Tue, 16 Jun 2015 09:37:25 +0200,
Sergio

...
Chez moi, ça donne :

$ DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
$ DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
:~$ echo $DATE
mardi, 16 juin 2015 09:32:24 +0200
$ echo $DATE_FR
Tuesday, 16 June 2015 09:32:24 +0200

Donc exactement le contraire de ce qu'on attendait !

LinuxMint 17.1:
$ uname -a
Linux slibovix 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.[...]



Ce n'est pas vraiment pour me rassurer...



ouais... c'est pas trop normal quand même :

$ env LANG=fr_FR date +"%A, %e %B %Y %T %z"
Tuesday, 16 June 2015 13:55:35 +0200
$ env LANG=fr_FR.UTF8 date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 13:55:37 +0200
$ uname -a
Linux lomond 3.2.0-83-generic #120-Ubuntu SMP Wed Apr 29 15:37:05 UTC
2015 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
Bruno Ducrot
Le #26356766

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.

IL me semble que les debian récentes ne positionne plus l'alias
en question.

NB : tu peux aussi modifier DATE_FR afin d'utiliser fr_FR.ISO-8859-15,
ce qui, AMHA, serait plus approprié.



En l'occurrence, je préférerais même l'UTF-8 ;-)



--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
JKB
Le #26356773
Le Tue, 16 Jun 2015 12:32:34 +0000 (UTC),
Bruno Ducrot

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.



C'est bien dans la liste. Et cela fonctionne parfaitement en ligne
de commande. Ce n'est qu'à partir du script autoconf que cela ne
fonctionne pas.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Bruno Ducrot
Le #26356777
On 2015-06-16, JKB wrote:
Le Tue, 16 Jun 2015 12:32:34 +0000 (UTC),
Bruno Ducrot

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.



C'est bien dans la liste. Et cela fonctionne parfaitement en ligne
de commande. Ce n'est qu'à partir du script autoconf que cela ne
fonctionne pas.

JKB




C'est en effet assez étrange. Ce qui est rigolo, c'est que
si on remplace par LC_ALL, alors ca tombe en marche :

:~/t/ac$ cat configure.ac
AC_INIT([test], [0.1], [])
DATE_LC_FR=$(env LC_ALL=fr_FR date +"%A, %e %B %Y %T %z")
DATE_LANG_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_LC_FR
echo $DATE_LANG_FR
:~/t/ac$ autoconf
:~/t/ac$ ./configure
mardi, 16 juin 2015 16:25:12 +0200
Tuesday, 16 June 2015 16:25:12 +0200


Par contre, je ne vois pas pourquoi ca coince avec LANG, puisque :

:~/t/ac$ cat test_LANG.sh
#!/bin/sh
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
:~/t/ac$ ./test_LANG.sh
mardi, 16 juin 2015 16:32:34 +0200


fonctionne comme il faut (que ce soit bash ou dash, d'ailleurs).

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
JKB
Le #26356801
Le Tue, 16 Jun 2015 14:33:24 +0000 (UTC),
Bruno Ducrot
On 2015-06-16, JKB wrote:
Le Tue, 16 Jun 2015 12:32:34 +0000 (UTC),
Bruno Ducrot

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.



C'est bien dans la liste. Et cela fonctionne parfaitement en ligne
de commande. Ce n'est qu'à partir du script autoconf que cela ne
fonctionne pas.

JKB




C'est en effet assez étrange. Ce qui est rigolo, c'est que
si on remplace par LC_ALL, alors ca tombe en marche :

:~/t/ac$ cat configure.ac
AC_INIT([test], [0.1], [])
DATE_LC_FR=$(env LC_ALL=fr_FR date +"%A, %e %B %Y %T %z")
DATE_LANG_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_LC_FR
echo $DATE_LANG_FR
:~/t/ac$ autoconf
:~/t/ac$ ./configure
mardi, 16 juin 2015 16:25:12 +0200
Tuesday, 16 June 2015 16:25:12 +0200


Par contre, je ne vois pas pourquoi ca coince avec LANG, puisque :

:~/t/ac$ cat test_LANG.sh
#!/bin/sh
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
:~/t/ac$ ./test_LANG.sh
mardi, 16 juin 2015 16:32:34 +0200


fonctionne comme il faut (que ce soit bash ou dash, d'ailleurs).

A plus,




Effectivement, avec LC_ALL, ça fonctionne. Encore un mystère.

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Benoit Izac
Le #26356809
Bonjour,

le 16/06/2015 à 19:38, JKB message
C'est en effet assez étrange. Ce qui est rigolo, c'est que
si on remplace par LC_ALL, alors ca tombe en marche :

:~/t/ac$ cat configure.ac
AC_INIT([test], [0.1], [])
DATE_LC_FR=$(env LC_ALL=fr_FR date +"%A, %e %B %Y %T %z")
DATE_LANG_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_LC_FR
echo $DATE_LANG_FR
:~/t/ac$ autoconf
:~/t/ac$ ./configure
mardi, 16 juin 2015 16:25:12 +0200
Tuesday, 16 June 2015 16:25:12 +0200


Par contre, je ne vois pas pourquoi ca coince avec LANG, puisque :

:~/t/ac$ cat test_LANG.sh
#!/bin/sh
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
:~/t/ac$ ./test_LANG.sh
mardi, 16 juin 2015 16:32:34 +0200


fonctionne comme il faut (que ce soit bash ou dash, d'ailleurs).

A plus,




Effectivement, avec LC_ALL, ça fonctionne. Encore un mystère.



En fait, autoconf t'exporte un LC_ALL=C et, conformément à
(chercher precedence), si LC_ALL est défini, les autres n'ont pas d'effet.

% cat configure.ac
AC_INIT([test], [0.1], [])
DATE_FR=$(unset LC_ALL; LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
% autoconf && ./configure
mardi, 16 juin 2015 20:33:39 +0200
% grep -n LC_ configure
129:LC_ALL=C
130:export LC_ALL
1664:DATE_FR=$(unset LC_ALL; LANG=fr_FR date +"%A, %e %B %Y %T %z")
% date
Tue Jun 16 20:33:46 CEST 2015

--
Benoit Izac
Publicité
Poster une réponse
Anonyme