diff --git a/.hadolint.yaml b/.hadolint.yaml index 06de09b5460ee0..2010a459a5fcb0 100644 --- a/.hadolint.yaml +++ b/.hadolint.yaml @@ -3,3 +3,4 @@ ignored: - DL3008 - DL3013 - DL3018 + - DL3042 diff --git a/Dockerfile b/Dockerfile index f2a365b2b8af47..b61e1461c52baa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,41 +14,29 @@ COPY requirements.txt homeassistant/ COPY homeassistant/package_constraints.txt homeassistant/homeassistant/ RUN \ pip3 install \ - --no-cache-dir \ --only-binary=:all: \ - --index-url "https://wheels.home-assistant.io/musllinux-index/" \ -r homeassistant/requirements.txt COPY requirements_all.txt home_assistant_frontend-* home_assistant_intents-* homeassistant/ RUN \ if ls homeassistant/home_assistant_frontend*.whl 1> /dev/null 2>&1; then \ - pip3 install \ - --no-cache-dir \ - --no-index \ - homeassistant/home_assistant_frontend-*.whl; \ + pip3 install homeassistant/home_assistant_frontend-*.whl; \ fi \ && if ls homeassistant/home_assistant_intents*.whl 1> /dev/null 2>&1; then \ - pip3 install \ - --no-cache-dir \ - --no-index \ - homeassistant/home_assistant_intents-*.whl; \ + pip3 install homeassistant/home_assistant_intents-*.whl; \ fi \ && \ LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \ MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \ pip3 install \ - --no-cache-dir \ --only-binary=:all: \ - --index-url "https://wheels.home-assistant.io/musllinux-index/" \ -r homeassistant/requirements_all.txt ## Setup Home Assistant Core COPY . homeassistant/ RUN \ pip3 install \ - --no-cache-dir \ --only-binary=:all: \ - --index-url "https://wheels.home-assistant.io/musllinux-index/" \ -e ./homeassistant \ && python3 -m compileall \ homeassistant/homeassistant diff --git a/build.yaml b/build.yaml index f9e19f89e23c53..e931d193a58a2c 100644 --- a/build.yaml +++ b/build.yaml @@ -1,10 +1,10 @@ image: ghcr.io/home-assistant/{arch}-homeassistant build_from: - aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2023.09.0 - armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2023.09.0 - armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2023.09.0 - amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2023.09.0 - i386: ghcr.io/home-assistant/i386-homeassistant-base:2023.09.0 + aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2023.10.0 + armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2023.10.0 + armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2023.10.0 + amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2023.10.0 + i386: ghcr.io/home-assistant/i386-homeassistant-base:2023.10.0 codenotary: signer: notary@home-assistant.io base_image: notary@home-assistant.io diff --git a/homeassistant/requirements.py b/homeassistant/requirements.py index 954de3bf5a67ff..27a9607a6ee8ce 100644 --- a/homeassistant/requirements.py +++ b/homeassistant/requirements.py @@ -85,11 +85,8 @@ def pip_kwargs(config_dir: str | None) -> dict[str, Any]: is_docker = pkg_util.is_docker_env() kwargs = { "constraints": os.path.join(os.path.dirname(__file__), CONSTRAINT_FILE), - "no_cache_dir": is_docker, "timeout": PIP_TIMEOUT, } - if "WHEELS_LINKS" in os.environ: - kwargs["find_links"] = os.environ["WHEELS_LINKS"] if not (config_dir is None or pkg_util.is_virtual_env()) and not is_docker: kwargs["target"] = os.path.join(config_dir, "deps") return kwargs diff --git a/homeassistant/util/package.py b/homeassistant/util/package.py index 7de75c1e24f9a7..bc60953a1aa647 100644 --- a/homeassistant/util/package.py +++ b/homeassistant/util/package.py @@ -67,9 +67,7 @@ def install_package( upgrade: bool = True, target: str | None = None, constraints: str | None = None, - find_links: str | None = None, timeout: int | None = None, - no_cache_dir: bool | None = False, ) -> bool: """Install a package on PyPi. Accepts pip compatible package strings. @@ -81,14 +79,10 @@ def install_package( args = [sys.executable, "-m", "pip", "install", "--quiet", package] if timeout: args += ["--timeout", str(timeout)] - if no_cache_dir: - args.append("--no-cache-dir") if upgrade: args.append("--upgrade") if constraints is not None: args += ["--constraint", constraints] - if find_links is not None: - args += ["--find-links", find_links, "--prefer-binary"] if target: assert not is_virtual_env() # This only works if not running in venv diff --git a/tests/test_requirements.py b/tests/test_requirements.py index 388e8607eca4c1..4fa10b92706c7a 100644 --- a/tests/test_requirements.py +++ b/tests/test_requirements.py @@ -42,7 +42,6 @@ async def test_requirement_installed_in_venv(hass: HomeAssistant) -> None: "package==0.0.1", constraints=os.path.join("ha_package_path", CONSTRAINT_FILE), timeout=60, - no_cache_dir=False, ) @@ -64,7 +63,6 @@ async def test_requirement_installed_in_deps(hass: HomeAssistant) -> None: target=hass.config.path("deps"), constraints=os.path.join("ha_package_path", CONSTRAINT_FILE), timeout=60, - no_cache_dir=False, ) @@ -379,10 +377,8 @@ async def test_install_with_wheels_index(hass: HomeAssistant) -> None: assert mock_inst.call_args == call( "hello==1.0.0", - find_links="https://wheels.hass.io/test", constraints=os.path.join("ha_package_path", CONSTRAINT_FILE), timeout=60, - no_cache_dir=True, ) @@ -406,7 +402,6 @@ async def test_install_on_docker(hass: HomeAssistant) -> None: "hello==1.0.0", constraints=os.path.join("ha_package_path", CONSTRAINT_FILE), timeout=60, - no_cache_dir=True, ) diff --git a/tests/util/test_package.py b/tests/util/test_package.py index ff26cba0dd4f08..e64ea01ffa8364 100644 --- a/tests/util/test_package.py +++ b/tests/util/test_package.py @@ -194,33 +194,6 @@ def test_install_constraint(mock_sys, mock_popen, mock_env_copy, mock_venv) -> N assert mock_popen.return_value.communicate.call_count == 1 -def test_install_find_links(mock_sys, mock_popen, mock_env_copy, mock_venv) -> None: - """Test install with find-links on not installed package.""" - env = mock_env_copy() - link = "https://wheels-repository" - assert package.install_package(TEST_NEW_REQ, False, find_links=link) - assert mock_popen.call_count == 2 - assert mock_popen.mock_calls[0] == call( - [ - mock_sys.executable, - "-m", - "pip", - "install", - "--quiet", - TEST_NEW_REQ, - "--find-links", - link, - "--prefer-binary", - ], - stdin=PIPE, - stdout=PIPE, - stderr=PIPE, - env=env, - close_fds=False, - ) - assert mock_popen.return_value.communicate.call_count == 1 - - async def test_async_get_user_site(mock_env_copy) -> None: """Test async get user site directory.""" deps_dir = "/deps_dir"