@ -49,7 +49,6 @@
update_code / 1 ,
update_code / 1 ,
update_code / 2 ,
update_code / 2 ,
remove_from_code_path / 1 ,
remove_from_code_path / 1 ,
remove_from_code_path / 2 ,
cleanup_code_path / 1 ,
cleanup_code_path / 1 ,
args_to_tasks / 1 ,
args_to_tasks / 1 ,
expand_env_variable / 3 ,
expand_env_variable / 3 ,
@ -754,9 +753,6 @@ update_code(Paths, Opts) ->
end , Paths ) .
end , Paths ) .
remove_from_code_path ( Paths ) - >
remove_from_code_path ( Paths ) - >
remove_from_code_path ( Paths , purge ) .
remove_from_code_path ( Paths , Type ) when Type == purge ; Type == soft_purge - >
lists : foreach ( fun ( Path ) - >
lists : foreach ( fun ( Path ) - >
Name = filename : basename ( Path , " /ebin " ) ,
Name = filename : basename ( Path , " /ebin " ) ,
App = list_to_atom ( Name ) ,
App = list_to_atom ( Name ) ,
@ -767,7 +763,13 @@ remove_from_code_path(Paths, Type) when Type == purge; Type == soft_purge ->
ok ;
ok ;
{ ok , Modules } - >
{ ok , Modules } - >
application : unload ( App ) ,
application : unload ( App ) ,
[ begin code : Type ( M ) , code : delete ( M ) end | | M < - Modules ]
[ case erlang : check_process_code ( self ( ) , M ) of
false - >
code : purge ( M ) , code : delete ( M ) ;
_ - >
? DEBUG ( " ~p can't purge ~p safely, doing a soft purge " , [ self ( ) , M ] ) ,
code : soft_purge ( M ) andalso code : delete ( M )
end | | M < - Modules ]
end ,
end ,
code : del_path ( Path )
code : del_path ( Path )
end , lists : usort ( Paths ) ) .
end , lists : usort ( Paths ) ) .