@@ -18,26 +18,26 @@ LABEL \
1818 org.opencontainers.image.licenses="MIT"
1919
2020ARG \
21- HOMEASSISTANT_VERSION="2025.12.5 " \
21+ HOMEASSISTANT_VERSION="2026.1.0 " \
2222 HOMEASSISTANT_CLI_VERSION="4.45.0" \
2323 GO2RTC_VERSION="v1.9.13" \
24+ MIMALLOC_VERSION="v3.0.11" \
2425 JEMALLOC_VERSION="5.3.0" \
2526 PYTHON_VERSION="3.13.11" \
2627 GO2RTC_REPO_URL="https://github.com/AlexxIT/go2rtc" \
2728 HOMEASSISTANT_CLI_REPO_URL="https://github.com/home-assistant/cli" \
2829 HOMEASSISTANT_REPO_URL="https://github.com/home-assistant/core" \
2930 JEMALLOC_REPO_URL="https://github.com/jemalloc/jemalloc" \
31+ MIMALLOC_REPO_URL="https://github.com/microsoft/mimalloc" \
3032 HOMEASSISTANT_COMPONENTS=" \
3133 environment_canada, \
3234 esphome, \
33- garminconnect, \
3435 github, \
3536 jellyfin, \
3637 meater, \
3738 mqtt, \
3839 roku, \
3940 tuya, \
40- #xbox, \
4141 zha \
4242 " \
4343 HOMEASSISTANT_COMPONENTS_CORE=" \
@@ -108,7 +108,6 @@ RUN echo "" && \
108108 nmap \
109109 openssl \
110110 pianobar \
111- #py3-libcec \
112111 socat \
113112 tiff \
114113 " \
@@ -146,19 +145,17 @@ RUN echo "" && \
146145 && \
147146 \
148147 HOMEASSISTANTCLI_BUILD_DEPS_ALPINE=" \
149- " \
150- && \
148+ " \
149+ && \
151150 \
152- JEMALLOC_BUILD_DEPS_ALPINE =" \
153- autoconf \
151+ MIMALLOC_BUILD_DEPS_ALPINE =" \
152+ cmake \
154153 make \
155154 " \
156155 && \
157156 PYTHON_BUILD_DEPS_ALPINE=" \
158157 bluez-dev \
159158 bzip2-dev \
160- #dpkg-dev \
161- #dpkg \
162159 findutils \
163160 gcc \
164161 gdbm-dev \
@@ -195,7 +192,7 @@ RUN echo "" && \
195192 HOMEASSISTANT_BUILD_DEPS \
196193 HOMEASSISTANT_RUN_DEPS \
197194 HOMEASSISTANTCLI_BUILD_DEPS \
198- JEMALLOC_BUILD_DEPS \
195+ MIMALLOC_BUILD_DEPS \
199196 PYTHON_BUILD_DEPS \
200197 && \
201198 mkdir -p /usr/src/python && \
@@ -205,68 +202,67 @@ RUN echo "" && \
205202 alpine ) clib=musl ;; \
206203 debian|ubuntu ) clib=gnu ;; \
207204 esac ; \
208- ./configure \
209- --build="$(uname -m)-linux-${clib}" \
210- --enable-loadable-sqlite-extensions \
211- --enable-option-checking=fatal \
212- --enable-shared \
213- --with-lto \
214- --with-ensurepip \
205+ ./configure \
206+ --build="$(uname -m)-linux-${clib}" \
207+ --enable-loadable-sqlite-extensions \
208+ --enable-option-checking=fatal \
209+ --enable-shared \
210+ --with-lto \
211+ --with-ensurepip \
215212 && \
216213 EXTRA_CFLAGS="-DTHREAD_STACK_SIZE=0x100000" && \
217214 LDFLAGS="${LDFLAGS:--Wl},--strip-all" && \
218215 case "$(container_info arch)" in \
219216 x86_64 | aarch64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" ;; \
220217 * ) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer" ;; \
221218 esac ; \
222- make \
219+ make \
223220 -j $(nproc) \
224- "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \
225- "LDFLAGS=${LDFLAGS:-}" \
226- && \
221+ "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \
222+ "LDFLAGS=${LDFLAGS:-}" \
223+ && \
227224 rm python && \
228- make \
225+ make \
229226 -j $(nproc) \
230- "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \
231- "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ ORIGIN/../lib'" \
232- python \
233- && \
234- make install && \
235- find /usr/local -depth \
227+ "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \
228+ "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ ORIGIN/../lib'" \
229+ python \
230+ && \
231+ make install && \
232+ find /usr/local -depth \
236233 \( \
237- \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) \
238- -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \
239- \) -exec rm -rf '{}' + \
240- && \
241- \
242- find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \
243- | tr ',' '\n ' \
244- | sort -u \
245- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
246- | xargs -rt apk add --no-network --virtual .python-rundeps \
247- && \
248- export PYTHONDONTWRITEBYTECODE=1 && \
234+ \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) \
235+ -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \
236+ \) -exec rm -rf '{}' + \
237+ && \
238+ \
239+ find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \
240+ | tr ',' '\n ' \
241+ | sort -u \
242+ | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
243+ | xargs -rt apk add --no-network --virtual .python-rundeps \
244+ && \
245+ export PYTHONDONTWRITEBYTECODE=1 && \
249246 \
250247 for src in idle3 pip3 pydoc3 python3 python3-config; do \
251- dst="$(echo " $src" | tr -d 3)" ; \
252- [ -s "/usr/local/bin/$src" ]; \
253- [ ! -e "/usr/local/bin/$dst" ]; \
254- ln -svT "$src" "/usr/local/bin/$dst" ; \
255- done && \
248+ dst="$(echo " $src" | tr -d 3)" ; \
249+ [ -s "/usr/local/bin/$src" ]; \
250+ [ ! -e "/usr/local/bin/$dst" ]; \
251+ ln -svT "$src" "/usr/local/bin/$dst" ; \
252+ done && \
256253 \
257254 echo -e "[global]\n disable-pip-version-check = true\n extra-index-url = https://wheels.home-assistant.io/musllinux-index/\n no-cache-dir = false\n prefer-binary = true" > /etc/pip.conf && \
258255 pip install --break-system-packages uv && \
259256 \
260257 container_build_log add "Python" "${PYTHON_VERSION}" "python.org" && \
261258 \
262- clone_git_repo "${JEMALLOC_REPO_URL}" "${JEMALLOC_VERSION}" && \
263- ./autogen.sh \
264- --with-lg-page=16 \
265- && \
266- make -j "$(nproc)" && \
267- make install_lib_shared install_bin && \
268- \
269- container_build_log add "JemAlloc" "${JEMALLOC_VERSION}" "${JEMALLOC_REPO_URL}" && \
259+ clone_git_repo "${MIMALLOC_REPO_URL}" "${MIMALLOC_VERSION}" && \
260+ mkdir -p out/release && \
261+ cd out/release && \
262+ cmake ../.. && \
263+ make && \
264+ make install && \
265+ container_build_log add "MimAlloc" "${MIMALLOC_VERSION}" "${MIMALLOC_REPO_URL}" && \
270266 \
271267 clone_git_repo "${HOMEASSISTANT_REPO_URL}" "${HOMEASSISTANT_VERSION}" /usr/src/homeassistant && \
272268 uv venv /opt/homeassistant && \
@@ -336,7 +332,7 @@ RUN echo "" && \
336332 echo "homeassistant==${HOMEASSISTANT_VERSION}" >> requirements_custom.txt && \
337333 cp requirements_custom.txt /container/build/"${IMAGE_NAME/\/ /_}" / && \
338334 export MAKEFLAGS="-j$(nproc) -l$(nproc)" && \
339- LD_PRELOAD="/usr/local/lib/libjemalloc .so.2" \
335+ LD_PRELOAD="/usr/local/lib/libmimalloc .so.2" \
340336 CFLAGS="-Wno-int-conversion" \
341337 MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
342338 sudo -u "${HOMEASSISTANT_USER}" \
@@ -380,6 +376,7 @@ RUN echo "" && \
380376 HOMEASSISTANT_BUILD_DEPS \
381377 HOMEASSISTANTCLI_BUILD_DEPS \
382378 JEMALLOC_BUILD_DEPS \
379+ MIMALLOC_BUILD_DEPS \
383380 PYTHON_BUILD_DEPS \
384381 && \
385382 rm -rf \
0 commit comments