14
14
// You should have received a copy of the GNU General Public License
15
15
// along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
17
+ use crate :: chain_spec;
17
18
use crate :: cli:: { Cli , Subcommand } ;
18
19
use futures:: future:: TryFutureExt ;
19
20
use sc_cli:: { ChainSpec , RuntimeVersion , SubstrateCli } ;
21
+ use sc_executor:: NativeExecutionDispatch ;
20
22
use sp_core:: crypto:: Ss58AddressFormat ;
21
- use subspace_service :: { chain_spec , subspace_runtime , SubspaceExecutorDispatch } ;
23
+ use subspace_runtime :: RuntimeApi ;
22
24
23
25
/// Subspace node error.
24
26
#[ derive( thiserror:: Error , Debug ) ]
@@ -46,6 +48,25 @@ impl From<String> for Error {
46
48
}
47
49
}
48
50
51
+ struct ExecutorDispatch ;
52
+
53
+ impl NativeExecutionDispatch for ExecutorDispatch {
54
+ /// Only enable the benchmarking host functions when we actually want to benchmark.
55
+ #[ cfg( feature = "runtime-benchmarks" ) ]
56
+ type ExtendHostFunctions = frame_benchmarking:: benchmarking:: HostFunctions ;
57
+ /// Otherwise we only use the default Substrate host functions.
58
+ #[ cfg( not( feature = "runtime-benchmarks" ) ) ]
59
+ type ExtendHostFunctions = ( ) ;
60
+
61
+ fn dispatch ( method : & str , data : & [ u8 ] ) -> Option < Vec < u8 > > {
62
+ subspace_runtime:: api:: dispatch ( method, data)
63
+ }
64
+
65
+ fn native_version ( ) -> sc_executor:: NativeVersion {
66
+ subspace_runtime:: native_version ( )
67
+ }
68
+ }
69
+
49
70
impl SubstrateCli for Cli {
50
71
fn impl_name ( ) -> String {
51
72
"Subspace" . into ( )
@@ -120,9 +141,13 @@ pub fn run() -> std::result::Result<(), Error> {
120
141
Some ( Subcommand :: CheckBlock ( cmd) ) => {
121
142
let runner = cli. create_runner ( cmd) ?;
122
143
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
123
- runner. async_run ( |mut config| {
124
- let ( client, _, import_queue, task_manager) =
125
- subspace_service:: new_chain_ops ( & mut config) ?;
144
+ runner. async_run ( |config| {
145
+ let sc_service:: PartialComponents {
146
+ client,
147
+ import_queue,
148
+ task_manager,
149
+ ..
150
+ } = subspace_service:: new_partial :: < RuntimeApi , ExecutorDispatch > ( & config) ?;
126
151
Ok ( (
127
152
cmd. run ( client, import_queue) . map_err ( Error :: SubstrateCli ) ,
128
153
task_manager,
@@ -132,8 +157,12 @@ pub fn run() -> std::result::Result<(), Error> {
132
157
Some ( Subcommand :: ExportBlocks ( cmd) ) => {
133
158
let runner = cli. create_runner ( cmd) ?;
134
159
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
135
- runner. async_run ( |mut config| {
136
- let ( client, _, _, task_manager) = subspace_service:: new_chain_ops ( & mut config) ?;
160
+ runner. async_run ( |config| {
161
+ let sc_service:: PartialComponents {
162
+ client,
163
+ task_manager,
164
+ ..
165
+ } = subspace_service:: new_partial :: < RuntimeApi , ExecutorDispatch > ( & config) ?;
137
166
Ok ( (
138
167
cmd. run ( client, config. database )
139
168
. map_err ( Error :: SubstrateCli ) ,
@@ -144,8 +173,12 @@ pub fn run() -> std::result::Result<(), Error> {
144
173
Some ( Subcommand :: ExportState ( cmd) ) => {
145
174
let runner = cli. create_runner ( cmd) ?;
146
175
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
147
- runner. async_run ( |mut config| {
148
- let ( client, _, _, task_manager) = subspace_service:: new_chain_ops ( & mut config) ?;
176
+ runner. async_run ( |config| {
177
+ let sc_service:: PartialComponents {
178
+ client,
179
+ task_manager,
180
+ ..
181
+ } = subspace_service:: new_partial :: < RuntimeApi , ExecutorDispatch > ( & config) ?;
149
182
Ok ( (
150
183
cmd. run ( client, config. chain_spec )
151
184
. map_err ( Error :: SubstrateCli ) ,
@@ -156,9 +189,13 @@ pub fn run() -> std::result::Result<(), Error> {
156
189
Some ( Subcommand :: ImportBlocks ( cmd) ) => {
157
190
let runner = cli. create_runner ( cmd) ?;
158
191
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
159
- runner. async_run ( |mut config| {
160
- let ( client, _, import_queue, task_manager) =
161
- subspace_service:: new_chain_ops ( & mut config) ?;
192
+ runner. async_run ( |config| {
193
+ let sc_service:: PartialComponents {
194
+ client,
195
+ import_queue,
196
+ task_manager,
197
+ ..
198
+ } = subspace_service:: new_partial :: < RuntimeApi , ExecutorDispatch > ( & config) ?;
162
199
Ok ( (
163
200
cmd. run ( client, import_queue) . map_err ( Error :: SubstrateCli ) ,
164
201
task_manager,
@@ -172,9 +209,13 @@ pub fn run() -> std::result::Result<(), Error> {
172
209
Some ( Subcommand :: Revert ( cmd) ) => {
173
210
let runner = cli. create_runner ( cmd) ?;
174
211
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
175
- runner. async_run ( |mut config| {
176
- let ( client, backend, _, task_manager) =
177
- subspace_service:: new_chain_ops ( & mut config) ?;
212
+ runner. async_run ( |config| {
213
+ let sc_service:: PartialComponents {
214
+ client,
215
+ backend,
216
+ task_manager,
217
+ ..
218
+ } = subspace_service:: new_partial :: < RuntimeApi , ExecutorDispatch > ( & config) ?;
178
219
Ok ( (
179
220
cmd. run ( client, backend) . map_err ( Error :: SubstrateCli ) ,
180
221
task_manager,
@@ -186,7 +227,7 @@ pub fn run() -> std::result::Result<(), Error> {
186
227
let runner = cli. create_runner ( cmd) ?;
187
228
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
188
229
runner. sync_run ( |config| {
189
- cmd. run :: < subspace_runtime:: Block , SubspaceExecutorDispatch > ( config)
230
+ cmd. run :: < subspace_runtime:: Block , ExecutorDispatch > ( config)
190
231
} ) ?;
191
232
} else {
192
233
return Err ( Error :: Other (
@@ -200,7 +241,9 @@ pub fn run() -> std::result::Result<(), Error> {
200
241
let runner = cli. create_runner ( & cli. run . base ) ?;
201
242
set_default_ss58_version ( & runner. config ( ) . chain_spec ) ;
202
243
runner. run_node_until_exit ( |config| async move {
203
- subspace_service:: new_full :: < subspace_runtime:: RuntimeApi , SubspaceExecutorDispatch > ( config, true )
244
+ subspace_service:: new_full :: < subspace_runtime:: RuntimeApi , ExecutorDispatch > (
245
+ config, true ,
246
+ )
204
247
. await
205
248
. map ( |full| full. task_manager )
206
249
} ) ?;
0 commit comments