From e758ca25b37816a463c06c57dcd07c26a86a25f3 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman <145775305+xokdvium@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:46:34 +0300 Subject: [PATCH 1/3] bear: 3.1.3 -> 3.1.5 Bump to 3.1.5 and switch from protobuf_25 to protobuf, since upstream 3.1.4 has a patch that fixed previously encountered build failures. Drop stale patch for functional tests that aren't run anyway. Next patches reenable tests. --- .../tools/build-managers/bear/default.nix | 13 +++----- .../bear/fix-functional-tests.patch | 32 ------------------- 2 files changed, 4 insertions(+), 41 deletions(-) delete mode 100644 pkgs/development/tools/build-managers/bear/fix-functional-tests.patch diff --git a/pkgs/development/tools/build-managers/bear/default.nix b/pkgs/development/tools/build-managers/bear/default.nix index 489181187c4e..6595c143084f 100644 --- a/pkgs/development/tools/build-managers/bear/default.nix +++ b/pkgs/development/tools/build-managers/bear/default.nix @@ -6,7 +6,7 @@ ninja, pkg-config, grpc, - protobuf_25, + protobuf, openssl, nlohmann_json, gtest, @@ -22,13 +22,13 @@ stdenv.mkDerivation rec { pname = "bear"; - version = "3.1.3"; + version = "3.1.5"; src = fetchFromGitHub { owner = "rizsotto"; repo = pname; rev = version; - hash = "sha256-1nZPzgLWcmaRkOUXdm16IW2Nw/p1w8GBGEfZX/v+En0="; + hash = "sha256-pwdjytP+kmTwozRl1Gd0jUqRs3wfvcYPqiQvVwa6s9c="; }; nativeBuildInputs = [ @@ -43,7 +43,7 @@ stdenv.mkDerivation rec { buildInputs = [ grpc - protobuf_25 + protobuf openssl nlohmann_json gtest @@ -63,11 +63,6 @@ stdenv.mkDerivation rec { (lib.cmakeBool "ENABLE_FUNC_TESTS" false) ]; - patches = [ - # Fix toolchain environment variable handling and the Darwin SIP check. - ./fix-functional-tests.patch - ]; - postPatch = '' patchShebangs test/bin diff --git a/pkgs/development/tools/build-managers/bear/fix-functional-tests.patch b/pkgs/development/tools/build-managers/bear/fix-functional-tests.patch deleted file mode 100644 index 99d64f26d077..000000000000 --- a/pkgs/development/tools/build-managers/bear/fix-functional-tests.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/test/lit.cfg b/test/lit.cfg -index 118c979..b69fecc 100644 ---- a/test/lit.cfg -+++ b/test/lit.cfg -@@ -207,13 +207,8 @@ def is_preload_disabled(): - if is_windows: - return True - elif sys.platform == 'darwin': -- command = ['csrutil', 'status'] -- pattern = re.compile(r'System Integrity Protection status:\s+enabled') -- try: -- output = subprocess.check_output(command, stderr=subprocess.STDOUT) -- return any(pattern.match(line) for line in output.decode('utf-8').splitlines()) -- except (OSError, subprocess.CalledProcessError): -- return False -+ # csrutil(8) isn't available in the Nix build sandbox. -+ return True - else: - return False - -@@ -221,6 +216,11 @@ def is_preload_disabled(): - if not is_preload_disabled(): - config.available_features.add('preload') - -+# Preserve the variables required for the Nix toolchain wrappers. -+for var, value in os.environ.items(): -+ if var.startswith('NIX_'): -+ config.environment[var] = value -+ - print(config.substitutions) - print(config.environment) - print(config.available_features) From 43da99888c0d82825b868e5091467f0d7a286f8a Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman <145775305+xokdvium@users.noreply.github.com> Date: Thu, 17 Oct 2024 14:35:45 +0300 Subject: [PATCH 2/3] bear: re-enable tests Apply patch to run unit/lit tests in checkPhase instead of buildPhase. Move test dependencies to nativeCheckInputs/checkInputs. Use finalAttrs to make doCheck overridable. Disable failings tests from lit test suite. --- .../bear/0001-exclude-tests-from-all.patch | 25 +++++++++ .../tools/build-managers/bear/default.nix | 54 +++++++++++++++---- 2 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 pkgs/development/tools/build-managers/bear/0001-exclude-tests-from-all.patch diff --git a/pkgs/development/tools/build-managers/bear/0001-exclude-tests-from-all.patch b/pkgs/development/tools/build-managers/bear/0001-exclude-tests-from-all.patch new file mode 100644 index 000000000000..041ab7246eed --- /dev/null +++ b/pkgs/development/tools/build-managers/bear/0001-exclude-tests-from-all.patch @@ -0,0 +1,25 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f1ecfe0..9056f9d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -83,8 +83,9 @@ ExternalProject_Add(BearSource + -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS} + -DROOT_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} + ${CMAKE_CACHE_ARGS_EXTRA} +- TEST_BEFORE_INSTALL ++ TEST_EXCLUDE_FROM_MAIN + 1 ++ STEP_TARGETS test + TEST_COMMAND + ctest # or `ctest -T memcheck` + ) +@@ -100,7 +101,8 @@ if (ENABLE_FUNC_TESTS) + -DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR} + -DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR} + -DSTAGED_INSTALL_PREFIX:PATH=${STAGED_INSTALL_PREFIX} +- TEST_BEFORE_INSTALL ++ TEST_EXCLUDE_FROM_MAIN ++ STEP_TARGETS test + 1 + INSTALL_COMMAND + "" diff --git a/pkgs/development/tools/build-managers/bear/default.nix b/pkgs/development/tools/build-managers/bear/default.nix index 6595c143084f..01d7560b9302 100644 --- a/pkgs/development/tools/build-managers/bear/default.nix +++ b/pkgs/development/tools/build-managers/bear/default.nix @@ -20,14 +20,14 @@ coreutils, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "bear"; version = "3.1.5"; src = fetchFromGitHub { owner = "rizsotto"; - repo = pname; - rev = version; + repo = "bear"; + rev = finalAttrs.version; hash = "sha256-pwdjytP+kmTwozRl1Gd0jUqRs3wfvcYPqiQvVwa6s9c="; }; @@ -35,10 +35,6 @@ stdenv.mkDerivation rec { cmake ninja pkg-config - - # Used for functional tests, which run during buildPhase. - lit - python3 ]; buildInputs = [ @@ -46,7 +42,6 @@ stdenv.mkDerivation rec { protobuf openssl nlohmann_json - gtest spdlog c-ares zlib @@ -54,15 +49,52 @@ stdenv.mkDerivation rec { re2 ]; + patches = [ + # This patch is necessary to run tests in a separate phase. By default + # test targets are run with ALL, which is not what we want. This patch creates + # separate 'test' step targets for each cmake ExternalProject: + # - BearTest-test (functional lit tests) + # - BearSource-test (unit tests via gtest) + ./0001-exclude-tests-from-all.patch + ]; + + nativeCheckInputs = [ + lit + python3 + ]; + + checkInputs = [ + gtest + ]; + cmakeFlags = [ # Build system and generated files concatenate install prefix and # CMAKE_INSTALL_{BIN,LIB}DIR, which breaks if these are absolute paths. "-DCMAKE_INSTALL_BINDIR=bin" "-DCMAKE_INSTALL_LIBDIR=lib" - (lib.cmakeBool "ENABLE_UNIT_TESTS" false) - (lib.cmakeBool "ENABLE_FUNC_TESTS" false) + (lib.cmakeBool "ENABLE_UNIT_TESTS" finalAttrs.doCheck) + (lib.cmakeBool "ENABLE_FUNC_TESTS" finalAttrs.doCheck) ]; + checkTarget = lib.concatStringsSep " " [ + "BearTest-test" + "BearSource-test" + ]; + + doCheck = true; + + env = { + # Disable failing tests. The cause is not immediately clear. + LIT_FILTER_OUT = lib.concatStringsSep "|" [ + "cases/compilation/output/config/filter_compilers.sh" + "cases/intercept/preload/posix/execvpe/success_to_resolve.c" + "cases/intercept/preload/posix/popen/success.c" + "cases/intercept/preload/posix/posix_spawnp/success_to_resolve.c" + "cases/intercept/preload/posix/system/success.c" + "cases/intercept/preload/shell_commands_intercepted_without_shebang.sh" + ]; + }; + postPatch = '' patchShebangs test/bin @@ -87,4 +119,4 @@ stdenv.mkDerivation rec { platforms = platforms.unix; maintainers = with maintainers; [ DieracDelta ]; }; -} +}) From 7281ff8a09af2cc30b8c648c8dff843934026812 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman <145775305+xokdvium@users.noreply.github.com> Date: Thu, 17 Oct 2024 14:59:48 +0300 Subject: [PATCH 3/3] bear: move to pkgs/by-name --- .../be}/bear/0001-exclude-tests-from-all.patch | 0 .../bear/default.nix => by-name/be/bear/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 3 files changed, 2 deletions(-) rename pkgs/{development/tools/build-managers => by-name/be}/bear/0001-exclude-tests-from-all.patch (100%) rename pkgs/{development/tools/build-managers/bear/default.nix => by-name/be/bear/package.nix} (100%) diff --git a/pkgs/development/tools/build-managers/bear/0001-exclude-tests-from-all.patch b/pkgs/by-name/be/bear/0001-exclude-tests-from-all.patch similarity index 100% rename from pkgs/development/tools/build-managers/bear/0001-exclude-tests-from-all.patch rename to pkgs/by-name/be/bear/0001-exclude-tests-from-all.patch diff --git a/pkgs/development/tools/build-managers/bear/default.nix b/pkgs/by-name/be/bear/package.nix similarity index 100% rename from pkgs/development/tools/build-managers/bear/default.nix rename to pkgs/by-name/be/bear/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e5e6adaedd9d..de335d5cd018 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17027,8 +17027,6 @@ with pkgs; buildBazelPackage = darwin.apple_sdk_11_0.callPackage ../build-support/build-bazel-package { }; - bear = callPackage ../development/tools/build-managers/bear { }; - bingrep = callPackage ../development/tools/analysis/bingrep { }; binutils-unwrapped = callPackage ../development/tools/misc/binutils {