2016-11-25 1 views
0

J'ai fonction simple:Rebar3 pas "y compris" ma non-application deps

do_stuff(_Whatever) -> 
    jiffy:decode(<<"{\"foo\": \"bar\"}">>). 

Comme vous pouvez le voir dépend de tournemain bibliothèque. Alors je l'ai ajouté dans rebar.config:

{deps, [ 
    {cowboy, {git, "https://github.com/ninenines/cowboy", {tag, "2.0.0-pre.1"}}}, 
    {jiffy, {git, "https://github.com/davisp/jiffy", {tag, "0.14.8"}}} 
]}. 
{relx, [{release, { myapp, "0.1.0" }, 
    [vizcerl, 
     sasl 
     ]}, 

    %{sys_config, "./config/sys.config"}, 
    %{vm_args, "./config/vm.args"}, 

    {dev_mode, true}, 
    {include_erts, false}, 

    {extended_start_script, true}] 
}. 

Mais quand je lance rebar3 run et programme get font ce point j'obtiens l'erreur que cette fonction est définie.

Edit: je lance rebar3 tree pour vérifier si dep est reconnu et voici résultat:

└─ myapp─0.1.0 (project app) 
    ├─ cowboy─2.0.0-pre.1 (git repo) 
    │ ├─ cowlib─1.0.0 (git repo) 
    │ └─ ranch─1.0.0 (git repo) 
    └─ jiffy─0.14.8 (git repo) 
+0

avez-vous exécuté la mise à niveau de rebar3 en premier. Si je suis correct, il installera toutes les dépendances nécessaires dans le répertoire deps. – Pascal

+0

Bien sûr ... J'ai aussi tout nettoyé. Edit: Je viens de faire rebar3 upgrade et rien n'a changé. – Haito

+0

@Pascal A noter également que cowboy fonctionne et jiffy ne fonctionne pas – Haito

Répondre

3

tournemain a besoin d'un plugin compilateur port qui ne fait pas partie de barres d'armature. Vous pouvez le configurer dans votre rebar.config comme suit:

{plugins, [ 
    { pc, {git, "[email protected]:blt/port_compiler.git", {branch, "master"}}} 
]}. 
{overrides, 
[{override, jiffy, [ 
    {plugins, [pc]}, 
    {artifacts, ["priv/jiffy.so"]}, 
    {provider_hooks, [ 
     {post, 
      [ 
      {compile, {pc, compile}}, 
      {clean, {pc, clean}} 
      ] 
      }] 
     } 
    ]} 
]}. 
+0

Cela faisait partie de la réponse .. Et je devais l'ajouter aux applications. Je pensais que la liste des applications était pour commencer ... Et il semble que non. Mais après avoir ajouté votre partie et ajouté jiffy à la liste des applications, il semble fonctionner ou du moins pas planter – Haito

+0

je crois que vous devez ajouter Jiffy aux applications parce que le nif doit être initialisé. Quoi qu'il en soit, les applications sont pour toutes les applications que vous voulez inclure dans votre version/environnement, qu'elles aient ou non besoin d'être démarrées – ArgumentError

+0

Il s'est écrasé avant d'ajouter ce plugin. Je n'avais aucune idée qu'il y avait besoin de ça. – Haito