diff options
-rw-r--r-- | py/mock/backend.py | 12 | ||||
-rw-r--r-- | py/mock/plugins/tmpfs.py | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/py/mock/backend.py b/py/mock/backend.py index 0ae7076..f0cf4a6 100644 --- a/py/mock/backend.py +++ b/py/mock/backend.py @@ -147,6 +147,14 @@ class Root(object): decorate(traceLog()) def init(self): + try: + self._init() + except (KeyboardInterrupt, Exception): + self._callHooks('initfailed') + raise + + decorate(traceLog()) + def _init(self): self.state("init") # NOTE: removed the following stuff vs mock v0: @@ -425,8 +433,8 @@ class Root(object): self.uidManager.restorePrivs() self._umountall() - # tell caching we are done building - self._callHooks('postbuild') + # tell caching we are done building + self._callHooks('postbuild') # ============= # 'Private' API diff --git a/py/mock/plugins/tmpfs.py b/py/mock/plugins/tmpfs.py index b725fb9..74c39a1 100644 --- a/py/mock/plugins/tmpfs.py +++ b/py/mock/plugins/tmpfs.py @@ -26,6 +26,7 @@ class Tmpfs(object): self.conf = conf rootObj.addHook("preinit", self._tmpfsPreInitHook) rootObj.addHook("postbuild", self._tmpfsPostBuildHook) + rootObj.addHook("initfailed", self._tmpfsPostBuildHook) decorate(traceLog()) def _tmpfsPreInitHook(self): @@ -33,6 +34,7 @@ class Tmpfs(object): mountCmd = "mount -n -t tmpfs mock_chroot_tmpfs %s" % self.rootObj.makeChrootPath() mock.util.do(mountCmd) + decorate(traceLog()) def _tmpfsPostBuildHook(self): getLog().info("unmounting tmpfs.") mountCmd = "umount -n %s" % self.rootObj.makeChrootPath() |