`` Rebar Générer '' n'inclut pas certaines dépendances dans la version générée

StackOverflow https://stackoverflow.com/questions/9433316

  •  12-11-2019
  •  | 
  •  

Question

J'ai un problème étrange pour créer une publication d'une application Erlang sur laquelle je travaille, en utilisant des barres d'armature. Essentiellement, il ne semble pas localiser le client Erlang Thrift, qui est installé sur mon système. Je peux le vérifier en chargeant l'application Thrift à partir de l'invite Erlang:

$ erl
Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
1> application:load(thrift).
ok
2> application:loaded_applications().
[{kernel,"ERTS  CXC 138 10","2.14.5"},
 {thrift,"Thrift bindings","0.9.0-dev"},
 {stdlib,"ERTS  CXC 138 10","1.17.5"}]
3> 

Cependant, lorsque j'essaie d'exécuter «Rebar Generate» pour construire une version de mon application, cela échoue:

$ rebar generate
==> rel (generate)
{"init terminating in do_boot","Release fern uses non existing application thrift"}

Crash dump was written to: erl_crash.dump
init terminating in do_boot (Release fern uses non existing application thrift)

Voici mon fichier d'application, Fern.app.src:

{application, fern, [
  {description, "elided"},
  {vsn, "0.5.0"},
  {modules, [
    fern_app,
    fern_sup,
    accounts_repository,
    fern_http_request,
    fern_system_api,
    metadata_fetcher,
    metadata_process,
    repository,
    repository_server,
    timestamps_repository,
    hbase_thrift,
    hbase_types,
    utils
  ]},
  {registered, [
    fern_sup
  ]},
  {applications, [
    kernel,
    stdlib,
    inets,
    ssl 
  ]},
  {mod, { fern_app, []}},
  {env, []},
  {agner, [
    {requires, ["jiffy", "meck", "mochiweb"]}
  ]}
]}.

... et mon reltool.config:

{sys, [
       {lib_dirs, ["../apps", "../deps"]},
       {erts, [{mod_cond, derived}, {app_file, strip}]},
       {app_file, strip},
       {rel, "fern", "1",
        [
         kernel,
         stdlib,
         sasl,
         ssl,
         inets,
         thrift,
         fern
        ]},
       {rel, "start_clean", "",
        [
         kernel,
         stdlib
        ]},
       {boot_rel, "fern"},
       {profile, embedded},
       {incl_cond, exclude},
       {excl_archive_filters, [".*"]}, %% Do not archive built libs
       {excl_sys_filters, ["^bin/.*", "^erts.*/doc", "^erts.*/src",
                           "^erts.*/info", "^erts.*/man",
                           "^erts.*/lib", "^erts.*/include",
                           "^erts.*/bin/(dialyzer|typer)"]},
       {excl_app_filters, ["\.gitignore"]},
       {app, sasl,   [{incl_cond, include}]},
       {app, stdlib, [{incl_cond, include}]},
       {app, kernel, [{incl_cond, include}]},
       {app, inets,  [{incl_cond, include}]},
       {app, crypto, [{incl_cond, include}]},
       {app, public_key, [{incl_cond, include}]},
       {app, ssl,    [{incl_cond, include}]},
       {app, thrift, [{incl_cond, include}]},
       {app, fern, [{incl_cond, include}]}
      ]}.

{target_dir, "fern"}.

{overlay, [
           {mkdir, "log/sasl"},
           {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
           {copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"},
           {copy, "files/fern", "bin/fern"},
           {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
           {copy, "files/fern.cmd", "bin/fern.cmd"},
           {copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
           {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
          ]}.

Je dois noter que si je supprime l'épargne de la liste des applications dans les deux, la version génère, mais n'inclut pas les bibliothèques d'épargne, et échoue donc au moment de l'exécution. Quelqu'un pourrait-il me proposer des conseils sur ce que je fais de mal ici?

Merci beaucoup,

Tim

Était-ce utile?

La solution

Pour le bien de toute autre personne qui rencontre cela - j'ai finalement résolu le problème. Pour une raison quelconque, Rebar annule l'application «Thrift» à «Thrift-0.9.0-Dev» à l'intérieur de la version. La modification de toutes les instances de l'atome «Thrift» dans la configuration ci-dessus en «Thrift-0.9.0-Dev» (Remarque Il s'agit d'un atome, pas d'une chaîne - utiliser des citations uniques) le réglera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top