From 45c62716cb59d63403bc26296f3742af2b305fbe Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 21 Apr 2020 14:37:25 +0200 Subject: [PATCH] New way to install/run supervisor + plugins (#620) * Use new layout for CLI/Supervisor Signed-off-by: Pascal Vizeli * Fix install script * Fix config * Add docs * Fix shellcheck * Fix issue * rename package * Fix build * Fix apparmor --- Documentation/development.md | 25 +++ buildroot-external/Config.in | 2 +- buildroot-external/board/asus/tinker/meta | 2 + .../board/hardkernel/odroid-c2/meta | 2 + .../board/hardkernel/odroid-n2/meta | 2 + .../board/hardkernel/odroid-xu4/meta | 2 + buildroot-external/board/intel/nuc/meta | 2 + buildroot-external/board/intel/ova/meta | 2 + buildroot-external/board/raspberrypi/rpi/meta | 2 + .../board/raspberrypi/rpi0-w/meta | 2 + .../board/raspberrypi/rpi2/meta | 2 + .../board/raspberrypi/rpi3-64/meta | 2 + .../board/raspberrypi/rpi3/meta | 2 + .../board/raspberrypi/rpi4-64/meta | 2 + .../board/raspberrypi/rpi4/meta | 2 + .../configs/intel_nuc_defconfig | 13 +- .../configs/odroid_c2_defconfig | 13 +- .../configs/odroid_n2_defconfig | 13 +- .../configs/odroid_xu4_defconfig | 13 +- buildroot-external/configs/ova_defconfig | 13 +- buildroot-external/configs/rpi0_w_defconfig | 13 +- buildroot-external/configs/rpi2_defconfig | 13 +- buildroot-external/configs/rpi3_64_defconfig | 13 +- buildroot-external/configs/rpi3_defconfig | 13 +- buildroot-external/configs/rpi4_64_defconfig | 13 +- buildroot-external/configs/rpi4_defconfig | 13 +- buildroot-external/configs/rpi_defconfig | 13 +- buildroot-external/configs/tinker_defconfig | 13 +- buildroot-external/package/hassio/Config.in | 16 ++ .../{hassos => hassio}/builder/Dockerfile | 3 +- .../package/hassio/builder/hostapp.sh | 88 +++++++++++ buildroot-external/package/hassio/hassio.mk | 25 +++ buildroot-external/package/hassos/Config.in | 66 -------- .../package/hassos/builder/hostapp.sh | 146 ------------------ buildroot-external/package/hassos/hassos.mk | 35 ----- buildroot-external/rootfs-overlay/usr/bin/ha | 7 + .../usr/libexec/hassos-apparmor | 11 +- .../rootfs-overlay/usr/sbin/hassos-cli | 25 +-- .../rootfs-overlay/usr/sbin/hassos-supervisor | 42 +++-- buildroot-external/scripts/post-build.sh | 2 + 40 files changed, 244 insertions(+), 444 deletions(-) create mode 100644 buildroot-external/package/hassio/Config.in rename buildroot-external/package/{hassos => hassio}/builder/Dockerfile (91%) create mode 100755 buildroot-external/package/hassio/builder/hostapp.sh create mode 100644 buildroot-external/package/hassio/hassio.mk delete mode 100644 buildroot-external/package/hassos/Config.in delete mode 100755 buildroot-external/package/hassos/builder/hostapp.sh delete mode 100644 buildroot-external/package/hassos/hassos.mk create mode 100755 buildroot-external/rootfs-overlay/usr/bin/ha diff --git a/Documentation/development.md b/Documentation/development.md index e790d42f4..818d09fbf 100644 --- a/Documentation/development.md +++ b/Documentation/development.md @@ -27,3 +27,28 @@ We support mainly uboot but for uefi system we can also use barebox. In future w `DISK_SIZE`: Default 2. That is the size of end image in GB. +## Supervisor + +`SUPERVISOR_MACHINE`: +- intel-nuc +- odroid-c2 +- odroid-n2 +- odroid-xu +- qemuarm +- qemuarm-64 +- qemux86 +- qemux86-64 +- raspberrypi +- raspberrypi2 +- raspberrypi3 +- raspberrypi4 +- raspberrypi3-64 +- raspberrypi4-64 +- tinker + +`SUPERVISOR_ARCH` +- amd64 +- i386 +- armhf +- armv7 +- aarch64 diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index e57911006..55ede9179 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -1,4 +1,4 @@ -source "$BR2_EXTERNAL_HASSOS_PATH/package/hassos/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/hassio/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/libapparmor/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-bcm43xx/Config.in" diff --git a/buildroot-external/board/asus/tinker/meta b/buildroot-external/board/asus/tinker/meta index 1dd6137c8..469c02439 100644 --- a/buildroot-external/board/asus/tinker/meta +++ b/buildroot-external/board/asus/tinker/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=hyprid BOOT_SPL=true BOOT_ENV_SIZE=0x8000 +SUPERVISOR_MACHINE=tinker +SUPERVISOR_ARCH=armv7 diff --git a/buildroot-external/board/hardkernel/odroid-c2/meta b/buildroot-external/board/hardkernel/odroid-c2/meta index 2648f6f2c..13c9d5a47 100644 --- a/buildroot-external/board/hardkernel/odroid-c2/meta +++ b/buildroot-external/board/hardkernel/odroid-c2/meta @@ -6,3 +6,5 @@ KERNEL_FILE=Image BOOT_SYS=mbr BOOT_SPL=true BOOT_ENV_SIZE=0x2000 +SUPERVISOR_MACHINE=odroid-c2 +SUPERVISOR_ARCH=aarch64 diff --git a/buildroot-external/board/hardkernel/odroid-n2/meta b/buildroot-external/board/hardkernel/odroid-n2/meta index 92b657865..2a5cd960d 100644 --- a/buildroot-external/board/hardkernel/odroid-n2/meta +++ b/buildroot-external/board/hardkernel/odroid-n2/meta @@ -6,3 +6,5 @@ KERNEL_FILE=Image BOOT_SYS=mbr BOOT_SPL=true BOOT_ENV_SIZE=0x2000 +SUPERVISOR_MACHINE=odroid-n2 +SUPERVISOR_ARCH=aarch64 diff --git a/buildroot-external/board/hardkernel/odroid-xu4/meta b/buildroot-external/board/hardkernel/odroid-xu4/meta index 18471a3ac..4885ec078 100644 --- a/buildroot-external/board/hardkernel/odroid-xu4/meta +++ b/buildroot-external/board/hardkernel/odroid-xu4/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=mbr BOOT_SPL=true BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=odroid-xu +SUPERVISOR_ARCH=armv7 diff --git a/buildroot-external/board/intel/nuc/meta b/buildroot-external/board/intel/nuc/meta index a1aa8d2d4..330e8ed3a 100644 --- a/buildroot-external/board/intel/nuc/meta +++ b/buildroot-external/board/intel/nuc/meta @@ -6,3 +6,5 @@ KERNEL_FILE=bzImage BOOT_SYS=efi BOOT_SPL=false DISK_SIZE=6 +SUPERVISOR_MACHINE=intel-nuc +SUPERVISOR_ARCH=amd64 diff --git a/buildroot-external/board/intel/ova/meta b/buildroot-external/board/intel/ova/meta index 68a2e1baf..169e2e3a1 100644 --- a/buildroot-external/board/intel/ova/meta +++ b/buildroot-external/board/intel/ova/meta @@ -6,3 +6,5 @@ KERNEL_FILE=bzImage BOOT_SYS=efi BOOT_SPL=false DISK_SIZE=6 +SUPERVISOR_MACHINE=qemux86-64 +SUPERVISOR_ARCH=amd64 diff --git a/buildroot-external/board/raspberrypi/rpi/meta b/buildroot-external/board/raspberrypi/rpi/meta index 334bfb441..cdddc887f 100644 --- a/buildroot-external/board/raspberrypi/rpi/meta +++ b/buildroot-external/board/raspberrypi/rpi/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi +SUPERVISOR_ARCH=armhf diff --git a/buildroot-external/board/raspberrypi/rpi0-w/meta b/buildroot-external/board/raspberrypi/rpi0-w/meta index bf63c857c..b7dd5bb00 100644 --- a/buildroot-external/board/raspberrypi/rpi0-w/meta +++ b/buildroot-external/board/raspberrypi/rpi0-w/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi +SUPERVISOR_ARCH=armhf diff --git a/buildroot-external/board/raspberrypi/rpi2/meta b/buildroot-external/board/raspberrypi/rpi2/meta index a33993f0a..c5e4f9cb5 100644 --- a/buildroot-external/board/raspberrypi/rpi2/meta +++ b/buildroot-external/board/raspberrypi/rpi2/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi2 +SUPERVISOR_ARCH=armhf diff --git a/buildroot-external/board/raspberrypi/rpi3-64/meta b/buildroot-external/board/raspberrypi/rpi3-64/meta index 9f0a0890e..f4a761086 100644 --- a/buildroot-external/board/raspberrypi/rpi3-64/meta +++ b/buildroot-external/board/raspberrypi/rpi3-64/meta @@ -6,3 +6,5 @@ KERNEL_FILE=Image BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi3-64 +SUPERVISOR_ARCH=aarch64 diff --git a/buildroot-external/board/raspberrypi/rpi3/meta b/buildroot-external/board/raspberrypi/rpi3/meta index b49955963..18bcf8fb0 100644 --- a/buildroot-external/board/raspberrypi/rpi3/meta +++ b/buildroot-external/board/raspberrypi/rpi3/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi3 +SUPERVISOR_ARCH=armv7 diff --git a/buildroot-external/board/raspberrypi/rpi4-64/meta b/buildroot-external/board/raspberrypi/rpi4-64/meta index 6a5b92cf7..b721dc96e 100644 --- a/buildroot-external/board/raspberrypi/rpi4-64/meta +++ b/buildroot-external/board/raspberrypi/rpi4-64/meta @@ -6,3 +6,5 @@ KERNEL_FILE=Image BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi4-64 +SUPERVISOR_ARCH=aarch64 diff --git a/buildroot-external/board/raspberrypi/rpi4/meta b/buildroot-external/board/raspberrypi/rpi4/meta index bdd2dc3b3..579ac1162 100644 --- a/buildroot-external/board/raspberrypi/rpi4/meta +++ b/buildroot-external/board/raspberrypi/rpi4/meta @@ -6,3 +6,5 @@ KERNEL_FILE=zImage BOOT_SYS=hyprid BOOT_SPL=false BOOT_ENV_SIZE=0x4000 +SUPERVISOR_MACHINE=raspberrypi4 +SUPERVISOR_ARCH=armv7 diff --git a/buildroot-external/configs/intel_nuc_defconfig b/buildroot-external/configs/intel_nuc_defconfig index 9581ec628..3e7dfa049 100644 --- a/buildroot-external/configs/intel_nuc_defconfig +++ b/buildroot-external/configs/intel_nuc_defconfig @@ -99,15 +99,6 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/amd64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/intel-nuc-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/amd64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="amd64" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/odroid_c2_defconfig b/buildroot-external/configs/odroid_c2_defconfig index f49250a54..44d4a288b 100644 --- a/buildroot-external/configs/odroid_c2_defconfig +++ b/buildroot-external/configs/odroid_c2_defconfig @@ -93,17 +93,8 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/aarch64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/odroid-c2-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/aarch64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="aarch64" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_HARDKERNEL_BOOT=y BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_C2=y diff --git a/buildroot-external/configs/odroid_n2_defconfig b/buildroot-external/configs/odroid_n2_defconfig index 771e8001c..83c0ae53d 100644 --- a/buildroot-external/configs/odroid_n2_defconfig +++ b/buildroot-external/configs/odroid_n2_defconfig @@ -93,17 +93,8 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/aarch64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/odroid-n2-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/aarch64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="aarch64" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_HARDKERNEL_BOOT=y BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_N2=y diff --git a/buildroot-external/configs/odroid_xu4_defconfig b/buildroot-external/configs/odroid_xu4_defconfig index fbcd20643..1108bb831 100644 --- a/buildroot-external/configs/odroid_xu4_defconfig +++ b/buildroot-external/configs/odroid_xu4_defconfig @@ -98,17 +98,8 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armv7-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/odroid-xu-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armv7-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armv7" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_HARDKERNEL_BOOT=y BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_XU4=y diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 50fa11983..1bc970886 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -90,15 +90,6 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/amd64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/amd64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="amd64" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi0_w_defconfig b/buildroot-external/configs/rpi0_w_defconfig index e95c4d7e5..2ad1d34b8 100644 --- a/buildroot-external/configs/rpi0_w_defconfig +++ b/buildroot-external/configs/rpi0_w_defconfig @@ -96,16 +96,7 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armhf" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_BLUETOOTH_BCM43XX=y diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index 08c94edb3..7951ef084 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -95,15 +95,6 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armv7-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi2-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armv7-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armhf" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi3_64_defconfig b/buildroot-external/configs/rpi3_64_defconfig index 556605ffd..6eaf04d00 100644 --- a/buildroot-external/configs/rpi3_64_defconfig +++ b/buildroot-external/configs/rpi3_64_defconfig @@ -96,16 +96,7 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/aarch64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-64-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/aarch64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="aarch64" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_BLUETOOTH_BCM43XX=y diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig index d71ab00ac..2f49b8e13 100644 --- a/buildroot-external/configs/rpi3_defconfig +++ b/buildroot-external/configs/rpi3_defconfig @@ -96,16 +96,7 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armv7-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armv7-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armv7" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_BLUETOOTH_BCM43XX=y diff --git a/buildroot-external/configs/rpi4_64_defconfig b/buildroot-external/configs/rpi4_64_defconfig index 3761107cb..253e45abc 100644 --- a/buildroot-external/configs/rpi4_64_defconfig +++ b/buildroot-external/configs/rpi4_64_defconfig @@ -97,16 +97,7 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/aarch64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi4-64-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/aarch64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="aarch64" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_BLUETOOTH_BCM43XX=y diff --git a/buildroot-external/configs/rpi4_defconfig b/buildroot-external/configs/rpi4_defconfig index d55a2a617..5d684a7e5 100644 --- a/buildroot-external/configs/rpi4_defconfig +++ b/buildroot-external/configs/rpi4_defconfig @@ -97,16 +97,7 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armv7-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi4-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armv7-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armv7" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_BLUETOOTH_BCM43XX=y diff --git a/buildroot-external/configs/rpi_defconfig b/buildroot-external/configs/rpi_defconfig index 03b496387..19f61874a 100644 --- a/buildroot-external/configs/rpi_defconfig +++ b/buildroot-external/configs/rpi_defconfig @@ -95,15 +95,6 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armhf" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/tinker_defconfig b/buildroot-external/configs/tinker_defconfig index b1611475e..243202211 100644 --- a/buildroot-external/configs/tinker_defconfig +++ b/buildroot-external/configs/tinker_defconfig @@ -100,16 +100,7 @@ BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armv7-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="209" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/tinker-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="https://version.home-assistant.io/apparmor.txt" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armv7-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="21" -BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host supervisor:172.30.32.2" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSIO=y +BR2_PACKAGE_HASSIO_ARCH="armv7" BR2_PACKAGE_APPARMOR=y BR2_PACKAGE_BLUETOOTH_RTL8723=y diff --git a/buildroot-external/package/hassio/Config.in b/buildroot-external/package/hassio/Config.in new file mode 100644 index 000000000..798c3fc73 --- /dev/null +++ b/buildroot-external/package/hassio/Config.in @@ -0,0 +1,16 @@ +menuconfig BR2_PACKAGE_HASSIO + bool "Supervisor App" + help + This is the Application layer they build the + data partition with configurations. + + https://github.com/home-assistant/supervisor + +if BR2_PACKAGE_HASSIO + +config BR2_PACKAGE_HASSIO_ARCH + string "Supervisor Arch" + help + Supervisor architecture which should be pull. + +endif diff --git a/buildroot-external/package/hassos/builder/Dockerfile b/buildroot-external/package/hassio/builder/Dockerfile similarity index 91% rename from buildroot-external/package/hassos/builder/Dockerfile rename to buildroot-external/package/hassio/builder/Dockerfile index bc6ac64e8..8a131f763 100644 --- a/buildroot-external/package/hassos/builder/Dockerfile +++ b/buildroot-external/package/hassio/builder/Dockerfile @@ -8,12 +8,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ apt-transport-https \ ca-certificates \ curl \ + jq \ gpg-agent \ software-properties-common \ && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \ && add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ && apt-get update && apt-get install -y --no-install-recommends \ - docker-ce=5:19.03.5~3-0~ubuntu-bionic \ + docker-ce docker-ce-cli containerd.io \ && rm -rf /var/lib/apt/lists/* COPY hostapp.sh /usr/bin/ diff --git a/buildroot-external/package/hassio/builder/hostapp.sh b/buildroot-external/package/hassio/builder/hostapp.sh new file mode 100755 index 000000000..6ec01d182 --- /dev/null +++ b/buildroot-external/package/hassio/builder/hostapp.sh @@ -0,0 +1,88 @@ +#!/bin/bash +set -e + +ARCH= +DATA_IMG="/export/data.ext4" +VERSION_URL="https://version.home-assistant.io/stable.json" +APPARMOR_URL="https://version.home-assistant.io/apparmor.txt" + +# Parse +while [[ $# -gt 0 ]]; do + key=$1 + case $key in + --arch) + ARCH=$2 + shift + ;; + *) + exit 1 + ;; + esac + shift +done + +SUPERVISOR="homeassistant/${ARCH}-hassio-supervisor" +DNS="homeassistant/${ARCH}-hassio-dns" +AUDIO="homeassistant/${ARCH}-hassio-audio" +CLI="homeassistant/${ARCH}-hassio-cli" +MULTICAST="homeassistant/${ARCH}-hassio-multicast" + +SUPERVISOR_VERSION=$(curl -s ${VERSION_URL} | jq -e -r '.supervisor') +DNS_VERSION=$(curl -s ${VERSION_URL} | jq -e -r '.dns') +CLI_VERSION=$(curl -s ${VERSION_URL} | jq -e -r '.cli') +AUDIO_VERSION=$(curl -s ${VERSION_URL} | jq -e -r '.audio') +MULTICAST_VERSION=$(curl -s ${VERSION_URL} | jq -e -r '.multicast') + +# Make image +dd if=/dev/zero of=${DATA_IMG} bs=1G count=1 +mkfs.ext4 -L "hassos-data" -E lazy_itable_init=0,lazy_journal_init=0 ${DATA_IMG} + +# Setup local user +if [ "${BUILDER_UID:0}" -ne 0 ] && [ "${BUILDER_GID:0}" -ne 0 ]; then + groupadd -g "${BUILDER_GID}" builder + useradd -m -u "${BUILDER_UID}" -g "${BUILDER_GID}" -G docker builder + chown builder:builder ${DATA_IMG} +fi + +# Mount / init file structs +mkdir -p /mnt/data/ +mount -o loop ${DATA_IMG} /mnt/data +mkdir -p /mnt/data/docker + +# Run dockerd +dockerd -s overlay2 -g /mnt/data/docker & +DOCKER_PID=$! + +DOCKER_COUNT=0 +until docker info >/dev/null 2>&1; do + if [ ${DOCKER_COUNT} -gt 30 ]; then + exit 1 + fi + + sleep 1 + DOCKER_COUNT=$((DOCKER_COUNT + 1)) +done + +# Install supervisor +docker pull "${SUPERVISOR}:${SUPERVISOR_VERSION}" +docker tag "${SUPERVISOR}:${SUPERVISOR_VERSION}" "${SUPERVISOR}:latest" + +# Install Plugins +docker pull "${CLI}:${CLI_VERSION}" +docker pull "${DNS}:${DNS_VERSION}" +docker pull "${AUDIO}:${AUDIO_VERSION}" +docker pull "${MULTICAST}:${MULTICAST_VERSION}" + +# Setup AppArmor +mkdir -p "/mnt/data/supervisor/apparmor" +curl -sL -o "/mnt/data/supervisor/apparmor/hassio-supervisor" "${APPARMOR_URL}" + +# Finish +kill $DOCKER_PID && wait $DOCKER_PID + +# Unmount resource +if ! umount /mnt/data; then + umount -f /mnt/data || echo "umount force fails!" +fi + +exit 0 diff --git a/buildroot-external/package/hassio/hassio.mk b/buildroot-external/package/hassio/hassio.mk new file mode 100644 index 000000000..3f5f8ae35 --- /dev/null +++ b/buildroot-external/package/hassio/hassio.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# HassOS +# +################################################################################ + +HASSIO_VERSION = 1.0.0 +HASSIO_LICENSE = Apache License 2.0 +HASSIO_LICENSE_FILES = $(BR2_EXTERNAL_HASSOS_PATH)/../LICENSE +HASSIO_SITE = $(BR2_EXTERNAL_HASSOS_PATH)/package/hassio +HASSIO_SITE_METHOD = local + +define HASSIO_BUILD_CMDS + docker build --tag hassos-hostapps $(@D)/builder +endef + +define HASSIO_INSTALL_TARGET_CMDS + docker run --rm --privileged \ + -e BUILDER_UID="$(shell id -u)" -e BUILDER_GID="$(shell id -g)" \ + -v $(BINARIES_DIR):/export \ + hassos-hostapps \ + --arch $(BR2_PACKAGE_HASSIO_ARCH) +endef + +$(eval $(generic-package)) diff --git a/buildroot-external/package/hassos/Config.in b/buildroot-external/package/hassos/Config.in deleted file mode 100644 index 098988066..000000000 --- a/buildroot-external/package/hassos/Config.in +++ /dev/null @@ -1,66 +0,0 @@ -menuconfig BR2_PACKAGE_HASSOS - bool "hassos-app" - help - This is the Application layer they build the - data partition with configurations. - - https://github.com/home-assistant/hassos - -if BR2_PACKAGE_HASSOS - -config BR2_PACKAGE_HASSOS_SUPERVISOR - string "supervisor docker image" - help - Name of supervisor docker image they will be build in. - -config BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION - string "supervisor docker image version" - help - Version of supervisor docker image they will be build in. - -config BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS - string "supervisor docker arguments" - help - Extended docker arguments to run the supervisor. - -config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE - string "AppArmor supervisor profile" - help - AppArmor profile for supervisor. - -config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL - string "AppArmor supervisor profile URL" - help - AppArmor profile for supervisor url. - -config BR2_PACKAGE_HASSOS_CLI - string "cli docker image" - help - Name of cli docker image they will be build in. - -config BR2_PACKAGE_HASSOS_CLI_VERSION - string "cli docker image version" - help - Version of cli docker image they will be build in. - -config BR2_PACKAGE_HASSOS_CLI_ARGS - string "cli docker arguments" - help - Extended docker arguments to run the cli. - -config BR2_PACKAGE_HASSOS_CLI_PROFILE - string "AppArmor cli profile" - help - AppArmor profile for cli. - -config BR2_PACKAGE_HASSOS_CLI_PROFILE_URL - string "AppArmor cli profile url" - help - AppArmor profile for cli url. - -config BR2_PACKAGE_HASSOS_APPARMOR_DIR - string "AppArmor profiles folder" - help - AppArmor profiles folder for HassOS. - -endif diff --git a/buildroot-external/package/hassos/builder/hostapp.sh b/buildroot-external/package/hassos/builder/hostapp.sh deleted file mode 100755 index 6424ab1bf..000000000 --- a/buildroot-external/package/hassos/builder/hostapp.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/bash -set -e - -SUPERVISOR="" -SUPERVISOR_VERSION="" -SUPERVISOR_ARGS="" -SUPERVISOR_PROFILE="" -SUPERVISOR_PROFILE_URL="" -CLI="" -CLI_VERSION="" -CLI_ARGS="" -CLI_PROFILE="" -CLI_PROFILE_URL="" -APPARMOR="" -DATA_IMG="/export/data.ext4" - -# Parse -while [[ $# -gt 0 ]]; do - key=$1 - case $key in - --supervisor) - SUPERVISOR=$2 - shift - ;; - --supervisor-version) - SUPERVISOR_VERSION=$2 - shift - ;; - --supervisor-args) - SUPERVISOR_ARGS=$2 - shift - ;; - --supervisor-profile) - SUPERVISOR_PROFILE=$2 - shift - ;; - --supervisor-profile-url) - SUPERVISOR_PROFILE_URL=$2 - shift - ;; - --cli) - CLI=$2 - shift - ;; - --cli-version) - CLI_VERSION=$2 - shift - ;; - --cli-args) - CLI_ARGS=$2 - shift - ;; - --cli-profile) - CLI_PROFILE=$2 - shift - ;; - --cli-profile-url) - CLI_PROFILE_URL=$2 - shift - ;; - --apparmor) - APPARMOR=$2 - shift - ;; - *) - exit 1 - ;; - esac - shift -done - -# Make image -dd if=/dev/zero of=${DATA_IMG} bs=1G count=1 -mkfs.ext4 -L "hassos-data" -E lazy_itable_init=0,lazy_journal_init=0 ${DATA_IMG} - -# Setup local user -if [ "${BUILDER_UID:0}" -ne 0 ] && [ "${BUILDER_GID:0}" -ne 0 ]; then - groupadd -g "${BUILDER_GID}" builder - useradd -m -u "${BUILDER_UID}" -g "${BUILDER_GID}" -G docker builder - chown builder:builder ${DATA_IMG} -fi - -# Mount / init file structs -mkdir -p /mnt/data/ -mount -o loop ${DATA_IMG} /mnt/data -mkdir -p /mnt/data/docker - -# Run dockerd -dockerd -s overlay2 -g /mnt/data/docker & -DOCKER_PID=$! - -DOCKER_COUNT=0 -until docker info >/dev/null 2>&1; do - if [ ${DOCKER_COUNT} -gt 30 ]; then - exit 1 - fi - - sleep 1 - DOCKER_COUNT=$((DOCKER_COUNT + 1)) -done - -# Install supervisor -docker pull "${SUPERVISOR}:${SUPERVISOR_VERSION}" -docker tag "${SUPERVISOR}:${SUPERVISOR_VERSION}" "${SUPERVISOR}:latest" - -# Install cli -docker pull "${CLI}:${CLI_VERSION}" -docker tag "${CLI}:${CLI_VERSION}" "${CLI}:latest" - -# Write config -cat > /mnt/data/hassos.json <<- EOF -{ - "supervisor": "${SUPERVISOR}", - "supervisor_args": "${SUPERVISOR_ARGS}", - "supervisor_apparmor": "${SUPERVISOR_PROFILE}", - "cli": "${CLI}", - "cli_args": "${CLI_ARGS}", - "cli_apparmor": "${CLI_PROFILE}", - "apparmor": "${APPARMOR}" -} -EOF - -# Setup AppArmor -if [ -n "${APPARMOR}" ]; then - mkdir -p "/mnt/data/${APPARMOR}" - - # Supervisor - if [ -n "${SUPERVISOR_PROFILE_URL}" ]; then - curl -sL -o "/mnt/data/${APPARMOR}/${SUPERVISOR_PROFILE}" "${SUPERVISOR_PROFILE_URL}" - fi - - # CLI - if [ -n "${CLI_PROFILE_URL}" ]; then - curl -sL -o "/mnt/data/${APPARMOR}/${CLI_PROFILE}" "${CLI_PROFILE_URL}" - fi -fi - -# Finish -kill $DOCKER_PID && wait $DOCKER_PID - -# Unmount resource -if ! umount /mnt/data; then - umount -f /mnt/data || echo "umount force fails!" -fi - -exit 0 diff --git a/buildroot-external/package/hassos/hassos.mk b/buildroot-external/package/hassos/hassos.mk deleted file mode 100644 index 78984892c..000000000 --- a/buildroot-external/package/hassos/hassos.mk +++ /dev/null @@ -1,35 +0,0 @@ -################################################################################ -# -# HassOS -# -################################################################################ - -HASSOS_VERSION = 1.0.0 -HASSOS_LICENSE = Apache License 2.0 -HASSOS_LICENSE_FILES = $(BR2_EXTERNAL_HASSOS_PATH)/../LICENSE -HASSOS_SITE = $(BR2_EXTERNAL_HASSOS_PATH)/package/hassos -HASSOS_SITE_METHOD = local - -define HASSOS_BUILD_CMDS - docker build --tag hassos-hostapps $(@D)/builder -endef - -define HASSOS_INSTALL_TARGET_CMDS - docker run --rm --privileged \ - -e BUILDER_UID="$(shell id -u)" -e BUILDER_GID="$(shell id -g)" \ - -v $(BINARIES_DIR):/export \ - hassos-hostapps \ - --supervisor $(BR2_PACKAGE_HASSOS_SUPERVISOR) \ - --supervisor-version $(BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION) \ - --supervisor-args $(BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS) \ - --supervisor-profile $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE) \ - --supervisor-profile-url $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL) \ - --cli $(BR2_PACKAGE_HASSOS_CLI) \ - --cli-version $(BR2_PACKAGE_HASSOS_CLI_VERSION) \ - --cli-args $(BR2_PACKAGE_HASSOS_CLI_ARGS) \ - --cli-profile $(BR2_PACKAGE_HASSOS_CLI_PROFILE) \ - --cli-profile-url $(BR2_PACKAGE_HASSOS_CLI_PROFILE_URL) \ - --apparmor $(BR2_PACKAGE_HASSOS_APPARMOR_DIR) -endef - -$(eval $(generic-package)) diff --git a/buildroot-external/rootfs-overlay/usr/bin/ha b/buildroot-external/rootfs-overlay/usr/bin/ha new file mode 100755 index 000000000..6a371db0c --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/bin/ha @@ -0,0 +1,7 @@ +#!/bin/sh +# ============================================================================== +# HA utility +# ============================================================================== + +# shellcheck disable=SC2048,SC2086 +docker exec hassio_cli ha $* diff --git a/buildroot-external/rootfs-overlay/usr/libexec/hassos-apparmor b/buildroot-external/rootfs-overlay/usr/libexec/hassos-apparmor index aefeeed8e..c41de60a0 100755 --- a/buildroot-external/rootfs-overlay/usr/libexec/hassos-apparmor +++ b/buildroot-external/rootfs-overlay/usr/libexec/hassos-apparmor @@ -1,16 +1,7 @@ #!/bin/sh set -e -# Load configs -CONFIG_FILE=/mnt/data/hassos.json - -# Read configs -PROFILES_DIR="$(jq --raw-output '.apparmor // empty' ${CONFIG_FILE})" -if [ -z "${PROFILES_DIR}" ]; then - exit 0 -fi - -PROFILES_DIR="/mnt/data/${PROFILES_DIR}" +PROFILES_DIR="/mnt/data/supervisor/apparmor" CACHE_DIR="${PROFILES_DIR}/cache" REMOVE_DIR="${PROFILES_DIR}/remove" diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-cli b/buildroot-external/rootfs-overlay/usr/sbin/hassos-cli index 83bc00a0f..f2e0a20ee 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassos-cli +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-cli @@ -1,24 +1,11 @@ #!/bin/sh +# ============================================================================== +# Run logging cli +# ============================================================================== -# Load configs -CONFIG_FILE=/mnt/data/hassos.json - -CLI="$(jq --raw-output '.cli' ${CONFIG_FILE})" -DOCKER_ARGS="$(jq --raw-output '.cli_args // empty' ${CONFIG_FILE})" -APPARMOR="$(jq --raw-output '.cli_apparmor // "docker-default"' ${CONFIG_FILE})" - -CLI_DATA=/mnt/data/cli -mkdir -p ${CLI_DATA} - -# Run CLI -# shellcheck disable=SC2086 -docker container run \ - --rm -ti --init \ - --security-opt apparmor="${APPARMOR}" \ - -v ${CLI_DATA}:/data \ - -v /etc/machine-id:/etc/machine-id:ro \ - $DOCKER_ARGS \ - "${CLI}" +docker container exec \ + -ti hassio_cli \ + /usr/bin/cli.sh \ # Jump to root login shell if [ $? -eq 10 ]; then diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor b/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor index 246a59906..fc468294b 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor @@ -1,39 +1,35 @@ #!/bin/sh +# shellcheck disable=SC1091 +# ============================================================================== +# Supervisor on HassOS +# ============================================================================== set -e # Load configs -CONFIG_FILE=/mnt/data/hassos.json - -SUPERVISOR="$(jq --raw-output '.supervisor' ${CONFIG_FILE})" -DOCKER_ARGS="$(jq --raw-output '.supervisor_args // empty' ${CONFIG_FILE})" -APPARMOR="$(jq --raw-output '.supervisor_apparmor // "docker-default"' ${CONFIG_FILE})" +. /etc/os-release # Init supervisor -HASSOS_DATA=/mnt/data/supervisor -HASSOS_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR}") -HASSOS_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassos_supervisor || echo "") - -# Fix wrong AppArmor profiles -if ! grep "${APPARMOR}" /sys/kernel/security/apparmor/profiles > /dev/null; then - APPARMOR=docker-default -fi +SUPERVISOR_IMAGE="homeassistant/${SUPERVISOR_ARCH}-hassio-supervisor" +SUPERVISOR_DATA=/mnt/data/supervisor +SUPERVISOR_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR_IMAGE}") +SUPERVISOR_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassio_supervisor || echo "") runSupervisor() { - docker container rm --force hassos_supervisor || true + docker container rm --force hassio_supervisor || true # shellcheck disable=SC2086 - docker container run --name hassos_supervisor \ - --privileged --security-opt apparmor="${APPARMOR}" \ + docker container run --name hassio_supervisor \ + --privileged --security-opt apparmor="hassio-supervisor" \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/dbus:/var/run/dbus \ -v /etc/machine-id:/etc/machine-id:ro \ - -v ${HASSOS_DATA}:/data \ - -e SUPERVISOR_SHARE=${HASSOS_DATA} \ - -e SUPERVISOR_NAME=hassos_supervisor \ - $DOCKER_ARGS \ - "${SUPERVISOR}" + -v ${SUPERVISOR_DATA}:/data \ + -e SUPERVISOR_SHARE=${SUPERVISOR_DATA} \ + -e SUPERVISOR_NAME=hassio_supervisor \ + -e SUPERVISOR_MACHINE=${SUPERVISOR_MACHINE} \ + "${SUPERVISOR_IMAGE}" } # Run supervisor -mkdir -p ${HASSOS_DATA} -([ "${HASSOS_IMAGE_ID}" = "${HASSOS_CONTAINER_ID}" ] && docker container start --attach hassos_supervisor) || runSupervisor +mkdir -p ${SUPERVISOR_DATA} +([ "${SUPERVISOR_IMAGE_ID}" = "${SUPERVISOR_CONTAINER_ID}" ] && docker container start --attach hassio_supervisor) || runSupervisor diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 6b9a0c0b1..8b8c82490 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -30,6 +30,8 @@ install_hassos_cli echo "HOME_URL=https://hass.io/" echo "VARIANT=\"${HASSOS_NAME} ${BOARD_NAME}\"" echo "VARIANT_ID=${BOARD_ID}" + echo "SUPERVISOR_MACHINE=${SUPERVISOR_MACHINE}" + echo "SUPERVISOR_ARCH=${SUPERVISOR_ARCH}" ) > "${TARGET_DIR}/usr/lib/os-release" # Write machine-info