@@ -20,121 +20,90 @@ use std::process::Command;
20
20
21
21
use dist:: { self , pkgname, sanitize_sh, tmpdir} ;
22
22
23
- use Build ;
24
23
use builder:: { Builder , Step } ;
25
24
26
- pub struct Installer < ' a > {
27
- build : & ' a Build ,
28
- prefix : PathBuf ,
29
- sysconfdir : PathBuf ,
30
- docdir : PathBuf ,
31
- bindir : PathBuf ,
32
- libdir : PathBuf ,
33
- mandir : PathBuf ,
34
- empty_dir : PathBuf ,
25
+ pub fn install_docs ( builder : & Builder , stage : u32 , host : & str ) {
26
+ install_sh ( builder, "docs" , "rust-docs" , stage, Some ( host) ) ;
35
27
}
36
28
37
- impl < ' a > Drop for Installer < ' a > {
38
- fn drop ( & mut self ) {
39
- t ! ( fs :: remove_dir_all ( & self . empty_dir ) ) ;
29
+ pub fn install_std ( builder : & Builder , stage : u32 ) {
30
+ for target in builder . build . config . target . iter ( ) {
31
+ install_sh ( builder , "std" , "rust-std" , stage , Some ( target ) ) ;
40
32
}
41
33
}
42
34
43
- impl < ' a > Installer < ' a > {
44
- pub fn new ( build : & ' a Build ) -> Installer < ' a > {
45
- let prefix_default = PathBuf :: from ( "/usr/local" ) ;
46
- let sysconfdir_default = PathBuf :: from ( "/etc" ) ;
47
- let docdir_default = PathBuf :: from ( "share/doc/rust" ) ;
48
- let bindir_default = PathBuf :: from ( "bin" ) ;
49
- let libdir_default = PathBuf :: from ( "lib" ) ;
50
- let mandir_default = PathBuf :: from ( "share/man" ) ;
51
- let prefix = build. config . prefix . as_ref ( ) . unwrap_or ( & prefix_default) ;
52
- let sysconfdir = build. config . sysconfdir . as_ref ( ) . unwrap_or ( & sysconfdir_default) ;
53
- let docdir = build. config . docdir . as_ref ( ) . unwrap_or ( & docdir_default) ;
54
- let bindir = build. config . bindir . as_ref ( ) . unwrap_or ( & bindir_default) ;
55
- let libdir = build. config . libdir . as_ref ( ) . unwrap_or ( & libdir_default) ;
56
- let mandir = build. config . mandir . as_ref ( ) . unwrap_or ( & mandir_default) ;
57
-
58
- let sysconfdir = prefix. join ( sysconfdir) ;
59
- let docdir = prefix. join ( docdir) ;
60
- let bindir = prefix. join ( bindir) ;
61
- let libdir = prefix. join ( libdir) ;
62
- let mandir = prefix. join ( mandir) ;
63
-
64
- let destdir = env:: var_os ( "DESTDIR" ) . map ( PathBuf :: from) ;
65
-
66
- let prefix = add_destdir ( & prefix, & destdir) ;
67
- let sysconfdir = add_destdir ( & sysconfdir, & destdir) ;
68
- let docdir = add_destdir ( & docdir, & destdir) ;
69
- let bindir = add_destdir ( & bindir, & destdir) ;
70
- let libdir = add_destdir ( & libdir, & destdir) ;
71
- let mandir = add_destdir ( & mandir, & destdir) ;
72
-
73
- let empty_dir = build. out . join ( "tmp/empty_dir" ) ;
74
-
75
- t ! ( fs:: create_dir_all( & empty_dir) ) ;
76
-
77
- Installer {
78
- build,
79
- prefix,
80
- sysconfdir,
81
- docdir,
82
- bindir,
83
- libdir,
84
- mandir,
85
- empty_dir,
86
- }
87
- }
88
-
89
- pub fn install_docs ( & self , stage : u32 , host : & str ) {
90
- self . install_sh ( "docs" , "rust-docs" , stage, Some ( host) ) ;
91
- }
92
-
93
- pub fn install_std ( & self , stage : u32 ) {
94
- for target in self . build . config . target . iter ( ) {
95
- self . install_sh ( "std" , "rust-std" , stage, Some ( target) ) ;
96
- }
97
- }
98
-
99
- pub fn install_cargo ( & self , stage : u32 , host : & str ) {
100
- self . install_sh ( "cargo" , "cargo" , stage, Some ( host) ) ;
101
- }
35
+ pub fn install_cargo ( builder : & Builder , stage : u32 , host : & str ) {
36
+ install_sh ( builder, "cargo" , "cargo" , stage, Some ( host) ) ;
37
+ }
102
38
103
- pub fn install_rls ( & self , stage : u32 , host : & str ) {
104
- self . install_sh ( "rls" , "rls" , stage, Some ( host) ) ;
105
- }
39
+ pub fn install_rls ( builder : & Builder , stage : u32 , host : & str ) {
40
+ install_sh ( builder , "rls" , "rls" , stage, Some ( host) ) ;
41
+ }
106
42
107
- pub fn install_analysis ( & self , stage : u32 , host : & str ) {
108
- self . install_sh ( "analysis" , "rust-analysis" , stage, Some ( host) ) ;
109
- }
43
+ pub fn install_analysis ( builder : & Builder , stage : u32 , host : & str ) {
44
+ install_sh ( builder , "analysis" , "rust-analysis" , stage, Some ( host) ) ;
45
+ }
110
46
111
- pub fn install_src ( & self , stage : u32 ) {
112
- self . install_sh ( "src" , "rust-src" , stage, None ) ;
113
- }
114
- pub fn install_rustc ( & self , stage : u32 , host : & str ) {
115
- self . install_sh ( "rustc" , "rustc" , stage, Some ( host) ) ;
116
- }
47
+ pub fn install_src ( builder : & Builder , stage : u32 ) {
48
+ install_sh ( builder , "src" , "rust-src" , stage, None ) ;
49
+ }
50
+ pub fn install_rustc ( builder : & Builder , stage : u32 , host : & str ) {
51
+ install_sh ( builder , "rustc" , "rustc" , stage, Some ( host) ) ;
52
+ }
117
53
118
- fn install_sh ( & self , package : & str , name : & str , stage : u32 , host : Option < & str > ) {
119
- println ! ( "Install {} stage{} ({:?})" , package, stage, host) ;
120
- let package_name = if let Some ( host) = host {
121
- format ! ( "{}-{}" , pkgname( self . build, name) , host)
122
- } else {
123
- pkgname ( self . build , name)
124
- } ;
54
+ fn install_sh ( builder : & Builder , package : & str , name : & str , stage : u32 , host : Option < & str > ) {
55
+ let build = builder. build ;
56
+ println ! ( "Install {} stage{} ({:?})" , package, stage, host) ;
57
+
58
+ let prefix_default = PathBuf :: from ( "/usr/local" ) ;
59
+ let sysconfdir_default = PathBuf :: from ( "/etc" ) ;
60
+ let docdir_default = PathBuf :: from ( "share/doc/rust" ) ;
61
+ let bindir_default = PathBuf :: from ( "bin" ) ;
62
+ let libdir_default = PathBuf :: from ( "lib" ) ;
63
+ let mandir_default = PathBuf :: from ( "share/man" ) ;
64
+ let prefix = build. config . prefix . as_ref ( ) . unwrap_or ( & prefix_default) ;
65
+ let sysconfdir = build. config . sysconfdir . as_ref ( ) . unwrap_or ( & sysconfdir_default) ;
66
+ let docdir = build. config . docdir . as_ref ( ) . unwrap_or ( & docdir_default) ;
67
+ let bindir = build. config . bindir . as_ref ( ) . unwrap_or ( & bindir_default) ;
68
+ let libdir = build. config . libdir . as_ref ( ) . unwrap_or ( & libdir_default) ;
69
+ let mandir = build. config . mandir . as_ref ( ) . unwrap_or ( & mandir_default) ;
70
+
71
+ let sysconfdir = prefix. join ( sysconfdir) ;
72
+ let docdir = prefix. join ( docdir) ;
73
+ let bindir = prefix. join ( bindir) ;
74
+ let libdir = prefix. join ( libdir) ;
75
+ let mandir = prefix. join ( mandir) ;
76
+
77
+ let destdir = env:: var_os ( "DESTDIR" ) . map ( PathBuf :: from) ;
78
+
79
+ let prefix = add_destdir ( & prefix, & destdir) ;
80
+ let sysconfdir = add_destdir ( & sysconfdir, & destdir) ;
81
+ let docdir = add_destdir ( & docdir, & destdir) ;
82
+ let bindir = add_destdir ( & bindir, & destdir) ;
83
+ let libdir = add_destdir ( & libdir, & destdir) ;
84
+ let mandir = add_destdir ( & mandir, & destdir) ;
85
+
86
+ let empty_dir = build. out . join ( "tmp/empty_dir" ) ;
87
+
88
+ t ! ( fs:: create_dir_all( & empty_dir) ) ;
89
+ let package_name = if let Some ( host) = host {
90
+ format ! ( "{}-{}" , pkgname( build, name) , host)
91
+ } else {
92
+ pkgname ( build, name)
93
+ } ;
125
94
126
- let mut cmd = Command :: new ( "sh" ) ;
127
- cmd. current_dir ( & self . empty_dir )
128
- . arg ( sanitize_sh ( & tmpdir ( self . build ) . join ( & package_name) . join ( "install.sh" ) ) )
129
- . arg ( format ! ( "--prefix={}" , sanitize_sh( & self . prefix) ) )
130
- . arg ( format ! ( "--sysconfdir={}" , sanitize_sh( & self . sysconfdir) ) )
131
- . arg ( format ! ( "--docdir={}" , sanitize_sh( & self . docdir) ) )
132
- . arg ( format ! ( "--bindir={}" , sanitize_sh( & self . bindir) ) )
133
- . arg ( format ! ( "--libdir={}" , sanitize_sh( & self . libdir) ) )
134
- . arg ( format ! ( "--mandir={}" , sanitize_sh( & self . mandir) ) )
135
- . arg ( "--disable-ldconfig" ) ;
136
- self . build . run ( & mut cmd) ;
137
- }
95
+ let mut cmd = Command :: new ( "sh" ) ;
96
+ cmd. current_dir ( & empty_dir)
97
+ . arg ( sanitize_sh ( & tmpdir ( build) . join ( & package_name) . join ( "install.sh" ) ) )
98
+ . arg ( format ! ( "--prefix={}" , sanitize_sh( & prefix) ) )
99
+ . arg ( format ! ( "--sysconfdir={}" , sanitize_sh( & sysconfdir) ) )
100
+ . arg ( format ! ( "--docdir={}" , sanitize_sh( & docdir) ) )
101
+ . arg ( format ! ( "--bindir={}" , sanitize_sh( & bindir) ) )
102
+ . arg ( format ! ( "--libdir={}" , sanitize_sh( & libdir) ) )
103
+ . arg ( format ! ( "--mandir={}" , sanitize_sh( & mandir) ) )
104
+ . arg ( "--disable-ldconfig" ) ;
105
+ build. run ( & mut cmd) ;
106
+ t ! ( fs :: remove_dir_all ( & empty_dir ) ) ;
138
107
}
139
108
140
109
fn add_destdir ( path : & Path , destdir : & Option < PathBuf > ) -> PathBuf {
@@ -152,11 +121,11 @@ fn add_destdir(path: &Path, destdir: &Option<PathBuf>) -> PathBuf {
152
121
}
153
122
154
123
macro_rules! install {
155
- ( $( $name: ident,
124
+ ( ( $sel: ident, $builder: ident) ,
125
+ $( $name: ident,
156
126
$path: expr,
157
127
$default_cond: expr,
158
128
only_hosts: $only_hosts: expr,
159
- ( $sel: ident, $builder: ident) ,
160
129
$run_item: block $( , $c: ident) * ; ) +) => {
161
130
$( #[ derive( Serialize ) ]
162
131
pub struct $name<' a> {
@@ -194,59 +163,59 @@ macro_rules! install {
194
163
}
195
164
}
196
165
197
- install ! (
166
+ install ! ( ( self , builder ) ,
198
167
// rules.install("install-docs", "src/doc")
199
168
// .default(build.config.docs)
200
169
// .only_host_build(true)
201
170
// .dep(|s| s.name("dist-docs"))
202
171
// .run(move |s| install::Installer::new(build).install_docs(s.stage, s.target));
203
- Docs , "src/doc" , builder. build. config. docs, only_hosts: false , ( self , builder ) , {
172
+ Docs , "src/doc" , builder. build. config. docs, only_hosts: false , {
204
173
builder. ensure( dist:: Docs { stage: self . stage, target: self . target } ) ;
205
- Installer :: new ( builder . build ) . install_docs( self . stage, self . target) ;
174
+ install_docs( builder , self . stage, self . target) ;
206
175
} ;
207
176
// rules.install("install-std", "src/libstd")
208
177
// .default(true)
209
178
// .only_host_build(true)
210
179
// .dep(|s| s.name("dist-std"))
211
180
// .run(move |s| install::Installer::new(build).install_std(s.stage));
212
- Std , "src/libstd" , true , only_hosts: true , ( self , builder ) , {
181
+ Std , "src/libstd" , true , only_hosts: true , {
213
182
builder. ensure( dist:: Std {
214
183
compiler: builder. compiler( self . stage, self . host) ,
215
184
target: self . target
216
185
} ) ;
217
- Installer :: new ( builder . build ) . install_std( self . stage) ;
186
+ install_std( builder , self . stage) ;
218
187
} ;
219
188
// rules.install("install-cargo", "cargo")
220
189
// .default(build.config.extended)
221
190
// .host(true)
222
191
// .only_host_build(true)
223
192
// .dep(|s| s.name("dist-cargo"))
224
193
// .run(move |s| install::Installer::new(build).install_cargo(s.stage, s.target));
225
- Cargo , "cargo" , builder. build. config. extended, only_hosts: true , ( self , builder ) , {
194
+ Cargo , "cargo" , builder. build. config. extended, only_hosts: true , {
226
195
builder. ensure( dist:: Cargo { stage: self . stage, target: self . target } ) ;
227
- Installer :: new ( builder . build ) . install_cargo( self . stage, self . target) ;
196
+ install_cargo( builder , self . stage, self . target) ;
228
197
} ;
229
198
// rules.install("install-rls", "rls")
230
199
// .default(build.config.extended)
231
200
// .host(true)
232
201
// .only_host_build(true)
233
202
// .dep(|s| s.name("dist-rls"))
234
203
// .run(move |s| install::Installer::new(build).install_rls(s.stage, s.target));
235
- Rls , "rls" , builder. build. config. extended, only_hosts: true , ( self , builder ) , {
204
+ Rls , "rls" , builder. build. config. extended, only_hosts: true , {
236
205
builder. ensure( dist:: Rls { stage: self . stage, target: self . target } ) ;
237
- Installer :: new ( builder . build ) . install_rls( self . stage, self . target) ;
206
+ install_rls( builder , self . stage, self . target) ;
238
207
} ;
239
208
// rules.install("install-analysis", "analysis")
240
209
// .default(build.config.extended)
241
210
// .only_host_build(true)
242
211
// .dep(|s| s.name("dist-analysis"))
243
212
// .run(move |s| install::Installer::new(build).install_analysis(s.stage, s.target));
244
- Analysis , "analysis" , builder. build. config. extended, only_hosts: false , ( self , builder ) , {
213
+ Analysis , "analysis" , builder. build. config. extended, only_hosts: false , {
245
214
builder. ensure( dist:: Analysis {
246
215
compiler: builder. compiler( self . stage, self . host) ,
247
216
target: self . target
248
217
} ) ;
249
- Installer :: new ( builder . build ) . install_analysis( self . stage, self . target) ;
218
+ install_analysis( builder , self . stage, self . target) ;
250
219
} ;
251
220
// rules.install("install-src", "src")
252
221
// .default(build.config.extended)
@@ -255,18 +224,18 @@ install!(
255
224
// .only_host_build(true)
256
225
// .dep(|s| s.name("dist-src"))
257
226
// .run(move |s| install::Installer::new(build).install_src(s.stage));
258
- Src , "src" , builder. build. config. extended, only_hosts: true , ( self , builder ) , {
227
+ Src , "src" , builder. build. config. extended, only_hosts: true , {
259
228
builder. ensure( dist:: Src ) ;
260
- Installer :: new ( builder . build ) . install_src( self . stage) ;
229
+ install_src( builder , self . stage) ;
261
230
} , ONLY_BUILD ;
262
231
// rules.install("install-rustc", "src/librustc")
263
232
// .default(true)
264
233
// .host(true)
265
234
// .only_host_build(true)
266
235
// .dep(|s| s.name("dist-rustc"))
267
236
// .run(move |s| install::Installer::new(build).install_rustc(s.stage, s.target));
268
- Rustc , "src/librustc" , builder. build. config. extended, only_hosts: true , ( self , builder ) , {
237
+ Rustc , "src/librustc" , builder. build. config. extended, only_hosts: true , {
269
238
builder. ensure( dist:: Rustc { stage: self . stage, target: self . target } ) ;
270
- Installer :: new ( builder . build ) . install_rustc( self . stage, self . target) ;
239
+ install_rustc( builder , self . stage, self . target) ;
271
240
} ;
272
241
) ;
0 commit comments