(ArgumentError) unknown application: :bakeware

Background

When trying to execute mix release on a Windows 11 machine for a Phoenix project I get the following error:

* assembling market_manager-2.1.5 on MIX_ENV=prod
* using config/runtime.exs to configure the release at runtime
←[32m* assembling←[39m bakeware market_manager

** (ArgumentError) unknown application: :bakeware
    (elixir 1.15.4) lib/application.ex:1010: Application.app_dir/1
    (elixir 1.15.4) lib/application.ex:1041: Application.app_dir/2
    (bakeware 0.2.4) lib/bakeware/assembler.ex:71: Bakeware.Assembler.create_paths/1
    (bakeware 0.2.4) lib/bakeware/assembler.ex:83: Bakeware.Assembler.do_assemble/1
    (bakeware 0.2.4) lib/bakeware/assembler.ex:37: Bakeware.Assembler.assemble/1
    (mix 1.15.4) lib/mix/tasks/release.ex:1064: Mix.Tasks.Release.run_steps/1
    (mix 1.15.4) lib/mix/task.ex:447: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.15.4) lib/mix/cli.ex:92: Mix.CLI.run_task/2

I am using PowerShell with Admin privileges and I have set the following env variables:

$env:CC="gcc"
$env:MAKE="make"
$env:MIX_ENV="prod"

I have installed all the dependencies via choco with choco install -y zstandard make mingw.

Further, here are my system settings:

Edition	Windows 11 Home
Version	22H2
OS build	22621.2283
Experience	Windows Feature Experience Pack 1000.22662.1000.0

I am using: {:bakeware, "~> 0.2.4"} with Elixir 1.15.4 (compiled with Erlang/OTP 24)

I develop for windows users, so I can’t use Linux here.

Question

Why cant I make bakeware work?

Maybe try with elixir version that bakeware uses, 1.10?

The entire frontend Phoenix project is using Phoenix 1.7 which depends on features of version > Elixir 1.10.
Downgrading the version of the project is not an option.

For debugging purposes you could make a fresh project in elixir 1.10 and try to release it using bakeware. If it works, try the same in 1.15.

1 Like

While bakeware seems to work with a simple app (it does not fail with the error above shown), when I create an umbrella application, it fails.

Here is an example:

set MIX_ENV=prod
set MAKE=make
set CC=gcc

mix phx.new bakeware_demo --umbrella --no-ecto --no-dashboard --no-gettext --no-mailer
cd bakeware_demo_umbrella
mix deps.get
mix release demo

Using the following root mix.exs file:

defmodule BakewareDemo.Umbrella.MixProject do
  use Mix.Project

  def project do
    [
      apps_path: "apps",
      version: "0.1.0",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      aliases: aliases(),
      releases: releases()
    ]
  end

  defp deps do
    [
      # Required to run "mix format" on ~H/.heex files from the umbrella root
      {:phoenix_live_view, ">= 0.0.0"},
      {:bakeware, "~> 0.2.4"},
    ]
  end

  defp aliases do
    [
      # run `mix setup` in all child apps
      setup: ["cmd mix setup"]
    ]
  end

  defp releases,
    do: [
      demo: [
        steps: [:assemble, &Bakeware.assemble/1],
        applications: [
          bakeware_demo_web: :permanent,
          runtime_tools: :permanent
        ],
        include_executables_for: [:windows]
      ]
    ]
end

Error shown as follows:

Generated phoenix_live_view app
==> bakeware_demo
Compiling 2 files (.ex)
Generated bakeware_demo app
==> bakeware_demo_web
Compiling 11 files (.ex)
Generated bakeware_demo_web app
* assembling demo-0.1.0 on MIX_ENV=prod
* using config/runtime.exs to configure the release at runtime
* assembling bakeware demo

** (ArgumentError) unknown application: :bakeware
    (elixir 1.15.4) lib/application.ex:1010: Application.app_dir/1
    (elixir 1.15.4) lib/application.ex:1041: Application.app_dir/2
    (bakeware 0.2.4) lib/bakeware/assembler.ex:71: Bakeware.Assembler.create_paths/1
    (bakeware 0.2.4) lib/bakeware/assembler.ex:83: Bakeware.Assembler.do_assemble/1
    (bakeware 0.2.4) lib/bakeware/assembler.ex:37: Bakeware.Assembler.assemble/1
    (mix 1.15.4) lib/mix/tasks/release.ex:1064: Mix.Tasks.Release.run_steps/1
    (mix 1.15.4) lib/mix/task.ex:447: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.15.4) lib/mix/cli.ex:92: Mix.CLI.run_task/2

[WARN] - (starship::utils): Executing command "C:\\Users\\pedro\\scoop\\apps\\elixir\\current\\bin\\elixir.bat" timed out.
[WARN] - (starship::utils): You can set command_timeout in your config to a higher value to allow longer-running commands to keep executing.

Using:

❯ elixir -v
Erlang/OTP 25 [erts-13.2.2.2] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [jit:ns]

Elixir 1.15.4 (compiled with Erlang/OTP 24)

It unfortunately seems that, at the time of writing this post, Bakeware is not being actively maintained. The successor appears to be Burrito:

However that does not work for windows either:

So I had to go with an alternative, in order to achieve a Windows release. This alternative solution uses Windows shortcuts and seems to work as a short term solution for anyone trying to have an easy launcher for Elixir applications in Windows systems:

If you are from the future and the official Bakeware issue post found a positive resolution, do feel free to update this thread. For the time being however, I am closing this.