From 1054c03d96cce02c24817544d307b3c58c6e719e Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Thu, 4 Feb 2021 17:36:21 +0100 Subject: [PATCH] home-assistant: improve checkInputs package selection (#111921) and migrate unnecessary packages out of propagatedBuildInputs. This shrinks the whole package by ~65%. /nix/store/wdhqcxhp45p287zknw3r0cv7pxgp6r14-homeassistant-2021.2.0 696.7M /nix/store/1v20wdqfn4v1nf3v2jmlkx89q18n8fzx-homeassistant-2021.2.0 250.8M --- pkgs/servers/home-assistant/default.nix | 43 +++++++++++++++++++------ 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index ccf9fe5b123d..1c24f6dd4f86 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -96,22 +96,43 @@ in with py.pkgs; buildPythonApplication rec { ''; propagatedBuildInputs = [ - # From setup.py - aiohttp astral async-timeout attrs bcrypt certifi ciso8601 httpx jinja2 - pyjwt cryptography pip python-slugify pytz pyyaml requests ruamel_yaml - setuptools voluptuous voluptuous-serialize yarl - # From default_config. dhcp, frontend, http, image, mobile_app and - # recorder components as well as the auth.mfa_modules.totp module - aiohttp-cors aiohue defusedxml distro emoji hass-frontend pynacl pillow pyotp - pyqrcode scapy sqlalchemy python-openzwave-mqtt + # Only packages required in setup.py + hass-frontend + aiohttp + astral + async-timeout + attrs + bcrypt + certifi + ciso8601 + cryptography + hass-frontend + httpx + jinja2 + pip + pyjwt + python-slugify + pytz + pyyaml + requests + ruamel_yaml + voluptuous + voluptuous-serialize + yarl ] ++ componentBuildInputs ++ extraBuildInputs; # upstream only tests on Linux, so do we. doCheck = stdenv.isLinux; checkInputs = [ - asynctest pytestCheckHook pytest-aiohttp pytest_xdist requests-mock hass-nabucasa netdisco pydispatcher - ]; + # test infrastructure + asynctest + pytest-aiohttp + pytest-xdist + pytestCheckHook + requests-mock + # component dependencies + pyotp + ] ++ lib.concatMap (component: getPackages component py.pkgs) componentTests; # We cannot test all components, since they'd introduce lots of dependencies, some of which are unpackaged, # but we should test very common stuff, like what's in `default_config`. @@ -131,6 +152,7 @@ in with py.pkgs; buildPythonApplication rec { "history" "homeassistant" "http" + "hue" "input_boolean" "input_datetime" "input_text" @@ -154,6 +176,7 @@ in with py.pkgs; buildPythonApplication rec { "websocket_api" "zeroconf" "zone" + "zwave" ]; pytestFlagsArray = [