@@ -6,6 +6,8 @@ use eyre::Context;
66pub struct Install {
77 #[ clap( long) ]
88 target : Option < String > ,
9+ #[ clap( long) ]
10+ root : String ,
911 /// Provide verbose diagnostic output.
1012 #[ clap( short, long) ]
1113 pub verbose : bool ,
@@ -50,6 +52,8 @@ impl Install {
5052 if let Some ( target) = self . target {
5153 command. push ( format ! ( "--target={target}" ) ) ;
5254 }
55+ command. push ( format ! ( "--root={}" , self . root) ) ;
56+
5357 if let Some ( engine) = self . engine {
5458 std:: env:: set_var ( docker:: CROSS_CONTAINER_ENGINE_VAR , engine) ;
5559 }
@@ -101,9 +105,19 @@ impl Install {
101105
102106 let cwd = std:: env:: current_dir ( ) ?;
103107
104- let paths =
105- docker:: DockerPaths :: create ( & engine, todo ! ( ) , cwd, toolchain. clone ( ) , msg_info) ?;
106- let options = docker:: DockerOptions :: new (
108+ let paths = docker:: DockerPaths :: create (
109+ & engine,
110+ cross:: CargoMetadata {
111+ workspace_root : cwd. clone ( ) ,
112+ target_directory : cross:: file:: absolute_path ( self . root ) ?,
113+ packages : vec ! [ ] ,
114+ workspace_members : vec ! [ ] ,
115+ } ,
116+ cwd,
117+ toolchain. clone ( ) ,
118+ msg_info,
119+ ) ?;
120+ let mut options = docker:: DockerOptions :: new (
107121 engine,
108122 target. clone ( ) ,
109123 config,
@@ -112,6 +126,8 @@ impl Install {
112126 rustc_version,
113127 ) ;
114128
129+ options. skip_target_dir = true ;
130+
115131 cross:: install_interpreter_if_needed (
116132 & args,
117133 host_version_meta,
@@ -122,7 +138,6 @@ impl Install {
122138
123139 let status = docker:: run ( options, paths, & filtered_args, msg_info)
124140 . wrap_err ( "could not run container" ) ?;
125- let needs_host = args. subcommand . map_or ( false , |sc| sc. needs_host ( is_remote) ) ;
126141 if !status. success ( ) {
127142 cross:: warn_on_failure ( & target, & toolchain, msg_info) ?;
128143 }
0 commit comments