about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-10-03 15:04:41 -0700
committerGitHub <noreply@github.com>2016-10-03 15:04:41 -0700
commit9c31d76e97c6116ba2480aa23a48f3e7bd25a7cb (patch)
tree191493ccd4b22531907b3f65aae4432519c7b8b7
parent7a26aeca77bcf334747eddb630e3b9475149b7f5 (diff)
parent7cf90d0a1d133b41b06c09272b6f645c142e7ade (diff)
downloadrust-9c31d76e97c6116ba2480aa23a48f3e7bd25a7cb.tar.gz
rust-9c31d76e97c6116ba2480aa23a48f3e7bd25a7cb.zip
Auto merge of #36821 - pweaver:master, r=michaelwoerister
 #36821

I am just starting to learn rust. Feedback would be appreciated.
-rw-r--r--src/librustc_incremental/persist/fs.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/librustc_incremental/persist/fs.rs b/src/librustc_incremental/persist/fs.rs
index 428283309b0..ff7c3d0512e 100644
--- a/src/librustc_incremental/persist/fs.rs
+++ b/src/librustc_incremental/persist/fs.rs
@@ -234,10 +234,21 @@ pub fn prepare_session_directory(tcx: TyCtxt) -> Result<bool, ()> {
         let print_file_copy_stats = tcx.sess.opts.debugging_opts.incremental_info;
 
         // Try copying over all files from the source directory
-        if copy_files(&session_dir, &source_directory, print_file_copy_stats).is_ok() {
+        if let Ok(allows_links) = copy_files(&session_dir, &source_directory,
+                                             print_file_copy_stats) {
             debug!("successfully copied data from: {}",
                    source_directory.display());
 
+            if !allows_links {
+                tcx.sess.warn(&format!("Hard linking files in the incremental \
+                                        compilation cache failed. Copying files \
+                                        instead. Consider moving the cache \
+                                        directory to a file system which supports \
+                                        hard linking in session dir `{}`",
+                                        session_dir.display())
+                    );
+            }
+
             tcx.sess.init_incr_comp_session(session_dir, directory_lock);
             return Ok(true)
         } else {
@@ -357,7 +368,7 @@ pub fn delete_all_session_dir_contents(sess: &Session) -> io::Result<()> {
 fn copy_files(target_dir: &Path,
               source_dir: &Path,
               print_stats_on_success: bool)
-              -> Result<(), ()> {
+              -> Result<bool, ()> {
     // We acquire a shared lock on the lock file of the directory, so that
     // nobody deletes it out from under us while we are reading from it.
     let lock_file_path = lock_file_path(source_dir);
@@ -409,7 +420,7 @@ fn copy_files(target_dir: &Path,
         println!("incr. comp. session directory: {} files copied", files_copied);
     }
 
-    Ok(())
+    Ok(files_linked > 0 || files_copied == 0)
 }
 
 /// Generate unique directory path of the form: