dep_selector 0.1.1 → 1.0.0.alpha.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/dep_gecode/dep_selector_swig.i +6 -3
- data/ext/dep_gecode/dep_selector_swig_wrap.cxx +8 -17
- data/ext/dep_gecode/dep_selector_to_gecode.cpp +14 -10
- data/ext/dep_gecode/dep_selector_to_gecode.h +2 -2
- data/ext/dep_gecode/dep_selector_to_gecode_interface.cpp +12 -12
- data/ext/dep_gecode/dep_selector_to_gecode_interface.h +1 -1
- data/lib/dep_selector/dep_selector_version.rb +1 -1
- data/lib/dep_selector/gecode_wrapper.rb +32 -12
- data/lib/dep_selector/package.rb +1 -1
- data/lib/dep_selector/selector.rb +9 -6
- metadata +16 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5a48552c27513a71e2f314a0cfa5a5c7481f2de
|
4
|
+
data.tar.gz: cd35c4124a5fba219a2d52741869a96782a77a8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e37053fb8f2176d4f367f483e16990269b2dab226a09b9e6708a4f9643027cc025b00ac0e2c8546482e0f31d07bca35afde31d2d476d82ed7bedc58ae9bb98c
|
7
|
+
data.tar.gz: 882206dd0d935fa751af3132c9114fa67fce40a42167e6ffee4545518962c4fe031dc0b95cab69f8379ace674a90ad3006b3af89b7e66383470e7ec63bbb2f61
|
@@ -39,9 +39,12 @@ int VersionProblemPackageCount(VersionProblem *p);
|
|
39
39
|
int AddPackage(VersionProblem *problem, int min, int max, int currentVersion);
|
40
40
|
// Add constraint for package pkg @ version,
|
41
41
|
// that dependentPackage is at version [minDependentVersion,maxDependentVersion]
|
42
|
-
//
|
43
|
-
|
44
|
-
|
42
|
+
//
|
43
|
+
// This used to return a boolean value describing when the problem
|
44
|
+
// became insoluble. This was never used, and didn't appear to work
|
45
|
+
// at all, and so has been replaced with returning void.
|
46
|
+
void AddVersionConstraint(VersionProblem *problem, int packageId, int version,
|
47
|
+
int dependentPackageId, int minDependentVersion, int maxDependentVersion);
|
45
48
|
void MarkPackageSuspicious(VersionProblem *problem, int packageId);
|
46
49
|
|
47
50
|
void MarkPackageRequired(VersionProblem *problem, int packageId);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* ----------------------------------------------------------------------------
|
2
2
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
3
|
-
* Version 2.0.
|
3
|
+
* Version 2.0.9
|
4
4
|
*
|
5
5
|
* This file is not intended to be easily readable and contains a number of
|
6
6
|
* coding conventions designed to improve portability and efficiency. Do not make
|
@@ -1398,7 +1398,7 @@ SWIG_Ruby_AppendOutput(VALUE target, VALUE o) {
|
|
1398
1398
|
|
1399
1399
|
/* Runtime API */
|
1400
1400
|
|
1401
|
-
#define SWIG_GetModule(clientdata) SWIG_Ruby_GetModule()
|
1401
|
+
#define SWIG_GetModule(clientdata) SWIG_Ruby_GetModule(clientdata)
|
1402
1402
|
#define SWIG_SetModule(clientdata, pointer) SWIG_Ruby_SetModule(pointer)
|
1403
1403
|
|
1404
1404
|
|
@@ -1552,7 +1552,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1552
1552
|
downcast methods. */
|
1553
1553
|
if (obj != Qnil) {
|
1554
1554
|
VALUE value = rb_iv_get(obj, "@__swigtype__");
|
1555
|
-
char* type_name = RSTRING_PTR(value);
|
1555
|
+
const char* type_name = RSTRING_PTR(value);
|
1556
1556
|
|
1557
1557
|
if (strcmp(type->name, type_name) == 0) {
|
1558
1558
|
return obj;
|
@@ -1734,7 +1734,7 @@ SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) {
|
|
1734
1734
|
}
|
1735
1735
|
|
1736
1736
|
SWIGRUNTIME swig_module_info *
|
1737
|
-
SWIG_Ruby_GetModule(void)
|
1737
|
+
SWIG_Ruby_GetModule(void *SWIGUNUSEDPARM(clientdata))
|
1738
1738
|
{
|
1739
1739
|
VALUE pointer;
|
1740
1740
|
swig_module_info *ret = 0;
|
@@ -1831,7 +1831,7 @@ static VALUE mDep_gecode;
|
|
1831
1831
|
#define SWIG_RUBY_THREAD_END_BLOCK
|
1832
1832
|
|
1833
1833
|
|
1834
|
-
#define SWIGVERSION
|
1834
|
+
#define SWIGVERSION 0x020009
|
1835
1835
|
#define SWIG_VERSION SWIGVERSION
|
1836
1836
|
|
1837
1837
|
|
@@ -1862,7 +1862,7 @@ SWIG_ruby_failed(void)
|
|
1862
1862
|
}
|
1863
1863
|
|
1864
1864
|
|
1865
|
-
/*@SWIG:/usr/local/Cellar/swig/2.0.
|
1865
|
+
/*@SWIG:/usr/local/Cellar/swig/2.0.9/share/swig/2.0.9/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
1866
1866
|
SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE *args)
|
1867
1867
|
{
|
1868
1868
|
VALUE obj = args[0];
|
@@ -1944,11 +1944,7 @@ SWIGINTERN int
|
|
1944
1944
|
SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc)
|
1945
1945
|
{
|
1946
1946
|
if (TYPE(obj) == T_STRING) {
|
1947
|
-
#if defined(StringValuePtr)
|
1948
1947
|
char *cstr = StringValuePtr(obj);
|
1949
|
-
#else
|
1950
|
-
char *cstr = STR2CSTR(obj);
|
1951
|
-
#endif
|
1952
1948
|
size_t size = RSTRING_LEN(obj) + 1;
|
1953
1949
|
if (cptr) {
|
1954
1950
|
if (alloc) {
|
@@ -2185,8 +2181,6 @@ _wrap_AddVersionConstraint(int argc, VALUE *argv, VALUE self) {
|
|
2185
2181
|
int ecode5 = 0 ;
|
2186
2182
|
int val6 ;
|
2187
2183
|
int ecode6 = 0 ;
|
2188
|
-
bool result;
|
2189
|
-
VALUE vresult = Qnil;
|
2190
2184
|
|
2191
2185
|
if ((argc < 6) || (argc > 6)) {
|
2192
2186
|
rb_raise(rb_eArgError, "wrong # of arguments(%d for 6)",argc); SWIG_fail;
|
@@ -2221,9 +2215,8 @@ _wrap_AddVersionConstraint(int argc, VALUE *argv, VALUE self) {
|
|
2221
2215
|
SWIG_exception_fail(SWIG_ArgError(ecode6), Ruby_Format_TypeError( "", "int","AddVersionConstraint", 6, argv[5] ));
|
2222
2216
|
}
|
2223
2217
|
arg6 = static_cast< int >(val6);
|
2224
|
-
|
2225
|
-
|
2226
|
-
return vresult;
|
2218
|
+
AddVersionConstraint(arg1,arg2,arg3,arg4,arg5,arg6);
|
2219
|
+
return Qnil;
|
2227
2220
|
fail:
|
2228
2221
|
return Qnil;
|
2229
2222
|
}
|
@@ -2631,8 +2624,6 @@ SWIG_InitializeModule(void *clientdata) {
|
|
2631
2624
|
swig_module_info *module_head, *iter;
|
2632
2625
|
int found, init;
|
2633
2626
|
|
2634
|
-
clientdata = clientdata;
|
2635
|
-
|
2636
2627
|
/* check to see if the circular list has been setup, if not, set it up */
|
2637
2628
|
if (swig_module.next==0) {
|
2638
2629
|
/* Initialize the swig_module */
|
@@ -222,7 +222,7 @@ VersionProblem::AddPackage(int minVersion, int maxVersion, int currentVersion)
|
|
222
222
|
return index;
|
223
223
|
}
|
224
224
|
|
225
|
-
|
225
|
+
void
|
226
226
|
VersionProblem::AddVersionConstraint(int packageId, int version,
|
227
227
|
int dependentPackageId, int minDependentVersion, int maxDependentVersion)
|
228
228
|
{
|
@@ -255,6 +255,10 @@ VersionProblem::AddVersionConstraint(int packageId, int version,
|
|
255
255
|
|
256
256
|
rel(*this, disabled_package_variables[dependentPackageId], BOT_OR, depend_match, predicated_depend_match);
|
257
257
|
rel(*this, version_match, BOT_IMP, predicated_depend_match, 1);
|
258
|
+
|
259
|
+
// This used to return a boolean value describing when the problem
|
260
|
+
// became insoluble. This was never used, and didn't appear to work
|
261
|
+
// at all, and so has been replaced with returning void.
|
258
262
|
}
|
259
263
|
|
260
264
|
void
|
@@ -500,23 +504,23 @@ void VersionProblem::BuildCostVector(IntVarArgs & costVector) const {
|
|
500
504
|
|
501
505
|
|
502
506
|
|
503
|
-
IntVar
|
507
|
+
IntVar * VersionProblem::GetPackageVersionVar(int packageId)
|
504
508
|
{
|
505
509
|
if (packageId < cur_package) {
|
506
|
-
return package_versions[packageId];
|
510
|
+
return &package_versions[packageId];
|
507
511
|
} else {
|
508
512
|
if (debugLogging) {
|
509
513
|
DEBUG_STREAM << debugPrefix << "Bad package Id " << packageId << " >= " << cur_package << std::endl;
|
510
514
|
DEBUG_STREAM.flush();
|
511
515
|
}
|
512
|
-
|
516
|
+
return NULL;
|
513
517
|
}
|
514
518
|
}
|
515
519
|
|
516
520
|
int VersionProblem::GetPackageVersion(int packageId)
|
517
521
|
{
|
518
|
-
IntVar
|
519
|
-
if (1 == var
|
522
|
+
IntVar *var = GetPackageVersionVar(packageId);
|
523
|
+
if (1 == var->size()) return var->val();
|
520
524
|
return UNRESOLVED_VARIABLE;
|
521
525
|
}
|
522
526
|
bool VersionProblem::GetPackageDisabledState(int packageId)
|
@@ -526,11 +530,11 @@ bool VersionProblem::GetPackageDisabledState(int packageId)
|
|
526
530
|
|
527
531
|
int VersionProblem::GetMax(int packageId)
|
528
532
|
{
|
529
|
-
return GetPackageVersionVar(packageId)
|
533
|
+
return GetPackageVersionVar(packageId)->max();
|
530
534
|
}
|
531
535
|
int VersionProblem::GetMin(int packageId)
|
532
536
|
{
|
533
|
-
return GetPackageVersionVar(packageId)
|
537
|
+
return GetPackageVersionVar(packageId)->min();
|
534
538
|
}
|
535
539
|
|
536
540
|
int VersionProblem::GetDisabledVariableCount()
|
@@ -567,8 +571,8 @@ void VersionProblem::Print(std::ostream & out)
|
|
567
571
|
|
568
572
|
void VersionProblem::PrintPackageVar(std::ostream & out, int packageId)
|
569
573
|
{
|
570
|
-
IntVar
|
571
|
-
out << "PackageId: " << packageId << " Sltn: " << var << " disabled: " << disabled_package_variables[packageId] << " at latest: " << at_latest[packageId];
|
574
|
+
IntVar *var = GetPackageVersionVar(packageId);
|
575
|
+
out << "PackageId: " << packageId << " Sltn: " << *var << " disabled: " << disabled_package_variables[packageId] << " at latest: " << at_latest[packageId];
|
572
576
|
}
|
573
577
|
|
574
578
|
bool VersionProblem::CheckPackageId(int id)
|
@@ -75,11 +75,11 @@ public:
|
|
75
75
|
int Size();
|
76
76
|
int PackageCount();
|
77
77
|
|
78
|
-
IntVar
|
78
|
+
IntVar * GetPackageVersionVar(int packageId);
|
79
79
|
|
80
80
|
virtual int AddPackage(int minVersion, int maxVersion, int currentVersion);
|
81
81
|
|
82
|
-
virtual
|
82
|
+
virtual void AddVersionConstraint(int packageId, int version,
|
83
83
|
int dependentPackageId, int minDependentVersion, int maxDependentVersion);
|
84
84
|
|
85
85
|
// We may wish to indicate that some packages have suspicious constraints, and when chosing packages to disable we
|
@@ -32,7 +32,7 @@
|
|
32
32
|
VersionProblem * VersionProblemCreate(int packageCount, bool dump_stats,
|
33
33
|
bool debug, const char * logId)
|
34
34
|
{
|
35
|
-
|
35
|
+
return new VersionProblem(packageCount, dump_stats, debug, logId);
|
36
36
|
}
|
37
37
|
|
38
38
|
void VersionProblemDestroy(VersionProblem * p)
|
@@ -66,55 +66,55 @@ void VersionProblemPrintPackageVar(VersionProblem *p, int packageId)
|
|
66
66
|
|
67
67
|
// Return ID #
|
68
68
|
int AddPackage(VersionProblem *problem, int min, int max, int currentVersion) {
|
69
|
-
problem->AddPackage(min,max,currentVersion);
|
69
|
+
return problem->AddPackage(min,max,currentVersion);
|
70
70
|
}
|
71
71
|
// Add constraint for package pkg @ version,
|
72
72
|
// that dependentPackage is at version [minDependentVersion,maxDependentVersion]
|
73
73
|
// Returns false if system becomes insoluble.
|
74
|
-
|
74
|
+
void AddVersionConstraint(VersionProblem *problem, int packageId, int version,
|
75
75
|
int dependentPackageId, int minDependentVersion, int maxDependentVersion)
|
76
76
|
{
|
77
|
-
problem->AddVersionConstraint(packageId, version, dependentPackageId, minDependentVersion, maxDependentVersion);
|
77
|
+
return problem->AddVersionConstraint(packageId, version, dependentPackageId, minDependentVersion, maxDependentVersion);
|
78
78
|
}
|
79
79
|
|
80
80
|
void MarkPackageSuspicious(VersionProblem *problem, int packageId)
|
81
81
|
{
|
82
|
-
problem->MarkPackageSuspicious(packageId);
|
82
|
+
return problem->MarkPackageSuspicious(packageId);
|
83
83
|
}
|
84
84
|
|
85
85
|
void MarkPackagePreferredToBeAtLatest(VersionProblem *problem, int packageId, int weight)
|
86
86
|
{
|
87
|
-
problem->MarkPackagePreferredToBeAtLatest(packageId, weight);
|
87
|
+
return problem->MarkPackagePreferredToBeAtLatest(packageId, weight);
|
88
88
|
}
|
89
89
|
|
90
90
|
void MarkPackageRequired(VersionProblem *problem, int packageId)
|
91
91
|
{
|
92
|
-
problem->MarkPackageRequired(packageId);
|
92
|
+
return problem->MarkPackageRequired(packageId);
|
93
93
|
}
|
94
94
|
|
95
95
|
int GetPackageVersion(VersionProblem *problem, int packageId)
|
96
96
|
{
|
97
|
-
problem->GetPackageVersion(packageId);
|
97
|
+
return problem->GetPackageVersion(packageId);
|
98
98
|
}
|
99
99
|
|
100
100
|
bool GetPackageDisabledState(VersionProblem *problem, int packageId)
|
101
101
|
{
|
102
|
-
problem->GetPackageDisabledState(packageId);
|
102
|
+
return problem->GetPackageDisabledState(packageId);
|
103
103
|
}
|
104
104
|
|
105
105
|
int GetPackageMax(VersionProblem *problem, int packageId)
|
106
106
|
{
|
107
|
-
problem->GetMax(packageId);
|
107
|
+
return problem->GetMax(packageId);
|
108
108
|
}
|
109
109
|
|
110
110
|
int GetPackageMin(VersionProblem *problem, int packageId)
|
111
111
|
{
|
112
|
-
problem->GetMin(packageId);
|
112
|
+
return problem->GetMin(packageId);
|
113
113
|
}
|
114
114
|
|
115
115
|
int GetDisabledVariableCount(VersionProblem *problem)
|
116
116
|
{
|
117
|
-
problem->GetDisabledVariableCount();
|
117
|
+
return problem->GetDisabledVariableCount();
|
118
118
|
}
|
119
119
|
|
120
120
|
|
@@ -44,7 +44,7 @@ extern "C" {
|
|
44
44
|
// Add constraint for package pkg @ version,
|
45
45
|
// that dependentPackage is at version [minDependentVersion,maxDependentVersion]
|
46
46
|
// Returns false if system becomes insoluble.
|
47
|
-
|
47
|
+
void AddVersionConstraint(VersionProblem *problem, int packageId, int version,
|
48
48
|
int dependentPackageId, int minDependentVersion, int maxDependentVersion);
|
49
49
|
|
50
50
|
void MarkPackageSuspicious(VersionProblem *problem, int packageId);
|
@@ -17,25 +17,45 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
#
|
19
19
|
|
20
|
-
require
|
21
|
-
require "dep_gecode"
|
20
|
+
require 'securerandom'
|
22
21
|
require 'dep_selector/exceptions'
|
23
22
|
|
23
|
+
begin
|
24
|
+
require "dep_gecode"
|
25
|
+
rescue LoadError
|
26
|
+
warn("Unable to find shared object `dep_gecode' in load path")
|
27
|
+
path = File.expand_path("../../../ext/dep_gecode", __FILE__)
|
28
|
+
warn("Adding ext directory `#{path}' to load path to find development extensions.")
|
29
|
+
$:.unshift(path)
|
30
|
+
require "dep_gecode"
|
31
|
+
end
|
32
|
+
|
24
33
|
module DepSelector
|
34
|
+
|
35
|
+
@dump_statistics = false
|
36
|
+
|
37
|
+
def self.dump_statistics
|
38
|
+
@dump_statistics
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.dump_statistics=(dump_statistics)
|
42
|
+
@dump_statistics = dump_statistics
|
43
|
+
end
|
44
|
+
|
25
45
|
class GecodeWrapper
|
26
46
|
attr_reader :gecode_problem
|
27
47
|
attr_reader :debug_logs_on
|
28
48
|
DontCareConstraint = -1
|
29
49
|
NoMatchConstraint = -2
|
30
|
-
|
31
|
-
|
50
|
+
|
32
51
|
# This insures that we properly deallocate the c++ class at the heart of dep_gecode.
|
33
52
|
# modeled after http://www.mikeperham.com/2010/02/24/the-trouble-with-ruby-finalizers/
|
34
53
|
def initialize(problem_or_package_count, debug=false)
|
35
54
|
if (problem_or_package_count.is_a?(Numeric))
|
36
|
-
logId =
|
55
|
+
logId = SecureRandom.uuid
|
56
|
+
dump_statistics = DepSelector.dump_statistics || debug
|
37
57
|
@debug_logs_on = debug
|
38
|
-
@gecode_problem = Dep_gecode.VersionProblemCreate(problem_or_package_count,
|
58
|
+
@gecode_problem = Dep_gecode.VersionProblemCreate(problem_or_package_count, dump_statistics, debug, logId)
|
39
59
|
else
|
40
60
|
@gecode_problem = problem_or_package_count
|
41
61
|
end
|
@@ -46,9 +66,9 @@ module DepSelector
|
|
46
66
|
end
|
47
67
|
|
48
68
|
def check_package_id(package_id, param_name)
|
49
|
-
raise "Gecode #{param_name} is out of range #{package_id}" unless (package_id >= 0 && package_id < self.size())
|
69
|
+
raise "Gecode #{param_name} is out of range #{package_id}" unless (package_id >= 0 && package_id < self.size())
|
50
70
|
end
|
51
|
-
|
71
|
+
|
52
72
|
def size()
|
53
73
|
raise "Gecode internal failure" if gecode_problem.nil?
|
54
74
|
Dep_gecode.VersionProblemSize(gecode_problem)
|
@@ -105,18 +125,18 @@ module DepSelector
|
|
105
125
|
check_package_id(package_id, "package_id")
|
106
126
|
Dep_gecode.GetPackageDisabledState(gecode_problem, package_id);
|
107
127
|
end
|
108
|
-
|
109
|
-
def get_package_max(package_id)
|
128
|
+
|
129
|
+
def get_package_max(package_id)
|
110
130
|
raise "Gecode internal failure" if gecode_problem.nil?
|
111
131
|
check_package_id(package_id, "package_id")
|
112
132
|
Dep_gecode.GetPackageMax(gecode_problem, package_id)
|
113
133
|
end
|
114
|
-
def get_package_min(package_id)
|
134
|
+
def get_package_min(package_id)
|
115
135
|
raise "Gecode internal failure" if gecode_problem.nil?
|
116
136
|
check_package_id(package_id, "package_id")
|
117
137
|
Dep_gecode.GetPackageMin(gecode_problem, package_id)
|
118
138
|
end
|
119
|
-
def dump()
|
139
|
+
def dump()
|
120
140
|
raise "Gecode internal failure" if gecode_problem.nil?
|
121
141
|
Dep_gecode.VersionProblemDump(gecode_problem)
|
122
142
|
end
|
data/lib/dep_selector/package.rb
CHANGED
@@ -49,7 +49,7 @@ module DepSelector
|
|
49
49
|
# version constraints must abide the include? contract
|
50
50
|
if version_or_constraint.respond_to?(:include?)
|
51
51
|
versions.select do |ver|
|
52
|
-
version_or_constraint.include?(ver)
|
52
|
+
version_or_constraint.include?(ver.version)
|
53
53
|
end
|
54
54
|
else
|
55
55
|
versions.find{|pkg_version| pkg_version.version == version_or_constraint}
|
@@ -67,7 +67,7 @@ module DepSelector
|
|
67
67
|
packages_to_include_in_solve = trim_unreachable_packages(dep_graph, solution_constraints)
|
68
68
|
|
69
69
|
begin
|
70
|
-
Timeout::timeout(@time_bound, Exceptions::TimeBoundExceeded) do
|
70
|
+
Timeout::timeout(@time_bound, Exceptions::TimeBoundExceeded) do
|
71
71
|
# first, try to solve the whole set of constraints
|
72
72
|
solve(dep_graph.clone, solution_constraints, valid_packages, packages_to_include_in_solve)
|
73
73
|
end
|
@@ -109,7 +109,7 @@ module DepSelector
|
|
109
109
|
end
|
110
110
|
disabled_collection << disabled_pkg
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
# Pick the first non-existent or most-constrained package
|
114
114
|
# that was required or the package whose constraints had
|
115
115
|
# to be disabled in order to find a solution and generate
|
@@ -122,7 +122,7 @@ module DepSelector
|
|
122
122
|
disabled_most_constrained_packages.first
|
123
123
|
feedback = error_reporter.give_feedback(dep_graph, solution_constraints, idx,
|
124
124
|
disabled_package_to_report_on)
|
125
|
-
|
125
|
+
|
126
126
|
raise Exceptions::NoSolutionExists.new(feedback, solution_constraints[idx],
|
127
127
|
disabled_non_existent_packages,
|
128
128
|
disabled_most_constrained_packages)
|
@@ -147,7 +147,7 @@ module DepSelector
|
|
147
147
|
# validate solution_constraints and generate its constraints
|
148
148
|
process_soln_constraints(workspace, solution_constraints, valid_packages)
|
149
149
|
|
150
|
-
# solve and trim the solution down to only the
|
150
|
+
# solve and trim the solution down to only the
|
151
151
|
soln = workspace.gecode_wrapper.solve
|
152
152
|
trim_solution(solution_constraints, soln, workspace)
|
153
153
|
end
|
@@ -162,7 +162,7 @@ module DepSelector
|
|
162
162
|
|
163
163
|
soln_constraints_on_non_existent_packages = []
|
164
164
|
soln_constraints_that_match_no_versions = []
|
165
|
-
|
165
|
+
|
166
166
|
# generate constraints imposed by solution_constraints
|
167
167
|
solution_constraints.each do |soln_constraint|
|
168
168
|
# look up the package in the cloned dep_graph that corresponds to soln_constraint
|
@@ -182,6 +182,7 @@ module DepSelector
|
|
182
182
|
end
|
183
183
|
|
184
184
|
pkg_id = pkg.gecode_package_id
|
185
|
+
|
185
186
|
gecode.mark_preferred_to_be_at_latest(pkg_id, 10)
|
186
187
|
gecode.mark_required(pkg_id)
|
187
188
|
|
@@ -203,11 +204,13 @@ module DepSelector
|
|
203
204
|
end
|
204
205
|
|
205
206
|
# Given an assignment of versions to packages, filter down to only
|
206
|
-
# the required assignments
|
207
|
+
# the required assignments
|
207
208
|
def trim_solution(soln_constraints, soln, workspace)
|
208
209
|
trimmed_soln = {}
|
210
|
+
|
209
211
|
soln_constraints.each do |soln_constraint|
|
210
212
|
package = workspace.package(soln_constraint.package.name)
|
213
|
+
|
211
214
|
expand_package(trimmed_soln, package, soln)
|
212
215
|
end
|
213
216
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dep_selector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.alpha.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Walters
|
@@ -9,55 +9,54 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: rspec
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
20
|
+
version: '2.14'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
27
|
+
version: '2.14'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: rake-compiler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 0.9.2
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ~>
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 0.9.2
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: solve
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ~>
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 0.
|
48
|
+
version: '0.8'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.
|
55
|
+
version: '0.8'
|
56
56
|
description: Given packages, versions, and a dependency graph, find a valid assignment
|
57
57
|
of package versions
|
58
58
|
email:
|
59
|
-
-
|
60
|
-
- mark@opscode.com
|
59
|
+
- dev@getchef.com
|
61
60
|
executables: []
|
62
61
|
extensions:
|
63
62
|
- ext/dep_gecode/extconf.rb
|
@@ -86,7 +85,7 @@ files:
|
|
86
85
|
- ext/dep_gecode/dep_selector_to_gecode_interface.cpp
|
87
86
|
- ext/dep_gecode/extconf.rb
|
88
87
|
- ext/dep_gecode/lib/dep_selector_to_gecode.rb
|
89
|
-
homepage: http://github.com/
|
88
|
+
homepage: http://github.com/opscode/dep-selector
|
90
89
|
licenses:
|
91
90
|
- Apache v2
|
92
91
|
metadata: {}
|
@@ -98,12 +97,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
97
|
requirements:
|
99
98
|
- - '>='
|
100
99
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
100
|
+
version: 1.9.2
|
102
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
102
|
requirements:
|
104
|
-
- - '
|
103
|
+
- - '>'
|
105
104
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
105
|
+
version: 1.3.1
|
107
106
|
requirements:
|
108
107
|
- gecode, version 3.5 or greater
|
109
108
|
- g++
|