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.