openmaize_jwt

Build log

nerves_system_trellis

openmaize_jwt 1.0.0 · fail · run openmaize_jwt-1.0.0-1791028971953
1720 of 1720 lines
1Resolving Hex dependencies...2Resolution completed in 0.2s3Unchanged: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_trellis/poison/mix.exs:4:44: Poison.Mixfile (module)112113==> nerves_system_br114Generated nerves_system_br app115==> mime116Compiling 1 file (.ex)117Generated mime app118==> circular_buffer119Compiling 1 file (.ex)120Generated circular_buffer app121==> poison122Compiling 4 files (.ex)123    warning: using single-quoted strings to represent charlists is deprecated.124    Use ~c"" if you indeed want a charlist or use "" instead.125    You may run "mix format --migrate" to change all single-quoted126    strings to use the ~c sigil and fix this warning.127    │128 89 │   for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do129    │                               ~130    │131    └─ lib/poison/encoder.ex:89:31132133    warning: using single-quoted strings to represent charlists is deprecated.134    Use ~c"" if you indeed want a charlist or use "" instead.135    You may run "mix format --migrate" to change all single-quoted136    strings to use the ~c sigil and fix this warning.137    │138 89 │   for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do139    │                                                ~140    │141    └─ lib/poison/encoder.ex:89:48142143     warning: using single-quoted strings to represent charlists is deprecated.144     Use ~c"" if you indeed want a charlist or use "" instead.145     You may run "mix format --migrate" to change all single-quoted146     strings to use the ~c sigil and fix this warning.147     │148 127 │   defp chunk_size(<<char>> <> _, _mode, acc) when char <= 0x1F or char in '"\\' do149     │                                                                           ~150     │151     └─ lib/poison/encoder.ex:127:75152153    warning: using single-quoted strings to represent charlists is deprecated.154    Use ~c"" if you indeed want a charlist or use "" instead.155    You may run "mix format --migrate" to change all single-quoted156    strings to use the ~c sigil and fix this warning.157    │158 67 │   defp value(<<char, _ :: binary>> = string, _keys) when char in '-0123456789' do159    │                                                                  ~160    │161    └─ lib/poison/parser.ex:67:66162163     warning: using single-quoted strings to represent charlists is deprecated.164     Use ~c"" if you indeed want a charlist or use "" instead.165     You may run "mix format --migrate" to change all single-quoted166     strings to use the ~c sigil and fix this warning.167     │168 134 │   defp number_int(<<char, _ :: binary>> = string, acc) when char in '123456789' do169     │                                                                     ~170     │171     └─ lib/poison/parser.ex:134:69172173     warning: using single-quoted strings to represent charlists is deprecated.174     Use ~c"" if you indeed want a charlist or use "" instead.175     You may run "mix format --migrate" to change all single-quoted176     strings to use the ~c sigil and fix this warning.177     │178 150 │   defp number_exp(<<e>> <> rest, frac, acc) when e in 'eE' do179     │                                                       ~180     │181     └─ lib/poison/parser.ex:150:55182183     warning: using single-quoted strings to represent charlists is deprecated.184     Use ~c"" if you indeed want a charlist or use "" instead.185     You may run "mix format --migrate" to change all single-quoted186     strings to use the ~c sigil and fix this warning.187     │188 176 │   defp number_digits(<<char>> <> rest = string) when char in '0123456789' do189     │                                                              ~190     │191     └─ lib/poison/parser.ex:176:62192193     warning: using single-quoted strings to represent charlists is deprecated.194     Use ~c"" if you indeed want a charlist or use "" instead.195     You may run "mix format --migrate" to change all single-quoted196     strings to use the ~c sigil and fix this warning.197     │198 184 │   defp number_digits_count(<<char>> <> rest, acc) when char in '0123456789' do199     │                                                                ~200     │201     └─ lib/poison/parser.ex:184:64202203     warning: using single-quoted strings to represent charlists is deprecated.204     Use ~c"" if you indeed want a charlist or use "" instead.205     You may run "mix format --migrate" to change all single-quoted206     strings to use the ~c sigil and fix this warning.207     │208 208 │   for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do209     │                               ~210     │211     └─ lib/poison/parser.ex:208:31212213     warning: using single-quoted strings to represent charlists is deprecated.214     Use ~c"" if you indeed want a charlist or use "" instead.215     You may run "mix format --migrate" to change all single-quoted216     strings to use the ~c sigil and fix this warning.217     │218 208 │   for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do219     │                                            ~220     │221     └─ lib/poison/parser.ex:208:44222223     warning: using single-quoted strings to represent charlists is deprecated.224     Use ~c"" if you indeed want a charlist or use "" instead.225     You may run "mix format --migrate" to change all single-quoted226     strings to use the ~c sigil and fix this warning.227     │228 218 │     when a1 in 'dD' and a2 in 'dD'229     │                ~230     │231     └─ lib/poison/parser.ex:218:16232233     warning: using single-quoted strings to represent charlists is deprecated.234     Use ~c"" if you indeed want a charlist or use "" instead.235     You may run "mix format --migrate" to change all single-quoted236     strings to use the ~c sigil and fix this warning.237     │238 218 │     when a1 in 'dD' and a2 in 'dD'239     │                               ~240     │241     └─ lib/poison/parser.ex:218:31242243     warning: using single-quoted strings to represent charlists is deprecated.244     Use ~c"" if you indeed want a charlist or use "" instead.245     You may run "mix format --migrate" to change all single-quoted246     strings to use the ~c sigil and fix this warning.247     │248 219 │     and (b1 in '89abAB')249     │                ~250     │251     └─ lib/poison/parser.ex:219:16252253     warning: using single-quoted strings to represent charlists is deprecated.254     Use ~c"" if you indeed want a charlist or use "" instead.255     You may run "mix format --migrate" to change all single-quoted256     strings to use the ~c sigil and fix this warning.257     │258 253 │   defp skip_whitespace(<<char>> <> rest) when char in '\s\n\t\r' do259     │                                                       ~260     │261     └─ lib/poison/parser.ex:253:55262263    warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead264    │265 22 │   if Application.get_env(:poison, :native) do266    │                  ~267    │268    └─ lib/poison/parser.ex:22:18: Poison.Parser (module)269270    warning: use Bitwise is deprecated. import Bitwise instead271    │272 26 │   use Bitwise273    │   ~~~~~~~~~~~274    │275    └─ lib/poison/parser.ex:26: Poison.Parser (module)276277     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 operator278     │279 178 │     <<digits :: binary-size(count), rest :: binary>> = string280     │                             ~281     │282     └─ lib/poison/parser.ex:178:29: Poison.Parser.number_digits/1283284     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 operator285     │286 204 │     <<chunk :: binary-size(n), rest :: binary>> = string287     │                            ~288     │289     └─ lib/poison/parser.ex:204:28: Poison.Parser.string_continue/2290291    warning: use Bitwise is deprecated. import Bitwise instead292    │293 79 │   use Bitwise294    │   ~~~~~~~~~~~295    │296    └─ lib/poison/encoder.ex:79: Poison.Encoder.BitString (module)297298     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 operator299     │300 123 │     <<chunk :: binary-size(size), rest :: binary>> = string301     │                            ~302     │303     └─ lib/poison/encoder.ex:123:28: Poison.Encoder.BitString.escape/2304305     warning: HashDict.size/1 is deprecated. Use maps and the Map module instead306     │307 283 │     if HashDict.size(dict) < 1 do308     │                 ~309     │310     └─ lib/poison/encoder.ex:283:17: Poison.Encoder.HashDict.encode/2311312     warning: Integer.to_char_list/2 is deprecated. Use Integer.to_charlist/2 instead313     │314 161 │     case Integer.to_char_list(char, 16) do315     │                  ~316     │317     └─ lib/poison/encoder.ex:161:18: Poison.Encoder.BitString.seq/1318319Generated poison app320==> plug_crypto321Compiling 5 files (.ex)322Generated plug_crypto app323==> nerves_compatibility_test324===> Analyzing applications...325===> Compiling ranch326    ┌─ src/ranch_conns_sup.erl:327    │328 80 │  	catch erlang:send(SupPid, {?MODULE, active_connections, self(), Tag},329    │  	╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.330Compile directive 'nowarn_deprecated_catch' can be used to suppress331warnings in selected modules.332333334     ┌─ src/ranch_ssl.erl:335     │336 128 │  	case ssl:ssl_accept(CSocket, Timeout) of337     │  	     ╰── Warning: ssl:ssl_accept/2 is removed; use ssl:handshake/1,2,3 instead338339     ┌─ src/ranch_ssl.erl:340     │341 233 │  			end, ssl:cipher_suites());342     │  			     ╰── Warning: ssl:cipher_suites/0 is removed; use ssl:cipher_suites/2,3 instead343344     ┌─ src/ranch_ssl.erl:345     │346 235 │  			ssl:cipher_suites()347     │  			╰── Warning: ssl:cipher_suites/0 is removed; use ssl:cipher_suites/2,3 instead348349350    ┌─ src/ranch.erl:351    │352 73 │  					catch Transport:controlling_process(Socket, AcceptorsSup);353    │  					╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.354Compile directive 'nowarn_deprecated_catch' can be used to suppress355warnings in selected modules.356357358==> tablet359Compiling 2 files (.ex)360Generated tablet app361==> elixir_make362Compiling 8 files (.ex)363Generated elixir_make app364==> nerves_logging365 CC kmsg_tailer.o366 LD kmsg_tailer367Compiling 5 files (.ex)368Generated nerves_logging app369==> comeonin370mkdir -p priv371/home/nerves/.nerves/artifacts/nerves_toolchain_armv7_nerves_linux_gnueabihf-15.3.1/bin/armv7-nerves-linux-gnueabihf-gcc -g -O3 -Wall -I/usr/local/lib/erlang/erts-17.1/include -Ic_src -fPIC -shared --sysroot=/home/nerves/.nerves/artifacts/nerves_system_trellis-0.5.0/staging c_src/bcrypt_nif.c c_src/blowfish.c -o priv/bcrypt_nif.so372Compiling 8 files (.ex)373    warning: using single-quoted strings to represent charlists is deprecated.374    Use ~c"" if you indeed want a charlist or use "" instead.375    You may run "mix format --migrate" to change all single-quoted376    strings to use the ~c sigil and fix this warning.377    │378 57 │     path = :filename.join(:code.priv_dir(:comeonin), 'bcrypt_nif')379    │                                                      ~380    │381    └─ lib/comeonin/bcrypt.ex:57:54382383     warning: using single-quoted strings to represent charlists is deprecated.384     Use ~c"" if you indeed want a charlist or use "" instead.385     You may run "mix format --migrate" to change all single-quoted386     strings to use the ~c sigil and fix this warning.387     │388 159 │     [prefix, log_rounds, salt] = Enum.take(salt, 29) |> :string.tokens('$')389     │                                                                        ~390     │391     └─ lib/comeonin/bcrypt.ex:159:72392393     warning: using single-quoted strings to represent charlists is deprecated.394     Use ~c"" if you indeed want a charlist or use "" instead.395     You may run "mix format --migrate" to change all single-quoted396     strings to use the ~c sigil and fix this warning.397     │398 164 │   defp bcrypt(key, salt, prefix, log_rounds) when prefix in ['2b', '2a'] do399     │                                                              ~400     │401     └─ lib/comeonin/bcrypt.ex:164:62402403     warning: using single-quoted strings to represent charlists is deprecated.404     Use ~c"" if you indeed want a charlist or use "" instead.405     You may run "mix format --migrate" to change all single-quoted406     strings to use the ~c sigil and fix this warning.407     │408 164 │   defp bcrypt(key, salt, prefix, log_rounds) when prefix in ['2b', '2a'] do409     │                                                                    ~410     │411     └─ lib/comeonin/bcrypt.ex:164:68412413     warning: using single-quoted strings to represent charlists is deprecated.414     Use ~c"" if you indeed want a charlist or use "" instead.415     You may run "mix format --migrate" to change all single-quoted416     strings to use the ~c sigil and fix this warning.417     │418 165 │     key_len = if prefix == '2b' and length(key) > 72, do: 73, else: length(key) + 1419     │                            ~420     │421     └─ lib/comeonin/bcrypt.ex:165:28422423    warning: use Bitwise is deprecated. import Bitwise instead424    │425 48 │   use Bitwise426    │   ~~~~~~~~~~~427    │428    └─ lib/comeonin/bcrypt.ex:48: Comeonin.Bcrypt (module)429430    warning: use Bitwise is deprecated. import Bitwise instead431    │432  9 │   use Bitwise433    │   ~~~~~~~~~~~434    │435    └─ lib/comeonin/bcrypt/base64.ex:9: Comeonin.Bcrypt.Base64 (module)436437    warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.438439    This error happens when you have function calls without parentheses inside keywords. For example:440441        function(arg, one: nested_call a, b, c)442        function(arg, one: if expr, do: :this, else: :that)443444    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:445446        function(arg, one: if(expr, do: :this, else: :that))447        function(arg, one: nested_call(a, b, c))448449    Ambiguity found at:450    │451 49 │   def gen_secret(_), do: raise ArgumentError, "Invalid length"452    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~453    │454    └─ lib/comeonin/otp.ex:49455456    warning: use Bitwise is deprecated. import Bitwise instead457    │458 34 │   use Bitwise459    │   ~~~~~~~~~~~460    │461    └─ lib/comeonin/otp.ex:34: Comeonin.Otp (module)462463    warning: use Bitwise is deprecated. import Bitwise instead464    │465 31 │   use Bitwise466    │   ~~~~~~~~~~~467    │468    └─ lib/comeonin/pbkdf2.ex:31: Comeonin.Pbkdf2 (module)469470     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 operator471     │472 117 │     <<bin::binary-size(max_length), _::binary>> = key473     │                        ~474     │475     └─ lib/comeonin/pbkdf2.ex:117:24: Comeonin.Pbkdf2.pbkdf2/7476477    warning: using single-quoted strings to represent charlists is deprecated.478    Use ~c"" if you indeed want a charlist or use "" instead.479    You may run "mix format --migrate" to change all single-quoted480    strings to use the ~c sigil and fix this warning.481    │482 11 │   b64_alphabet = Enum.with_index 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./'483    │                                  ~484    │485    └─ lib/comeonin/pbkdf2/base64.ex:11:34486487    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 operator488    │489 29 │     <<main::size(split)-binary, rest::binary>> = data490    │                  ~491    │492    └─ lib/comeonin/pbkdf2/base64.ex:29:18: Comeonin.Pbkdf2.Base64.encode/1493494    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 operator495    │496 52 │     <<main::size(split)-binary, rest::binary>> = data497    │                  ~498    │499    └─ lib/comeonin/pbkdf2/base64.ex:52:18: Comeonin.Pbkdf2.Base64.decode/1500501    warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead502    │503 19 │     secure_check(rest_h, rest_s, acc ||| (h ^^^ s))504    │                                             ~505    │506    └─ lib/comeonin/tools.ex:19:45507508    warning: use Bitwise is deprecated. import Bitwise instead509    │510  6 │   use Bitwise511    │   ~~~~~~~~~~~512    │513    └─ lib/comeonin/tools.ex:6: Comeonin.Tools (module)514515     warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead516     │517 121 │     initial = :crypto.hmac(:sha512, password, <<salt::binary, block_index::integer-size(32)>>)518     │                       ~519     │520     └─ lib/comeonin/pbkdf2.ex:121:23: Comeonin.Pbkdf2.pbkdf2/7521     └─ lib/comeonin/pbkdf2.ex:129:20: Comeonin.Pbkdf2.iterate/4522523    warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead524    │525 76 │     hash = :crypto.hmac(:sha, Base.decode32!(secret, padding: false),526    │                    ~527    │528    └─ lib/comeonin/otp.ex:76:20: Comeonin.Otp.gen_hotp/3529530Generated comeonin app531==> nerves_compatibility_test532===> Analyzing applications...533===> Compiling cowlib534==> nerves_discovery535Compiling 5 files (.ex)536Generated nerves_discovery app537==> ring_logger538Compiling 7 files (.ex)539Generated ring_logger app540==> nerves_compatibility_test541===> Analyzing applications...542===> Compiling poolboy543==> decimal544Compiling 4 files (.ex)545      warning: using single-quoted strings to represent charlists is deprecated.546      Use ~c"" if you indeed want a charlist or use "" instead.547      You may run "mix format --migrate" to change all single-quoted548      strings to use the ~c sigil and fix this warning.549      │550 1320 │           '0.' ++ :lists.duplicate(-diff, ?0) ++ list551      │           ~552      │553      └─ lib/decimal.ex:1320:11554555      warning: using single-quoted strings to represent charlists is deprecated.556      Use ~c"" if you indeed want a charlist or use "" instead.557      You may run "mix format --migrate" to change all single-quoted558      strings to use the ~c sigil and fix this warning.559      │560 1351 │           list = list ++ 'E'561      │                          ~562      │563      └─ lib/decimal.ex:1351:26564565      warning: using single-quoted strings to represent charlists is deprecated.566      Use ~c"" if you indeed want a charlist or use "" instead.567      You may run "mix format --migrate" to change all single-quoted568      strings to use the ~c sigil and fix this warning.569      │570 1352 │           list = if exp >= 0, do: list ++ '+', else: list571      │                                           ~572      │573      └─ lib/decimal.ex:1352:43574575      warning: using single-quoted strings to represent charlists is deprecated.576      Use ~c"" if you indeed want a charlist or use "" instead.577      You may run "mix format --migrate" to change all single-quoted578      strings to use the ~c sigil and fix this warning.579      │580 1775 │       int = if int == [], do: '0', else: int581      │                               ~582      │583      └─ lib/decimal.ex:1775:31584585      warning: using single-quoted strings to represent charlists is deprecated.586      Use ~c"" if you indeed want a charlist or use "" instead.587      You may run "mix format --migrate" to change all single-quoted588      strings to use the ~c sigil and fix this warning.589      │590 1776 │       exp = if exp == [], do: '0', else: exp591      │                               ~592      │593      └─ lib/decimal.ex:1776:31594595Generated decimal app596warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"597  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2598  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1599  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5600  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2601  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4602  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2603604==> ecto605Compiling 70 files (.ex)606     warning: using single-quoted strings to represent charlists is deprecated.607     Use ~c"" if you indeed want a charlist or use "" instead.608     You may run "mix format --migrate" to change all single-quoted609     strings to use the ~c sigil and fix this warning.610     │611 166 │     defp insert_all_value(_),   do: '?'612     │                                     ~613     │614     └─ lib/ecto/adapters/mysql/connection.ex:166:37615616     warning: using single-quoted strings to represent charlists is deprecated.617     Use ~c"" if you indeed want a charlist or use "" instead.618     You may run "mix format --migrate" to change all single-quoted619     strings to use the ~c sigil and fix this warning.620     │621 354 │       '?'622     │       ~623     │624     └─ lib/ecto/adapters/mysql/connection.ex:354:7625626      warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.627628      This error happens when you have function calls without parentheses inside keywords. For example:629630          function(arg, one: nested_call a, b, c)631          function(arg, one: if expr, do: :this, else: :that)632633      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:634635          function(arg, one: if(expr, do: :this, else: :that))636          function(arg, one: nested_call(a, b, c))637638      Ambiguity found at:639      │640 2286 │     raise ArgumentError, "cannot add constraint to changeset because it does not have a source, got: #{inspect data}"641      │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~642      │643      └─ lib/ecto/changeset.ex:2286644645     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.646647     This error happens when you have function calls without parentheses inside keywords. For example:648649         function(arg, one: nested_call a, b, c)650         function(arg, one: if expr, do: :this, else: :that)651652     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:653654         function(arg, one: if(expr, do: :this, else: :that))655         function(arg, one: nested_call(a, b, c))656657     Ambiguity found at:658     │659 265 │     do: raise ArgumentError, "a constraint must have either a check or exclude option"660     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~661     │662     └─ lib/ecto/migration/runner.ex:265663664     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.665666     This error happens when you have function calls without parentheses inside keywords. For example:667668         function(arg, one: nested_call a, b, c)669         function(arg, one: if expr, do: :this, else: :that)670671     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:672673         function(arg, one: if(expr, do: :this, else: :that))674         function(arg, one: nested_call(a, b, c))675676     Ambiguity found at:677     │678 267 │     do: raise ArgumentError, "a constraint must not have both check and exclude options"679     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~680     │681     └─ lib/ecto/migration/runner.ex:267682683     warning: atom ::: must be written between quotes, as in :"::", to avoid ambiguity684     │685 136 │       {:::, _, [left, _]} -> is_integer(left) or is_binary(left)686     │        ~687     │688     └─ lib/ecto/query/builder.ex:136:8689690     warning: unknown compiler variable "__" (expected one of __MODULE__, __ENV__, __DIR__, __CALLER__, __STACKTRACE__)691     │692 643 │   def quoted_type({:datetime_add, _, [_, _, __]}, _vars), do: :naive_datetime693     │                                             ~~694     │695     └─ lib/ecto/query/builder.ex:643:45: Ecto.Query.Builder.quoted_type/2696697     warning: unknown compiler variable "__" (expected one of __MODULE__, __ENV__, __DIR__, __CALLER__, __STACKTRACE__)698     │699 644 │   def quoted_type({:date_add, _, [_, _, __]}, _vars), do: :date700     │                                         ~~701     │702     └─ lib/ecto/query/builder.ex:644:41: Ecto.Query.Builder.quoted_type/2703704     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.705706     This error happens when you have function calls without parentheses inside keywords. For example:707708         function(arg, one: nested_call a, b, c)709         function(arg, one: if expr, do: :this, else: :that)710711     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:712713         function(arg, one: if(expr, do: :this, else: :that))714         function(arg, one: nested_call(a, b, c))715716     Ambiguity found at:717     │718 454 │     do: raise ArgumentError, "a changeset with action #{inspect given} was given to #{inspect repo}.#{action}/2"719     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~720     │721     └─ lib/ecto/repo/schema.ex:454722723    warning: unused require Ecto.Query724    │725  6 │   require Ecto.Query726    │   ~727    │728    └─ lib/ecto/repo/preloader.ex:6:3729730    warning: Module.eval_quoted/2 is deprecated. Use Code.eval_quoted/3 instead731    │732  9 │   schema "schema_migrations" do733    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~734    │735    └─ lib/ecto/migration/schema_migration.ex:9: Ecto.Migration.SchemaMigration (module)736737      warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead738      │739 2400 │     surround_many("#Ecto.Changeset<", list, ">", opts, fn740      │     ~741      │742      └─ lib/ecto/changeset.ex:2400:5: Inspect.Ecto.Changeset.inspect/2743744     warning: struct DBConnection.OwnershipError is undefined (module DBConnection.OwnershipError is not available or is yet to be defined)745     │746 258 │       err in DBConnection.OwnershipError ->747     │           ~748     │749     └─ lib/ecto/adapters/sql.ex:258:11: Ecto.Adapters.SQL.sql_call/6750751     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead752     │753 260 │         reraise %{err | message: message}, System.stacktrace754     │                                                   ~755     │756     └─ lib/ecto/adapters/sql.ex:260:51: Ecto.Adapters.SQL.sql_call/6757758    warning: incompatible types given to Mix.Ecto.ensure_started/2:759760        Mix.Ecto.ensure_started(repo, opts)761762    given types:763764        -dynamic(atom())-, dynamic(empty_list() or non_empty_list(term(), term()))765766    but expected one of:767768        %{..., __adapter__: atom()}, empty_list() or non_empty_list(term(), term())769770    where "opts" was given the type:771772        # type: dynamic(773          %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or774            non_struct_map()775        )776        # from: lib/mix/tasks/ecto.rollback.ex:64:10777        opts =778          if opts[:quiet] do779            Keyword.merge(opts, log: false, log_sql: false)780          else781            opts782          end783784    where "repo" was given the type:785786        # type: dynamic(atom())787        # from: lib/mix/tasks/ecto.rollback.ex:70:7788        Mix.Ecto.ensure_repo(repo, args)789790    type warning found at:791    │792 72 │       {:ok, pid, apps} = ensure_started(repo, opts)793    │                          ~794    │795    └─ lib/mix/tasks/ecto.rollback.ex:72:26: Mix.Tasks.Ecto.Rollback.run/2796797    warning: incompatible types given to Mix.Ecto.ensure_started/2:798799        Mix.Ecto.ensure_started(repo, all: true)800801    given types:802803        -dynamic(atom())-, non_empty_list({:all, true})804805    but expected one of:806807        %{..., __adapter__: atom()}, empty_list() or non_empty_list(term(), term())808809    where "repo" was given the type:810811        # type: dynamic(atom())812        # from: lib/mix/tasks/ecto.migrations.ex:37:7813        Mix.Ecto.ensure_repo(repo, args)814815    type warning found at:816    │817 39 │       {:ok, pid, _} = ensure_started(repo, all: true)818    │                       ~819    │820    └─ lib/mix/tasks/ecto.migrations.ex:39:23: Mix.Tasks.Ecto.Migrations.run/3821822    warning: incompatible types given to Mix.Ecto.ensure_started/2:823824        Mix.Ecto.ensure_started(repo, opts)825826    given types:827828        -dynamic(atom())-, dynamic(empty_list() or non_empty_list(term(), term()))829830    but expected one of:831832        %{..., __adapter__: atom()}, empty_list() or non_empty_list(term(), term())833834    where "opts" was given the type:835836        # type: dynamic(837          %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or838            non_struct_map()839        )840        # from: lib/mix/tasks/ecto.migrate.ex:68:10841        opts =842          if opts[:quiet] do843            Keyword.merge(opts, log: false, log_sql: false)844          else845            opts846          end847848    where "repo" was given the type:849850        # type: dynamic(atom())851        # from: lib/mix/tasks/ecto.migrate.ex:74:7852        Mix.Ecto.ensure_repo(repo, args)853854    type warning found at:855    │856 76 │       {:ok, pid, apps} = ensure_started(repo, opts)857    │                          ~858    │859    └─ lib/mix/tasks/ecto.migrate.ex:76:26: Mix.Tasks.Ecto.Migrate.run/2860861    warning: incompatible types given to Mix.Ecto.source_repo_priv/1:862863        Mix.Ecto.source_repo_priv(repo)864865    given types:866867        -dynamic(%{..., __adapter__: atom(), config: empty_list() or non_empty_list(term(), term())})-868869    but expected one of:870871        atom()872873    where "repo" was given the types:874875        # type: dynamic(%{..., config: empty_list() or non_empty_list(term(), term())})876        # from: lib/mix/tasks/ecto.load.ex:70:22877        Keyword.merge(repo.config, opts)878879        # type: dynamic(%{..., __adapter__: atom(), config: empty_list() or non_empty_list(term(), term())})880        # from: lib/mix/tasks/ecto.load.ex:72:27881        repo.__adapter__.structure_load(Mix.Ecto.source_repo_priv(repo), config)882883    type warning found at:884    │885 72 │     case repo.__adapter__.structure_load(source_repo_priv(repo), config) do886    │                                          ~887    │888    └─ lib/mix/tasks/ecto.load.ex:72:42: Mix.Tasks.Ecto.Load.load_structure/2889890     warning: the following clause will never match:891892         [{^module, :changeset, args_or_arity, _}] when args_or_arity == 2 when length(args_or_arity) == 2 ->893894     because it attempts to match on the result of:895896         System.stacktrace()897898     which has type:899900         empty_list()901902     where "args_or_arity" was given the type:903904         # type: float() or integer() or non_empty_list(term())905         # from: lib/ecto/changeset.ex906         (_() when args_or_arity == 2) when length(args_or_arity) == 2907908     where "module" was given the type:909910         # type: dynamic()911         # from: lib/ecto/changeset.ex:733:30912         module913914     type warning found at:915     │916 741 │ ...                   when length(args_or_arity) == 2 ->917     │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~918     │919     └─ lib/ecto/changeset.ex:741: Ecto.Changeset.on_cast_default/2920921    warning: expected a map or struct when accessing .__adapter__ in expression:922923        repo.__adapter__924925    where "repo" was given the type:926927        # type: dynamic(atom())928        # from: lib/mix/tasks/ecto.load.ex:53:7929        Mix.Ecto.ensure_repo(repo, args)930931    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()932933    type warning found at:934    │935 54 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Structure,936    │                              ~937    │938    └─ lib/mix/tasks/ecto.load.ex:54:30: Mix.Tasks.Ecto.Load.run/1939940     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead941     │942 739 │           case System.stacktrace do943     │                       ~944     │945     └─ lib/ecto/changeset.ex:739:23: Ecto.Changeset.on_cast_default/2946947    warning: expected a map or struct when accessing .__adapter__ in expression:948949        repo.__adapter__950951    where "repo" was given the type:952953        # type: dynamic(atom())954        # from: lib/mix/tasks/ecto.dump.ex:50:7955        Mix.Ecto.ensure_repo(repo, args)956957    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()958959    type warning found at:960    │961 51 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Structure,962    │                              ~963    │964    └─ lib/mix/tasks/ecto.dump.ex:51:30: Mix.Tasks.Ecto.Dump.run/1965966    warning: expected a map or struct when accessing .__adapter__ in expression:967968        repo.__adapter__969970    where "repo" was given the type:971972        # type: dynamic(atom())973        # from: lib/mix/tasks/ecto.create.ex:37:7974        Mix.Ecto.ensure_repo(repo, args)975976    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()977978    type warning found at:979    │980 38 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Storage,981    │                              ~982    │983    └─ lib/mix/tasks/ecto.create.ex:38:30: Mix.Tasks.Ecto.Create.run/1984985    warning: expected a map or struct when accessing .__adapter__ in expression:986987        repo.__adapter__988989    where "repo" was given the type:990991        # type: dynamic(atom())992        # from: lib/mix/tasks/ecto.drop.ex:39:7993        Mix.Ecto.ensure_repo(repo, args)994995    hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()996997    type warning found at:998    │999 40 │       ensure_implements(repo.__adapter__, Ecto.Adapter.Storage,1000    │                              ~1001    │1002    └─ lib/mix/tasks/ecto.drop.ex:40:30: Mix.Tasks.Ecto.Drop.run/110031004    warning: incompatible types given to get_source/1:10051006        get_source(repo)10071008    given types:10091010        -dynamic(atom())-10111012    but expected one of:10131014        %{..., config: empty_list() or non_empty_list(term(), term())}10151016    where "repo" was given the type:10171018        # type: dynamic(atom())1019        # from: lib/ecto/migration/schema_migration.ex:24:131020        repo.all(1021          Map.put(1022            (1023              query =1024                (1025                  query = {get_source(repo), Ecto.Migration.SchemaMigration}1026                  Ecto.Query.Builder.From.apply(query, 1)1027                )1028        1029              Ecto.Query.Builder.Select.apply(query, %Ecto.Query.SelectExpr{1030                ...,1031                expr: {{:., [], [{:&, [], [0]}, :version]}, [], []},1032                file: "/work/proj/deps_trellis/ecto/lib/ecto/migration/schema_migration.ex",1033                line: 22,1034                take: %{}1035              })1036            ),1037            :prefix,1038            prefix1039          ), timeout: :infinity, log: false)10401041    type warning found at:1042    │1043 22 │     from(p in {get_source(repo), __MODULE__}, select: p.version)1044    │                ~1045    │1046    └─ lib/ecto/migration/schema_migration.ex:22:16: Ecto.Migration.SchemaMigration.migrated_versions/210471048     warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1049     │1050 856 │       not is_atom(queryable) or queryable in env.context_modules or not Code.ensure_compiled?(queryable) ->1051     │                                                                              ~1052     │1053     └─ lib/ecto/association.ex:856:78: Ecto.Association.ManyToMany.after_compile_validation/21054     └─ lib/ecto/association.ex:860:45: Ecto.Association.ManyToMany.after_compile_validation/210551056    warning: incompatible types given to get_source/1:10571058        get_source(repo)10591060    given types:10611062        -dynamic(atom())-10631064    but expected one of:10651066        %{..., config: empty_list() or non_empty_list(term(), term())}10671068    where "repo" was given the type:10691070        # type: dynamic(atom())1071        # from: lib/ecto/migration/schema_migration.ex:30:131072        repo.insert!(1073          Ecto.put_meta(%Ecto.Migration.SchemaMigration{..., version: version},1074            prefix: prefix,1075            source: get_source(repo)1076          ), timeout: :infinity, log: false)10771078    type warning found at:1079    │1080 29 │     |> Ecto.put_meta(prefix: prefix, source: get_source(repo))1081    │                                              ~1082    │1083    └─ lib/ecto/migration/schema_migration.ex:29:46: Ecto.Migration.SchemaMigration.up/310841085    warning: incompatible types given to get_source/1:10861087        get_source(repo)10881089    given types:10901091        -dynamic(atom())-10921093    but expected one of:10941095        %{..., config: empty_list() or non_empty_list(term(), term())}10961097    where "repo" was given the type:10981099        # type: dynamic(atom())1100        # from: lib/ecto/migration/schema_migration.ex:36:131101        repo.delete_all(1102          Map.put(1103            (1104              query =1105                (1106                  query = {get_source(repo), Ecto.Migration.SchemaMigration}1107                  Ecto.Query.Builder.From.apply(query, 1)1108                )1109        1110              Ecto.Query.Builder.Filter.apply(query, :where, %Ecto.Query.BooleanExpr{1111                expr: {:==, [], [{{:., [], [{:&, [], [0]}, :version]}, [], []}, {:^, [], [0]}]},1112                op: :and,1113                params: [{Ecto.Query.Builder.not_nil!(version), {0, :version}}],1114                file: "/work/proj/deps_trellis/ecto/lib/ecto/migration/schema_migration.ex",1115                line: 341116              })1117            ),1118            :prefix,1119            prefix1120          ), timeout: :infinity, log: false)11211122    type warning found at:1123    │1124 34 │     from(p in {get_source(repo), __MODULE__}, where: p.version == ^version)1125    │                ~1126    │1127    └─ lib/ecto/migration/schema_migration.ex:34:16: Ecto.Migration.SchemaMigration.down/311281129     warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1130     │1131 715 │       not is_atom(queryable) or queryable in env.context_modules or not Code.ensure_compiled?(queryable) ->1132     │                                                                              ~1133     │1134     └─ lib/ecto/association.ex:715:78: Ecto.Association.BelongsTo.after_compile_validation/211351136     warning: the following conditional expression:11371138         is_atom(related)11391140     will always evaluate to:11411142         dynamic(true)11431144     where "related" was given the type:11451146         # type: dynamic(atom())1147         # from: lib/ecto/association.ex:730:151148         related = Ecto.Association.related_from_query(queryable)11491150     type warning found at:1151     │1152 732 │     unless is_atom(related) do1153     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~1154     │1155     └─ lib/ecto/association.ex:732: Ecto.Association.BelongsTo.struct/311561157      warning: this clause of defp type_to_module/1 is never used (or it will always fail/warn when invoked)1158      │1159 1422 │   defp type_to_module(:naive_datetime), do: NaiveDateTime1160      │        ~1161      │1162      └─ lib/ecto/schema.ex:1422:8: Ecto.Schema.type_to_module/111631164     warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1165     │1166 430 │       not is_atom(queryable) or queryable in env.context_modules or not Code.ensure_compiled?(queryable) ->1167     │                                                                              ~1168     │1169     └─ lib/ecto/association.ex:430:78: Ecto.Association.Has.after_compile_validation/211701171      warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)1172      │1173 1885 │         if Code.ensure_compiled?(type) and function_exported?(type, :type, 0) do1174      │                 ~1175      │1176      └─ lib/ecto/schema.ex:1885:17: Ecto.Schema.check_type!/311771178    warning: Mix.Project.compile/1 is deprecated. Use Mix.Task.run("compile", args) instead1179    │1180 62 │       Mix.Project.compile(args)1181    │                   ~1182    │1183    └─ lib/mix/ecto.ex:62:19: Mix.Ecto.ensure_repo/211841185     warning: expected a module (an atom) when invoking start_link/1 in expression:11861187         repo.start_link(pool_size: pool_size)11881189     where "pool_size" was given the type:11901191         # type: dynamic()1192         # from: lib/mix/ecto.ex:101:151193         pool_size = Keyword.get(opts, :pool_size, 1)11941195     where "repo" was given the type:11961197         # type: dynamic(%{..., __adapter__: atom()})1198         # from: lib/mix/ecto.ex:99:361199         repo.__adapter__.ensure_all_started(repo, :temporary)12001201     type warning found at:1202     │1203 102 │     case repo.start_link(pool_size: pool_size) do1204     │               ~1205     │1206     └─ lib/mix/ecto.ex:102:15: Mix.Ecto.ensure_started/212071208     warning: Logger.remove_backend/1 is deprecated. Use LoggerBackends.remove/2 from :logger_backends dependency1209     │1210 146 │     Logger.remove_backend(:console)1211     │            ~1212     │1213     └─ lib/mix/ecto.ex:146:12: Mix.Ecto.restart_apps_if_migrated/212141215     warning: Logger.add_backend/2 is deprecated. Use LoggerBackends.add/2 from :logger_backends dependency1216     │1217 155 │     Logger.add_backend(:console, flush: true)1218     │            ~1219     │1220     └─ lib/mix/ecto.ex:155:12: Mix.Ecto.restart_apps_if_migrated/212211222     warning: the following clause will never match:12231224         {:error, _} = error ->12251226     because it attempts to match on the result of:12271228         apply(changeset, adapter, :insert, args)12291230     which has type:12311232         dynamic({:invalid or :ok, term()})12331234     type warning found at:1235     │1236 219 │           {:error, _} = error ->1237     │                       ~1238     │1239     └─ lib/ecto/repo/schema.ex:219:23: Ecto.Repo.Schema.do_insert/412401241    warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead1242    │1243 29 │     surround_many("#Ecto.Query<", list, ">", opts, fn str, _ -> str end)1244    │     ~1245    │1246    └─ lib/ecto/query/inspect.ex:29:5: Inspect.Ecto.Query.inspect/212471248     warning: the following clause will never match:12491250         {:error, _} = error ->12511252     because it attempts to match on the result of:12531254         apply(changeset, adapter, action, args)12551256     which has type:12571258         dynamic({:invalid or :ok, term()})12591260     type warning found at:1261     │1262 297 │             {:error, _} = error ->1263     │                         ~1264     │1265     └─ lib/ecto/repo/schema.ex:297:25: Ecto.Repo.Schema.do_update/412661267     warning: Macro.to_string/2 is deprecated. Use Macro.to_string/1 instead1268     │1269 144 │     Macro.to_string(expr, &expr_to_string(&1, &2, names, part))1270     │           ~1271     │1272     └─ lib/ecto/query/inspect.ex:144:11: Inspect.Ecto.Query.expr/312731274    warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1275    │1276 54 │       filter_and_reraise e, System.stacktrace1277    │                                    ~1278    │1279    └─ lib/ecto/repo/preloader.ex:54:36: Ecto.Repo.Preloader.normalize_and_preload_each/512801281    warning: Map.size/1 is deprecated. Use Kernel.map_size/1 instead1282    │1283 44 │     index  = Map.size(params)1284    │                  ~1285    │1286    └─ lib/ecto/query/builder.ex:44:18: Ecto.Query.Builder.escape/51287    └─ lib/ecto/query/builder.ex:53:17: Ecto.Query.Builder.escape/512881289     warning: Decimal.minus/1 is deprecated. Use Decimal.negate/1 instead1290     │1291 614 │     Decimal.minus(decimal)1292     │             ~1293     │1294     └─ lib/ecto/query/builder.ex:614:13: Ecto.Query.Builder.negate!/112951296     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)1297     │1298 228 │         raise BadStructError, struct: struct, term: data1299     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1300     │1301     └─ lib/ecto/repo/queryable.ex:228: Ecto.Repo.Queryable.process/513021303     warning: the following clause will never match:13041305         {:error, _} ->13061307     because it attempts to match on the result of:13081309         NaiveDateTime.new(date, time)13101311     which has type:13121313         dynamic({:ok, %NaiveDateTime{}})13141315     type warning found at:1316     │1317 803 │         {:error, _} -> :error1318     │         ~~~~~~~~~~~~~~~~~~~~~1319     │1320     └─ lib/ecto/type.ex:803: Ecto.Type.cast_naive_datetime/113211322     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1323     │1324 214 │       filter_and_reraise e, System.stacktrace1325     │                                    ~1326     │1327     └─ lib/ecto/query/planner.ex:214:36: Ecto.Query.Planner.prepare/41328     └─ lib/ecto/query/planner.ex:709:36: Ecto.Query.Planner.normalize/413291330     warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1331     │1332 159 │         supervise(children, strategy: :one_for_one)1333     │         ~1334     │1335     └─ lib/ecto/repo/supervisor.ex:159:9: Ecto.Repo.Supervisor.init/113361337      warning: expected a map or struct when accessing .__struct__ in expression:13381339          schema.__struct__13401341      where "schema" was given the types:13421343          # type: dynamic(atom() and not nil)1344          # from: lib/ecto/query/planner.ex:1186:411345          schema13461347          # type: atom()1348          # from: lib/ecto/query/planner.ex:1186:611349          is_atom(schema)13501351      hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()13521353      type warning found at:1354      │1355 1190 │       Map.has_key?(schema.__struct__, field) ->1356      │                           ~1357      │1358      └─ lib/ecto/query/planner.ex:1190:27: Ecto.Query.Planner.type!/613591360    warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead1361    │1362 15 │     surround_many("dynamic(", [Macro.to_string(binding), inspected], ")", opts, fn str, _ -> str end)1363    │     ~1364    │1365    └─ lib/ecto/query/inspect.ex:15:5: Inspect.Ecto.Query.DynamicExpr.inspect/213661367    warning: incompatible types given to Ecto.Migration.SchemaMigration.migrated_versions/2:13681369        Ecto.Migration.SchemaMigration.migrated_versions(repo, opts[:prefix])13701371    given types:13721373        (1374          -dynamic(%{..., __adapter__: term(), config: empty_list() or non_empty_list(term(), term())})-,1375          dynamic()1376        )13771378    but expected one of:13791380        atom(), term()13811382    where "opts" was given the type:13831384        # type: dynamic(1385          %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1386            non_struct_map()1387        )1388        # from: lib/ecto/migrator.ex:44:651389        opts[:prefix]13901391    where "repo" was given the type:13921393        # type: dynamic(%{..., __adapter__: term(), config: empty_list() or non_empty_list(term(), term())})1394        # from: lib/ecto/migrator.ex:44:231395        Ecto.Migration.SchemaMigration.ensure_schema_migrations_table!(repo, opts[:prefix])13961397    type warning found at:1398    │1399 45 │       SchemaMigration.migrated_versions(repo, opts[:prefix])1400    │                       ~1401    │1402    └─ lib/ecto/migrator.ex:45:23: Ecto.Migrator.migrated_versions/214031404    warning: Supervisor.Spec.worker/3 is deprecated. Use the new child specifications outlined in the Supervisor module instead1405    │1406 12 │       worker(Ecto.Migration.Runner, [], restart: :temporary)1407    │       ~1408    │1409    └─ lib/ecto/migration/supervisor.ex:12:7: Ecto.Migration.Supervisor.init/114101411     warning: expected a module (an atom) when invoking transaction/2 in expression:14121413         repo.transaction(fun, log: false, timeout: :infinity)14141415     where "fun" was given the type:14161417         # type: dynamic()1418         # from: lib/ecto/migrator.ex:114:471419         fun14201421     where "repo" was given the types:14221423         # type: dynamic(%{..., __adapter__: %{..., supports_ddl_transaction?: term()}})1424         # from: lib/ecto/migrator.ex:118:241425         repo.__adapter__.supports_ddl_transaction?14261427         # type: dynamic(%{..., __adapter__: %{..., supports_ddl_transaction?: not false and not nil}})1428         # from: lib/ecto/migrator.ex:118:241429         repo.__adapter__.supports_ddl_transaction?14301431     type warning found at:1432     │1433 119 │         repo.transaction(fun, [log: false, timeout: :infinity])1434     │              ~1435     │1436     └─ lib/ecto/migrator.ex:119:14: Ecto.Migrator.run_maybe_in_transaction/314371438    warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1439    │1440 15 │     supervise(children, strategy: :simple_one_for_one)1441    │     ~1442    │1443    └─ lib/ecto/migration/supervisor.ex:15:5: Ecto.Migration.Supervisor.init/114441445     warning: Code.load_file/1 is deprecated. Use Code.require_file/2 or Code.compile_file/2 instead1446     │1447 291 │     modules = Code.load_file(file)1448     │                    ~1449     │1450     └─ lib/ecto/migrator.ex:291:20: Ecto.Migrator.extract_module/214511452     warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1453     │1454 321 │         reraise error, System.stacktrace1455     │                               ~1456     │1457     └─ lib/ecto/migrator.ex:321:31: Ecto.Migrator.verbose_schema_migration/314581459    warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1460    │1461 10 │       worker(Ecto.Registry, []),1462    │       ~1463    │1464    └─ lib/ecto/application.ex:10:7: Ecto.Application.start/214651466    warning: Supervisor.Spec.supervisor/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1467    │1468 11 │       supervisor(Ecto.Migration.Supervisor, [])1469    │       ~1470    │1471    └─ lib/ecto/application.ex:11:7: Ecto.Application.start/214721473Generated ecto app1474==> interactive_cmd1475Compiling 1 file (.ex)1476Generated interactive_cmd app1477==> nerves1478Compiling 65 files (.ex)1479    warning: redefining module Mix.Tasks.Nerves.Init (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Mix.Tasks.Nerves.Init.beam)1480    │1481  6 │ defmodule Mix.Tasks.Nerves.Init do1482    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1483    │1484    └─ lib/mix/tasks/nerves.init.ex:6: Mix.Tasks.Nerves.Init (module)14851486    warning: redefining module Nerves (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.beam)1487    │1488  6 │ defmodule Nerves do1489    │ ~~~~~~~~~~~~~~~~~~~1490    │1491    └─ lib/nerves.ex:6: Nerves (module)14921493    warning: redefining module Nerves.ArtifactResolver (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.ArtifactResolver.beam)1494    │1495  5 │ defmodule Nerves.ArtifactResolver do1496    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1497    │1498    └─ lib/nerves/artifact_resolver.ex:5: Nerves.ArtifactResolver (module)14991500    warning: redefining module Nerves.BuildAction.AppModes (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.AppModes.beam)1501    │1502  6 │ defmodule Nerves.BuildAction.AppModes do1503    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1504    │1505    └─ lib/nerves/build_action/app_modes.ex:6: Nerves.BuildAction.AppModes (module)15061507    warning: redefining module Nerves.BuildAction.CheckExecutables (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.CheckExecutables.beam)1508    │1509  5 │ defmodule Nerves.BuildAction.CheckExecutables do1510    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1511    │1512    └─ lib/nerves/build_action/check_executables.ex:5: Nerves.BuildAction.CheckExecutables (module)15131514    warning: redefining module Nerves.BuildAction.Erlinit (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Erlinit.beam)1515    │1516  8 │ defmodule Nerves.BuildAction.Erlinit do1517    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1518    │1519    └─ lib/nerves/build_action/erlinit.ex:8: Nerves.BuildAction.Erlinit (module)15201521    warning: redefining module Nerves.BuildAction.Firmware (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Firmware.beam)1522    │1523  5 │ defmodule Nerves.BuildAction.Firmware do1524    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1525    │1526    └─ lib/nerves/build_action/firmware.ex:5: Nerves.BuildAction.Firmware (module)15271528    warning: redefining module Nerves.BuildAction.IExStartupCheck (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.IExStartupCheck.beam)1529    │1530  7 │ defmodule Nerves.BuildAction.IExStartupCheck do1531    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1532    │1533    └─ lib/nerves/build_action/iex_startup_check.ex:7: Nerves.BuildAction.IExStartupCheck (module)15341535    warning: redefining module Nerves.BuildAction.NervesV1System (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1System.beam)1536    │1537  5 │ defmodule Nerves.BuildAction.NervesV1System do1538    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1539    │1540    └─ lib/nerves/build_action/nerves_v1_system.ex:5: Nerves.BuildAction.NervesV1System (module)15411542    warning: redefining module Nerves.BuildAction.NervesV1Toolchain (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1Toolchain.beam)1543    │1544  5 │ defmodule Nerves.BuildAction.NervesV1Toolchain do1545    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1546    │1547    └─ lib/nerves/build_action/nerves_v1_toolchain.ex:5: Nerves.BuildAction.NervesV1Toolchain (module)15481549    warning: redefining module Nerves.BuildAction.Rootfs (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Rootfs.beam)1550    │1551  5 │ defmodule Nerves.BuildAction.Rootfs do1552    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1553    │1554    └─ lib/nerves/build_action/rootfs.ex:5: Nerves.BuildAction.Rootfs (module)15551556    warning: redefining module Nerves.BuildAction.SortApps (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.SortApps.beam)1557    │1558  6 │ defmodule Nerves.BuildAction.SortApps do1559    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1560    │1561    └─ lib/nerves/build_action/sort_apps.ex:6: Nerves.BuildAction.SortApps (module)15621563    warning: redefining module Nerves.BuildAction.StripAll (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.StripAll.beam)1564    │1565  5 │ defmodule Nerves.BuildAction.StripAll do1566    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1567    │1568    └─ lib/nerves/build_action/strip_all.ex:5: Nerves.BuildAction.StripAll (module)15691570    warning: redefining module Nerves.BuildAction.Trimmer (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildAction.Trimmer.beam)1571    │1572  5 │ defmodule Nerves.BuildAction.Trimmer do1573    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1574    │1575    └─ lib/nerves/build_action/trimmer.ex:5: Nerves.BuildAction.Trimmer (module)15761577    warning: redefining module Nerves.BuildPlan (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildPlan.beam)1578    │1579  5 │ defmodule Nerves.BuildPlan do1580    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1581    │1582    └─ lib/nerves/build_plan.ex:5: Nerves.BuildPlan (module)15831584    warning: redefining module Nerves.BuildPlan.Checks (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.BuildPlan.Checks.beam)1585    │1586  5 │ defmodule Nerves.BuildPlan.Checks do1587    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1588    │1589    └─ lib/nerves/build_plan/checks.ex:5: Nerves.BuildPlan.Checks (module)15901591    warning: redefining module Nerves.Container (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.Container.beam)1592    │1593  6 │ defmodule Nerves.Container do1594    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1595    │1596    └─ lib/nerves/container.ex:6: Nerves.Container (module)15971598    warning: redefining module Nerves.Fingerprint (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.Fingerprint.beam)1599    │1600  5 │ defmodule Nerves.Fingerprint do1601    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1602    │1603    └─ lib/nerves/fingerprint.ex:5: Nerves.Fingerprint (module)16041605    warning: redefining module Nerves.MixPackage (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.MixPackage.beam)1606    │1607  5 │ defmodule Nerves.MixPackage do1608    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1609    │1610    └─ lib/nerves/mix_package.ex:5: Nerves.MixPackage (module)16111612    warning: redefining module Nerves.Paths (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.Paths.beam)1613    │1614  5 │ defmodule Nerves.Paths do1615    │ ~~~~~~~~~~~~~~~~~~~~~~~~~1616    │1617    └─ lib/nerves/paths.ex:5: Nerves.Paths (module)16181619    warning: redefining module Nerves.TargetTuple (current version loaded from /work/proj/_build/trellis/lib/nerves/ebin/Elixir.Nerves.TargetTuple.beam)1620    │1621  5 │ defmodule Nerves.TargetTuple do1622    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1623    │1624    └─ lib/nerves/target_tuple.ex:5: Nerves.TargetTuple (module)16251626Generated nerves app1627==> nerves_toolchain_armv7_nerves_linux_gnueabihf1628Compiling 1 file (.ex)1629Generated nerves_toolchain_armv7_nerves_linux_gnueabihf app1630==> nerves_system_trellis1631Generated nerves_system_trellis app1632==> nerves_compatibility_test1633===> Analyzing applications...1634===> Compiling telemetry1635===> Analyzing applications...1636===> Compiling cowboy1637     ┌─ src/cowboy_websocket.erl:1638     │1639 147 │  		Stacktrace = erlang:get_stacktrace(),1640     │  		             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace16411642     ┌─ src/cowboy_websocket.erl:1643     │1644 645 │  			{stacktrace, erlang:get_stacktrace()},1645     │  			             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace16461647     ┌─ src/cowboy_websocket.erl:1648     │1649 755 │  			{stacktrace, erlang:get_stacktrace()},1650     │  			             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace165116521653    ┌─ src/cowboy_handler.erl:1654    │1655 87 │  		Stacktrace = erlang:get_stacktrace(),1656    │  		             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace16571658     ┌─ src/cowboy_handler.erl:1659     │1660 116 │  		Stacktrace = erlang:get_stacktrace(),1661     │  		             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace16621663     ┌─ src/cowboy_handler.erl:1664     │1665 235 │  		Stacktrace = erlang:get_stacktrace(),1666     │  		             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace16671668     ┌─ src/cowboy_handler.erl:1669     │1670 290 │  			{stacktrace, erlang:get_stacktrace()},1671     │  			             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace167216731674    ┌─ src/cowboy_rest.erl:1675    │1676 69 │  				Stacktrace = erlang:get_stacktrace(),1677    │  				             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace16781679      ┌─ src/cowboy_rest.erl:1680      │1681 1006 │  	Stacktrace = erlang:get_stacktrace(),1682      │  	             ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace168316841685==> plug1686Compiling 1 file (.erl)1687Compiling 42 files (.ex)1688Generated plug app1689==> openmaize1690Compiling 13 files (.ex)1691    warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.16921693    This error happens when you have function calls without parentheses inside keywords. For example:16941695        function(arg, one: nested_call a, b, c)1696        function(arg, one: if expr, do: :this, else: :that)16971698    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:16991700        function(arg, one: if(expr, do: :this, else: :that))1701        function(arg, one: nested_call(a, b, c))17021703    Ambiguity found at:1704    │1705 85 │   def check_user_pass(_, _, _), do: raise ArgumentError, "invalid params or options"1706    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1707    │1708    └─ lib/openmaize/login.ex:85170917101711== Compilation error in file lib/openmaize/database.ex ==1712** (UndefinedFunctionError) function Ecto.Query.Builder.Lock.build/3 is undefined (module Ecto.Query.Builder.Lock is not available)1713    (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_trellis/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.2275.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, ...]}, ...], ...>)1714    (ecto 2.2.12) expanding macro: Ecto.Query.lock/21715    lib/openmaize/database.ex:90: Openmaize.Database.get_user_with_lock/31716    (ecto 2.2.12) expanding macro: Ecto.Query.from/21717    lib/openmaize/database.ex:90: Openmaize.Database.get_user_with_lock/31718    (elixir 1.20.3) expanding macro: Kernel.|>/21719    lib/openmaize/database.ex:91: Openmaize.Database.get_user_with_lock/31720could 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"