tribuchet: building on eliza Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Using pytestCheckPhase Running phase: unpackPhase unpacking source archive /nix/store/81f2yb7gxy4npivfkq1qb7adz6xcs944-nixbot source root is nixbot setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "nixbot/pyproject.toml" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... * Building wheel... Successfully built nixbot-0.0.1-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for nixbot-0.0.1-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed nixbot-0.0.1-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/4dpsw7jp0r216kdfbhhpd91n1gip901m-python3.14-nixbot-tests checking for references to /build/ in /nix/store/4dpsw7jp0r216kdfbhhpd91n1gip901m-python3.14-nixbot-tests... patching script interpreter paths in /nix/store/4dpsw7jp0r216kdfbhhpd91n1gip901m-python3.14-nixbot-tests stripping (with command strip and flags -S -p) in /nix/store/4dpsw7jp0r216kdfbhhpd91n1gip901m-python3.14-nixbot-tests/lib /nix/store/4dpsw7jp0r216kdfbhhpd91n1gip901m-python3.14-nixbot-tests/bin shrinking RPATHs of ELF executables and libraries in /nix/store/8qzfbkfif4dqbvm4qp9kxbzx2snqkamj-python3.14-nixbot-tests-dist checking for references to /build/ in /nix/store/8qzfbkfif4dqbvm4qp9kxbzx2snqkamj-python3.14-nixbot-tests-dist... patching script interpreter paths in /nix/store/8qzfbkfif4dqbvm4qp9kxbzx2snqkamj-python3.14-nixbot-tests-dist Rewriting #!/nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 to #!/nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6 wrapping `/nix/store/4dpsw7jp0r216kdfbhhpd91n1gip901m-python3.14-nixbot-tests/bin/nixbot'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase no Makefile or custom installCheckPhase, doing nothing Running phase: pythonCatchConflictsPhase Running phase: pythonRemoveBinBytecodePhase Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase Running phase: pytestCheckPhase Executing pytestCheckPhase pytest flags: -m pytest --numprocesses=24 /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ============================= test session starts ============================== platform linux -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0 benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) rootdir: /build/nixbot configfile: pyproject.toml plugins: asyncio-1.4.0, timeout-2.4.0, xdist-3.8.0, benchmark-5.2.3, anyio-4.14.2 asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function timeout: 60.0s timeout method: signal timeout func_only: False created: 24/24 workers 24 workers [873 items] .............................................................sssssssss.. [ 8%] ........................................................................ [ 16%] ........................................................................ [ 24%] ........................................................................ [ 32%] .................................................................s...... [ 41%] ..........F............................................................. [ 49%] ..................................................s..................... [ 57%] ............................................s........................... [ 65%] ........................................................................ [ 74%] ........................................................................ [ 82%] ........................................................................ [ 90%] .............s.......................................................... [ 98%] ......... [100%] =================================== FAILURES =================================== __________________________ test_prefetch_integration ___________________________ [gw3] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0') @needs_nix async def test_prefetch_integration(tmp_path: Path) -> None: """A locked git input is copied to the store and gc-rooted; after the input's source repo is gone, evaluation still succeeds purely from the store (the sandboxed eval has no credentials for private inputs).""" dep = init_upstream( tmp_path / "dep", {"flake.nix": '{ outputs = { self }: { greeting = "hello"; }; }'}, ) repo = init_upstream( tmp_path / "repo", { "flake.nix": f""" {{ inputs.dep.url = "git+file://{dep}"; outputs = {{ self, dep }}: {{ checks.x86_64-linux.ok = derivation {{ name = "ok-" + dep.greeting; system = "x86_64-linux"; builder = "/bin/sh"; args = [ "-c" "echo ok > $out" ]; }}; }}; }} """ }, ) _nix_flake_lock(repo) gcroots = tmp_path / "gcroots" await prefetch_flake_inputs(repo, BranchConfig(), gcroots) roots = list((gcroots / "inputs").iterdir()) assert len(roots) == 1 assert roots[0].is_symlink() assert roots[0].resolve().is_dir() # The eval must not need the input's origin anymore. shutil.rmtree(dep) if shutil.which("nix-eval-jobs") is None: pytest.skip("nix-eval-jobs not available") settings = EvalSettings( gc_roots_dir=tmp_path / "eval-gcroots", sandbox=False, systemd_scope=False ) > result = await EvalRunner().run(repo, BranchConfig(), settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/test_flake_prefetch.py:147: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/nix_eval.py:615: in run return await self._spawn( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = worktree_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0/repo') branch_config = BranchConfig(flake_dir='.', lock_file='flake.lock', attribute='checks', effects_on_pull_requests=False, effects_branches=[], build_branches=None, require_approval=True) settings = EvalSettings(gc_roots_dir=PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0/eval-gcroot...attr_prefix=False, build_store_url=None, build_store_token_file=None, build_store_credential_env='NIX_GRPC_TOKEN_FILE') preexec_fn = None, on_jobs = None, on_stderr_line = None, eval_cgroup = None async def _spawn( # noqa: PLR0913 self, worktree_path: Path, branch_config: BranchConfig, settings: EvalSettings, preexec_fn: Callable[[], None] | None = None, on_jobs: JobBatchCallback | None = None, on_stderr_line: StderrLineCallback | None = None, eval_cgroup: Path | None = None, ) -> EvalResult: cmd = build_full_command(worktree_path, branch_config, settings) logger.info( "starting evaluation", extra={"worktree": str(worktree_path), "argv0": cmd[0]}, ) t0 = time.monotonic() proc = await asyncio.create_subprocess_exec( *cmd, cwd=worktree_path, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, preexec_fn=preexec_fn, # Own process group so a timeout can kill the whole tree. start_new_session=True, limit=STREAM_LIMIT, # Proxy/TLS/NIX_* must reach the evaluator: flake input # fetching fails in proxy/custom-CA deployments otherwise. env={ **passthrough_env(), "CLICOLOR_FORCE": "1", "PATH": os.environ.get("PATH", "/usr/bin:/bin"), # Fallback to /tmp when no `bwrap` "HOME": os.environ.get("HOME", "/tmp"), # noqa: S108 }, ) assert proc.stdout is not None # noqa: S101 assert proc.stderr is not None # noqa: S101 jobs: list[NixEvalJob] = [] parse_errors: list[str] = [] try: async with asyncio.timeout(settings.timeout): _, stderr_bytes = await asyncio.gather( _read_job_stream(proc.stdout, jobs, parse_errors, on_jobs), _read_stderr_tail(proc.stderr, on_line=on_stderr_line), ) returncode = await proc.wait() duration_ms = int((time.monotonic() - t0) * 1000) except BaseException as e: # Timeout, cancellation, or a reader bug: kill the evaluator # instead of leaking it (possibly blocked on a full pipe). _kill_process_tree(proc) await proc.wait() if isinstance(e, TimeoutError): msg = f"evaluation timed out after {settings.timeout:.0f} seconds" raise EvalError(msg) from None raise stderr_text = stderr_bytes.decode(errors="replace") if returncode != 0: tail = "\n".join(stderr_text.splitlines()[-50:]) # No stderr substring match: that would misclassify evals # whose trace merely mentions "out of memory". if returncode in OOM_RETURN_CODES or cgroup_oom_killed(eval_cgroup): msg = ( "evaluation ran out of memory (cgroup limit " f"{settings.memory_limit_mib} MiB, " f"{settings.worker_count} x {settings.max_memory_size_mib} " "MiB workers); this is a permanent failure, reduce " f"evaluation memory usage:\n{tail}" ) raise EvalOOMError(msg) msg = f"{settings.command[0]} failed with exit code {returncode}:\n{tail}" > raise EvalError(msg) E nixbot.nix_eval.EvalError: nix-eval-jobs failed with exit code 1: E warning: Git tree '/build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0/repo' is dirty E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 7 ms (attempt 1/5) E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 159 ms (attempt 2/5) E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 307 ms (attempt 3/5) E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 205 ms (attempt 4/5) E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org E warning: Git tree '/build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0/repo' is dirty E error: while starting worker, evaluation worker crashed with signal 7 (Bus error); enable coredumps for a backtrace nixbot/nix_eval.py:702: EvalError ----------------------------- Captured stderr call ----------------------------- warning: you don't have Internet access; disabling some network-dependent features warning: creating lock file "/build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0/repo/flake.lock": • Added input 'dep': 'git+file:///build/pytest-of-nixbld/pytest-0/popen-gw3/test_prefetch_integration0/dep?ref=refs/heads/main&rev=a54fc7be22b2aceba94107f35f5f2d22427a71ff' (2026-10-25) =========================== short test summary info ============================ FAILED nixbot/tests/test_flake_prefetch.py::test_prefetch_integration - nixbo... ================== 1 failed, 859 passed, 13 skipped in 32.01s ==================