@@ -161,6 +161,10 @@ enum RustupSubcmd {
161
161
Default {
162
162
#[ arg( help = MAYBE_RESOLVABLE_TOOLCHAIN_ARG_HELP ) ]
163
163
toolchain : Option < MaybeResolvableToolchainName > ,
164
+
165
+ /// Install toolchains that require an emulator. See https://github.com/rust-lang/rustup/wiki/Non-host-toolchains
166
+ #[ arg( long) ]
167
+ force_non_host : bool ,
164
168
} ,
165
169
166
170
/// Modify or query the installed toolchains
@@ -631,7 +635,10 @@ pub async fn main(
631
635
ToolchainSubcmd :: Uninstall { opts } => toolchain_remove ( cfg, opts) ,
632
636
} ,
633
637
RustupSubcmd :: Check => check_updates ( cfg) . await ,
634
- RustupSubcmd :: Default { toolchain } => default_ ( cfg, toolchain) . await ,
638
+ RustupSubcmd :: Default {
639
+ toolchain,
640
+ force_non_host,
641
+ } => default_ ( cfg, toolchain, force_non_host) . await ,
635
642
RustupSubcmd :: Target { subcmd } => match subcmd {
636
643
TargetSubcmd :: List {
637
644
toolchain,
@@ -710,6 +717,7 @@ pub async fn main(
710
717
async fn default_ (
711
718
cfg : & Cfg < ' _ > ,
712
719
toolchain : Option < MaybeResolvableToolchainName > ,
720
+ force_non_host : bool ,
713
721
) -> Result < utils:: ExitCode > {
714
722
common:: warn_if_host_is_emulated ( cfg. process ) ;
715
723
@@ -725,7 +733,7 @@ async fn default_(
725
733
MaybeResolvableToolchainName :: Some ( ResolvableToolchainName :: Official ( toolchain) ) => {
726
734
let desc = toolchain. resolve ( & cfg. get_default_host_triple ( ) ?) ?;
727
735
let status = cfg
728
- . ensure_installed ( & desc, vec ! [ ] , vec ! [ ] , None , false , true )
736
+ . ensure_installed ( & desc, vec ! [ ] , vec ! [ ] , None , force_non_host , true )
729
737
. await ?
730
738
. 0 ;
731
739
0 commit comments