diff --git a/nixos/lib/test-driver/src/test_driver/machine/__init__.py b/nixos/lib/test-driver/src/test_driver/machine/__init__.py index f763fa2d12bc..3dc4f1f8d171 100644 --- a/nixos/lib/test-driver/src/test_driver/machine/__init__.py +++ b/nixos/lib/test-driver/src/test_driver/machine/__init__.py @@ -1495,6 +1495,17 @@ class NspawnMachine(BaseMachine): self.logger.info(f"kill NspawnMachine (pid {self.pid})") assert self.process is not None self.process.terminate() + # Wait for the wrapper to finish its context-manager cleanups + # (veth/bridge/netns teardown) before returning, so the driver's + # subsequent vlan teardown does not race against it. + try: + self.process.wait(timeout=30) + except subprocess.TimeoutExpired: + self.logger.error( + f"NspawnMachine {self.name} (pid {self.pid}) did not exit after SIGTERM; sending SIGKILL" + ) + self.process.kill() + self.process.wait() self.process = None def is_up(self) -> bool: diff --git a/nixos/modules/virtualisation/nspawn-container/run-nspawn/src/run_nspawn/__init__.py b/nixos/modules/virtualisation/nspawn-container/run-nspawn/src/run_nspawn/__init__.py index 3eb622cbbfe8..4a28b18d8216 100644 --- a/nixos/modules/virtualisation/nspawn-container/run-nspawn/src/run_nspawn/__init__.py +++ b/nixos/modules/virtualisation/nspawn-container/run-nspawn/src/run_nspawn/__init__.py @@ -101,8 +101,17 @@ def ensure_vlan_bridge(vlan: int) -> typing.Generator[str, None, None]: # releasing this vlan, grab an exclusive lock. with vlan_lock(vlan): if bridge_path.exists(): - child_intf_count = len(list((bridge_path / "brif").iterdir())) - if child_intf_count == 0: + # The VDE tap is owned by the test driver's vde_plug2tap + # and shares its lifetime with the vlan, not with any + # container. Don't count it when deciding whether the + # bridge is still in use, otherwise the bridge would + # never be deleted as long as vde_plug2tap is alive. + child_intfs = [ + p.name + for p in (bridge_path / "brif").iterdir() + if p.name != tap_name + ] + if not child_intfs: logger.info("deleting bridge %s", bridge_name) run_ip("link", "delete", bridge_name) diff --git a/pkgs/by-name/ru/ruff/package.nix b/pkgs/by-name/ru/ruff/package.nix index 678055dd8c80..bc1345b250c4 100644 --- a/pkgs/by-name/ru/ruff/package.nix +++ b/pkgs/by-name/ru/ruff/package.nix @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "ruff"; - version = "0.15.12"; + version = "0.15.13"; __structuredAttrs = true; @@ -24,12 +24,12 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "astral-sh"; repo = "ruff"; tag = finalAttrs.version; - hash = "sha256-BbWOmr1/QsexDZzXPvkAstRBBcFmO0ZRrpkpXJpEXWk="; + hash = "sha256-Sr5eD5aZP+1/wbRHQjampWbWea+rXshcwOfCr4JCvxA="; }; cargoBuildFlags = [ "--package=ruff" ]; - cargoHash = "sha256-vv1D3bu0zLuLLxNiRESScs7fQKvx1CNfMKrseRzzxtw="; + cargoHash = "sha256-3y7kqhAUXZ+Ui6quGEDSRXrh3ii9NJLoFWnGX/Mp0l4="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ty/ty/package.nix b/pkgs/by-name/ty/ty/package.nix index 0d9f6920c364..d83645b2adce 100644 --- a/pkgs/by-name/ty/ty/package.nix +++ b/pkgs/by-name/ty/ty/package.nix @@ -17,14 +17,15 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "ty"; - version = "0.0.35"; + version = "0.0.36"; + __structuredAttrs = true; src = fetchFromGitHub { owner = "astral-sh"; repo = "ty"; tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-ce3v/ZUlMNMGlikWSriGybScUrRharFswq5Z47dTtKY="; + hash = "sha256-lUM2ewf8svvxyq8YNIw0fIseiA7kN7HViwBKDw6LDas="; }; # For Darwin platforms, remove the integration test for file notifications, @@ -38,7 +39,7 @@ rustPlatform.buildRustPackage (finalAttrs: { cargoBuildFlags = [ "--package=ty" ]; - cargoHash = "sha256-9/4+cK7BdJbXQKK7xC9MMfqARlivbuyYZ8j02srakxU="; + cargoHash = "sha256-3y7kqhAUXZ+Ui6quGEDSRXrh3ii9NJLoFWnGX/Mp0l4="; nativeBuildInputs = [ installShellFiles ]; buildInputs = [ rust-jemalloc-sys ]; @@ -67,6 +68,7 @@ rustPlatform.buildRustPackage (finalAttrs: { "--skip=python_environment::ty_environment_and_discovered_venv" "--skip=python_environment::ty_environment_is_only_environment" "--skip=python_environment::ty_environment_is_system_not_virtual" + "--skip=python_environment::ty_system_environment_and_local_venv" # flaky: unmatched assertion: revealed: Literal[1] "--skip=mdtest::generics/pep695/functions.md" diff --git a/pkgs/os-specific/linux/kernel/kernels-org.json b/pkgs/os-specific/linux/kernel/kernels-org.json index 401229afad54..62a75892e830 100644 --- a/pkgs/os-specific/linux/kernel/kernels-org.json +++ b/pkgs/os-specific/linux/kernel/kernels-org.json @@ -5,38 +5,38 @@ "lts": false }, "6.1": { - "version": "6.1.172", - "hash": "sha256:16dlfdzjcsc21m5sfbhamg8y3ay54rz8a0qqvqrmxq691mhjwrzi", + "version": "6.1.173", + "hash": "sha256:163dhycch5pw1vc87mm13djghwwyz182ljway5w19hz8zdn2rwy4", "lts": true }, "5.15": { - "version": "5.15.206", - "hash": "sha256:07z6lla7xpnn4sn3l4zw3x7m8ih8w6h54k71qrxrf5zv9i7wxijz", + "version": "5.15.207", + "hash": "sha256:13hlwrfi7hp3lxg5v4kx5ykycb64iwc7xhg4rbjk0pvl0yipzssh", "lts": true }, "5.10": { - "version": "5.10.255", - "hash": "sha256:19v6g2fq4nqv38irlcd9x14s6d398c56mxzpyc03q4xmpy3v6mir", + "version": "5.10.256", + "hash": "sha256:0pwf9nsr7clqm0bxvyrp3k79d5i6f9xqq58i31xvvra1xk4dmsgi", "lts": true }, "6.6": { - "version": "6.6.138", - "hash": "sha256:03x8ald0sjzdb6kpzrw8adnc78r3mdxrx8mzbxbpwp35vdgnpl5d", + "version": "6.6.139", + "hash": "sha256:0h6pygw7fwmkl4p0w0jq64bzx0qv74bgwcn3qsaaqf5f3lvp3kd7", "lts": true }, "6.12": { - "version": "6.12.88", - "hash": "sha256:1s2x66j46gxw17j8hh5iws0l00aivmphp3mn8vgwbn8sj44gacjb", + "version": "6.12.89", + "hash": "sha256:184r0wji02qw2n7ncx0jrf382yk20nnf79fvafim6a4x9a0gsnjq", "lts": true }, "6.18": { - "version": "6.18.30", - "hash": "sha256:1m5kvzky4g2jc8b09np8can0lasg1lwjfgdj41s3ymxgqdp8icx8", + "version": "6.18.31", + "hash": "sha256:1djqya5jlgg0q0ra5mvqdfcsbf13vxffhgxyqvy9qh2x91nvi850", "lts": true }, "7.0": { - "version": "7.0.7", - "hash": "sha256:1x2xnb7gpj0inxdc317zi71i0d98b7wq64s0yzk2vzxalf3gxqf8", + "version": "7.0.8", + "hash": "sha256:08nbdmgy4bbpmjzkh6n4v3shksvxpcxhy8biv5w7qkwz5jrayi8r", "lts": false } }