mirror of
https://github.com/fluencelabs/lalrpop
synced 2025-03-28 06:01:02 +00:00
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:
commit
7b7fee97aa
@ -33,10 +33,11 @@ fn process_dir<P:AsRef<Path>>(root_dir: P, force_build: bool) -> io::Result<()>
|
|||||||
for lalrpop_file in lalrpop_files {
|
for lalrpop_file in lalrpop_files {
|
||||||
let rs_file = lalrpop_file.with_extension("rs");
|
let rs_file = lalrpop_file.with_extension("rs");
|
||||||
if force_build || try!(needs_rebuild(&lalrpop_file, &rs_file)) {
|
if force_build || try!(needs_rebuild(&lalrpop_file, &rs_file)) {
|
||||||
|
try!(make_read_only(&rs_file, false));
|
||||||
try!(remove_old_file(&rs_file));
|
try!(remove_old_file(&rs_file));
|
||||||
let grammar = try!(parse_and_normalize_grammar(lalrpop_file));
|
let grammar = try!(parse_and_normalize_grammar(lalrpop_file));
|
||||||
try!(emit_recursive_ascent(&rs_file, &grammar));
|
try!(emit_recursive_ascent(&rs_file, &grammar));
|
||||||
try!(make_read_only(&rs_file));
|
try!(make_read_only(&rs_file, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -99,11 +100,15 @@ fn needs_rebuild(lalrpop_file: &Path,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_read_only(rs_file: &Path) -> io::Result<()> {
|
fn make_read_only(rs_file: &Path, ro: bool) -> io::Result<()> {
|
||||||
let rs_metadata = try!(fs::metadata(&rs_file));
|
if rs_file.is_file() {
|
||||||
let mut rs_permissions = rs_metadata.permissions();
|
let rs_metadata = try!(fs::metadata(&rs_file));
|
||||||
rs_permissions.set_readonly(true);
|
let mut rs_permissions = rs_metadata.permissions();
|
||||||
fs::set_permissions(&rs_file, rs_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>> {
|
fn lalrpop_files<P:AsRef<Path>>(root_dir: P) -> io::Result<Vec<PathBuf>> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user