diff --git a/rebar.config.script b/rebar.config.script new file mode 100644 index 0000000..7e98f6d --- /dev/null +++ b/rebar.config.script @@ -0,0 +1,16 @@ +%% -*- mode:erlang; erlang-indent-level:4; indent-tabs-mode:nil -*- +case os:getenv("AE_DISABLE_CUCKOO") =/= false of + true -> + RemoveApps = [aecuckoo, aecuckooprebuilt], + RemovePlugins = [rebar_aecuckooprebuilt_dep], + {_, Deps} = lists:keyfind(deps, 1, CONFIG), + NewDeps = [D || D <- Deps, + not lists:member(element(1,D), RemoveApps)], + Plugins = proplists:get_value(plugins, CONFIG, []), + CONFIG1 = lists:keyreplace(deps, 1, CONFIG, {deps, NewDeps}), + Plugins1 = [P || P <- Plugins, + not lists:member(element(1,P), RemovePlugins)], + lists:keystore(plugins, 1, CONFIG1, {plugins, Plugins1}); + false -> + CONFIG +end. diff --git a/rebar.lock.script b/rebar.lock.script new file mode 100644 index 0000000..534e836 --- /dev/null +++ b/rebar.lock.script @@ -0,0 +1,29 @@ +%% -*- erlang -*- + +FilterCheck = (os:getenv("AE_DISABLE_CUCKOO") =/= false), +RemoveApps = [<<"aecuckoo">>, <<"aecuckooprebuilt">>], + +Filter = fun(Apps) -> + case FilterCheck of + false -> + Apps; + true -> + lists:foldl( + fun(App, Acc) -> + lists:keydelete(App, 1, Acc) + end, + Apps, + RemoveApps + ) + end + end, + +case CONFIG of + [] -> + %% no lock file present, usually during unlock/upgrade + CONFIG; + [{Version, Deps}, [{pkg_hash, Pkgs}]] -> + Deps1 = Filter(Deps), + Pkgs1 = Filter(Pkgs), + [{Version, Deps1}, [{pkg_hash, Pkgs1}]] +end. diff --git a/src/aeminer.app.src.script b/src/aeminer.app.src.script new file mode 100644 index 0000000..a4b3ce7 --- /dev/null +++ b/src/aeminer.app.src.script @@ -0,0 +1,18 @@ +%% -*- mode:erlang; erlang-indent-level:4; indent-tabs-mode:nil -*- + +RemoveApps = [aecuckoo, aecuckooprebuilt]. +Base = filename:basename(SCRIPT, ".script"). +Dir = filename:dirname(SCRIPT). +{ok, [{application,_,Opts} = App]} = file:consult(filename:join(Dir, Base)). +case os:getenv("AE_DISABLE_CUCKOO") =/= false of + true -> + {_, Apps} = lists:keyfind(applications, 1, Opts), + Env = proplists:get_value(env, Opts, []), + Env1 = lists:keystore(use_cuckoo, 1, Env, {use_cuckoo, false}), + Apps1 = Apps -- RemoveApps, + Opts1 = lists:keyreplace(applications, 1, Opts, {applications, Apps1}), + Opts2 = lists:keystore(env, 1, Opts1, {env, Env1}), + setelement(3, App, Opts2); + false -> + App +end.