summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2012-07-18 14:15:45 +0100
committerRichard Maw <richard.maw@codethink.co.uk>2012-07-18 14:15:45 +0100
commitbbba07e5be8cde2a3bee5435072837e1250fe634 (patch)
tree2b75905be6da67ce722b9ddb0132670214ea19eb
parent5e317fab29c08c71f2292185716e37fe4419c125 (diff)
parent9121af8cc6bc3f53646c8dd4d7906368c20e0944 (diff)
downloadmorph-bbba07e5be8cde2a3bee5435072837e1250fe634.tar.gz
Merge branch 'liw/log-failed-logs' of git://roadtrain.codethink.co.uk/baserock/morph
-rw-r--r--morphlib/builder2.py7
-rw-r--r--morphlib/savefile.py6
-rw-r--r--morphlib/savefile_tests.py8
3 files changed, 18 insertions, 3 deletions
diff --git a/morphlib/builder2.py b/morphlib/builder2.py
index 03a62144..2ae8785f 100644
--- a/morphlib/builder2.py
+++ b/morphlib/builder2.py
@@ -249,6 +249,7 @@ class ChunkBuilder(BuilderBase):
def build_and_cache(self): # pragma: no cover
with self.build_watch('overall-build'):
mounted = self.do_mounts()
+ log_name = None
try:
builddir = self.staging_area.builddir(self.artifact.source)
self.get_sources(builddir)
@@ -256,9 +257,15 @@ class ChunkBuilder(BuilderBase):
with self.local_artifact_cache.put_source_metadata(
self.artifact.source, self.artifact.cache_key,
'build-log') as log:
+ log_name = log.real_filename
self.run_commands(builddir, destdir, log)
except:
self.do_unmounts(mounted)
+ if log_name:
+ with open(log_name) as f:
+ for line in f:
+ logging.error('OUTPUT FROM FAILED BUILD: %s' %
+ line.rstrip('\n'))
raise
self.do_unmounts(mounted)
built_artifacts = self.assemble_chunk_artifacts(destdir)
diff --git a/morphlib/savefile.py b/morphlib/savefile.py
index c0590667..9392f1a2 100644
--- a/morphlib/savefile.py
+++ b/morphlib/savefile.py
@@ -44,7 +44,7 @@ class SaveFile(file):
'''
def __init__(self, filename, *args, **kwargs):
- self._savefile_filename = filename
+ self.real_filename = filename
dirname = os.path.dirname(filename)
fd, self._savefile_tempname = tempfile.mkstemp(dir=dirname)
os.close(fd)
@@ -64,7 +64,7 @@ class SaveFile(file):
def close(self):
ret = file.close(self)
logging.debug('Rename temporary file %s to %s' %
- (self._savefile_tempname, self._savefile_filename))
- os.rename(self._savefile_tempname, self._savefile_filename)
+ (self._savefile_tempname, self.real_filename))
+ os.rename(self._savefile_tempname, self.real_filename)
return ret
diff --git a/morphlib/savefile_tests.py b/morphlib/savefile_tests.py
index 442a0779..63c80c9d 100644
--- a/morphlib/savefile_tests.py
+++ b/morphlib/savefile_tests.py
@@ -43,6 +43,14 @@ class SaveFileTests(unittest.TestCase):
def test_there_are_no_files_initially(self):
self.assertEqual(os.listdir(self.tempdir), [])
+ def test_sets_real_filename(self):
+ f = savefile.SaveFile(self.filename, 'w')
+ self.assertEqual(f.real_filename, self.filename)
+
+ def test_sets_name_to_temporary_name(self):
+ f = savefile.SaveFile(self.filename, 'w')
+ self.assertNotEqual(f.name, self.filename)
+
def test_saves_new_file(self):
f = savefile.SaveFile(self.filename, 'w')
f.write('foo')