File tree Expand file tree Collapse file tree 2 files changed +18
-10
lines changed Expand file tree Collapse file tree 2 files changed +18
-10
lines changed Original file line number Diff line number Diff line change @@ -115,3 +115,7 @@ doc = false
115
115
vendored-openssl = [" openssl/vendored" ]
116
116
vendored-libgit2 = [" libgit2-sys/vendored" ]
117
117
pretty-env-logger = [" pretty_env_logger" ]
118
+
119
+ # Temporary patch. Will remove once the upstream PR gets merged.
120
+ [patch .crates-io ]
121
+ jobserver = { git = " https://github.com/weihanglo/jobserver-rs" , branch = " jobserver-style-fifo" }
Original file line number Diff line number Diff line change @@ -22,20 +22,24 @@ fn main() {
22
22
23
23
#[cfg(unix)]
24
24
fn validate(s: &str) {
25
- use std::fs::File;
25
+ use std::fs::{self, File} ;
26
26
use std::io::*;
27
27
use std::os::unix::prelude::*;
28
28
29
- let fds = s.split(',').collect::<Vec<_>>();
30
- println!("{}", s);
31
- assert_eq!(fds.len(), 2);
32
- unsafe {
33
- let mut read = File::from_raw_fd(fds[0].parse().unwrap());
34
- let mut write = File::from_raw_fd(fds[1].parse().unwrap());
29
+ if let Some((r, w)) = s.split_once(',') {
30
+ // `--jobserver-auth=R,W`
31
+ unsafe {
32
+ let mut read = File::from_raw_fd(r.parse().unwrap());
33
+ let mut write = File::from_raw_fd(w.parse().unwrap());
35
34
36
- let mut buf = [0];
37
- assert_eq!(read.read(&mut buf).unwrap(), 1);
38
- assert_eq!(write.write(&buf).unwrap(), 1);
35
+ let mut buf = [0];
36
+ assert_eq!(read.read(&mut buf).unwrap(), 1);
37
+ assert_eq!(write.write(&buf).unwrap(), 1);
38
+ }
39
+ } else {
40
+ // `--jobserver-auth=fifo:PATH` is the default since GNU Make 4.4
41
+ let (_, path) = s.split_once(':').expect("fifo:PATH");
42
+ assert!(fs::metadata(path).unwrap().file_type().is_fifo());
39
43
}
40
44
}
41
45
You can’t perform that action at this time.
0 commit comments