Search code examples
ubuntuschemeguile

guile on ubuntu 12.04 gives "input locale conversion error"


Running guile (in interactive mode or with script) gives this error on my ubuntu 12.04 :-

guile test.scm
Backtrace:
In ice-9/boot-9.scm:
 149: 2 [catch #t #<catch-closure 9ec72f0> ...]
 157: 1 [#<procedure 9e8f8c0 ()>]
In unknown file:
   ?: 0 [catch-closure]

ERROR: In procedure catch-closure:
ERROR: Throw to key `decoding-error' with args `("scm_from_stringn" "input locale conversion error" 22 #vu8(116 101 115 116 46 115 99 109))'.

Any inputs on how to debug this will also help.


Solution

  • Short answer: you must use en_IN.UTF-8 as your encoding if you want to use Indian English. Don't forget to run sudo locale-gen en_IN if you haven't already.

    Long answer: I finally got around to installing Ubuntu 12.04.3, so I could test this out. When I tested it, it seems that the locale must include the encoding, otherwise it fails:

    $ for LANG in en_{IN,US}{,.UTF-8,.ISO-8859-1}; do echo LANG=$LANG; guile </dev/null; done
    LANG=en_IN
    Backtrace:
    In ice-9/boot-9.scm:
     149: 2 [catch #t #<catch-closure 224b4e0> ...]
     157: 1 [#<procedure 21e90f0 ()>]
    In unknown file:
       ?: 0 [catch-closure]
    
    ERROR: In procedure catch-closure:
    ERROR: Throw to key `decoding-error' with args `("scm_from_stringn" "input locale conversion error" 22 #vu8(103 117 105 108 101))'.
    LANG=en_IN.UTF-8
    GNU Guile 2.0.5-deb+1-1
    Copyright (C) 1995-2012 Free Software Foundation, Inc.
    
    Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
    This program is free software, and you are welcome to redistribute it
    under certain conditions; type `,show c' for details.
    
    Enter `,help' for help.
    
    LANG=en_IN.ISO-8859-1
    warning: failed to install locale: Invalid argument
    GNU Guile 2.0.5-deb+1-1
    Copyright (C) 1995-2012 Free Software Foundation, Inc.
    
    Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
    This program is free software, and you are welcome to redistribute it
    under certain conditions; type `,show c' for details.
    
    Enter `,help' for help.
    
    LANG=en_US
    Backtrace:
    In ice-9/boot-9.scm:
     149: 2 [catch #t #<catch-closure 1def1c0> ...]
     157: 1 [#<procedure 1d8d0f0 ()>]
    In unknown file:
       ?: 0 [catch-closure]
    
    ERROR: In procedure catch-closure:
    ERROR: Throw to key `decoding-error' with args `("scm_from_stringn" "input locale conversion error" 22 #vu8(103 117 105 108 101))'.
    LANG=en_US.UTF-8
    GNU Guile 2.0.5-deb+1-1
    Copyright (C) 1995-2012 Free Software Foundation, Inc.
    
    Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
    This program is free software, and you are welcome to redistribute it
    under certain conditions; type `,show c' for details.
    
    Enter `,help' for help.
    
    LANG=en_US.ISO-8859-1
    warning: failed to install locale: Invalid argument
    GNU Guile 2.0.5-deb+1-1
    Copyright (C) 1995-2012 Free Software Foundation, Inc.
    
    Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
    This program is free software, and you are welcome to redistribute it
    under certain conditions; type `,show c' for details.
    
    Enter `,help' for help.