# ==========================================
# STAGE 1: Vývojové prostředí, kde vše zkompilujeme
# ==========================================
FROM ghcr.io/home-assistant/armv7-homeassistant-base:latest AS builder

# 1. ČISTÉ MINIMUM: Pouze nástroje nezbytné pro kompilaci samotného Pythonu 3.14
# Tento krok se spustí JEDNOU a Docker si ho navždy 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. KOMPILACE PYTHONU 3.14
# Dokud nezměníte verzi Pythonu (3.14.9), tento krok se už NIKDY nebude opakovat!
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í příkazů a instalace UV do nového Pythonu
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

# =========================================================================
# ZDE JE TA ZMĚNA: Sem můžete kdykoliv přidat autoconf, cmake nebo ccache
# a Python se už ZNOVU KOMPILOVAT NEBUDE.
# ======================================================================
# 3b. DODATEČNÉ KOMPILAČNÍ NÁSTROJE PRO PYTHON BALÍČKY (Např. NumPy, DTLSSocket, PyAV...)
# Přidány ffmpeg-dev a pkgconfig pro úspěšný build balíčku 'av'
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

# 4. Zkopírování textových souborů závislostí
WORKDIR /tmp
COPY requirements.txt ./
COPY homeassistant/*.txt ./homeassistant/
# 3b. DODATEČNÉ KOMPILAČNÍ NÁSTROJE A SYSTÉMOVÉ PYAV
# Přidán py3-av, který obsahuje nativně zkompilované PyAV pro vaši verzi FFmpeg
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 py3-av

# 4. Zkopírování textových souborů závislostí
WORKDIR /tmp
COPY requirements.txt ./
COPY homeassistant/*.txt ./homeassistant/

# =========================================================================
# NOVÝ KROK: Odstranění av z requirements, aby se uv nepokoušel o jeho kompilaci
# =========================================================================
RUN sed -i '/^av==/d' requirements.txt homeassistant/*.txt 2>/dev/null || true

# 5. Spuštění kompilace do specifické složky
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

# ... (zde ponechte vaše LABEL a ENV definice) ...

## Setup Home Assistant Core dependencies
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)" \
    && sed -i '/^av==/d' homeassistant/requirements.txt 2>/dev/null || true \
    && UV_CONCURRENT_BUILDS=1 uv pip install \
        --index-strategy unsafe-best-match \
        -r homeassistant/requirements.txt

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 \
    && sed -i '/^av==/d' homeassistant/requirements_all.txt 2>/dev/null || true \
    && UV_CONCURRENT_BUILDS=1 uv pip install \
        --index-strategy unsafe-best-match \
        -r homeassistant/requirements_all.txt

## Setup Home Assistant Core
COPY --parents LICENSE* README* homeassistant/ pyproject.toml homeassistant/
# Na konec linkujeme systémové PyAV z Alpine do naší složky compiled-packages
RUN \
    uv pip install -e ./homeassistant \
    && cp -r /usr/lib/python3.*/site-packages/av* /compiled-packages/ 2>/dev/null || true \
    && python3 -m compileall homeassistant/homeassistant

WORKDIR /config
## Setup Home Assistant Core dependencies
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

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