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
This commit is contained in:
Jakub 2019-06-24 09:53:54 +02:00 committed by Pascal Vizeli
parent 69151b962a
commit 7bd77c6e99
4 changed files with 27 additions and 10 deletions

View File

@ -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" ]

13
entry.sh Executable file
View File

@ -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

View File

@ -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,

View File

@ -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