diff options
-rw-r--r-- | .gitignore | 14 | ||||
-rw-r--r-- | etc/mock/site-defaults.cfg | 4 | ||||
-rw-r--r-- | mock.spec.in | 4 | ||||
-rwxr-xr-x | py/mock.py | 7 | ||||
-rw-r--r-- | py/mock/backend.py | 4 | ||||
-rw-r--r-- | py/mock/util.py | 13 |
6 files changed, 37 insertions, 9 deletions
@@ -3,3 +3,17 @@ dist \#* .\#* *~ +*.py[co] +*.rpm +AUTHORS +ChangeLog +Makefile +Makefile.in +aclocal.m4 +autom4te.cache +build +config.log +config.status +configure +mock.spec +noarch diff --git a/etc/mock/site-defaults.cfg b/etc/mock/site-defaults.cfg index f47ebbf..92f5562 100644 --- a/etc/mock/site-defaults.cfg +++ b/etc/mock/site-defaults.cfg @@ -16,7 +16,9 @@ # Things that we recommend you set in defaults.cfg: # # config_opts['basedir'] = '/var/lib/mock/' -# config_opts['cache_topdir'] = '/var/lib/mock/cache' +# config_opts['cache_topdir'] = '/var/cache/mock' +# Note: the path pointed to by basedir and cache_topdir must be owned +# by group 'mock' and must have mode: g+rws # config_opts['rpmbuild_timeout'] = 0 # config_opts['use_host_resolv'] = True diff --git a/mock.spec.in b/mock.spec.in index 9264de4..e4bc0d0 100644 --- a/mock.spec.in +++ b/mock.spec.in @@ -42,6 +42,7 @@ make rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install mkdir -p $RPM_BUILD_ROOT/var/lib/mock +mkdir -p $RPM_BUILD_ROOT/var/cache/mock ln -s consolehelper $RPM_BUILD_ROOT/usr/bin/mock # compatibility symlinks @@ -92,6 +93,9 @@ fi # build dir %attr(02775, root, mock) %dir /var/lib/mock +# cache dir +%attr(02775, root, mock) %dir /var/cache/mock + %changelog * Thu Nov 06 2008 Jesse Keating <jkeating@redhat.com> - 0.9.13-1 - Add configs for F10 (jkeating) @@ -199,9 +199,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' @@ -450,7 +451,6 @@ def main(ret): uidManager = mock.uid.uidManager(unprivUid, unprivGid) uidManager._becomeUser(unprivUid, unprivGid) - del(os.environ["HOME"]) # defaults config_opts = {} @@ -538,6 +538,7 @@ def main(ret): ret["chroot"] = chroot ret["config_opts"] = config_opts os.umask(002) + os.environ["HOME"] = chroot.homedir # New namespace starting from here try: diff --git a/py/mock/backend.py b/py/mock/backend.py index b57ece5..8c0032f 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'): @@ -382,8 +383,6 @@ class Root(object): srpmChrootFilename = self._copySrpmIntoChroot(srpm) srpmBasename = os.path.basename(srpmChrootFilename) - # install srpm - os.environ["HOME"] = self.homedir # Completely/Permanently drop privs while running the following: self.doChroot( ["rpm", "-Uvh", "--nodeps", srpmChrootFilename], @@ -604,6 +603,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/util.py b/py/mock/util.py index 44b32d6..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 @@ -233,6 +232,7 @@ def logOutput(fds, logger, returnOutput=1, start=0, timeout=0): if not fd.closed: fcntl.fcntl(fd, fcntl.F_SETFL, flags| os.O_NONBLOCK) + tail = "" while not done: if (time.time() - start)>timeout and timeout!=0: done = 1 @@ -246,13 +246,20 @@ def logOutput(fds, logger, returnOutput=1, start=0, timeout=0): done = 1 break if logger is not None: - for line in input.split("\n"): + lines = input.split("\n") + if tail: + lines[0] = tail + lines[0] + # we may not have all of the last line + tail = lines.pop() + for line in lines: if line == '': continue - logger.debug(chomp(line)) + logger.debug(line) for h in logger.handlers: h.flush() if returnOutput: output += input + if tail and logger is not None: + logger.debug(tail) return output # logger = |