anchor.diff:  	    {error, {Name, Vsn, SysVsn}}
       end.
   	    
  -
  -    
  -    
  -
  -    
  +verify_erts([], _Paths, Acc) ->
  +    ?CONSOLE("ERTS ~p~n",[Acc]),
  +    ok;
  +verify_erts([T|Types],  Paths, Acc) ->
  +    {release, [{path,RelPath},{vsn,RelVsn}]} = erts_vsn(release,Paths),
  +    case erts_vsn(T,Paths) of
  +	{T,[{path,_},{vsn,RelVsn}]} = Tf->
  +	    %% T erts-VSN == RelVsn so all is good... continue
  +	    verify_erts(Types,Paths,[Tf|Acc]);
  +	undefined ->
  +	    %% this can be two reasons.
  +	    %% 1. there is no global erlang... that is fine
  +	    %% 2. there is no embed install yet... that is fine.
  +	    verify_erts(Types,Paths,[{T,undefined}|Acc]);
  +	{T, [{path,RelPath},{vsn,_}]} ->
  +	    %% wtf? how did this happen?
  +	    ?ABORT("the erl you are using is in the temporary release, how the hell did you do that?~n",[]);
  +	{T,[{path,_},{vsn,TVsn}]} ->
  +	    %% they are different erts! die
  +	    ?ABORT("~p erts-~s is different than release erts-~s~n",[T,TVsn,RelVsn])
  +    end.
  +	    
  +    
  +   
  +    
  +    
  +    
  +
  +    
  +erts_vsn(global,_Paths) ->
  +    {global,[{path,code:lib_dir()},{vsn,erlang:system_info(version)}]};
  +erts_vsn(Type,Paths) ->
  +    Path = case proplists:get_value(Type,Paths) of
  +	       undefined -> ?ABORT("~p path does not exist!?~n",[Type]);
  +	       P -> filename:join([P,"lib"])
  +	   end,
  +    case filelib:wildcard("erts-*",Path) of
  +	[] -> undefined;
  +	Erts ->
  +	    Vsn = lists:last(string:tokens(hd(Erts),"-")),
  +	    {Type, [{path, Path},{vsn,Vsn}]}
  +    end.
  +
  +
  +app_vsn_info(Path, App)  when is_atom(App) ->
  +    app_vsn_info(Path,atom_to_list(App));
  +app_vsn_info(Path, App)  ->
  +    case filelib:wildcard(filename:join([Path,"lib",App++"-*"])) of
  +	[] -> undefined;
  +	AppVsn ->
  +	    lists:last(string:tokens(hd(AppVsn),"-"))
  +    end.
  +	    
  +	    
  +	    
  +	    
  
positive.code:     {ok, TmpDir}.
  
  
  get_sys_info([{sys,AppSys},{dep,AppDep},{app,AppApp},{erts,ErtsVsn}]) ->
      ToCheck = AppSys++AppDep++AppApp,
      AtomToVer = fun({A,_V}) ->
  			case code:lib_dir(A) of
  			    {error, bad_name} -> error;
  			    Path ->
  				DirPart = lists:last(filename:split(Path)),
  				[_Name,Vsn] = string:tokens(DirPart,"-"),
  				{A,Vsn}
  			end
  		end,
      SysSys = lists:map(AtomToVer,ToCheck),
  
negative.code:      {erts,[{erts,RelErts}]}].
  
  
  verify([], _App, _Sys) -> ok;
  verify([Type|Types], App, Sys) ->
      case proplists:get_value(Type,App) of
  	undefined ->
  