mirror of
https://github.com/correl/rebar.git
synced 2024-11-23 19:19:54 +00:00
Add support for embedding git version; make sure to always rebuild rebar_core so that the VCS_INFO constant gets updated
This commit is contained in:
parent
370d8df02f
commit
27f638b45e
1 changed files with 15 additions and 3 deletions
18
bootstrap
18
bootstrap
|
@ -6,8 +6,9 @@ main(Args) ->
|
||||||
%% Get a string repr of build time
|
%% Get a string repr of build time
|
||||||
Built = build_time(),
|
Built = build_time(),
|
||||||
|
|
||||||
%% Get a string repr of hg changeset
|
%% Get a string repr of first matching VCS changeset
|
||||||
HgInfo = "hg " ++ string:strip(os:cmd("hg identify -i"), both, $\n),
|
VcsInfo = vcs_info([{hg, ".hg", "hg identify -i"},
|
||||||
|
{git, ".git", "git describe --always"}]),
|
||||||
|
|
||||||
%% 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
|
||||||
|
@ -15,13 +16,14 @@ main(Args) ->
|
||||||
[] = os:cmd("rm -rf ebin/*.beam"),
|
[] = os:cmd("rm -rf ebin/*.beam"),
|
||||||
ok;
|
ok;
|
||||||
false ->
|
false ->
|
||||||
|
os:cmd("rm -f ebin/rebar_core.beam"),
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
|
|
||||||
%% Compile all src/*.erl to ebin
|
%% Compile all src/*.erl to ebin
|
||||||
case make:files(filelib:wildcard("src/*.erl"), [{outdir, "ebin"}, {i, "include"},
|
case make:files(filelib:wildcard("src/*.erl"), [{outdir, "ebin"}, {i, "include"},
|
||||||
{d, 'BUILD_TIME', Built},
|
{d, 'BUILD_TIME', Built},
|
||||||
{d, 'VCS_INFO', HgInfo}]) of
|
{d, 'VCS_INFO', VcsInfo}]) of
|
||||||
up_to_date ->
|
up_to_date ->
|
||||||
ok;
|
ok;
|
||||||
error ->
|
error ->
|
||||||
|
@ -86,3 +88,13 @@ load_files(Wildcard, Dir) ->
|
||||||
read_file(Filename, Dir) ->
|
read_file(Filename, Dir) ->
|
||||||
{ok, Bin} = file:read_file(filename:join(Dir, Filename)),
|
{ok, Bin} = file:read_file(filename:join(Dir, Filename)),
|
||||||
{Filename, Bin}.
|
{Filename, Bin}.
|
||||||
|
|
||||||
|
vcs_info([]) ->
|
||||||
|
"No VCS info available.";
|
||||||
|
vcs_info([{Id, Dir, Cmd} | Rest]) ->
|
||||||
|
case filelib:is_dir(Dir) of
|
||||||
|
true ->
|
||||||
|
lists:concat([Id, " ", string:strip(os:cmd(Cmd), both, $\n)]);
|
||||||
|
false ->
|
||||||
|
vcs_info(Rest)
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in a new issue