From 7bd77c6e99c96ef8b435976ef15f6efb1d05ef35 Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 24 Jun 2019 09:53:54 +0200 Subject: [PATCH] Append devlinks to serial dev_list (#1131) * append devlinks to dev_list * replace eudev-libs with eudev * include only devlinks starting with /dev/serial/by-id * add missing package, move udev init to entry.sh * fix mode on entry.sh * Update homeassistant.py * Update homeassistant.py --- Dockerfile | 5 +++++ entry.sh | 13 +++++++++++++ hassio/docker/homeassistant.py | 10 ---------- hassio/misc/hardware.py | 9 +++++++++ 4 files changed, 27 insertions(+), 10 deletions(-) create mode 100755 entry.sh diff --git a/Dockerfile b/Dockerfile index 846675b9b..a1124d652 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,7 @@ RUN apk add --no-cache \ socat \ glib \ libstdc++ \ + eudev \ eudev-libs # Install requirements @@ -25,4 +26,8 @@ RUN export MAKEFLAGS="-j$(nproc)" \ COPY . /usr/src/hassio RUN pip3 install --no-cache-dir -e /usr/src/hassio +# Initialize udev daemon, handle CMD +COPY entry.sh /bin/ +ENTRYPOINT ["/bin/entry.sh"] + CMD [ "python3", "-m", "hassio" ] diff --git a/entry.sh b/entry.sh new file mode 100755 index 000000000..b46d3d916 --- /dev/null +++ b/entry.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +udevd --daemon +udevadm trigger + +if CMD="$(command -v "$1")"; then + shift + exec "$CMD" "$@" +else + echo "Command not found: $1" + exit 1 +fi diff --git a/hassio/docker/homeassistant.py b/hassio/docker/homeassistant.py index 29c196628..f9367cfa2 100644 --- a/hassio/docker/homeassistant.py +++ b/hassio/docker/homeassistant.py @@ -40,14 +40,6 @@ class DockerHomeAssistant(DockerInterface): """Return timeout for Docker actions.""" return 60 - @property - def devices(self): - """Create list of special device to map into Docker.""" - devices = [] - for device in self.sys_hardware.serial_devices: - devices.append(f"{device}:{device}:rwm") - return devices or None - @property def ip_address(self) -> IPv4Address: """Return IP address of this container.""" @@ -73,7 +65,6 @@ class DockerHomeAssistant(DockerInterface): detach=True, privileged=True, init=True, - devices=self.devices, network_mode="host", environment={ "HASSIO": self.sys_docker.network.supervisor, @@ -106,7 +97,6 @@ class DockerHomeAssistant(DockerInterface): command, privileged=True, init=True, - devices=self.devices, detach=True, stdout=True, stderr=True, diff --git a/hassio/misc/hardware.py b/hassio/misc/hardware.py index 701526495..4748d4a1a 100644 --- a/hassio/misc/hardware.py +++ b/hassio/misc/hardware.py @@ -39,6 +39,15 @@ class Hardware: if "ID_VENDOR" in device or RE_TTY.search(device.device_node): dev_list.add(device.device_node) + # Add /dev/serial/by-id devlink for current device + if "DEVLINKS" in device and device["DEVLINKS"]: + devlinks = [ + symlink + for symlink in device["DEVLINKS"].split(" ") + if symlink.startswith("/dev/serial/by-id") + ] + dev_list.update(devlinks) + return dev_list @property