mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 21:56:42 +00:00
Merge branch 'openelec-next' of github.com:OpenELEC/OpenELEC.tv into openelec-pvr
This commit is contained in:
commit
446c88a9e9
@ -0,0 +1,25 @@
|
|||||||
|
Use a symlink between python and pythonVERSION
|
||||||
|
|
||||||
|
By default, a hard link is used between /usr/bin/python and
|
||||||
|
/usr/bin/pythonVERSION. Using hard links for such things is fairly
|
||||||
|
uncommon, so let's make a symbolic link instead.
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile.pre.in | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: Python-2.7.1/Makefile.pre.in
|
||||||
|
===================================================================
|
||||||
|
--- Python-2.7.1.orig/Makefile.pre.in
|
||||||
|
+++ Python-2.7.1/Makefile.pre.in
|
||||||
|
@@ -791,7 +791,7 @@
|
||||||
|
then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \
|
||||||
|
else true; \
|
||||||
|
fi
|
||||||
|
- (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON))
|
||||||
|
+ (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) $(PYTHON))
|
||||||
|
-rm -f $(DESTDIR)$(BINDIR)/python-config
|
||||||
|
(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config)
|
||||||
|
-test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC)
|
@ -0,0 +1,96 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User Gregory P. Smith <greg@mad-scientist.com>
|
||||||
|
# Date 1292338973 0
|
||||||
|
# Node ID 072ee3f743c21f3770ccf13ad48e10a18048063f
|
||||||
|
# Parent 8ccf58b0a5da776006d7fc98d9e6975c82265a78
|
||||||
|
Merged revisions 87233 via svnmerge from
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/branches/py3k
|
||||||
|
|
||||||
|
........
|
||||||
|
r87233 | gregory.p.smith | 2010-12-14 06:38:00 -0800 (Tue, 14 Dec 2010) | 4 lines
|
||||||
|
|
||||||
|
Issue #1731717: Fixed the problem where subprocess.wait() could cause an
|
||||||
|
OSError exception when The OS had been told to ignore SIGCLD in our process
|
||||||
|
or otherwise not wait for exiting child processes.
|
||||||
|
........
|
||||||
|
|
||||||
|
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
|
||||||
|
--- a/Lib/subprocess.py
|
||||||
|
+++ b/Lib/subprocess.py
|
||||||
|
@@ -1194,7 +1194,11 @@ class Popen(object):
|
||||||
|
os.close(errpipe_read)
|
||||||
|
|
||||||
|
if data != "":
|
||||||
|
- _eintr_retry_call(os.waitpid, self.pid, 0)
|
||||||
|
+ try:
|
||||||
|
+ _eintr_retry_call(os.waitpid, self.pid, 0)
|
||||||
|
+ except OSError as e:
|
||||||
|
+ if e.errno != errno.ECHILD:
|
||||||
|
+ raise
|
||||||
|
child_exception = pickle.loads(data)
|
||||||
|
for fd in (p2cwrite, c2pread, errread):
|
||||||
|
if fd is not None:
|
||||||
|
@@ -1240,7 +1244,15 @@ class Popen(object):
|
||||||
|
"""Wait for child process to terminate. Returns returncode
|
||||||
|
attribute."""
|
||||||
|
if self.returncode is None:
|
||||||
|
- pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
|
||||||
|
+ try:
|
||||||
|
+ pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
|
||||||
|
+ except OSError as e:
|
||||||
|
+ if e.errno != errno.ECHILD:
|
||||||
|
+ raise
|
||||||
|
+ # This happens if SIGCLD is set to be ignored or waiting
|
||||||
|
+ # for child processes has otherwise been disabled for our
|
||||||
|
+ # process. This child is dead, we can't get the status.
|
||||||
|
+ sts = 0
|
||||||
|
self._handle_exitstatus(sts)
|
||||||
|
return self.returncode
|
||||||
|
|
||||||
|
diff --git a/Lib/test/subprocessdata/sigchild_ignore.py b/Lib/test/subprocessdata/sigchild_ignore.py
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Lib/test/subprocessdata/sigchild_ignore.py
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+import signal, subprocess, sys
|
||||||
|
+# On Linux this causes os.waitpid to fail with OSError as the OS has already
|
||||||
|
+# reaped our child process. The wait() passing the OSError on to the caller
|
||||||
|
+# and causing us to exit with an error is what we are testing against.
|
||||||
|
+signal.signal(signal.SIGCLD, signal.SIG_IGN)
|
||||||
|
+subprocess.Popen([sys.executable, '-c', 'print("albatross")']).wait()
|
||||||
|
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
|
||||||
|
--- a/Lib/test/test_subprocess.py
|
||||||
|
+++ b/Lib/test/test_subprocess.py
|
||||||
|
@@ -778,6 +778,16 @@ class POSIXProcessTestCase(BaseTestCase)
|
||||||
|
self.assertStderrEqual(stderr, '')
|
||||||
|
self.assertEqual(p.wait(), -signal.SIGTERM)
|
||||||
|
|
||||||
|
+ def test_wait_when_sigchild_ignored(self):
|
||||||
|
+ # NOTE: sigchild_ignore.py may not be an effective test on all OSes.
|
||||||
|
+ sigchild_ignore = test_support.findfile("sigchild_ignore.py",
|
||||||
|
+ subdir="subprocessdata")
|
||||||
|
+ p = subprocess.Popen([sys.executable, sigchild_ignore],
|
||||||
|
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
+ stdout, stderr = p.communicate()
|
||||||
|
+ self.assertEqual(0, p.returncode, "sigchild_ignore.py exited"
|
||||||
|
+ " non-zero with this error:\n%s" % stderr)
|
||||||
|
+
|
||||||
|
|
||||||
|
@unittest.skipUnless(mswindows, "Windows specific tests")
|
||||||
|
class Win32ProcessTestCase(BaseTestCase):
|
||||||
|
diff --git a/Misc/NEWS b/Misc/NEWS
|
||||||
|
--- a/Misc/NEWS
|
||||||
|
+++ b/Misc/NEWS
|
||||||
|
@@ -34,6 +34,10 @@ Library
|
||||||
|
|
||||||
|
- Issue #10464: netrc now correctly handles lines with embedded '#' characters.
|
||||||
|
|
||||||
|
+- Issue #1731717: Fixed the problem where subprocess.wait() could cause an
|
||||||
|
+ OSError exception when The OS had been told to ignore SIGCLD in our process
|
||||||
|
+ or otherwise not wait for exiting child processes.
|
||||||
|
+
|
||||||
|
Extension Modules
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user