mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
Merge pull request #75 from djnym/port_env_handling
Different fix for the OS environment vs Default environment
This commit is contained in:
commit
a34c1a7b12
1 changed files with 41 additions and 11 deletions
|
@ -153,7 +153,7 @@ setup_env(Config) ->
|
||||||
DefaultEnvs = filter_envs(default_env(), []),
|
DefaultEnvs = filter_envs(default_env(), []),
|
||||||
PortEnvs = rebar_config:get_list(Config, port_envs, []),
|
PortEnvs = rebar_config:get_list(Config, port_envs, []),
|
||||||
OverrideEnvs = filter_envs(PortEnvs, []),
|
OverrideEnvs = filter_envs(PortEnvs, []),
|
||||||
RawEnv = DefaultEnvs ++ OverrideEnvs ++ os_env(),
|
RawEnv = apply_defaults(os_env(), DefaultEnvs) ++ OverrideEnvs,
|
||||||
expand_vars_loop(merge_each_var(RawEnv, [])).
|
expand_vars_loop(merge_each_var(RawEnv, [])).
|
||||||
|
|
||||||
%% ===================================================================
|
%% ===================================================================
|
||||||
|
@ -266,7 +266,24 @@ compiler(".c++") -> "$CXX";
|
||||||
compiler(".C") -> "$CXX";
|
compiler(".C") -> "$CXX";
|
||||||
compiler(_) -> "$CC".
|
compiler(_) -> "$CC".
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% Given a list of {Key, Value} variables, and another list of default
|
||||||
|
%% {Key, Value} variables, return a merged list where the rule is if the
|
||||||
|
%% default is expandable expand it with the value of the variable list,
|
||||||
|
%% otherwise just return the value of the variable.
|
||||||
|
%%
|
||||||
|
apply_defaults(Vars, Defaults) ->
|
||||||
|
dict:to_list(
|
||||||
|
dict:merge(fun(Key, VarValue, DefaultValue) ->
|
||||||
|
case is_expandable(DefaultValue) of
|
||||||
|
true ->
|
||||||
|
expand_env_variable(DefaultValue,
|
||||||
|
Key, VarValue);
|
||||||
|
false -> VarValue
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
dict:from_list(Vars),
|
||||||
|
dict:from_list(Defaults))).
|
||||||
%%
|
%%
|
||||||
%% Given a list of {Key, Value} environment variables, where Key may be defined
|
%% Given a list of {Key, Value} environment variables, where Key may be defined
|
||||||
%% multiple times, walk the list and expand each self-reference so that we
|
%% multiple times, walk the list and expand each self-reference so that we
|
||||||
|
@ -324,6 +341,16 @@ expand_vars(Key, Value, Vars) ->
|
||||||
[], Vars).
|
[], Vars).
|
||||||
|
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% Given a string, determine if it is expandable
|
||||||
|
%%
|
||||||
|
is_expandable(InStr) ->
|
||||||
|
case re:run(InStr,"\\\$",[{capture,none}]) of
|
||||||
|
match -> true;
|
||||||
|
nomatch -> false
|
||||||
|
end.
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%
|
||||||
%% Given env. variable FOO we want to expand all references to
|
%% Given env. variable FOO we want to expand all references to
|
||||||
%% it in InStr. References can have two forms: $FOO and ${FOO}
|
%% it in InStr. References can have two forms: $FOO and ${FOO}
|
||||||
|
@ -374,17 +401,20 @@ default_env() ->
|
||||||
{"ERLANG_ARCH", integer_to_list(8 * erlang:system_info(wordsize))},
|
{"ERLANG_ARCH", integer_to_list(8 * erlang:system_info(wordsize))},
|
||||||
{"ERLANG_TARGET", rebar_utils:get_arch()},
|
{"ERLANG_TARGET", rebar_utils:get_arch()},
|
||||||
|
|
||||||
{"solaris.*-64$", "CFLAGS", "-D_REENTRANT -m64"}, % Solaris specific flags
|
%% Solaris specific flags
|
||||||
{"solaris.*-64$", "CXXFLAGS", "-D_REENTRANT -m64"},
|
{"solaris.*-64$", "CFLAGS", "-D_REENTRANT -m64 $CFLAGS"},
|
||||||
{"solaris.*-64$", "LDFLAGS", "-m64"},
|
{"solaris.*-64$", "CXXFLAGS", "-D_REENTRANT -m64 $CXXFLAGS"},
|
||||||
|
{"solaris.*-64$", "LDFLAGS", "-m64 $LDFLAGS"},
|
||||||
|
|
||||||
{"darwin9.*-64$", "CFLAGS", "-m64"}, % OS X Leopard flags for 64-bit
|
%% OS X Leopard flags for 64-bit
|
||||||
{"darwin9.*-64$", "CXXFLAGS", "-m64"},
|
{"darwin9.*-64$", "CFLAGS", "-m64 $CFLAGS"},
|
||||||
{"darwin9.*-64$", "LDFLAGS", "-arch x86_64"},
|
{"darwin9.*-64$", "CXXFLAGS", "-m64 $CXXFLAGS"},
|
||||||
|
{"darwin9.*-64$", "LDFLAGS", "-arch x86_64 $LDFLAGS"},
|
||||||
|
|
||||||
{"darwin10.*-32", "CFLAGS", "-m32"}, % OS X Snow Leopard flags for 32-bit
|
%% OS X Snow Leopard flags for 32-bit
|
||||||
{"darwin10.*-32", "CXXFLAGS", "-m32"},
|
{"darwin10.*-32", "CFLAGS", "-m32 $CFLAGS"},
|
||||||
{"darwin10.*-32", "LDFLAGS", "-arch i386"}
|
{"darwin10.*-32", "CXXFLAGS", "-m32 $CXXFLAGS"},
|
||||||
|
{"darwin10.*-32", "LDFLAGS", "-arch i386 $LDFLAGS"}
|
||||||
].
|
].
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue