Skip to content

Commit

Permalink
Auto merge of #9132 - ehuss:revert-8937, r=alexcrichton
Browse files Browse the repository at this point in the history
[BETA] Revert "Slightly optimize `cargo vendor`"

This reverts #8937, which seems to have caused a permission issue.

cc #9127
  • Loading branch information
bors committed Feb 4, 2021
2 parents 8830023 + 736de0d commit f04e7fa
Showing 1 changed file with 3 additions and 25 deletions.
28 changes: 3 additions & 25 deletions src/cargo/ops/vendor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ use serde::Serialize;
use std::collections::HashSet;
use std::collections::{BTreeMap, BTreeSet, HashMap};
use std::fs;
use std::fs::File;
use std::io::{Read, Write};
use std::path::{Path, PathBuf};

pub struct VendorOptions<'a> {
Expand Down Expand Up @@ -184,7 +182,6 @@ fn sync(
}

let mut sources = BTreeSet::new();
let mut tmp_buf = [0; 64 * 1024];
for (id, pkg) in ids.iter() {
// Next up, copy it to the vendor directory
let src = pkg
Expand Down Expand Up @@ -219,7 +216,7 @@ fn sync(
let pathsource = PathSource::new(src, id.source_id(), config);
let paths = pathsource.list_files(pkg)?;
let mut map = BTreeMap::new();
cp_sources(src, &paths, &dst, &mut map, &mut tmp_buf)
cp_sources(src, &paths, &dst, &mut map)
.chain_err(|| format!("failed to copy over vendored sources for: {}", id))?;

// Finally, emit the metadata about this package
Expand Down Expand Up @@ -302,7 +299,6 @@ fn cp_sources(
paths: &[PathBuf],
dst: &Path,
cksums: &mut BTreeMap<String, String>,
tmp_buf: &mut [u8],
) -> CargoResult<()> {
for p in paths {
let relative = p.strip_prefix(&src).unwrap();
Expand Down Expand Up @@ -338,27 +334,9 @@ fn cp_sources(

paths::create_dir_all(dst.parent().unwrap())?;

let cksum = copy_and_checksum(&p, &dst, tmp_buf)?;
paths::copy(&p, &dst)?;
let cksum = Sha256::new().update_path(dst)?.finish_hex();
cksums.insert(relative.to_str().unwrap().replace("\\", "/"), cksum);
}
Ok(())
}

fn copy_and_checksum(src_path: &Path, dst_path: &Path, buf: &mut [u8]) -> CargoResult<String> {
let mut src = File::open(src_path).chain_err(|| format!("failed to open {:?}", src_path))?;
let mut dst =
File::create(dst_path).chain_err(|| format!("failed to create {:?}", dst_path))?;
let mut cksum = Sha256::new();
loop {
let n = src
.read(buf)
.chain_err(|| format!("failed to read from {:?}", src_path))?;
if n == 0 {
break Ok(cksum.finish_hex());
}
let data = &buf[..n];
cksum.update(data);
dst.write_all(data)
.chain_err(|| format!("failed to write to {:?}", dst_path))?;
}
}

0 comments on commit f04e7fa

Please sign in to comment.