Package: python3-daemon
Version: 2.1.2-2
Severity: important
Tags: upstream patch
Dear Maintainer,
*** Reporter, please consider answering these questions, where appropriate ***
* What led up to the situation?
* What exactly did you do (or not do) that was effective (or
ineffective)?
* What was the outcome of this action?
* What outcome did you expect instead?
*** End of the template - remove these template lines ***
Packaging zfs-snap-manager. Uses DaemonRunner to fork into background.
Problem with openning stderr in DaemonRunner.__init__ . With Python3
buffering argument to open() should be set to 1 for line buffering.
This class fails to work with Python3, rendering this package mostly
unusable.
-- System Information:
Debian Release: buster/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.12-amd64-mag (SMP w/8 CPU cores)
Locale: LANG=en_NZ.UTF-8, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8),
LANGUAGE=en_NZ:en (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages python3-daemon depends on:
ii python3 3.7.1-3
ii python3-lockfile 1:0.12.2-2
ii python3-pkg-resources 40.6.2-1
python3-daemon recommends no packages.
python3-daemon suggests no packages.
-- no debconf information
Index: python-daemon-2.1.2/daemon/runner.py
===================================================================
--- python-daemon-2.1.2.orig/daemon/runner.py
+++ python-daemon-2.1.2/daemon/runner.py
@@ -37,6 +37,9 @@ from .daemon import (basestring, unicode
from .daemon import DaemonContext
from .daemon import _chain_exception_from_existing_exception_context
+# Sort out buffering constant for open()
+BUFFERING = (1 if sys.version_info.major >= 3 else 0)
+
class DaemonRunnerError(Exception):
""" Abstract base class for errors from DaemonRunner. """
@@ -110,7 +113,7 @@ class DaemonRunner:
self.daemon_context.stdin = open(app.stdin_path, 'rt')
self.daemon_context.stdout = open(app.stdout_path, 'w+t')
self.daemon_context.stderr = open(
- app.stderr_path, 'w+t', buffering=0)
+ app.stderr_path, 'w+t', buffering=BUFFERING)
self.pidfile = None
if app.pidfile_path is not None: