|
@@ -465,6 +465,10 @@ def encodeFilename(s, for_subprocess=False):
|
|
|
if not for_subprocess and sys.platform == 'win32' and sys.getwindowsversion()[0] >= 5:
|
|
|
return s
|
|
|
|
|
|
+ # Jython assumes filenames are Unicode strings though reported as Python 2.x compatible
|
|
|
+ if sys.platform.startswith('java'):
|
|
|
+ return s
|
|
|
+
|
|
|
return s.encode(get_subprocess_encoding(), 'ignore')
|
|
|
|
|
|
|
|
@@ -1215,13 +1219,23 @@ if sys.platform == 'win32':
|
|
|
raise OSError('Unlocking file failed: %r' % ctypes.FormatError())
|
|
|
|
|
|
else:
|
|
|
- import fcntl
|
|
|
+ # Some platforms, such as Jython, is missing fcntl
|
|
|
+ try:
|
|
|
+ import fcntl
|
|
|
|
|
|
- def _lock_file(f, exclusive):
|
|
|
- fcntl.flock(f, fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH)
|
|
|
+ def _lock_file(f, exclusive):
|
|
|
+ fcntl.flock(f, fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH)
|
|
|
|
|
|
- def _unlock_file(f):
|
|
|
- fcntl.flock(f, fcntl.LOCK_UN)
|
|
|
+ def _unlock_file(f):
|
|
|
+ fcntl.flock(f, fcntl.LOCK_UN)
|
|
|
+ except ImportError:
|
|
|
+ UNSUPPORTED_MSG = 'file locking is not supported on this platform'
|
|
|
+
|
|
|
+ def _lock_file(f, exclusive):
|
|
|
+ raise IOError(UNSUPPORTED_MSG)
|
|
|
+
|
|
|
+ def _unlock_file(f):
|
|
|
+ raise IOError(UNSUPPORTED_MSG)
|
|
|
|
|
|
|
|
|
class locked_file(object):
|
|
@@ -1385,6 +1399,12 @@ def fix_xml_ampersands(xml_str):
|
|
|
|
|
|
def setproctitle(title):
|
|
|
assert isinstance(title, compat_str)
|
|
|
+
|
|
|
+ # ctypes in Jython is not complete
|
|
|
+ # http://bugs.jython.org/issue2148
|
|
|
+ if sys.platform.startswith('java'):
|
|
|
+ return
|
|
|
+
|
|
|
try:
|
|
|
libc = ctypes.cdll.LoadLibrary('libc.so.6')
|
|
|
except OSError:
|