Use getuid to check instead of USER env var in rustbuild

This makes it consistent with `x.py` as changed in #95671

Fixes #100459
This commit is contained in:
Samyak Sarnayak 2022-08-21 23:21:58 +05:30
parent 8a13871b69
commit b9c47f624e
No known key found for this signature in database
GPG key ID: 754DB639009A05CE
2 changed files with 11 additions and 4 deletions

View file

@ -793,6 +793,8 @@ class RustBuild(object):
def check_vendored_status(self):
"""Check that vendoring is configured properly"""
# keep this consistent with the equivalent check in rustbuild:
# https://github.com/rust-lang/rust/blob/a8a33cf27166d3eabaffc58ed3799e054af3b0c6/src/bootstrap/lib.rs#L399-L405
if 'SUDO_USER' in os.environ and not self.use_vendored_sources:
if os.getuid() == 0:
self.use_vendored_sources = True

View file

@ -396,13 +396,18 @@ impl Build {
let src = config.src.clone();
let out = config.out.clone();
#[cfg(unix)]
// keep this consistent with the equivalent check in x.py:
// https://github.com/rust-lang/rust/blob/a8a33cf27166d3eabaffc58ed3799e054af3b0c6/src/bootstrap/bootstrap.py#L796-L797
let is_sudo = match env::var_os("SUDO_USER") {
Some(sudo_user) => match env::var_os("USER") {
Some(user) => user != sudo_user,
None => false,
},
Some(_sudo_user) => {
let uid = unsafe { libc::getuid() };
uid == 0
}
None => false,
};
#[cfg(not(unix))]
let is_sudo = false;
let ignore_git = config.ignore_git;
let rust_info = channel::GitInfo::new(ignore_git, &src);