dep_selector 0.1.1 → 1.0.0.alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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++
|