diff options
author | Clark Williams <williams@redhat.com> | 2009-02-01 09:13:35 -0600 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2009-02-01 09:13:35 -0600 |
commit | 43b9b5a58bc1533c245202bde51e8f091d25b440 (patch) | |
tree | 4678d068e72fafa325e39935e5823eeb0ed4b2af /py | |
parent | 9eb2dc48fb1097416a42fe4835274b9c4d8a9ad9 (diff) | |
parent | fd41e6e363e0a08ba1f71670ad9a1206b7982ed0 (diff) | |
download | mock-43b9b5a58bc1533c245202bde51e8f091d25b440.tar.gz mock-43b9b5a58bc1533c245202bde51e8f091d25b440.tar.xz mock-43b9b5a58bc1533c245202bde51e8f091d25b440.zip |
Merge branch 'master' into clark
Diffstat (limited to 'py')
-rwxr-xr-x | py/mock.py | 10 | ||||
-rw-r--r-- | py/mock/backend.py | 7 | ||||
-rw-r--r-- | py/mock/exception.py | 14 | ||||
-rw-r--r-- | py/mock/util.py | 1 |
4 files changed, 27 insertions, 5 deletions
@@ -191,9 +191,10 @@ decorate(traceLog()) def setup_default_config_opts(config_opts, unprivUid): "sets up default configuration." # global - config_opts['basedir'] = '/var/lib/mock/' # root name is automatically added to this + config_opts['version'] = __VERSION__ + config_opts['basedir'] = '/var/lib/mock' # root name is automatically added to this config_opts['resultdir'] = '%(basedir)s/%(root)s/result' - config_opts['cache_topdir'] = '/var/lib/mock/cache' + config_opts['cache_topdir'] = '/var/cache/mock' config_opts['clean'] = True config_opts['chroothome'] = '/builddir' config_opts['log_config_file'] = 'logging.ini' @@ -652,6 +653,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..f259afe 100644 --- a/py/mock/backend.py +++ b/py/mock/backend.py @@ -31,6 +31,7 @@ class Root(object): self.preExistingDeps = "" self.logging_initialized = False self.buildrootLock = None + self.version = config['version'] self.sharedRootName = config['root'] if config.has_key('unique-ext'): @@ -169,8 +170,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. @@ -544,6 +546,7 @@ class Root(object): fh.setFormatter(formatter) fh.setLevel(logging.NOTSET) log.addHandler(fh) + log.info("Mock Version: %s" % self.version) finally: self.uidManager.restorePrivs() 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 + diff --git a/py/mock/util.py b/py/mock/util.py index 42f7ba6..f52003e 100644 --- a/py/mock/util.py +++ b/py/mock/util.py @@ -10,7 +10,6 @@ import ctypes import fcntl import os import os.path -import popen2 import rpm import rpmUtils import rpmUtils.transaction |