diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2017-11-05 22:24:58 -0500 |
---|---|---|
committer | Fred Hebert <mononcqc@ferd.ca> | 2017-11-20 14:56:06 -0500 |
commit | bf7ec3866f1819619286cc875fa88e1dc8bb9cfc (patch) | |
tree | c4c1275a3ce82eb13829eb8cfa4d7b0e4d6d0102 /src/rebar_app_discover.erl | |
parent | 26d30a95fa8ecba5d40a4627a7b436f58b53cb0e (diff) |
Make debug_info rules clear
Current rebar3 uses debug_info rules where debug_info is added by
default, and no_debug_info prevents the default from being added, and
removes any explicit debug_info, if any. The problem is that if
'no_debug_info' is anywhere in the config for a run, it cannot be
removed even with other profiles. additionally, no_debug_info ignores
special tuples like {debug_info, {Mod, Data}} and {debug_info_key, Key},
which can be used to add debug info and encrypt it (in lieu of plain
debug_info) respectively.
This patch makes it so that the following rules are in place:
- the last option seen takes priority, allowing profile overrides by
the ordering rules the compiler expects
- the overriden options shall be explicitly deleted to avoid confusing
the compiler
- any option related to debug info seen last cancels any no_debug_info
that preceded it
- any no_debug_info option seen last cancels all of the other
debug_info options
- if debug_info is seen last, it cancels out {debug_info_key, Key}
- if {debug_info_key, Key} is seen last, it cancels out debug_info
- All other options are left untouched in that context (defines can
still be expanded and so on)
This should allow proper profile rules to be followed. Note that erl_opt
profile merging puts precedence on the *last* element of a list, to
match the compiler.
Diffstat (limited to 'src/rebar_app_discover.erl')
0 files changed, 0 insertions, 0 deletions