summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/builder2.py7
-rw-r--r--morphlib/buildsystem.py3
-rw-r--r--morphlib/savefile.py6
-rw-r--r--morphlib/savefile_tests.py8
4 files changed, 20 insertions, 4 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/buildsystem.py b/morphlib/buildsystem.py
index bd7db930..c9f04054 100644
--- a/morphlib/buildsystem.py
+++ b/morphlib/buildsystem.py
@@ -99,7 +99,8 @@ class AutotoolsBuildSystem(BuildSystem):
def __init__(self):
self.configure_commands = [
- 'NOCONFIGURE=1; if [ -e autogen.sh ]; then ./autogen.sh; ' +
+ 'export NOCONFIGURE=1; ' +
+ 'if [ -e autogen.sh ]; then ./autogen.sh; ' +
'elif [ ! -e ./configure ]; then autoreconf -ivf; fi',
'./configure --prefix="$PREFIX"',
]
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')