From 8f2670540b6cef76726224801a696cfbed4f3738 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 18 Sep 2012 17:29:26 -0700 Subject: add depsolver directly to the system This is sub-optimal but I suspect rcl_depsolver is going to migrate away from depsolver in any case. --- rebar.config | 11 +- src/rcl_app_info.erl | 2 +- src/rcl_cmd_args.erl | 6 +- src/rcl_depsolver.erl | 714 ++++++++++++++++ src/rcl_depsolver_culprit.erl | 359 ++++++++ src/rcl_goal_utils.erl | 4 +- src/rcl_prv_release.erl | 12 +- src/rcl_release.erl | 22 +- src/rcl_state.erl | 6 +- test/data/data.txt | 53 ++ test/data/data1.txt | 78 ++ test/data/data2.txt | 87 ++ test/data/data3.txt | 87 ++ test/data/data4.txt | 87 ++ test/data/data5.txt | 87 ++ test/data/data6.txt | 90 ++ .../log-07be9e47-6f42-4a5d-b8b5-1d2eae1ad83b.txt | 122 +++ .../log-183998c1-2ada-4214-b308-e480345c42f2.txt | 946 +++++++++++++++++++++ .../log-311a15e7-3378-4c5b-beb7-86a1b9cf0ea9.txt | 620 ++++++++++++++ .../log-382cfe5b-0ac2-48b8-83d1-717cb4620990.txt | 78 ++ ...og-d3564ef6-6437-41e7-90b6-dbdb849551a6_mod.txt | 937 ++++++++++++++++++++ .../log-ea2d264b-003e-4611-94ed-14efc7732083.txt | 74 ++ test/rcl_depsolver_tester.erl | 474 +++++++++++ test/rcl_depsolver_tests.erl | 495 +++++++++++ 24 files changed, 5421 insertions(+), 30 deletions(-) create mode 100644 src/rcl_depsolver.erl create mode 100644 src/rcl_depsolver_culprit.erl create mode 100644 test/data/data.txt create mode 100644 test/data/data1.txt create mode 100644 test/data/data2.txt create mode 100644 test/data/data3.txt create mode 100644 test/data/data4.txt create mode 100644 test/data/data5.txt create mode 100644 test/data/data6.txt create mode 100644 test/data/log-07be9e47-6f42-4a5d-b8b5-1d2eae1ad83b.txt create mode 100644 test/data/log-183998c1-2ada-4214-b308-e480345c42f2.txt create mode 100644 test/data/log-311a15e7-3378-4c5b-beb7-86a1b9cf0ea9.txt create mode 100644 test/data/log-382cfe5b-0ac2-48b8-83d1-717cb4620990.txt create mode 100644 test/data/log-d3564ef6-6437-41e7-90b6-dbdb849551a6_mod.txt create mode 100644 test/data/log-ea2d264b-003e-4611-94ed-14efc7732083.txt create mode 100644 test/rcl_depsolver_tester.erl create mode 100644 test/rcl_depsolver_tests.erl diff --git a/rebar.config b/rebar.config index 2601902..b64dd08 100644 --- a/rebar.config +++ b/rebar.config @@ -2,15 +2,14 @@ {deps, [{neotoma, "", {git, "https://github.com/ericbmerritt/neotoma.git", {tag, "1.5.1"}}}, - {erlware_commons, "", - {git, "https://github.com/ericbmerritt/erlware_commons.git", {tag, "v0.8.0"}}}, + {erlware_commons, ".*", + {git, "https://github.com/ericbmerritt/erlware_commons.git", + {branch, "semver-format"}}}, {getopt, "", - {git, "https://github.com/jcomellas/getopt.git", {tag, "v0.5.1"}}}, - {depsolver, "", - {git, "https://github.com/ericbmerritt/depsolver.git", {tag, "v0.1.0"}}}]}. + {git, "https://github.com/jcomellas/getopt.git", {tag, "v0.5.1"}}}]}. {escript_incl_apps, - [getopt, depsolver, erlware_commons]}. + [getopt, erlware_commons]}. {first_files, [rcl_provider]}. diff --git a/src/rcl_app_info.erl b/src/rcl_app_info.erl index db32a8f..d0192e6 100644 --- a/src/rcl_app_info.erl +++ b/src/rcl_app_info.erl @@ -157,7 +157,7 @@ format(AppInfo) -> -spec format(non_neg_integer(), t()) -> iolist(). format(Indent, #app_info_t{name=Name, vsn=Vsn, dir=Dir, active_deps=Deps, library_deps=LibDeps}) -> - [rcl_util:indent(Indent), erlang:atom_to_list(Name), "-", depsolver:format_version(Vsn), + [rcl_util:indent(Indent), erlang:atom_to_list(Name), "-", ec_semver:format(Vsn), ": ", Dir, "\n", rcl_util:indent(Indent + 1), "Active Dependencies:\n", [[rcl_util:indent(Indent + 2), erlang:atom_to_list(Dep), ",\n"] || Dep <- Deps], diff --git a/src/rcl_cmd_args.erl b/src/rcl_cmd_args.erl index 201a7af..f12d216 100644 --- a/src/rcl_cmd_args.erl +++ b/src/rcl_cmd_args.erl @@ -127,11 +127,11 @@ create_goals(Opts, Acc) -> create_output_dir(Opts, [{goals, Specs} | Acc]) end. --spec convert_goals([string()], [depsolver:constraint()]) -> - {ok,[depsolver:constraint()]} | +-spec convert_goals([string()], [rcl_depsolver:constraint()]) -> + {ok,[rcl_depsolver:constraint()]} | relcool:error(). convert_goals([], Specs) -> - %% Reverse the specs because order matters to depsolver + %% Reverse the specs because order matters to rcl_depsolver {ok, lists:reverse(Specs)}; convert_goals([RawSpec | Rest], Acc) -> case rcl_goal:parse(RawSpec) of diff --git a/src/rcl_depsolver.erl b/src/rcl_depsolver.erl new file mode 100644 index 0000000..4d61d6c --- /dev/null +++ b/src/rcl_depsolver.erl @@ -0,0 +1,714 @@ +%% -*- erlang-indent-level: 4; indent-tabs-mode: nil; fill-column: 80 -*- +%% ex: ts=4 sx=4 et +%% +%% Copyright 2012 Opscode, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% @author Eric Merritt +%% +%%%------------------------------------------------------------------- +%%% @doc +%%% This is a dependency constraint solver. You add your 'world' to the +%%% solver. That is the packages that exist, their versions and their +%%% dependencies. Then give the system a set of targets and ask it to solve. +%%% +%%% Lets say our world looks as follows +%%% +%%% app1 that has versions "0.1" +%%% depends on app3 any version greater then "0.2" +%%% "0.2" with no dependencies +%%% "0.3" with no dependencies +%%% +%%% app2 that has versions "0.1" with no dependencies +%%% "0.2" that depends on app3 exactly "0.3" +%%% "0.3" with no dependencies +%%% +%%% app3 that has versions +%%% "0.1", "0.2" and "0.3" all with no dependencies +%%% +%%% we can add this world to the system all at once as follows +%%% +%%% Graph0 = rcl_depsolver:new_graph(), +%%% Graph1 = rcl_depsolver:add_packages( +%%% [{app1, [{"0.1", [{app2, "0.2"}, +%%% {app3, "0.2", '>='}]}, +%%% {"0.2", []}, +%%% {"0.3", []}]}, +%%% {app2, [{"0.1", []}, +%%% {"0.2",[{app3, "0.3"}]}, +%%% {"0.3", []}]}, +%%% {app3, [{"0.1", []}, +%%% {"0.2", []}, +%%% {"0.3", []}]}]). +%%% +%%% We can also build it up incrementally using the other add_package and +%%% add_package_version functions. +%%% +%%% Finally, once we have built up the graph we can ask rcl_depsolver to solve the +%%% dependency constraints. That is to give us a list of valid dependencies by +%%% using the solve function. Lets say we want the app3 version "0.3" and all of +%%% its resolved dependencies. We could call solve as follows. +%%% +%%% rcl_depsolver:solve(Graph1, [{app3, "0.3"}]). +%%% +%%% That will give us the completely resolved dependencies including app3 +%%% itself. Lets be a little more flexible. Lets ask for a graph that is rooted +%%% in anything greater then or equal to app3 "0.3". We could do that by +%%% +%%% rcl_depsolver:solve(Graph1, [{app3, "0.3", '>='}]). +%%% +%%% Of course, you can specify any number of goals at the top level. +%%% @end +%%%------------------------------------------------------------------- +-module(rcl_depsolver). + +%% Public Api +-export([format_error/1, + format_roots/1, + format_culprits/1, + format_constraint/1, + format_version/1, + new_graph/0, + solve/2, + add_packages/2, + add_package/3, + add_package_version/3, + add_package_version/4, + parse_version/1, + filter_packages/2]). + +%% Internally Exported API. This should *not* be used outside of the rcl_depsolver +%% application. You have been warned. +-export([dep_pkg/1, + filter_package/2, + primitive_solve/3]). + +-export_type([t/0, + pkg/0, + constraint_op/0, + pkg_name/0, + vsn/0, + constraint/0, + dependency_set/0]). + +-export_type([dep_graph/0, constraints/0, + ordered_constraints/0, fail_info/0, + fail_detail/0]). +%%============================================================================ +%% type +%%============================================================================ +-type dep_graph() :: gb_tree(). +-opaque t() :: {?MODULE, dep_graph()}. +-type pkg() :: {pkg_name(), vsn()}. +-type pkg_name() :: binary() | atom(). +-type raw_vsn() :: ec_semver:any_version(). + +-type vsn() :: 'NO_VSN' + | ec_semver:semver(). + +-type constraint_op() :: + '=' | gte | '>=' | lte | '<=' + | gt | '>' | lt | '<' | pes | '~>' | between. + +-type raw_constraint() :: pkg_name() + | {pkg_name(), raw_vsn()} + | {pkg_name(), raw_vsn(), constraint_op()} + | {pkg_name(), raw_vsn(), vsn(), between}. + +-type constraint() :: pkg_name() + | {pkg_name(), vsn()} + | {pkg_name(), vsn(), constraint_op()} + | {pkg_name(), vsn(), vsn(), between}. + + +-type vsn_constraint() :: {raw_vsn(), [raw_constraint()]}. +-type dependency_set() :: {pkg_name(), [vsn_constraint()]}. + +%% Internal Types +-type constraints() :: [constraint()]. +-type ordered_constraints() :: [{pkg_name(), constraints()}]. +-type fail_info() :: {[pkg()], ordered_constraints()}. +-type fail_detail() :: {fail, [fail_info()]}. +-type version_checker() :: fun((vsn()) -> fail_detail() | vsn()). + +%%============================================================================ +%% API +%%============================================================================ +%% @doc create a new empty dependency graph +-spec new_graph() -> t(). +new_graph() -> + {?MODULE, gb_trees:empty()}. + +%% @doc add a complete set of list of packages to the graph. Where the package +%% consists of the name and a list of versions and dependencies. +%% +%% ``` rcl_depsolver:add_packages(Graph, +%% [{app1, [{"0.1", [{app2, "0.2"}, +%% {app3, "0.2", '>='}]}, +%% {"0.2", []}, +%% {"0.3", []}]}, +%% {app2, [{"0.1", []}, +%% {"0.2",[{app3, "0.3"}]}, +%% {"0.3", []}]}, +%% {app3, [{"0.1", []}, +%% {"0.2", []}, +%% {"0.3", []}]}]) +%% ''' +-spec add_packages(t(),[dependency_set()]) -> t(). +add_packages(Dom0, Info) + when is_list(Info) -> + lists:foldl(fun({Pkg, VsnInfo}, Dom1) -> + add_package(Dom1, Pkg, VsnInfo) + end, Dom0, Info). + +%% @doc add a single package to the graph, where it consists of a package name +%% and its versions and thier dependencies. +%% ```rcl_depsolver:add_package(Graph, app1, [{"0.1", [{app2, "0.2"}, +%% {app3, "0.2", '>='}]}, +%% {"0.2", []}, +%% {"0.3", []}]}]). +%% ''' +-spec add_package(t(),pkg_name(),[vsn_constraint()]) -> t(). +add_package(State, Pkg, Versions) + when is_list(Versions) -> + lists:foldl(fun({Vsn, Constraints}, Dom1) -> + add_package_version(Dom1, Pkg, Vsn, Constraints); + (Version, Dom1) -> + add_package_version(Dom1, Pkg, Version, []) + end, State, Versions). + +%% @doc add a set of dependencies to a specific package and version. +%% and its versions and thier dependencies. +%% ```rcl_depsolver:add_package(Graph, app1, "0.1", [{app2, "0.2"}, +%% {app3, "0.2", '>='}]}, +%% {"0.2", []}, +%% {"0.3", []}]). +%% ''' +-spec add_package_version(t(), pkg_name(), raw_vsn(), [raw_constraint()]) -> t(). +add_package_version({?MODULE, Dom0}, RawPkg, RawVsn, RawPkgConstraints) -> + Pkg = fix_pkg(RawPkg), + Vsn = parse_version(RawVsn), + %% Incoming constraints are raw + %% and need to be fixed + PkgConstraints = [fix_con(PkgConstraint) || + PkgConstraint <- RawPkgConstraints], + Info2 = + case gb_trees:lookup(Pkg, Dom0) of + {value, Info0} -> + case lists:keytake(Vsn, 1, Info0) of + {value, {Vsn, Constraints}, Info1} -> + [{Vsn, join_constraints(Constraints, + PkgConstraints)} + | Info1]; + false -> + [{Vsn, PkgConstraints} | Info0] + end; + none -> + [{Vsn, PkgConstraints}] + end, + {?MODULE, gb_trees:enter(Pkg, Info2, Dom0)}. + +%% @doc add a package and version to the dependency graph with no dependency +%% constraints, dependency constraints can always be added after the fact. +%% +%% ```rcl_depsolver:add_package_version(Graph, app1, "0.1").''' +-spec add_package_version(t(),pkg_name(),raw_vsn()) -> t(). +add_package_version(State, Pkg, Vsn) -> + add_package_version(State, Pkg, Vsn, []). + +%% @doc Given a set of goals (in the form of constrains) find a set of packages +%% and versions that satisfy all constraints. If no solution can be found then +%% an exception is thrown. +%% ``` rcl_depsolver:solve(State, [{app1, "0.1", '>='}]).''' +-spec solve(t(),[constraint()]) -> {ok, [pkg()]} | {error, term()}. +solve({?MODULE, DepGraph0}, RawGoals) + when erlang:length(RawGoals) > 0 -> + Goals = [fix_con(Goal) || Goal <- RawGoals], + case trim_unreachable_packages(DepGraph0, Goals) of + Error = {error, _} -> + Error; + DepGraph1 -> + case primitive_solve(DepGraph1, Goals, no_path) of + {fail, _} -> + [FirstCons | Rest] = Goals, + {error, rcl_depsolver_culprit:search(DepGraph1, [FirstCons], Rest)}; + Solution -> + {ok, Solution} + end + end. + +%% Parse a string version into a tuple based version +-spec parse_version(raw_vsn() | vsn()) -> vsn(). +parse_version(RawVsn) + when erlang:is_list(RawVsn); + erlang:is_binary(RawVsn) -> + ec_semver:parse(RawVsn); +parse_version(Vsn) + when erlang:is_tuple(Vsn) -> + Vsn. + +%% @doc given a list of package name version pairs, and a list of constraints +%% return every member of that list that matches all constraints. +-spec filter_packages([{pkg_name(), raw_vsn()}], [raw_constraint()]) -> + {ok, [{pkg_name(), raw_vsn()}]} + | {error, Reason::term()}. +filter_packages(PVPairs, RawConstraints) -> + Constraints = [fix_con(Constraint) || Constraint <- RawConstraints], + case check_constraints(Constraints) of + ok -> + {ok, [PVPair || PVPair <- PVPairs, + filter_pvpair_by_constraint(fix_con(PVPair), Constraints)]}; + Error -> + Error + end. + +%% @doc Produce a full error message for a given error condition. This includes +%% details of the paths taken to resolve the dependencies and shows which dependencies +%% could not be satisfied +-spec format_error({error, {unreachable_package, list()} | + {invalid_constraints, [constraint()]} | + list()}) -> iolist(). +format_error(Error) -> + rcl_depsolver_culprit:format_error(Error). + +%% @doc Return a formatted list of roots of the dependency trees which +%% could not be satisified. These may also have versions attached. +%% Example: +%% +%% ```(foo = 1.2.0), bar``` +%% +-spec format_roots([constraints()]) -> iolist(). +format_roots(Roots) -> + rcl_depsolver_culprit:format_roots(Roots). + + +%% @doc Return a formatted list of the culprit depenedencies which led to +%% the dependencies not being satisfied. Example: +%% +%% ```(foo = 1.2.0) -> (bar > 2.0.0)``` +-spec format_culprits([{[constraint()], [constraint()]}]) -> iolist(). +format_culprits(Culprits) -> + rcl_depsolver_culprit:format_culprits(Culprits). + +%% @doc A formatted version tuple +-spec format_version(vsn()) -> iolist(). +format_version(Version) -> + rcl_depsolver_culprit:format_version(Version). + +%% @doc A formatted constraint tuple +-spec format_constraint(constraint()) -> iolist(). +format_constraint(Constraint) -> + rcl_depsolver_culprit:format_constraint(Constraint). + +%%==================================================================== +%% Internal Functions +%%==================================================================== +-spec check_constraints(constraints()) -> + ok | {error, {invalid_constraints, [term()]}}. +check_constraints(Constraints) -> + PossibleInvalids = + lists:foldl(fun(Constraint, InvalidConstraints) -> + case is_valid_constraint(Constraint) of + true -> + InvalidConstraints; + false -> + [Constraint | InvalidConstraints] + end + end, [], Constraints), + case PossibleInvalids of + [] -> + ok; + _ -> + {error, {invalid_constraints, PossibleInvalids}} + end. + + +-spec filter_pvpair_by_constraint({pkg_name(), vsn()}, [constraint()]) -> + boolean(). +filter_pvpair_by_constraint(PVPair, Constraints) -> + lists:all(fun(Constraint) -> + filter_package(PVPair, Constraint) + end, Constraints). + +-spec filter_package({pkg_name(), vsn()}, constraint()) -> + boolean(). +filter_package({PkgName, Vsn}, C = {PkgName, _}) -> + is_version_within_constraint(Vsn, C); +filter_package({PkgName, Vsn}, C = {PkgName, _, _}) -> + is_version_within_constraint(Vsn, C); +filter_package({PkgName, Vsn}, C = {PkgName, _, _, _}) -> + is_version_within_constraint(Vsn, C); +filter_package(_, _) -> + %% If its not explicitly excluded its included + true. + +%% @doc +%% fix the package name. If its a list turn it into a binary otherwise leave it as an atom +fix_pkg(Pkg) when is_list(Pkg) -> + erlang:list_to_binary(Pkg); +fix_pkg(Pkg) when is_binary(Pkg); is_atom(Pkg) -> + Pkg. + +%% @doc +%% fix package. Take a package with a possible invalid version and fix it. +-spec fix_con(raw_constraint()) -> constraint(). +fix_con({Pkg, Vsn}) -> + {fix_pkg(Pkg), parse_version(Vsn)}; +fix_con({Pkg, Vsn, CI}) -> + {fix_pkg(Pkg), parse_version(Vsn), CI}; +fix_con({Pkg, Vsn1, Vsn2, CI}) -> + {fix_pkg(Pkg), parse_version(Vsn1), + parse_version(Vsn2), CI}; +fix_con(Pkg) -> + fix_pkg(Pkg). + + +%% @doc given two lists of constraints join them in such a way that no +%% constraint is duplicated but the over all order of the constraints is +%% preserved. Order drives priority in this solver and is important for that +%% reason. +-spec join_constraints([constraint()], [constraint()]) -> + [constraint()]. +join_constraints(NewConstraints, ExistingConstraints) -> + ECSet = sets:from_list(ExistingConstraints), + FilteredNewConstraints = [NC || NC <- NewConstraints, + not sets:is_element(NC, ECSet)], + ExistingConstraints ++ FilteredNewConstraints. + + +%% @doc constraints is an associated list keeping track of all the constraints +%% that have been placed on a package +-spec new_constraints() -> constraints(). +new_constraints() -> + []. + +%% @doc Given a dep graph and a set of goals this either solves the problem or +%% fails. This is basically the root solver of the system, the main difference +%% from the exported solve/2 function is the fact that this does not do the +%% culprit search. +-spec primitive_solve(dep_graph(),[constraint()], term()) -> + [pkg()] | fail_detail(). +primitive_solve(State, PackageList, PathInd) + when erlang:length(PackageList) > 0 -> + Constraints = lists:foldl(fun(Info, Acc) -> + add_constraint('_GOAL_', 'NO_VSN', Acc, Info) + end, new_constraints(), PackageList), + + Pkgs = lists:map(fun dep_pkg/1, PackageList), + all_pkgs(State, [], Pkgs, Constraints, PathInd). + +%% @doc +%% given a Pkg | {Pkg, Vsn} | {Pkg, Vsn, Constraint} return Pkg +-spec dep_pkg(constraint()) -> pkg_name(). +dep_pkg({Pkg, _Vsn}) -> + Pkg; +dep_pkg({Pkg, _Vsn, _}) -> + Pkg; +dep_pkg({Pkg, _Vsn1, _Vsn2, _}) -> + Pkg; +dep_pkg(Pkg) when is_atom(Pkg) orelse is_binary(Pkg) -> + Pkg. + +-spec is_valid_constraint(constraint()) -> boolean(). +is_valid_constraint(Pkg) when is_atom(Pkg) orelse is_binary(Pkg) -> + true; +is_valid_constraint({_Pkg, Vsn}) when is_tuple(Vsn) -> + true; +is_valid_constraint({_Pkg, Vsn, '='}) when is_tuple(Vsn) -> + true; +is_valid_constraint({_Pkg, _LVsn, gte}) -> + true; +is_valid_constraint({_Pkg, _LVsn, '>='}) -> + true; +is_valid_constraint({_Pkg, _LVsn, lte}) -> + true; +is_valid_constraint({_Pkg, _LVsn, '<='}) -> + true; +is_valid_constraint({_Pkg, _LVsn, gt}) -> + true; +is_valid_constraint({_Pkg, _LVsn, '>'}) -> + true; +is_valid_constraint({_Pkg, _LVsn, lt}) -> + true; +is_valid_constraint({_Pkg, _LVsn, '<'}) -> + true; +is_valid_constraint({_Pkg, _LVsn, pes}) -> + true; +is_valid_constraint({_Pkg, _LVsn, '~>'}) -> + true; +is_valid_constraint({_Pkg, _LVsn1, _LVsn2, between}) -> + true; +is_valid_constraint(_InvalidConstraint) -> + false. + +-spec add_constraint(pkg_name(), vsn(), [constraint()],constraint()) -> ordered_constraints(). +add_constraint(SrcPkg, SrcVsn, PkgsConstraints, PkgConstraint) -> + case is_valid_constraint(PkgConstraint) of + true -> ok; + false -> erlang:throw({invalid_constraint, PkgConstraint}) + end, + PkgName = dep_pkg(PkgConstraint), + Constraints1 = + case lists:keysearch(PkgName, 1, PkgsConstraints) of + false -> + []; + {value, {PkgName, Constraints0}} -> + Constraints0 + end, + [{PkgName, [{PkgConstraint, {SrcPkg, SrcVsn}} | Constraints1]} | + lists:keydelete(PkgName, 1, PkgsConstraints)]. + +%% @doc +%% Extend the currently active constraints correctly for the given constraints. +-spec extend_constraints(pkg_name(), vsn(), constraints(),constraints()) -> [{pkg_name(), constraints()}]. +extend_constraints(SrcPkg, SrcVsn, ExistingConstraints0, NewConstraints) -> + lists:foldl(fun (Constraint, ExistingConstraints1) -> + add_constraint(SrcPkg, SrcVsn, ExistingConstraints1, Constraint) + end, + ExistingConstraints0, [{SrcPkg, SrcVsn} | NewConstraints]). + +-spec is_version_within_constraint(vsn(),constraint()) -> boolean(). +is_version_within_constraint(_Vsn, Pkg) when is_atom(Pkg) orelse is_binary(Pkg) -> + true; +is_version_within_constraint(Vsn, {_Pkg, NVsn}) -> + ec_semver:eql(Vsn, NVsn); +is_version_within_constraint(Vsn, {_Pkg, NVsn, '='}) -> + ec_semver:eql(Vsn, NVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, gte}) -> + ec_semver:gte(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, '>='}) -> + ec_semver:gte(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, lte}) -> + ec_semver:lte(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, '<='}) -> + ec_semver:lte(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, gt}) -> + ec_semver:gt(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, '>'}) -> + ec_semver:gt(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, lt}) -> + ec_semver:lt(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, '<'}) -> + ec_semver:lt(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, 'pes'}) -> + ec_semver:pes(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn, '~>'}) -> + ec_semver:pes(Vsn, LVsn); +is_version_within_constraint(Vsn, {_Pkg, LVsn1, LVsn2, between}) -> + ec_semver:between(LVsn1, LVsn2, Vsn); +is_version_within_constraint(_Vsn, _Pkg) -> + false. + +%% @doc +%% Get the currently active constraints that relate to the specified package +-spec get_constraints([{pkg_name(), constraints()}],pkg_name()) -> constraints(). +get_constraints(PkgsConstraints, PkgName) -> + case lists:keysearch(PkgName, 1, PkgsConstraints) of + false -> + []; + {value, {PkgName, Constraints}} -> + Constraints + end. + +%% @doc +%% Given a package name get the list of all versions available for that package. +-spec get_versions(dep_graph(),pkg_name()) -> [vsn()]. +get_versions(DepGraph, PkgName) -> + case gb_trees:lookup(PkgName, DepGraph) of + none -> + []; + {value, AllVsns} -> + [Vsn || {Vsn, _} <- AllVsns] + end. + +%% @doc +%% make sure a given name/vsn meets all current constraints +-spec valid_version(pkg_name(),vsn(),constraints()) -> boolean(). +valid_version(PkgName, Vsn, PkgConstraints) -> + lists:all(fun ({L, _ConstraintSrc}) -> + is_version_within_constraint(Vsn, L) + end, + get_constraints(PkgConstraints, PkgName)). + +%% @doc +%% Given a Package Name and a set of constraints get a list of package +%% versions that meet all constraints. +-spec constrained_package_versions(dep_graph(),pkg_name(),constraints()) -> + [vsn()]. +constrained_package_versions(State, PkgName, PkgConstraints) -> + Versions = get_versions(State, PkgName), + [Vsn || Vsn <- Versions, valid_version(PkgName, Vsn, PkgConstraints)]. + +%% Given a list of constraints filter said list such that only fail (for things +%% that do not match a package and pkg are returned. Since at the end only pkg() +%% we should have a pure list of packages. +-spec filter_package_constraints([constraint()]) -> fail | pkg(). +filter_package_constraints([]) -> + fail; +filter_package_constraints([PkgCon | PkgConstraints]) -> + case PkgCon of + {Pkg, _} when is_atom(Pkg); is_binary(Pkg) -> + filter_package_constraints(PkgConstraints); + {{_Pkg1, _Vsn} = PV, _} -> + PV; + {{_Pkg2, _Vsn, _R}, _} -> + filter_package_constraints(PkgConstraints); + {{_Pkg2, _Vsn1, _Vsn2, _R}, _} -> + filter_package_constraints(PkgConstraints) + end. + +%% @doc all_pkgs is one of the set of mutually recursive functions (all_pkgs and +%% pkgs) that serve to walk the solution space of dependency. +-spec all_pkgs(dep_graph(),[pkg()],[pkg_name()],[{pkg_name(), constraints()}], term()) -> + fail_detail() | [pkg()]. +all_pkgs(_State, Visited, [], Constraints, _PathInd) -> + PkgVsns = + [filter_package_constraints(PkgConstraints) + || {_, PkgConstraints} <- Constraints], + + %% PkgVsns should be a list of pkg() where all the constraints are correctly + %% met. If not we fail the solution. If so we return those pkg()s + case lists:all(fun({Pkg, Vsn}) -> + lists:all(fun({Constraint, _}) -> + is_version_within_constraint(Vsn, Constraint) + end, get_constraints(Constraints, Pkg)) + end, PkgVsns) of + true -> + PkgVsns; + false -> + {fail, [{Visited, Constraints}]} + end; +all_pkgs(State, Visited, [PkgName | PkgNames], Constraints, PathInd) + when is_atom(PkgName); is_binary(PkgName) -> + case lists:keymember(PkgName, 1, Visited) of + true -> + all_pkgs(State, Visited, PkgNames, Constraints, PathInd); + false -> + pkgs(State, Visited, PkgName, Constraints, PkgNames, PathInd) + end. + +%% @doc this is the key graph walker. Set of constraints it walks forward into +%% the solution space searching for a path that solves all dependencies. +-spec pkgs(dep_graph(),[pkg()], pkg_name(), [{pkg_name(), constraints()}], + [pkg_name()], term()) -> fail_detail() | [pkg()]. +pkgs(DepGraph, Visited, Pkg, Constraints, OtherPkgs, PathInd) -> + F = fun (Vsn) -> + Deps = get_dep_constraints(DepGraph, Pkg, Vsn), + UConstraints = extend_constraints(Pkg, Vsn, Constraints, Deps), + DepPkgs =[dep_pkg(Dep) || Dep <- Deps], + NewVisited = [{Pkg, Vsn} | Visited], + Res = all_pkgs(DepGraph, NewVisited, DepPkgs ++ OtherPkgs, UConstraints, PathInd), + Res + + end, + case constrained_package_versions(DepGraph, Pkg, Constraints) of + [] -> + {fail, [{Visited, Constraints}]}; + Res -> + lists_some(F, Res, PathInd) + end. + + +%% @doc This gathers the dependency constraints for a given package vsn from the +%% dependency graph. +-spec get_dep_constraints(dep_graph(), pkg_name(), vsn()) -> [constraint()]. +get_dep_constraints(DepGraph, PkgName, Vsn) -> + {Vsn, Constraints} = lists:keyfind(Vsn, 1, + gb_trees:get(PkgName, DepGraph)), + Constraints. + + +lists_some(F, Res, PathInd) -> + lists_some(F, Res, [], PathInd). + +-spec lists_some(version_checker(), [vsn()], term(), term()) -> vsn() | fail_detail(). +%% @doc lists_some is the root of the system the actual backtracing search that +%% makes the dep solver posible. It a takes a function that checks whether the +%% 'problem' has been solved and an fail indicator. As long as the evaluator +%% returns the fail indicator processing continues. If the evaluator returns +%% anything but the fail indicator that indicates success. +lists_some(_, [], FailPaths, _PathInd) -> + {fail, FailPaths}; +lists_some(F, [H | T], FailPaths, PathInd) -> + case F(H) of + {fail, FailPath} -> + case PathInd of + keep_paths -> + lists_some(F, T, [FailPath | FailPaths], PathInd); + _ -> + lists_some(F, T, [], PathInd) + end; + Res -> + Res + end. + +%% @doc given a graph and a set of top level goals return a graph that contains +%% only those top level packages and those packages that might be required by +%% those packages. +-spec trim_unreachable_packages(dep_graph(), [constraint()]) -> + dep_graph() | {error, term()}. +trim_unreachable_packages(State, Goals) -> + {_, NewState0} = new_graph(), + lists:foldl(fun(_Pkg, Error={error, _}) -> + Error; + (Pkg, NewState1) -> + PkgName = dep_pkg(Pkg), + find_reachable_packages(State, NewState1, PkgName) + end, NewState0, Goals). + +%% @doc given a list of versions and the constraints for that version rewrite +%% the new graph to reflect the requirements of those versions. +-spec rewrite_vsns(dep_graph(), dep_graph(), [{vsn(), [constraint()]}]) -> + dep_graph() | {error, term()}. +rewrite_vsns(ExistingGraph, NewGraph0, Info) -> + lists:foldl(fun(_, Error={error, _}) -> + Error; + ({_Vsn, Constraints}, NewGraph1) -> + lists:foldl(fun(_DepPkg, Error={error, _}) -> + Error; + (DepPkg, NewGraph2) -> + DepPkgName = dep_pkg(DepPkg), + find_reachable_packages(ExistingGraph, + NewGraph2, + DepPkgName) + end, NewGraph1, Constraints) + end, NewGraph0, Info). + +%% @doc Rewrite the existing dep graph removing anything that is not reachable +%% required by the goals or any of its potential dependencies. +-spec find_reachable_packages(dep_graph(), dep_graph(), pkg_name()) -> + dep_graph() | {error, term()}. +find_reachable_packages(_ExistingGraph, Error={error, _}, _PkgName) -> + Error; +find_reachable_packages(ExistingGraph, NewGraph0, PkgName) -> + case contains_package_version(NewGraph0, PkgName) of + true -> + NewGraph0; + false -> + case gb_trees:lookup(PkgName, ExistingGraph) of + {value, Info} -> + NewGraph1 = gb_trees:insert(PkgName, Info, NewGraph0), + rewrite_vsns(ExistingGraph, NewGraph1, Info); + none -> + {error, {unreachable_package, PkgName}} + end + end. + +%% @doc +%% Checks to see if a package name has been defined in the dependency graph +-spec contains_package_version(dep_graph(), pkg_name()) -> boolean(). +contains_package_version(Dom0, PkgName) -> + gb_trees:is_defined(PkgName, Dom0). diff --git a/src/rcl_depsolver_culprit.erl b/src/rcl_depsolver_culprit.erl new file mode 100644 index 0000000..f2115c7 --- /dev/null +++ b/src/rcl_depsolver_culprit.erl @@ -0,0 +1,359 @@ +%% -*- erlang-indent-level: 4; indent-tabs-mode: nil; fill-column: 80 -*- +%% ex: ts=4 sx=4 et +%% +%% @author Eric Merritt +%% +%% Copyright 2012 Opscode, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%%%------------------------------------------------------------------- +%%% @doc +%%% This app does the culprit search for a failed solve. It searches +%%% through the goals provided by the user trying to find the first one +%%% that fails. It then returns that as the culprit along with the +%%% unknown apps from the goal, the version constrained apps from the +%%% goal, and the good apps (those not immediately constrained from +%%% the goals). +%%% @end +-module(rcl_depsolver_culprit). + +-export([search/3, + format_error/1, + format_version/1, + format_constraint/1, + format_roots/1, + format_culprits/1]). + +%%============================================================================ +%% Types +%%============================================================================ + +%%============================================================================ +%% Internal API +%%============================================================================ +%% @doc start running the solver, with each run reduce the number of constraints +%% set as goals. At some point the solver should succeed. +-spec search(rcl_depsolver:dep_graph(), [rcl_depsolver:constraint()], [rcl_depsolver:constraint()]) + -> term(). +search(State, ActiveCons, []) -> + case rcl_depsolver:primitive_solve(State, ActiveCons, keep_paths) of + {fail, FailPaths} -> + extract_culprit_information0(ActiveCons, lists:flatten(FailPaths)); + _Success -> + %% This should *never* happen. 'Culprit' above represents the last + %% possible constraint that could cause things to fail. There for + %% this should have failed as well. + inconsistant_graph_state + end; +search(State, ActiveCons, [NewCon | Constraints]) -> + case rcl_depsolver:primitive_solve(State, ActiveCons, keep_paths) of + {fail, FailPaths} -> + extract_culprit_information0(ActiveCons, lists:flatten(FailPaths)); + _Success -> + %% Move one constraint from the inactive to the active + %% constraints and run again + search(State, [NewCon | ActiveCons], Constraints) + end. + +format_error({error, {unreachable_package, AppName}}) -> + ["Dependency ", format_constraint(AppName), " is specified as a dependency ", + "but is not reachable by the system.\n"]; +format_error({error, {invalid_constraints, Constraints}}) -> + ["Invalid constraint ", add_s(Constraints), " specified ", + lists:foldl(fun(Con, "") -> + [io_lib:format("~p", [Con])]; + (Con, Acc) -> + [io_lib:format("~p", [Con]), ", " | Acc] + end, "", Constraints)]; +format_error({error, Detail}) -> + format_error(Detail); +format_error(Details) when erlang:is_list(Details) -> + ["Unable to solve constraints, the following solutions were attempted \n\n", + [[format_error_path(" ", Detail)] || Detail <- Details]]. + +-spec format_roots([rcl_depsolver:constraints()]) -> iolist(). +format_roots(Roots) -> + lists:foldl(fun(Root, Acc0) -> + lists:foldl( + fun(Con, "") -> + [format_constraint(Con)]; + (Con, Acc1) -> + [format_constraint(Con), ", " | Acc1] + end, Acc0, Root) + end, [], Roots). + +-spec format_culprits([{[rcl_depsolver:constraint()], [rcl_depsolver:constraint()]}]) -> iolist(). +format_culprits(FailingDeps) -> + Deps = sets:to_list(sets:from_list(lists:flatten([[rcl_depsolver:dep_pkg(Con) || Con <- Cons] + || {_, Cons} <- FailingDeps]))), + lists:foldl(fun(Con, "") -> + [format_constraint(Con)]; + (Con, Acc1) -> + [format_constraint(Con), + ", " | Acc1] + end, [], Deps). + +-spec format_version(rcl_depsolver:vsn()) -> iolist(). +format_version(Vsn) -> + ec_semver:format(Vsn). + +-spec format_constraint(rcl_depsolver:constraint()) -> list(). +format_constraint(Pkg) when is_atom(Pkg) -> + erlang:atom_to_list(Pkg); +format_constraint(Pkg) when is_binary(Pkg) -> + erlang:binary_to_list(Pkg); +format_constraint({Pkg, Vsn}) when is_tuple(Vsn) -> + ["(", format_constraint(Pkg), " = ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, '='}) when is_tuple(Vsn) -> + ["(", format_constraint(Pkg), " = ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, gte}) -> + ["(", format_constraint(Pkg), " >= ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, '>='}) -> + ["(", format_constraint(Pkg), " >= ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, lte}) -> + ["(", format_constraint(Pkg), " <= ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, '<='}) -> + ["(", format_constraint(Pkg), " <= ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, gt}) -> + ["(", format_constraint(Pkg), " > ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, '>'}) -> + ["(", format_constraint(Pkg), " > ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, lt}) -> + ["(", format_constraint(Pkg), " < ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, '<'}) -> + ["(", format_constraint(Pkg), " < ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, pes}) -> + ["(", format_constraint(Pkg), " ~> ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn, '~>'}) -> + ["(", format_constraint(Pkg), " ~> ", + format_version(Vsn), ")"]; +format_constraint({Pkg, Vsn1, Vsn2, between}) -> + ["(", format_constraint(Pkg), " between ", + format_version(Vsn1), " and ", + format_version(Vsn2), ")"]. + + +%%============================================================================ +%% Internal Functions +%%============================================================================ +-spec append_value(term(), term(), proplists:proplist()) -> proplists:proplist(). +append_value(Key, Value, PropList) -> + case proplists:get_value(Key, PropList, undefined) of + undefined -> + [{Key, Value} | PropList]; + ExistingValue -> + [{Key, sets:to_list(sets:from_list([Value | ExistingValue]))} | + proplists:delete(Key, PropList)] + end. + +-spec strip_goal([[rcl_depsolver:pkg()] | rcl_depsolver:pkg()]) -> + [[rcl_depsolver:pkg()] | rcl_depsolver:pkg()]. +strip_goal([{'_GOAL_', 'NO_VSN'}, Children]) -> + Children; +strip_goal(All = [Val | _]) + when erlang:is_list(Val) -> + [strip_goal(Element) || Element <- All]; +strip_goal(Else) -> + Else. + +-spec extract_culprit_information0(rcl_depsolver:constraints(), + [rcl_depsolver:fail_info()]) -> + [term()]. +extract_culprit_information0(ActiveCons, FailInfo) + when is_list(FailInfo) -> + [extract_culprit_information1(ActiveCons, FI) || FI <- FailInfo]. + + +-spec extract_root(rcl_depsolver:constraints(), [rcl_depsolver:pkg()]) -> + {[rcl_depsolver:constraint()], [rcl_depsolver:pkg()]}. +extract_root(ActiveCons, TPath = [PRoot | _]) -> + RootName = rcl_depsolver:dep_pkg(PRoot), + Roots = lists:filter(fun(El) -> + RootName =:= rcl_depsolver:dep_pkg(El) + end, ActiveCons), + {Roots, TPath}. + +-spec extract_culprit_information1(rcl_depsolver:constraints(), + rcl_depsolver:fail_info()) -> + term(). +extract_culprit_information1(_ActiveCons, {[], RawConstraints}) -> + %% In this case where there was no realized versions, the GOAL + %% constraints actually where unsatisfiable + Constraints = lists:flatten([Constraints || + {_, Constraints} <- RawConstraints]), + + Cons = [Pkg || {Pkg, Src} <- Constraints, + Src =:= {'_GOAL_', 'NO_VSN'}], + {[{Cons, Cons}], []}; +extract_culprit_information1(ActiveCons, {Path, RawConstraints}) -> + Constraints = lists:flatten([Constraints || + {_, Constraints} <- RawConstraints]), + FailCons = + lists:foldl(fun(El = {FailedPkg, FailedVsn}, Acc1) -> + case get_constraints(FailedPkg, FailedVsn, Path, + Constraints) of + [] -> + Acc1; + Cons -> + append_value(El, Cons, Acc1) + end + end, [], lists:reverse(Path)), + TreedPath = strip_goal(treeize_path({'_GOAL_', 'NO_VSN'}, Constraints, [])), + RunListItems = [extract_root(ActiveCons, TPath) || TPath <- TreedPath], + {RunListItems, FailCons}. + +-spec follow_chain(rcl_depsolver:pkg_name(), rcl_depsolver:vsn(), + {rcl_depsolver:constraint(), rcl_depsolver:pkg()}) -> + false | {ok, rcl_depsolver:constraint()}. +follow_chain(Pkg, Vsn, {{Pkg, Vsn}, {Pkg, Vsn}}) -> + %% When the package version is the same as the source we dont want to try to follow it at all + false; +follow_chain(Pkg, Vsn, {Con, {Pkg, Vsn}}) -> + {ok, Con}; +follow_chain(_Pkg, _Vsn, _) -> + false. + +-spec find_chain(rcl_depsolver:pkg_name(), rcl_depsolver:vsn(), + [{rcl_depsolver:constraint(), rcl_depsolver:pkg()}]) -> + rcl_depsolver:constraints(). +find_chain(Pkg, Vsn, Constraints) -> + lists:foldl(fun(NCon, Acc) -> + case follow_chain(Pkg, Vsn, NCon) of + {ok, Con} -> + [Con | Acc]; + false -> + Acc + end + end, [], Constraints). + +-spec get_constraints(rcl_depsolver:pkg_name(), rcl_depsolver:vsn(), [rcl_depsolver:pkg()], + [{rcl_depsolver:constraint(), rcl_depsolver:pkg()}]) -> + rcl_depsolver:constraints(). +get_constraints(FailedPkg, FailedVsn, Path, Constraints) -> + Chain = find_chain(FailedPkg, FailedVsn, Constraints), + lists:filter(fun(Con) -> + PkgName = rcl_depsolver:dep_pkg(Con), + (lists:any(fun(PathEl) -> + not rcl_depsolver:filter_package(PathEl, Con) + end, Path) orelse + not lists:keymember(PkgName, 1, Path)) + end, Chain). + +-spec pkg_vsn(rcl_depsolver:constraint(), [{rcl_depsolver:constraint(), + rcl_depsolver:pkg()}]) -> + [rcl_depsolver:pkg()]. +pkg_vsn(PkgCon, Constraints) -> + PkgName = rcl_depsolver:dep_pkg(PkgCon), + [DepPkg || Con = {DepPkg, _} <- Constraints, + case Con of + {Pkg = {PkgName, PkgVsn}, {PkgName, PkgVsn}} -> + rcl_depsolver:filter_package(Pkg, PkgCon); + _ -> + false + end]. + +-spec depends(rcl_depsolver:pkg(), [{rcl_depsolver:constraint(), + rcl_depsolver:pkg()}], + [rcl_depsolver:pkg()]) -> + [rcl_depsolver:pkg()]. +depends(SrcPkg, Constraints, Seen) -> + lists:flatten([pkg_vsn(Pkg, Constraints) || {Pkg, Source} <- Constraints, + Source =:= SrcPkg andalso + Pkg =/= SrcPkg andalso + not lists:member(Pkg, Seen)]). + +-spec treeize_path(rcl_depsolver:pkg(), [{rcl_depsolver:constraint(), + rcl_depsolver:pkg()}], + [rcl_depsolver:pkg()]) -> + [rcl_depsolver:pkg() | [rcl_depsolver:pkg()]]. +treeize_path(Pkg, Constraints, Seen0) -> + Seen1 = [Pkg | Seen0], + case depends(Pkg, Constraints, Seen1) of + [] -> + [Pkg]; + Deps -> + [Pkg, [treeize_path(Dep, Constraints, Seen1) || + Dep <- Deps]] + + end. + +-spec add_s(list()) -> iolist(). +add_s(Roots) -> + case erlang:length(Roots) of + Len when Len > 1 -> + "s"; + _ -> + "" + end. + +-spec format_path(string(), [rcl_depsolver:pkg()]) -> iolist(). +format_path(CurrentIdent, Path) -> + [CurrentIdent, " ", + lists:foldl(fun(Con, "") -> + [format_constraint(Con)]; + (Con, Acc) -> + [format_constraint(Con), " -> " | Acc] + end, "", Path), + "\n"]. + +-spec format_dependency_paths(string(), [[rcl_depsolver:pkg()] | rcl_depsolver:pkg()], + [{rcl_depsolver:pkg(), [rcl_depsolver:constraint()]}], [rcl_depsolver:pkg()]) -> iolist(). +format_dependency_paths(CurrentIndent, [SubPath | Rest], FailingDeps, Acc) + when erlang:is_list(SubPath) -> + [format_dependency_paths(CurrentIndent, lists:sort(SubPath), FailingDeps, Acc), + format_dependency_paths(CurrentIndent, Rest, FailingDeps, Acc)]; +format_dependency_paths(CurrentIndent, [Dep], FailingDeps, Acc) + when erlang:is_tuple(Dep) -> + case proplists:get_value(Dep, FailingDeps, undefined) of + undefined -> + format_path(CurrentIndent, [Dep | Acc]); + Cons -> + [format_path(CurrentIndent, [Con, Dep | Acc]) || Con <- Cons] + end; +format_dependency_paths(CurrentIndent, [Dep | Rest], FailingDeps, Acc) + when erlang:is_tuple(Dep) -> + case proplists:get_value(Dep, FailingDeps, undefined) of + undefined -> + format_dependency_paths(CurrentIndent, Rest, FailingDeps, [Dep | Acc]); + Cons -> + [[format_path(CurrentIndent, [Con, Dep | Acc]) || Con <- Cons], + format_dependency_paths(CurrentIndent, Rest, FailingDeps, [Dep | Acc])] + end; +format_dependency_paths(CurrentIndent, [Con | Rest], FailingDeps, Acc) -> + format_dependency_paths(CurrentIndent, Rest, FailingDeps, [Con | Acc]); +format_dependency_paths(_CurrentIndent, [], _FailingDeps, _Acc) -> + []. + +-spec format_error_path(string(), {[{[rcl_depsolver:constraint()], [rcl_depsolver:pkg()]}], + [rcl_depsolver:constraint()]}) -> iolist(). +format_error_path(CurrentIndent, {RawPaths, FailingDeps}) -> + Roots = [RootSet || {RootSet, _} <- RawPaths], + Paths = [Path || {_, Path} <- RawPaths], + [CurrentIndent, "Unable to satisfy goal constraint", + add_s(Roots), " ", format_roots(Roots), " due to constraint", add_s(FailingDeps), " on ", + format_culprits(FailingDeps), "\n", + format_dependency_paths(CurrentIndent, lists:sort(Paths), FailingDeps, []), ""]. diff --git a/src/rcl_goal_utils.erl b/src/rcl_goal_utils.erl index 213a87d..3627b9c 100644 --- a/src/rcl_goal_utils.erl +++ b/src/rcl_goal_utils.erl @@ -32,7 +32,7 @@ %%============================================================================ %% API %%============================================================================ --spec to_op(iolist()) -> depsolver:constraint_op(). +-spec to_op(iolist()) -> rcl_depsolver:constraint_op(). to_op(List) when erlang:is_list(List) -> to_op(erlang:iolist_to_binary(List)); @@ -70,7 +70,7 @@ to_op(<<":between:">>) -> to_vsn(Version) when erlang:is_list(Version) -> to_vsn(erlang:iolist_to_binary(Version)); to_vsn(Vsn) -> - depsolver:parse_version(Vsn). + rcl_depsolver:parse_version(Vsn). %%%=================================================================== %%% Test Functions diff --git a/src/rcl_prv_release.erl b/src/rcl_prv_release.erl index 0d692da..0d2e1d7 100644 --- a/src/rcl_prv_release.erl +++ b/src/rcl_prv_release.erl @@ -63,28 +63,28 @@ format_error({release_not_found, {RelName, RelVsn}}) -> io_lib:format("No releases exist in the system for ~p:~s!", [RelName, RelVsn]); format_error({failed_solve, Error}) -> io_lib:format("Failed to solve release:\n ~s", - [depsolver:format_error({error, Error})]). + [rcl_depsolver:format_error({error, Error})]). %%%=================================================================== %%% Internal Functions %%%=================================================================== --spec create_dep_graph(rcl_state:t()) -> depsolver:t(). +-spec create_dep_graph(rcl_state:t()) -> rcl_depsolver:t(). create_dep_graph(State) -> Apps = rcl_state:available_apps(State), - Graph0 = depsolver:new_graph(), + Graph0 = rcl_depsolver:new_graph(), lists:foldl(fun(App, Graph1) -> AppName = rcl_app_info:name(App), AppVsn = rcl_app_info:vsn(App), Deps = rcl_app_info:active_deps(App) ++ rcl_app_info:library_deps(App), - depsolver:add_package_version(Graph1, + rcl_depsolver:add_package_version(Graph1, AppName, AppVsn, Deps) end, Graph0, Apps). --spec find_default_release(rcl_state:t(), depsolver:t()) -> +-spec find_default_release(rcl_state:t(), rcl_depsolver:t()) -> {ok, rcl_state:t()} | relcool:error(). find_default_release(State, DepGraph) -> case rcl_state:default_release(State) of @@ -151,7 +151,7 @@ solve_release(State0, DepGraph, RelName, RelVsn) -> try Release = rcl_state:get_release(State0, RelName, RelVsn), Goals = rcl_release:goals(Release), - case depsolver:solve(DepGraph, Goals) of + case rcl_depsolver:solve(DepGraph, Goals) of {ok, Pkgs} -> set_resolved(State0, Release, Pkgs); {error, Error} -> diff --git a/src/rcl_release.erl b/src/rcl_release.erl index c8e52fc..9dbb866 100644 --- a/src/rcl_release.erl +++ b/src/rcl_release.erl @@ -32,6 +32,7 @@ realize/3, applications/1, application_details/1, + realized/1, format/1, format/2, format_error/1]). @@ -50,7 +51,7 @@ -record(release_t, {name :: atom(), vsn :: ec_semver:any_version(), erts :: ec_semver:any_version(), - goals = [] :: [depsolver:constraint()], + goals = [] :: [rcl_depsolver:constraint()], realized = false :: boolean(), annotations = undefined :: annotations(), applications = [] :: [application_spec()], @@ -70,9 +71,9 @@ {app_name(), app_vsn(), app_type() | incl_apps()} | {app_name(), app_vsn(), app_type(), incl_apps()}. --type application_goal() :: depsolver:constraint() | - {depsolver:constraint(), app_type() | incl_apps()} | - {depsolver:constraint(), app_type(), incl_apps()}. +-type application_goal() :: rcl_depsolver:constraint() | + {rcl_depsolver:constraint(), app_type() | incl_apps()} | + {rcl_depsolver:constraint(), app_type(), incl_apps()}. -type annotations() :: ec_dictionary:dictionary(app_name(), {app_type(), incl_apps() | none}). @@ -137,6 +138,9 @@ applications(#release_t{applications=Apps}) -> application_details(#release_t{app_detail=App}) -> App. +-spec realized(t()) -> boolean(). +realized(#release_t{realized=Realized}) -> + Realized. -spec format(t()) -> iolist(). format(Release) -> @@ -161,11 +165,11 @@ format(Indent, #release_t{name=Name, vsn=Vsn, erts=ErtsVsn, realized=Realized, end]. -spec format_goal(application_goal()) -> iolist(). format_goal({Constraint, AppType}) -> - io_lib:format("~p", [{depsolver:format_constraint(Constraint), AppType}]); + io_lib:format("~p", [{rcl_depsolver:format_constraint(Constraint), AppType}]); format_goal({Constraint, AppType, AppInc}) -> - io_lib:format("~p", [{depsolver:format_constraint(Constraint), AppType, AppInc}]); + io_lib:format("~p", [{rcl_depsolver:format_constraint(Constraint), AppType, AppInc}]); format_goal(Constraint) -> - depsolver:format_constraint(Constraint). + rcl_depsolver:format_constraint(Constraint). -spec format_error(Reason::term()) -> iolist(). format_error({topo_error, E}) -> @@ -277,7 +281,7 @@ parse_goal0(Constraint0, {ok, Release = #release_t{goals=Goals}}) parse_goal0(_, E = {error, _}) -> E. --spec parse_goal1(t(), depsolver:constraint() | string(), +-spec parse_goal1(t(), rcl_depsolver:constraint() | string(), app_type() | incl_apps() | {app_type(), incl_apps() | none}) -> {ok, t()} | relcool:error(). parse_goal1(Release = #release_t{annotations=Annots, goals=Goals}, @@ -296,7 +300,7 @@ parse_goal1(Release = #release_t{annotations=Annots, goals=Goals}, end end. --spec get_app_name(depsolver:constraint()) -> +-spec get_app_name(rcl_depsolver:constraint()) -> AppName::atom() | relcool:error(). get_app_name(AppName) when erlang:is_atom(AppName) -> AppName; diff --git a/src/rcl_state.erl b/src/rcl_state.erl index 2dd0b14..7526c1c 100644 --- a/src/rcl_state.erl +++ b/src/rcl_state.erl @@ -57,7 +57,7 @@ output_dir :: file:name(), lib_dirs=[] :: [file:name()], config_files=[] :: [file:filename()], - goals=[] :: [depsolver:constraint()], + goals=[] :: [rcl_depsolver:constraint()], providers = [] :: [rcl_provider:t()], available_apps = [] :: [rcl_app_info:t()], default_release :: {rcl_release:name(), rcl_release:vsn()}, @@ -110,7 +110,7 @@ output_dir(#state_t{output_dir=OutDir}) -> lib_dirs(#state_t{lib_dirs=LibDir}) -> LibDir. --spec goals(t()) -> [depsolver:constraints()]. +-spec goals(t()) -> [rcl_depsolver:constraints()]. goals(#state_t{goals=TS}) -> TS. @@ -210,7 +210,7 @@ format(#state_t{log=LogState, output_dir=OutDir, lib_dirs=LibDirs, rcl_util:indent(Indent + 1), "config files: \n", [[rcl_util:indent(Indent + 2), ConfigFile, ",\n"] || ConfigFile <- ConfigFiles], rcl_util:indent(Indent + 1), "goals: \n", - [[rcl_util:indent(Indent + 2), depsolver:format_constraint(Goal), ",\n"] || Goal <- Goals], + [[rcl_util:indent(Indent + 2), rcl_depsolver:format_constraint(Goal), ",\n"] || Goal <- Goals], rcl_util:indent(Indent + 1), "output_dir: ", OutDir, "\n", rcl_util:indent(Indent + 1), "lib_dirs: \n", [[rcl_util:indent(Indent + 2), LibDir, ",\n"] || LibDir <- LibDirs], diff --git a/test/data/data.txt b/test/data/data.txt new file mode 100644 index 0000000..f9a5a3e --- /dev/null +++ b/test/data/data.txt @@ -0,0 +1,53 @@ +app17 app13=0.0.1 app6 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 diff --git a/test/data/data1.txt b/test/data/data1.txt new file mode 100644 index 0000000..e2fb8da --- /dev/null +++ b/test/data/data1.txt @@ -0,0 +1,78 @@ +app9 app13=0.0.1 app6 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg2 0.0.3 +dep_pkg2 0.0.4 +dep_pkg2 0.0.5 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg5 0.0.3 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg7 0.0.5 +dep_pkg7 0.1.2 + dep_pkg1 = 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg10 1.2.2 +dep_pkg10 1.3.2 +dep_pkg10 1.4.2 +dep_pkg10 1.6.2 +dep_pkg10 1.5.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +dep_pkg16 0.0.6 +dep_pkg16 1.0.2 +dep_pkg16 3.0.2 +dep_pkg18 0.0.2 +dep_pkg19 0.0.2 +dep_pkg20 0.0.2 +dep_pkg21 0.0.2 +dep_pkg22 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app4 0.0.3 +app4 0.0.5 +app4 0.0.6 +app4 0.0.7 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg2 >= 0.0.5 + dep_pkg1 = 0.0.2 + dep_pkg7 = 0.1.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 diff --git a/test/data/data2.txt b/test/data/data2.txt new file mode 100644 index 0000000..a9bc3d7 --- /dev/null +++ b/test/data/data2.txt @@ -0,0 +1,87 @@ +dep_pkg1 dep_pkg2 dep_pkg16=1.0.2 app9 app13=0.0.1 app6 app1 app4 app18 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg2 0.0.3 +dep_pkg2 0.0.4 +dep_pkg2 0.0.5 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg5 0.0.3 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg7 0.0.5 +dep_pkg7 0.1.2 + dep_pkg1 = 0.0.2 + dep_pkg2 >= 0.0.2 + dep_pkg5 >= 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg10 1.2.2 +dep_pkg10 1.3.2 +dep_pkg10 1.4.2 +dep_pkg10 1.6.2 +dep_pkg10 1.5.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +dep_pkg16 0.0.6 +dep_pkg16 1.0.2 +dep_pkg16 3.0.2 +dep_pkg18 0.0.2 +dep_pkg19 0.0.2 +dep_pkg20 0.0.2 +dep_pkg21 0.0.2 +dep_pkg22 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app4 0.0.3 +app4 0.0.5 +app4 0.0.6 +app4 0.0.7 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg2 >= 0.0.5 + dep_pkg1 = 0.0.2 + dep_pkg7 = 0.1.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 +app18 0.0.1 +app28 0.0.1 +app38 0.0.1 +app48 0.0.7 +app58 0.0.1 +app68 0.0.1 +app78 0.0.1 diff --git a/test/data/data3.txt b/test/data/data3.txt new file mode 100644 index 0000000..78d126a --- /dev/null +++ b/test/data/data3.txt @@ -0,0 +1,87 @@ +dep_pkg1 dep_pkg2 dep_pkg16=1.0.2 app9 app13=0.0.1 app6 app1 app4 app18 app28 app38 app48 app58 app68 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg2 0.0.3 +dep_pkg2 0.0.4 +dep_pkg2 0.0.5 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg5 0.0.3 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg7 0.0.5 +dep_pkg7 0.1.2 + dep_pkg1 = 0.0.2 + dep_pkg2 >= 0.0.2 + dep_pkg5 >= 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg10 1.2.2 +dep_pkg10 1.3.2 +dep_pkg10 1.4.2 +dep_pkg10 1.6.2 +dep_pkg10 1.5.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +dep_pkg16 0.0.6 +dep_pkg16 1.0.2 +dep_pkg16 3.0.2 +dep_pkg18 0.0.2 +dep_pkg19 0.0.2 +dep_pkg20 0.0.2 +dep_pkg21 0.0.2 +dep_pkg22 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app4 0.0.3 +app4 0.0.5 +app4 0.0.6 +app4 0.0.7 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg2 >= 0.0.5 + dep_pkg1 = 0.0.2 + dep_pkg7 = 0.1.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 +app18 0.0.1 +app28 0.0.1 +app38 0.0.1 +app48 0.0.7 +app58 0.0.1 +app68 0.0.1 +app78 0.0.1 diff --git a/test/data/data4.txt b/test/data/data4.txt new file mode 100644 index 0000000..ba72fec --- /dev/null +++ b/test/data/data4.txt @@ -0,0 +1,87 @@ +dep_pkg1 dep_pkg2 dep_pkg16=1.0.2 app9 app13=0.0.1 app6 app1 app4 app18 app28 app38 app48 app58 app68 app78 dep_pkg20 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg2 0.0.3 +dep_pkg2 0.0.4 +dep_pkg2 0.0.5 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg5 0.0.3 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg7 0.0.5 +dep_pkg7 0.1.2 + dep_pkg1 = 0.0.2 + dep_pkg2 >= 0.0.2 + dep_pkg5 >= 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg10 1.2.2 +dep_pkg10 1.3.2 +dep_pkg10 1.4.2 +dep_pkg10 1.6.2 +dep_pkg10 1.5.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +dep_pkg16 0.0.6 +dep_pkg16 1.0.2 +dep_pkg16 3.0.2 +dep_pkg18 0.0.2 +dep_pkg19 0.0.2 +dep_pkg20 0.0.2 +dep_pkg21 0.0.2 +dep_pkg22 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app4 0.0.3 +app4 0.0.5 +app4 0.0.6 +app4 0.0.7 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg2 >= 0.0.5 + dep_pkg1 = 0.0.2 + dep_pkg7 = 0.1.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 +app18 0.0.1 +app28 0.0.1 +app38 0.0.1 +app48 0.0.7 +app58 0.0.1 +app68 0.0.1 +app78 0.0.1 diff --git a/test/data/data5.txt b/test/data/data5.txt new file mode 100644 index 0000000..0977d63 --- /dev/null +++ b/test/data/data5.txt @@ -0,0 +1,87 @@ +dep_pkg1 dep_pkg2 dep_pkg16=1.0.2 app9 app13=0.0.1 app6 app1 app4 app18 app28 app38 app48 app58 app68 app78 dep_pkg20 dep_pkg22 dep_pkg14 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg2 0.0.3 +dep_pkg2 0.0.4 +dep_pkg2 0.0.5 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg5 0.0.3 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg7 0.0.5 +dep_pkg7 0.1.2 + dep_pkg1 = 0.0.2 + dep_pkg2 >= 0.0.2 + dep_pkg5 >= 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg10 1.2.2 +dep_pkg10 1.3.2 +dep_pkg10 1.4.2 +dep_pkg10 1.6.2 +dep_pkg10 1.5.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +dep_pkg16 0.0.6 +dep_pkg16 1.0.2 +dep_pkg16 3.0.2 +dep_pkg18 0.0.2 +dep_pkg19 0.0.2 +dep_pkg20 0.0.2 +dep_pkg21 0.0.2 +dep_pkg22 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app4 0.0.3 +app4 0.0.5 +app4 0.0.6 +app4 0.0.7 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg2 >= 0.0.5 + dep_pkg1 = 0.0.2 + dep_pkg7 = 0.1.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 +app18 0.0.1 +app28 0.0.1 +app38 0.0.1 +app48 0.0.7 +app58 0.0.1 +app68 0.0.1 +app78 0.0.1 diff --git a/test/data/data6.txt b/test/data/data6.txt new file mode 100644 index 0000000..af30d79 --- /dev/null +++ b/test/data/data6.txt @@ -0,0 +1,90 @@ +dep_pkg1 dep_pkg2 dep_pkg16=1.0.2 app9 app13=0.0.1 app6 app1 app4 app18 app28 app38 app48 app58 app68 app78 dep_pkg20 dep_pkg22 dep_pkg14 app88 app98 app108 +dep_pkg1 0.0.2 +dep_pkg2 0.0.2 +dep_pkg2 0.0.3 +dep_pkg2 0.0.4 +dep_pkg2 0.0.5 +dep_pkg3 0.0.2 +dep_pkg4 0.0.2 +dep_pkg5 0.0.2 +dep_pkg5 0.0.3 +dep_pkg6 0.0.2 +dep_pkg7 0.0.2 +dep_pkg7 0.0.5 +dep_pkg7 0.1.2 + dep_pkg1 = 0.0.2 + dep_pkg2 >= 0.0.2 + dep_pkg5 >= 0.0.2 +dep_pkg8 0.0.2 +dep_pkg9 0.0.2 +dep_pkg10 0.0.2 +dep_pkg10 1.2.2 +dep_pkg10 1.3.2 +dep_pkg10 1.4.2 +dep_pkg10 1.6.2 +dep_pkg10 1.5.2 +dep_pkg11 0.0.2 +dep_pkg12 0.0.2 +dep_pkg13 0.0.2 +dep_pkg14 0.0.2 +dep_pkg15 0.0.2 +dep_pkg16 0.0.2 +dep_pkg16 0.0.6 +dep_pkg16 1.0.2 +dep_pkg16 3.0.2 +dep_pkg18 0.0.2 +dep_pkg19 0.0.2 +dep_pkg20 0.0.2 +dep_pkg21 0.0.2 +dep_pkg22 0.0.2 +app1 0.0.1 +app2 0.0.1 +app3 0.0.1 +app4 0.0.1 +app4 0.0.3 +app4 0.0.5 +app4 0.0.6 +app4 0.0.7 +app5 0.0.1 +app6 0.0.1 +app7 0.0.1 +app8 0.0.1 +app9 0.0.1 + dep_pkg2 >= 0.0.5 + dep_pkg1 = 0.0.2 + dep_pkg7 = 0.1.2 +app10 0.0.1 +app11 0.0.1 + dep_pkg11 = 0.0.2 +app13 0.0.0 + dep_pkg12 = 0.0.2 + dep_pkg10 = 0.0.2 + dep_pkg1 = 0.0.2 + dep_pkg11 = 0.0.2 +app13 0.0.1 + dep_pkg13 = 0.0.2 +app14 0.0.1 +app15 0.0.1 +app16 0.0.1 +app17 0.0.1 + dep_pkg1 = 0.0.2 + dep_pkg2 = 0.0.2 + dep_pkg3 = 0.0.2 + dep_pkg5 = 0.0.2 + dep_pkg6 = 0.0.2 + dep_pkg7 = 0.0.2 + dep_pkg8 = 0.0.2 + dep_pkg9 = 0.0.2 + dep_pkg14 = 0.0.2 + dep_pkg15 = 0.0.2 + dep_pkg16 = 0.0.2 +app18 0.0.1 +app28 0.0.1 +app38 0.0.1 +app48 0.0.7 +app58 0.0.1 +app68 0.0.1 +app78 0.0.1 +app88 0.0.1 +app98 0.0.1 +app108 0.0.1 diff --git a/test/data/log-07be9e47-6f42-4a5d-b8b5-1d2eae1ad83b.txt b/test/data/log-07be9e47-6f42-4a5d-b8b5-1d2eae1ad83b.txt new file mode 100644 index 0000000..589dd15 --- /dev/null +++ b/test/data/log-07be9e47-6f42-4a5d-b8b5-1d2eae1ad83b.txt @@ -0,0 +1,122 @@ +Creating VersionProblem inst# 3471 with 27 packages, 1 stats, 1 debug +DepSelector inst# 3471 - Adding package id 0/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 1/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 2/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 1 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 3/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 4/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 5/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 6/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 7/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 8/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 8 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 9/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 10/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 11/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 12/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 13/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 14/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 15/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 16/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 17/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 16 @ 0 depPkg 17 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 18/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 19/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 19 @ 0 depPkg 17 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 20/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 19 @ 0 depPkg 20 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 21/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 21 @ 0 depPkg 20 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 22/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding package id 23/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 23 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 24/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 24 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 25/27: min = -1, max = 0, current version 0 +DepSelector inst# 3471 - Adding VC for 25 @ 0 depPkg 24 [ 0, 0 ] +DepSelector inst# 3471 - Adding VC for 25 @ 0 depPkg 17 [ 0, 0 ] +DepSelector inst# 3471 - Adding package id 26/27: min = 0, max = 0, current version 0 +DepSelector inst# 3471 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 3471 - Marking Package Required 0 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 0 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 3471 - Marking Package Required 0 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 0 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 3471 - Marking Package Required 0 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 0 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 1 weight 10 +DepSelector inst# 3471 - Marking Package Required 1 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 1 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 3471 - Marking Package Required 3 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 3 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 4 weight 10 +DepSelector inst# 3471 - Marking Package Required 4 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 4 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 5 weight 10 +DepSelector inst# 3471 - Marking Package Required 5 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 5 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 6 weight 10 +DepSelector inst# 3471 - Marking Package Required 6 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 6 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 7 weight 10 +DepSelector inst# 3471 - Marking Package Required 7 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 7 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 8 weight 10 +DepSelector inst# 3471 - Marking Package Required 8 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 8 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 8 weight 10 +DepSelector inst# 3471 - Marking Package Required 8 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 8 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 9 weight 10 +DepSelector inst# 3471 - Marking Package Required 9 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 9 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 10 weight 10 +DepSelector inst# 3471 - Marking Package Required 10 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 11 weight 10 +DepSelector inst# 3471 - Marking Package Required 11 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 11 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 12 weight 10 +DepSelector inst# 3471 - Marking Package Required 12 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 12 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 13 weight 10 +DepSelector inst# 3471 - Marking Package Required 13 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 13 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 14 weight 10 +DepSelector inst# 3471 - Marking Package Required 14 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 14 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 3471 - Marking Package Required 15 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 15 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 16 weight 10 +DepSelector inst# 3471 - Marking Package Required 16 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 18 weight 10 +DepSelector inst# 3471 - Marking Package Required 18 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 18 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 19 weight 10 +DepSelector inst# 3471 - Marking Package Required 19 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 19 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 21 weight 10 +DepSelector inst# 3471 - Marking Package Required 21 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 21 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 22 weight 10 +DepSelector inst# 3471 - Marking Package Required 22 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 22 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 23 weight 10 +DepSelector inst# 3471 - Marking Package Required 23 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 23 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 24 weight 10 +DepSelector inst# 3471 - Marking Package Required 24 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 24 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 24 weight 10 +DepSelector inst# 3471 - Marking Package Required 24 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 24 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 25 weight 10 +DepSelector inst# 3471 - Marking Package Required 25 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 25 [ 0, 0 ] +DepSelector inst# 3471 - Marking Package Preferred Latest 25 weight 10 +DepSelector inst# 3471 - Marking Package Required 25 +DepSelector inst# 3471 - Adding VC for 26 @ 0 depPkg 25 [ 0, 0 ] diff --git a/test/data/log-183998c1-2ada-4214-b308-e480345c42f2.txt b/test/data/log-183998c1-2ada-4214-b308-e480345c42f2.txt new file mode 100644 index 0000000..b90bb3d --- /dev/null +++ b/test/data/log-183998c1-2ada-4214-b308-e480345c42f2.txt @@ -0,0 +1,946 @@ +Creating VersionProblem inst# 4558 with 84 packages, 1 stats, 1 debug +DepSelector inst# 4558 - Adding package id 0/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding package id 1/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 0 @ 3 depPkg 1 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 2/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 0 @ 3 depPkg 2 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 0 @ 2 depPkg 1 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 0 @ 2 depPkg 2 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 0 @ 1 depPkg 1 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 0 @ 1 depPkg 2 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 0 @ 0 depPkg 1 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 0 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 3/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 4/84: min = -1, max = 5, current version 0 +DepSelector inst# 4558 - Adding package id 5/84: min = -1, max = 5, current version 0 +DepSelector inst# 4558 - Adding VC for 4 @ 5 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 6/84: min = -1, max = 5, current version 0 +DepSelector inst# 4558 - Adding VC for 4 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 4 @ 4 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 4 @ 3 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 4 @ 2 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 4 @ 1 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 4 @ 0 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 7/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding VC for 5 @ 5 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding package id 8/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 5 @ 5 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 5 @ 5 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 8/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 5 @ 4 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 5 @ 5 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 5 @ 5 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding package id 8/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 5 @ 5 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 5 @ 4 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 5 @ 4 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 5 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 5 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 5 @ 2 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 5 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 5 @ 1 depPkg 8 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 5 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding package id 10/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 11/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 12/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 13/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 14/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 15/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 16/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 17/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 18/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 19/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 20/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 21/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 22/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 23/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 24/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 25/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding package id 26/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 26 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 26 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 26 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 27/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding package id 28/84: min = -1, max = 5, current version 0 +DepSelector inst# 4558 - Adding package id 29/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 30/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 31/84: min = -1, max = 0, current version 0 + +DepSelector inst# 4558 - Adding VC for 30 @ 2 depPkg 31 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 32/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 33/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 34/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 33 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 35/84: min = -1, max = 24, current version 0 +DepSelector inst# 4558 - Adding package id 36/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 35 @ 24 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 24 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 23 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 23 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 22 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 22 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 21 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 21 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 20 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 20 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 19 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 19 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 18 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 17 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 17 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 16 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 16 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 16 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 16 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 15 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 15 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 14 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 14 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 13 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 13 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 12 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 12 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 11 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 11 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 10 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 10 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 9 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 9 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 8 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 8 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 7 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 7 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 6 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 6 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 5 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 4 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 3 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 2 depPkg 36 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 35 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 35 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 37/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 36 @ 0 depPkg 37 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 38/84: min = -1, max = 4, current version 0 +DepSelector inst# 4558 - Adding VC for 37 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 38 @ 4 depPkg 4 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 38 @ 3 depPkg 4 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 38 @ 2 depPkg 4 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 39/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding VC for 39 @ 3 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 39 @ 2 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 39 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 39 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 40/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 41/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding package id 42/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 42 @ 1 depPkg 10 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 42 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 43/84: min = -1, max = 7, current version 0 +DepSelector inst# 4558 - Adding package id 44/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 44 @ 1 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 44 @ 0 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 45/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 46/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding VC for 45 @ 1 depPkg 46 [ 0, 2 ] +DepSelector inst# 4558 - Adding package id 47/84: min = -1, max = 4, current version 0 +DepSelector inst# 4558 - Adding VC for 45 @ 1 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 45 @ 1 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 48/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 45 @ 1 depPkg 48 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 49/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 45 @ 1 depPkg 49 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 45 @ 0 depPkg 46 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 45 @ 0 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 45 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 45 @ 0 depPkg 48 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 45 @ 0 depPkg 49 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 46 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 46 @ 2 depPkg 5 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 46 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 46 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 46 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 50/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding VC for 48 @ 1 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding package id 51/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding VC for 48 @ 1 depPkg 51 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 48 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 48 @ 1 depPkg 49 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 48 @ 0 depPkg 51 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 48 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 48 @ 0 depPkg 49 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 52/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 51 @ 3 depPkg 52 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 51 @ 2 depPkg 52 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 51 @ 1 depPkg 52 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 51 @ 0 depPkg 52 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 53/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 53 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 54/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 54 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 54 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 55/84: min = -1, max = 4, current version 0 +DepSelector inst# 4558 - Adding VC for 55 @ 4 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 55 @ 4 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 55 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 55 @ 3 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 55 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 55 @ 2 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 55 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 55 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 55 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 55 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 56/84: min = -1, max = 3, current version 0 +DepSelector inst# 4558 - Adding VC for 56 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 56 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 56 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 56 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding package id 57/84: min = -1, max = 5, current version 0 +DepSelector inst# 4558 - Adding package id 58/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding package id 59/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding package id 60/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 61/84: min = -1, max = 6, current version 0 +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding package id 62/84: min = -1, max = 4, current version 0 +DepSelector inst# 4558 - Adding VC for 57 @ 5 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 57 @ 4 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 57 @ 3 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 57 @ 3 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 3 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 57 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 57 @ 3 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 57 @ 2 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 57 @ 2 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 2 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 57 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 57 @ 2 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 57 @ 1 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 57 @ 1 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 57 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 57 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 57 @ 1 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 63/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding VC for 58 @ 2 depPkg 63 [ 0, 2 ] +DepSelector inst# 4558 - Adding package id 64/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding VC for 58 @ 2 depPkg 64 [ 0, 2 ] +DepSelector inst# 4558 - Adding package id 65/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 58 @ 2 depPkg 65 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 58 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 58 @ 1 depPkg 63 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 58 @ 1 depPkg 64 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 58 @ 1 depPkg 65 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 58 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 58 @ 0 depPkg 63 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 58 @ 0 depPkg 64 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 58 @ 0 depPkg 65 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 58 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 63 @ 2 depPkg 65 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 63 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 63 @ 1 depPkg 65 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 63 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 63 @ 0 depPkg 65 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 63 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 66/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 60 @ 0 depPkg 66 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 62 @ 4 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 62 @ 4 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 62 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 62 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 62 @ 3 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 62 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 62 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 62 @ 2 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 62 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 62 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 62 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 62 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 62 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 62 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 62 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 67/84: min = -1, max = 7, current version 0 +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 67 @ 7 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 67 @ 6 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 67 @ 5 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 67 @ 4 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 67 @ 3 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 2 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 2 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 2 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 2 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 1 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 1 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 1 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 67 @ 0 depPkg 58 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 67 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 67 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 67 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 67 @ 0 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 68/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 69/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding package id 70/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding package id 71/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 70 @ 1 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 70 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 70 @ 0 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 70 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding package id 72/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 72 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding package id 73/84: min = -1, max = 11, current version 0 +DepSelector inst# 4558 - Adding VC for 73 @ 11 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 11 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 11 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 11 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 11 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 11 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 73 @ 10 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 10 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 10 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 10 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 10 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 10 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 73 @ 9 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 9 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 9 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 9 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 9 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 9 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 73 @ 8 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 8 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 8 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 8 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 8 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 8 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 73 @ 7 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 7 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 7 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 7 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 7 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 73 @ 6 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 6 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 6 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 6 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 5 depPkg 50 [ 0, 2 ] +DepSelector inst# 4558 - Adding VC for 73 @ 5 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 5 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 5 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 4 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 4 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 4 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 3 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 3 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 3 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 2 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 2 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 1 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 0 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 73 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 73 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 74/84: min = -1, max = 7, current version 0 +DepSelector inst# 4558 - Adding VC for 74 @ 7 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 75/84: min = -1, max = 32, current version 0 +DepSelector inst# 4558 - Adding VC for 74 @ 7 depPkg 75 [ 0, 32 ] +DepSelector inst# 4558 - Adding VC for 74 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 7 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 74 @ 6 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 74 @ 6 depPkg 75 [ 0, 32 ] +DepSelector inst# 4558 - Adding VC for 74 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 6 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 74 @ 5 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 74 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 5 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 74 @ 4 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 74 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 74 @ 3 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 74 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 2 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 74 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 1 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 74 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 74 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 76/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding package id 77/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 75 @ 32 depPkg 77 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 31 depPkg 77 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 30 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 29 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 28 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 27 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 26 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 25 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 24 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 23 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 22 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 21 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 20 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 19 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 18 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 17 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 16 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 15 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 14 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 13 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 12 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 11 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 75 @ 10 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 9 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 8 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 7 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 6 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 5 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 4 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 3 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 2 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 1 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 76 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 75 @ 0 depPkg 62 [ 0, 4 ] +DepSelector inst# 4558 - Adding VC for 77 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 4558 - Adding VC for 77 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 78/84: min = -1, max = 4, current version 0 +DepSelector inst# 4558 - Adding VC for 78 @ 4 depPkg 75 [ 0, 32 ] +DepSelector inst# 4558 - Adding VC for 78 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 78 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 78 @ 3 depPkg 75 [ 0, 32 ] +DepSelector inst# 4558 - Adding VC for 78 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 78 @ 3 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 78 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 78 @ 2 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 78 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 78 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 79/84: min = -1, max = 2, current version 0 +DepSelector inst# 4558 - Adding VC for 79 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 79 @ 2 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 79 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 79 @ 1 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 79 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding package id 80/84: min = -1, max = 1, current version 0 +DepSelector inst# 4558 - Adding VC for 80 @ 1 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 80 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 80 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 80 @ 1 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 80 @ 1 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding VC for 80 @ 0 depPkg 71 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 80 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 80 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Adding VC for 80 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 4558 - Adding VC for 80 @ 0 depPkg 61 [ 0, 6 ] +DepSelector inst# 4558 - Adding package id 81/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 81 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 82/84: min = -1, max = 0, current version 0 +DepSelector inst# 4558 - Adding VC for 82 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 4558 - Adding package id 83/84: min = 0, max = 0, current version 0 +DepSelector inst# 4558 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 4558 - Marking Package Required 0 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 0 [ 0, 3 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 4558 - Marking Package Required 3 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 3 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 4 weight 10 +DepSelector inst# 4558 - Marking Package Required 4 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 4 [ 0, 5 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 9 weight 10 +DepSelector inst# 4558 - Marking Package Required 9 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 9 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 10 weight 10 +DepSelector inst# 4558 - Marking Package Required 10 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 11 weight 10 +DepSelector inst# 4558 - Marking Package Required 11 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 11 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 12 weight 10 +DepSelector inst# 4558 - Marking Package Required 12 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 12 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 13 weight 10 +DepSelector inst# 4558 - Marking Package Required 13 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 13 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 14 weight 10 +DepSelector inst# 4558 - Marking Package Required 14 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 14 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 4558 - Marking Package Required 15 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 15 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 16 weight 10 +DepSelector inst# 4558 - Marking Package Required 16 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 17 weight 10 +DepSelector inst# 4558 - Marking Package Required 17 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 17 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 18 weight 10 +DepSelector inst# 4558 - Marking Package Required 18 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 18 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 19 weight 10 +DepSelector inst# 4558 - Marking Package Required 19 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 19 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 20 weight 10 +DepSelector inst# 4558 - Marking Package Required 20 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 20 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 21 weight 10 +DepSelector inst# 4558 - Marking Package Required 21 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 21 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 22 weight 10 +DepSelector inst# 4558 - Marking Package Required 22 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 22 weight 10 +DepSelector inst# 4558 - Marking Package Required 22 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 23 weight 10 +DepSelector inst# 4558 - Marking Package Required 23 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 23 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 24 weight 10 +DepSelector inst# 4558 - Marking Package Required 24 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 24 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 25 weight 10 +DepSelector inst# 4558 - Marking Package Required 25 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 25 [ 0, 3 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 26 weight 10 +DepSelector inst# 4558 - Marking Package Required 26 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 26 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 27 weight 10 +DepSelector inst# 4558 - Marking Package Required 27 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 27 [ 0, 3 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 28 weight 10 +DepSelector inst# 4558 - Marking Package Required 28 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 28 [ 0, 5 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 4558 - Marking Package Required 29 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 29 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 4558 - Marking Package Required 29 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 29 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 30 weight 10 +DepSelector inst# 4558 - Marking Package Required 30 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 30 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 4558 - Marking Package Required 32 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 33 weight 10 +DepSelector inst# 4558 - Marking Package Required 33 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 33 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 33 weight 10 +DepSelector inst# 4558 - Marking Package Required 33 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 33 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 35 weight 10 +DepSelector inst# 4558 - Marking Package Required 35 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 35 [ 0, 24 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 39 weight 10 +DepSelector inst# 4558 - Marking Package Required 39 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 39 [ 0, 3 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 40 weight 10 +DepSelector inst# 4558 - Marking Package Required 40 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 40 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 41 weight 10 +DepSelector inst# 4558 - Marking Package Required 41 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 41 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 41 weight 10 +DepSelector inst# 4558 - Marking Package Required 41 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 41 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 42 weight 10 +DepSelector inst# 4558 - Marking Package Required 42 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 42 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 43 weight 10 +DepSelector inst# 4558 - Marking Package Required 43 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 43 [ 0, 7 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 44 weight 10 +DepSelector inst# 4558 - Marking Package Required 44 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 44 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 45 weight 10 +DepSelector inst# 4558 - Marking Package Required 45 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 45 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 47 weight 10 +DepSelector inst# 4558 - Marking Package Required 47 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 47 [ 0, 4 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 53 weight 10 +DepSelector inst# 4558 - Marking Package Required 53 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 53 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 4558 - Marking Package Required 54 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 4558 - Marking Package Required 54 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 4558 - Marking Package Required 54 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 4558 - Marking Package Required 54 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 55 weight 10 +DepSelector inst# 4558 - Marking Package Required 55 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 55 [ 0, 4 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 56 weight 10 +DepSelector inst# 4558 - Marking Package Required 56 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 56 [ 0, 3 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 57 weight 10 +DepSelector inst# 4558 - Marking Package Required 57 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 57 [ 0, 5 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 57 weight 10 +DepSelector inst# 4558 - Marking Package Required 57 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 57 [ 0, 5 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 67 weight 10 +DepSelector inst# 4558 - Marking Package Required 67 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 67 [ 0, 7 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 68 weight 10 +DepSelector inst# 4558 - Marking Package Required 68 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 68 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 69 weight 10 +DepSelector inst# 4558 - Marking Package Required 69 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 69 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 69 weight 10 +DepSelector inst# 4558 - Marking Package Required 69 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 69 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 70 weight 10 +DepSelector inst# 4558 - Marking Package Required 70 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 70 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 72 weight 10 +DepSelector inst# 4558 - Marking Package Required 72 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 72 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 73 weight 10 +DepSelector inst# 4558 - Marking Package Required 73 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 73 [ 0, 11 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 74 weight 10 +DepSelector inst# 4558 - Marking Package Required 74 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 74 [ 0, 7 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 78 weight 10 +DepSelector inst# 4558 - Marking Package Required 78 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 78 [ 0, 4 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 79 weight 10 +DepSelector inst# 4558 - Marking Package Required 79 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 79 [ 0, 2 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 80 weight 10 +DepSelector inst# 4558 - Marking Package Required 80 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 80 [ 0, 1 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 75 weight 10 +DepSelector inst# 4558 - Marking Package Required 75 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 75 [ 0, 32 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 75 weight 10 +DepSelector inst# 4558 - Marking Package Required 75 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 75 [ 0, 32 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 81 weight 10 +DepSelector inst# 4558 - Marking Package Required 81 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 81 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 81 weight 10 +DepSelector inst# 4558 - Marking Package Required 81 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 81 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 82 weight 10 +DepSelector inst# 4558 - Marking Package Required 82 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 82 [ 0, 0 ] +DepSelector inst# 4558 - Marking Package Preferred Latest 75 weight 10 +DepSelector inst# 4558 - Marking Package Required 75 +DepSelector inst# 4558 - Adding VC for 83 @ 0 depPkg 75 [ 0, 32 ] diff --git a/test/data/log-311a15e7-3378-4c5b-beb7-86a1b9cf0ea9.txt b/test/data/log-311a15e7-3378-4c5b-beb7-86a1b9cf0ea9.txt new file mode 100644 index 0000000..5bc8cbe --- /dev/null +++ b/test/data/log-311a15e7-3378-4c5b-beb7-86a1b9cf0ea9.txt @@ -0,0 +1,620 @@ +Creating VersionProblem inst# 5893 with 64 packages, 1 stats, 1 debug +DepSelector inst# 5893 - Adding package id 0/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 1/64: min = -1, max = 5, current version 0 +DepSelector inst# 5893 - Adding package id 2/64: min = -1, max = 5, current version 0 +DepSelector inst# 5893 - Adding VC for 1 @ 5 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 3/64: min = -1, max = 5, current version 0 +DepSelector inst# 5893 - Adding VC for 1 @ 5 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 1 @ 4 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 1 @ 3 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 1 @ 2 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 1 @ 1 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 1 @ 0 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 4/64: min = -1, max = 3, current version 0 +DepSelector inst# 5893 - Adding VC for 2 @ 5 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding package id 5/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 2 @ 5 depPkg 5 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 2 @ 4 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 2 @ 4 depPkg 5 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 2 @ 3 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 2 @ 3 depPkg 5 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 2 @ 2 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 2 @ 2 depPkg 5 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 2 @ 1 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 2 @ 1 depPkg 5 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 2 @ 0 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 2 @ 0 depPkg 5 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 6/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 7/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 8/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 9/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 10/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding package id 11/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 12/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding package id 13/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 14/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding package id 15/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 16/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 17/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 18/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 19/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding package id 20/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 21/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 22/64: min = -1, max = 3, current version 0 +DepSelector inst# 5893 - Adding package id 23/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding VC for 23 @ 1 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 23 @ 0 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 23 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 24/64: min = -1, max = 3, current version 0 +DepSelector inst# 5893 - Adding package id 25/64: min = -1, max = 5, current version 0 +DepSelector inst# 5893 - Adding package id 26/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 27/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 28/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 27 @ 2 depPkg 28 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 29/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 30/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 31/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 30 @ 0 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 32/64: min = -1, max = 24, current version 0 +DepSelector inst# 5893 - Adding package id 33/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 32 @ 24 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 24 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 23 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 23 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 22 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 22 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 21 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 21 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 20 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 20 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 19 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 19 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 18 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 18 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 17 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 17 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 16 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 16 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 15 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 15 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 14 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 14 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 13 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 13 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 12 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 12 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 11 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 11 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 10 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 10 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 9 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 9 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 8 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 8 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 7 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 7 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 6 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 6 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 5 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 5 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 4 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 4 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 3 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 3 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 2 depPkg 33 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 32 @ 2 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 32 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 34/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 33 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 35/64: min = -1, max = 4, current version 0 +DepSelector inst# 5893 - Adding VC for 34 @ 0 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding VC for 35 @ 4 depPkg 1 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 35 @ 3 depPkg 1 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 35 @ 2 depPkg 1 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 36/64: min = -1, max = 3, current version 0 +DepSelector inst# 5893 - Adding VC for 36 @ 3 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding VC for 36 @ 2 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding VC for 36 @ 1 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding VC for 36 @ 0 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding package id 37/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 38/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding package id 39/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 40/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding package id 41/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding VC for 40 @ 1 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding package id 42/64: min = -1, max = 3, current version 0 +DepSelector inst# 5893 - Adding VC for 40 @ 1 depPkg 42 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 40 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 43/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 40 @ 1 depPkg 43 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 40 @ 0 depPkg 42 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 40 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 40 @ 0 depPkg 43 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 44/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 42 @ 3 depPkg 44 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 42 @ 2 depPkg 44 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 42 @ 1 depPkg 44 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 42 @ 0 depPkg 44 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 45/64: min = -1, max = 22, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding package id 46/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding package id 47/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding package id 48/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding package id 49/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 50/64: min = -1, max = 6, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 22 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 21 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 20 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding package id 51/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 19 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 18 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 17 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 16 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 15 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 14 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 13 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 12 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 11 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 10 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 9 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 8 depPkg 50 [ 0, 6 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 7 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 6 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 5 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 4 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 3 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 2 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 41 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 47 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 48 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 45 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 46 @ 2 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 46 @ 2 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 46 @ 1 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 46 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 46 @ 0 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 46 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 52/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding VC for 47 @ 1 depPkg 52 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 47 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 47 @ 0 depPkg 52 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 47 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 53/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding VC for 49 @ 0 depPkg 53 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 51 @ 2 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding package id 54/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding VC for 51 @ 2 depPkg 54 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 51 @ 2 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 51 @ 2 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 51 @ 1 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 51 @ 1 depPkg 54 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 51 @ 1 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 51 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 51 @ 0 depPkg 46 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 51 @ 0 depPkg 54 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 51 @ 0 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 51 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 55/64: min = -1, max = 4, current version 0 +DepSelector inst# 5893 - Adding package id 56/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 56 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 56 @ 0 depPkg 40 [ 0, 1 ] +DepSelector inst# 5893 - Adding package id 57/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 57 @ 0 depPkg 51 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 57 @ 0 depPkg 49 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 57 @ 0 depPkg 40 [ 0, 1 ] +DepSelector inst# 5893 - Adding package id 58/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding VC for 58 @ 1 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding package id 59/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding VC for 59 @ 0 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 59 @ 0 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Adding package id 60/64: min = -1, max = 0, current version 0 +DepSelector inst# 5893 - Adding package id 61/64: min = -1, max = 1, current version 0 +DepSelector inst# 5893 - Adding package id 62/64: min = -1, max = 2, current version 0 +DepSelector inst# 5893 - Adding VC for 61 @ 1 depPkg 62 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 61 @ 1 depPkg 55 [ 0, 4 ] +DepSelector inst# 5893 - Adding VC for 61 @ 1 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 61 @ 1 depPkg 40 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 61 @ 1 depPkg 43 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 61 @ 0 depPkg 62 [ 0, 2 ] +DepSelector inst# 5893 - Adding VC for 61 @ 0 depPkg 55 [ 0, 4 ] +DepSelector inst# 5893 - Adding VC for 61 @ 0 depPkg 31 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 61 @ 0 depPkg 40 [ 0, 1 ] +DepSelector inst# 5893 - Adding VC for 61 @ 0 depPkg 43 [ 0, 0 ] +DepSelector inst# 5893 - Adding VC for 62 @ 2 depPkg 4 [ 0, 3 ] +DepSelector inst# 5893 - Adding VC for 62 @ 2 depPkg 2 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 62 @ 2 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 62 @ 1 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding VC for 62 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Adding package id 63/64: min = 0, max = 0, current version 0 +DepSelector inst# 5893 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 5893 - Marking Package Required 0 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 0 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 1 weight 10 +DepSelector inst# 5893 - Marking Package Required 1 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 1 [ 0, 5 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 6 weight 10 +DepSelector inst# 5893 - Marking Package Required 6 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 6 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 7 weight 10 +DepSelector inst# 5893 - Marking Package Required 7 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 7 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 8 weight 10 +DepSelector inst# 5893 - Marking Package Required 8 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 8 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 9 weight 10 +DepSelector inst# 5893 - Marking Package Required 9 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 9 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 10 weight 10 +DepSelector inst# 5893 - Marking Package Required 10 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 10 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 11 weight 10 +DepSelector inst# 5893 - Marking Package Required 11 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 11 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 12 weight 10 +DepSelector inst# 5893 - Marking Package Required 12 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 12 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 13 weight 10 +DepSelector inst# 5893 - Marking Package Required 13 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 13 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 14 weight 10 +DepSelector inst# 5893 - Marking Package Required 14 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 14 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 5893 - Marking Package Required 15 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 15 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 16 weight 10 +DepSelector inst# 5893 - Marking Package Required 16 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 17 weight 10 +DepSelector inst# 5893 - Marking Package Required 17 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 17 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 18 weight 10 +DepSelector inst# 5893 - Marking Package Required 18 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 18 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 19 weight 10 +DepSelector inst# 5893 - Marking Package Required 19 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 19 weight 10 +DepSelector inst# 5893 - Marking Package Required 19 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 19 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 20 weight 10 +DepSelector inst# 5893 - Marking Package Required 20 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 20 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 21 weight 10 +DepSelector inst# 5893 - Marking Package Required 21 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 21 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 22 weight 10 +DepSelector inst# 5893 - Marking Package Required 22 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 22 [ 0, 3 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 23 weight 10 +DepSelector inst# 5893 - Marking Package Required 23 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 23 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 24 weight 10 +DepSelector inst# 5893 - Marking Package Required 24 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 24 [ 0, 3 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 25 weight 10 +DepSelector inst# 5893 - Marking Package Required 25 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 25 [ 0, 5 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 26 weight 10 +DepSelector inst# 5893 - Marking Package Required 26 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 26 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 26 weight 10 +DepSelector inst# 5893 - Marking Package Required 26 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 26 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 27 weight 10 +DepSelector inst# 5893 - Marking Package Required 27 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 27 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 5893 - Marking Package Required 29 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 29 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 30 weight 10 +DepSelector inst# 5893 - Marking Package Required 30 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 30 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 30 weight 10 +DepSelector inst# 5893 - Marking Package Required 30 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 30 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 5893 - Marking Package Required 32 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 32 [ 0, 24 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 36 weight 10 +DepSelector inst# 5893 - Marking Package Required 36 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 36 [ 0, 3 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 37 weight 10 +DepSelector inst# 5893 - Marking Package Required 37 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 37 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 38 weight 10 +DepSelector inst# 5893 - Marking Package Required 38 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 38 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 38 weight 10 +DepSelector inst# 5893 - Marking Package Required 38 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 38 [ 0, 2 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 5893 - Marking Package Required 3 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 5893 - Marking Package Required 3 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 3 [ 0, 5 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 39 weight 10 +DepSelector inst# 5893 - Marking Package Required 39 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 39 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 35 weight 10 +DepSelector inst# 5893 - Marking Package Required 35 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 35 [ 0, 4 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 40 weight 10 +DepSelector inst# 5893 - Marking Package Required 40 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 40 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 45 weight 10 +DepSelector inst# 5893 - Marking Package Required 45 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 45 [ 0, 22 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 45 weight 10 +DepSelector inst# 5893 - Marking Package Required 45 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 45 [ 0, 22 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 45 weight 10 +DepSelector inst# 5893 - Marking Package Required 45 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 45 [ 0, 22 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 55 weight 10 +DepSelector inst# 5893 - Marking Package Required 55 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 55 [ 0, 4 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 56 weight 10 +DepSelector inst# 5893 - Marking Package Required 56 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 56 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 57 weight 10 +DepSelector inst# 5893 - Marking Package Required 57 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 57 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 58 weight 10 +DepSelector inst# 5893 - Marking Package Required 58 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 58 [ 0, 1 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 59 weight 10 +DepSelector inst# 5893 - Marking Package Required 59 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 59 weight 10 +DepSelector inst# 5893 - Marking Package Required 59 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 59 weight 10 +DepSelector inst# 5893 - Marking Package Required 59 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 59 weight 10 +DepSelector inst# 5893 - Marking Package Required 59 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 60 weight 10 +DepSelector inst# 5893 - Marking Package Required 60 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 60 weight 10 +DepSelector inst# 5893 - Marking Package Required 60 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 5893 - Marking Package Preferred Latest 61 weight 10 +DepSelector inst# 5893 - Marking Package Required 61 +DepSelector inst# 5893 - Adding VC for 63 @ 0 depPkg 61 [ 0, 1 ] +dep_selector solve: SOLVED 64 packages, 422 constraints, Time: 21.8ms Stats: 1 steps, 2309619 bytes, 2542 props, 108 nodes, 107 depth diff --git a/test/data/log-382cfe5b-0ac2-48b8-83d1-717cb4620990.txt b/test/data/log-382cfe5b-0ac2-48b8-83d1-717cb4620990.txt new file mode 100644 index 0000000..b5feac9 --- /dev/null +++ b/test/data/log-382cfe5b-0ac2-48b8-83d1-717cb4620990.txt @@ -0,0 +1,78 @@ +Creating VersionProblem inst# 3445 with 20 packages, 1 stats, 1 debug +DepSelector inst# 3445 - Adding package id 0/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 1/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 2/20: min = -1, max = 1, current version 0 +DepSelector inst# 3445 - Adding package id 3/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 4/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 5/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 6/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 7/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 8/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 7 @ 0 depPkg 8 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 9/20: min = -1, max = 1, current version 0 +DepSelector inst# 3445 - Adding VC for 7 @ 0 depPkg 9 [ 0, 1 ] +DepSelector inst# 3445 - Adding package id 10/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding package id 11/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 10 @ 0 depPkg 11 [ 0, 0 ] +DepSelector inst# 3445 - Adding VC for 10 @ 0 depPkg 8 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 12/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 10 @ 0 depPkg 12 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 13/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 11 @ 0 depPkg 13 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 14/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 14 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 15/20: min = -1, max = 1, current version 0 +DepSelector inst# 3445 - Adding package id 16/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 15 @ 1 depPkg 16 [ 0, 0 ] +DepSelector inst# 3445 - Adding VC for 15 @ 0 depPkg 2 [ 0, 1 ] +DepSelector inst# 3445 - Adding VC for 15 @ 0 depPkg 13 [ 0, 0 ] +DepSelector inst# 3445 - Adding VC for 15 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 17/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 17 @ 0 depPkg 12 [ 0, 0 ] +DepSelector inst# 3445 - Adding VC for 17 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 18/20: min = -1, max = 0, current version 0 +DepSelector inst# 3445 - Adding VC for 18 @ 0 depPkg 12 [ 0, 0 ] +DepSelector inst# 3445 - Adding package id 19/20: min = 0, max = 0, current version 0 +DepSelector inst# 3445 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 3445 - Marking Package Required 0 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 0 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 1 weight 10 +DepSelector inst# 3445 - Marking Package Required 1 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 1 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 2 weight 10 +DepSelector inst# 3445 - Marking Package Required 2 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 2 [ 0, 1 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 3445 - Marking Package Required 3 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 3 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 4 weight 10 +DepSelector inst# 3445 - Marking Package Required 4 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 4 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 5 weight 10 +DepSelector inst# 3445 - Marking Package Required 5 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 5 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 6 weight 10 +DepSelector inst# 3445 - Marking Package Required 6 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 6 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 7 weight 10 +DepSelector inst# 3445 - Marking Package Required 7 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 7 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 10 weight 10 +DepSelector inst# 3445 - Marking Package Required 10 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 14 weight 10 +DepSelector inst# 3445 - Marking Package Required 14 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 14 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 3445 - Marking Package Required 15 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 15 [ 0, 1 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 3445 - Marking Package Required 15 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 15 [ 0, 1 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 17 weight 10 +DepSelector inst# 3445 - Marking Package Required 17 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 17 [ 0, 0 ] +DepSelector inst# 3445 - Marking Package Preferred Latest 18 weight 10 +DepSelector inst# 3445 - Marking Package Required 18 +DepSelector inst# 3445 - Adding VC for 19 @ 0 depPkg 18 [ 0, 0 ] +dep_selector solve: SOLVED 20 packages, 28 constraints, Time: 0.343ms Stats: 1 steps, 70191 bytes, 183 props, 243459 nodes, 23 depth diff --git a/test/data/log-d3564ef6-6437-41e7-90b6-dbdb849551a6_mod.txt b/test/data/log-d3564ef6-6437-41e7-90b6-dbdb849551a6_mod.txt new file mode 100644 index 0000000..e3d1f76 --- /dev/null +++ b/test/data/log-d3564ef6-6437-41e7-90b6-dbdb849551a6_mod.txt @@ -0,0 +1,937 @@ +Creating VersionProblem inst# 0 with 84 packages, 1 stats, 1 debug +DepSelector inst# 0 - Adding package id 0/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding package id 1/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 0 @ 3 depPkg 1 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 2/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 0 @ 3 depPkg 2 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 0 @ 2 depPkg 1 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 0 @ 2 depPkg 2 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 0 @ 1 depPkg 1 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 0 @ 1 depPkg 2 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 0 @ 0 depPkg 1 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 0 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 3/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 4/84: min = -1, max = 5, current version 0 +DepSelector inst# 0 - Adding package id 5/84: min = -1, max = 5, current version 0 +DepSelector inst# 0 - Adding VC for 4 @ 5 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 6/84: min = -1, max = 5, current version 0 +DepSelector inst# 0 - Adding VC for 4 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 4 @ 4 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 4 @ 3 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 4 @ 2 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 4 @ 1 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 4 @ 0 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 7/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding VC for 5 @ 5 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding package id 8/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 5 @ 5 depPkg 8 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 5 @ 4 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 5 @ 4 depPkg 8 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 5 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 5 @ 3 depPkg 8 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 5 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 5 @ 2 depPkg 8 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 5 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 5 @ 1 depPkg 8 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 5 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 5 @ 0 depPkg 8 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 9/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 10/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 11/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 12/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 13/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 14/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 15/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 16/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 17/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 18/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 19/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 20/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 21/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 22/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 23/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 24/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 25/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding package id 26/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 26 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 26 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 26 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 27/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding package id 28/84: min = -1, max = 5, current version 0 +DepSelector inst# 0 - Adding package id 29/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 30/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 31/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 30 @ 2 depPkg 31 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 32/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 33/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 34/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 33 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 35/84: min = -1, max = 24, current version 0 +DepSelector inst# 0 - Adding package id 36/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 35 @ 24 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 24 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 23 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 23 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 22 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 22 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 21 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 21 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 20 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 20 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 19 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 19 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 18 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 18 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 17 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 17 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 16 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 16 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 15 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 15 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 14 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 14 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 13 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 13 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 12 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 12 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 11 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 11 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 10 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 10 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 9 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 9 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 8 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 8 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 7 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 7 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 6 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 6 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 5 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 4 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 3 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 2 depPkg 36 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 35 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 35 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 37/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 36 @ 0 depPkg 37 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 38/84: min = -1, max = 4, current version 0 +DepSelector inst# 0 - Adding VC for 37 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 38 @ 4 depPkg 4 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 38 @ 3 depPkg 4 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 38 @ 2 depPkg 4 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 39/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding VC for 39 @ 3 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 39 @ 2 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 39 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 39 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 40/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 41/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding package id 42/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 42 @ 1 depPkg 10 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 42 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 43/84: min = -1, max = 7, current version 0 +DepSelector inst# 0 - Adding package id 44/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 44 @ 1 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 44 @ 0 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 45/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 46/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding VC for 45 @ 1 depPkg 46 [ 0, 2 ] +DepSelector inst# 0 - Adding package id 47/84: min = -1, max = 4, current version 0 +DepSelector inst# 0 - Adding VC for 45 @ 1 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 45 @ 1 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 48/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 45 @ 1 depPkg 48 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 49/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 45 @ 1 depPkg 49 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 45 @ 0 depPkg 46 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 45 @ 0 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 45 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 45 @ 0 depPkg 48 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 45 @ 0 depPkg 49 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 46 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 46 @ 2 depPkg 5 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 46 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 46 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 46 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 50/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding VC for 48 @ 1 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding package id 51/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding VC for 48 @ 1 depPkg 51 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 48 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 48 @ 1 depPkg 49 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 48 @ 0 depPkg 51 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 48 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 48 @ 0 depPkg 49 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 52/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 51 @ 3 depPkg 52 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 51 @ 2 depPkg 52 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 51 @ 1 depPkg 52 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 51 @ 0 depPkg 52 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 53/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 53 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 54/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 54 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 54 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 55/84: min = -1, max = 4, current version 0 +DepSelector inst# 0 - Adding VC for 55 @ 4 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 55 @ 4 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 55 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 55 @ 3 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 55 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 55 @ 2 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 55 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 55 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 55 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 55 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 56/84: min = -1, max = 3, current version 0 +DepSelector inst# 0 - Adding VC for 56 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 56 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 56 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 56 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding package id 57/84: min = -1, max = 5, current version 0 +DepSelector inst# 0 - Adding package id 58/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding package id 59/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding package id 60/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 61/84: min = -1, max = 6, current version 0 +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding package id 62/84: min = -1, max = 4, current version 0 +DepSelector inst# 0 - Adding VC for 57 @ 5 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 57 @ 4 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 57 @ 3 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 57 @ 3 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 3 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 57 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 57 @ 3 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 57 @ 2 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 57 @ 2 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 2 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 57 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 57 @ 2 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 57 @ 1 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 57 @ 1 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 57 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 57 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 57 @ 1 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 63/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding VC for 58 @ 2 depPkg 63 [ 0, 2 ] +DepSelector inst# 0 - Adding package id 64/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding VC for 58 @ 2 depPkg 64 [ 0, 2 ] +DepSelector inst# 0 - Adding package id 65/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 58 @ 2 depPkg 65 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 58 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 58 @ 1 depPkg 63 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 58 @ 1 depPkg 64 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 58 @ 1 depPkg 65 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 58 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 58 @ 0 depPkg 63 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 58 @ 0 depPkg 64 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 58 @ 0 depPkg 65 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 58 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 63 @ 2 depPkg 65 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 63 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 63 @ 1 depPkg 65 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 63 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 63 @ 0 depPkg 65 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 63 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 66/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 60 @ 0 depPkg 66 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 62 @ 4 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 62 @ 4 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 62 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 62 @ 3 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 62 @ 3 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 62 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 62 @ 2 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 62 @ 2 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 62 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 62 @ 1 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 62 @ 1 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 62 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 62 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 62 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 62 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 67/84: min = -1, max = 7, current version 0 +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 67 @ 7 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 67 @ 6 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 67 @ 5 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 67 @ 4 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 67 @ 3 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 2 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 2 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 2 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 2 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 1 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 1 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 1 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 67 @ 0 depPkg 58 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 67 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 67 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 67 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 67 @ 0 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 68/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 69/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 70/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding package id 71/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 70 @ 1 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 70 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 70 @ 0 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 70 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding package id 72/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding package id 73/84: min = -1, max = 11, current version 0 +DepSelector inst# 0 - Adding VC for 73 @ 11 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 11 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 11 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 11 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 11 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 11 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 73 @ 10 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 10 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 10 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 10 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 10 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 10 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 73 @ 9 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 9 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 9 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 9 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 9 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 9 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 73 @ 8 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 8 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 8 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 8 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 8 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 8 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 73 @ 7 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 7 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 7 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 7 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 7 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 73 @ 6 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 6 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 6 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 5 depPkg 50 [ 0, 2 ] +DepSelector inst# 0 - Adding VC for 73 @ 5 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 5 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 5 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 4 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 4 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 4 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 3 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 3 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 3 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 2 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 2 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 1 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 0 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 73 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 73 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 74/84: min = -1, max = 7, current version 0 +DepSelector inst# 0 - Adding VC for 74 @ 7 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 75/84: min = -1, max = 32, current version 0 +DepSelector inst# 0 - Adding VC for 74 @ 7 depPkg 75 [ 0, 32 ] +DepSelector inst# 0 - Adding VC for 74 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 7 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 74 @ 6 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 74 @ 6 depPkg 75 [ 0, 32 ] +DepSelector inst# 0 - Adding VC for 74 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 6 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 74 @ 5 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 74 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 5 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 74 @ 4 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 74 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 4 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 74 @ 3 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 74 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 2 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 74 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 1 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 74 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 74 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 76/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding package id 77/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 75 @ 32 depPkg 77 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 31 depPkg 77 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 30 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 29 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 28 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 27 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 26 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 25 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 24 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 23 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 22 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 21 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 20 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 19 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 18 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 17 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 16 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 15 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 14 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 13 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 12 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 11 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 75 @ 10 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 9 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 8 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 7 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 6 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 5 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 4 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 3 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 2 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 1 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 59 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 6 [ 0, 5 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 76 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 75 @ 0 depPkg 62 [ 0, 4 ] +DepSelector inst# 0 - Adding VC for 77 @ 0 depPkg 7 [ 0, 3 ] +DepSelector inst# 0 - Adding VC for 77 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 78/84: min = -1, max = 4, current version 0 +DepSelector inst# 0 - Adding VC for 78 @ 4 depPkg 75 [ 0, 32 ] +DepSelector inst# 0 - Adding VC for 78 @ 4 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 78 @ 3 depPkg 75 [ 0, 32 ] +DepSelector inst# 0 - Adding VC for 78 @ 3 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 78 @ 3 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 78 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 78 @ 2 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 78 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 78 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 79/84: min = -1, max = 2, current version 0 +DepSelector inst# 0 - Adding VC for 79 @ 2 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 79 @ 2 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 79 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 79 @ 1 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 79 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding package id 80/84: min = -1, max = 1, current version 0 +DepSelector inst# 0 - Adding VC for 80 @ 1 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 80 @ 1 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 80 @ 1 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 80 @ 1 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 80 @ 1 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding VC for 80 @ 0 depPkg 71 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 80 @ 0 depPkg 60 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 80 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Adding VC for 80 @ 0 depPkg 34 [ 0, 0 ] +DepSelector inst# 0 - Adding VC for 80 @ 0 depPkg 61 [ 0, 6 ] +DepSelector inst# 0 - Adding package id 81/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 81 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 82/84: min = -1, max = 0, current version 0 +DepSelector inst# 0 - Adding VC for 82 @ 0 depPkg 38 [ 0, 4 ] +DepSelector inst# 0 - Adding package id 83/84: min = 0, max = 0, current version 0 +DepSelector inst# 0 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 0 - Marking Package Required 0 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 0 [ 0, 3 ] +DepSelector inst# 0 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 0 - Marking Package Required 3 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 3 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 4 weight 10 +DepSelector inst# 0 - Marking Package Required 4 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 4 [ 0, 5 ] +DepSelector inst# 0 - Marking Package Preferred Latest 9 weight 10 +DepSelector inst# 0 - Marking Package Required 9 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 9 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 10 weight 10 +DepSelector inst# 0 - Marking Package Required 10 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 10 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 11 weight 10 +DepSelector inst# 0 - Marking Package Required 11 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 11 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 12 weight 10 +DepSelector inst# 0 - Marking Package Required 12 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 12 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 13 weight 10 +DepSelector inst# 0 - Marking Package Required 13 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 13 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 14 weight 10 +DepSelector inst# 0 - Marking Package Required 14 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 14 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 0 - Marking Package Required 15 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 15 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 16 weight 10 +DepSelector inst# 0 - Marking Package Required 16 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 17 weight 10 +DepSelector inst# 0 - Marking Package Required 17 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 17 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 18 weight 10 +DepSelector inst# 0 - Marking Package Required 18 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 18 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 19 weight 10 +DepSelector inst# 0 - Marking Package Required 19 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 19 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 20 weight 10 +DepSelector inst# 0 - Marking Package Required 20 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 20 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 21 weight 10 +DepSelector inst# 0 - Marking Package Required 21 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 21 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 22 weight 10 +DepSelector inst# 0 - Marking Package Required 22 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 22 weight 10 +DepSelector inst# 0 - Marking Package Required 22 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 22 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 23 weight 10 +DepSelector inst# 0 - Marking Package Required 23 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 23 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 24 weight 10 +DepSelector inst# 0 - Marking Package Required 24 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 24 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 25 weight 10 +DepSelector inst# 0 - Marking Package Required 25 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 25 [ 0, 3 ] +DepSelector inst# 0 - Marking Package Preferred Latest 26 weight 10 +DepSelector inst# 0 - Marking Package Required 26 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 26 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 27 weight 10 +DepSelector inst# 0 - Marking Package Required 27 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 27 [ 0, 3 ] +DepSelector inst# 0 - Marking Package Preferred Latest 28 weight 10 +DepSelector inst# 0 - Marking Package Required 28 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 28 [ 0, 5 ] +DepSelector inst# 0 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 0 - Marking Package Required 29 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 29 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 29 weight 10 +DepSelector inst# 0 - Marking Package Required 29 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 29 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 30 weight 10 +DepSelector inst# 0 - Marking Package Required 30 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 30 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 32 weight 10 +DepSelector inst# 0 - Marking Package Required 32 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 32 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 33 weight 10 +DepSelector inst# 0 - Marking Package Required 33 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 33 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 33 weight 10 +DepSelector inst# 0 - Marking Package Required 33 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 33 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 35 weight 10 +DepSelector inst# 0 - Marking Package Required 35 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 35 [ 0, 24 ] +DepSelector inst# 0 - Marking Package Preferred Latest 39 weight 10 +DepSelector inst# 0 - Marking Package Required 39 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 39 [ 0, 3 ] +DepSelector inst# 0 - Marking Package Preferred Latest 40 weight 10 +DepSelector inst# 0 - Marking Package Required 40 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 40 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 41 weight 10 +DepSelector inst# 0 - Marking Package Required 41 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 41 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 41 weight 10 +DepSelector inst# 0 - Marking Package Required 41 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 41 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 42 weight 10 +DepSelector inst# 0 - Marking Package Required 42 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 42 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 43 weight 10 +DepSelector inst# 0 - Marking Package Required 43 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 43 [ 0, 7 ] +DepSelector inst# 0 - Marking Package Preferred Latest 44 weight 10 +DepSelector inst# 0 - Marking Package Required 44 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 44 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 45 weight 10 +DepSelector inst# 0 - Marking Package Required 45 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 45 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 47 weight 10 +DepSelector inst# 0 - Marking Package Required 47 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 47 [ 0, 4 ] +DepSelector inst# 0 - Marking Package Preferred Latest 53 weight 10 +DepSelector inst# 0 - Marking Package Required 53 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 53 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 0 - Marking Package Required 54 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 0 - Marking Package Required 54 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 0 - Marking Package Required 54 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 54 weight 10 +DepSelector inst# 0 - Marking Package Required 54 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 54 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 55 weight 10 +DepSelector inst# 0 - Marking Package Required 55 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 55 [ 0, 4 ] +DepSelector inst# 0 - Marking Package Preferred Latest 56 weight 10 +DepSelector inst# 0 - Marking Package Required 56 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 56 [ 0, 3 ] +DepSelector inst# 0 - Marking Package Preferred Latest 57 weight 10 +DepSelector inst# 0 - Marking Package Required 57 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 57 [ 0, 5 ] +DepSelector inst# 0 - Marking Package Preferred Latest 57 weight 10 +DepSelector inst# 0 - Marking Package Required 57 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 57 [ 0, 5 ] +DepSelector inst# 0 - Marking Package Preferred Latest 67 weight 10 +DepSelector inst# 0 - Marking Package Required 67 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 67 [ 0, 7 ] +DepSelector inst# 0 - Marking Package Preferred Latest 68 weight 10 +DepSelector inst# 0 - Marking Package Required 68 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 68 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 69 weight 10 +DepSelector inst# 0 - Marking Package Required 69 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 69 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 69 weight 10 +DepSelector inst# 0 - Marking Package Required 69 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 69 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 70 weight 10 +DepSelector inst# 0 - Marking Package Required 70 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 70 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 72 weight 10 +DepSelector inst# 0 - Marking Package Required 72 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 72 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 73 weight 10 +DepSelector inst# 0 - Marking Package Required 73 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 73 [ 0, 11 ] +DepSelector inst# 0 - Marking Package Preferred Latest 74 weight 10 +DepSelector inst# 0 - Marking Package Required 74 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 74 [ 0, 7 ] +DepSelector inst# 0 - Marking Package Preferred Latest 78 weight 10 +DepSelector inst# 0 - Marking Package Required 78 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 78 [ 0, 4 ] +DepSelector inst# 0 - Marking Package Preferred Latest 79 weight 10 +DepSelector inst# 0 - Marking Package Required 79 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 79 [ 0, 2 ] +DepSelector inst# 0 - Marking Package Preferred Latest 80 weight 10 +DepSelector inst# 0 - Marking Package Required 80 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 80 [ 0, 1 ] +DepSelector inst# 0 - Marking Package Preferred Latest 75 weight 10 +DepSelector inst# 0 - Marking Package Required 75 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 75 [ 0, 32 ] +DepSelector inst# 0 - Marking Package Preferred Latest 75 weight 10 +DepSelector inst# 0 - Marking Package Required 75 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 75 [ 0, 32 ] +DepSelector inst# 0 - Marking Package Preferred Latest 81 weight 10 +DepSelector inst# 0 - Marking Package Required 81 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 81 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 81 weight 10 +DepSelector inst# 0 - Marking Package Required 81 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 81 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 82 weight 10 +DepSelector inst# 0 - Marking Package Required 82 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 82 [ 0, 0 ] +DepSelector inst# 0 - Marking Package Preferred Latest 75 weight 10 +DepSelector inst# 0 - Marking Package Required 75 +DepSelector inst# 0 - Adding VC for 83 @ 0 depPkg 75 [ 0, 32 ] \ No newline at end of file diff --git a/test/data/log-ea2d264b-003e-4611-94ed-14efc7732083.txt b/test/data/log-ea2d264b-003e-4611-94ed-14efc7732083.txt new file mode 100644 index 0000000..5a9e0ff --- /dev/null +++ b/test/data/log-ea2d264b-003e-4611-94ed-14efc7732083.txt @@ -0,0 +1,74 @@ +Creating VersionProblem inst# 4477 with 20 packages, 1 stats, 1 debug +DepSelector inst# 4477 - Adding package id 0/20: min = -1, max = 1, current version 0 +DepSelector inst# 4477 - Adding package id 1/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 2/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 3/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 4/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 5/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 6/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 7/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding VC for 6 @ 0 depPkg 7 [ 0, 0 ] +DepSelector inst# 4477 - Adding package id 8/20: min = -1, max = 2, current version 0 +DepSelector inst# 4477 - Adding package id 9/20: min = -1, max = 1, current version 0 +DepSelector inst# 4477 - Adding package id 10/20: min = -1, max = 1, current version 0 +DepSelector inst# 4477 - Adding package id 11/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding VC for 10 @ 1 depPkg 11 [ 0, 0 ] +DepSelector inst# 4477 - Adding package id 12/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding VC for 10 @ 1 depPkg 12 [ 0, 0 ] +DepSelector inst# 4477 - Adding VC for 10 @ 0 depPkg 11 [ 0, 0 ] +DepSelector inst# 4477 - Adding package id 13/20: min = -1, max = 1, current version 0 +DepSelector inst# 4477 - Adding package id 14/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 15/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 16/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding package id 17/20: min = -1, max = 0, current version 0 +DepSelector inst# 4477 - Adding VC for 17 @ 0 depPkg 1 [ 0, 0 ] +DepSelector inst# 4477 - Adding package id 18/20: min = -1, max = 1, current version 0 +DepSelector inst# 4477 - Adding package id 19/20: min = 0, max = 0, current version 0 +DepSelector inst# 4477 - Marking Package Preferred Latest 0 weight 10 +DepSelector inst# 4477 - Marking Package Required 0 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 0 [ 0, 1 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 1 weight 10 +DepSelector inst# 4477 - Marking Package Required 1 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 1 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 2 weight 10 +DepSelector inst# 4477 - Marking Package Required 2 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 2 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 3 weight 10 +DepSelector inst# 4477 - Marking Package Required 3 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 3 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 4 weight 10 +DepSelector inst# 4477 - Marking Package Required 4 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 4 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 5 weight 10 +DepSelector inst# 4477 - Marking Package Required 5 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 5 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 6 weight 10 +DepSelector inst# 4477 - Marking Package Required 6 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 6 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 8 weight 10 +DepSelector inst# 4477 - Marking Package Required 8 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 8 [ 0, 2 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 9 weight 10 +DepSelector inst# 4477 - Marking Package Required 9 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 9 [ 0, 1 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 10 weight 10 +DepSelector inst# 4477 - Marking Package Required 10 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 10 [ 0, 1 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 13 weight 10 +DepSelector inst# 4477 - Marking Package Required 13 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 13 [ 0, 1 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 14 weight 10 +DepSelector inst# 4477 - Marking Package Required 14 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 14 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 15 weight 10 +DepSelector inst# 4477 - Marking Package Required 15 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 15 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 16 weight 10 +DepSelector inst# 4477 - Marking Package Required 16 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 16 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 17 weight 10 +DepSelector inst# 4477 - Marking Package Required 17 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 17 [ 0, 0 ] +DepSelector inst# 4477 - Marking Package Preferred Latest 18 weight 10 +DepSelector inst# 4477 - Marking Package Required 18 +DepSelector inst# 4477 - Adding VC for 19 @ 0 depPkg 18 [ 0, 0 ] \ No newline at end of file diff --git a/test/rcl_depsolver_tester.erl b/test/rcl_depsolver_tester.erl new file mode 100644 index 0000000..53f5ac0 --- /dev/null +++ b/test/rcl_depsolver_tester.erl @@ -0,0 +1,474 @@ +%% -*- erlang-indent-level: 4; indent-tabs-mode: nil; fill-column: 92 -*- +%% ex: ts=4 sx=4 et +%%------------------------------------------------------------------- +%% +%% Copyright 2012 Opscode, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% @author Eric Merritt +%% @doc +%% Additional testing for depsolver +%% @end +%%------------------------------------------------------------------- +-module(rcl_depsolver_tester). + +-export([run_data/1, run_log/1]). +-include_lib("eunit/include/eunit.hrl"). + +-define(ADD_PKG, "^DepSelector\\sinst#\\s(\\d+)\\s-\\s" + "Adding\\spackage\\sid\\s(\\d+)\\/(\\d+):\\smin\\s=\\s-1," + "\\smax\\s=\\s(\\d+),\\scurrent\\sversion\\s0$"). +-define(ADD_VC, "^DepSelector\\sinst#\\s(\\d+)\\s-\\sAdding\\sVC\\s" + "for\\s(\\d+)\\s@\\s(\\d+)\\sdepPkg\\s(\\d+)\\s\\[\\s(\\d+)" + "\\s(\\d+)\\s\\]$"). +-define(ADD_GOAL, "^DepSelector\\sinst#\\s(\\d+)\\s-\\s" + "Marking\\sPackage\\sRequired\\s(\\d+)$"). + +%%============================================================================ +%% Public Api +%%============================================================================ +run_data(FileName) -> + {ok, Device} = file:open(FileName, [read]), + run_data_file(Device). + +run_log(FileName) -> + {ok, Device} = file:open(FileName, [read]), + run_log_file(Device). + +data1_test() -> + ExpectedResult = versionify([{"app6","0.0.1"}, + {"dep_pkg13","0.0.2"}, + {"app13","0.0.1"}, + {"dep_pkg2","0.0.5"}, + {"dep_pkg1","0.0.2"}, + {"dep_pkg7","0.1.2"}, + {"app9","0.0.1"}]), + ?assertMatch({ok, ExpectedResult}, + run_data(fix_rebar_brokenness("data1.txt"))). + +data2_test() -> + ExpectedResult = versionify([{"app18","0.0.1"}, + {"app4","0.0.1"}, + {"app1","0.0.1"}, + {"app6","0.0.1"}, + {"dep_pkg13","0.0.2"}, + {"app13","0.0.1"}, + {"dep_pkg5","0.0.2"}, + {"dep_pkg1","0.0.2"}, + {"dep_pkg2","0.0.5"}, + {"dep_pkg7","0.1.2"}, + {"app9","0.0.1"}, + {"dep_pkg16","1.0.2"}]), + ?assertMatch({ok, ExpectedResult}, + run_data(fix_rebar_brokenness("data2.txt"))). + +data3_test() -> + ExpectedResult = versionify([{"app68","0.0.1"}, + {"app58","0.0.1"}, + {"app48","0.0.7"}, + {"app38","0.0.1"}, + {"app28","0.0.1"}, + {"app18","0.0.1"}, + {"app4","0.0.1"}, + {"app1","0.0.1"}, + {"app6","0.0.1"}, + {"dep_pkg13","0.0.2"}, + {"app13","0.0.1"}, + {"dep_pkg5","0.0.2"}, + {"dep_pkg1","0.0.2"}, + {"dep_pkg2","0.0.5"}, + {"dep_pkg7","0.1.2"}, + {"app9","0.0.1"}, + {"dep_pkg16","1.0.2"}]), + ?assertMatch({ok,ExpectedResult}, run_data(fix_rebar_brokenness("data3.txt"))). + +data4_test() -> + ExpectedResult = versionify([{"dep_pkg20","0.0.2"}, + {"app78","0.0.1"}, + {"app68","0.0.1"}, + {"app58","0.0.1"}, + {"app48","0.0.7"}, + {"app38","0.0.1"}, + {"app28","0.0.1"}, + {"app18","0.0.1"}, + {"app4","0.0.1"}, + {"app1","0.0.1"}, + {"app6","0.0.1"}, + {"dep_pkg13","0.0.2"}, + {"app13","0.0.1"}, + {"dep_pkg5","0.0.2"}, + {"dep_pkg1","0.0.2"}, + {"dep_pkg2","0.0.5"}, + {"dep_pkg7","0.1.2"}, + {"app9","0.0.1"}, + {"dep_pkg16","1.0.2"}]), + ?assertMatch({ok, ExpectedResult}, + run_data(fix_rebar_brokenness("data4.txt"))). + +data5_test() -> + ExpectedResult = versionify([{"dep_pkg14","0.0.2"}, + {"dep_pkg22","0.0.2"}, + {"dep_pkg20","0.0.2"}, + {"app78","0.0.1"}, + {"app68","0.0.1"}, + {"app58","0.0.1"}, + {"app48","0.0.7"}, + {"app38","0.0.1"}, + {"app28","0.0.1"}, + {"app18","0.0.1"}, + {"app4","0.0.1"}, + {"app1","0.0.1"}, + {"app6","0.0.1"}, + {"dep_pkg13","0.0.2"}, + {"app13","0.0.1"}, + {"dep_pkg5","0.0.2"}, + {"dep_pkg1","0.0.2"}, + {"dep_pkg2","0.0.5"}, + {"dep_pkg7","0.1.2"}, + {"app9","0.0.1"}, + {"dep_pkg16","1.0.2"}]), + ?assertMatch({ok, ExpectedResult}, + run_data(fix_rebar_brokenness("data5.txt"))). + +data6_test() -> + ExpectedResult = versionify([{"app108","0.0.1"}, + {"app98","0.0.1"}, + {"app88","0.0.1"}, + {"dep_pkg14","0.0.2"}, + {"dep_pkg22","0.0.2"}, + {"dep_pkg20","0.0.2"}, + {"app78","0.0.1"}, + {"app68","0.0.1"}, + {"app58","0.0.1"}, + {"app48","0.0.7"}, + {"app38","0.0.1"}, + {"app28","0.0.1"}, + {"app18","0.0.1"}, + {"app4","0.0.1"}, + {"app1","0.0.1"}, + {"app6","0.0.1"}, + {"dep_pkg13","0.0.2"}, + {"app13","0.0.1"}, + {"dep_pkg5","0.0.2"}, + {"dep_pkg1","0.0.2"}, + {"dep_pkg2","0.0.5"}, + {"dep_pkg7","0.1.2"}, + {"app9","0.0.1"}, + {"dep_pkg16","1.0.2"}]), + ?assertMatch({ok, ExpectedResult}, + run_data(fix_rebar_brokenness("data6.txt"))). + +log_07be9e47_test() -> + Data = run_log(fix_rebar_brokenness("log-07be9e47-6f42-4a5d-b8b5-1d2eae1ad83b.txt")), + ExpectedResult = versionify([{"0","0"}, + {"1","0"}, + {"3","0"}, + {"4","0"}, + {"5","0"}, + {"6","0"}, + {"7","0"}, + {"8","0"}, + {"9","0"}, + {"10","0"}, + {"11","0"}, + {"12","0"}, + {"13","0"}, + {"14","0"}, + {"15","0"}, + {"16","0"}, + {"18","0"}, + {"19","0"}, + {"21","0"}, + {"22","0"}, + {"23","0"}, + {"24","0"}, + {"25","0"}]), + ?assertMatch({ok, ExpectedResult}, + Data). + +log_183998c1_test() -> + ?assertMatch({error, {unreachable_package,<<"9">>}}, + run_log(fix_rebar_brokenness("log-183998c1-2ada-4214-b308-e480345c42f2.txt"))). + + +log_311a15e7_test() -> + {ok, Data} = run_log(fix_rebar_brokenness("log-311a15e7-3378-4c5b-beb7-86a1b9cf0ea9.txt")), + ExpectedResult = lists:sort(versionify([{"45", "22"}, + {"40","1"}, + {"3","5"}, + {"9","0"}, + {"8","0"}, + {"7","0"}, + {"6","2"}, + {"1","5"}, + {"0","2"}, + {"61","1"}, + {"60","0"}, + {"35","4"}, + {"39","0"}, + {"38","2"}, + {"37","2"}, + {"36","3"}, + {"32","24"}, + {"30","0"}, + {"19","1"}, + {"18","0"}, + {"17","2"}, + {"16","0"}, + {"15","0"}, + {"14","1"}, + {"13","0"}, + {"12","1"}, + {"11","0"}, + {"10","1"}, + {"59","0"}, + {"58","1"}, + {"57","0"}, + {"56","0"}, + {"55","4"}, + {"29","2"}, + {"27","2"}, + {"26","0"}, + {"25","5"}, + {"24","3"}, + {"23","1"}, + {"22","3"}, + {"21","2"}, + {"20","0"}])), + ?assertMatch(ExpectedResult, lists:sort(Data)). + +log_382cfe5b_test() -> + {ok, Data} = + run_log(fix_rebar_brokenness("log-382cfe5b-0ac2-48b8-83d1-717cb4620990.txt")), + ExpectedResult = lists:sort(versionify([{"18","0"}, + {"17","0"}, + {"15","1"}, + {"14","0"}, + {"10","0"}, + {"7","0"}, + {"6","0"}, + {"5","0"}, + {"4","0"}, + {"3","0"}, + {"2","1"}, + {"1","0"}, + {"0","0"}])), + ?assertMatch(ExpectedResult, lists:sort(Data)). + +log_d3564ef6_test() -> + {ok, Data} = run_log(fix_rebar_brokenness("log-d3564ef6-6437-41e7-90b6-dbdb849551a6_mod.txt")), + ExpectedResult = lists:sort(versionify([{"57","5"}, + {"56","3"}, + {"55","4"}, + {"54","0"}, + {"53","1"}, + {"82","0"}, + {"81","0"}, + {"80","1"}, + {"29","0"}, + {"28","5"}, + {"27","3"}, + {"26","1"}, + {"25","3"}, + {"24","2"}, + {"23","0"}, + {"22","1"}, + {"21","0"}, + {"20","2"}, + {"75","32"}, + {"79","2"}, + {"78","4"}, + {"74","7"}, + {"73","11"}, + {"72","0"}, + {"70","1"}, + {"47","4"}, + {"45","1"}, + {"44","1"}, + {"43","7"}, + {"42","1"}, + {"41","2"}, + {"40","2"}, + {"19","0"}, + {"18","0"}, + {"17","1"}, + {"16","0"}, + {"15","1"}, + {"14","0"}, + {"13","1"}, + {"12","0"}, + {"11","0"}, + {"10","0"}, + {"9","2"}, + {"4","5"}, + {"3","2"}, + {"0","3"}, + {"69","0"}, + {"68","1"}, + {"67","7"}, + {"39","3"}, + {"35","24"}, + {"33","0"}, + {"32","2"}, + {"30","2"}])), + ?assertMatch(ExpectedResult, lists:sort(Data)). + +log_ea2d264b_test() -> + {ok, Data} = run_log(fix_rebar_brokenness("log-ea2d264b-003e-4611-94ed-14efc7732083.txt")), + ExpectedResult = lists:sort(versionify([{"18","1"}, + {"17","0"}, + {"16","0"}, + {"15","0"}, + {"14","0"}, + {"13","1"}, + {"10","1"}, + {"9","1"}, + {"8","2"}, + {"6","0"}, + {"5","0"}, + {"4","0"}, + {"3","0"}, + {"2","0"}, + {"1","0"}, + {"0","1"}])), + ?assertMatch(ExpectedResult, lists:sort(Data)). + +%%============================================================================ +%% Internal Functions +%%============================================================================ +versionify(X) when erlang:is_list(X) -> + lists:map(fun versionify/1, X); +versionify({K, V}) -> + {erlang:list_to_binary(K), rcl_depsolver:parse_version(V)}. + +fix_rebar_brokenness(Filename) -> + Alt1 = filename:join(["./test", "data", Filename]), + Alt2 = filename:join(["../test", "data", Filename]), + case filelib:is_regular(Alt1) of + true -> + Alt1; + false -> + case filelib:is_regular(Alt2) of + true -> + Alt2; + false -> + io:format("~p~n", [Alt2]), + erlang:throw(unable_to_find_data_files) + end + end. + +run_data_file(Device) -> + Constraints = get_constraints(io:get_line(Device, "")), + rcl_depsolver:solve(process_packages(read_packages(Device)), Constraints). + +goble_lines(_Device, eof, Acc) -> + lists:reverse(Acc); +goble_lines(_Device, {error, Err}, _Acc) -> + erlang:throw(Err); +goble_lines(Device, ValidVal, Acc) -> + goble_lines(Device, io:get_line(Device, ""), [ValidVal | Acc]). + +goble_lines(Device) -> + goble_lines(Device, io:get_line(Device, ""), []). + +run_log_file(Device) -> + State0 = rcl_depsolver:new_graph(), + {Goals, State2} = + lists:foldl(fun(Line, Data) -> + process_add_goal(Line, + process_add_constraint(Line, + process_add_package(Line, Data))) + end, {[], State0}, goble_lines(Device)), + rcl_depsolver:solve(State2, Goals). + +read_packages(Device) -> + process_line(Device, io:get_line(Device, ""), []). + +process_line(Device, eof, Acc) -> + file:close(Device), + Acc; +process_line(Device, [], Acc) -> + process_line(Device, io:get_line(Device, ""), + Acc); +process_line(Device, "\n", Acc) -> + process_line(Device, io:get_line(Device, ""), + Acc); +process_line(Device, [$\s | Rest], [{Pkg, Vsn, Deps} | Acc]) -> + [DepPackage, Type, DepVsn] = string:tokens(Rest, " \n"), + Dep = + case Type of + "=" -> + {DepPackage, DepVsn}; + ">=" -> + {DepPackage, DepVsn, gte} + end, + process_line(Device, io:get_line(Device, ""), + [{Pkg, Vsn, [Dep | Deps]} | Acc]); +process_line(Device, Pkg, Acc) -> + [Package, Vsn] = string:tokens(Pkg, " \n"), + process_line(Device, io:get_line(Device, ""), + [{Package, Vsn, []} | Acc]). + +process_packages(Pkgs) -> + lists:foldl(fun({Pkg, Vsn, Constraints}, Dom0) -> + rcl_depsolver:add_package_version(Dom0, Pkg, Vsn, Constraints) + end, rcl_depsolver:new_graph(), Pkgs). + +get_constraints(ConLine) -> + AppVsns = string:tokens(ConLine, " \n"), + lists:map(fun(AppCon) -> + parse_app(AppCon, []) + end, AppVsns). +parse_app([$= | Rest], Acc) -> + {lists:reverse(Acc), Rest}; +parse_app([$>, $= | Rest], Acc) -> + {lists:reverse(Acc), Rest, gte}; +parse_app([Else | Rest], Acc) -> + parse_app(Rest, [Else | Acc]); +parse_app([], Acc) -> + lists:reverse(Acc). + +process_add_package(Line, {Goals, State0}) -> + case re:run(Line, ?ADD_PKG, [{capture, all, list}]) of + {match, [_All, _InstNumber, PkgName, _PkgCount, VersionCount]} -> + {Goals, + lists:foldl(fun(PkgVsn, State1) -> + rcl_depsolver:add_package_version(State1, + PkgName, + erlang:integer_to_list(PkgVsn), + []) + end, State0, lists:seq(0, + erlang:list_to_integer(VersionCount)))}; + _ -> + {Goals, State0} + end. + +process_add_constraint(Line, {Goals, State0}) -> + case re:run(Line, ?ADD_VC, [{capture, all, list}]) of + {match, [_All, _InstNumber, Pkg, Vsn, Dep, _Ignore, DepVsn]} -> + {Goals, + rcl_depsolver:add_package_version(State0, Pkg, Vsn, [{Dep, DepVsn}])}; + _ -> + {Goals, State0} + end. + +process_add_goal(Line, {Goals, State0}) -> + case re:run(Line, ?ADD_GOAL, [{capture, all, list}]) of + {match,[_All, _InstNumber, NewGoal]} -> + {[NewGoal | Goals], State0}; + _ -> + {Goals, State0} + end. diff --git a/test/rcl_depsolver_tests.erl b/test/rcl_depsolver_tests.erl new file mode 100644 index 0000000..eae31a4 --- /dev/null +++ b/test/rcl_depsolver_tests.erl @@ -0,0 +1,495 @@ +%% -*- erlang-indent-level: 4; indent-tabs-mode: nil; fill-column: 80 -*- +%% ex: ts=4 sx=4 et +%% +%%------------------------------------------------------------------- +%% Copyright 2012 Opscode, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% @author Eric Merritt +%%------------------------------------------------------------------- +-module(rcl_depsolver_tests). + +-include_lib("eunit/include/eunit.hrl"). + +%%============================================================================ +%% Tests +%%============================================================================ + +first_test() -> + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1", [{app2, "0.2+build.33"}, + {app3, "0.2", '>='}]}, + {"0.2", []}, + {"0.3", []}]}, + {app2, [{"0.1", []}, + {"0.2+build.33",[{app3, "0.3"}]}, + {"0.3", []}]}, + {app3, [{"0.1", []}, + {"0.2", []}, + {"0.3", []}]}]), + + + case rcl_depsolver:solve(Dom0, [{app1, "0.1"}]) of + {ok,[{app3,{{0,3},{[],[]}}}, + {app2,{{0,2},{[],[<<"build">>,33]}}}, + {app1,{{0,1},{[],[]}}}]} -> + ok; + E -> + erlang:throw({invalid_result, E}) + end. + +second_test() -> + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1", [{app2, "0.1", '>='}, + {app4, "0.2"}, + {app3, "0.2", '>='}]}, + {"0.2", []}, + {"0.3", []}]}, + {app2, [{"0.1", [{app3, "0.2", gte}]}, + {"0.2", [{app3, "0.2", gte}]}, + {"0.3", [{app3, "0.2", '>='}]}]}, + {app3, [{"0.1", [{app4, "0.2", '>='}]}, + {"0.2", [{app4, "0.2"}]}, + {"0.3", []}]}, + {app4, [{"0.1", []}, + {"0.2", [{app2, "0.2", gte}, + {app3, "0.3"}]}, + {"0.3", []}]}]), + + X = rcl_depsolver:solve(Dom0, [{app1, "0.1"}, + {app2, "0.3"}]), + + ?assertMatch({ok, [{app3,{{0,3},{[],[]}}}, + {app2,{{0,3},{[],[]}}}, + {app4,{{0,2},{[],[]}}}, + {app1,{{0,1},{[],[]}}}]}, + X). + +third_test() -> + + Pkg1Deps = [{app2, "0.1.0", '>='}, + {app3, "0.1.1", "0.1.5", between}], + + Pkg2Deps = [{app4, "5.0.0", gte}], + Pkg3Deps = [{app5, "2.0.0", '>='}], + Pkg4Deps = [app5], + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1.0", Pkg1Deps}, + {"0.2", Pkg1Deps}, + {"3.0", Pkg1Deps}]}, + {app2, [{"0.0.1", Pkg2Deps}, + {"0.1", Pkg2Deps}, + {"1.0", Pkg2Deps}, + {"3.0", Pkg2Deps}]}, + {app3, [{"0.1.0", Pkg3Deps}, + {"0.1.3", Pkg3Deps}, + {"2.0.0", Pkg3Deps}, + {"3.0.0", Pkg3Deps}, + {"4.0.0", Pkg3Deps}]}, + {app4, [{"0.1.0", Pkg4Deps}, + {"0.3.0", Pkg4Deps}, + {"5.0.0", Pkg4Deps}, + {"6.0.0", Pkg4Deps}]}, + {app5, [{"0.1.0", []}, + {"0.3.0", []}, + {"2.0.0", []}, + {"6.0.0", []}]}]), + + ?assertMatch({ok, [{app5,{{6,0,0},{[],[]}}}, + {app3,{{0,1,3},{[],[]}}}, + {app4,{{6,0,0},{[],[]}}}, + {app2,{{3,0},{[],[]}}}, + {app1,{{3,0},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [{app1, "3.0"}])), + + + ?assertMatch({ok, [{app5,{{6,0,0},{[],[]}}}, + {app3,{{0,1,3},{[],[]}}}, + {app4,{{6,0,0},{[],[]}}}, + {app2,{{3,0},{[],[]}}}, + {app1,{{3,0},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [app1])). + +fail_test() -> + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), + [{app1, [{"0.1", [{app2, "0.2"}, + {app3, "0.2", gte}]}, + {"0.2", []}, + {"0.3", []}]}, + {app2, [{"0.1", []}, + {"0.2",[{app3, "0.1"}]}, + {"0.3", []}]}, + {app3, [{"0.1", []}, + {"0.2", []}, + {"0.3", []}]}]), + + Ret = rcl_depsolver:solve(Dom0, [{app1, "0.1"}]), + %% We do this to make sure all errors can be formated. + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error, + [{[{[{app1,{{0,1},{[],[]}}}], + [{app1,{{0,1},{[],[]}}},[[{app2,{{0,2},{[],[]}}}]]]}], + [{{app2,{{0,2},{[],[]}}},[{app3,{{0,1},{[],[]}}}]}, + {{app1,{{0,1},{[],[]}}},[{app3,{{0,2},{[],[]}},gte}]}]}]}, + Ret). + +conflicting_passing_test() -> + Pkg1Deps = [{app2, "0.1.0", '>='}, + {app5, "2.0.0"}, + {app4, "0.3.0", "5.0.0", between}, + {app3, "0.1.1", "0.1.5", between}], + + Pkg2Deps = [{app4, "3.0.0", gte}], + Pkg3Deps = [{app5, "2.0.0", '>='}], + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1.0", Pkg1Deps}, + {"0.1.0", Pkg1Deps}, + {"0.2", Pkg1Deps}, + {"3.0", Pkg1Deps}]}, + {app2, [{"0.0.1", Pkg2Deps}, + {"0.1", Pkg2Deps}, + {"1.0", Pkg2Deps}, + {"3.0", Pkg2Deps}]}, + {app3, [{"0.1.0", Pkg3Deps}, + {"0.1.3", Pkg3Deps}, + {"2.0.0", Pkg3Deps}, + {"3.0.0", Pkg3Deps}, + {"4.0.0", Pkg3Deps}]}, + {app4, [{"0.1.0", [{app5, "0.1.0"}]}, + {"0.3.0", [{app5, "0.3.0"}]}, + {"5.0.0", [{app5, "2.0.0"}]}, + {"6.0.0", [{app5, "6.0.0"}]}]}, + {app5, [{"0.1.0", []}, + {"0.3.0", []}, + {"2.0.0", []}, + {"6.0.0", []}]}]), + + ?assertMatch({ok, [{app5,{{2,0,0},{[],[]}}}, + {app3,{{0,1,3},{[],[]}}}, + {app4,{{5,0,0},{[],[]}}}, + {app2,{{3,0},{[],[]}}}, + {app1,{{3,0},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [{app1, "3.0"}])), + + ?assertMatch({ok, [{app5,{{2,0,0},{[],[]}}}, + {app3,{{0,1,3},{[],[]}}}, + {app4,{{5,0,0},{[],[]}}}, + {app2,{{3,0},{[],[]}}}, + {app1,{{3,0},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [app1, app2, app5])). + + + +circular_dependencies_test() -> + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1.0", [app2]}]}, + {app2, [{"0.0.1", [app1]}]}]), + + ?assertMatch({ok, [{app1,{{0,1,0},{[],[]}}},{app2,{{0,0,1},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [{app1, "0.1.0"}])). + +conflicting_failing_test() -> + Pkg1Deps = [app2, + {app5, "2.0.0", '='}, + {app4, "0.3.0", "5.0.0", between}], + + Pkg2Deps = [{app4, "5.0.0", gte}], + Pkg3Deps = [{app5, "6.0.0"}], + + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"3.0", Pkg1Deps}]}, + {app2, [{"0.0.1", Pkg2Deps}]}, + {app3, [{"0.1.0", Pkg3Deps}]}, + {app4, [{"5.0.0", [{app5, "2.0.0"}]}]}, + {app5, [{"2.0.0", []}, + {"6.0.0", []}]}]), + Ret = rcl_depsolver:solve(Dom0, [app1, app3]), + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error, + [{[{[app1], + [{app1,{{3,0},{[],[]}}}, + [[{app4,{{5,0,0},{[],[]}}}], + [{app2,{{0,0,1},{[],[]}}},[[{app4,{{5,0,0},{[],[]}}}]]]]]}, + {[app3], + [{app3,{{0,1,0},{[],[]}}},[[{app5,{{6,0,0},{[],[]}}}]]]}], + [{{app4,{{5,0,0},{[],[]}}},[{app5,{{2,0,0},{[],[]}}}]}, + {{app1,{{3,0},{[],[]}}},[{app5,{{2,0,0},{[],[]}},'='}]}]}]}, + Ret). + + +pessimistic_major_minor_patch_test() -> + + Pkg1Deps = [{app2, "2.1.1", '~>'}, + {app3, "0.1.1", "0.1.5", between}], + + Pkg2Deps = [{app4, "5.0.0", gte}], + Pkg3Deps = [{app5, "2.0.0", '>='}], + Pkg4Deps = [app5], + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1.0", Pkg1Deps}, + {"0.2", Pkg1Deps}, + {"3.0", Pkg1Deps}]}, + {app2, [{"0.0.1", Pkg2Deps}, + {"0.1", Pkg2Deps}, + {"1.0", Pkg2Deps}, + {"2.1.5", Pkg2Deps}, + {"2.2", Pkg2Deps}, + {"3.0", Pkg2Deps}]}, + {app3, [{"0.1.0", Pkg3Deps}, + {"0.1.3", Pkg3Deps}, + {"2.0.0", Pkg3Deps}, + {"3.0.0", Pkg3Deps}, + {"4.0.0", Pkg3Deps}]}, + {app4, [{"0.1.0", Pkg4Deps}, + {"0.3.0", Pkg4Deps}, + {"5.0.0", Pkg4Deps}, + {"6.0.0", Pkg4Deps}]}, + {app5, [{"0.1.0", []}, + {"0.3.0", []}, + {"2.0.0", []}, + {"6.0.0", []}]}]), + ?assertMatch({ok, [{app5,{{6,0,0},{[],[]}}}, + {app3,{{0,1,3},{[],[]}}}, + {app4,{{6,0,0},{[],[]}}}, + {app2,{{2,1,5},{[],[]}}}, + {app1,{{3,0},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [{app1, "3.0"}])). + +pessimistic_major_minor_test() -> + + Pkg1Deps = [{app2, "2.1", '~>'}, + {app3, "0.1.1", "0.1.5", between}], + + Pkg2Deps = [{app4, "5.0.0", gte}], + Pkg3Deps = [{app5, "2.0.0", '>='}], + Pkg4Deps = [app5], + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1.0", Pkg1Deps}, + {"0.2", Pkg1Deps}, + {"3.0", Pkg1Deps}]}, + {app2, [{"0.0.1", Pkg2Deps}, + {"0.1", Pkg2Deps}, + {"1.0", Pkg2Deps}, + {"2.1.5", Pkg2Deps}, + {"2.2", Pkg2Deps}, + {"3.0", Pkg2Deps}]}, + {app3, [{"0.1.0", Pkg3Deps}, + {"0.1.3", Pkg3Deps}, + {"2.0.0", Pkg3Deps}, + {"3.0.0", Pkg3Deps}, + {"4.0.0", Pkg3Deps}]}, + {app4, [{"0.1.0", Pkg4Deps}, + {"0.3.0", Pkg4Deps}, + {"5.0.0", Pkg4Deps}, + {"6.0.0", Pkg4Deps}]}, + {app5, [{"0.1.0", []}, + {"0.3.0", []}, + {"2.0.0", []}, + {"6.0.0", []}]}]), + ?assertMatch({ok, [{app5,{{6,0,0},{[],[]}}}, + {app3,{{0,1,3},{[],[]}}}, + {app4,{{6,0,0},{[],[]}}}, + {app2,{{2,2},{[],[]}}}, + {app1,{{3,0},{[],[]}}}]}, + rcl_depsolver:solve(Dom0, [{app1, "3.0"}])). + +filter_versions_test() -> + + Cons = [{app2, "2.1", '~>'}, + {app3, "0.1.1", "0.1.5", between}, + {app4, "5.0.0", gte}, + {app5, "2.0.0", '>='}, + app5], + + Packages = [{app1, "0.1.0"}, + {app1, "0.2"}, + {app1, "0.2"}, + {app1, "3.0"}, + {app2, "0.0.1"}, + {app2, "0.1"}, + {app2, "1.0"}, + {app2, "2.1.5"}, + {app2, "2.2"}, + {app2, "3.0"}, + {app3, "0.1.0"}, + {app3, "0.1.3"}, + {app3, "2.0.0"}, + {app3, "3.0.0"}, + {app3, "4.0.0"}, + {app4, "0.1.0"}, + {app4, "0.3.0"}, + {app4, "5.0.0"}, + {app4, "6.0.0"}, + {app5, "0.1.0"}, + {app5, "0.3.0"}, + {app5, "2.0.0"}, + {app5, "6.0.0"}], + + ?assertMatch({ok, [{app1,"0.1.0"}, + {app1,"0.2"}, + {app1,"0.2"}, + {app1,"3.0"}, + {app2,"2.1.5"}, + {app2,"2.2"}, + {app3,"0.1.3"}, + {app4,"5.0.0"}, + {app4,"6.0.0"}, + {app5,"2.0.0"}, + {app5,"6.0.0"}]}, + rcl_depsolver:filter_packages(Packages, Cons)), + + Ret = rcl_depsolver:filter_packages(Packages, + [{"foo", "1.0.0", '~~~~'} | Cons]), + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error, {invalid_constraints, [{<<"foo">>,{{1,0,0},{[],[]}},'~~~~'}]}}, Ret). + + +-spec missing_test() -> ok. +missing_test() -> + + Dom0 = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), [{app1, [{"0.1", [{app2, "0.2"}, + {app3, "0.2", '>='}, + {app4, "0.2", '='}]}, + {"0.2", [{app4, "0.2"}]}, + {"0.3", [{app4, "0.2", '='}]}]}, + {app2, [{"0.1", []}, + {"0.2",[{app3, "0.3"}]}, + {"0.3", []}]}, + {app3, [{"0.1", []}, + {"0.2", []}, + {"0.3", []}]}]), + Ret1 = rcl_depsolver:solve(Dom0, [{app4, "0.1"}, {app3, "0.1"}]), + _ = rcl_depsolver:format_error(Ret1), + ?assertMatch({error,{unreachable_package,app4}}, Ret1), + + Ret2 = rcl_depsolver:solve(Dom0, [{app1, "0.1"}]), + _ = rcl_depsolver:format_error(Ret2), + ?assertMatch({error,{unreachable_package,app4}}, + Ret2). + + +binary_test() -> + + World = [{<<"foo">>, [{<<"1.2.3">>, [{<<"bar">>, <<"2.0.0">>, gt}]}]}, + {<<"bar">>, [{<<"2.0.0">>, [{<<"foo">>, <<"3.0.0">>, gt}]}]}], + Ret = rcl_depsolver:solve(rcl_depsolver:add_packages(rcl_depsolver:new_graph(), + World), + [<<"foo">>]), + + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error, + [{[{[<<"foo">>],[{<<"foo">>,{{1,2,3},{[],[]}}}]}], + [{{<<"foo">>,{{1,2,3},{[],[]}}}, + [{<<"bar">>,{{2,0,0},{[],[]}},gt}]}]}]}, Ret). + +%% +%% We don't have bar cookbook +%% +%% Ruby gives +%% "message":"Unable to satisfy constraints on cookbook bar, which does not +%% exist, due to run list item (foo >= 0.0.0). Run list items that may result +%% in a constraint on bar: [(foo = 1.2.3) -> (bar > 2.0.0)]", +%% "unsatisfiable_run_list_item":"(foo >= 0.0.0)", +%% "non_existent_cookbooks":["bar"]," +%% "most_constrained_cookbooks":[]}" +%% +doesnt_exist_test() -> + Constraints = [{<<"foo">>,[{<<"1.2.3">>, [{<<"bar">>, <<"2.0.0">>, gt}]}]}], + World = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), Constraints), + Ret = rcl_depsolver:solve(World, [<<"foo">>]), + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error,{unreachable_package,<<"bar">>}}, Ret). + +%% +%% We have v 2.0.0 of bar but want > 2.0.0 +%% +%% Ruby gives +%% "message":"Unable to satisfy constraints on cookbook bar due to run list item +%% (foo >= 0.0.0). Run list items that may result in a constraint on bar: [(foo +%% = 1.2.3) -> (bar > 2.0.0)]", +%% "unsatisfiable_run_list_item":"(foo >= 0.0.0)", +%% "non_existent_cookbooks":[], +%% "most_constrained_cookbooks":["bar 2.0.0 -> []"] +%% +not_new_enough_test() -> + + Constraints = [{<<"foo">>, [{<<"1.2.3">>, [{<<"bar">>, <<"2.0.0">>, gt}]}]}, + {<<"bar">>, [{<<"2.0.0">>, []}]}], + World = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), Constraints), + Ret = rcl_depsolver:solve(World, [<<"foo">>]), + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error, + [{[{[<<"foo">>],[{<<"foo">>,{{1,2,3},{[],[]}}}]}], + [{{<<"foo">>,{{1,2,3},{[],[]}}}, + [{<<"bar">>,{{2,0,0},{[],[]}},gt}]}]}]}, Ret). + +%% +%% circular deps are bad +%% +%% Ruby gives +%% "message":"Unable to satisfy constraints on cookbook bar due to run list item (foo >= 0.0.0). +%% Run list items that may result in a constraint on bar: [(foo = 1.2.3) -> (bar > 2.0.0)]", +%% "unsatisfiable_run_list_item":"(foo >= 0.0.0)", +%% "non_existent_cookbooks":[], +%% "most_constrained_cookbooks:["bar = 2.0.0 -> [(foo > 3.0.0)]"] +%% +impossible_dependency_test() -> + World = rcl_depsolver:add_packages(rcl_depsolver:new_graph(), + [{<<"foo">>, [{<<"1.2.3">>,[{ <<"bar">>, <<"2.0.0">>, gt}]}]}, + {<<"bar">>, [{<<"2.0.0">>, [{ <<"foo">>, <<"3.0.0">>, gt}]}]}]), + Ret = rcl_depsolver:solve(World, [<<"foo">>]), + _ = rcl_depsolver:format_error(Ret), + ?assertMatch({error, + [{[{[<<"foo">>],[{<<"foo">>,{{1,2,3},{[],[]}}}]}], + [{{<<"foo">>,{{1,2,3},{[],[]}}}, + [{<<"bar">>,{{2,0,0},{[],[]}},gt}]}]}]}, Ret). + +%% +%% Formatting tests +%% +format_test_() -> + [{"format constraint", + [equal_bin_string(<<"foo">>, rcl_depsolver:format_constraint(<<"foo">>)), + equal_bin_string(<<"foo">>, rcl_depsolver:format_constraint(foo)), + equal_bin_string(<<"(foo = 1.2.0)">>, rcl_depsolver:format_constraint({<<"foo">>, {{1,2,0}, {[], []}}})), + equal_bin_string(<<"(foo = 1.2.0)">>, rcl_depsolver:format_constraint({<<"foo">>, {{1,2,0}, {[], []}}, '='})), + equal_bin_string(<<"(foo > 1.2.0)">>, + rcl_depsolver:format_constraint({<<"foo">>, {{1,2,0}, {[], []}}, '>'})), + equal_bin_string(<<"(foo > 1.2.0)">>, + rcl_depsolver:format_constraint({<<"foo">>, {{1,2,0}, {[], []}}, gt})), + equal_bin_string(<<"(foo between 1.2.0 and 1.3.0)">>, + rcl_depsolver:format_constraint({<<"foo">>,{{1,2,0}, {[], []}}, + {{1,3,0}, {[], []}}, between})), + equal_bin_string(<<"(foo > 1.2.0-alpha.1+build.36)">>, + rcl_depsolver:format_constraint({<<"foo">>, + {{1,2,0}, {["alpha", 1], ["build", 36]}}, gt})) + ] + }, + {"format roots", + [equal_bin_string(<<"(bar = 1.2.0)">>, + rcl_depsolver:format_roots([ [{<<"bar">>, {{1,2,0},{[],[]}}}] ])), + equal_bin_string(<<"(bar = 1.2.0), foo">>, + rcl_depsolver:format_roots([[<<"foo">>, + {<<"bar">>, {{1,2,0},{[],[]}}}]])), + equal_bin_string(<<"(bar = 1.2.0), foo">>, + rcl_depsolver:format_roots([[<<"foo">>], [{<<"bar">>, {{1,2,0},{[],[]}}}]])) + ] + } + ]. + +%% +%% Internal functions +%% +equal_bin_string(Expected, Got) -> + ?_assertEqual(Expected, erlang:iolist_to_binary(Got)). -- cgit v1.2.3