Skip to content

Commit ba3736c

Browse files
committed
Use new solver in more places
Signed-off-by: J Robert Ray <[email protected]>
1 parent aba8cba commit ba3736c

File tree

11 files changed

+180
-111
lines changed

11 files changed

+180
-111
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/spk-build/src/build/binary.rs

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,16 @@ use spk_schema::{
3535
Variant,
3636
VariantExt,
3737
};
38+
use spk_solve::cdcl_solver::{self, Solver};
3839
use spk_solve::graph::Graph;
3940
use spk_solve::solution::Solution;
40-
use spk_solve::{AbstractSolver, BoxedResolverCallback, Named, ResolverCallback, Solver};
41+
use spk_solve::{
42+
AbstractSolver,
43+
BoxedCdclResolverCallback,
44+
BoxedResolverCallback,
45+
Named,
46+
ResolverCallback,
47+
};
4148
use spk_storage as storage;
4249

4350
use crate::report::{BuildOutputReport, BuildReport, BuildSetupReport};
@@ -133,8 +140,8 @@ pub struct BinaryPackageBuilder<'a, Recipe> {
133140
source: BuildSource,
134141
solver: Solver,
135142
environment: HashMap<String, String>,
136-
source_resolver: BoxedResolverCallback<'a>,
137-
build_resolver: BoxedResolverCallback<'a>,
143+
source_resolver: BoxedCdclResolverCallback<'a>,
144+
build_resolver: BoxedCdclResolverCallback<'a>,
138145
last_solve_graph: Arc<tokio::sync::RwLock<Graph>>,
139146
repos: Vec<Arc<storage::RepositoryHandle>>,
140147
interactive: bool,
@@ -157,14 +164,14 @@ where
157164
prefix: PathBuf::from("/spfs"),
158165
solver: Solver::default(),
159166
environment: Default::default(),
160-
#[cfg(test)]
161-
source_resolver: Box::new(spk_solve::DecisionFormatter::new_testing()),
162-
#[cfg(not(test))]
163-
source_resolver: Box::new(spk_solve::DefaultResolver {}),
164-
#[cfg(test)]
165-
build_resolver: Box::new(spk_solve::DecisionFormatter::new_testing()),
166-
#[cfg(not(test))]
167-
build_resolver: Box::new(spk_solve::DefaultResolver {}),
167+
//#[cfg(test)]
168+
//source_resolver: Box::new(spk_solve::DecisionFormatter::new_testing()),
169+
//#[cfg(not(test))]
170+
source_resolver: Box::new(spk_solve::DefaultCdclResolver {}),
171+
//#[cfg(test)]
172+
//build_resolver: Box::new(spk_solve::DecisionFormatter::new_testing()),
173+
//#[cfg(not(test))]
174+
build_resolver: Box::new(spk_solve::DefaultCdclResolver {}),
168175
last_solve_graph: Arc::new(tokio::sync::RwLock::new(Graph::new())),
169176
repos: Default::default(),
170177
interactive: false,
@@ -222,7 +229,7 @@ where
222229
/// process as needed.
223230
pub fn with_source_resolver<F>(&mut self, resolver: F) -> &mut Self
224231
where
225-
F: ResolverCallback + 'a,
232+
F: ResolverCallback<Solver = cdcl_solver::Solver, SolveResult = Solution> + 'a,
226233
{
227234
self.source_resolver = Box::new(resolver);
228235
self
@@ -236,7 +243,7 @@ where
236243
/// process as needed.
237244
pub fn with_build_resolver<F>(&mut self, resolver: F) -> &mut Self
238245
where
239-
F: ResolverCallback + 'a,
246+
F: ResolverCallback<Solver = cdcl_solver::Solver, SolveResult = Solution> + 'a,
240247
{
241248
self.build_resolver = Box::new(resolver);
242249
self
@@ -441,8 +448,9 @@ where
441448

442449
self.solver.add_request(request.into());
443450

444-
let (solution, graph) = self.source_resolver.solve(&self.solver).await?;
445-
self.last_solve_graph = graph;
451+
//let (solution, graph) = self.source_resolver.solve(&self.solver).await?;
452+
//self.last_solve_graph = graph;
453+
let solution = self.source_resolver.solve(&self.solver).await?;
446454
Ok(solution)
447455
}
448456

@@ -466,8 +474,9 @@ where
466474
self.solver.add_request(request.clone());
467475
}
468476

469-
let (solution, graph) = self.build_resolver.solve(&self.solver).await?;
470-
self.last_solve_graph = graph;
477+
//let (solution, graph) = self.build_resolver.solve(&self.solver).await?;
478+
//self.last_solve_graph = graph;
479+
let solution = self.build_resolver.solve(&self.solver).await?;
471480
Ok(solution)
472481
}
473482

crates/spk-cli/cmd-make-binary/Cargo.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ workspace = true
1414

1515
[features]
1616
migration-to-components = [
17-
"spk-build/migration-to-components",
18-
"spk-cli-common/migration-to-components",
19-
"spk-schema/migration-to-components",
20-
"spk-storage/migration-to-components",
17+
"spk-build/migration-to-components",
18+
"spk-cli-common/migration-to-components",
19+
"spk-schema/migration-to-components",
20+
"spk-storage/migration-to-components",
2121
]
2222

2323
[dependencies]
@@ -30,6 +30,7 @@ spfs = { workspace = true }
3030
spk-build = { workspace = true }
3131
spk-cli-common = { workspace = true }
3232
spk-schema = { workspace = true }
33+
spk-solve = { workspace = true }
3334
spk-storage = { workspace = true }
3435
tokio = { workspace = true, features = ["rt"] }
3536
tracing = { workspace = true }

crates/spk-cli/cmd-make-binary/src/cmd_make_binary.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use spk_schema::ident::{PkgRequest, RequestedBy};
1515
use spk_schema::option_map::HOST_OPTIONS;
1616
use spk_schema::prelude::*;
1717
use spk_schema::OptionMap;
18+
use spk_solve::DefaultCdclResolver;
1819
use spk_storage as storage;
1920

2021
#[cfg(test)]
@@ -172,8 +173,8 @@ impl Run for MakeBinary {
172173
builder
173174
.with_repositories(repos.iter().cloned())
174175
.set_interactive(self.interactive)
175-
.with_source_resolver(&src_formatter)
176-
.with_build_resolver(&build_formatter)
176+
.with_source_resolver(DefaultCdclResolver {})
177+
.with_build_resolver(DefaultCdclResolver {})
177178
.with_allow_circular_dependencies(self.allow_circular_dependencies);
178179

179180
if self.here {

crates/spk-cli/cmd-test/src/cmd_test.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use spk_schema::foundation::ident_build::Build;
1515
use spk_schema::foundation::option_map::{OptionMap, HOST_OPTIONS};
1616
use spk_schema::prelude::*;
1717
use spk_schema::{Recipe, Request, TestStage};
18+
use spk_solve::DefaultCdclResolver;
1819

1920
use crate::test::{PackageBuildTester, PackageInstallTester, PackageSourceTester, Tester};
2021

@@ -177,7 +178,7 @@ impl Run for CmdTest {
177178
.with_repositories(repos.iter().cloned())
178179
.with_requirements(test.additional_requirements())
179180
.with_source(source.clone())
180-
.watch_environment_resolve(&src_formatter);
181+
.watch_environment_resolve(DefaultCdclResolver {});
181182

182183
Box::new(tester)
183184
}
@@ -208,8 +209,8 @@ impl Run for CmdTest {
208209
},
209210
),
210211
)
211-
.with_source_resolver(&build_src_formatter)
212-
.with_build_resolver(&build_formatter);
212+
.with_source_resolver(DefaultCdclResolver {})
213+
.with_build_resolver(DefaultCdclResolver {});
213214

214215
Box::new(tester)
215216
}
@@ -227,7 +228,7 @@ impl Run for CmdTest {
227228
.with_requirements(test.additional_requirements())
228229
.with_requirements(options_reqs.clone())
229230
.with_source(source.clone())
230-
.watch_environment_resolve(&install_formatter);
231+
.watch_environment_resolve(DefaultCdclResolver {});
231232

232233
Box::new(tester)
233234
}

crates/spk-cli/cmd-test/src/test/build.rs

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ use spk_schema::foundation::option_map::OptionMap;
1515
use spk_schema::ident::{PkgRequest, PreReleasePolicy, RangeIdent, Request, RequestedBy};
1616
use spk_schema::{AnyIdent, Recipe, SpecRecipe};
1717
use spk_solve::solution::Solution;
18-
use spk_solve::{AbstractSolver, BoxedResolverCallback, DefaultResolver, ResolverCallback, Solver};
18+
use spk_solve::{
19+
cdcl_solver,
20+
AbstractSolver,
21+
BoxedCdclResolverCallback,
22+
BoxedResolverCallback,
23+
DefaultCdclResolver,
24+
DefaultResolver,
25+
ResolverCallback,
26+
Solver,
27+
};
1928
use spk_storage as storage;
2029

2130
use super::Tester;
@@ -28,8 +37,8 @@ pub struct PackageBuildTester<'a> {
2837
options: OptionMap,
2938
additional_requirements: Vec<Request>,
3039
source: BuildSource,
31-
source_resolver: BoxedResolverCallback<'a>,
32-
build_resolver: BoxedResolverCallback<'a>,
40+
source_resolver: BoxedCdclResolverCallback<'a>,
41+
build_resolver: BoxedCdclResolverCallback<'a>,
3342
}
3443

3544
impl<'a> PackageBuildTester<'a> {
@@ -44,8 +53,8 @@ impl<'a> PackageBuildTester<'a> {
4453
options: OptionMap::default(),
4554
additional_requirements: Vec::new(),
4655
source,
47-
source_resolver: Box::new(DefaultResolver {}),
48-
build_resolver: Box::new(DefaultResolver {}),
56+
source_resolver: Box::new(DefaultCdclResolver {}),
57+
build_resolver: Box::new(DefaultCdclResolver {}),
4958
}
5059
}
5160

@@ -82,7 +91,7 @@ impl<'a> PackageBuildTester<'a> {
8291
/// process as needed.
8392
pub fn with_source_resolver<F>(&mut self, resolver: F) -> &mut Self
8493
where
85-
F: ResolverCallback + 'a,
94+
F: ResolverCallback<Solver = cdcl_solver::Solver, SolveResult = Solution> + 'a,
8695
{
8796
self.source_resolver = Box::new(resolver);
8897
self
@@ -96,7 +105,7 @@ impl<'a> PackageBuildTester<'a> {
96105
/// process as needed.
97106
pub fn with_build_resolver<F>(&mut self, resolver: F) -> &mut Self
98107
where
99-
F: ResolverCallback + 'a,
108+
F: ResolverCallback<Solver = cdcl_solver::Solver, SolveResult = Solution> + 'a,
100109
{
101110
self.build_resolver = Box::new(resolver);
102111
self
@@ -117,18 +126,20 @@ impl<'a> PackageBuildTester<'a> {
117126
}
118127
}
119128

120-
let mut solver = Solver::default();
129+
let mut solver = cdcl_solver::Solver::default();
121130
solver.set_binary_only(true);
122131
solver.update_options(self.options.clone());
123132
for repo in self.repos.iter().cloned() {
124133
solver.add_repository(repo);
125134
}
126-
solver.configure_for_build_environment(&self.recipe)?;
135+
// TODO
136+
// solver.configure_for_build_environment(&self.recipe)?;
127137
for request in self.additional_requirements.drain(..) {
128138
solver.add_request(request)
129139
}
130140

131-
let (solution, _) = self.build_resolver.solve(&solver).await?;
141+
// let (solution, _) = self.build_resolver.solve(&solver).await?;
142+
let solution = self.build_resolver.solve(&solver).await?;
132143

133144
for layer in resolve_runtime_layers(requires_localization, &solution).await? {
134145
rt.push_digest(layer);
@@ -154,7 +165,7 @@ impl<'a> PackageBuildTester<'a> {
154165
}
155166

156167
async fn resolve_source_package(&mut self, package: &AnyIdent) -> Result<Solution> {
157-
let mut solver = Solver::default();
168+
let mut solver = cdcl_solver::Solver::default();
158169
solver.update_options(self.options.clone());
159170
let local_repo: Arc<storage::RepositoryHandle> =
160171
Arc::new(storage::local_repository().await?.into());
@@ -175,7 +186,8 @@ impl<'a> PackageBuildTester<'a> {
175186

176187
solver.add_request(request.into());
177188

178-
let (solution, _) = self.source_resolver.solve(&solver).await?;
189+
// let (solution, _) = self.source_resolver.solve(&solver).await?;
190+
let solution = self.source_resolver.solve(&solver).await?;
179191
Ok(solution)
180192
}
181193
}

crates/spk-cli/cmd-test/src/test/install.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,17 @@ use spk_schema::foundation::option_map::OptionMap;
1212
use spk_schema::ident::{PkgRequest, PreReleasePolicy, RangeIdent, Request, RequestedBy};
1313
use spk_schema::ident_build::Build;
1414
use spk_schema::{Recipe, SpecRecipe, Variant, VariantExt};
15-
use spk_solve::{AbstractSolver, BoxedResolverCallback, DefaultResolver, ResolverCallback, Solver};
15+
use spk_solve::{
16+
cdcl_solver,
17+
AbstractSolver,
18+
BoxedCdclResolverCallback,
19+
BoxedResolverCallback,
20+
DefaultCdclResolver,
21+
DefaultResolver,
22+
ResolverCallback,
23+
Solution,
24+
Solver,
25+
};
1626
use spk_storage as storage;
1727

1828
use super::Tester;
@@ -25,7 +35,7 @@ pub struct PackageInstallTester<'a, V> {
2535
options: OptionMap,
2636
additional_requirements: Vec<Request>,
2737
source: Option<PathBuf>,
28-
env_resolver: BoxedResolverCallback<'a>,
38+
env_resolver: BoxedCdclResolverCallback<'a>,
2939
variant: V,
3040
}
3141

@@ -42,7 +52,7 @@ where
4252
options: OptionMap::default(),
4353
additional_requirements: Vec::new(),
4454
source: None,
45-
env_resolver: Box::new(DefaultResolver {}),
55+
env_resolver: Box::new(DefaultCdclResolver {}),
4656
variant,
4757
}
4858
}
@@ -80,7 +90,7 @@ where
8090
/// process as needed.
8191
pub fn watch_environment_resolve<F>(&mut self, resolver: F) -> &mut Self
8292
where
83-
F: ResolverCallback + 'a,
93+
F: ResolverCallback<Solver = cdcl_solver::Solver, SolveResult = Solution> + 'a,
8494
{
8595
self.env_resolver = Box::new(resolver);
8696
self
@@ -94,7 +104,7 @@ where
94104

95105
let requires_localization = rt.config.mount_backend.requires_localization();
96106

97-
let mut solver = Solver::default();
107+
let mut solver = cdcl_solver::Solver::default();
98108
solver.set_binary_only(true);
99109
solver.update_options(self.options.clone());
100110
for repo in self.repos.iter().cloned() {
@@ -122,7 +132,8 @@ where
122132
solver.add_request(request)
123133
}
124134

125-
let (solution, _) = self.env_resolver.solve(&solver).await?;
135+
// let (solution, _) = self.env_resolver.solve(&solver).await?;
136+
let solution = self.env_resolver.solve(&solver).await?;
126137

127138
for layer in resolve_runtime_layers(requires_localization, &solution).await? {
128139
rt.push_digest(layer);

0 commit comments

Comments
 (0)