@@ -19,6 +19,7 @@ mod spk_provider;
1919use std:: borrow:: Cow ;
2020use std:: collections:: { BTreeMap , BTreeSet , HashMap , HashSet } ;
2121use std:: sync:: Arc ;
22+ use std:: time:: Instant ;
2223
2324use pkg_request_version_set:: { SpkSolvable , SyntheticComponent } ;
2425use spk_provider:: SpkProvider ;
@@ -41,7 +42,7 @@ use spk_solve_validation::{Validators, default_validators};
4142use spk_storage:: RepositoryHandle ;
4243
4344use crate :: solver:: Solver as SolverTrait ;
44- use crate :: { DecisionFormatter , Error , Result , SolverExt , SolverMut } ;
45+ use crate :: { DecisionFormatter , Error , Result , SolverExt , SolverMut , show_search_space_stats } ;
4546
4647#[ cfg( test) ]
4748#[ path = "resolvo_tests.rs" ]
@@ -443,6 +444,28 @@ impl SolverMut for Solver {
443444 if formatter. settings . show_solution {
444445 println ! ( "{output}" ) ;
445446 }
447+
448+ // Equivalent to DecisionFormatter's show_search_space_info() for the StepSolver
449+ if formatter. settings . show_search_space_size {
450+ tracing:: info!( "Calculating search space stats. This may take some time..." ) ;
451+ let start = Instant :: now ( ) ;
452+
453+ let initial_requests = self
454+ . get_pkg_requests ( )
455+ . iter ( )
456+ . map ( |r| r. pkg . to_string ( ) )
457+ . collect :: < Vec < String > > ( ) ;
458+
459+ show_search_space_stats (
460+ & initial_requests,
461+ & solution,
462+ & self . repos ,
463+ formatter. settings . verbosity ,
464+ )
465+ . await ?;
466+ tracing:: info!( "That took {} seconds" , start. elapsed( ) . as_secs_f64( ) ) ;
467+ }
468+
446469 Ok ( solution)
447470 }
448471
0 commit comments