openmaize_jwt

Build log

nerves_system_x86_64

openmaize_jwt 1.0.0 · fail · run openmaize_jwt-1.0.0-1791028971953
1383 of 1383 lines
1Resolving Hex dependencies...2Resolution completed in 0.193s3Unchanged:4  circular_buffer 1.1.05  comeonin 3.2.06  cowboy 1.1.2 VULNERABLE!7    GHSA-w4f7-4cxr-rv3c (MEDIUM)8    aka: CVE-2026-43966, EEF-CVE-2026-439669    cowboy and gun affected by an HTTP Request/Response Splitting vulnerability10    https://osv.dev/vulnerability/GHSA-w4f7-4cxr-rv3c11  cowlib 1.0.2 VULNERABLE!12    EEF-CVE-2026-7790 (HIGH)13    aka: CVE-2026-7790, GHSA-32p9-57cr-4x6514    Unbounded chunk-size hex digits in cowlib cause quadratic CPU and memory DoS15    https://osv.dev/vulnerability/EEF-CVE-2026-77901617    EEF-CVE-2026-43970 (HIGH)18    aka: CVE-2026-43970, GHSA-84f2-rp86-235p19    Decompression Bomb in cow_spdy:inflate/2 Allows Memory Exhaustion via Crafted SPDY Frame20    https://osv.dev/vulnerability/EEF-CVE-2026-4397021  decimal 1.9.0 VULNERABLE!22    EEF-CVE-2026-32686 (MEDIUM)23    aka: CVE-2026-32686, GHSA-rhv4-8758-jx7v24    Unbounded exponent in decimal enables unauthenticated DoS25    https://osv.dev/vulnerability/EEF-CVE-2026-3268626  ecto 2.2.1227  elixir_make 0.10.028  interactive_cmd 0.1.429  mime 2.0.730  nerves 2.0.0-pre.231  nerves_discovery 0.1.532  nerves_logging 0.2.433  nerves_runtime 0.13.1334  nerves_system_bbb 2.30.235  nerves_system_br 1.34.436  nerves_system_mangopi_mq_pro 0.17.237  nerves_system_qemu_aarch64 0.4.238  nerves_system_rpi0 2.1.239  nerves_system_rpi4 2.1.240  nerves_system_rpi5 2.1.241  nerves_system_trellis 0.5.042  nerves_system_x86_64 1.34.243  nerves_toolchain_aarch64_nerves_linux_gnu 15.3.144  nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.145  nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.146  nerves_toolchain_riscv64_nerves_linux_gnu 15.3.147  nerves_toolchain_x86_64_nerves_linux_musl 15.3.148  nerves_uevent 0.1.749  openmaize 2.9.050  openmaize_jwt 1.0.0 RETIRED!51    (deprecated)52  plug 1.20.353  plug_crypto 2.2.054  poison 2.2.055  poolboy 1.5.256  property_table 0.3.457  ranch 1.3.258  ring_logger 0.11.759  tablet 0.3.360  telemetry 1.4.261  toolshed 0.5.062  uboot_env 1.0.263* Getting openmaize_jwt (Hex package)64* Getting nerves (Hex package)65* Getting ring_logger (Hex package)66* Getting toolshed (Hex package)67* Getting nerves_runtime (Hex package)68* Getting nerves_system_bbb (Hex package)69* Getting nerves_system_mangopi_mq_pro (Hex package)70* Getting nerves_system_qemu_aarch64 (Hex package)71* Getting nerves_system_rpi0 (Hex package)72* Getting nerves_system_rpi4 (Hex package)73* Getting nerves_system_rpi5 (Hex package)74* Getting nerves_system_trellis (Hex package)75* Getting nerves_system_x86_64 (Hex package)76* Getting nerves_system_br (Hex package)77* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)78* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)79* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)80* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)81* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)82* Getting nerves_logging (Hex package)83* Getting nerves_uevent (Hex package)84* Getting uboot_env (Hex package)85* Getting elixir_make (Hex package)86* Getting property_table (Hex package)87* Getting circular_buffer (Hex package)88* Getting interactive_cmd (Hex package)89* Getting nerves_discovery (Hex package)90* Getting tablet (Hex package)91* Getting cowboy (Hex package)92* Getting openmaize (Hex package)93* Getting plug (Hex package)94* Getting poison (Hex package)95* Getting mime (Hex package)96* Getting plug_crypto (Hex package)97* Getting telemetry (Hex package)98* Getting comeonin (Hex package)99* Getting ecto (Hex package)100* Getting decimal (Hex package)101* Getting poolboy (Hex package)102* Getting cowlib (Hex package)103* Getting ranch (Hex package)104Found retired packages, see above for details105Found packages with security advisories, see above for details106    warning: String.strip/1 is deprecated. Use String.trim/1 instead107    │108  4 │   @version File.read!("VERSION") |> String.strip109    │                                            ~110    │111    └─ /work/proj/deps_x86_64/poison/mix.exs:4:44: Poison.Mixfile (module)112113==> poison114Compiling 4 files (.ex)115    warning: using single-quoted strings to represent charlists is deprecated.116    Use ~c"" if you indeed want a charlist or use "" instead.117    You may run "mix format --migrate" to change all single-quoted118    strings to use the ~c sigil and fix this warning.119    │120 89 │   for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do121    │                               ~122    │123    └─ lib/poison/encoder.ex:89:31124125    warning: using single-quoted strings to represent charlists is deprecated.126    Use ~c"" if you indeed want a charlist or use "" instead.127    You may run "mix format --migrate" to change all single-quoted128    strings to use the ~c sigil and fix this warning.129    │130 89 │   for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do131    │                                                ~132    │133    └─ lib/poison/encoder.ex:89:48134135     warning: using single-quoted strings to represent charlists is deprecated.136     Use ~c"" if you indeed want a charlist or use "" instead.137     You may run "mix format --migrate" to change all single-quoted138     strings to use the ~c sigil and fix this warning.139     │140 127 │   defp chunk_size(<<char>> <> _, _mode, acc) when char <= 0x1F or char in '"\\' do141     │                                                                           ~142     │143     └─ lib/poison/encoder.ex:127:75144145    warning: using single-quoted strings to represent charlists is deprecated.146    Use ~c"" if you indeed want a charlist or use "" instead.147    You may run "mix format --migrate" to change all single-quoted148    strings to use the ~c sigil and fix this warning.149    │150 67 │   defp value(<<char, _ :: binary>> = string, _keys) when char in '-0123456789' do151    │                                                                  ~152    │153    └─ lib/poison/parser.ex:67:66154155     warning: using single-quoted strings to represent charlists is deprecated.156     Use ~c"" if you indeed want a charlist or use "" instead.157     You may run "mix format --migrate" to change all single-quoted158     strings to use the ~c sigil and fix this warning.159     │160 134 │   defp number_int(<<char, _ :: binary>> = string, acc) when char in '123456789' do161     │                                                                     ~162     │163     └─ lib/poison/parser.ex:134:69164165     warning: using single-quoted strings to represent charlists is deprecated.166     Use ~c"" if you indeed want a charlist or use "" instead.167     You may run "mix format --migrate" to change all single-quoted168     strings to use the ~c sigil and fix this warning.169     │170 150 │   defp number_exp(<<e>> <> rest, frac, acc) when e in 'eE' do171     │                                                       ~172     │173     └─ lib/poison/parser.ex:150:55174175     warning: using single-quoted strings to represent charlists is deprecated.176     Use ~c"" if you indeed want a charlist or use "" instead.177     You may run "mix format --migrate" to change all single-quoted178     strings to use the ~c sigil and fix this warning.179     │180 176 │   defp number_digits(<<char>> <> rest = string) when char in '0123456789' do181     │                                                              ~182     │183     └─ lib/poison/parser.ex:176:62184185     warning: using single-quoted strings to represent charlists is deprecated.186     Use ~c"" if you indeed want a charlist or use "" instead.187     You may run "mix format --migrate" to change all single-quoted188     strings to use the ~c sigil and fix this warning.189     │190 184 │   defp number_digits_count(<<char>> <> rest, acc) when char in '0123456789' do191     │                                                                ~192     │193     └─ lib/poison/parser.ex:184:64194195     warning: using single-quoted strings to represent charlists is deprecated.196     Use ~c"" if you indeed want a charlist or use "" instead.197     You may run "mix format --migrate" to change all single-quoted198     strings to use the ~c sigil and fix this warning.199     │200 208 │   for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do201     │                               ~202     │203     └─ lib/poison/parser.ex:208:31204205     warning: using single-quoted strings to represent charlists is deprecated.206     Use ~c"" if you indeed want a charlist or use "" instead.207     You may run "mix format --migrate" to change all single-quoted208     strings to use the ~c sigil and fix this warning.209     │210 208 │   for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do211     │                                            ~212     │213     └─ lib/poison/parser.ex:208:44214215     warning: using single-quoted strings to represent charlists is deprecated.216     Use ~c"" if you indeed want a charlist or use "" instead.217     You may run "mix format --migrate" to change all single-quoted218     strings to use the ~c sigil and fix this warning.219     │220 218 │     when a1 in 'dD' and a2 in 'dD'221     │                ~222     │223     └─ lib/poison/parser.ex:218:16224225     warning: using single-quoted strings to represent charlists is deprecated.226     Use ~c"" if you indeed want a charlist or use "" instead.227     You may run "mix format --migrate" to change all single-quoted228     strings to use the ~c sigil and fix this warning.229     │230 218 │     when a1 in 'dD' and a2 in 'dD'231     │                               ~232     │233     └─ lib/poison/parser.ex:218:31234235     warning: using single-quoted strings to represent charlists is deprecated.236     Use ~c"" if you indeed want a charlist or use "" instead.237     You may run "mix format --migrate" to change all single-quoted238     strings to use the ~c sigil and fix this warning.239     │240 219 │     and (b1 in '89abAB')241     │                ~242     │243     └─ lib/poison/parser.ex:219:16244245     warning: using single-quoted strings to represent charlists is deprecated.246     Use ~c"" if you indeed want a charlist or use "" instead.247     You may run "mix format --migrate" to change all single-quoted248     strings to use the ~c sigil and fix this warning.249     │250 253 │   defp skip_whitespace(<<char>> <> rest) when char in '\s\n\t\r' do251     │                                                       ~252     │253     └─ lib/poison/parser.ex:253:55254255    warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead256    │257 22 │   if Application.get_env(:poison, :native) do258    │                  ~259    │260    └─ lib/poison/parser.ex:22:18: Poison.Parser (module)261262    warning: use Bitwise is deprecated. import Bitwise instead263    │264 26 │   use Bitwise265    │   ~~~~~~~~~~~266    │267    └─ lib/poison/parser.ex:26: Poison.Parser (module)268269     warning: the variable "count" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator270     │271 178 │     <<digits :: binary-size(count), rest :: binary>> = string272     │                             ~273     │274     └─ lib/poison/parser.ex:178:29: Poison.Parser.number_digits/1275276     warning: the variable "n" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator277     │278 204 │     <<chunk :: binary-size(n), rest :: binary>> = string279     │                            ~280     │281     └─ lib/poison/parser.ex:204:28: Poison.Parser.string_continue/2282283    warning: use Bitwise is deprecated. import Bitwise instead284    │285 79 │   use Bitwise286    │   ~~~~~~~~~~~287    │288    └─ lib/poison/encoder.ex:79: Poison.Encoder.BitString (module)289290     warning: the variable "size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator291     │292 123 │     <<chunk :: binary-size(size), rest :: binary>> = string293     │                            ~294     │295     └─ lib/poison/encoder.ex:123:28: Poison.Encoder.BitString.escape/2296297     warning: HashDict.size/1 is deprecated. Use maps and the Map module instead298     │299 283 │     if HashDict.size(dict) < 1 do300     │                 ~301     │302     └─ lib/poison/encoder.ex:283:17: Poison.Encoder.HashDict.encode/2303304     warning: Integer.to_char_list/2 is deprecated. Use Integer.to_charlist/2 instead305     │306 161 │     case Integer.to_char_list(char, 16) do307     │                  ~308     │309     └─ lib/poison/encoder.ex:161:18: Poison.Encoder.BitString.seq/1310311Generated poison app312==> comeonin313mkdir -p priv314/home/nerves/.nerves/artifacts/nerves_toolchain_x86_64_nerves_linux_musl-15.3.1/bin/x86_64-nerves-linux-musl-gcc -g -O3 -Wall -I/usr/local/lib/erlang/erts-17.1/include -Ic_src -fPIC -shared --sysroot=/home/nerves/.nerves/artifacts/nerves_system_x86_64-1.34.2/staging c_src/bcrypt_nif.c c_src/blowfish.c -o priv/bcrypt_nif.so315Compiling 8 files (.ex)316    warning: using single-quoted strings to represent charlists is deprecated.317    Use ~c"" if you indeed want a charlist or use "" instead.318    You may run "mix format --migrate" to change all single-quoted319    strings to use the ~c sigil and fix this warning.320    │321 57 │     path = :filename.join(:code.priv_dir(:comeonin), 'bcrypt_nif')322    │                                                      ~323    │324    └─ lib/comeonin/bcrypt.ex:57:54325326     warning: using single-quoted strings to represent charlists is deprecated.327     Use ~c"" if you indeed want a charlist or use "" instead.328     You may run "mix format --migrate" to change all single-quoted329     strings to use the ~c sigil and fix this warning.330     │331 159 │     [prefix, log_rounds, salt] = Enum.take(salt, 29) |> :string.tokens('$')332     │                                                                        ~333     │334     └─ lib/comeonin/bcrypt.ex:159:72335336     warning: using single-quoted strings to represent charlists is deprecated.337     Use ~c"" if you indeed want a charlist or use "" instead.338     You may run "mix format --migrate" to change all single-quoted339     strings to use the ~c sigil and fix this warning.340     │341 164 │   defp bcrypt(key, salt, prefix, log_rounds) when prefix in ['2b', '2a'] do342     │                                                              ~343     │344     └─ lib/comeonin/bcrypt.ex:164:62345346     warning: using single-quoted strings to represent charlists is deprecated.347     Use ~c"" if you indeed want a charlist or use "" instead.348     You may run "mix format --migrate" to change all single-quoted349     strings to use the ~c sigil and fix this warning.350     │351 164 │   defp bcrypt(key, salt, prefix, log_rounds) when prefix in ['2b', '2a'] do352     │                                                                    ~353     │354     └─ lib/comeonin/bcrypt.ex:164:68355356     warning: using single-quoted strings to represent charlists is deprecated.357     Use ~c"" if you indeed want a charlist or use "" instead.358     You may run "mix format --migrate" to change all single-quoted359     strings to use the ~c sigil and fix this warning.360     │361 165 │     key_len = if prefix == '2b' and length(key) > 72, do: 73, else: length(key) + 1362     │                            ~363     │364     └─ lib/comeonin/bcrypt.ex:165:28365366    warning: use Bitwise is deprecated. import Bitwise instead367    │368 48 │   use Bitwise369    │   ~~~~~~~~~~~370    │371    └─ lib/comeonin/bcrypt.ex:48: Comeonin.Bcrypt (module)372373    warning: use Bitwise is deprecated. import Bitwise instead374    │375  9 │   use Bitwise376    │   ~~~~~~~~~~~377    │378    └─ lib/comeonin/bcrypt/base64.ex:9: Comeonin.Bcrypt.Base64 (module)379380    warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.381382    This error happens when you have function calls without parentheses inside keywords. For example:383384        function(arg, one: nested_call a, b, c)385        function(arg, one: if expr, do: :this, else: :that)386387    In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:388389        function(arg, one: if(expr, do: :this, else: :that))390        function(arg, one: nested_call(a, b, c))391392    Ambiguity found at:393    │394 49 │   def gen_secret(_), do: raise ArgumentError, "Invalid length"395    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~396    │397    └─ lib/comeonin/otp.ex:49398399    warning: use Bitwise is deprecated. import Bitwise instead400    │401 34 │   use Bitwise402    │   ~~~~~~~~~~~403    │404    └─ lib/comeonin/otp.ex:34: Comeonin.Otp (module)405406    warning: use Bitwise is deprecated. import Bitwise instead407    │408 31 │   use Bitwise409    │   ~~~~~~~~~~~410    │411    └─ lib/comeonin/pbkdf2.ex:31: Comeonin.Pbkdf2 (module)412413     warning: the variable "max_length" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator414     │415 117 │     <<bin::binary-size(max_length), _::binary>> = key416     │                        ~417     │418     └─ lib/comeonin/pbkdf2.ex:117:24: Comeonin.Pbkdf2.pbkdf2/7419420    warning: using single-quoted strings to represent charlists is deprecated.421    Use ~c"" if you indeed want a charlist or use "" instead.422    You may run "mix format --migrate" to change all single-quoted423    strings to use the ~c sigil and fix this warning.424    │425 11 │   b64_alphabet = Enum.with_index 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./'426    │                                  ~427    │428    └─ lib/comeonin/pbkdf2/base64.ex:11:34429430    warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead431    │432 19 │     secure_check(rest_h, rest_s, acc ||| (h ^^^ s))433    │                                             ~434    │435    └─ lib/comeonin/tools.ex:19:45436437    warning: use Bitwise is deprecated. import Bitwise instead438    │439  6 │   use Bitwise440    │   ~~~~~~~~~~~441    │442    └─ lib/comeonin/tools.ex:6: Comeonin.Tools (module)443444    warning: the variable "split" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator445    │446 29 │     <<main::size(split)-binary, rest::binary>> = data447    │                  ~448    │449    └─ lib/comeonin/pbkdf2/base64.ex:29:18: Comeonin.Pbkdf2.Base64.encode/1450451    warning: the variable "split" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator452    │453 52 │     <<main::size(split)-binary, rest::binary>> = data454    │                  ~455    │456    └─ lib/comeonin/pbkdf2/base64.ex:52:18: Comeonin.Pbkdf2.Base64.decode/1457458    warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead459    │460 76 │     hash = :crypto.hmac(:sha, Base.decode32!(secret, padding: false),461    │                    ~462    │463    └─ lib/comeonin/otp.ex:76:20: Comeonin.Otp.gen_hotp/3464465     warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead466     │467 121 │     initial = :crypto.hmac(:sha512, password, <<salt::binary, block_index::integer-size(32)>>)468     │                       ~469     │470     └─ lib/comeonin/pbkdf2.ex:121:23: Comeonin.Pbkdf2.pbkdf2/7471     └─ lib/comeonin/pbkdf2.ex:129:20: Comeonin.Pbkdf2.iterate/4472473Generated comeonin app474warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"475  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2476  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1477  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5478  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2479  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4480  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2481482==> ecto483Compiling 70 files (.ex)484     warning: using single-quoted strings to represent charlists is deprecated.485     Use ~c"" if you indeed want a charlist or use "" instead.486     You may run "mix format --migrate" to change all single-quoted487     strings to use the ~c sigil and fix this warning.488     │489 166 │     defp insert_all_value(_),   do: '?'490     │                                     ~491     │492     └─ lib/ecto/adapters/mysql/connection.ex:166:37493494     warning: using single-quoted strings to represent charlists is deprecated.495     Use ~c"" if you indeed want a charlist or use "" instead.496     You may run "mix format --migrate" to change all single-quoted497     strings to use the ~c sigil and fix this warning.498     │499 354 │       '?'500     │       ~501     │502     └─ lib/ecto/adapters/mysql/connection.ex:354:7503504      warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.505506      This error happens when you have function calls without parentheses inside keywords. For example:507508          function(arg, one: nested_call a, b, c)509          function(arg, one: if expr, do: :this, else: :that)510511      In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:512513          function(arg, one: if(expr, do: :this, else: :that))514          function(arg, one: nested_call(a, b, c))515516      Ambiguity found at:517      │518 2286 │     raise ArgumentError, "cannot add constraint to changeset because it does not have a source, got: #{inspect data}"519      │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~520      │521      └─ lib/ecto/changeset.ex:2286522523     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.524525     This error happens when you have function calls without parentheses inside keywords. For example:526527         function(arg, one: nested_call a, b, c)528         function(arg, one: if expr, do: :this, else: :that)529530     In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:531532         function(arg, one: if(expr, do: :this, else: :that))533         function(arg, one: nested_call(a, b, c))534535     Ambiguity found at:536     │537 265 │     do: raise ArgumentError, "a constraint must have either a check or exclude option"538     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~539     │540     └─ lib/ecto/migration/runner.ex:265541542     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.543544     This error happens when you have function calls without parentheses inside keywords. For example:545546         function(arg, one: nested_call a, b, c)547         function(arg, one: if expr, do: :this, else: :that)548549     In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:550551         function(arg, one: if(expr, do: :this, else: :that))552         function(arg, one: nested_call(a, b, c))553554     Ambiguity found at:555     │556 267 │     do: raise ArgumentError, "a constraint must not have both check and exclude options"557     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~558     │559     └─ lib/ecto/migration/runner.ex:267560561     warning: atom ::: must be written between quotes, as in :"::", to avoid ambiguity562     │563 136 │       {:::, _, [left, _]} -> is_integer(left) or is_binary(left)564     │        ~565     │566     └─ lib/ecto/query/builder.ex:136:8567568     warning: unknown compiler variable "__" (expected one of __MODULE__, __ENV__, __DIR__, __CALLER__, __STACKTRACE__)569     │570 643 │   def quoted_type({:datetime_add, _, [_, _, __]}, _vars), do: :naive_datetime571     │                                             ~~572     │573     └─ lib/ecto/query/builder.ex:643:45: Ecto.Query.Builder.quoted_type/2574575     warning: unknown compiler variable "__" (expected one of __MODULE__, __ENV__, __DIR__, __CALLER__, __STACKTRACE__)576     │577 644 │   def quoted_type({:date_add, _, [_, _, __]}, _vars), do: :date578     │                                         ~~579     │580     └─ lib/ecto/query/builder.ex:644:41: Ecto.Query.Builder.quoted_type/2581582     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.583584     This error happens when you have function calls without parentheses inside keywords. For example:585586         function(arg, one: nested_call a, b, c)587         function(arg, one: if expr, do: :this, else: :that)588589     In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:590591         function(arg, one: if(expr, do: :this, else: :that))592         function(arg, one: nested_call(a, b, c))593594     Ambiguity found at:595     │596 454 │     do: raise ArgumentError, "a changeset with action #{inspect given} was given to #{inspect repo}.#{action}/2"597     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~598     │599     └─ lib/ecto/repo/schema.ex:454600601    warning: unused require Ecto.Query602    │603  6 │   require Ecto.Query604    │   ~605    │606    └─ lib/ecto/repo/preloader.ex:6:3607608    warning: Module.eval_quoted/2 is deprecated. Use Code.eval_quoted/3 instead609    │610  9 │   schema "schema_migrations" do611    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~612    │613    └─ lib/ecto/migration/schema_migration.ex:9: Ecto.Migration.SchemaMigration (module)614615     warning: struct DBConnection.OwnershipError is undefined (module DBConnection.OwnershipError is not available or is yet to be defined)616     │617 258 │       err in DBConnection.OwnershipError ->618     │           ~619     │620     └─ lib/ecto/adapters/sql.ex:258:11: Ecto.Adapters.SQL.sql_call/6621622      warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead623      │624 2400 │     surround_many("#Ecto.Changeset<", list, ">", opts, fn625      │     ~626      │627      └─ lib/ecto/changeset.ex:2400:5: Inspect.Ecto.Changeset.inspect/2628629     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead630     │631 260 │         reraise %{err | message: message}, System.stacktrace632     │                                                   ~633     │634     └─ lib/ecto/adapters/sql.ex:260:51: Ecto.Adapters.SQL.sql_call/6635636    warning: incompatible types given to Mix.Ecto.ensure_started/2:637638        Mix.Ecto.ensure_started(repo, opts)639640    given types:641642        -dynamic(atom())-, dynamic(empty_list() or non_empty_list(term(), term()))643644    but expected one of:645646        %{..., __adapter__: atom()}, empty_list() or non_empty_list(term(), term())647648    where "opts" was given the type:649650        # type: dynamic(651          %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or652            non_struct_map()653        )654        # from: lib/mix/tasks/ecto.rollback.ex:64:10655        opts =656          if opts[:quiet] do657            Keyword.merge(opts, log: false, log_sql: false)658          else659            opts660          end661662    where "repo" was given the type:663664        # type: dynamic(atom())665        # from: lib/mix/tasks/ecto.rollback.ex:70:7666        Mix.Ecto.ensure_repo(repo, args)667668    type warning found at:669    │670 72 │       {:ok, pid, apps} = ensure_started(repo, opts)671    │                          ~672    │673    └─ lib/mix/tasks/ecto.rollback.ex:72:26: Mix.Tasks.Ecto.Rollback.run/2674675    warning: incompatible types given to Mix.Ecto.ensure_started/2:676677        Mix.Ecto.ensure_started(repo, all: true)678679    given types:680681        -dynamic(atom())-, non_empty_list({:all, true})682683    but expected one of:684685        %{..., __adapter__: atom()}, empty_list() or non_empty_list(term(), term())686687    where "repo" was given the type:688689        # type: dynamic(atom())690        # from: lib/mix/tasks/ecto.migrations.ex:37:7691        Mix.Ecto.ensure_repo(repo, args)692693    type warning found at:694    │695 39 │       {:ok, pid, _} = ensure_started(repo, all: true)696    │                       ~697    │698    └─ lib/mix/tasks/ecto.migrations.ex:39:23: Mix.Tasks.Ecto.Migrations.run/3699700    warning: incompatible types given to Mix.Ecto.ensure_started/2:701702        Mix.Ecto.ensure_started(repo, opts)703704    given types:705706        -dynamic(atom())-, dynamic(empty_list() or non_empty_list(term(), term()))707708    but expected one of:709710        %{..., __adapter__: atom()}, empty_list() or non_empty_list(term(), term())711712    where "opts" was given the type:713714        # type: dynamic(715          %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or716            non_struct_map()717        )718        # from: lib/mix/tasks/ecto.migrate.ex:68:10719        opts =720          if opts[:quiet] do721            Keyword.merge(opts, log: false, log_sql: false)722          else723            opts724          end725726    where "repo" was given the type:727728        # type: dynamic(atom())729        # from: lib/mix/tasks/ecto.migrate.ex:74:7730        Mix.Ecto.ensure_repo(repo, args)731732    type warning found at:733    │734 76 │       {:ok, pid, apps} = ensure_started(repo, opts)735    │                          ~736    │737    └─ lib/mix/tasks/ecto.migrate.ex:76:26: Mix.Tasks.Ecto.Migrate.run/2738739     warning: the following clause will never match:740741         [{^module, :changeset, args_or_arity, _}] when args_or_arity == 2 when length(args_or_arity) == 2 ->742743     because it attempts to match on the result of:744745         System.stacktrace()746747     which has type:748749         empty_list()750751     where "args_or_arity" was given the type:752753         # type: float() or integer() or non_empty_list(term())754         # from: lib/ecto/changeset.ex755         (_() when args_or_arity == 2) when length(args_or_arity) == 2756757     where "module" was given the type:758759         # type: dynamic()760         # from: lib/ecto/changeset.ex:733:30761         module762763     type warning found at:764     │765 741 │ ...                   when length(args_or_arity) == 2 ->766     │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~767     │768     └─ lib/ecto/changeset.ex:741: Ecto.Changeset.on_cast_default/2769770    warning: incompatible types given to Mix.Ecto.source_repo_priv/1:771772        Mix.Ecto.source_repo_priv(repo)773774    given types:775776        -dynamic(%{..., __adapter__: atom(), config: empty_list() or non_empty_list(term(), term())})-777778    but expected one of:779780        atom()781782    where "repo" was given the types:783784        # type: dynamic(%{..., config: empty_list() or non_empty_list(term(), term())})785        # from: lib/mix/tasks/ecto.load.ex:70:22786        Keyword.merge(repo.config, opts)787788        # type: dynamic(%{..., __adapter__: atom(), config: empty_list() or non_empty_list(term(), term())})789        # from: lib/mix/tasks/ecto.load.ex:72:27790        repo.__adapter__.structure_load(Mix.Ecto.source_repo_priv(repo), config)791792    type warning found at:793    │794 72 │     case repo.__adapter__.structure_load(source_repo_priv(repo), config) do795    │                                          ~796    │797    └─ lib/mix/tasks/ecto.load.ex:72:42: Mix.Tasks.Ecto.Load.load_structure/2798799    warning: expected a map or struct when accessing .__adapter__ in expression:800801        repo.__adapter__802803    where "repo" was given the type:804805        # type: dynamic(atom())806        # from: lib/mix/tasks/ecto.load.ex:53:7807        Mix.Ecto.ensure_repo(repo, args)808809    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()810811    type warning found at:812    │813 54 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Structure,814    │                              ~815    │816    └─ lib/mix/tasks/ecto.load.ex:54:30: Mix.Tasks.Ecto.Load.run/1817818     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead819     │820 739 │           case System.stacktrace do821     │                       ~822     │823     └─ lib/ecto/changeset.ex:739:23: Ecto.Changeset.on_cast_default/2824825    warning: expected a map or struct when accessing .__adapter__ in expression:826827        repo.__adapter__828829    where "repo" was given the type:830831        # type: dynamic(atom())832        # from: lib/mix/tasks/ecto.dump.ex:50:7833        Mix.Ecto.ensure_repo(repo, args)834835    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()836837    type warning found at:838    │839 51 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Structure,840    │                              ~841    │842    └─ lib/mix/tasks/ecto.dump.ex:51:30: Mix.Tasks.Ecto.Dump.run/1843844    warning: expected a map or struct when accessing .__adapter__ in expression:845846        repo.__adapter__847848    where "repo" was given the type:849850        # type: dynamic(atom())851        # from: lib/mix/tasks/ecto.drop.ex:39:7852        Mix.Ecto.ensure_repo(repo, args)853854    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()855856    type warning found at:857    │858 40 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Storage,859    │                              ~860    │861    └─ lib/mix/tasks/ecto.drop.ex:40:30: Mix.Tasks.Ecto.Drop.run/1862863    warning: expected a map or struct when accessing .__adapter__ in expression:864865        repo.__adapter__866867    where "repo" was given the type:868869        # type: dynamic(atom())870        # from: lib/mix/tasks/ecto.create.ex:37:7871        Mix.Ecto.ensure_repo(repo, args)872873    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()874875    type warning found at:876    │877 38 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Storage,878    │                              ~879    │880    └─ lib/mix/tasks/ecto.create.ex:38:30: Mix.Tasks.Ecto.Create.run/1881882    warning: Mix.Project.compile/1 is deprecated. Use Mix.Task.run("compile", args) instead883    │884 62 │       Mix.Project.compile(args)885    │                   ~886    │887    └─ lib/mix/ecto.ex:62:19: Mix.Ecto.ensure_repo/2888889     warning: expected a module (an atom) when invoking start_link/1 in expression:890891         repo.start_link(pool_size: pool_size)892893     where "pool_size" was given the type:894895         # type: dynamic()896         # from: lib/mix/ecto.ex:101:15897         pool_size = Keyword.get(opts, :pool_size, 1)898899     where "repo" was given the type:900901         # type: dynamic(%{..., __adapter__: atom()})902         # from: lib/mix/ecto.ex:99:36903         repo.__adapter__.ensure_all_started(repo, :temporary)904905     type warning found at:906     │907 102 │     case repo.start_link(pool_size: pool_size) do908     │               ~909     │910     └─ lib/mix/ecto.ex:102:15: Mix.Ecto.ensure_started/2911912     warning: Logger.remove_backend/1 is deprecated. Use LoggerBackends.remove/2 from :logger_backends dependency913     │914 146 │     Logger.remove_backend(:console)915     │            ~916     │917     └─ lib/mix/ecto.ex:146:12: Mix.Ecto.restart_apps_if_migrated/2918919     warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)920     │921 856 │       not is_atom(queryable) or queryable in env.context_modules or not Code.ensure_compiled?(queryable) ->922     │                                                                              ~923     │924     └─ lib/ecto/association.ex:856:78: Ecto.Association.ManyToMany.after_compile_validation/2925     └─ lib/ecto/association.ex:860:45: Ecto.Association.ManyToMany.after_compile_validation/2926927     warning: Logger.add_backend/2 is deprecated. Use LoggerBackends.add/2 from :logger_backends dependency928     │929 155 │     Logger.add_backend(:console, flush: true)930     │            ~931     │932     └─ lib/mix/ecto.ex:155:12: Mix.Ecto.restart_apps_if_migrated/2933934    warning: incompatible types given to get_source/1:935936        get_source(repo)937938    given types:939940        -dynamic(atom())-941942    but expected one of:943944        %{..., config: empty_list() or non_empty_list(term(), term())}945946    where "repo" was given the type:947948        # type: dynamic(atom())949        # from: lib/ecto/migration/schema_migration.ex:24:13950        repo.all(951          Map.put(952            (953              query =954                (955                  query = {get_source(repo), Ecto.Migration.SchemaMigration}956                  Ecto.Query.Builder.From.apply(query, 1)957                )958        959              Ecto.Query.Builder.Select.apply(query, %Ecto.Query.SelectExpr{960                ...,961                expr: {{:., [], [{:&, [], [0]}, :version]}, [], []},962                file: "/work/proj/deps_x86_64/ecto/lib/ecto/migration/schema_migration.ex",963                line: 22,964                take: %{}965              })966            ),967            :prefix,968            prefix969          ), timeout: :infinity, log: false)970971    type warning found at:972    │973 22 │     from(p in {get_source(repo), __MODULE__}, select: p.version)974    │                ~975    │976    └─ lib/ecto/migration/schema_migration.ex:22:16: Ecto.Migration.SchemaMigration.migrated_versions/2977978      warning: this clause of defp type_to_module/1 is never used (or it will always fail/warn when invoked)979      │980 1422 │   defp type_to_module(:naive_datetime), do: NaiveDateTime981      │        ~982      │983      └─ lib/ecto/schema.ex:1422:8: Ecto.Schema.type_to_module/1984985    warning: incompatible types given to get_source/1:986987        get_source(repo)988989    given types:990991        -dynamic(atom())-992993    but expected one of:994995        %{..., config: empty_list() or non_empty_list(term(), term())}996997    where "repo" was given the type:998999        # type: dynamic(atom())1000        # from: lib/ecto/migration/schema_migration.ex:30:131001        repo.insert!(1002          Ecto.put_meta(%Ecto.Migration.SchemaMigration{..., version: version},1003            prefix: prefix,1004            source: get_source(repo)1005          ), timeout: :infinity, log: false)10061007    type warning found at:1008    │1009 29 │     |> Ecto.put_meta(prefix: prefix, source: get_source(repo))1010    │                                              ~1011    │1012    └─ lib/ecto/migration/schema_migration.ex:29:46: Ecto.Migration.SchemaMigration.up/310131014    warning: incompatible types given to get_source/1:10151016        get_source(repo)10171018    given types:10191020        -dynamic(atom())-10211022    but expected one of:10231024        %{..., config: empty_list() or non_empty_list(term(), term())}10251026    where "repo" was given the type:10271028        # type: dynamic(atom())1029        # from: lib/ecto/migration/schema_migration.ex:36:131030        repo.delete_all(1031          Map.put(1032            (1033              query =1034                (1035                  query = {get_source(repo), Ecto.Migration.SchemaMigration}1036                  Ecto.Query.Builder.From.apply(query, 1)1037                )1038        1039              Ecto.Query.Builder.Filter.apply(query, :where, %Ecto.Query.BooleanExpr{1040                expr: {:==, [], [{{:., [], [{:&, [], [0]}, :version]}, [], []}, {:^, [], [0]}]},1041                op: :and,1042                params: [{Ecto.Query.Builder.not_nil!(version), {0, :version}}],1043                file: "/work/proj/deps_x86_64/ecto/lib/ecto/migration/schema_migration.ex",1044                line: 341045              })1046            ),1047            :prefix,1048            prefix1049          ), timeout: :infinity, log: false)10501051    type warning found at:1052    │1053 34 │     from(p in {get_source(repo), __MODULE__}, where: p.version == ^version)1054    │                ~1055    │1056    └─ lib/ecto/migration/schema_migration.ex:34:16: Ecto.Migration.SchemaMigration.down/310571058     warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1059     │1060 715 │       not is_atom(queryable) or queryable in env.context_modules or not Code.ensure_compiled?(queryable) ->1061     │                                                                              ~1062     │1063     └─ lib/ecto/association.ex:715:78: Ecto.Association.BelongsTo.after_compile_validation/210641065      warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1066      │1067 1885 │         if Code.ensure_compiled?(type) and function_exported?(type, :type, 0) do1068      │                 ~1069      │1070      └─ lib/ecto/schema.ex:1885:17: Ecto.Schema.check_type!/310711072     warning: the following conditional expression:10731074         is_atom(related)10751076     will always evaluate to:10771078         dynamic(true)10791080     where "related" was given the type:10811082         # type: dynamic(atom())1083         # from: lib/ecto/association.ex:730:151084         related = Ecto.Association.related_from_query(queryable)10851086     type warning found at:1087     │1088 732 │     unless is_atom(related) do1089     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~1090     │1091     └─ lib/ecto/association.ex:732: Ecto.Association.BelongsTo.struct/310921093     warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1094     │1095 430 │       not is_atom(queryable) or queryable in env.context_modules or not Code.ensure_compiled?(queryable) ->1096     │                                                                              ~1097     │1098     └─ lib/ecto/association.ex:430:78: Ecto.Association.Has.after_compile_validation/210991100     warning: the following clause will never match:11011102         {:error, _} = error ->11031104     because it attempts to match on the result of:11051106         apply(changeset, adapter, :insert, args)11071108     which has type:11091110         dynamic({:invalid or :ok, term()})11111112     type warning found at:1113     │1114 219 │           {:error, _} = error ->1115     │                       ~1116     │1117     └─ lib/ecto/repo/schema.ex:219:23: Ecto.Repo.Schema.do_insert/411181119     warning: the following clause will never match:11201121         {:error, _} = error ->11221123     because it attempts to match on the result of:11241125         apply(changeset, adapter, action, args)11261127     which has type:11281129         dynamic({:invalid or :ok, term()})11301131     type warning found at:1132     │1133 297 │             {:error, _} = error ->1134     │                         ~1135     │1136     └─ lib/ecto/repo/schema.ex:297:25: Ecto.Repo.Schema.do_update/411371138    warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead1139    │1140 29 │     surround_many("#Ecto.Query<", list, ">", opts, fn str, _ -> str end)1141    │     ~1142    │1143    └─ lib/ecto/query/inspect.ex:29:5: Inspect.Ecto.Query.inspect/211441145     warning: Macro.to_string/2 is deprecated. Use Macro.to_string/1 instead1146     │1147 144 │     Macro.to_string(expr, &expr_to_string(&1, &2, names, part))1148     │           ~1149     │1150     └─ lib/ecto/query/inspect.ex:144:11: Inspect.Ecto.Query.expr/311511152    warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1153    │1154 54 │       filter_and_reraise e, System.stacktrace1155    │                                    ~1156    │1157    └─ lib/ecto/repo/preloader.ex:54:36: Ecto.Repo.Preloader.normalize_and_preload_each/511581159    warning: Map.size/1 is deprecated. Use Kernel.map_size/1 instead1160    │1161 44 │     index  = Map.size(params)1162    │                  ~1163    │1164    └─ lib/ecto/query/builder.ex:44:18: Ecto.Query.Builder.escape/51165    └─ lib/ecto/query/builder.ex:53:17: Ecto.Query.Builder.escape/511661167     warning: BadStructError.exception/1 is undefined (module BadStructError is not available or is yet to be defined). Make sure the module name is correct and has been specified in full (or that an alias has been defined)1168     │1169 228 │         raise BadStructError, struct: struct, term: data1170     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1171     │1172     └─ lib/ecto/repo/queryable.ex:228: Ecto.Repo.Queryable.process/511731174     warning: Decimal.minus/1 is deprecated. Use Decimal.negate/1 instead1175     │1176 614 │     Decimal.minus(decimal)1177     │             ~1178     │1179     └─ lib/ecto/query/builder.ex:614:13: Ecto.Query.Builder.negate!/111801181     warning: the following clause will never match:11821183         {:error, _} ->11841185     because it attempts to match on the result of:11861187         NaiveDateTime.new(date, time)11881189     which has type:11901191         dynamic({:ok, %NaiveDateTime{}})11921193     type warning found at:1194     │1195 803 │         {:error, _} -> :error1196     │         ~~~~~~~~~~~~~~~~~~~~~1197     │1198     └─ lib/ecto/type.ex:803: Ecto.Type.cast_naive_datetime/111991200     warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1201     │1202 159 │         supervise(children, strategy: :one_for_one)1203     │         ~1204     │1205     └─ lib/ecto/repo/supervisor.ex:159:9: Ecto.Repo.Supervisor.init/112061207     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1208     │1209 214 │       filter_and_reraise e, System.stacktrace1210     │                                    ~1211     │1212     └─ lib/ecto/query/planner.ex:214:36: Ecto.Query.Planner.prepare/41213     └─ lib/ecto/query/planner.ex:709:36: Ecto.Query.Planner.normalize/412141215    warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead1216    │1217 15 │     surround_many("dynamic(", [Macro.to_string(binding), inspected], ")", opts, fn str, _ -> str end)1218    │     ~1219    │1220    └─ lib/ecto/query/inspect.ex:15:5: Inspect.Ecto.Query.DynamicExpr.inspect/212211222      warning: expected a map or struct when accessing .__struct__ in expression:12231224          schema.__struct__12251226      where "schema" was given the types:12271228          # type: dynamic(atom() and not nil)1229          # from: lib/ecto/query/planner.ex:1186:411230          schema12311232          # type: atom()1233          # from: lib/ecto/query/planner.ex:1186:611234          is_atom(schema)12351236      hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()12371238      type warning found at:1239      │1240 1190 │       Map.has_key?(schema.__struct__, field) ->1241      │                           ~1242      │1243      └─ lib/ecto/query/planner.ex:1190:27: Ecto.Query.Planner.type!/612441245    warning: incompatible types given to Ecto.Migration.SchemaMigration.migrated_versions/2:12461247        Ecto.Migration.SchemaMigration.migrated_versions(repo, opts[:prefix])12481249    given types:12501251        (1252          -dynamic(%{..., __adapter__: term(), config: empty_list() or non_empty_list(term(), term())})-,1253          dynamic()1254        )12551256    but expected one of:12571258        atom(), term()12591260    where "opts" was given the type:12611262        # type: dynamic(1263          %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1264            non_struct_map()1265        )1266        # from: lib/ecto/migrator.ex:44:651267        opts[:prefix]12681269    where "repo" was given the type:12701271        # type: dynamic(%{..., __adapter__: term(), config: empty_list() or non_empty_list(term(), term())})1272        # from: lib/ecto/migrator.ex:44:231273        Ecto.Migration.SchemaMigration.ensure_schema_migrations_table!(repo, opts[:prefix])12741275    type warning found at:1276    │1277 45 │       SchemaMigration.migrated_versions(repo, opts[:prefix])1278    │                       ~1279    │1280    └─ lib/ecto/migrator.ex:45:23: Ecto.Migrator.migrated_versions/212811282     warning: expected a module (an atom) when invoking transaction/2 in expression:12831284         repo.transaction(fun, log: false, timeout: :infinity)12851286     where "fun" was given the type:12871288         # type: dynamic()1289         # from: lib/ecto/migrator.ex:114:471290         fun12911292     where "repo" was given the types:12931294         # type: dynamic(%{..., __adapter__: %{..., supports_ddl_transaction?: term()}})1295         # from: lib/ecto/migrator.ex:118:241296         repo.__adapter__.supports_ddl_transaction?12971298         # type: dynamic(%{..., __adapter__: %{..., supports_ddl_transaction?: not false and not nil}})1299         # from: lib/ecto/migrator.ex:118:241300         repo.__adapter__.supports_ddl_transaction?13011302     type warning found at:1303     │1304 119 │         repo.transaction(fun, [log: false, timeout: :infinity])1305     │              ~1306     │1307     └─ lib/ecto/migrator.ex:119:14: Ecto.Migrator.run_maybe_in_transaction/313081309     warning: Code.load_file/1 is deprecated. Use Code.require_file/2 or Code.compile_file/2 instead1310     │1311 291 │     modules = Code.load_file(file)1312     │                    ~1313     │1314     └─ lib/ecto/migrator.ex:291:20: Ecto.Migrator.extract_module/213151316     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1317     │1318 321 │         reraise error, System.stacktrace1319     │                               ~1320     │1321     └─ lib/ecto/migrator.ex:321:31: Ecto.Migrator.verbose_schema_migration/313221323    warning: Supervisor.Spec.worker/3 is deprecated. Use the new child specifications outlined in the Supervisor module instead1324    │1325 12 │       worker(Ecto.Migration.Runner, [], restart: :temporary)1326    │       ~1327    │1328    └─ lib/ecto/migration/supervisor.ex:12:7: Ecto.Migration.Supervisor.init/113291330    warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1331    │1332 15 │     supervise(children, strategy: :simple_one_for_one)1333    │     ~1334    │1335    └─ lib/ecto/migration/supervisor.ex:15:5: Ecto.Migration.Supervisor.init/113361337    warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1338    │1339 10 │       worker(Ecto.Registry, []),1340    │       ~1341    │1342    └─ lib/ecto/application.ex:10:7: Ecto.Application.start/213431344    warning: Supervisor.Spec.supervisor/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1345    │1346 11 │       supervisor(Ecto.Migration.Supervisor, [])1347    │       ~1348    │1349    └─ lib/ecto/application.ex:11:7: Ecto.Application.start/213501351Generated ecto app1352==> openmaize1353Compiling 13 files (.ex)1354    warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.13551356    This error happens when you have function calls without parentheses inside keywords. For example:13571358        function(arg, one: nested_call a, b, c)1359        function(arg, one: if expr, do: :this, else: :that)13601361    In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:13621363        function(arg, one: if(expr, do: :this, else: :that))1364        function(arg, one: nested_call(a, b, c))13651366    Ambiguity found at:1367    │1368 85 │   def check_user_pass(_, _, _), do: raise ArgumentError, "invalid params or options"1369    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1370    │1371    └─ lib/openmaize/login.ex:85137213731374== Compilation error in file lib/openmaize/database.ex ==1375** (UndefinedFunctionError) function Ecto.Query.Builder.Lock.build/3 is undefined (module Ecto.Query.Builder.Lock is not available)1376    (ecto 2.2.12) Ecto.Query.Builder.Lock.build({{:., [line: 90], [{:__aliases__, [line: 90, counter: {Openmaize.Database, 31}, alias: false], [:Ecto, :Query]}, :where]}, [line: 90], [{:__block__, [line: 90], [{:=, [line: 90], [{:query, [line: 90], Ecto.Query.Builder}, {:user_model, [line: 90, column: 15], nil}]}, {{:., [line: 90], [Ecto.Query.Builder.From, :apply]}, [line: 90], [{:query, [line: 90], Ecto.Query.Builder}, 1]}]}, [u: 0], {:==, [line: 90, column: 39], [{{:., [line: 90, column: 35], [{:u, [line: 90, column: 34], nil}, :id]}, [no_parens: true, line: 90, column: 36], []}, {:^, [line: 90, column: 42], [{:id, [line: 90, column: 43], nil}]}]}]}, "FOR UPDATE", #Macro.Env<aliases: [{Config, Openmaize.Config}, {Password, Openmaize.Password}], context: nil, context_modules: [Openmaize.Database], file: "/work/proj/deps_x86_64/openmaize/lib/openmaize/database.ex", function: {:get_user_with_lock, 3}, functions: [{Ecto.Query, [exclude: 2, first: 1, first: 2, last: 1, last: 2, subquery: 1, subquery: 2]}, {Ecto.Changeset, [add_error: 3, add_error: 4, apply_action: 2, apply_changes: 1, assoc_constraint: 2, assoc_constraint: 3, cast: 3, cast: 4, cast_assoc: 2, cast_assoc: 3, cast_embed: 2, cast_embed: 3, change: 1, change: 2, check_constraint: 2, check_constraint: 3, delete_change: 2, exclusion_constraint: 2, exclusion_constraint: 3, fetch_change: 2, fetch_field: 2, force_change: 3, foreign_key_constraint: 2, foreign_key_constraint: 3, get_change: 2, get_change: 3, get_field: 2, get_field: 3, merge: 2, no_assoc_constraint: 2, no_assoc_constraint: 3, optimistic_lock: 2, optimistic_lock: 3, prepare_changes: 2, put_assoc: 3, put_assoc: 4, put_change: 3, put_embed: 3, put_embed: 4, traverse_errors: 2, unique_constraint: 2, unique_constraint: 3, unsafe_validate_unique: 3, unsafe_validate_unique: 4, update_change: 3, validate_acceptance: 2, validate_acceptance: 3, validate_change: 3, validate_change: 4, validate_confirmation: 2, validate_confirmation: 3, validate_exclusion: 3, validate_exclusion: 4, validate_format: 3, validate_format: 4, validate_inclusion: 3, validate_inclusion: 4, validate_length: 3, validate_number: 3, validate_required: 2, validate_required: 3, validate_subset: 3, validate_subset: 4]}, {Kernel, [!=: 2, !==: 2, *: 2, **: 2, +: 1, +: 2, ++: 2, -: 1, -: 2, --: 2, /: 2, <: 2, <=: 2, ==: 2, ===: 2, =~: 2, >: 2, >=: 2, abs: 1, apply: 2, apply: 3, binary_part: 3, binary_slice: 2, binary_slice: 3, bit_size: 1, byte_size: 1, ceil: 1, div: 2, elem: 2, exit: 1, floor: 1, function_exported?: 3, get_and_update_in: 3, get_in: 2, hd: 1, inspect: 1, inspect: 2, is_atom: 1, is_binary: 1, is_bitstring: 1, is_boolean: 1, is_float: 1, is_function: 1, is_function: 2, is_integer: 1, is_list: 1, is_map: 1, is_map_key: 2, is_number: 1, is_pid: 1, is_port: 1, is_reference: 1, is_tuple: 1, length: 1, macro_exported?: 3, make_ref: 0, map_size: 1, max: 2, min: 2, node: 0, node: 1, not: 1, pop_in: 2, put_elem: 3, put_in: 3, rem: 2, round: 1, self: 0, send: 2, spawn: 1, spawn: 3, spawn_link: 1, spawn_link: 3, spawn_monitor: 1, spawn_monitor: 3, struct: 1, struct: 2, struct!: 1, struct!: 2, throw: 1, tl: 1, to_timeout: 1, trunc: 1, tuple_size: 1, update_in: 3]}], lexical_tracker: #PID<0.1261.0>, line: 90, macro_aliases: [], macros: [{Ecto.Query, [distinct: 2, distinct: 3, dynamic: 1, dynamic: 2, from: 1, from: 2, group_by: 2, group_by: 3, having: 2, having: 3, join: 3, join: 4, join: 5, limit: 2, ...]}, ...], ...>)1377    (ecto 2.2.12) expanding macro: Ecto.Query.lock/21378    lib/openmaize/database.ex:90: Openmaize.Database.get_user_with_lock/31379    (ecto 2.2.12) expanding macro: Ecto.Query.from/21380    lib/openmaize/database.ex:90: Openmaize.Database.get_user_with_lock/31381    (elixir 1.20.3) expanding macro: Kernel.|>/21382    lib/openmaize/database.ex:91: Openmaize.Database.get_user_with_lock/31383could not compile dependency :openmaize, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile openmaize --force", update it with "mix deps.update openmaize" or clean it with "mix deps.clean openmaize"