summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael E Brown <mebrown@michaels-house.net>2008-11-18 17:29:02 -0600
committerMichael E Brown <mebrown@michaels-house.net>2008-11-18 17:29:02 -0600
commit3eaddeb432b8755345f50acaf370be9146eb551e (patch)
tree564a08c110e5cf284898634782e766da846f0b04
parentf361fde09b4063026dc1e644511db3041dec275d (diff)
downloadmock-3eaddeb432b8755345f50acaf370be9146eb551e.tar.gz
mock-3eaddeb432b8755345f50acaf370be9146eb551e.tar.xz
mock-3eaddeb432b8755345f50acaf370be9146eb551e.zip
add new exception for result dir not being accessible and print nice friendly error message.
-rwxr-xr-xpy/mock.py5
-rw-r--r--py/mock/backend.py5
-rw-r--r--py/mock/exception.py14
3 files changed, 22 insertions, 2 deletions
diff --git a/py/mock.py b/py/mock.py
index d04c859..f2e413a 100755
--- a/py/mock.py
+++ b/py/mock.py
@@ -652,6 +652,11 @@ if __name__ == '__main__':
exitStatus = 7
log.error("Exiting on user interrupt, <CTRL>-C")
+ except (mock.exception.ResultDirNotAccessible,), exc:
+ exitStatus = exc.resultcode
+ log.error(str(exc))
+ killOrphans = 0
+
except (mock.exception.BadCmdline, mock.exception.BuildRootLocked), exc:
exitStatus = exc.resultcode
log.error(str(exc))
diff --git a/py/mock/backend.py b/py/mock/backend.py
index 6cfd603..ed61a69 100644
--- a/py/mock/backend.py
+++ b/py/mock/backend.py
@@ -169,8 +169,9 @@ class Root(object):
self.uidManager.dropPrivsTemp()
try:
mock.util.mkdirIfAbsent(self.resultdir)
- except OSError:
- pass
+ except (OSError,), e:
+ if e.errno == 13:
+ raise mock.exception.ResultDirNotAccessible( ResultDirNotAccessible.__doc__ % self.resultdir )
self.uidManager.restorePrivs()
# lock this buildroot so we dont get stomped on.
diff --git a/py/mock/exception.py b/py/mock/exception.py
index d02bddb..3c84606 100644
--- a/py/mock/exception.py
+++ b/py/mock/exception.py
@@ -35,6 +35,7 @@ class Error(Exception):
# 40 = some error in the pkg we're building
# 50 = tried to fork a subcommand and it errored out
# 60 = buildroot locked
+# 70 = result dir could not be created
class BuildError(Error):
"rpmbuild failed."
@@ -77,3 +78,16 @@ class BadCmdline(Error):
Error.__init__(self, msg)
self.msg = msg
self.resultcode = 05
+
+class ResultDirNotAccessible(Error):
+ """
+Could not create output directory for built rpms. The directory specified was:
+ %s
+
+Try using the --resultdir= option to select another location. Recommended location is --resultdir=~/mock/.
+"""
+ def __init__(self, msg):
+ Error.__init__(self, msg)
+ self.msg = msg
+ self.resultcode = 70
+