HassIO add-on pre-built images

This commit is contained in:
Otto Winter 2018-06-03 19:22:25 +02:00
parent ee2c53585f
commit 17798dee1e
No known key found for this signature in database
GPG Key ID: DB66C0BE6013F97E
12 changed files with 164 additions and 17 deletions

View File

@ -0,0 +1,43 @@
# Dockerfile for HassIO add-on
ARG BUILD_FROM=ubuntu:bionic
FROM ${BUILD_FROM}
# Re-declare BUILD_FROM to fix weird docker issue
ARG BUILD_FROM
# On amd64 and alike, using ubuntu as the base is better as building
# for the ESP32 only works with glibc (and ubuntu). However, on armhf
# the build toolchain frequently procudes segfaults under ubuntu.
# -> Use ubuntu for most architectures, except alpine for armhf
#
# * python and related required because this is a python project
# * git required for platformio library dependencies downloads
# * libc6-compat and openssh required on alpine for weird reasons
# * disable platformio telemetry on install
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
apt-get update && apt-get install -y --no-install-recommends \
python python-pip python-setuptools git && \
rm -rf /var/lib/apt/lists/* /tmp/*; \
else \
apk add --no-cache python2 py2-pip git openssh libc6-compat; \
fi" && \
pip install --no-cache-dir platformio && \
platformio settings set enable_telemetry No
# Create fake project to make platformio install all depdencies.
# * Ignore build errors from platformio - empty project
# * On alpine, only install ESP8266 toolchain
COPY platformio.ini /pio/platformio.ini
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
platformio run -e espressif32 -e espressif8266 -d /pio; \
else \
echo \"\$(head -8 /pio/platformio.ini)\" >/pio/platformio.ini; \
platformio run -e espressif8266 -d /pio; \
fi"; rm -rf /pio
# Install latest esphomeyaml from git
RUN pip install --no-cache-dir \
git+git://github.com/OttoWinter/esphomeyaml.git
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]

View File

@ -0,0 +1,10 @@
{
"squash": false,
"build_from": {
"aarch64": "arm64v8/ubuntu:bionic",
"amd64": "ubuntu:bionic",
"armhf": "homeassistant/armhf-base:latest",
"i386": "i386/ubuntu:bionic"
},
"args": {}
}

View File

@ -0,0 +1,29 @@
{
"name": "esphomeyaml-edge",
"version": "dev",
"slug": "esphomeyaml-edge",
"description": "Development build of the esphomeyaml HassIO add-on.",
"url": "https://esphomelib.com/esphomeyaml/index.html",
"startup": "application",
"webui": "http://[HOST]:[PORT:6052]",
"boot": "auto",
"ports": {
"6052/tcp": 6052,
"6053/tcp": 6053
},
"arch": [
"aarch64",
"amd64",
"armhf",
"i386"
],
"auto_uart": true,
"map": [
"config:rw"
],
"options": {},
"environment": {
"ESPHOMEYAML_OTA_HOST_PORT": "6053"
},
"schema": {}
}

View File

@ -0,0 +1,12 @@
; This file allows the docker build file to install the required platformio
; platforms
[env:espressif8266]
platform = espressif8266
board = nodemcuv2
framework = arduino
[env:espressif32]
platform = espressif32
board = nodemcu-32s
framework = arduino

View File

@ -1,20 +1,46 @@
# Dockerfile for HassIO add-on # Dockerfile for HassIO add-on
ARG BUILD_FROM=ubuntu:bionic
FROM ${BUILD_FROM}
# Re-declare BUILD_FROM to fix weird docker issue
ARG BUILD_FROM ARG BUILD_FROM
FROM $BUILD_FROM ARG BUILD_VERSION
ENV LANG C.UTF-8 # On amd64 and alike, using ubuntu as the base is better as building
# for the ESP32 only works with glibc (and ubuntu). However, on armhf
# Install requirements for add-on # the build toolchain frequently procudes segfaults under ubuntu.
RUN apk add --no-cache python2 py2-pip git openssh libc6-compat && \ # -> Use ubuntu for most architectures, except alpine for armhf
#
# * python and related required because this is a python project
# * git required for platformio library dependencies downloads
# * libc6-compat and openssh required on alpine for weird reasons
# * disable platformio telemetry on install
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
apt-get update && apt-get install -y --no-install-recommends \
python python-pip python-setuptools git && \
rm -rf /var/lib/apt/lists/* /tmp/*; \
else \
apk add --no-cache python2 py2-pip git openssh libc6-compat; \
fi" && \
pip install --no-cache-dir platformio && \ pip install --no-cache-dir platformio && \
platformio platform install espressif8266 \ platformio settings set enable_telemetry No
--with-package tool-esptool \
--with-package framework-arduinoespressif8266 \
--with-package tool-mkspiffs \
--with-package tool-espotapy
# Create fake project to make platformio install all depdencies.
# * Ignore build errors from platformio - empty project
# * On alpine, only install ESP8266 toolchain
COPY platformio.ini /pio/platformio.ini
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
platformio run -e espressif32 -e espressif8266 -d /pio; \
else \
echo \"\$(head -8 /pio/platformio.ini)\" >/pio/platformio.ini; \
platformio run -e espressif8266 -d /pio; \
fi"; rm -rf /pio
# Install latest esphomeyaml from git
RUN pip install --no-cache-dir \ RUN pip install --no-cache-dir \
git+git://github.com/OttoWinter/esphomeyaml.git@v1.6.0 \ esphomeyaml==${BUILD_VERSION} \
tornado esptool tornado \
esptool
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"] CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]

10
esphomeyaml/build.json Normal file
View File

@ -0,0 +1,10 @@
{
"squash": false,
"build_from": {
"aarch64": "arm64v8/ubuntu:bionic",
"amd64": "ubuntu:bionic",
"armhf": "homeassistant/armhf-base:latest",
"i386": "i386/ubuntu:bionic"
},
"args": {}
}

View File

@ -19,5 +19,6 @@
"environment": { "environment": {
"ESPHOMEYAML_OTA_HOST_PORT": "6053" "ESPHOMEYAML_OTA_HOST_PORT": "6053"
}, },
"schema": {} "schema": {},
"image": "ottowinter/esphomeyaml-hassio-{arch}"
} }

View File

@ -407,11 +407,11 @@ def process_lambda(value, parameters, capture='=', return_type=None):
yield yield
return return
parts = value.parts[:] parts = value.parts[:]
for i in range(1, len(parts), 2): for i, id in enumerate(value.requires_ids):
var = None var = None
for var in get_variable(parts[i]): for var in get_variable(id):
yield yield
parts[i] = var._ parts[i*2 + 1] = var._
yield LambdaExpression(parts, parameters, capture, return_type) yield LambdaExpression(parts, parameters, capture, return_type)
return return

View File

@ -0,0 +1,12 @@
; This file allows the docker build file to install the required platformio
; platforms
[env:espressif8266]
platform = espressif8266
board = nodemcuv2
framework = arduino
[env:espressif32]
platform = espressif32
board = nodemcu-32s
framework = arduino

View File

@ -306,5 +306,5 @@ def wizard(path):
print(color('bold_white', " discovery: True")) print(color('bold_white', " discovery: True"))
print() print()
print(" > Then follow the rest of the getting started guide:") print(" > Then follow the rest of the getting started guide:")
print(" > https://esphomelib.com/esphomeyaml/getting-started.html") print(" > https://esphomelib.com/esphomeyaml/guides/getting_started_command_line.html")
return 0 return 0

View File

@ -3,3 +3,5 @@ platformio==3.5.2
pyyaml==3.12 pyyaml==3.12
paho-mqtt==1.3.1 paho-mqtt==1.3.1
colorlog==3.1.2 colorlog==3.1.2
tornado==5.0.2
esptool==2.3.1

View File

@ -27,6 +27,8 @@ REQUIRES = [
'pyyaml>=3.12', 'pyyaml>=3.12',
'paho-mqtt>=1.3.1', 'paho-mqtt>=1.3.1',
'colorlog>=3.1.2', 'colorlog>=3.1.2',
'tornado>=5.0.0',
'esptool>=2.3.1',
] ]
CLASSIFIERS = [ CLASSIFIERS = [