From 9c23b022b4bdbbb48374c3d2f27f53a44cbe81b2 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Sun, 6 Jul 2025 21:53:03 -0300 Subject: [PATCH 1/2] Fix addon devcontainer not being able to build addons --- addons/rootfs/usr/bin/devcontainer_bootstrap | 6 +++++- addons/rootfs/usr/bin/supervisor_run | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/rootfs/usr/bin/devcontainer_bootstrap b/addons/rootfs/usr/bin/devcontainer_bootstrap index 0e828fe..50a0fa6 100644 --- a/addons/rootfs/usr/bin/devcontainer_bootstrap +++ b/addons/rootfs/usr/bin/devcontainer_bootstrap @@ -4,4 +4,8 @@ set -e bash /usr/bin/supervisor_bootstrap -exit 0 \ No newline at end of file +# The add-on directory must be within supervisor's data directory +sudo mkdir -p /mnt/supervisor/addons/local +sudo mount --bind "${WORKSPACE_DIRECTORY?}" /mnt/supervisor/addons/local + +exit 0 diff --git a/addons/rootfs/usr/bin/supervisor_run b/addons/rootfs/usr/bin/supervisor_run index a652201..42da908 100755 --- a/addons/rootfs/usr/bin/supervisor_run +++ b/addons/rootfs/usr/bin/supervisor_run @@ -22,7 +22,6 @@ function run_supervisor() { -v /run/dbus:/run/dbus:ro \ -v /run/udev:/run/udev:ro \ -v /mnt/supervisor:/data:rw \ - -v "$WORKSPACE_DIRECTORY":/data/addons/local:rw \ -v /etc/machine-id:/etc/machine-id:ro \ -e SUPERVISOR_SHARE="/mnt/supervisor" \ -e SUPERVISOR_NAME=hassio_supervisor \ From fe17f2ea73866d6509ce8d4c7840559bc7f4d474 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 7 Jul 2025 15:18:44 -0300 Subject: [PATCH 2/2] Refactor workspaceMount in devcontainer.json --- addons/devcontainer.json | 2 ++ addons/rootfs/usr/bin/devcontainer_bootstrap | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/devcontainer.json b/addons/devcontainer.json index 787a1f5..a09af40 100644 --- a/addons/devcontainer.json +++ b/addons/devcontainer.json @@ -4,6 +4,8 @@ "appPort": ["7123:8123", "7357:4357"], "postStartCommand": "bash devcontainer_bootstrap", "runArgs": ["-e", "GIT_EDITOR=code --wait", "--privileged"], + "workspaceFolder": "/mnt/supervisor/addons/local/${localWorkspaceFolderBasename}", + "workspaceMount": "source=${localWorkspaceFolder},target=${containerWorkspaceFolder},type=bind,consistency=cached", "containerEnv": { "WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}" }, diff --git a/addons/rootfs/usr/bin/devcontainer_bootstrap b/addons/rootfs/usr/bin/devcontainer_bootstrap index 50a0fa6..63af31a 100644 --- a/addons/rootfs/usr/bin/devcontainer_bootstrap +++ b/addons/rootfs/usr/bin/devcontainer_bootstrap @@ -4,8 +4,12 @@ set -e bash /usr/bin/supervisor_bootstrap -# The add-on directory must be within supervisor's data directory -sudo mkdir -p /mnt/supervisor/addons/local -sudo mount --bind "${WORKSPACE_DIRECTORY?}" /mnt/supervisor/addons/local +workspace_mount="/mnt/supervisor/addons/local/$(basename "${WORKSPACE_DIRECTORY:?}")" +if ! mountpoint -q "${workspace_mount}"; then + echo "WARNING: Mounting ${WORKSPACE_DIRECTORY} to ${workspace_mount}." >&2 + echo "To avoid this warning, see https://github.com/home-assistant/devcontainer/pull/135." >&2 + sudo mkdir -p "${workspace_mount}" + sudo mount --bind "${WORKSPACE_DIRECTORY}" "${workspace_mount}" +fi exit 0