aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2016-03-03 18:49:32 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2016-03-03 18:49:32 +0800
commit0cae023b244ffdb37338da97a5e506487b20d7d6 (patch)
tree19c10c5b3fecf621a996ff93c0ac0b3e5f6238a2
parent03879ff0547b6d1b96c530075cd99f99b8c74a2b (diff)
parent8ee239e9216f12eae38deb079090b677086e9de1 (diff)
Merge branch 'jython-support'
Closes #8302
-rw-r--r--.gitignore3
-rw-r--r--Makefile1
-rw-r--r--youtube_dl/utils.py30
3 files changed, 28 insertions, 6 deletions
diff --git a/.gitignore b/.gitignore
index 0422adf44..26dbde73d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
*.pyc
*.pyo
+*.class
*~
*.DS_Store
wine-py2exe/
@@ -32,4 +33,4 @@ test/testdata
.tox
youtube-dl.zsh
.idea
-.idea/* \ No newline at end of file
+.idea/*
diff --git a/Makefile b/Makefile
index cb449b7e6..afd7f4032 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,7 @@ all: youtube-dl README.md CONTRIBUTING.md README.txt youtube-dl.1 youtube-dl.bas
clean:
rm -rf youtube-dl.1.temp.md youtube-dl.1 youtube-dl.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz youtube-dl.zsh youtube-dl.fish *.dump *.part *.info.json *.mp4 *.flv *.mp3 *.avi CONTRIBUTING.md.tmp youtube-dl youtube-dl.exe
find . -name "*.pyc" -delete
+ find . -name "*.class" -delete
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 210c47fce..91c9d8200 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -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: