Как можно использовать набор инструментов ocamlfind / ocamlbuild для локальных копий пакетов проекта? - PullRequest
6 голосов
/ 01 сентября 2011

Я пытаюсь сохранить свой проект автономным, со всеми основными сторонними библиотечными зависимостями, созданными и указанными в репозитории проекта.Основные части моего проекта, посвященные ocaml, основаны на ocamlbuild.

Но для сложных пакетов, таких как «Батареи включены», существует большая вероятность, что они будут связаны в проект через ocamlfind.ocamlfind, похоже, предполагает, что пакеты будут установлены глобально.(Я понимаю, что это позволяет переменным окружения и его conf указывать на альтернативные местоположения, но, по-видимому, оно все еще основано на предположении, что пакеты настроены глобально - у него нет эквивалента -I или -L флагов для динамического расширениянапример, путь поиска пакетов. Возможно, можно установить переменные среды для динамического переопределения конфигурации ocamlfind для поиска в локальном дереве проекта, но это гораздо более неловко, чем простые аргументы, и также кажется, что это будет сложносделать это без одновременного удаления обнаруживаемости основных системных пакетов в первичном site-lib, что также может потребоваться.)

Что такое разумная стратегия построения и построения против нетривиального третьегопартийные пакеты в локальном дереве проекта для проекта, использующего ocamlbuild?

1 Ответ

3 голосов
/ 02 сентября 2011

Использование переменных окружения (или отдельного findlib.conf) - это простой способ. И это не требует удаления возможности обнаружения глобальных пакетов, см. Справочное руководство для path и destdir в findlib.conf (OCAMLPATH и OCAMLFIND_DESTDIR переменных среды соответственно).

В основном вы устанавливаете destdir для локального пути при установке локальных пакетов проекта и добавляете к path при их использовании (не забудьте создать stublibs в destdir (и добавьте его в ld.conf в stdlib, если вы строите двоичные файлы байт-кода)).

PS Я думаю, что этот подход используется в ocsigen-bundler .

Пожалуйста, сообщите, если у вас возникли проблемы (потому что я тоже заинтересован в использовании этого же подхода).

...