summaryrefslogtreecommitdiff
path: root/src/rebar_app_utils.erl
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2017-11-05 22:24:58 -0500
committerFred Hebert <mononcqc@ferd.ca>2017-11-20 14:56:06 -0500
commitbf7ec3866f1819619286cc875fa88e1dc8bb9cfc (patch)
treec4c1275a3ce82eb13829eb8cfa4d7b0e4d6d0102 /src/rebar_app_utils.erl
parent26d30a95fa8ecba5d40a4627a7b436f58b53cb0e (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_utils.erl')
0 files changed, 0 insertions, 0 deletions