Я пытаюсь построить внутренний проект Haskell на NixOS с помощью cabal2nix. Он обертывает (и, следовательно, зависит от) чужую библиотеку, которая на Ubuntu будет строить на wget
ting источник, а затем работает make && make install && ldconfig
. Таким образом, когда cabal идет на сборку программы, она, по-видимому, может найти соответствующие файлы заголовков (которые находятся в /usr/local/include/ta-lib
или /usr/include/ta-lib
).Cabal не может найти иностранную библиотеку при создании на NixOS
В Nix процесс, как я понимаю, - это установить файл .nix, чтобы указать, как получить и построить источник, а затем Nix устанавливает изолированные среды сборки. Когда я это делаю, иностранная библиотека извлекается и создается соответствующим образом.
Когда Никс запускает шаг конфигурирования, она выглядит хорошо:
configureFlags: --verbose --prefix=/nix/store/fwpw03bd0c2m5yb7v2wc7g6f0qj912ra-talib-0.1.0.0 --libdir=$prefix/lib/$compiler --libsubdir=$pkgid --with-gcc=gcc --package-db=/tmp/nix-build-talib-0.1.0.0.drv-0/package.conf.d --ghc-option=-optl=-Wl,-rpath=/nix/store/fwpw03bd0c2m5yb7v2wc7g6f0qj912ra-talib-0.1.0.0/lib/ghc-7.10.2/talib-0.1.0.0 --enable-split-objs --disable-library-profiling --disable-executable-profiling --enable-shared --enable-library-vanilla --enable-executable-dynamic --enable-tests --extra-include-dirs=/nix/store/gvglncjgd5yif9bc03qalmp2mrjp524n-ta-lib-0.4.0/include --extra-lib-dirs=/nix/store/gvglncjgd5yif9bc03qalmp2mrjp524n-ta-lib-0.4.0/lib
С --extra-include-dirs
и --extra-lib-dirs
набором для правильных путей в магазине Nix. Однако, когда речь идет, чтобы построить это жалуется,
Setup: Missing dependency on a foreign library:
* Missing C library: ta_lib
К сожалению, я не понимаю, как заговорщики заключается в определении того, присутствует ли внешняя библиотека. Я читаю здесь (Haskell how to resolve cabal error: Missing dependencies on foreign libraries?), что cabal попытается построить и связать программу C, которая состоит из каждого найденного заголовка. Итак, почему-то это не находит правильную библиотеку.
Что не так? Это связано с шагом в Ubuntu для запуска ldconfig?
Что такое 'ta-lib'? Я не могу найти его в Nixpkgs. –
Вы правы, это не в nixpkgs. вот мой файл ta_lib.nix: https://gist.github.com/charles-cooper/0bd4398f223e64ba52f6 –