Infer the default host target from the host toolchain if possible
This fixes ongoing issues where x.py will detect the wrong host triple between MSVC and GNU. - Add line to changelog
This commit is contained in:
parent
07e968b640
commit
3863dee159
3 changed files with 20 additions and 3 deletions
|
@ -8,6 +8,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
- `x.py check` needs opt-in to check tests (--all-targets) [#77473](https://github.com/rust-lang/rust/pull/77473)
|
- `x.py check` needs opt-in to check tests (--all-targets) [#77473](https://github.com/rust-lang/rust/pull/77473)
|
||||||
- The default bootstrap profiles are now located at `bootstrap/defaults/config.$PROFILE.toml` (previously they were located at `bootstrap/defaults/config.toml.$PROFILE`) [#77558](https://github.com/rust-lang/rust/pull/77558)
|
- The default bootstrap profiles are now located at `bootstrap/defaults/config.$PROFILE.toml` (previously they were located at `bootstrap/defaults/config.toml.$PROFILE`) [#77558](https://github.com/rust-lang/rust/pull/77558)
|
||||||
|
- If you have Rust already installed, `x.py` will now infer the host target
|
||||||
|
from the default rust toolchain. [#78513](https://github.com/rust-lang/rust/pull/78513)
|
||||||
|
|
||||||
|
|
||||||
## [Version 2] - 2020-09-25
|
## [Version 2] - 2020-09-25
|
||||||
|
|
|
@ -187,8 +187,23 @@ def format_build_time(duration):
|
||||||
return str(datetime.timedelta(seconds=int(duration)))
|
return str(datetime.timedelta(seconds=int(duration)))
|
||||||
|
|
||||||
|
|
||||||
def default_build_triple():
|
def default_build_triple(verbose):
|
||||||
"""Build triple as in LLVM"""
|
"""Build triple as in LLVM"""
|
||||||
|
# If the user already has a host build triple with an existing `rustc`
|
||||||
|
# install, use their preference. This fixes most issues with Windows builds
|
||||||
|
# being detected as GNU instead of MSVC.
|
||||||
|
try:
|
||||||
|
version = subprocess.check_output(["rustc", "--version", "--verbose"])
|
||||||
|
host = next(x for x in version.split('\n') if x.startswith("host: "))
|
||||||
|
triple = host.split("host: ")[1]
|
||||||
|
if verbose:
|
||||||
|
print("detected default triple {}".format(triple))
|
||||||
|
return triple
|
||||||
|
except Exception as e:
|
||||||
|
if verbose:
|
||||||
|
print("rustup not detected: {}".format(e))
|
||||||
|
print("falling back to auto-detect")
|
||||||
|
|
||||||
default_encoding = sys.getdefaultencoding()
|
default_encoding = sys.getdefaultencoding()
|
||||||
required = sys.platform != 'win32'
|
required = sys.platform != 'win32'
|
||||||
ostype = require(["uname", "-s"], exit=required)
|
ostype = require(["uname", "-s"], exit=required)
|
||||||
|
@ -831,7 +846,7 @@ class RustBuild(object):
|
||||||
config = self.get_toml('build')
|
config = self.get_toml('build')
|
||||||
if config:
|
if config:
|
||||||
return config
|
return config
|
||||||
return default_build_triple()
|
return default_build_triple(self.verbose)
|
||||||
|
|
||||||
def check_submodule(self, module, slow_submodules):
|
def check_submodule(self, module, slow_submodules):
|
||||||
if not slow_submodules:
|
if not slow_submodules:
|
||||||
|
|
|
@ -266,7 +266,7 @@ config = {}
|
||||||
def build():
|
def build():
|
||||||
if 'build' in known_args:
|
if 'build' in known_args:
|
||||||
return known_args['build'][-1][1]
|
return known_args['build'][-1][1]
|
||||||
return bootstrap.default_build_triple()
|
return bootstrap.default_build_triple(verbose=False)
|
||||||
|
|
||||||
|
|
||||||
def set(key, value):
|
def set(key, value):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue