2

I've been playing around with rebar3 (3.15.0) just to get it to run with the basic templates, and running into issues just trying to get a simple Hello World type example program going. I am starting with the template command to build a new release:
rebar3 new release myfirstproj.

It works fine when I run rebar3 shell but gives me the error below when running the release command:
myfirstproj.cmd console after building it with rebar3 release.

The only thing I've added to the base template is a io:format("Hello world!") in the supervisor.. It seems like the undef below is indicating it can't find the myfirstproj_app:start function.. any ideas why it doesn't work here but works in the rebar3 shell?

OTP 23 [erts-11.0] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:30]

=CRASH REPORT==== 21-Apr-2021::22:39:52.740000 ===
  crasher:
    initial call: application_master:init/4
    pid: <0.85.0>
    registered_name: []
    exception exit: {bad_return,
                        {{myfirstproj_app,start,[normal,[]]},
                         {'EXIT',
                             {undef,
                                 [{myfirstproj_app,start,[normal,[]],[]},
                                  {application_master,start_it_old,4,
                                      [{file,"application_master.erl"},
                                       {line,277}]}]}}}}
      in function  application_master:init/4 (application_master.erl, line 138)
    ancestors: [<0.83.0>]
    message_queue_len: 1
    messages: [{'EXIT',<0.85.0>,normal}]
    links: [<0.83.0>,<0.44.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 376
    stack_size: 28
    reductions: 224
  neighbours:

=INFO REPORT==== 21-Apr-2021::22:39:21.439000 ===
    application: myfirstproj
    exited: {bad_return,
                {{myfirstproj_app,start,[normal,[]]},
                 {'EXIT',
                     {undef,
                         [{myfirstproj_app,start,[normal,[]],[]},
                          {application_master,start_it_old,4,
                              [{file,"application_master.erl"},
                               {line,277}]}]}}}}
    type: permanent

My app code hasn't been changed from the template:

%%%-------------------------------------------------------------------
%% @doc myfirstproj public API
%% @end
%%%-------------------------------------------------------------------

-module(myfirstproj_app).

-behaviour(application).

-export([start/2, stop/1]).

start(_StartType, _StartArgs) ->
    myfirstproj_sup:start_link().

stop(_State) ->
    ok.

%% internal functions

Same with my app.src:

{application, myfirstproj,
 [{description, "An OTP application"},
  {vsn, "0.1.0"},
  {registered, []},
  {mod, {myfirstproj_app, []}},
  {applications,
   [kernel,
    stdlib
   ]},
  {env,[]},
  {modules, []},

  {licenses, ["Apache 2.0"]},
  {links, []}
 ]}.

The rebar.config hasn't been modified from the template.

myfirstproj_sup.erl:

%%%-------------------------------------------------------------------
%% @doc myfirstproj top level supervisor.
%% @end
%%%-------------------------------------------------------------------

-module(myfirstproj_sup).
-behaviour(supervisor).
-export([start_link/0]).
-export([init/1]).
-define(SERVER, ?MODULE).

start_link() ->
    io:format("Hey, we started!"),
    supervisor:start_link({local, ?SERVER}, ?MODULE, []).

init([]) ->
    SupFlags = #{strategy => one_for_all,
                 intensity => 0,
                 period => 1},
    %ChildSpecs = [{worker1,
        %{file_watcher, start_link, []}, permanent, 1000, worker, [file_watcher]}],
    ChildSpecs = [],
    {ok, {SupFlags, ChildSpecs}}.

%% internal functions
Tim
  • 23
  • 3

0 Answers0