1414//! compiler, and documentation.
1515
1616use std:: fs;
17+ use std:: borrow:: Cow ;
1718use std:: path:: Path ;
1819use std:: process:: Command ;
1920
@@ -24,25 +25,37 @@ use dist::{package_vers, sanitize_sh, tmpdir};
2425pub fn install ( build : & Build , stage : u32 , host : & str ) {
2526 let prefix = build. config . prefix . as_ref ( ) . clone ( ) . map ( |x| Path :: new ( x) )
2627 . 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" ) ) ) ;
2734 let empty_dir = build. out . join ( "tmp/empty_dir" ) ;
2835 t ! ( fs:: create_dir_all( & empty_dir) ) ;
2936 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) ;
3139 }
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) ;
3444 t ! ( fs:: remove_dir_all( & empty_dir) ) ;
3545}
3646
3747fn 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 ) {
3949 println ! ( "Install {} stage{} ({})" , package, stage, host) ;
4050 let package_name = format ! ( "{}-{}-{}" , name, package_vers( build) , host) ;
4151
4252 let mut cmd = Command :: new ( "sh" ) ;
4353 cmd. current_dir ( empty_dir)
4454 . 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) ) )
4659 . arg ( "--disable-ldconfig" ) ;
4760 build. run ( & mut cmd) ;
4861}
0 commit comments