From d85309f7ca154c014cf53777c76df5af44b50500 Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Thu, 27 Jun 2024 22:47:21 -0700 Subject: [PATCH] store: delete obsolete lsof-disabling code Since Ifa0adda7984e, we don't use this code anymore on macOS, so we have no reason to have a knob to disable it anymore. Change-Id: Ie29a8a8978d9aefd4551895f4f9b3cc0827496df --- doc/manual/src/contributing/testing.md | 3 --- src/libstore/gc.cc | 28 ++++++++++++-------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/doc/manual/src/contributing/testing.md b/doc/manual/src/contributing/testing.md index 84836b891..b6b5318e0 100644 --- a/doc/manual/src/contributing/testing.md +++ b/doc/manual/src/contributing/testing.md @@ -433,9 +433,6 @@ I grepped `src/` for `get[eE]nv\("` to find the mentions in Lix code. - `NIX_PROFILE` - Selects which profile `nix-env` will operate on. Documented elsewhere. - `NIX_SSHOPTS` - Options passed to `ssh(1)` when using a ssh remote store. Incorrectly documented on `nix-copy-closure` which is *surely* not the only place they are used?? -- `_NIX_TEST_NO_LSOF` - Used on non-Linux, non-macOS platforms to disable using `lsof` when finding gc roots. - - Since https://git.lix.systems/lix-project/lix/issues/156 was fixed, this should probably just be removed as it was a bad workaround for a macOS issue. - `_NIX_TEST_GC_SYNC_1` - Path to a pipe that is used to block the GC briefly to validate invariants from the test suite. - `_NIX_TEST_GC_SYNC_2` - Path to a pipe that is used to block the GC briefly to validate invariants from the test suite. - `_NIX_TEST_FREE_SPACE_FILE` - Path to a file containing a decimal number with the free space that the GC is to believe it has. diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc index d58e3c8eb..02234d404 100644 --- a/src/libstore/gc.cc +++ b/src/libstore/gc.cc @@ -321,22 +321,20 @@ Roots LocalStore::findRoots(bool censor) void LocalStore::findPlatformRoots(UncheckedRoots & unchecked) { - // lsof is really slow on OS X. This actually causes the gc-concurrent.sh test to fail. - // See: https://github.com/NixOS/nix/issues/3011 - // Because of this we disable lsof when running the tests. - if (getEnv("_NIX_TEST_NO_LSOF") != "1") { - try { - std::regex lsofRegex(R"(^n(/.*)$)"); - auto lsofLines = - tokenizeString>(runProgram(LSOF, true, { "-n", "-w", "-F", "n" }), "\n"); - for (const auto & line : lsofLines) { - std::smatch match; - if (std::regex_match(line, match, lsofRegex)) - unchecked[match[1]].emplace("{lsof}"); - } - } catch (ExecError & e) { - /* lsof not installed, lsof failed */ + // N.B. This is (read: undertested!) fallback code only used for + // non-Darwin, non-Linux platforms. Both major platforms have + // platform-specific code in src/libstore/platform/ + try { + std::regex lsofRegex(R"(^n(/.*)$)"); + auto lsofLines = + tokenizeString>(runProgram(LSOF, true, { "-n", "-w", "-F", "n" }), "\n"); + for (const auto & line : lsofLines) { + std::smatch match; + if (std::regex_match(line, match, lsofRegex)) + unchecked[match[1]].emplace("{lsof}"); } + } catch (ExecError & e) { + /* lsof not installed, lsof failed */ } }