Issues running `mix docs` - (UndefinedFunctionError) function Makeup.Application

I am having issues running mix doc all of a sudden though I did not make a lot of changes to my library codepagex for a long time. I am getting:

codepagex (master *) % mix docs

23:09:22.795 [notice] Application makeup exited: exited in: Makeup.Application.start(:normal, [])
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function Makeup.Application.start/2 is undefined (module Makeup.Application is not available)
            (makeup 1.1.2) Makeup.Application.start(:normal, [])
            (kernel 10.0) application_master.erl:295: :application_master.start_it_old/4

23:09:22.802 [notice] Application nimble_parsec exited: :stopped

23:09:22.802 [notice] Application earmark_parser exited: :stopped

23:09:22.802 [notice] Application eex exited: :stopped
** (MatchError) no match of right hand side value: {:error, {:makeup, {:bad_return, {{Makeup.Application, :start, [:normal, []]}, {:EXIT, {:undef, [{Makeup.Application, :start, [:normal, []], []}, {:application_master, :start_it_old, 4, [file: ~c"application_master.erl", line: 295]}]}}}}}}
    (ex_doc 0.33.0) lib/mix/tasks/docs.ex:337: Mix.Tasks.Docs.run/3
    (mix 1.16.3) lib/mix/task.ex:478: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.16.3) lib/mix/cli.ex:96: Mix.CLI.run_task/2
    /opt/homebrew/bin/mix:2: (file)

My project is here: codepagex/mix.exs at master · tallakt/codepagex · GitHub

Appreciate any help, I’m totally lost here…

I presume you have upgraded the locally used Erlang and Elixir?

1 Like

Yes I am on Elixir 1.16.3 and MacOS, Elixir and Erlang was installed with asdf latest

Actually the first time I’m running I am getting a different compilation error. The second time I am getting the one described above. The initial error is:

==> codepagex
Generated codepagex app
Generating docs...
** (UndefinedFunctionError) function :earmark_parser_string_lexer.string/1 is undefined (module :earmark_parser_string_lexer is not available)
    (earmark_parser 1.4.39) :earmark_parser_string_lexer.string(~c"An error returned by Codepagex")
    (earmark_parser 1.4.39) lib/earmark_parser/helpers/leex_helpers.ex:20: EarmarkParser.Helpers.LeexHelpers.tokenize/2
    (earmark_parser 1.4.39) lib/earmark_parser/helpers/lookahead_helpers.ex:16: EarmarkParser.Helpers.LookaheadHelpers.opens_inline_code/1
    (earmark_parser 1.4.39) lib/earmark_parser/parser.ex:658: EarmarkParser.Parser._inline_or_text?/2
    (earmark_parser 1.4.39) lib/earmark_parser/parser.ex:486: EarmarkParser.Parser._consolidate_para/4
    (earmark_parser 1.4.39) lib/earmark_parser/parser.ex:215: EarmarkParser.Parser._parse/4
    (earmark_parser 1.4.39) lib/earmark_parser/parser.ex:68: EarmarkParser.Parser.lines_to_blocks/3
    (earmark_parser 1.4.39) lib/earmark_parser/parser.ex:60: EarmarkParser.Parser.parse_lines/3

So if you’re now running latest Erlang / Elixir I would also update all dependencies to their latest version.

1 Like

OK so I just cloned your repo and ran mix do deps.get, compile successfully.

Erlang version is 26.2.5.
Elixir version is 1.16.3-otp-26.

Let’s see about mix docs now…

1 Like

Well curiously I couldn’t get it to work quickly either.

So let’s backtrack. What were the last Erlang/Elixir versions you used successfully when working on the library?

1 Like

I’m not sure. Last update was in 2020, I would think the version 1.5.x specified in mix.exs is accurate. I don’t remember what happened back then.

I’m thinking recreating the code from a new project mix new then add stuff until I see when it breaks. That would take a bit longer though. Maybe thats what I have to do

Usually I remember this spec was several versions behind. I’d start with the release that was semi-recent at 2020 and take it from there.

Might be necessary I am afraid. Curious what updates you’ll give us because I like your library.

1 Like

So duplicating the code into a new mix project worked. Not many changes though, Im not sure which one did the trick:

-defmodule Codepagex.Mixfile do
+defmodule Codepagex.MixProject do
-    [applications: [:logger]]
+      extra_applications: [:logger]
-      build_embedded: Mix.env() == :prod,
1 Like

Cool, glad you solved it!

1 Like

Im glad I was able to restart this project, I’ll try to be more prompt with updates. Thanks for the support

1 Like