Opened 10 years ago
Closed 10 years ago
#2210 closed defect (fixed)
unable to start GRASS GIS 7
| Reported by: | turek | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.0.0 |
| Component: | Python | Version: | svn-trunk |
| Keywords: | Cc: | ||
| CPU: | x86-64 | Platform: | Linux |
Description
Hi,
since r59163 I am getting following error when GRASS 7 is started. I am getting same error also in recent revisions (r59205):
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk$ ./bin.x86_64-unknown-linux-gnu/grass70
Cleaning up temporary files...
Starting GRASS GIS...
Traceback (most recent call last):
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/gis_set.py", line 37, in <module>
from core.utils import _
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/utils.py", line 36, in <module>
from core.gcmd import RunCommand
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/gcmd.py", line 744, in <module>
_enc = GetDefaultEncoding() # define as global variable
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/gcmd.py", line 737, in GetDefaultEncoding
enc = locale.getdefaultlocale()[1]
File "/usr/lib/python2.7/locale.py", line 511, in getdefaultlocale
return _parse_localename(localename)
File "/usr/lib/python2.7/locale.py", line 443, in _parse_localename
raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: None
Error in GUI startup. If necessary, please report this error to the GRASS developers.
Switching to text mode now.
Hit RETURN to continue...
Change History (10)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Hi,
locale outside GRASS session:
LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
locale inside GRASS session:
LANG=None LANGUAGE=None LC_CTYPE=C LC_NUMERIC=C LC_TIME=C LC_COLLATE=C LC_MONETARY=C LC_MESSAGES=C LC_PAPER=C LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C LC_IDENTIFICATION=C LC_ALL=
locale -a:
C C.UTF-8 POSIX en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW.utf8
grep language ~/.grass7/wx:
language;locale;lc_all;None
comment:3 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Ahh. I see. The new language override code is too tolerant - if no override is specified, it doesn't call setlocale() at all and thus process ends running with C locale.
Should be fixed in r59211. Reopen this bug if needed.
follow-up: 5 comment:4 by , 10 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
Hi,
I tried r59211, unfortunately, I stil get the same error.
comment:5 by , 10 years ago
comment:6 by , 10 years ago
Hi, I still get the same error. Maybe I am doing something wrong however r59162 works for me:
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk/lib/init$ svn up grass.py
Updating 'grass.py':
U grass.py
Updated to revision 59220.
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk/lib/init$ make
rm -f /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/bin.x86_64-unknown-linux-gnu/grass70
sed \
-e 's#@GISBASE@#/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu#' \
-e 's#@GRASS_VERSION_NUMBER@#7.0.svn#' \
-e 's#@LD_LIBRARY_PATH_VAR@#LD_LIBRARY_PATH#' \
-e 's#@START_UP@#grass70#' \
-e 's#@CONFIG_PROJSHARE@#/usr/share/proj/#' \
grass.py > /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/bin.x86_64-unknown-linux-gnu/grass70
chmod +x /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/bin.x86_64-unknown-linux-gnu/grass70
rm -f /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/grass70.tmp
sed \
-e 's#@GRASS_VERSION_NUMBER@#7.0.svn#' \
-e 's#@START_UP@#grass70#' \
-e 's#@GRASS_CONFIG_DIR@##' \
-e 's#@LD_LIBRARY_PATH_VAR@#LD_LIBRARY_PATH#' \
-e 's#@CONFIG_PROJSHARE@#/usr/share/proj/#' \
grass.py > /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/grass70.tmp
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk/lib/init$ ../../bin.x86_64-unknown-linux-gnu/grass70
Cleaning up temporary files...
Starting GRASS GIS...
Traceback (most recent call last):
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/gis_set.py", line 37, in <module>
from core.utils import _
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/utils.py", line 42, in <module>
from core.gcmd import RunCommand
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/gcmd.py", line 744, in <module>
_enc = GetDefaultEncoding() # define as global variable
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/gcmd.py", line 737, in GetDefaultEncoding
enc = locale.getdefaultlocale()[1]
File "/usr/lib/python2.7/locale.py", line 511, in getdefaultlocale
return _parse_localename(localename)
File "/usr/lib/python2.7/locale.py", line 443, in _parse_localename
raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: None
Error in GUI startup. If necessary, please report this error to the GRASS developers.
Switching to text mode now.
Hit RETURN to continue...
Unable to create temporary directory </tmp/grass7-ostepok-7579>! Exiting.
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk/lib/init$ svn up -r 59162 grass.py
Updating 'grass.py':
U grass.py
Updated to revision 59162.
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk/lib/init$ make
rm -f /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/bin.x86_64-unknown-linux-gnu/grass70
sed \
-e 's#@GISBASE@#/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu#' \
-e 's#@GRASS_VERSION_NUMBER@#7.0.svn#' \
-e 's#@LD_LIBRARY_PATH_VAR@#LD_LIBRARY_PATH#' \
-e 's#@START_UP@#grass70#' \
-e 's#@CONFIG_PROJSHARE@#/usr/share/proj/#' \
grass.py > /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/bin.x86_64-unknown-linux-gnu/grass70
chmod +x /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/bin.x86_64-unknown-linux-gnu/grass70
rm -f /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/grass70.tmp
sed \
-e 's#@GRASS_VERSION_NUMBER@#7.0.svn#' \
-e 's#@START_UP@#grass70#' \
-e 's#@GRASS_CONFIG_DIR@##' \
-e 's#@LD_LIBRARY_PATH_VAR@#LD_LIBRARY_PATH#' \
-e 's#@CONFIG_PROJSHARE@#/usr/share/proj/#' \
grass.py > /home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/grass70.tmp
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk/lib/init$ ../../bin.x86_64-unknown-linux-gnu/grass70
Cleaning up temporary files...
Starting GRASS GIS...
Failed to set LC_ALL to None.UTF-8 (unsupported locale setting)
__________ ___ __________ _______________
/ ____/ __ \/ | / ___/ ___/ / ____/ _/ ___/
/ / __/ /_/ / /| | \__ \\_ \ / / __ / / \__ \
/ /_/ / _, _/ ___ |___/ /__/ / / /_/ // / ___/ /
\____/_/ |_/_/ |_/____/____/ \____/___//____/
Note that I get this warning in r59162:
Failed to set LC_ALL to None.UTF-8 (unsupported locale setting)
Rest of source code is in r59220.
comment:7 by , 10 years ago
I'm not able to reproduce the issue on my system no matter how hard I try.
Still the issue seems to be twofold - there was not robust enough code to set language/locale in startup script. It is fixed and from r59215 it should work just fine* The second problem is that now some problems with other wxgui code have popped-up. I.e. getdefaultlocale shouldn't be used to get encoding.
Can you, please, apply this patch and give me back output?
Index: lib/init/grass.py
===================================================================
--- lib/init/grass.py (revision 59254)
+++ lib/init/grass.py (working copy)
@@ -784,7 +784,10 @@
# Language override is disabled (system language specified)
# As by default program runs with C locale, but users expect to
# have their default locale, we'll just set default locale
- locale.setlocale(locale.LC_ALL, '')
+ try:
+ locale.setlocale(locale.LC_ALL, '')
+ except:
+ warning("Setting default locale failed. It indicates misconfigured system. Check systems locale settings.")
if windows and os.getenv('LANG') is None:
language, encoding = locale.getdefaultlocale()
os.environ['LANG'] = language
@@ -1296,6 +1299,14 @@
# Subsequent functions are using _() calls and
# thus must be called only after Language has been set.
set_language()
+for lc in ('LC_CTYPE', 'LC_MESSAGES', 'LC_TIME', 'LC_COLLATE',
+ 'LC_MONETARY', 'LC_PAPER', 'LC_NAME', 'LC_ADDRESS',
+ 'LC_TELEPHONE', 'LC_MEASUREMENT', 'LC_IDENTIFICATION',
+ 'LANG', 'LANGUAGE', 'LC_ALL'):
+ if lc in os.environ:
+ print "%s = ' %s '" % (lc, os.environ[lc])
+ else:
+ print "%s = unset" % lc
# Create the temporary directory and session grassrc file
create_tmp()
- one of most common misconceptions of all programmers.
comment:8 by , 10 years ago
Hi,
this is the output after the patch was applied:
ostepok@ostepok-pc:~/Dev/GRASS/grass_wms/grass_trunk$ ./bin.x86_64-unknown-linux-gnu/grass70
LC_CTYPE = unset
LC_MESSAGES = unset
LC_TIME = unset
LC_COLLATE = unset
LC_MONETARY = unset
LC_PAPER = unset
LC_NAME = unset
LC_ADDRESS = unset
LC_TELEPHONE = unset
LC_MEASUREMENT = unset
LC_IDENTIFICATION = unset
LANG = ' en_US.UTF-8 '
LANGUAGE = unset
LC_ALL = unset
Cleaning up temporary files...
Starting GRASS GIS...
Traceback (most recent call last):
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/gis_set.py", line 37, in <module>
from core.utils import _
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/utils.py", line 42, in <module>
from core.gcmd import RunCommand
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/gcmd.py", line 744, in <module>
_enc = GetDefaultEncoding() # define as global variable
File "/home/ostepok/Dev/GRASS/grass_wms/grass_trunk/dist.x86_64-unknown-linux-gnu/etc/gui/wxpython/core/gcmd.py", line 737, in GetDefaultEncoding
enc = locale.getdefaultlocale()[1]
File "/usr/lib/python2.7/locale.py", line 511, in getdefaultlocale
return _parse_localename(localename)
File "/usr/lib/python2.7/locale.py", line 443, in _parse_localename
raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: None
Error in GUI startup. If necessary, please report this error to the GRASS developers.
Switching to text mode now.
Hit RETURN to continue...
comment:9 by , 10 years ago
Can you, please, test after r59652? I added some extra care to the cases when Python fails to detect default locale. Generally it indicates on some kind of problem with system's locale.
comment:10 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Thanks Maris, great work! It works now. Closing the ticket.

Please, provide output of following commands: