14
14
//! compiler, and documentation.
15
15
16
16
use std:: fs;
17
+ use std:: borrow:: Cow ;
17
18
use std:: path:: Path ;
18
19
use std:: process:: Command ;
19
20
@@ -24,25 +25,37 @@ use dist::{package_vers, sanitize_sh, tmpdir};
24
25
pub fn install ( build : & Build , stage : u32 , host : & str ) {
25
26
let prefix = build. config . prefix . as_ref ( ) . clone ( ) . map ( |x| Path :: new ( x) )
26
27
. unwrap_or ( Path :: new ( "/usr/local" ) ) ;
28
+ let docdir = build. config . docdir . as_ref ( ) . clone ( ) . map ( |x| Cow :: Borrowed ( Path :: new ( x) ) )
29
+ . unwrap_or ( Cow :: Owned ( prefix. join ( "share/doc/rust" ) ) ) ;
30
+ let libdir = build. config . libdir . as_ref ( ) . clone ( ) . map ( |x| Cow :: Borrowed ( Path :: new ( x) ) )
31
+ . unwrap_or ( Cow :: Owned ( prefix. join ( "lib" ) ) ) ;
32
+ let mandir = build. config . mandir . as_ref ( ) . clone ( ) . map ( |x| Cow :: Borrowed ( Path :: new ( x) ) )
33
+ . unwrap_or ( Cow :: Owned ( prefix. join ( "share/man" ) ) ) ;
27
34
let empty_dir = build. out . join ( "tmp/empty_dir" ) ;
28
35
t ! ( fs:: create_dir_all( & empty_dir) ) ;
29
36
if build. config . docs {
30
- install_sh ( & build, "docs" , "rust-docs" , stage, host, prefix, & empty_dir) ;
37
+ install_sh ( & build, "docs" , "rust-docs" , stage, host, prefix,
38
+ & docdir, & libdir, & mandir, & empty_dir) ;
31
39
}
32
- install_sh ( & build, "std" , "rust-std" , stage, host, prefix, & empty_dir) ;
33
- install_sh ( & build, "rustc" , "rustc" , stage, host, prefix, & empty_dir) ;
40
+ install_sh ( & build, "std" , "rust-std" , stage, host, prefix,
41
+ & docdir, & libdir, & mandir, & empty_dir) ;
42
+ install_sh ( & build, "rustc" , "rustc" , stage, host, prefix,
43
+ & docdir, & libdir, & mandir, & empty_dir) ;
34
44
t ! ( fs:: remove_dir_all( & empty_dir) ) ;
35
45
}
36
46
37
47
fn install_sh ( build : & Build , package : & str , name : & str , stage : u32 , host : & str ,
38
- prefix : & Path , empty_dir : & Path ) {
48
+ prefix : & Path , docdir : & Path , libdir : & Path , mandir : & Path , empty_dir : & Path ) {
39
49
println ! ( "Install {} stage{} ({})" , package, stage, host) ;
40
50
let package_name = format ! ( "{}-{}-{}" , name, package_vers( build) , host) ;
41
51
42
52
let mut cmd = Command :: new ( "sh" ) ;
43
53
cmd. current_dir ( empty_dir)
44
54
. arg ( sanitize_sh ( & tmpdir ( build) . join ( & package_name) . join ( "install.sh" ) ) )
45
- . arg ( format ! ( "--prefix={}" , sanitize_sh( & prefix) ) )
55
+ . arg ( format ! ( "--prefix={}" , sanitize_sh( prefix) ) )
56
+ . arg ( format ! ( "--docdir={}" , sanitize_sh( docdir) ) )
57
+ . arg ( format ! ( "--libdir={}" , sanitize_sh( libdir) ) )
58
+ . arg ( format ! ( "--mandir={}" , sanitize_sh( mandir) ) )
46
59
. arg ( "--disable-ldconfig" ) ;
47
60
build. run ( & mut cmd) ;
48
61
}
0 commit comments