fishjam-dev / membrane_ice_plugin

Membrane plugin for ICE protocol
Apache License 2.0
4 stars 2 forks source link

fast_tls won't compile on Elixir 1.17.2 #40

Closed Tonyhaenn closed 1 month ago

Tonyhaenn commented 1 month ago

When try to compile under Elixir 1.17.2 // OTP 27, fast_tls throws an error. That's a dep pulled in by fake_turn. Reporting here, since the fake_turn repo doesn't have issues enabled.

If I drop back down to Elixir 1.16.2 // OTP 26, I have no problems compiling.

Here's a repo that reproduces the issue https://github.com/Tonyhaenn/fake_turn_elixir_117

mix deps.get
mix deps.compile

That should produce the following error:

* (Mix) Could not compile dependency :fast_tls, "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3 bare compile --paths /Users/tony/repos/fake_turn_elixir_117/_build/dev/lib//ebin" command failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile fast_tls --force", update it with "mix deps.update fast_tls" or clean it with "mix deps.clean fast_tls"

I'm guessing it's because fake_turn is a few versions out of date

Tonyhaenn commented 1 month ago

Here's the full console output

mix deps.compile
===> Analyzing applications...
===> Compiling p1_utils
==> elixir_uuid
    warning: use Bitwise is deprecated. import Bitwise instead
    │
  2 │   use Bitwise, only_operators: true
    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    │
    └─ lib/uuid.ex:2: UUID (module)

===> Analyzing applications...
===> Compiling telemetry
==> jason
    warning: Decimal.new/1 is undefined (module Decimal is not available or is yet to be defined)
    │
 94 │         decimal.new(string)
    │                 ~
    │
    └─ (jason 1.4.3) lib/decoder.ex:94:17: Jason.Decoder.float_decode_function/1

warning: struct Decimal.Error is undefined (module Decimal.Error is not available or is yet to be defined)
└─ (jason 1.4.3) lib/decoder.ex: Jason.Decoder.float_decode_function/1

     warning: Decimal.to_string/2 is undefined (module Decimal is not available or is yet to be defined)
     │
 242 │     [?", decimal.to_string(value, :normal), ?"]
     │                  ~
     │
     └─ (jason 1.4.3) lib/encode.ex:242:18: Jason.Encode.struct/4

     warning: Decimal.to_string/1 is undefined (module Decimal is not available or is yet to be defined)
     │
 231 │     [?", decimal.to_string(value), ?"]
     │                  ~
     │
     └─ (jason 1.4.3) lib/encoder.ex:231:18: Jason.Encoder.Decimal.encode/2

==> bunch_native
Bundlex: Building natives: lib, bunch
==> shmex
Bundlex: Building natives: lib, shmex
==> unifex
Bundlex: Building natives: unifex
==> ex_dtls
Bundlex: Building natives: native
warning: Bundlex: `pkg_configs` option has been deprecated. Please use `os_deps` option.

warning: Bundlex: Native :native uses deprecated syntax for `os_deps`. See `Bundlex.Project.os_dep` for the new syntax.

warning: Bundlex: `pkg_configs` option has been deprecated. Please use `os_deps` option.

warning: Bundlex: Native :native uses deprecated syntax for `os_deps`. See `Bundlex.Project.os_dep` for the new syntax.

ld: warning: ignoring duplicate libraries: '-lpthread'
===> Uncaught error in rebar_core. Run with DIAGNOSTIC=1 to see stacktrace or consult rebar3.crashdump
===> When submitting a bug report, please include the output of `rebar3 report "your command"`
==> fake_turn_elixir_117
** (Mix) Could not compile dependency :fast_tls, "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3 bare compile --paths /Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/*/ebin" command failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile fast_tls --force", update it with "mix deps.update fast_tls" or clean it with "mix deps.clean fast_tls"

Trying with the DIAGNOSTIC=1 suggestion from the error, gives me this:

> DIAGNOSTIC=1 mix deps.compile fast_tls --force
===> Setting paths to [deps]
===> Compile (apps)
===> Setting paths to [plugins]
===> Setting paths to [deps]
===> Setting paths to [plugins]
===> Setting paths to [plugins]
===> Expanded command sequence to be run: []
===> Running provider: do
===> Expanded command sequence to be run: [app_discovery,{bare,compile}]
===> Running provider: app_discovery
===> Found top-level apps: [fast_tls]
    using config: [{src_dirs,["src"]},{lib_dirs,["apps/*","lib/*","."]}]
===> Setting paths to [deps]
===> Compile (apps)
===> Setting paths to [plugins]
===> Setting paths to [deps]
===> Setting paths to [plugins]
===> Setting paths to [plugins]
===> Not adding provider pc compile from module pc_prv_compile because it already exists from module pc_prv_compile
===> Not adding provider pc clean from module pc_prv_clean because it already exists from module pc_prv_clean
===> Running provider: {bare,compile}
===> Compile (untagged)
===> Running hooks for compile in app fast_tls (/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls) with configuration:
===> Setting paths to [plugins]
===>    {provider_hooks, [{pre, [{pc,compile}]}]}.
===> Running provider: {pc,compile}
===> Running hooks for {pc,compile} with configuration:
===>    {provider_hooks, []}.
===>    {pre_hooks, []}.
===> run_hooks("/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls", pre_hooks, {pc,
                                                                                   compile}) -> no hooks defined

===> Uncaught error in rebar_core. Run with DIAGNOSTIC=1 to see stacktrace or consult rebar3.crashdump
===> Uncaught error: undef
===> Stack trace to the error location:
[{pc_port_env,construct,
     [{state_t,"/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls",
          {dict,21,16,16,8,80,48,
              {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
              {{[],
                [[{deps,default},{p1_utils,"1.0.23"}],
                 [{plugins,default},pc],
                 [{project_plugins,default}],
                 [coveralls_coverdata,95,98,117,105,108,100,47,116,101,115,
                  116,47,99,111,118,101,114,47,101,117,110,105,116,46,99,111,
                  118,101,114,100,97,116,97]],
                [[base_dir,47,85,115,101,114,115,47,116,111,110,121,47,114,
                  101,112,111,115,47,102,97,107,101,95,116,117,114,110,95,101,
                  108,105,120,105,114,95,49,49,55,47,100,101,112,115,47,102,
                  97,115,116,95,116,108,115,47,95,98,117,105,108,100],
                 [deps_dir,108,105,98]],
                [[erl_opts,debug_info,{src_dirs,["src"]},{d,'REBAR3'}],
                 [provider_hooks,
                  {pre,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                 [plugins,pc],
                 [deps,{p1_utils,"1.0.23"}],
                 [port_specs,
                  {"priv/lib/fast_tls.so",
                   ["c_src/fast_tls.c","c_src/ioqueue.c"]},
                  {"priv/lib/p1_sha.so",["c_src/p1_sha.c"]}],
                 [clean_files,"c_src/fast_tls.gcda","c_src/fast_tls.gcno",
                  "c_src/fast_sha.gcda","c_src/fast_sha.gcno",
                  "c_src/ioqueue.gcda","c_src/ioqueue.gcno"],
                 [xref_checks,undefined_function_calls,undefined_functions,
                  deprecated_function_calls,deprecated_functions],
                 [profiles,
                  {test,
                      [{erl_opts,[{d,'TEST'},{src_dirs,["src","test"]}]},
                       {extra_src_dirs,[{"test",[{recursive,false}]}]}]}],
                 [overrides]],
                [[cover_enabled|true],[cover_export_enabled|true]],
                [[coveralls_service_name,103,105,116,104,117,98],
                 [offline|false]],
                [[port_env,
                  {"LDFLAGS","$LDFLAGS -lssl -lcrypto -lssl -lcrypto"},
                  {"CFLAGS","$CFLAGS -DHAS_ERTS_EXIT -g -O2 -Wall"},
                  {"ERL_LDFLAGS"," -L$ERL_EI_LIBDIR -lei"},
                  {"darwin","DRV_LDFLAGS",
                   "-bundle -bundle_loader \"${BINDIR}/beam.smp\" $ERL_LDFLAGS"}]],
                [],[],[],[],
                [[task|compile]],
                [],[],[],[]}}},
          {dict,2,16,16,8,80,48,
              {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
              {{[],[],[],
                [[all_plugin_deps,
                  "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/ebin"]],
                [[default,
                  "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/ssl_verify_fun/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/relx/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/rebar/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/providers/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/getopt/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/eunit_formatters/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/erlware_commons/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/cth_readable/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/cf/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/certifi/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3/bbmustache/ebin",
                  "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3",
                  ".",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/kernel-10.0.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/stdlib-6.0.1/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/zarex/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/unifex/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/telemetry_metrics/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/telemetry/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/shmex/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/req/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/qex/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/p1_utils/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/numbers/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/nimble_pool/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/nimble_options/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/mint/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/mime/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/membrane_telemetry_metrics/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/jason/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/hpax/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/finch/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/ex_dtls/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/elixir_uuid/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/coerce/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/castore/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/bundlex/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/bunch_native/ebin",
                  "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/bunch/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/xmerl-2.0/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/wx-2.4.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/tools-4.0/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/tftp-1.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/syntax_tools-3.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/ssl-11.2.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/ssh-5.2.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/snmp-5.16/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/sasl-4.2.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/runtime_tools-2.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/reltool-1.0.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/public_key-1.16.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/parsetools-2.6/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/os_mon-2.10/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/observer-2.16/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/mnesia-4.23.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/megaco-4.6/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/inets-9.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/ftp-1.2.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/eunit-2.9.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/et-1.7.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/erts-15.0.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/erl_interface-5.5.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/eldap-1.2.13/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/edoc-1.3.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/diameter-2.4/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/dialyzer-5.2/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/debugger-5.4/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/crypto-5.5/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/compiler-8.5.1/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/common_test-1.27/ebin",
                  "/Users/tony/.asdf/installs/erlang/27.0.1/lib/asn1-5.3/ebin"]],
                [],[],[],[],[],[],[],[],[],[],[]}}},
          {dict,19,16,16,8,80,48,
              {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
              {{[],
                [[{deps,default},{p1_utils,"1.0.23"}],
                 [{plugins,default},pc],
                 [{project_plugins,default}],
                 [coveralls_coverdata,95,98,117,105,108,100,47,116,101,115,
                  116,47,99,111,118,101,114,47,101,117,110,105,116,46,99,111,
                  118,101,114,100,97,116,97]],
                [[base_dir,47,85,115,101,114,115,47,116,111,110,121,47,114,
                  101,112,111,115,47,102,97,107,101,95,116,117,114,110,95,101,
                  108,105,120,105,114,95,49,49,55,47,100,101,112,115,47,102,
                  97,115,116,95,116,108,115,47,95,98,117,105,108,100],
                 [deps_dir,108,105,98]],
                [[erl_opts,debug_info,{src_dirs,["src"]},{d,'REBAR3'}],
                 [provider_hooks,
                  {pre,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                 [plugins,pc],
                 [deps,{p1_utils,"1.0.23"}],
                 [port_specs,
                  {"priv/lib/fast_tls.so",
                   ["c_src/fast_tls.c","c_src/ioqueue.c"]},
                  {"priv/lib/p1_sha.so",["c_src/p1_sha.c"]}],
                 [clean_files,"c_src/fast_tls.gcda","c_src/fast_tls.gcno",
                  "c_src/fast_sha.gcda","c_src/fast_sha.gcno",
                  "c_src/ioqueue.gcda","c_src/ioqueue.gcno"],
                 [xref_checks,undefined_function_calls,undefined_functions,
                  deprecated_function_calls,deprecated_functions],
                 [profiles,
                  {test,
                      [{erl_opts,[{d,'TEST'},{src_dirs,["src","test"]}]},
                       {extra_src_dirs,[{"test",[{recursive,false}]}]}]}],
                 [overrides]],
                [[cover_enabled|true],[cover_export_enabled|true]],
                [[coveralls_service_name,103,105,116,104,117,98]],
                [[port_env,
                  {"LDFLAGS","$LDFLAGS -lssl -lcrypto -lssl -lcrypto"},
                  {"CFLAGS","$CFLAGS -DHAS_ERTS_EXIT -g -O2 -Wall"},
                  {"ERL_LDFLAGS"," -L$ERL_EI_LIBDIR -lei"},
                  {"darwin","DRV_LDFLAGS",
                   "-bundle -bundle_loader \"${BINDIR}/beam.smp\" $ERL_LDFLAGS"}]],
                [],[],[],[],[],[],[],[],[]}}},
          "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3",
          [],
          [default,prod],
          default,[],
          {[],[]},
          {app_info_t,<<"fast_tls">>,
              "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/src/fast_tls.app.src",
              undefined,undefined,"1.1.13","1.1.13",root,
              [{description,
                   "TLS / SSL OpenSSL-based native driver for Erlang / Elixir"},
               {vsn,"1.1.13"},
               {modules,[]},
               {registered,[]},
               {applications,[kernel,stdlib,crypto,p1_utils]},
               {files,
                   ["src/","c_src/fast_tls.c","c_src/uthash.h",
                    "c_src/options.h","c_src/p1_sha.c","c_src/stdint.h",
                    "c_src/ioqueue.h","c_src/ioqueue.c","configure",
                    "vars.config.in","rebar.config","rebar.config.script",
                    "README.md","LICENSE.txt"]},
               {licenses,["Apache 2.0"]},
               {links,[{"Github","https://github.com/processone/fast_tls"}]}],
              [kernel,stdlib,crypto,p1_utils],
              [],[],
              [<<"p1_utils">>],
              [default,prod],
              {dict,21,16,16,8,80,48,
                  {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                  {{[],
                    [[{deps,default},{p1_utils,"1.0.23"}],
                     [{plugins,default},pc],
                     [{project_plugins,default}],
                     [coveralls_coverdata,95,98,117,105,108,100,47,116,101,
                      115,116,47,99,111,118,101,114,47,101,117,110,105,116,46,
                      99,111,118,101,114,100,97,116,97]],
                    [[base_dir,47,85,115,101,114,115,47,116,111,110,121,47,
                      114,101,112,111,115,47,102,97,107,101,95,116,117,114,
                      110,95,101,108,105,120,105,114,95,49,49,55,47,100,101,
                      112,115,47,102,97,115,116,95,116,108,115,47,95,98,117,
                      105,108,100],
                     [deps_dir,108,105,98]],
                    [[erl_opts,debug_info,{src_dirs,["src"]},{d,'REBAR3'}],
                     [provider_hooks,
                      {pre,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                     [plugins,pc],
                     [deps,{p1_utils,"1.0.23"}],
                     [port_specs,
                      {"priv/lib/fast_tls.so",
                       ["c_src/fast_tls.c","c_src/ioqueue.c"]},
                      {"priv/lib/p1_sha.so",["c_src/p1_sha.c"]}],
                     [clean_files,"c_src/fast_tls.gcda","c_src/fast_tls.gcno",
                      "c_src/fast_sha.gcda","c_src/fast_sha.gcno",
                      "c_src/ioqueue.gcda","c_src/ioqueue.gcno"],
                     [xref_checks,undefined_function_calls,
                      undefined_functions,deprecated_function_calls,
                      deprecated_functions],
                     [profiles,
                      {test,
                          [{erl_opts,[{d,'TEST'},{src_dirs,["src","test"]}]},
                           {extra_src_dirs,[{"test",[{recursive,false}]}]}]}],
                     [overrides]],
                    [[cover_enabled|true],[cover_export_enabled|true]],
                    [[coveralls_service_name,103,105,116,104,117,98],
                     [offline|false]],
                    [[port_env,
                      {"LDFLAGS","$LDFLAGS -lssl -lcrypto -lssl -lcrypto"},
                      {"CFLAGS","$CFLAGS -DHAS_ERTS_EXIT -g -O2 -Wall"},
                      {"ERL_LDFLAGS"," -L$ERL_EI_LIBDIR -lei"},
                      {"darwin","DRV_LDFLAGS",
                       "-bundle -bundle_loader \"${BINDIR}/beam.smp\" $ERL_LDFLAGS"}]],
                    [],[],[],[],
                    [[task|compile]],
                    [],[],[],[]}}},
              {dict,21,16,16,8,80,48,
                  {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                  {{[],
                    [[{deps,default},{p1_utils,"1.0.23"}],
                     [{plugins,default},pc],
                     [{project_plugins,default}],
                     [coveralls_coverdata,95,98,117,105,108,100,47,116,101,
                      115,116,47,99,111,118,101,114,47,101,117,110,105,116,46,
                      99,111,118,101,114,100,97,116,97]],
                    [[base_dir,47,85,115,101,114,115,47,116,111,110,121,47,
                      114,101,112,111,115,47,102,97,107,101,95,116,117,114,
                      110,95,101,108,105,120,105,114,95,49,49,55,47,100,101,
                      112,115,47,102,97,115,116,95,116,108,115,47,95,98,117,
                      105,108,100],
                     [deps_dir,108,105,98]],
                    [[erl_opts,debug_info,{src_dirs,["src"]},{d,'REBAR3'}],
                     [provider_hooks,
                      {pre,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                     [plugins,pc],
                     [deps,{p1_utils,"1.0.23"}],
                     [port_specs,
                      {"priv/lib/fast_tls.so",
                       ["c_src/fast_tls.c","c_src/ioqueue.c"]},
                      {"priv/lib/p1_sha.so",["c_src/p1_sha.c"]}],
                     [clean_files,"c_src/fast_tls.gcda","c_src/fast_tls.gcno",
                      "c_src/fast_sha.gcda","c_src/fast_sha.gcno",
                      "c_src/ioqueue.gcda","c_src/ioqueue.gcno"],
                     [xref_checks,undefined_function_calls,
                      undefined_functions,deprecated_function_calls,
                      deprecated_functions],
                     [profiles,
                      {test,
                          [{erl_opts,[{d,'TEST'},{src_dirs,["src","test"]}]},
                           {extra_src_dirs,[{"test",[{recursive,false}]}]}]}],
                     [overrides]],
                    [[cover_enabled|true],[cover_export_enabled|true]],
                    [[coveralls_service_name,103,105,116,104,117,98],
                     [offline|false]],
                    [[port_env,
                      {"LDFLAGS","$LDFLAGS -lssl -lcrypto -lssl -lcrypto"},
                      {"CFLAGS","$CFLAGS -DHAS_ERTS_EXIT -g -O2 -Wall"},
                      {"ERL_LDFLAGS"," -L$ERL_EI_LIBDIR -lei"},
                      {"darwin","DRV_LDFLAGS",
                       "-bundle -bundle_loader \"${BINDIR}/beam.smp\" $ERL_LDFLAGS"}]],
                    [],[],[],[],
                    [[task|compile]],
                    [],[],[],[]}}},
              0,undefined,
              "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls",
              "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/fast_tls",
              "/Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/fast_tls/ebin",
              undefined,false,false,false,undefined,false},
          [{app_info_t,<<"fast_tls">>,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/src/fast_tls.app.src",
               undefined,undefined,"1.1.13","1.1.13",root,
               [{description,
                    "TLS / SSL OpenSSL-based native driver for Erlang / Elixir"},
                {vsn,"1.1.13"},
                {modules,[]},
                {registered,[]},
                {applications,[kernel,stdlib,crypto,p1_utils]},
                {files,
                    ["src/","c_src/fast_tls.c","c_src/uthash.h",
                     "c_src/options.h","c_src/p1_sha.c","c_src/stdint.h",
                     "c_src/ioqueue.h","c_src/ioqueue.c","configure",
                     "vars.config.in","rebar.config","rebar.config.script",
                     "README.md","LICENSE.txt"]},
                {licenses,["Apache 2.0"]},
                {links,[{"Github","https://github.com/processone/fast_tls"}]}],
               [kernel,stdlib,crypto,p1_utils],
               [],[],
               [<<"p1_utils">>],
               [default,prod],
               {dict,21,16,16,8,80,48,
                   {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                   {{[],
                     [[{deps,default},{p1_utils,"1.0.23"}],
                      [{plugins,default},pc],
                      [{project_plugins,default}],
                      [coveralls_coverdata,95,98,117,105,108,100,47,116,101,
                       115,116,47,99,111,118,101,114,47,101,117,110,105,116,
                       46,99,111,118,101,114,100,97,116,97]],
                     [[base_dir,47,85,115,101,114,115,47,116,111,110,121,47,
                       114,101,112,111,115,47,102,97,107,101,95,116,117,114,
                       110,95,101,108,105,120,105,114,95,49,49,55,47,100,101,
                       112,115,47,102,97,115,116,95,116,108,115,47,95,98,117,
                       105,108,100],
                      [deps_dir,108,105,98]],
                     [[erl_opts,debug_info,{src_dirs,["src"]},{d,'REBAR3'}],
                      [provider_hooks,
                       {pre,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                      [plugins,pc],
                      [deps,{p1_utils,"1.0.23"}],
                      [port_specs,
                       {"priv/lib/fast_tls.so",
                        ["c_src/fast_tls.c","c_src/ioqueue.c"]},
                       {"priv/lib/p1_sha.so",["c_src/p1_sha.c"]}],
                      [clean_files,"c_src/fast_tls.gcda",
                       "c_src/fast_tls.gcno","c_src/fast_sha.gcda",
                       "c_src/fast_sha.gcno","c_src/ioqueue.gcda",
                       "c_src/ioqueue.gcno"],
                      [xref_checks,undefined_function_calls,
                       undefined_functions,deprecated_function_calls,
                       deprecated_functions],
                      [profiles,
                       {test,
                           [{erl_opts,[{d,'TEST'},{src_dirs,["src","test"]}]},
                            {extra_src_dirs,[{"test",[{recursive,false}]}]}]}],
                      [overrides]],
                     [[cover_enabled|true],[cover_export_enabled|true]],
                     [[coveralls_service_name,103,105,116,104,117,98],
                      [offline|false]],
                     [[port_env,
                       {"LDFLAGS","$LDFLAGS -lssl -lcrypto -lssl -lcrypto"},
                       {"CFLAGS","$CFLAGS -DHAS_ERTS_EXIT -g -O2 -Wall"},
                       {"ERL_LDFLAGS"," -L$ERL_EI_LIBDIR -lei"},
                       {"darwin","DRV_LDFLAGS",
                        "-bundle -bundle_loader \"${BINDIR}/beam.smp\" $ERL_LDFLAGS"}]],
                     [],[],[],[],
                     [[task|compile]],
                     [],[],[],[]}}},
               {dict,21,16,16,8,80,48,
                   {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                   {{[],
                     [[{deps,default},{p1_utils,"1.0.23"}],
                      [{plugins,default},pc],
                      [{project_plugins,default}],
                      [coveralls_coverdata,95,98,117,105,108,100,47,116,101,
                       115,116,47,99,111,118,101,114,47,101,117,110,105,116,
                       46,99,111,118,101,114,100,97,116,97]],
                     [[base_dir,47,85,115,101,114,115,47,116,111,110,121,47,
                       114,101,112,111,115,47,102,97,107,101,95,116,117,114,
                       110,95,101,108,105,120,105,114,95,49,49,55,47,100,101,
                       112,115,47,102,97,115,116,95,116,108,115,47,95,98,117,
                       105,108,100],
                      [deps_dir,108,105,98]],
                     [[erl_opts,debug_info,{src_dirs,["src"]},{d,'REBAR3'}],
                      [provider_hooks,
                       {pre,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                      [plugins,pc],
                      [deps,{p1_utils,"1.0.23"}],
                      [port_specs,
                       {"priv/lib/fast_tls.so",
                        ["c_src/fast_tls.c","c_src/ioqueue.c"]},
                       {"priv/lib/p1_sha.so",["c_src/p1_sha.c"]}],
                      [clean_files,"c_src/fast_tls.gcda",
                       "c_src/fast_tls.gcno","c_src/fast_sha.gcda",
                       "c_src/fast_sha.gcno","c_src/ioqueue.gcda",
                       "c_src/ioqueue.gcno"],
                      [xref_checks,undefined_function_calls,
                       undefined_functions,deprecated_function_calls,
                       deprecated_functions],
                      [profiles,
                       {test,
                           [{erl_opts,[{d,'TEST'},{src_dirs,["src","test"]}]},
                            {extra_src_dirs,[{"test",[{recursive,false}]}]}]}],
                      [overrides]],
                     [[cover_enabled|true],[cover_export_enabled|true]],
                     [[coveralls_service_name,103,105,116,104,117,98],
                      [offline|false]],
                     [[port_env,
                       {"LDFLAGS","$LDFLAGS -lssl -lcrypto -lssl -lcrypto"},
                       {"CFLAGS","$CFLAGS -DHAS_ERTS_EXIT -g -O2 -Wall"},
                       {"ERL_LDFLAGS"," -L$ERL_EI_LIBDIR -lei"},
                       {"darwin","DRV_LDFLAGS",
                        "-bundle -bundle_loader \"${BINDIR}/beam.smp\" $ERL_LDFLAGS"}]],
                     [],[],[],[],
                     [[task|compile]],
                     [],[],[],[]}}},
               0,undefined,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls",
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/prod/lib/fast_tls",
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/prod/lib/fast_tls/ebin",
               undefined,false,false,false,undefined,false}],
          [],
          [{app_info_t,<<"pc">>,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc.app.src",
               undefined,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/ebin/pc.app",
               "1.14.0","1.14.0",root,
               [{description,"a rebar3 port compiler for native code"},
                {vsn,"1.14.0"},
                {registered,[]},
                {applications,[kernel,stdlib]},
                {env,[]},
                {modules,
                    [pc,pc_compilation,pc_port_specs,pc_prv_clean,
                     pc_prv_compile,pc_util]},
                {licenses,["MIT"]},
                {links,[{"Github","https://github.com/blt/port_compiler"}]}],
               [kernel,stdlib],
               [],[],[],
               [default,prod],
               {dict,6,16,16,8,80,48,
                   {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                   {{[],
                     [[{deps,default}],[{plugins,default}],[{locks,default}]],
                     [],
                     [[erl_opts,debug_info,inline_list_funcs,
                       warn_deprecated_function,warn_export_all,
                       warn_export_vars,warn_obsolete_guard,warn_shadow_vars,
                       warn_untyped_record,warn_unused_function,
                       warn_unused_import,warnings_as_errors],
                      [xref_checks,undefined_function_calls,
                       undefined_functions,locals_not_used,
                       deprecated_function_calls,deprecated_functions],
                      [overrides]],
                     [],[],[],[],[],[],[],[],[],[],[],[]}}},
               {dict,6,16,16,8,80,48,
                   {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                   {{[],
                     [[{deps,default}],[{plugins,default}],[{locks,default}]],
                     [],
                     [[erl_opts,debug_info,inline_list_funcs,
                       warn_deprecated_function,warn_export_all,
                       warn_export_vars,warn_obsolete_guard,warn_shadow_vars,
                       warn_untyped_record,warn_unused_function,
                       warn_unused_import,warnings_as_errors],
                      [xref_checks,undefined_function_calls,
                       undefined_functions,locals_not_used,
                       deprecated_function_calls,deprecated_functions],
                      [overrides]],
                     [],[],[],[],[],[],[],[],[],[],[],[]}}},
               0,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc",
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc",
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc",
               undefined,
               {pkg,<<"pc">>,<<"1.14.0">>,
                   <<"9893B4D99922ADCB7553A4D603988F672693688ECC1C934230309D5A37DBDD3E">>,
                   <<"FC597E5356AF714615E6BAEEFAA8262BE09DE7849BF92AA57672DB5E409A3553">>,
                   #{name => <<"hexpm">>,
                     http_user_agent_fragment => <<"(rebar3/3.22.0) (httpc)">>,
                     http_etag => undefined,
                     http_adapter => {rebar_httpc_adapter,#{profile => rebar}},
                     repo_verify_origin => true,repo_name => <<"hexpm">>,
                     repo_url => <<"https://repo.hex.pm">>,
                     api_organization => undefined,
                     api_repository => undefined,
                     repo_organization => undefined,
                     api_url => <<"https://hex.pm/api">>,repo_verify => true,
                     api_key => undefined,http_headers => #{},
                     repo_key => undefined,
                     repo_public_key =>
                         <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>,
                     tarball_max_size => 8388608,
                     tarball_max_uncompressed_size => 67108864}},
               false,false,true,undefined,true},
           {app_info_t,<<"pc">>,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc.app.src",
               undefined,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/ebin/pc.app",
               "1.14.0","1.14.0",root,
               [{description,"a rebar3 port compiler for native code"},
                {vsn,"1.14.0"},
                {registered,[]},
                {applications,[kernel,stdlib]},
                {env,[]},
                {modules,
                    [pc,pc_compilation,pc_port_specs,pc_prv_clean,
                     pc_prv_compile,pc_util]},
                {licenses,["MIT"]},
                {links,[{"Github","https://github.com/blt/port_compiler"}]}],
               [kernel,stdlib],
               [],[],[],
               [default,prod],
               {dict,6,16,16,8,80,48,
                   {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                   {{[],
                     [[{deps,default}],[{plugins,default}],[{locks,default}]],
                     [],
                     [[erl_opts,debug_info,inline_list_funcs,
                       warn_deprecated_function,warn_export_all,
                       warn_export_vars,warn_obsolete_guard,warn_shadow_vars,
                       warn_untyped_record,warn_unused_function,
                       warn_unused_import,warnings_as_errors],
                      [xref_checks,undefined_function_calls,
                       undefined_functions,locals_not_used,
                       deprecated_function_calls,deprecated_functions],
                      [overrides]],
                     [],[],[],[],[],[],[],[],[],[],[],[]}}},
               {dict,6,16,16,8,80,48,
                   {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
                   {{[],
                     [[{deps,default}],[{plugins,default}],[{locks,default}]],
                     [],
                     [[erl_opts,debug_info,inline_list_funcs,
                       warn_deprecated_function,warn_export_all,
                       warn_export_vars,warn_obsolete_guard,warn_shadow_vars,
                       warn_untyped_record,warn_unused_function,
                       warn_unused_import,warnings_as_errors],
                      [xref_checks,undefined_function_calls,
                       undefined_functions,locals_not_used,
                       deprecated_function_calls,deprecated_functions],
                      [overrides]],
                     [],[],[],[],[],[],[],[],[],[],[],[]}}},
               0,
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc",
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc",
               "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc",
               undefined,
               {pkg,<<"pc">>,<<"1.14.0">>,
                   <<"9893B4D99922ADCB7553A4D603988F672693688ECC1C934230309D5A37DBDD3E">>,
                   <<"FC597E5356AF714615E6BAEEFAA8262BE09DE7849BF92AA57672DB5E409A3553">>,
                   #{name => <<"hexpm">>,
                     http_user_agent_fragment => <<"(rebar3/3.22.0) (httpc)">>,
                     http_etag => undefined,
                     http_adapter => {rebar_httpc_adapter,#{profile => rebar}},
                     repo_verify_origin => true,repo_name => <<"hexpm">>,
                     repo_url => <<"https://repo.hex.pm">>,
                     api_organization => undefined,
                     api_repository => undefined,
                     repo_organization => undefined,
                     api_url => <<"https://hex.pm/api">>,repo_verify => true,
                     api_key => undefined,http_headers => #{},
                     repo_key => undefined,
                     repo_public_key =>
                         <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>,
                     tarball_max_size => 8388608,
                     tarball_max_uncompressed_size => 67108864}},
               false,false,true,undefined,true}],
          [],
          [rebar_compiler_xrl,rebar_compiler_yrl,rebar_compiler_mib,
           rebar_compiler_erl],
          [],
          [{resource,hg,rebar_hg_resource,#{},rebar_resource_v2},
           {resource,pkg,rebar_pkg_resource,
               #{base_config =>
                     #{http_user_agent_fragment =>
                           <<"(rebar3/3.22.0) (httpc)">>,
                       http_adapter =>
                           {rebar_httpc_adapter,#{profile => rebar}}},
                 repos =>
                     [#{name => <<"hexpm">>,
                        http_user_agent_fragment =>
                            <<"(rebar3/3.22.0) (httpc)">>,
                        http_etag => undefined,
                        http_adapter =>
                            {rebar_httpc_adapter,#{profile => rebar}},
                        repo_verify_origin => true,repo_name => <<"hexpm">>,
                        repo_url => <<"https://repo.hex.pm">>,
                        api_organization => undefined,
                        api_repository => undefined,
                        repo_organization => undefined,
                        api_url => <<"https://hex.pm/api">>,
                        repo_verify => true,api_key => undefined,
                        http_headers => #{},repo_key => undefined,
                        repo_public_key =>
                            <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>,
                        tarball_max_size => 8388608,
                        tarball_max_uncompressed_size => 67108864}]},
               rebar_resource_v2},
           {resource,git_subdir,rebar_git_subdir_resource,#{},
               rebar_resource_v2},
           {resource,git,rebar_git_resource,#{},rebar_resource_v2}],
          [{provider,clean,pc_prv_clean,
               {[],[]},
               true,
               [{default,app_discovery}],
               [],"clean the results of port compilation","rebar pc clean",[],
               [default],
               pc},
           {provider,compile,pc_prv_compile,
               {[],[]},
               true,
               [{default,compile}],
               [],"perform port compilation","rebar pc compile",[],
               [default],
               pc},
           {provider,xref,rebar_prv_xref,
               {[],[]},
               true,
               [compile],
               ["Run cross reference analysis.",10,10,86,97,108,105,100,32,
                114,101,98,97,114,46,99,111,110,102,105,103,32,111,112,116,
                105,111,110,115,58,10,32,32,
                [123,["xref_warnings",44,"false"],125],
                10,32,32,
                [123,["xref_extra_paths",44,"[]"],125],
                10,32,32,
                [123,
                 ["xref_checks",44,
                  [91,
                   ["undefined_function_calls",44,"undefined_functions",44,
                    "locals_not_used",44,10,
                    [32,[32,["   ",32,32,32],"   ",32,32,32],32,32],
                    "exports_not_used",44,"deprecated_function_calls",44,10,
                    [32,[32,["   ",32,32,32],"   ",32,32,32],32,32],
                    "deprecated_functions"],
                   93]],
                 125],
                10,32,32,
                [123,
                 ["xref_queries",44,
                  [91,
                   [[123,
                     ["\"(xc - uc) || (xu - x - b - (\\\"mod\\\":\\\".*foo\\\"/\\\"4\\\"))\"",
                      44,10,
                      [32,32,[[32,"   ",32,32,32],32,"   ",32,32,32],32,32],
                      "[]"],
                     125]],
                   93]],
                 125],
                10],
               "Run cross reference analysis.","rebar3 xref",[],
               [default],
               default},
           {provider,version,rebar_prv_version,
               {[],[]},
               true,[],"Print version for rebar and current Erlang.",
               "Print version for rebar and current Erlang.","rebar3 version",
               [],
               [default],
               default},
           {provider,vendor,rebar_prv_vendor,
               {[],[]},
               true,[],"Turns dependencies into top-level applications",
               "Turns dependencies into top-level apps",[],[],
               [default],
               experimental},
           {provider,upgrade,rebar_prv_upgrade,
               {[],[]},
               true,
               [lock],
               "Upgrade project dependencies. Use the -a/--all option to upgrade all dependencies. To upgrade specific dependencies, their names can be listed in the command.",
               "Upgrade dependencies.","rebar3 upgrade [cowboy[,ranch]]",
               [{all,97,"all",undefined,"Upgrade all dependencies."},
                {package,undefined,undefined,string,
                    "List of packages to upgrade."}],
               [default],
               default},
           {provider,update,rebar_prv_update,
               {[],[]},
               true,[],"Update package index.","Update package index.",
               "rebar3 update",[],
               [default],
               default},
           {provider,unlock,rebar_prv_unlock,
               {[],[]},
               true,[],
               "Unlock project dependencies. Use the --all option to unlock all dependencies. To unlock specific dependencies, their name can be listed in the command.",
               "Unlock dependencies.",[],
               [{all,97,"all",undefined,
                    "Unlock all dependencies and remove the lock file."},
                {package,undefined,undefined,string,
                    "List of packages to unlock."}],
               [default],
               default},
           {provider,tar,rebar_prv_tar,
               {[],[]},
               true,
               [compile],
               "Tar archive of release built of project.",
               "Tar archive of release built of project.","rebar3 tar",
               [{all,undefined,"all",boolean,
                    "If true runs the command against all configured  releases"},
                {relname,110,"relname",string,
                    "Specify the name for the release that will be generated"},
                {relvsn,118,"relvsn",string,
                    "Specify the version for the release"},
                {upfrom,117,"upfrom",string,
                    "Only valid with relup target, specify the release to upgrade from"},
                {output_dir,111,"output-dir",string,
                    "The output directory for the release. This is `./` by default."},
                {help,104,"help",undefined,"Print usage"},
                {lib_dir,108,"lib-dir",string,
                    "Additional dir that should be searched for OTP Apps"},
                {dev_mode,100,"dev-mode",boolean,
                    "Symlink the applications and configuration into the release instead of copying"},
                {include_erts,105,"include-erts",string,
                    "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"},
                {override,97,"override",string,
                    "Provide an app name and a directory to override in the form <appname>:<app directory>"},
                {config,99,"config",{string,[]},"The path to a config file"},
                {overlay_vars,undefined,"overlay_vars",string,
                    "Path to a file of overlay variables"},
                {vm_args,undefined,"vm_args",string,
                    "Path to a file to use for vm.args"},
                {sys_config,undefined,"sys_config",string,
                    "Path to a file to use for sys.config"},
                {system_libs,undefined,"system_libs",string,
                    "Boolean or path to dir of Erlang system libs"},
                {version,undefined,"version",undefined,"Print relx version"},
                {root_dir,114,"root",string,"The project root directory"},
                {relnames,109,"relnames",string,
                    "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}],
               [default],
               default},
           {provider,state,rebar_prv_state,
               {[],[]},
               false,[],"Display rebar configuration for debugging purpose",
               "Print current configuration state","rebar3 state",[],
               [default],
               default},
           {provider,shell,rebar_prv_shell,
               {[],[]},
               true,
               [compile],
               "Start a shell with project and deps preloaded similar to~n'erl -pa ebin -pa deps/*/ebin'.~n",
               "Run shell with project apps and deps in path.","rebar3 shell",
               [{config,undefined,"config",string,
                    "Path to the config file to use. Defaults to {shell, [{config, File}]} and then the relx sys.config file if not specified."},
                {name,undefined,"name",atom,"Gives a long name to the node."},
                {sname,undefined,"sname",atom,
                    "Gives a short name to the node."},
                {setcookie,undefined,"setcookie",atom,
                    "Sets the cookie if the node is distributed."},
                {script_file,undefined,"script",string,
                    "Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, [{script_file, File}]} if not specified."},
                {apps,undefined,"apps",string,
                    "A list of apps to boot before starting the shell. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, [{apps, Apps}]} or relx apps if not specified."},
                {relname,114,"relname",atom,
                    "Name of the release to use as a template for the shell session"},
                {relvsn,118,"relvsn",string,
                    "Version of the release to use for the shell session"},
                {start_clean,undefined,"start-clean",boolean,
                    "Cancel any applications in the 'apps' list or release."},
                {env_file,undefined,"env-file",string,
                    "Path to file of os environment variables to setup before expanding vars in config files."},
                {user_drv_args,undefined,"user_drv_args",string,
                    "Arguments passed to user_drv start function for creating custom shells."},
                {eval,undefined,"eval",string,
                    "Erlang term(s) to execute after the apps have been started, but before the shell is presented to the user."}],
               [default],
               default},
           {provider,repos,rebar_prv_repos,
               {[],[]},
               false,[],
               "Display repository configuration for debugging purpose",
               "Print current package repository configuration",
               "rebar3 repos",[],
               [default],
               default},
           {provider,report,rebar_prv_report,
               {[],[]},
               true,[],
               "Provide a crash report to be sent to the rebar3 issues page.",
               "Provide a crash report to be sent to the rebar3 issues page.",
               "rebar3 report \"<task>\"",
               [{task,undefined,undefined,string,
                    "Task to print details for."}],
               [default],
               default},
           {provider,relup,rebar_prv_relup,
               {[],[]},
               true,
               [release],
               "Create relup of releases.","Create relup of releases.",
               "rebar3 relup",
               [{all,undefined,"all",boolean,
                    "If true runs the command against all configured  releases"},
                {relname,110,"relname",string,
                    "Specify the name for the release that will be generated"},
                {relvsn,118,"relvsn",string,
                    "Specify the version for the release"},
                {upfrom,117,"upfrom",string,
                    "Only valid with relup target, specify the release to upgrade from"},
                {output_dir,111,"output-dir",string,
                    "The output directory for the release. This is `./` by default."},
                {help,104,"help",undefined,"Print usage"},
                {lib_dir,108,"lib-dir",string,
                    "Additional dir that should be searched for OTP Apps"},
                {dev_mode,100,"dev-mode",boolean,
                    "Symlink the applications and configuration into the release instead of copying"},
                {include_erts,105,"include-erts",string,
                    "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"},
                {override,97,"override",string,
                    "Provide an app name and a directory to override in the form <appname>:<app directory>"},
                {config,99,"config",{string,[]},"The path to a config file"},
                {overlay_vars,undefined,"overlay_vars",string,
                    "Path to a file of overlay variables"},
                {vm_args,undefined,"vm_args",string,
                    "Path to a file to use for vm.args"},
                {sys_config,undefined,"sys_config",string,
                    "Path to a file to use for sys.config"},
                {system_libs,undefined,"system_libs",string,
                    "Boolean or path to dir of Erlang system libs"},
                {version,undefined,"version",undefined,"Print relx version"},
                {root_dir,114,"root",string,"The project root directory"},
                {relnames,109,"relnames",string,
                    "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}],
               [default],
               default},
           {provider,release,rebar_prv_release,
               {[],[]},
               true,
               [compile],
               "Build release of project.","Build release of project.",
               "rebar3 release",
               [{all,undefined,"all",boolean,
                    "If true runs the command against all configured  releases"},
                {relname,110,"relname",string,
                    "Specify the name for the release that will be generated"},
                {relvsn,118,"relvsn",string,
                    "Specify the version for the release"},
                {upfrom,117,"upfrom",string,
                    "Only valid with relup target, specify the release to upgrade from"},
                {output_dir,111,"output-dir",string,
                    "The output directory for the release. This is `./` by default."},
                {help,104,"help",undefined,"Print usage"},
                {lib_dir,108,"lib-dir",string,
                    "Additional dir that should be searched for OTP Apps"},
                {dev_mode,100,"dev-mode",boolean,
                    "Symlink the applications and configuration into the release instead of copying"},
                {include_erts,105,"include-erts",string,
                    "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"},
                {override,97,"override",string,
                    "Provide an app name and a directory to override in the form <appname>:<app directory>"},
                {config,99,"config",{string,[]},"The path to a config file"},
                {overlay_vars,undefined,"overlay_vars",string,
                    "Path to a file of overlay variables"},
                {vm_args,undefined,"vm_args",string,
                    "Path to a file to use for vm.args"},
                {sys_config,undefined,"sys_config",string,
                    "Path to a file to use for sys.config"},
                {system_libs,undefined,"system_libs",string,
                    "Boolean or path to dir of Erlang system libs"},
                {version,undefined,"version",undefined,"Print relx version"},
                {root_dir,114,"root",string,"The project root directory"},
                {relnames,109,"relnames",string,
                    "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}],
               [default],
               default},
           {provider,upgrade,rebar_prv_plugins_upgrade,
               {[],[]},
               true,[],
               "List or upgrade plugins. Use the -a/--all option to upgrade all plugins.",
               "Upgrade plugins","rebar3 plugins upgrade <plugin>",
               [{plugin,undefined,undefined,string,"Plugin to upgrade"},
                {all,97,"all",undefined,"Upgrade all plugins."}],
               [default],
               plugins},
           {provider,list,rebar_prv_plugins,
               {[],[]},
               true,[],"List local and global plugins for this project",
               "List local and global plugins for this project",
               "rebar3 plugins list",[],
               [default],
               plugins},
           {provider,path,rebar_prv_path,
               {[],[]},
               true,
               [app_discovery],
               "Print paths to build dirs in current profile.",
               "Print paths to build dirs in current profile.","rebar3 path",
               [{app,undefined,"app",string,
                    "Comma separated list of applications to return paths for."},
                {base,undefined,"base",boolean,
                    "Return the `base' path of the current profile."},
                {bin,undefined,"bin",boolean,
                    "Return the `bin' path of the current profile."},
                {ebin,undefined,"ebin",boolean,
                    "Return all `ebin' paths of the current profile's applications."},
                {lib,undefined,"lib",boolean,
                    "Return the `lib' path of the current profile."},
                {priv,undefined,"priv",boolean,
                    "Return the `priv' path of the current profile's applications."},
                {separator,115,"separator",string,
                    "In case of multiple return paths, the separator character to use to join them."},
                {src,undefined,"src",boolean,
                    "Return the `src' path of the current profile's applications."},
                {rel,undefined,"rel",boolean,
                    "Return the `rel' path of the current profile."}],
               [default],
               default},
           {provider,pkgs,rebar_prv_packages,
               {[],[]},
               true,[],
               ["List information for a package",46,10],
               "List information for a package.","rebar3 pkgs elli",
               [{package,undefined,undefined,string,
                    "Package to fetch information for."}],
               [default],
               default},
           {provider,new,rebar_prv_new,
               {[],[]},
               true,[],
               "Create rebar3 project based on template and vars.\n\nValid command line options:\n  <template> [var=foo,...]\n\nSee available templates with: `rebar3 new help`\n",
               "Create new project from templates.","rebar3 new <template>",
               [{force,102,"force",undefined,"overwrite existing files"}],
               [default],
               default},
           {provider,lock,rebar_prv_lock,
               {[],[]},
               false,
               [install_deps],
               "Locks dependencies","Locks dependencies.",[],[],
               [default],
               default},
           {provider,upgrade,rebar_prv_local_upgrade,
               {[],[]},
               true,[],[],"Download latest rebar3 escript and extract.",
               "rebar3 unstable upgrade",[],
               [default],
               local},
           {provider,install,rebar_prv_local_install,
               {[],[]},
               true,[],[],
               "Extract libs from rebar3 escript along with a run script.",
               "rebar3 unstable install",[],
               [default],
               local},
           {provider,install_deps,rebar_prv_install_deps,
               {[],[]},
               false,
               [app_discovery],
               [],[],undefined,[],
               [default],
               default},
           {provider,help,rebar_prv_help,
               {[],[]},
               true,[],
               "Display a list of tasks or help for a given task or subtask.",
               "Display a list of tasks or help for a given task or subtask.",
               "rebar3 help <task>",
               [{help_task,undefined,undefined,string,
                    "Task to print help for."}],
               [default],
               default},
           {provider,'get-deps',rebar_prv_get_deps,
               {[],[]},
               true,
               [lock],
               "Fetch project dependencies.","Fetch dependencies.",
               "rebar3 get-deps",[],[],default},
           {provider,eunit,rebar_prv_eunit,
               {[],[]},
               true,
               [lock],
               "Run EUnit Tests.","Run EUnit Tests.","rebar3 eunit",
               [{app,undefined,"app",string,
                    "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."},
                {application,undefined,"application",string,
                    "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."},
                {cover,99,"cover",boolean,
                    "Generate cover data. Defaults to false."},
                {cover_export_name,undefined,"cover_export_name",string,
                    "Base name of the coverdata file to write"},
                {profile,112,"profile",boolean,
                    "Show the slowest tests. Defaults to false."},
                {dir,100,"dir",string,
                    "Comma separated list of dirs to load tests from. Equivalent to `[{dir, Dir}]`."},
                {file,102,"file",string,
                    "Comma separated list of files to load tests from. Equivalent to `[{file, File}]`."},
                {module,109,"module",string,
                    "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."},
                {test,116,"test",string,
                    "Comma separated list of tests to run. The format is `Module:Func1+Func2`. Equivalent to `[{test, Module, Function}]`."},
                {suite,115,"suite",string,
                    "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."},
                {generator,103,"generator",string,
                    "Comma separated list of generators to load tests from. The format is `Module:Func1+Func2`. Equivalent to `[{generator, Module, Function}]`."},
                {verbose,118,"verbose",boolean,
                    "Verbose output. Defaults to false."},
                {name,undefined,"name",atom,"Gives a long name to the node"},
                {sname,undefined,"sname",atom,
                    "Gives a short name to the node"},
                {sys_config,undefined,"sys_config",string,
                    "List of application config files"},
                {setcookie,undefined,"setcookie",atom,
                    "Sets the cookie if the node is distributed"}],
               [test],
               default},
           {provider,escriptize,rebar_prv_escriptize,
               {[],[]},
               true,
               [compile],
               "Generate an escript executable containing the project's and its dependencies' BEAM files.",
               "Generate escript archive.","rebar3 escriptize",
               [{main_app,97,"main-app",string,
                    "Specify the name of the application to build an escript for."}],
               [default],
               default},
           {provider,edoc,rebar_prv_edoc,
               {[],[]},
               true,
               [compile],
               "Generate documentation using edoc.",
               "Generate documentation using edoc.","rebar3 edoc",[],
               [docs],
               default},
           {provider,do,rebar_prv_do,
               {[],[]},
               true,[],
               "Higher order provider for running multiple tasks in a sequence.",
               "Higher order provider for running multiple tasks in a sequence.",
               "rebar3 do <task1>, <task2>, ...",[],
               [default],
               default},
           {provider,dialyzer,rebar_prv_dialyzer,
               {[],[]},
               true,
               [compile],
               "Run the Dialyzer analyzer on the project.\n\nThis command will build, and keep up-to-date, a suitable PLT and will use it to carry out success typing analysis on the current project.\n\nThe following (optional) configurations can be added to a `proplist` of options `dialyzer` in rebar.config:\n`warnings` - a list of dialyzer warnings\n`get_warnings` - display warnings when altering a PLT file (boolean)\n`plt_apps` - the strategy for determining the applications which included in the PLT file, `top_level_deps` to include just the direct dependencies or `all_deps` to include all nested dependencies or `all_apps` to include all project apps and nested dependencies*\n`plt_extra_apps` - a list of extra applications to include in the PLT file\n`plt_extra_mods` - a list of extra modules to includes in the PLT file\n`plt_location` - the location of the PLT file, `local` to store in the profile's base directory (default) or a custom directory.\n`plt_prefix` - the prefix to the PLT file, defaults to \"rebar3\"**\n`base_plt_apps` - a list of applications to include in the base PLT file***\n`base_plt_mods` - a list of modules to include in the base PLT file***\n`base_plt_location` - the location of base PLT file, `global` to store in $HOME/.cache/rebar3 (default) or  a custom directory***\n`base_plt_prefix` - the prefix to the base PLT file, defaults to \"rebar3\"** ***\n`exclude_apps` - a list of applications to exclude from PLT files and success typing analysis, `plt_extra_mods` and `base_plt_mods` can add modules from excluded applications\n`exclude_mods` - a list of modules to exclude from PLT files and success typing analysis\n`output_format` - configure whether the dialyzer_warnings file will have the `raw` or `formatted` output\n\nFor example, to warn on unmatched returns: \n{dialyzer, [{warnings, [unmatched_returns]}]}.\n\n*The direct dependent applications are listed in `applications` and `included_applications` of their .app files.\n**PLT files are named \"<prefix>_<otp_release>_plt\".\n***The base PLT is a PLT containing the core applications often required for a project's PLT. One base PLT is created per OTP version and stored in `base_plt_location`. A base PLT is used to build project PLTs.\n",
               "Run the Dialyzer analyzer on the project.","rebar3 dialyzer",
               [{incremental,105,"incremental",boolean,
                    "Enable incremental analysis mode. Default: false"},
                {update_plt,117,"update-plt",boolean,
                    "Enable updating the PLT. Default: true"},
                {succ_typings,115,"succ-typings",boolean,
                    "Enable success typing analysis. Default: true"},
                {base_plt_location,undefined,"base-plt-location",string,
                    "The location of base PLT file, defaults to $HOME/.cache/rebar3"},
                {plt_location,undefined,"plt-location",string,
                    "The location of the PLT file, defaults to the profile's base directory"},
                {plt_prefix,undefined,"plt-prefix",string,
                    "The prefix to the PLT file, defaults to \"rebar3\""},
                {app,97,"app",string,
                    "Perform success typing analysis of a single application"},
                {base_plt_prefix,undefined,"base-plt-prefix",string,
                    "The prefix to the base PLT file, defaults to \"rebar3\""},
                {statistics,undefined,"statistics",boolean,
                    "Print information about the progress of execution. Default: false"}],
               [default],
               default},
           {provider,tree,rebar_prv_deps_tree,
               {[],[]},
               true,
               [lock],
               [],"Print dependency tree.","rebar3 tree",
               [{verbose,118,"verbose",undefined,
                    "Print repo and branch/tag/ref for git and hg deps"}],
               [default],
               default},
           {provider,deps,rebar_prv_deps,
               {[],[]},
               true,
               [install_deps],
               "List dependencies. Those not matching the config file are followed by an asterisk (*).",
               "List dependencies","rebar3 deps",[],
               [default],
               default},
           {provider,cover,rebar_prv_cover,
               {[],[]},
               true,
               [lock],
               "Perform coverage analysis.","Perform coverage analysis.",
               "rebar3 cover",
               [{reset,114,"reset",boolean,"Reset all coverdata."},
                {verbose,118,"verbose",boolean,"Print coverage analysis."},
                {min_coverage,109,"min_coverage",integer,
                    "Mandate a coverage percentage required to succeed (0..100)"}],
               [test],
               default},
           {provider,compile,rebar_prv_compile,
               {[],[]},
               true,
               [lock],
               "Compile apps .app.src and .erl files.",
               "Compile apps .app.src and .erl files.","rebar3 compile",
               [{deps_only,100,"deps_only",undefined,
                    "Only compile dependencies, no project apps will be built."}],
               [default],
               default},
           {provider,ct,rebar_prv_common_test,
               {[],[]},
               true,
               [lock],
               "Run Common Tests.","Run Common Tests.","rebar3 ct",
               [{dir,undefined,"dir",string,
                    "List of additional directories containing test suites"},
                {suite,undefined,"suite",string,"List of test suites to run"},
                {group,undefined,"group",string,"List of test groups to run"},
                {testcase,undefined,"case",string,"List of test cases to run"},
                {label,undefined,"label",string,"Test label"},
                {config,undefined,"config",string,"List of config files"},
                {spec,undefined,"spec",string,"List of test specifications"},
                {join_specs,undefined,"join_specs",boolean,
                    "Merge all test specifications and perform a single test run"},
                {allow_user_terms,undefined,"allow_user_terms",boolean,
                    "Allow user defined config values in config files"},
                {logdir,undefined,"logdir",string,"Log folder"},
                {logopts,undefined,"logopts",string,
                    "Options for common test logging"},
                {verbosity,undefined,"verbosity",integer,"Verbosity"},
                {cover,99,"cover",{boolean,false},"Generate cover data"},
                {cover_export_name,undefined,"cover_export_name",string,
                    "Base name of the coverdata file to write"},
                {repeat,undefined,"repeat",integer,
                    "How often to repeat tests"},
                {duration,undefined,"duration",string,
                    "Max runtime (format: HHMMSS)"},
                {until,undefined,"until",string,"Run until (format: HHMMSS)"},
                {force_stop,undefined,"force_stop",string,
                    "Force stop on test timeout (true | false | skip_rest)"},
                {basic_html,undefined,"basic_html",boolean,"Show basic HTML"},
                {stylesheet,undefined,"stylesheet",string,
                    "CSS stylesheet to apply to html output"},
                {decrypt_key,undefined,"decrypt_key",string,
                    "Path to key for decrypting config"},
                {decrypt_file,undefined,"decrypt_file",string,
                    "Path to file containing key for decrypting config"},
                {abort_if_missing_suites,undefined,"abort_if_missing_suites",
                    {boolean,true},
                    "Abort if suites are missing"},
                {multiply_timetraps,undefined,"multiply_timetraps",integer,[]},
                {scale_timetraps,undefined,"scale_timetraps",boolean,
                    "Scale timetraps"},
                {create_priv_dir,undefined,"create_priv_dir",string,
                    "Create priv dir (auto_per_run | auto_per_tc | manual_per_tc)"},
                {include,undefined,"include",string,
                    "Directories containing additional include files"},
                {readable,undefined,"readable",string,
                    "Shows test case names and only displays logs to shell on failures (true | compact | false)"},
                {verbose,118,"verbose",boolean,"Verbose output"},
                {name,undefined,"name",atom,"Gives a long name to the node"},
                {sname,undefined,"sname",atom,
                    "Gives a short name to the node"},
                {setcookie,undefined,"setcookie",atom,
                    "Sets the cookie if the node is distributed"},
                {sys_config,undefined,"sys_config",string,
                    "List of application config files"},
                {compile_only,undefined,"compile_only",boolean,
                    "Compile modules in the project with the test configuration but do not run the tests"},
                {retry,undefined,"retry",boolean,
                    "Experimental feature. If any specification for previously failing test is found, runs them."},
                {fail_fast,undefined,"fail_fast",
                    {boolean,false},
                    "Experimental feature. If any test fails, the run is aborted. Since common test does not support this natively, we abort the rebar3 run on a failure. This May break CT's disk logging and other rebar3 features."}],
               [test],
               default},
           {provider,clean,rebar_prv_clean,
               {[],[]},
               true,
               [app_discovery,install_deps],
               "Remove compiled beam files from apps.",
               "Remove compiled beam files from apps.","rebar3 clean",
               [{all,97,"all",undefined,"Clean all apps include deps"},
                {apps,undefined,"apps",string,
                    "Clean a specific list of apps or dependencies"},
                {profile,112,"profile",string,
                    "Clean under profile. Equivalent to `rebar3 as <profile> clean`"}],
               [default],
               default},
           {provider,compile,rebar_prv_bare_compile,
               {[],[]},
               false,
               [{default,app_discovery}],
               [],[],[],
               [{paths,112,"paths",string,
                    "Wildcard paths of ebin directories to add to code path, separated by a colon"},
                {separator,115,"separator",string,
                    "In case of multiple return paths, the separator character to use to join them."},
                {outdir,111,"outdir",string,
                    "Path where build artifacts are located. Defaults to the current directory."}],
               [default],
               bare},
           {provider,as,rebar_prv_as,
               {[],[]},
               true,[],
               "Higher order provider for running multiple tasks in a sequence as a certain profiles.",
               "Higher order provider for running multiple tasks in a sequence as a certain profiles.",
               "rebar3 as <profile1>,<profile2>,... <task1>, <task2>, ...",
               [{profile,undefined,undefined,string,"Profiles to run as."}],
               [default],
               default},
           {provider,app_discovery,rebar_prv_app_discovery,
               {[],[]},
               false,[],[],[],[],[],
               [default],
               default},
           {provider,clean,pc_prv_clean,
               {[],[]},
               true,
               [{default,app_discovery}],
               [],"clean the results of port compilation","rebar pc clean",[],
               [default],
               pc},
           {provider,compile,pc_prv_compile,
               {[],[]},
               true,
               [{default,compile}],
               [],"perform port compilation","rebar pc compile",[],
               [default],
               pc},
           {provider,xref,rebar_prv_xref,
               {[],[]},
               true,
               [compile],
               ["Run cross reference analysis.",10,10,86,97,108,105,100,32,
                114,101,98,97,114,46,99,111,110,102,105,103,32,111,112,116,
                105,111,110,115,58,10,32,32,
                [123,["xref_warnings",44,"false"],125],
                10,32,32,
                [123,["xref_extra_paths",44,"[]"],125],
                10,32,32,
                [123,
                 ["xref_checks",44,
                  [91,
                   ["undefined_function_calls",44,"undefined_functions",44,
                    "locals_not_used",44,10,
                    [32,[32,["   ",32,32,32],"   ",32,32,32],32,32],
                    "exports_not_used",44,"deprecated_function_calls",44,10,
                    [32,[32,["   ",32,32,32],"   ",32,32,32],32,32],
                    "deprecated_functions"],
                   93]],
                 125],
                10,32,32,
                [123,
                 ["xref_queries",44,
                  [91,
                   [[123,
                     ["\"(xc - uc) || (xu - x - b - (\\\"mod\\\":\\\".*foo\\\"/\\\"4\\\"))\"",
                      44,10,
                      [32,32,[[32,"   ",32,32,32],32,"   ",32,32,32],32,32],
                      "[]"],
                     125]],
                   93]],
                 125],
                10],
               "Run cross reference analysis.","rebar3 xref",[],
               [default],
               default},
           {provider,version,rebar_prv_version,
               {[],[]},
               true,[],"Print version for rebar and current Erlang.",
               "Print version for rebar and current Erlang.","rebar3 version",
               [],
               [default],
               default},
           {provider,vendor,rebar_prv_vendor,
               {[],[]},
               true,[],"Turns dependencies into top-level applications",
               "Turns dependencies into top-level apps",[],[],
               [default],
               experimental},
           {provider,upgrade,rebar_prv_upgrade,
               {[],[]},
               true,
               [lock],
               "Upgrade project dependencies. Use the -a/--all option to upgrade all dependencies. To upgrade specific dependencies, their names can be listed in the command.",
               "Upgrade dependencies.","rebar3 upgrade [cowboy[,ranch]]",
               [{all,97,"all",undefined,"Upgrade all dependencies."},
                {package,undefined,undefined,string,
                    "List of packages to upgrade."}],
               [default],
               default},
           {provider,update,rebar_prv_update,
               {[],[]},
               true,[],"Update package index.","Update package index.",
               "rebar3 update",[],
               [default],
               default},
           {provider,unlock,rebar_prv_unlock,
               {[],[]},
               true,[],
               "Unlock project dependencies. Use the --all option to unlock all dependencies. To unlock specific dependencies, their name can be listed in the command.",
               "Unlock dependencies.",[],
               [{all,97,"all",undefined,
                    "Unlock all dependencies and remove the lock file."},
                {package,undefined,undefined,string,
                    "List of packages to unlock."}],
               [default],
               default},
           {provider,tar,rebar_prv_tar,
               {[],[]},
               true,
               [compile],
               "Tar archive of release built of project.",
               "Tar archive of release built of project.","rebar3 tar",
               [{all,undefined,"all",boolean,
                    "If true runs the command against all configured  releases"},
                {relname,110,"relname",string,
                    "Specify the name for the release that will be generated"},
                {relvsn,118,"relvsn",string,
                    "Specify the version for the release"},
                {upfrom,117,"upfrom",string,
                    "Only valid with relup target, specify the release to upgrade from"},
                {output_dir,111,"output-dir",string,
                    "The output directory for the release. This is `./` by default."},
                {help,104,"help",undefined,"Print usage"},
                {lib_dir,108,"lib-dir",string,
                    "Additional dir that should be searched for OTP Apps"},
                {dev_mode,100,"dev-mode",boolean,
                    "Symlink the applications and configuration into the release instead of copying"},
                {include_erts,105,"include-erts",string,
                    "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"},
                {override,97,"override",string,
                    "Provide an app name and a directory to override in the form <appname>:<app directory>"},
                {config,99,"config",{string,[]},"The path to a config file"},
                {overlay_vars,undefined,"overlay_vars",string,
                    "Path to a file of overlay variables"},
                {vm_args,undefined,"vm_args",string,
                    "Path to a file to use for vm.args"},
                {sys_config,undefined,"sys_config",string,
                    "Path to a file to use for sys.config"},
                {system_libs,undefined,"system_libs",string,
                    "Boolean or path to dir of Erlang system libs"},
                {version,undefined,"version",undefined,"Print relx version"},
                {root_dir,114,"root",string,"The project root directory"},
                {relnames,109,"relnames",string,
                    "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}],
               [default],
               default},
           {provider,state,rebar_prv_state,
               {[],[]},
               false,[],"Display rebar configuration for debugging purpose",
               "Print current configuration state","rebar3 state",[],
               [default],
               default},
           {provider,shell,rebar_prv_shell,
               {[],[]},
               true,
               [compile],
               "Start a shell with project and deps preloaded similar to~n'erl -pa ebin -pa deps/*/ebin'.~n",
               "Run shell with project apps and deps in path.","rebar3 shell",
               [{config,undefined,"config",string,
                    "Path to the config file to use. Defaults to {shell, [{config, File}]} and then the relx sys.config file if not specified."},
                {name,undefined,"name",atom,"Gives a long name to the node."},
                {sname,undefined,"sname",atom,
                    "Gives a short name to the node."},
                {setcookie,undefined,"setcookie",atom,
                    "Sets the cookie if the node is distributed."},
                {script_file,undefined,"script",string,
                    "Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, [{script_file, File}]} if not specified."},
                {apps,undefined,"apps",string,
                    "A list of apps to boot before starting the shell. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, [{apps, Apps}]} or relx apps if not specified."},
                {relname,114,"relname",atom,
                    "Name of the release to use as a template for the shell session"},
                {relvsn,118,"relvsn",string,
                    "Version of the release to use for the shell session"},
                {start_clean,undefined,"start-clean",boolean,
                    "Cancel any applications in the 'apps' list or release."},
                {env_file,undefined,"env-file",string,
                    "Path to file of os environment variables to setup before expanding vars in config files."},
                {user_drv_args,undefined,"user_drv_args",string,
                    "Arguments passed to user_drv start function for creating custom shells."},
                {eval,undefined,"eval",string,
                    "Erlang term(s) to execute after the apps have been started, but before the shell is presented to the user."}],
               [default],
               default},
           {provider,repos,rebar_prv_repos,
               {[],[]},
               false,[],
               "Display repository configuration for debugging purpose",
               "Print current package repository configuration",
               "rebar3 repos",[],
               [default],
               default},
           {provider,report,rebar_prv_report,
               {[],[]},
               true,[],
               "Provide a crash report to be sent to the rebar3 issues page.",
               "Provide a crash report to be sent to the rebar3 issues page.",
               "rebar3 report \"<task>\"",
               [{task,undefined,undefined,string,
                    "Task to print details for."}],
               [default],
               default},
           {provider,relup,rebar_prv_relup,
               {[],[]},
               true,
               [release],
               "Create relup of releases.","Create relup of releases.",
               "rebar3 relup",
               [{all,undefined,"all",boolean,
                    "If true runs the command against all configured  releases"},
                {relname,110,"relname",string,
                    "Specify the name for the release that will be generated"},
                {relvsn,118,"relvsn",string,
                    "Specify the version for the release"},
                {upfrom,117,"upfrom",string,
                    "Only valid with relup target, specify the release to upgrade from"},
                {output_dir,111,"output-dir",string,
                    "The output directory for the release. This is `./` by default."},
                {help,104,"help",undefined,"Print usage"},
                {lib_dir,108,"lib-dir",string,
                    "Additional dir that should be searched for OTP Apps"},
                {dev_mode,100,"dev-mode",boolean,
                    "Symlink the applications and configuration into the release instead of copying"},
                {include_erts,105,"include-erts",string,
                    "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"},
                {override,97,"override",string,
                    "Provide an app name and a directory to override in the form <appname>:<app directory>"},
                {config,99,"config",{string,[]},"The path to a config file"},
                {overlay_vars,undefined,"overlay_vars",string,
                    "Path to a file of overlay variables"},
                {vm_args,undefined,"vm_args",string,
                    "Path to a file to use for vm.args"},
                {sys_config,undefined,"sys_config",string,
                    "Path to a file to use for sys.config"},
                {system_libs,undefined,"system_libs",string,
                    "Boolean or path to dir of Erlang system libs"},
                {version,undefined,"version",undefined,"Print relx version"},
                {root_dir,114,"root",string,"The project root directory"},
                {relnames,109,"relnames",string,
                    "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}],
               [default],
               default},
           {provider,release,rebar_prv_release,
               {[],[]},
               true,
               [compile],
               "Build release of project.","Build release of project.",
               "rebar3 release",
               [{all,undefined,"all",boolean,
                    "If true runs the command against all configured  releases"},
                {relname,110,"relname",string,
                    "Specify the name for the release that will be generated"},
                {relvsn,118,"relvsn",string,
                    "Specify the version for the release"},
                {upfrom,117,"upfrom",string,
                    "Only valid with relup target, specify the release to upgrade from"},
                {output_dir,111,"output-dir",string,
                    "The output directory for the release. This is `./` by default."},
                {help,104,"help",undefined,"Print usage"},
                {lib_dir,108,"lib-dir",string,
                    "Additional dir that should be searched for OTP Apps"},
                {dev_mode,100,"dev-mode",boolean,
                    "Symlink the applications and configuration into the release instead of copying"},
                {include_erts,105,"include-erts",string,
                    "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"},
                {override,97,"override",string,
                    "Provide an app name and a directory to override in the form <appname>:<app directory>"},
                {config,99,"config",{string,[]},"The path to a config file"},
                {overlay_vars,undefined,"overlay_vars",string,
                    "Path to a file of overlay variables"},
                {vm_args,undefined,"vm_args",string,
                    "Path to a file to use for vm.args"},
                {sys_config,undefined,"sys_config",string,
                    "Path to a file to use for sys.config"},
                {system_libs,undefined,"system_libs",string,
                    "Boolean or path to dir of Erlang system libs"},
                {version,undefined,"version",undefined,"Print relx version"},
                {root_dir,114,"root",string,"The project root directory"},
                {relnames,109,"relnames",string,
                    "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}],
               [default],
               default},
           {provider,upgrade,rebar_prv_plugins_upgrade,
               {[],[]},
               true,[],
               "List or upgrade plugins. Use the -a/--all option to upgrade all plugins.",
               "Upgrade plugins","rebar3 plugins upgrade <plugin>",
               [{plugin,undefined,undefined,string,"Plugin to upgrade"},
                {all,97,"all",undefined,"Upgrade all plugins."}],
               [default],
               plugins},
           {provider,list,rebar_prv_plugins,
               {[],[]},
               true,[],"List local and global plugins for this project",
               "List local and global plugins for this project",
               "rebar3 plugins list",[],
               [default],
               plugins},
           {provider,path,rebar_prv_path,
               {[],[]},
               true,
               [app_discovery],
               "Print paths to build dirs in current profile.",
               "Print paths to build dirs in current profile.","rebar3 path",
               [{app,undefined,"app",string,
                    "Comma separated list of applications to return paths for."},
                {base,undefined,"base",boolean,
                    "Return the `base' path of the current profile."},
                {bin,undefined,"bin",boolean,
                    "Return the `bin' path of the current profile."},
                {ebin,undefined,"ebin",boolean,
                    "Return all `ebin' paths of the current profile's applications."},
                {lib,undefined,"lib",boolean,
                    "Return the `lib' path of the current profile."},
                {priv,undefined,"priv",boolean,
                    "Return the `priv' path of the current profile's applications."},
                {separator,115,"separator",string,
                    "In case of multiple return paths, the separator character to use to join them."},
                {src,undefined,"src",boolean,
                    "Return the `src' path of the current profile's applications."},
                {rel,undefined,"rel",boolean,
                    "Return the `rel' path of the current profile."}],
               [default],
               default},
           {provider,pkgs,rebar_prv_packages,
               {[],[]},
               true,[],
               ["List information for a package",46,10],
               "List information for a package.","rebar3 pkgs elli",
               [{package,undefined,undefined,string,
                    "Package to fetch information for."}],
               [default],
               default},
           {provider,new,rebar_prv_new,
               {[],[]},
               true,[],
               "Create rebar3 project based on template and vars.\n\nValid command line options:\n  <template> [var=foo,...]\n\nSee available templates with: `rebar3 new help`\n",
               "Create new project from templates.","rebar3 new <template>",
               [{force,102,"force",undefined,"overwrite existing files"}],
               [default],
               default},
           {provider,lock,rebar_prv_lock,
               {[],[]},
               false,
               [install_deps],
               "Locks dependencies","Locks dependencies.",[],[],
               [default],
               default},
           {provider,upgrade,rebar_prv_local_upgrade,
               {[],[]},
               true,[],[],"Download latest rebar3 escript and extract.",
               "rebar3 unstable upgrade",[],
               [default],
               local},
           {provider,install,rebar_prv_local_install,
               {[],[]},
               true,[],[],
               "Extract libs from rebar3 escript along with a run script.",
               "rebar3 unstable install",[],
               [default],
               local},
           {provider,install_deps,rebar_prv_install_deps,
               {[],[]},
               false,
               [app_discovery],
               [],[],undefined,[],
               [default],
               default},
           {provider,help,rebar_prv_help,
               {[],[]},
               true,[],
               "Display a list of tasks or help for a given task or subtask.",
               "Display a list of tasks or help for a given task or subtask.",
               "rebar3 help <task>",
               [{help_task,undefined,undefined,string,
                    "Task to print help for."}],
               [default],
               default},
           {provider,'get-deps',rebar_prv_get_deps,
               {[],[]},
               true,
               [lock],
               "Fetch project dependencies.","Fetch dependencies.",
               "rebar3 get-deps",[],[],default},
           {provider,eunit,rebar_prv_eunit,
               {[],[]},
               true,
               [lock],
               "Run EUnit Tests.","Run EUnit Tests.","rebar3 eunit",
               [{app,undefined,"app",string,
                    "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."},
                {application,undefined,"application",string,
                    "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."},
                {cover,99,"cover",boolean,
                    "Generate cover data. Defaults to false."},
                {cover_export_name,undefined,"cover_export_name",string,
                    "Base name of the coverdata file to write"},
                {profile,112,"profile",boolean,
                    "Show the slowest tests. Defaults to false."},
                {dir,100,"dir",string,
                    "Comma separated list of dirs to load tests from. Equivalent to `[{dir, Dir}]`."},
                {file,102,"file",string,
                    "Comma separated list of files to load tests from. Equivalent to `[{file, File}]`."},
                {module,109,"module",string,
                    "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."},
                {test,116,"test",string,
                    "Comma separated list of tests to run. The format is `Module:Func1+Func2`. Equivalent to `[{test, Module, Function}]`."},
                {suite,115,"suite",string,
                    "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."},
                {generator,103,"generator",string,
                    "Comma separated list of generators to load tests from. The format is `Module:Func1+Func2`. Equivalent to `[{generator, Module, Function}]`."},
                {verbose,118,"verbose",boolean,
                    "Verbose output. Defaults to false."},
                {name,undefined,"name",atom,"Gives a long name to the node"},
                {sname,undefined,"sname",atom,
                    "Gives a short name to the node"},
                {sys_config,undefined,"sys_config",string,
                    "List of application config files"},
                {setcookie,undefined,"setcookie",atom,
                    "Sets the cookie if the node is distributed"}],
               [test],
               default},
           {provider,escriptize,rebar_prv_escriptize,
               {[],[]},
               true,
               [compile],
               "Generate an escript executable containing the project's and its dependencies' BEAM files.",
               "Generate escript archive.","rebar3 escriptize",
               [{main_app,97,"main-app",string,
                    "Specify the name of the application to build an escript for."}],
               [default],
               default},
           {provider,edoc,rebar_prv_edoc,
               {[],[]},
               true,
               [compile],
               "Generate documentation using edoc.",
               "Generate documentation using edoc.","rebar3 edoc",[],
               [docs],
               default},
           {provider,do,rebar_prv_do,
               {[],[]},
               true,[],
               "Higher order provider for running multiple tasks in a sequence.",
               "Higher order provider for running multiple tasks in a sequence.",
               "rebar3 do <task1>, <task2>, ...",[],
               [default],
               default},
           {provider,dialyzer,rebar_prv_dialyzer,
               {[],[]},
               true,
               [compile],
               "Run the Dialyzer analyzer on the project.\n\nThis command will build, and keep up-to-date, a suitable PLT and will use it to carry out success typing analysis on the current project.\n\nThe following (optional) configurations can be added to a `proplist` of options `dialyzer` in rebar.config:\n`warnings` - a list of dialyzer warnings\n`get_warnings` - display warnings when altering a PLT file (boolean)\n`plt_apps` - the strategy for determining the applications which included in the PLT file, `top_level_deps` to include just the direct dependencies or `all_deps` to include all nested dependencies or `all_apps` to include all project apps and nested dependencies*\n`plt_extra_apps` - a list of extra applications to include in the PLT file\n`plt_extra_mods` - a list of extra modules to includes in the PLT file\n`plt_location` - the location of the PLT file, `local` to store in the profile's base directory (default) or a custom directory.\n`plt_prefix` - the prefix to the PLT file, defaults to \"rebar3\"**\n`base_plt_apps` - a list of applications to include in the base PLT file***\n`base_plt_mods` - a list of modules to include in the base PLT file***\n`base_plt_location` - the location of base PLT file, `global` to store in $HOME/.cache/rebar3 (default) or  a custom directory***\n`base_plt_prefix` - the prefix to the base PLT file, defaults to \"rebar3\"** ***\n`exclude_apps` - a list of applications to exclude from PLT files and success typing analysis, `plt_extra_mods` and `base_plt_mods` can add modules from excluded applications\n`exclude_mods` - a list of modules to exclude from PLT files and success typing analysis\n`output_format` - configure whether the dialyzer_warnings file will have the `raw` or `formatted` output\n\nFor example, to warn on unmatched returns: \n{dialyzer, [{warnings, [unmatched_returns]}]}.\n\n*The direct dependent applications are listed in `applications` and `included_applications` of their .app files.\n**PLT files are named \"<prefix>_<otp_release>_plt\".\n***The base PLT is a PLT containing the core applications often required for a project's PLT. One base PLT is created per OTP version and stored in `base_plt_location`. A base PLT is used to build project PLTs.\n",
               "Run the Dialyzer analyzer on the project.","rebar3 dialyzer",
               [{incremental,105,"incremental",boolean,
                    "Enable incremental analysis mode. Default: false"},
                {update_plt,117,"update-plt",boolean,
                    "Enable updating the PLT. Default: true"},
                {succ_typings,115,"succ-typings",boolean,
                    "Enable success typing analysis. Default: true"},
                {base_plt_location,undefined,"base-plt-location",string,
                    "The location of base PLT file, defaults to $HOME/.cache/rebar3"},
                {plt_location,undefined,"plt-location",string,
                    "The location of the PLT file, defaults to the profile's base directory"},
                {plt_prefix,undefined,"plt-prefix",string,
                    "The prefix to the PLT file, defaults to \"rebar3\""},
                {app,97,"app",string,
                    "Perform success typing analysis of a single application"},
                {base_plt_prefix,undefined,"base-plt-prefix",string,
                    "The prefix to the base PLT file, defaults to \"rebar3\""},
                {statistics,undefined,"statistics",boolean,
                    "Print information about the progress of execution. Default: false"}],
               [default],
               default},
           {provider,tree,rebar_prv_deps_tree,
               {[],[]},
               true,
               [lock],
               [],"Print dependency tree.","rebar3 tree",
               [{verbose,118,"verbose",undefined,
                    "Print repo and branch/tag/ref for git and hg deps"}],
               [default],
               default},
           {provider,deps,rebar_prv_deps,
               {[],[]},
               true,
               [install_deps],
               "List dependencies. Those not matching the config file are followed by an asterisk (*).",
               "List dependencies","rebar3 deps",[],
               [default],
               default},
           {provider,cover,rebar_prv_cover,
               {[],[]},
               true,
               [lock],
               "Perform coverage analysis.","Perform coverage analysis.",
               "rebar3 cover",
               [{reset,114,"reset",boolean,"Reset all coverdata."},
                {verbose,118,"verbose",boolean,"Print coverage analysis."},
                {min_coverage,109,"min_coverage",integer,
                    "Mandate a coverage percentage required to succeed (0..100)"}],
               [test],
               default},
           {provider,compile,rebar_prv_compile,
               {[],[]},
               true,
               [lock],
               "Compile apps .app.src and .erl files.",
               "Compile apps .app.src and .erl files.","rebar3 compile",
               [{deps_only,100,"deps_only",undefined,
                    "Only compile dependencies, no project apps will be built."}],
               [default],
               default},
           {provider,ct,rebar_prv_common_test,
               {[],[]},
               true,
               [lock],
               "Run Common Tests.","Run Common Tests.","rebar3 ct",
               [{dir,undefined,"dir",string,
                    "List of additional directories containing test suites"},
                {suite,undefined,"suite",string,"List of test suites to run"},
                {group,undefined,"group",string,"List of test groups to run"},
                {testcase,undefined,"case",string,"List of test cases to run"},
                {label,undefined,"label",string,"Test label"},
                {config,undefined,"config",string,"List of config files"},
                {spec,undefined,"spec",string,"List of test specifications"},
                {join_specs,undefined,"join_specs",boolean,
                    "Merge all test specifications and perform a single test run"},
                {allow_user_terms,undefined,"allow_user_terms",boolean,
                    "Allow user defined config values in config files"},
                {logdir,undefined,"logdir",string,"Log folder"},
                {logopts,undefined,"logopts",string,
                    "Options for common test logging"},
                {verbosity,undefined,"verbosity",integer,"Verbosity"},
                {cover,99,"cover",{boolean,false},"Generate cover data"},
                {cover_export_name,undefined,"cover_export_name",string,
                    "Base name of the coverdata file to write"},
                {repeat,undefined,"repeat",integer,
                    "How often to repeat tests"},
                {duration,undefined,"duration",string,
                    "Max runtime (format: HHMMSS)"},
                {until,undefined,"until",string,"Run until (format: HHMMSS)"},
                {force_stop,undefined,"force_stop",string,
                    "Force stop on test timeout (true | false | skip_rest)"},
                {basic_html,undefined,"basic_html",boolean,"Show basic HTML"},
                {stylesheet,undefined,"stylesheet",string,
                    "CSS stylesheet to apply to html output"},
                {decrypt_key,undefined,"decrypt_key",string,
                    "Path to key for decrypting config"},
                {decrypt_file,undefined,"decrypt_file",string,
                    "Path to file containing key for decrypting config"},
                {abort_if_missing_suites,undefined,"abort_if_missing_suites",
                    {boolean,true},
                    "Abort if suites are missing"},
                {multiply_timetraps,undefined,"multiply_timetraps",integer,[]},
                {scale_timetraps,undefined,"scale_timetraps",boolean,
                    "Scale timetraps"},
                {create_priv_dir,undefined,"create_priv_dir",string,
                    "Create priv dir (auto_per_run | auto_per_tc | manual_per_tc)"},
                {include,undefined,"include",string,
                    "Directories containing additional include files"},
                {readable,undefined,"readable",string,
                    "Shows test case names and only displays logs to shell on failures (true | compact | false)"},
                {verbose,118,"verbose",boolean,"Verbose output"},
                {name,undefined,"name",atom,"Gives a long name to the node"},
                {sname,undefined,"sname",atom,
                    "Gives a short name to the node"},
                {setcookie,undefined,"setcookie",atom,
                    "Sets the cookie if the node is distributed"},
                {sys_config,undefined,"sys_config",string,
                    "List of application config files"},
                {compile_only,undefined,"compile_only",boolean,
                    "Compile modules in the project with the test configuration but do not run the tests"},
                {retry,undefined,"retry",boolean,
                    "Experimental feature. If any specification for previously failing test is found, runs them."},
                {fail_fast,undefined,"fail_fast",
                    {boolean,false},
                    "Experimental feature. If any test fails, the run is aborted. Since common test does not support this natively, we abort the rebar3 run on a failure. This May break CT's disk logging and other rebar3 features."}],
               [test],
               default},
           {provider,clean,rebar_prv_clean,
               {[],[]},
               true,
               [app_discovery,install_deps],
               "Remove compiled beam files from apps.",
               "Remove compiled beam files from apps.","rebar3 clean",
               [{all,97,"all",undefined,"Clean all apps include deps"},
                {apps,undefined,"apps",string,
                    "Clean a specific list of apps or dependencies"},
                {profile,112,"profile",string,
                    "Clean under profile. Equivalent to `rebar3 as <profile> clean`"}],
               [default],
               default},
           {provider,compile,rebar_prv_bare_compile,
               {[],[]},
               false,
               [{default,app_discovery}],
               [],[],[],
               [{paths,112,"paths",string,
                    "Wildcard paths of ebin directories to add to code path, separated by a colon"},
                {separator,115,"separator",string,
                    "In case of multiple return paths, the separator character to use to join them."},
                {outdir,111,"outdir",string,
                    "Path where build artifacts are located. Defaults to the current directory."}],
               [default],
               bare},
           {provider,as,rebar_prv_as,
               {[],[]},
               true,[],
               "Higher order provider for running multiple tasks in a sequence as a certain profiles.",
               "Higher order provider for running multiple tasks in a sequence as a certain profiles.",
               "rebar3 as <profile1>,<profile2>,... <task1>, <task2>, ...",
               [{profile,undefined,undefined,string,"Profiles to run as."}],
               [default],
               default},
           {provider,app_discovery,rebar_prv_app_discovery,
               {[],[]},
               false,[],[],[],[],[],
               [default],
               default}],
          false},
      []],
     []},
 {pc_port_specs,port_opt,2,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_port_specs.erl"},
      {line,244}]},
 {pc_port_specs,'-get_port_spec/3-lc$^2/1-2-',2,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_port_specs.erl"},
      {line,197}]},
 {pc_port_specs,get_port_spec,3,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_port_specs.erl"},
      {line,197}]},
 {pc_port_specs,'-construct/1-lc$^0/1-1-',2,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_port_specs.erl"},
      {line,68}]},
 {pc_port_specs,construct,1,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_port_specs.erl"},
      {line,68}]},
 {pc_prv_compile,'-do/1-lc$^0/1-0-',2,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_prv_compile.erl"},
      {line,52}]},
 {pc_prv_compile,do,1,
     [{file,
          "/Users/tony/repos/fake_turn_elixir_117/deps/fast_tls/_build/default/plugins/pc/src/pc_prv_compile.erl"},
      {line,54}]}]
===> When submitting a bug report, please include the output of `rebar3 report "your command"`
** (Mix) Could not compile dependency :fast_tls, "/Users/tony/.asdf/installs/elixir/1.17.2/.mix/elixir/1-17/rebar3 bare compile --paths /Users/tony/repos/fake_turn_elixir_117/_build/dev/lib/*/ebin" command failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile fast_tls --force", update it with "mix deps.update fast_tls" or clean it with "mix deps.clean fast_tls"
Tonyhaenn commented 1 month ago

Solved with help from SWM Discord.

  1. Remove the _build directory

    rm -rf _build
  2. Make sure the env variables are set properly

    export C_INCLUDE_PATH=$(brew --prefix openssl)/include
    export LIBRARY_PATH=$(brew --prefix openssl)/lib
    export PKG_CONFIG_PATH=$(brew --prefix openssl)/lib/pkgconfig
  3. From here: https://github.com/processone/fast_tls/issues/66

    /Users/void/.asdf/installs/elixir/1.17.0/.mix/elixir/1-17/rebar3 plugins upgrade --all
    mix local.rebar
  4. Recompile

    mix deps.get
    mix deps.compile