summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore14
-rw-r--r--etc/mock/site-defaults.cfg4
-rw-r--r--mock.spec.in4
-rwxr-xr-xpy/mock.py7
-rw-r--r--py/mock/backend.py4
-rw-r--r--py/mock/util.py13
6 files changed, 37 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 25290b8..e93b95d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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)
diff --git a/py/mock.py b/py/mock.py
index e4dec8b..492d8b2 100755
--- a/py/mock.py
+++ b/py/mock.py
@@ -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 =