Skip to content

Commit 5e249fc

Browse files
committed
purge all rustwide build directories before each build
1 parent 76b471d commit 5e249fc

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

src/docbuilder/rustwide_builder.rs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,22 @@ impl RustwideBuilder {
230230
let mut conn = self.db.get()?;
231231
let limits = Limits::for_crate(&self.config, &mut conn, DUMMY_CRATE_NAME)?;
232232

233+
// FIXME: for now, purge all build dirs before each build.
234+
// Currently we have some error situations where the build directory wouldn't be deleted
235+
// after the build failed:
236+
// https://github.com/rust-lang/docs.rs/issues/820
237+
// This should be solved in a better way, likely refactoring the whole builder structure,
238+
// but for now we chose this simple way to prevent that the build directory remains can
239+
// fill up disk space.
240+
// This also prevents having multiple builders using the same rustwide workspace,
241+
// which we don't do. Currently our separate builders use a separate rustwide workspace.
242+
self.workspace
243+
.purge_all_build_dirs()
244+
.map_err(FailureError::compat)?;
245+
233246
let mut build_dir = self
234247
.workspace
235248
.build_dir(&format!("essential-files-{rustc_version}"));
236-
build_dir.purge().map_err(FailureError::compat)?;
237249

238250
// This is an empty library crate that is supposed to always build.
239251
let krate = Crate::crates_io(DUMMY_CRATE_NAME, DUMMY_CRATE_VERSION);
@@ -288,7 +300,6 @@ impl RustwideBuilder {
288300
})
289301
.map_err(|e| e.compat())?;
290302

291-
build_dir.purge().map_err(FailureError::compat)?;
292303
krate
293304
.purge_from_cache(&self.workspace)
294305
.map_err(FailureError::compat)?;
@@ -363,8 +374,20 @@ impl RustwideBuilder {
363374
}
364375
}
365376

377+
// FIXME: for now, purge all build dirs before each build.
378+
// Currently we have some error situations where the build directory wouldn't be deleted
379+
// after the build failed:
380+
// https://github.com/rust-lang/docs.rs/issues/820
381+
// This should be solved in a better way, likely refactoring the whole builder structure,
382+
// but for now we chose this simple way to prevent that the build directory remains can
383+
// fill up disk space.
384+
// This also prevents having multiple builders using the same rustwide workspace,
385+
// which we don't do. Currently our separate builders use a separate rustwide workspace.
386+
self.workspace
387+
.purge_all_build_dirs()
388+
.map_err(FailureError::compat)?;
389+
366390
let mut build_dir = self.workspace.build_dir(&format!("{name}-{version}"));
367-
build_dir.purge().map_err(FailureError::compat)?;
368391

369392
let is_local = matches!(kind, PackageKind::Local(_));
370393
let krate = match kind {
@@ -564,7 +587,6 @@ impl RustwideBuilder {
564587
})
565588
.map_err(|e| e.compat())?;
566589

567-
build_dir.purge().map_err(FailureError::compat)?;
568590
krate
569591
.purge_from_cache(&self.workspace)
570592
.map_err(FailureError::compat)?;

0 commit comments

Comments
 (0)