Struggling with cmake dependencies

I’ve been trying to add a new nix package for manticore-search (Add new manticore-search package by jdelStrother · Pull Request #186112 · NixOS/nixpkgs · GitHub), but keep running into problems getting cmake to locate its various dependencies.

To take a specific example, manticore depends on re2, and and uses cmake to look it up (eg find_package(re2 CONFIG) / find_package(re2 MODULE) ). (manticoresearch/GetRE2.cmake at c63d173592388ebaf8f17478c4930a3fce903c0f · manticoresoftware/manticoresearch · GitHub)

Just adding re2 to buildInputs and relying on the cmake shell hooks doesn’t seem to be cutting it, and I don’t really get why. re2 doesn’t supply a re2-config.cmake file (though does have a pkgconfig/re2.pc). Do I need to generate my own re2-config.cmake ? Or is there a better way of specifying that dependency?

I’ve also been spamming cmake flags in the hopes one of these variations might do something, but no luck so far.


You can see the current WIP here:

which currently fails with these build errors: gist:0989545e3542132a4f995fadda3b63ef · GitHub

Did you already try adding pkg-config to nativeBuildInputs?

Yeah, didn’t make any difference.

The most important piece of info upstream is the FindRe2.cmake module, which documents how to add additional paths to the search paths: manticoresearch/FindRE2.cmake at c63d173592388ebaf8f17478c4930a3fce903c0f · manticoresoftware/manticoresearch · GitHub

That means "-DWITH_RE2_INCLUDES=${re2}/include" "-DWITH_RE2_LIBS=${re2}/lib" might do the trick. YMMV, I didn’t actually test that, but it should get you closer.

NB: There is an open PR that changes re2 to build with CMake: re2: switch to CMake by azahi · Pull Request #196123 · NixOS/nixpkgs · GitHub. But that won’t help you in this case.

Thanks, I managed to mostly get that approach working.
I did have add -DWITH_RE2_FORCE_STATIC=0, and then rename FindRE2.cmake to Findre2.cmake - I guess maybe that codepath has never been tried on a case-sensitive filesystem…? :confused:

@onny over at github suggested replacing their with_get logic with with_menu (manticoresearch/CMakeLists.txt at c01ec3de1d20cbcb040728b401432042ac39ca44 · manticoresoftware/manticoresearch · GitHub), so their GetFoo.cmake files are bypassed entirely, which helps cmake/pkg-config find the dependencies without needing to manually specify all the paths. Think I’m going to try that approach.