anchor.diff:          {error, Reason} ->
               {error, Reason}
       end.
  -
  +    
   
   receive_data_from_port() ->
       receive_data_from_port(<<>>).
  
positive.code:     make_packages(Packages, [], State).
  
  
  make_packages([], Accum, _State) ->
      {ok, Accum};
  make_packages([ #build_package{name=Name, branch=Branch}=Package|T ], Accum, #state{next_work_id=WorkId}=State) ->
      UnArchivePath = caterpillar_utils:filename_join([State#state.repository_root, Name, Branch]),
      ControlFile = caterpillar_utils:filename_join(UnArchivePath, "control"),
  
negative.code:     make_packages(T, [ NewPackage|Accum ], State).
  
  
  make(#build_package{name=Name, branch=Branch}=Package, Cmd, UnArchivePath, DistDir, #state{deploy_root=DeployRoot}) ->
      Format= fun(Template, Args) -> lists:flatten(io_lib:format(Template, Args)) end,
      Env = [
          {"PATH_MK=", "../../devel-tools/trunk/Makefile.mk"},
          {"PATH_PY_MK", "../../smprc.setup/trunk/Makefile.mk"},
          {"PATH_MOD", Format("../../*/~s", [Branch])},
          {"BRANCH", Format("~s", [Branch])},
          {"DIST_DIR", "dist"}
      ],
      P = open_port({spawn, Cmd}, [binary, use_stdio, stderr_to_stdout, exit_status, {cd, UnArchivePath}, {env, Env}]),
      case receive_data_from_port() of
          {ok, 0, _Log} ->
              error_logger:info_msg("succeed ~p at ~s/~s~n", [Cmd, Name, Branch]),
              case filelib:wildcard(caterpillar_utils:filename_join(DistDir, "*.deb")) of
                  [Deb] ->
                      DebName = lists:last(filename:split(Deb)),
  