Kaynağa Gözat

Merge pull request #2315 from tsloughter/fix-plugins-upgrade

prv_plugins_upgrade: fix compilation of upgraded plugins
pull/2312/head
Tristan Sloughter 4 yıl önce
işlemeyi yapan: GitHub
ebeveyn
işleme
4b7e364f53
Veri tabanında bu imza için bilinen anahtar bulunamadı GPG Anahtar Kimliği: 4AEE18F83AFDEB23
3 değiştirilmiş dosya ile 12 ekleme ve 12 silme
  1. +1
    -1
      src/rebar_prv_compile.erl
  2. +5
    -9
      src/rebar_prv_plugins_upgrade.erl
  3. +6
    -2
      test/rebar_plugins_SUITE.erl

+ 1
- 1
src/rebar_prv_compile.erl Dosyayı Görüntüle

@ -6,7 +6,7 @@
do/1,
format_error/1]).
-export([compile/2, compile/3]).
-export([compile/2, compile/3, compile/4]).
-include_lib("providers/include/providers.hrl").
-include("rebar.hrl").

+ 5
- 9
src/rebar_prv_plugins_upgrade.erl Dosyayı Görüntüle

@ -62,7 +62,7 @@ upgrade(Plugin, State) ->
?PRV_ERROR({not_found, Plugin});
{ok, P, Profile} ->
State1 = rebar_state:set(State, deps_dir, ?DEFAULT_PLUGINS_DIR),
{Apps, _State2} = rebar_prv_install_deps:handle_deps_as_profile(Profile, State1, [P], true),
{Apps, State2} = rebar_prv_install_deps:handle_deps_as_profile(Profile, State1, [P], true),
{no_cycle, Sorted} = rebar_prv_install_deps:find_cycles(Apps),
ToBuild = rebar_prv_install_deps:cull_compile(Sorted, []),
@ -72,7 +72,8 @@ upgrade(Plugin, State) ->
code:add_pathsa(CodePaths),
%% Build plugin and its deps
[build_plugin(AppInfo, Apps, State) || AppInfo <- ToBuild],
_ = build_plugin(ToBuild, State2),
{ok, State}
end.
@ -88,11 +89,6 @@ find_plugin(Plugin, Profiles, State) ->
end
end, Profiles).
build_plugin(AppInfo, Apps, State) ->
build_plugin(ToBuild, State) ->
Providers = rebar_state:providers(State),
Resources = rebar_state:resources(State),
AppDir = rebar_app_info:dir(AppInfo),
C = rebar_config:consult(AppDir),
S = rebar_state:new(rebar_state:all_deps(rebar_state:new(), Apps), C, AppDir),
AppInfo1 = rebar_app_info:update_opts(AppInfo, rebar_app_info:opts(AppInfo), C),
rebar_prv_compile:compile(rebar_state:set_resources(S, Resources), Providers, AppInfo1).
rebar_prv_compile:compile(State, Providers, ToBuild, plugins).

+ 6
- 2
test/rebar_plugins_SUITE.erl Dosyayı Görüntüle

@ -191,13 +191,17 @@ upgrade(Config) ->
{{iolist_to_binary(PkgName), <<"0.1.1">>}, []}]}
]),
%% beam file to verify plugin is acutally compiled
PluginBeam = filename:join([AppDir, "_build", "default", "plugins",
PkgName, "ebin", [PkgName, ".beam"]]),
RConfFile = rebar_test_utils:create_config(AppDir, [{plugins, [list_to_atom(PkgName)]}]),
{ok, RConf} = file:consult(RConfFile),
%% Build with deps.
rebar_test_utils:run_and_check(
Config, RConf, ["compile"],
{ok, [{app, Name}, {plugin, PkgName, <<"0.1.1">>}]}
{ok, [{app, Name, valid}, {file, PluginBeam}, {plugin, PkgName, <<"0.1.1">>}]}
),
catch mock_pkg_resource:unmock(),
@ -212,7 +216,7 @@ upgrade(Config) ->
%% Build with deps.
rebar_test_utils:run_and_check(
Config, RConf, ["plugins", "upgrade", PkgName],
{ok, [{app, Name}, {plugin, PkgName, <<"0.1.3">>}]}
{ok, [{app, Name, valid}, {file, PluginBeam}, {plugin, PkgName, <<"0.1.3">>}]}
).
upgrade_project_plugin(Config) ->

Yükleniyor…
İptal
Kaydet