summaryrefslogtreecommitdiffstats
path: root/py
diff options
context:
space:
mode:
authorClark Williams <williams@redhat.com>2009-02-01 09:13:35 -0600
committerClark Williams <williams@redhat.com>2009-02-01 09:13:35 -0600
commit43b9b5a58bc1533c245202bde51e8f091d25b440 (patch)
tree4678d068e72fafa325e39935e5823eeb0ed4b2af /py
parent9eb2dc48fb1097416a42fe4835274b9c4d8a9ad9 (diff)
parentfd41e6e363e0a08ba1f71670ad9a1206b7982ed0 (diff)
downloadmock-43b9b5a58bc1533c245202bde51e8f091d25b440.tar.gz
mock-43b9b5a58bc1533c245202bde51e8f091d25b440.tar.xz
mock-43b9b5a58bc1533c245202bde51e8f091d25b440.zip
Merge branch 'master' into clark
Diffstat (limited to 'py')
-rwxr-xr-xpy/mock.py10
-rw-r--r--py/mock/backend.py7
-rw-r--r--py/mock/exception.py14
-rw-r--r--py/mock/util.py1
4 files changed, 27 insertions, 5 deletions
diff --git a/py/mock.py b/py/mock.py
index d04c859..19af14c 100755
--- a/py/mock.py
+++ b/py/mock.py
@@ -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