diff --git a/src/cargo/ops/cargo_package/mod.rs b/src/cargo/ops/cargo_package/mod.rs index bbd94bb8b4a..2a46d4af324 100644 --- a/src/cargo/ops/cargo_package/mod.rs +++ b/src/cargo/ops/cargo_package/mod.rs @@ -160,11 +160,8 @@ fn create_package( } let filename = pkg.package_id().tarball_name(); - let dir = ws.build_dir().join("package"); - let mut dst = { - let tmp = format!(".{}", filename); - dir.open_rw_exclusive_create(&tmp, gctx, "package scratch space")? - }; + let dir = ws.build_dir().join("package").join("tmp-crate"); + let dst = dir.open_rw_exclusive_create(&filename, gctx, "package scratch space")?; // Package up and test a temporary tarball and only move it to the final // location if it actually passes all our tests. Any previously existing @@ -176,14 +173,10 @@ fn create_package( let uncompressed_size = tar(ws, opts, pkg, local_reg, ar_files, dst.file(), &filename) .context("failed to prepare local package for uploading")?; - dst.seek(SeekFrom::Start(0))?; - let dst_path = dst.parent().join(&filename); - dst.rename(&dst_path)?; - let dst_metadata = dst .file() .metadata() - .with_context(|| format!("could not learn metadata for: `{}`", dst_path.display()))?; + .with_context(|| format!("could not learn metadata for: `{}`", dst.path().display()))?; let compressed_size = dst_metadata.len(); let uncompressed = HumanBytes(uncompressed_size); @@ -217,22 +210,15 @@ pub fn package(ws: &Workspace<'_>, opts: &PackageOpts<'_>) -> CargoResult