aboutsummaryrefslogtreecommitdiff
path: root/backends.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-03-10 01:43:15 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-03-10 01:43:15 +0200
commit8b7465d10153c139f468e0d2a5341ad4f10ab1e0 (patch)
treede7541e72d68b9cacd93b9d4b073cf1a72808e40 /backends.py
parent27d39fe6056a1bf8af12a41065bd01cc809ebd83 (diff)
downloadmeson-8b7465d10153c139f468e0d2a5341ad4f10ab1e0.zip
meson-8b7465d10153c139f468e0d2a5341ad4f10ab1e0.tar.gz
meson-8b7465d10153c139f468e0d2a5341ad4f10ab1e0.tar.bz2
For great atomicity justice!
Diffstat (limited to 'backends.py')
-rwxr-xr-xbackends.py7
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()