Size: a a a

2020 August 03

AB

Alexander Bogosyan in ErlangRus
Да создаёт, мой сценарий: выкачать с++ проект, собрать , положить бинарь в priv, даль загрузить как application и запускать через exec(code:priv() ++ "name"), но мне кажется что можно и просто выкачивать и ничего не делать и не включать этот app в проект, а использовать для сборки nif...
источник

AB

Alexander Bogosyan in ErlangRus
В целом чем тебе git submodules к примеру не устраивают?
источник

AB

Alexander Bogosyan in ErlangRus
На pre compile hook вешаешь submodule update, и все, мы так*. proto подгружаем например для gpb
источник

ИИ

Иванов Иванов... in ErlangRus
Alexander Bogosyan
В целом чем тебе git submodules к примеру не устраивают?
они плохо работают, уже не помню деталей, но даже в чисто плюсовом проекте создавали проблемы. лучше уж subtree , но  это отдельная тема.  в целом в rebar  проекте хотелось бы инструментами deps пользоваться, с возможностью управлять версией и веткой, чтобы было симметрично ..
источник

ИИ

Иванов Иванов... in ErlangRus
Alexander Bogosyan
Да создаёт, мой сценарий: выкачать с++ проект, собрать , положить бинарь в priv, даль загрузить как application и запускать через exec(code:priv() ++ "name"), но мне кажется что можно и просто выкачивать и ничего не делать и не включать этот app в проект, а использовать для сборки nif...
а как вы задаете свой алгоритм компиляции-установки? через инструменты той зависимости?
источник

AB

Alexander Bogosyan in ErlangRus
Иванов Иванов
а как вы задаете свой алгоритм компиляции-установки? через инструменты той зависимости?
rebar.config, можно подложить в репозиторий dependency
источник

AB

Alexander Bogosyan in ErlangRus
а можно оверрайдами в своем проекте прописать все
источник

AB

Alexander Bogosyan in ErlangRus
{deps, [
   {rtpengine,    {raw, {git, "https://github.com/sipwise/rtpengine.git",  {branch, "master"}}}}
]}.
{overrides, [
{override, rtpengine, [
       {pre_hooks, [{compile, "make -C daemon with_iptables_option=no with_transcoding=no"}]},
       {post_hooks, [
           {compile, "mkdir -p priv"},
           {compile, "cp -vf daemon/rtpengine priv/rtpengine"},
           {clean,   "make clean -C daemon with_iptables_option=no with_transcoding=no"},
           {clean,   "rm -vf priv/rtpengine"}
       ]}
   ]},
]}
источник

AB

Alexander Bogosyan in ErlangRus
вот пример
источник

ИИ

Иванов Иванов... in ErlangRus
Alexander Bogosyan
а можно оверрайдами в своем проекте прописать все
да, по-сути патч.  спасибо!
источник

DG

Dmitry Golubev in ErlangRus
Иванов Иванов
у rebar3 есть прозначный способ извлечь зависимость без сборки? например, если мне для nif нужны какие-то зависимости и я хочу средства rebar использовать для их извлечения. erlang.mk нет с этим проблем, и извлечь и пропатчить можно.
папка _checkouts в корне проекта может помочь - проверено.

Из документации по rebar3:
https://www.rebar3.org/docs/dependencie

"Checkout Dependencies
To handle the case of dependencies you wish to work on locally, there is the _checkouts directory. Simply make a symlink or copy your dependency to _checkouts at the top level of your project. Any application/plugin in _checkouts will take precedence over the same application if it is additionally listed in the rebar.config's deps, plugins or project_plugins. This also overrides anything 'plugins' . This also overrides anything already fetched to _build.
Note that _checkout is an override, this means that for it to work an dep/plugin entry in rebar.config needs to exist"
источник

ИИ

Иванов Иванов... in ErlangRus
Dmitry Golubev
папка _checkouts в корне проекта может помочь - проверено.

Из документации по rebar3:
https://www.rebar3.org/docs/dependencie

"Checkout Dependencies
To handle the case of dependencies you wish to work on locally, there is the _checkouts directory. Simply make a symlink or copy your dependency to _checkouts at the top level of your project. Any application/plugin in _checkouts will take precedence over the same application if it is additionally listed in the rebar.config's deps, plugins or project_plugins. This also overrides anything 'plugins' . This also overrides anything already fetched to _build.
Note that _checkout is an override, this means that for it to work an dep/plugin entry in rebar.config needs to exist"
не очень понятно как оно должно помочь? делать туда subtree ?
источник

DG

Dmitry Golubev in ErlangRus
Тот код зависимостей, которые обычно указываются в deps, и выкачивается из внешнего источника, ручками скопировать в _checkouts
источник

ИИ

Иванов Иванов... in ErlangRus
Dmitry Golubev
Тот код зависимостей, которые обычно указываются в deps, и выкачивается из внешнего источника, ручками скопировать в _checkouts
а зачем мне ручками?  вопрос в том, как с помощью rebar извлекать не erlang зависимости
источник

ИИ

Иванов Иванов... in ErlangRus
но по-сути да, можно сдеать subree в этот каталог (=ручками)
источник

DG

Dmitry Golubev in ErlangRus
Сорри, тогда скорее всего патч правильнее
источник

DG

Dmitry Golubev in ErlangRus
_checkouts удобен, когда есть зависимости во внешнем реаозитории, который например сейчас недоступен.
источник

ИИ

Иванов Иванов... in ErlangRus
у меня вот сразу не завелся. не скомпилировался сам плагин.
источник

AB

Alexander Bogosyan in ErlangRus
возможно надо взять с той ветки с которой он в hex выложен: https://github.com/alertlogic/rebar_raw_resource
источник

AB

Alexander Bogosyan in ErlangRus
ну или прямо из hex
источник