diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-03-10 01:43:15 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-03-10 01:43:15 +0200 |
commit | 8b7465d10153c139f468e0d2a5341ad4f10ab1e0 (patch) | |
tree | de7541e72d68b9cacd93b9d4b073cf1a72808e40 /backends.py | |
parent | 27d39fe6056a1bf8af12a41065bd01cc809ebd83 (diff) | |
download | meson-8b7465d10153c139f468e0d2a5341ad4f10ab1e0.zip meson-8b7465d10153c139f468e0d2a5341ad4f10ab1e0.tar.gz meson-8b7465d10153c139f468e0d2a5341ad4f10ab1e0.tar.bz2 |
For great atomicity justice!
Diffstat (limited to 'backends.py')
-rwxr-xr-x | backends.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/backends.py b/backends.py index a631f33..0aec6e2 100755 --- a/backends.py +++ b/backends.py @@ -239,7 +239,8 @@ class NinjaBackend(Backend): def generate(self): outfilename = os.path.join(self.environment.get_build_dir(), self.ninja_filename) - outfile = open(outfilename, 'w') + tempfilename = outfilename + '~' + outfile = open(tempfilename, 'w') self.generate_configure_files() outfile.write('# This is the build file for project "%s"\n' % self.build.get_project()) outfile.write('# It is autogenerated. Do not edit by hand.\n\n') @@ -255,6 +256,10 @@ class NinjaBackend(Backend): self.generate_coverage_rules(outfile) outfile.write('# Suffix\n\n') self.generate_ending(outfile) + # Only ovewrite the old build file after the new one has been + # fully created. + outfile.close() + os.replace(tempfilename, outfilename) def generate_coverage_rules(self, outfile): (gcovr_exe, lcov_exe, genhtml_exe) = environment.find_coverage_tools() |