What OS are you using? we’ve seen this error a few times and are still trying to pin it down. So far it’s only presented on windows and ChromeOS. today I will be getting Elixir set up on my windows PC to see if I can replicate.
I am getting the same error on ubuntu 24.04 on ryzen 5600 with erlang OTP 26 and elixir 1.15.7
sh <(curl ‘https://ash-hq.org/new/test?install=phoenix’)
&& cd test
&& mix igniter.install
ash_phoenix ash_postgres ash_authentication
ash_authentication_phoenix ash_admin ash_state_machine
–auth-strategy password
–yes
warning: Macro.Env.define_alias/4 is undefined or private
Invalid call found at 2 locations:
lib/spitfire/env.ex:178: Spitfire.Env.expand/3
lib/spitfire/env.ex:478: Spitfire.Env.alias_defmodule/3
warning: Macro.Env.define_import/4 is undefined or private
lib/spitfire/env.ex:209: Spitfire.Env.expand/3
warning: Macro.Env.define_require/4 is undefined or private
lib/spitfire/env.ex:193: Spitfire.Env.expand/3
warning: Macro.Env.expand_alias/4 is undefined or private
lib/spitfire/env.ex:137: Spitfire.Env.expand/3
warning: Macro.Env.expand_import/5 is undefined or private
lib/spitfire/env.ex:308: Spitfire.Env.expand/3
warning: Macro.Env.expand_require/6 is undefined or private
lib/spitfire/env.ex:274: Spitfire.Env.expand/3
installing igniter
compiling igniter ⣷
compiling igniter
** (Mix) Can’t continue due to errors on dependencies
Okay, so this is the bug that appears to happen anywhere but where I can see it
I’ve tried to reproduce with all kinds of configurations, and now both on windows and on Mac. I’m not really sure how to proceed in that scenario. From what I can tell rewrite (maybe @Marcus can help us here?) is comparing the old file with the new file using :erlang.phash and I cannot possibly conceive of a reason why it would have changed in any way. The file is generated in this case first by Phoenix, and then when we first read it into the igniter it should be the same as it originally was.
Was the windows machine on a snapdragon? Between Mac and me trying to do a sideproject on Asahi linux would be interesting to see if it was arm specific, but that wouldn’t make much sense with the beam providing the abstractions. Is there anything I can do do get you more data?
The only thing I can really think of would be to clone igniter down manually, and then after making your new project, set {:igniter, path: "../path_to_igniter", only: [:dev, :test]}.
Then, you’d have to modify the files in igniter, right around here before we attempt to write the files:
And add something like this:
path = "lib/hillbilly_millionaire/application.ex"
source = Rewrite.source!(igniter.rewrite, path)
file = File.read!(path)
igniter_original_contents = Rewrite.Source.get(source, :content, 1)
# Did the path somehow change?
IO.inspect(Rewrite.Source.get(source, :path, 1))
IO.inspect(Rewrite.Source.get(source, :path))
# inspect the outputs for differences
IO.puts(igniter_original_content)
IO.puts(file)
# some other things that would be good to check
`IO.inspect(source.hash)`
`IO.inspect(:erlang.phash2({path, file}))`
`IO.inspect(:erlang.phash2({path, igniter_original_content}))`
Then you can run the igniter.install step (the part after curl in the script) and maybe that would point us to the problem. Its a lot to ask but if you’re willing to do it I’d be very grateful
alright this is elusive as all get out, i’m resorting to iex in debug and pry, what is weird is the tests all pass too and I see some specific to this, i’m gonna call it for the day but will keep digging and let you know.