bootstrap: fix and enhance VCS_INFO handling

* re-compile rebar.erl instead of rebar_core to define VCS_INFO
* append "-dirty" if vcs indicates unclean repo status
This commit is contained in:
Tuncer Ayaz 2012-08-12 20:14:27 +02:00
parent 0822075250
commit e34b702423

View file

@ -7,15 +7,16 @@ main(Args) ->
Built = build_time(), Built = build_time(),
%% Get a string repr of first matching VCS changeset %% Get a string repr of first matching VCS changeset
VcsInfo = vcs_info([{hg, ".hg", "hg identify -i"}, VcsInfo = vcs_info([{hg, ".hg", "hg identify -i", "hg status"},
{git, ".git", "git describe --always --tags"}]), {git, ".git", "git describe --always --tags",
"git status -s"}]),
%% Check for force=1 flag to force a rebuild %% Check for force=1 flag to force a rebuild
case lists:member("force=1", Args) of case lists:member("force=1", Args) of
true -> true ->
rm("ebin/*.beam"); rm("ebin/*.beam");
false -> false ->
rm("ebin/rebar_core.beam") rm("ebin/rebar.beam")
end, end,
%% Add check for debug flag %% Add check for debug flag
@ -93,10 +94,17 @@ build_time() ->
vcs_info([]) -> vcs_info([]) ->
"No VCS info available."; "No VCS info available.";
vcs_info([{Id, Dir, Cmd} | Rest]) -> vcs_info([{Id, Dir, VsnCmd, StatusCmd} | Rest]) ->
case filelib:is_dir(Dir) of case filelib:is_dir(Dir) of
true -> true ->
lists:concat([Id, " ", string:strip(os:cmd(Cmd), both, $\n)]); Vsn = string:strip(os:cmd(VsnCmd), both, $\n),
Status = case string:strip(os:cmd(StatusCmd), both, $\n) of
[] ->
"";
_ ->
"-dirty"
end,
lists:concat([Id, " ", Vsn, Status]);
false -> false ->
vcs_info(Rest) vcs_info(Rest)
end. end.