# ========================================================================= # FÁZE 1: Builder – Zde zkompilujeme Python 3.14 a náročné C/C++ knihovny # ========================================================================= FROM ghcr.io/home-assistant/armv7-homeassistant-base:2025.11.3 AS builder # 1. Čisté minimum pro kompilaci samotného Pythonu 3.14 (rychle se nacachuje) RUN apk add --no-cache \ build-base ffi-dev openssl-dev bzip2-dev zlib-dev \ readline-dev sqlite-dev xz-dev wget musl-dev # 2. Stažení a nativní kompilace Pythonu 3.14.9 RUN wget https://python.org && \ tar -xf Python-3.14.9.tar.xz && \ cd Python-3.14.9 && \ ./configure --enable-optimizations --with-ensurepip=install && \ make -j$(nproc) && \ make altinstall && \ cd .. && rm -rf Python-3.14.9* # 3. Přesměrování výchozích příkazů a instalace uv RUN ln -sf /usr/local/bin/python3.14 /usr/local/bin/python3 && \ ln -sf /usr/local/bin/pip3.14 /usr/local/bin/pip3 && \ pip3 install --no-cache-dir uv # 4. Dodatečné nástroje pro kompilaci Python balíčků (NumPy, PyAV, atd.) RUN apk add --no-cache \ cmake rust cargo samurai ccache autoconf automake \ jpeg-dev openjpeg-dev tiff-dev freetype-dev lcms2-dev libwebp-dev \ ffmpeg-dev pkgconfig # 5. Příprava textových souborů závislostí z nejnovějšího Home Assistanta WORKDIR /tmp COPY requirements.txt ./ COPY homeassistant/*.txt ./homeassistant/ # 6. Kompilace NumPy 2.3+ s Meson fixem pro 32-bitový formát čísel (IEEE_DOUBLE_LE) RUN --mount=type=cache,target=/root/.cache/uv \ echo -e "[properties]\nlongdouble_format = 'IEEE_DOUBLE_LE'" > /tmp/meson-native.ini && \ uv pip install \ --config-settings=setup-args="--native-file=/tmp/meson-native.ini" \ --config-settings=compile-args="-j$(nproc)" \ --index-strategy unsafe-best-match \ --target /compiled-packages \ -r requirements.txt && \ rm /tmp/meson-native.ini # ========================================================================= # FÁZE 2: Finální běhové prostředí s nejnovějším Core kódem # ========================================================================= FROM ghcr.io/home-assistant/homeassistant-base:latest # Nastavení systémových proměnných pro uv ENV \ S6_SERVICES_GRACETIME=240000 \ UV_SYSTEM_PYTHON=true \ UV_NO_CACHE=true # Zkopírování zkompilovaného Pythonu 3.14 a balíčků z první fáze COPY --from=builder /usr/local /usr/local COPY --from=builder /compiled-packages /compiled-packages # Přesměrování cest, aby systém viděl naše zkompilované balíčky ENV PYTHONPATH="/compiled-packages:${PYTHONPATH}" WORKDIR /usr/src COPY rootfs / COPY --from=ghcr.io/alexxit/go2rtc:1.9.14 /usr/local/bin/go2rtc /bin/go2rtc # 7. Instalace Core závislostí bez --no-build flagu a s opravou chybějících maker pro PyAV COPY --parents requirements.txt homeassistant/package_constraints.txt homeassistant/ RUN \ go2rtc --version \ && pip3 install --no-cache-dir "uv==$(awk -F'==' '/^uv==/{print $2}' homeassistant/requirements.txt)" \ && export CFLAGS="-DAVERROR_HTTP_TOO_MANY_REQUESTS=-1112362804 -DAV_FRAME_DATA_LCEVC=2" \ && export UV_CONCURRENT_BUILDS=1 \ && uv pip install \ --index-strategy unsafe-best-match \ -r homeassistant/requirements.txt # 8. Instalace všech integrací (requirements_all) COPY requirements_all.txt home_assistant_frontend-* home_assistant_intents-* homeassistant/ RUN \ if ls homeassistant/home_assistant_*.whl 1> /dev/null 2>&1; then \ uv pip install homeassistant/home_assistant_*.whl; \ fi \ && export CFLAGS="-DAVERROR_HTTP_TOO_MANY_REQUESTS=-1112362804 -DAV_FRAME_DATA_LCEVC=2" \ && export UV_CONCURRENT_BUILDS=1 \ && uv pip install \ --index-strategy unsafe-best-match \ -r homeassistant/requirements_all.txt # 9. Finální sestavení Home Assistant Core a předkompilace do .pyc COPY --parents LICENSE* README* homeassistant/ pyproject.toml homeassistant/ RUN \ uv pip install \ -e ./homeassistant \ && python3 -m compileall \ homeassistant/homeassistant WORKDIR /config docker buildx build --platform linux/arm/v7 --progress=plain -t my-custom-homeassistant:latest .