ninenines / erlang.mk

A build tool for Erlang that just works.
https://erlang.mk
ISC License
578 stars 241 forks source link

Failing on Mac Sonoma 14 M2 #992

Open pankajmyt opened 11 months ago

pankajmyt commented 11 months ago

The build was working before Sonoma upgrade. I have updated all known dependencies. Not sure where the problem is from the log that's generated

command -> gmake

cp .erlang.mk.build/erlang.mk ./erlang.mk
rm -rf .erlang.mk.build
 GEN    clean-app
 GEN    coverdata-clean
 DEPEND server.d
/bin/sh: line 1: 48339 Bus error: 10           erl +A1 -noinput -boot no_dot_erlang -pz /Users/pankajsoni/Desktop/myorg/backend/repos/server/.erlang.mk/rebar3/_build/prod/lib/*/ebin/ -eval E = ets:new(makedep, [bag]),   G = digraph:new([acyclic]), ErlFiles = lists:usort(string:tokens(\"src/analytics/mod_firehose.erl src/analytics/mod_metrics.erl src/analytics/mod_migrate.erl src/care/mod_admin.erl src/care/mod_care.erl src/care/mod_user_events.erl src/crons/mod_channels_cleanup.erl src/gen_mod.erl src/gen_req.erl src/group/mod_broadcast_api_proc.erl src/group/mod_broadcast_pool_proc.erl src/group/mod_broadcast_proc.erl src/group/mod_group_api.erl src/group/mod_group_api_proc.erl src/group/mod_group_internal.erl src/group/mod_group_proc.erl src/http/mod_http.erl src/http/mod_http_client.erl src/listener/mod_alive.erl src/listener/mod_listener.erl src/listener/mod_rest_handler.erl src/listener/mod_websocket.erl src/messaging/mod_archive.erl src/messaging/mod_message.erl src/messaging/mod_message_external.erl src/messaging/mod_pinned.erl src/messaging/mod_receipt.erl src/messaging/mod_recent.erl src/messaging/mod_suspect.erl src/messaging/mod_suspect_external.erl src/messaging/mod_unread.erl src/messaging/mod_vulgar.erl src/messaging/mod_vulgar_external.erl src/mod_cluster.erl src/mod_config.erl src/mod_counter.erl src/mod_email.erl src/mod_hooks.erl src/mod_monitor.erl src/mod_redis.erl src/mod_router.erl src/mod_secret.erl src/mod_session.erl src/mod_sql.erl src/mod_static.erl src/mod_stream_mgmt.erl src/mod_tag.erl src/mod_time.erl src/mod_utils.erl src/notification/mod_notification.erl src/notification/mod_safari.erl src/queued_task/mod_queued_task.erl src/queued_task/mod_task_user.erl src/s3/mod_amazons3.erl src/s3/mod_file_upload.erl src/server_app.erl src/server_sup.erl src/sms/mod_sms_group.erl src/user/mod_account.erl src/user/mod_import.erl src/user/mod_recommendation.erl src/user/mod_relay.erl src/user/mod_report.erl src/user/mod_user.erl src/user/mod_user_external.erl src/user/mod_user_internal.erl\", \" \")),  DepsDir = \"/Users/pankajsoni/Desktop/myorg/backend/repos/server/deps\",    AppsDir = \"/Users/pankajsoni/Desktop/myorg/backend/repos/server/apps\",    DepsDirsSrc = \" /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/apns/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/aws/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/aws_signature/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/base64url/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/bbmustache/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/certifi/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/cf/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/cowboy/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/cowlib/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/dynamic_compile/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/ecsv/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/eredis/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlcass/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlpool/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlware_commons/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlydtl/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/fcm/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/goldrush/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/google_oauth/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/gun/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/hackney/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/idna/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/jsx/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/lager/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/lager_json/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/metrics/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/mimerl/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/mysql/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/mysql_poolboy/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/p1_utils/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/parse_trans/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/poolboy/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/quickrand/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/ranch/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/relx/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/ssl_verify_fun/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/unicode_util_compat/src /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/uuid/src\",   DepsDirsInc = \" /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/apns/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/cowlib/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/ecsv/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/eredis/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlcass/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlpool/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlware_commons/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/erlydtl/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/fcm/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/google_oauth/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/hackney/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/lager/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/mysql/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/p1_utils/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/parse_trans/include /Users/pankajsoni/Desktop/myorg/backend/repos/server/deps/uuid/include\",  AppsDirsSrc = \"\", AppsDirsInc = \"\", DepsDirs = lists:usort(string:tokens(DepsDirsSrc++DepsDirsInc, \" \")), AppsDirs = lists:usort(string:tokens(AppsDirsSrc++AppsDirsInc, \" \")), Modules = [{list_to_atom(filename:basename(F, \".erl\")), F} || F <- ErlFiles], Add = fun (Mod, Dep) ->     case lists:keyfind(Dep, 1, Modules) of          false -> ok;            {_, DepFile} ->         {_, ModFile} = lists:keyfind(Mod, 1, Modules),              ets:insert(E, {ModFile, DepFile}),              digraph:add_vertex(G, Mod),             digraph:add_vertex(G, Dep),             digraph:add_edge(G, Mod, Dep)       end end,    AddHd = fun (F, Mod, DepFile) ->        case file:open(DepFile, [read]) of          {error, enoent} ->              ok;         {ok, Fd} ->             {_, ModFile} = lists:keyfind(Mod, 1, Modules),              case ets:match(E, {ModFile, DepFile}) of                    [] ->                       ets:insert(E, {ModFile, DepFile}),                      F(F, Fd, Mod,0);        _ -> ok             end     end end,    SearchHrl = fun     F(_Hrl, []) -> {error,enoent};      F(Hrl, [Dir|Dirs]) ->           HrlF = filename:join([Dir,Hrl]),    case filelib:is_file(HrlF) of               true  ->                {ok, HrlF};             false -> F(Hrl,Dirs)            end end,    Attr = fun  (_F, Mod, behavior, Dep) ->         Add(Mod, Dep);      (_F, Mod, behaviour, Dep) ->            Add(Mod, Dep);      (_F, Mod, compile, {parse_transform, Dep}) ->           Add(Mod, Dep);      (_F, Mod, compile, Opts) when is_list(Opts) ->          case proplists:get_value(parse_transform, Opts) of              undefined -> ok;            Dep -> Add(Mod, Dep)            end;        (F, Mod, include, Hrl) ->           case SearchHrl(Hrl, [\"src\", \"include\",AppsDir,DepsDir]++AppsDirs++DepsDirs) of          {ok, FoundHrl} -> AddHd(F, Mod, FoundHrl);              {error, _} -> false         end;        (F, Mod, include_lib, Hrl) ->           case SearchHrl(Hrl, [\"src\", \"include\",AppsDir,DepsDir]++AppsDirs++DepsDirs) of              {ok, FoundHrl} -> AddHd(F, Mod, FoundHrl);              {error, _} -> false         end;        (F, Mod, import, {Imp, _}) ->           IsFile =                case lists:keyfind(Imp, 1, Modules) of                  false -> false;                 {_, FilePath} -> filelib:is_file(FilePath)              end,            case IsFile of              false -> ok;                true -> Add(Mod, Imp)       end;        (_, _, _, _) -> ok  end,    MakeDepend = fun        (F, Fd, Mod, StartLocation) ->          {ok, Filename} = file:pid2name(Fd),         case io:parse_erl_form(Fd, undefined, StartLocation) of             {ok, AbsData, EndLocation} ->                   case AbsData of                     {attribute, _, Key, Value} ->                           Attr(F, Mod, Key, Value),                           F(F, Fd, Mod, EndLocation);                 _ -> F(F, Fd, Mod, EndLocation)                 end;                {eof, _ } -> file:close(Fd);                {error, ErrorDescription } ->               file:close(Fd);             {error, ErrorInfo, ErrorLocation} ->                    F(F, Fd, Mod, ErrorLocation)            end,            ok  end,    [begin      Mod = list_to_atom(filename:basename(F, \".erl\")),     case file:open(F, [read]) of            {ok, Fd} -> MakeDepend(MakeDepend, Fd, Mod,0);          {error, enoent} -> ok       end end || F <- ErlFiles],  Depend = sofs:to_external(sofs:relation_to_family(sofs:relation(ets:tab2list(E)))), CompileFirst = [X || X <- lists:reverse(digraph_utils:topsort(G)), [] =/= digraph:in_neighbours(G, X)], TargetPath = fun(Target) ->     case lists:keyfind(Target, 1, Modules) of           false -> \"\";          {_, DepFile} ->     DirSubname = tl(string:tokens(filename:dirname(DepFile), \"/\")),               string:join(DirSubname ++ [atom_to_list(Target)], \"/\")        end end,    Output0 = [     \"# Generated by Erlang.mk. Edit at your own risk!\n\n\",       [[F, \"::\", [[\" \", D] || D <- Deps], \"; @touch \$@\n\"] || {F, Deps} <- Depend],        \"\nCOMPILE_FIRST +=\", [[\" \", TargetPath(CF)] || CF <- CompileFirst], \"\n\" ],  Output = case \"é\" of      [233] -> unicode:characters_to_binary(Output0);     _ -> Output0    end,    ok = file:write_file(\"server.d\", Output), halt()" -- erlang.mk
gmake[1]: *** [erlang.mk:4717: server.d] Error 138
gmake: *** [erlang.mk:4498: app] Error 2
essen commented 11 months ago

Try disabling the Erlang JIT. You'll want to add -emu_flavor emu to the ERL = ... line in your erlang.mk file, the line looks like this: https://github.com/ninenines/erlang.mk/blob/master/core/core.mk#L69

If it goes further then there is a problem with the Erlang JIT on that platform.