mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #93685 - Mark-Simulacrum:drop-time, r=Mark-Simulacrum
Drop time dependency from bootstrap This was only used for the inclusion of 'current' dates into our manpages, but it is not clear that this is practically necessary. The manpage is essentially never updated, and so we can likely afford to keep a manual date in these files. It also seems possible to just omit it, but that may cause other tools trouble, so avoid doing that for now. This is largely done to reduce bootstrap complexity; the time crate is not particularly small and in #92480 would have started pulling in num-threads, which does runtime thread count detection. I would prefer to avoid that, so filing this to just drop the nearly unused dependency entirely. r? `@pietroalbini`
This commit is contained in:
commit
05d1652337
@ -227,7 +227,6 @@ dependencies = [
|
|||||||
"pretty_assertions",
|
"pretty_assertions",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"time",
|
|
||||||
"toml",
|
"toml",
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
@ -44,14 +44,22 @@ libc = "0.2"
|
|||||||
serde = { version = "1.0.8", features = ["derive"] }
|
serde = { version = "1.0.8", features = ["derive"] }
|
||||||
serde_json = "1.0.2"
|
serde_json = "1.0.2"
|
||||||
toml = "0.5"
|
toml = "0.5"
|
||||||
time = "0.1"
|
|
||||||
ignore = "0.4.10"
|
ignore = "0.4.10"
|
||||||
opener = "0.5"
|
opener = "0.5"
|
||||||
once_cell = "1.7.2"
|
once_cell = "1.7.2"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies.winapi]
|
[target.'cfg(windows)'.dependencies.winapi]
|
||||||
version = "0.3"
|
version = "0.3"
|
||||||
features = ["fileapi", "ioapiset", "jobapi2", "handleapi", "winioctl", "psapi", "impl-default"]
|
features = [
|
||||||
|
"fileapi",
|
||||||
|
"ioapiset",
|
||||||
|
"jobapi2",
|
||||||
|
"handleapi",
|
||||||
|
"winioctl",
|
||||||
|
"psapi",
|
||||||
|
"impl-default",
|
||||||
|
"timezoneapi",
|
||||||
|
]
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
pretty_assertions = "0.7"
|
pretty_assertions = "0.7"
|
||||||
|
@ -24,7 +24,6 @@ use crate::tarball::{GeneratedTarball, OverlayKind, Tarball};
|
|||||||
use crate::tool::{self, Tool};
|
use crate::tool::{self, Tool};
|
||||||
use crate::util::{exe, is_dylib, timeit};
|
use crate::util::{exe, is_dylib, timeit};
|
||||||
use crate::{Compiler, DependencyType, Mode, LLVM_TOOLS};
|
use crate::{Compiler, DependencyType, Mode, LLVM_TOOLS};
|
||||||
use time::{self, Timespec};
|
|
||||||
|
|
||||||
pub fn pkgname(builder: &Builder<'_>, component: &str) -> String {
|
pub fn pkgname(builder: &Builder<'_>, component: &str) -> String {
|
||||||
format!("{}-{}", component, builder.rust_package_vers())
|
format!("{}-{}", component, builder.rust_package_vers())
|
||||||
@ -422,33 +421,15 @@ impl Step for Rustc {
|
|||||||
let man_src = builder.src.join("src/doc/man");
|
let man_src = builder.src.join("src/doc/man");
|
||||||
let man_dst = image.join("share/man/man1");
|
let man_dst = image.join("share/man/man1");
|
||||||
|
|
||||||
// Reproducible builds: If SOURCE_DATE_EPOCH is set, use that as the time.
|
|
||||||
let time = env::var("SOURCE_DATE_EPOCH")
|
|
||||||
.map(|timestamp| {
|
|
||||||
let epoch = timestamp
|
|
||||||
.parse()
|
|
||||||
.map_err(|err| format!("could not parse SOURCE_DATE_EPOCH: {}", err))
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
time::at(Timespec::new(epoch, 0))
|
|
||||||
})
|
|
||||||
.unwrap_or_else(|_| time::now());
|
|
||||||
|
|
||||||
let month_year = t!(time::strftime("%B %Y", &time));
|
|
||||||
// don't use our `bootstrap::util::{copy, cp_r}`, because those try
|
// don't use our `bootstrap::util::{copy, cp_r}`, because those try
|
||||||
// to hardlink, and we don't want to edit the source templates
|
// to hardlink, and we don't want to edit the source templates
|
||||||
for file_entry in builder.read_dir(&man_src) {
|
for file_entry in builder.read_dir(&man_src) {
|
||||||
let page_src = file_entry.path();
|
let page_src = file_entry.path();
|
||||||
let page_dst = man_dst.join(file_entry.file_name());
|
let page_dst = man_dst.join(file_entry.file_name());
|
||||||
|
let src_text = t!(std::fs::read_to_string(&page_src));
|
||||||
|
let new_text = src_text.replace("<INSERT VERSION HERE>", &builder.version);
|
||||||
|
t!(std::fs::write(&page_dst, &new_text));
|
||||||
t!(fs::copy(&page_src, &page_dst));
|
t!(fs::copy(&page_src, &page_dst));
|
||||||
// template in month/year and version number
|
|
||||||
builder.replace_in_file(
|
|
||||||
&page_dst,
|
|
||||||
&[
|
|
||||||
("<INSERT DATE HERE>", &month_year),
|
|
||||||
("<INSERT VERSION HERE>", &builder.version),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debugger scripts
|
// Debugger scripts
|
||||||
|
@ -106,8 +106,7 @@
|
|||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::{self, File, OpenOptions};
|
use std::fs::{self, File};
|
||||||
use std::io::{Read, Seek, SeekFrom, Write};
|
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::process::{self, Command};
|
use std::process::{self, Command};
|
||||||
use std::str;
|
use std::str;
|
||||||
@ -1335,23 +1334,6 @@ impl Build {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Search-and-replaces within a file. (Not maximally efficiently: allocates a
|
|
||||||
/// new string for each replacement.)
|
|
||||||
pub fn replace_in_file(&self, path: &Path, replacements: &[(&str, &str)]) {
|
|
||||||
if self.config.dry_run {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let mut contents = String::new();
|
|
||||||
let mut file = t!(OpenOptions::new().read(true).write(true).open(path));
|
|
||||||
t!(file.read_to_string(&mut contents));
|
|
||||||
for &(target, replacement) in replacements {
|
|
||||||
contents = contents.replace(target, replacement);
|
|
||||||
}
|
|
||||||
t!(file.seek(SeekFrom::Start(0)));
|
|
||||||
t!(file.set_len(0));
|
|
||||||
t!(file.write_all(contents.as_bytes()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Copies the `src` directory recursively to `dst`. Both are assumed to exist
|
/// Copies the `src` directory recursively to `dst`. Both are assumed to exist
|
||||||
/// when this function is called.
|
/// when this function is called.
|
||||||
pub fn cp_r(&self, src: &Path, dst: &Path) {
|
pub fn cp_r(&self, src: &Path, dst: &Path) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.TH RUSTC "1" "<INSERT DATE HERE>" "rustc <INSERT VERSION HERE>" "User Commands"
|
.TH RUSTC "1" "April 2019" "rustc <INSERT VERSION HERE>" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
rustc \- The Rust compiler
|
rustc \- The Rust compiler
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.TH RUSTDOC "1" "<INSERT DATE HERE>" "rustdoc <INSERT VERSION HERE>" "User Commands"
|
.TH RUSTDOC "1" "July 2018" "rustdoc <INSERT VERSION HERE>" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
rustdoc \- generate documentation from Rust source code
|
rustdoc \- generate documentation from Rust source code
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
Loading…
Reference in New Issue
Block a user