Skip to content

Commit 27d54a8

Browse files
committed
Set timestamp on generated files in archive to now
When generating files (Cargo.lock, Cargo.toml, and .cargo_vcs_info.json), cargo neglected to set any timestamp on the file in the archive. This results in them being created on disk with a timestamp of 0 (Jan 1 1970 GMT) which is confusing another tool I use. This patch alters the behavior to set the mtime to now. Signed-off-by: Bruce Guenter <bruce@untroubled.org>
1 parent 3a9abe3 commit 27d54a8

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/cargo/ops/cargo_package.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::io::SeekFrom;
55
use std::path::{self, Path, PathBuf};
66
use std::rc::Rc;
77
use std::sync::Arc;
8+
use std::time::SystemTime;
89

910
use flate2::read::GzDecoder;
1011
use flate2::{Compression, GzBuilder};
@@ -443,6 +444,12 @@ fn tar(
443444
header.set_path(&path)?;
444445
header.set_entry_type(EntryType::file());
445446
header.set_mode(0o644);
447+
header.set_mtime(
448+
SystemTime::now()
449+
.duration_since(SystemTime::UNIX_EPOCH)
450+
.unwrap()
451+
.as_secs(),
452+
);
446453
header.set_size(toml.len() as u64);
447454
header.set_cksum();
448455
ar.append(&header, toml.as_bytes()).chain_err(|| {
@@ -479,6 +486,12 @@ fn tar(
479486
header.set_path(&path)?;
480487
header.set_entry_type(EntryType::file());
481488
header.set_mode(0o644);
489+
header.set_mtime(
490+
SystemTime::now()
491+
.duration_since(SystemTime::UNIX_EPOCH)
492+
.unwrap()
493+
.as_secs(),
494+
);
482495
header.set_size(json.len() as u64);
483496
header.set_cksum();
484497
ar.append(&header, json.as_bytes())
@@ -501,6 +514,12 @@ fn tar(
501514
header.set_path(&path)?;
502515
header.set_entry_type(EntryType::file());
503516
header.set_mode(0o644);
517+
header.set_mtime(
518+
SystemTime::now()
519+
.duration_since(SystemTime::UNIX_EPOCH)
520+
.unwrap()
521+
.as_secs(),
522+
);
504523
header.set_size(new_lock.len() as u64);
505524
header.set_cksum();
506525
ar.append(&header, new_lock.as_bytes())

0 commit comments

Comments
 (0)