@@ -106,11 +106,15 @@ impl RustwideBuilder {
106
106
self . skip_build_if_exists = should;
107
107
}
108
108
109
- fn prepare_sandbox ( & self , limits : & Limits ) -> SandboxBuilder {
110
- SandboxBuilder :: new ( )
109
+ fn prepare_sandbox ( & self , metadata : & Metadata , limits : & Limits ) -> Result < SandboxBuilder > {
110
+ let mut builder = SandboxBuilder :: new ( )
111
111
. cpu_limit ( self . config . build_cpu_limit . map ( |limit| limit as f32 ) )
112
112
. memory_limit ( Some ( limits. memory ( ) ) )
113
- . enable_networking ( limits. networking ( ) )
113
+ . enable_networking ( limits. networking ( ) ) ;
114
+ if let Some ( image) = metadata. docker_image ( ) {
115
+ builder = builder. image ( SandboxImage :: remote ( & image) ?)
116
+ }
117
+ Ok ( builder)
114
118
}
115
119
116
120
pub fn update_toolchain ( & mut self ) -> Result < ( ) > {
@@ -208,11 +212,15 @@ impl RustwideBuilder {
208
212
let krate = Crate :: crates_io ( DUMMY_CRATE_NAME , DUMMY_CRATE_VERSION ) ;
209
213
krate. fetch ( & self . workspace ) ?;
210
214
215
+ let metadata = Metadata :: from_crate_root ( & build_dir. build_dir ( ) ) ?;
216
+
211
217
build_dir
212
- . build ( & self . toolchain , & krate, self . prepare_sandbox ( & limits) )
218
+ . build (
219
+ & self . toolchain ,
220
+ & krate,
221
+ self . prepare_sandbox ( & metadata, & limits) ?,
222
+ )
213
223
. run ( |build| {
214
- let metadata = Metadata :: from_crate_root ( & build. host_source_dir ( ) ) ?;
215
-
216
224
let res = self . execute_build ( HOST_TARGET , true , build, & limits, & metadata) ?;
217
225
if !res. result . successful {
218
226
failure:: bail!( "failed to build dummy crate for {}" , self . rustc_version) ;
@@ -322,14 +330,18 @@ impl RustwideBuilder {
322
330
323
331
let local_storage = tempfile:: Builder :: new ( ) . prefix ( "docsrs-docs" ) . tempdir ( ) ?;
324
332
333
+ let metadata = Metadata :: from_crate_root ( & build_dir. build_dir ( ) ) ?;
325
334
let res = build_dir
326
- . build ( & self . toolchain , & krate, self . prepare_sandbox ( & limits) )
335
+ . build (
336
+ & self . toolchain ,
337
+ & krate,
338
+ self . prepare_sandbox ( & metadata, & limits) ?,
339
+ )
327
340
. run ( |build| {
328
341
use docsrs_metadata:: BuildTargets ;
329
342
330
343
let mut has_docs = false ;
331
344
let mut successful_targets = Vec :: new ( ) ;
332
- let metadata = Metadata :: from_crate_root ( & build. host_source_dir ( ) ) ?;
333
345
let BuildTargets {
334
346
default_target,
335
347
other_targets,
0 commit comments