Merge pull request #66 from oconnor0/master

Unset read only on generated rust file before removing it to fix build failure on Windows
This commit is contained in:
Niko Matsakis 2016-02-02 13:08:11 -05:00
commit 7b7fee97aa

View File

@ -33,10 +33,11 @@ fn process_dir<P:AsRef<Path>>(root_dir: P, force_build: bool) -> io::Result<()>
for lalrpop_file in lalrpop_files {
let rs_file = lalrpop_file.with_extension("rs");
if force_build || try!(needs_rebuild(&lalrpop_file, &rs_file)) {
try!(make_read_only(&rs_file, false));
try!(remove_old_file(&rs_file));
let grammar = try!(parse_and_normalize_grammar(lalrpop_file));
try!(emit_recursive_ascent(&rs_file, &grammar));
try!(make_read_only(&rs_file));
try!(make_read_only(&rs_file, true));
}
}
Ok(())
@ -99,11 +100,15 @@ fn needs_rebuild(lalrpop_file: &Path,
}
}
fn make_read_only(rs_file: &Path) -> io::Result<()> {
let rs_metadata = try!(fs::metadata(&rs_file));
let mut rs_permissions = rs_metadata.permissions();
rs_permissions.set_readonly(true);
fs::set_permissions(&rs_file, rs_permissions)
fn make_read_only(rs_file: &Path, ro: bool) -> io::Result<()> {
if rs_file.is_file() {
let rs_metadata = try!(fs::metadata(&rs_file));
let mut rs_permissions = rs_metadata.permissions();
rs_permissions.set_readonly(ro);
fs::set_permissions(&rs_file, rs_permissions)
} else {
Ok(())
}
}
fn lalrpop_files<P:AsRef<Path>>(root_dir: P) -> io::Result<Vec<PathBuf>> {