web2py Version 1.96.4 under sl4a (android / python 2.6.2) does not
start due to a few errors.


The first one is in dal.py
It seems that there was already half fixed, the problem is in
path_encoding = sys.getfilesystemencoding() or
locale.getdefaultlocale()[1]
the result is empty here.

There is one place in the code where this was fixed already (with an
additional or 'utf8'), this fix should also go to the other places
where the same structure is used.

PATCH
diff -U 3 -H -d -r -N -- web2py/gluon/dal.py web2py_droid/gluon/dal.py
--- web2py/gluon/dal.py 2011-06-07 22:07:48.000000000 +0200
+++ web2py_droid/gluon/dal.py   2011-06-16 10:14:49.677764405 +0200
@@ -1487,7 +1487,7 @@
         self.folder = folder
         self.db_codec = db_codec
         self.find_or_make_work_folder()
-        path_encoding = sys.getfilesystemencoding() or
locale.getdefaultlocale()[1]
+        path_encoding = sys.getfilesystemencoding() or
locale.getdefaultlocale()[1] or 'utf8'
         if uri.startswith('sqlite:memory'):
             dbpath = ':memory:'
         else:
@@ -1523,7 +1523,7 @@
         self.folder = folder
         self.db_codec = db_codec
         self.find_or_make_work_folder()
-        path_encoding = sys.getfilesystemencoding() or
locale.getdefaultlocale()[1]
+        path_encoding = sys.getfilesystemencoding() or
locale.getdefaultlocale()[1] or 'utf8'
         if uri.startswith('sqlite:memory'):
             dbpath = ':memory:'
         else:



The second thing is in cache.py
os.unlink(self.shelve_name) gives an exception because the file is not
found.
In the code there is an if statement which is True when the file does
not exist.
In the if there is an open for reading, which failes in case the file
does not exist, deleting the file will in that case also fail..


PATCH
diff -U 3 -H -d -r -N -- web2py_unicode/gluon/cache.py web2py_droid/
gluon/cache.py
--- web2py_unicode/gluon/cache.py       2011-06-07 22:07:48.000000000 +0200
+++ web2py_droid/gluon/cache.py 2011-06-16 10:35:38.625610104 +0200
@@ -257,7 +257,10 @@
             except:
                 logger.error('corrupted file %s, deleting it!' \
                                  % self.shelve_name)
-                os.unlink(self.shelve_name)
+               try:
+                   os.unlink(self.shelve_name)
+               except:
+                   pass # open could fail in case the fail doensn't exist.. 
Unlink
will fail than also...
             if locker_locked:
                 portalocker.unlock(locker)
             if locker:

Reply via email to