Hello all,
in Manjaro Linux, onedrived gives
onedrived start --debug
Traceback (most recent call last):
File "/usr/bin/onedrived", line 11, in
load_entry_point('onedrived', 'console_scripts', 'onedrived')()
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
return ep.load()
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2443, in load
return self.resolve()
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2449, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/home/gerd/Downloads/onedrived-dev/onedrived/od_main.py", line 179, in
def main():
File "/usr/lib/python3.8/site-packages/click/decorators.py", line 115, in decorator
cmd = _make_command(f, name, attrs, cls)
File "/usr/lib/python3.8/site-packages/click/decorators.py", line 88, in _make_command
return cls(name=name or f.__name__.lower().replace('_', '-'),
File "/usr/lib/python3.8/site-packages/daemonocle/cli.py", line 32, in __init__
context_settings = {'obj': self.daemon_class(**self.daemon_params)}
File "/usr/lib/python3.8/site-packages/daemonocle/core.py", line 37, in __init__
self.detach = detach & self._is_detach_necessary()
File "/usr/lib/python3.8/site-packages/daemonocle/core.py", line 258, in _is_detach_necessary
if cls._is_socket(sys.stdin):
File "/usr/lib/python3.8/site-packages/daemonocle/core.py", line 224, in _is_socket
sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW)
File "/usr/lib/python3.8/socket.py", line 544, in fromfd
return socket(family, type, proto, nfd)
File "/usr/lib/python3.8/socket.py", line 231, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
OSError: [Errno 88] Socket operation on non-socket
when trying to start it.
And here is the resolution: The file /usr/lib/python3.8/site-packages/daemonocle/core.py has to be edited according to the fix described here: https://pagure.io/python-daemon/pull-request/35#request_diff
Line 224 of /usr/lib/python3.8/site-packages/daemonocle/core.py has to be moved in the subsequent try... block for Python 3.8 support like below:
#to be moved into the try block below for Python 3.8 support:
#sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW)
try:
# This will raise a socket.error if it's not a socket
sock =socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW)
sock.getsockopt(socket.SOL_SOCKET, socket.SO_TYPE)
except socket.error as ex:
if ex.args[0] != errno.ENOTSOCK:
# It must be a socket
return True
else:
# If an exception wasn't raised, it's a socket
return True
Hello all,
in Manjaro Linux, onedrived gives
onedrived start --debug Traceback (most recent call last): File "/usr/bin/onedrived", line 11, in load_entry_point('onedrived', 'console_scripts', 'onedrived')() File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point return ep.load() File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2443, in load return self.resolve() File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2449, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/home/gerd/Downloads/onedrived-dev/onedrived/od_main.py", line 179, in def main(): File "/usr/lib/python3.8/site-packages/click/decorators.py", line 115, in decorator cmd = _make_command(f, name, attrs, cls) File "/usr/lib/python3.8/site-packages/click/decorators.py", line 88, in _make_command return cls(name=name or f.__name__.lower().replace('_', '-'), File "/usr/lib/python3.8/site-packages/daemonocle/cli.py", line 32, in __init__ context_settings = {'obj': self.daemon_class(**self.daemon_params)} File "/usr/lib/python3.8/site-packages/daemonocle/core.py", line 37, in __init__ self.detach = detach & self._is_detach_necessary() File "/usr/lib/python3.8/site-packages/daemonocle/core.py", line 258, in _is_detach_necessary if cls._is_socket(sys.stdin): File "/usr/lib/python3.8/site-packages/daemonocle/core.py", line 224, in _is_socket sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW) File "/usr/lib/python3.8/socket.py", line 544, in fromfd return socket(family, type, proto, nfd) File "/usr/lib/python3.8/socket.py", line 231, in __init__ _socket.socket.__init__(self, family, type, proto, fileno) OSError: [Errno 88] Socket operation on non-socketwhen trying to start it.
And here is the resolution: The file /usr/lib/python3.8/site-packages/daemonocle/core.py has to be edited according to the fix described here: https://pagure.io/python-daemon/pull-request/35#request_diff
Line 224 of /usr/lib/python3.8/site-packages/daemonocle/core.py has to be moved in the subsequent try... block for Python 3.8 support like below:
#to be moved into the try block below for Python 3.8 support: #sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW) try: # This will raise a socket.error if it's not a socket sock =socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW) sock.getsockopt(socket.SOL_SOCKET, socket.SO_TYPE) except socket.error as ex: if ex.args[0] != errno.ENOTSOCK: # It must be a socket return True else: # If an exception wasn't raised, it's a socket return True