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"