systools.make_tar не может найти файлы.app в архиве.ez

Я создаю релиз с reltool, Выходная папка rel/lib содержит все приложения с их ebin папки упакованы в .ez архивы, например, для crypto:

crypto-2.2
crypto-2.2/priv/ (with some files in the priv folder)
crypto-2.2.ez
crypto-2.2.ez/crypto-2.2/ebin/crypto.app
crypto-2.2.ez/crypto-2.2/ebin/ (with some .beam files in the ebin folder)

я начинаю erl в rel папка. Путь к ebin папка находится в пути кода, т.е. code:get_path(). возвращается среди других (и аналогично для других приложений в lib папка):

"/usr/home/g/work/project/rel/lib/crypto-2.2.ez/crypto-2.2/ebin"

Но все же при попытке позвонить systools:make_tar("releases/0.1/project"). жалуется, что не может найти .app файлы (для всех приложений, упомянутых в релизе):

crypto: File not found: "crypto.app"

Я вижу .app файл находится в архиве, это только то, что systools не вижу этого по какой-то причине. Я пытался указать ebin папка при звонке make_tar с использованием path вариант, но он не работает (та же ошибка, что crypto.app пропал, отсутствует). Также:

file:consult("/usr/home/g/work/project/rel/lib/crypto-2.2.ez/crypto-2.2/ebin/crypto.app").

дает мне: {error,enotdir},

Может быть systools еще не работает с архивами? Есть ли другой способ создания архива tar из релиза, сделанного с reltool? Любая помощь будет принята с благодарностью.

1 ответ

Вы могли бы избежать этого вообще, также исключив каталог ebin из файлов.ez, добавив следующее в ваш reltool.config

{excl_archive_filters, ["^include$","^priv$","^ebin$"]}

В большинстве случаев это будет означать отключение создания большинства файлов.ez, но релиз все равно должен работать нормально.

Другие вопросы по тегам