diff options
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/builder2.py | 7 | ||||
-rw-r--r-- | morphlib/buildsystem.py | 3 | ||||
-rw-r--r-- | morphlib/savefile.py | 6 | ||||
-rw-r--r-- | morphlib/savefile_tests.py | 8 |
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') |