summaryrefslogtreecommitdiffstats
path: root/py
diff options
context:
space:
mode:
authorMichael E Brown <mebrown@michaels-house.net>2007-12-02 15:21:05 -0600
committerMichael E Brown <mebrown@michaels-house.net>2007-12-02 15:21:05 -0600
commit229ce9c838bc2d78dfd5dcbfbe97fce859694811 (patch)
tree2b3ac4fbf113199d9a09645c0ff91550013f35cb /py
parent315fd0b88b0c263e83bcc47fbeb242c38ed01d02 (diff)
downloadmock-229ce9c838bc2d78dfd5dcbfbe97fce859694811.tar.gz
mock-229ce9c838bc2d78dfd5dcbfbe97fce859694811.tar.xz
mock-229ce9c838bc2d78dfd5dcbfbe97fce859694811.zip
mostly whitespace fixes, plus a few other things to make pylint/pychecker happier. No significant code changes.
Diffstat (limited to 'py')
-rwxr-xr-xpy/mock.py220
-rw-r--r--py/mock/__init__.py1
-rw-r--r--py/mock/backend.py26
-rw-r--r--py/mock/exception.py14
-rwxr-xr-xpy/mock/trace_decorator.py10
-rw-r--r--py/mock/uid.py2
-rw-r--r--py/mock/util.py54
7 files changed, 174 insertions, 153 deletions
diff --git a/py/mock.py b/py/mock.py
index e4618d6..538986c 100755
--- a/py/mock.py
+++ b/py/mock.py
@@ -18,6 +18,14 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+"""
+ usage:
+ mock [options] {init|clean}
+ mock [options] [rebuild] /path/to/srpm(s)
+ mock [options] {shell|chroot} <cmd>
+ mock [options] installdeps {SRPM|RPM}
+ mock [options] install PACKAGE
+"""
# library imports
import ConfigParser
@@ -32,15 +40,15 @@ from optparse import OptionParser
from peak.util.decorators import decorate
# all of the variables below are substituted by the build system
-__VERSION__="unreleased_version"
-SYSCONFDIR=os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),"..","etc")
-PYTHONDIR=os.path.dirname(os.path.realpath(sys.argv[0]))
-PKGPYTHONDIR=os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),"mock")
-MOCKCONFDIR=os.path.join(SYSCONFDIR,"mock")
+__VERSION__ = "unreleased_version"
+SYSCONFDIR = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "..", "etc")
+PYTHONDIR = os.path.dirname(os.path.realpath(sys.argv[0]))
+PKGPYTHONDIR = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "mock")
+MOCKCONFDIR = os.path.join(SYSCONFDIR, "mock")
# end build system subs
# import all mock.* modules after this.
-sys.path.insert(0,PYTHONDIR)
+sys.path.insert(0, PYTHONDIR)
# set up basic logging until config file can be read
FORMAT = "%(levelname)s: %(message)s"
@@ -56,88 +64,81 @@ import mock.util
def command_parse(config_opts):
"""return options and args from parsing the command line"""
-
- usage = """
- usage:
- mock [options] {init|clean}
- mock [options] [rebuild] /path/to/srpm(s)
- mock [options] {shell|chroot} <cmd>
- mock [options] installdeps {SRPM|RPM}
- mock [options] install PACKAGE
- """
+
+ usage = __doc__
parser = OptionParser(usage=usage, version=__VERSION__)
- parser.add_option("--rebuild", action="store_const", const="rebuild",
+ parser.add_option("--rebuild", action="store_const", const="rebuild",
dest="mode", default='rebuild',
help="rebuild the specified SRPM(s)")
- parser.add_option("--chroot", "--shell", action="store_const",
+ parser.add_option("--chroot", "--shell", action="store_const",
const="chroot", dest="mode",
help="run the specified command within the chroot."
" Default command: /bin/sh")
- parser.add_option("--clean", action="store_const", const="clean",
+ parser.add_option("--clean", action="store_const", const="clean",
dest="mode",
help="completely remove the specified chroot")
parser.add_option("--init", action="store_const", const="init", dest="mode",
help="initialize the chroot, do not build anything")
- parser.add_option("--installdeps", action="store_const", const="installdeps",
+ parser.add_option("--installdeps", action="store_const", const="installdeps",
dest="mode",
help="install build dependencies for a specified SRPM")
- parser.add_option("--install", action="store_const", const="install",
+ parser.add_option("--install", action="store_const", const="install",
dest="mode",
help="install packages using yum")
parser.add_option("-r", action="store", type="string", dest="chroot",
- help="chroot name/config file name default: %default",
+ help="chroot name/config file name default: %default",
default='default')
- parser.add_option("--offline", action="store_false", dest="online",
+ parser.add_option("--offline", action="store_false", dest="online",
default=True,
help="activate 'offline' mode.")
- parser.add_option("--no-clean", action ="store_false", dest="clean",
+ parser.add_option("--no-clean", action ="store_false", dest="clean",
help="do not clean chroot before building", default=True)
- parser.add_option("--cleanup-after", action ="store_true",
+ parser.add_option("--cleanup-after", action ="store_true",
dest="cleanup_after", default=None,
help="Clean chroot after building. Use with --resultdir."
" Only active for 'rebuild'.")
- parser.add_option("--no-cleanup-after", action ="store_false",
+ parser.add_option("--no-cleanup-after", action ="store_false",
dest="cleanup_after", default=None,
help="Dont clean chroot after building. If automatic"
" cleanup is enabled, use this to disable.", )
- parser.add_option("--arch", action ="store", dest="arch",
+ parser.add_option("--arch", action ="store", dest="arch",
default=None, help="target build arch")
- parser.add_option("--resultdir", action="store", type="string",
+ parser.add_option("--resultdir", action="store", type="string",
default=None, help="path for resulting files to be put")
- parser.add_option("--uniqueext", action="store", type="string",
+ parser.add_option("--uniqueext", action="store", type="string",
default=None,
help="Arbitrary, unique extension to append to buildroot"
" directory name")
- parser.add_option("--configdir", action="store", dest="configdir",
+ parser.add_option("--configdir", action="store", dest="configdir",
default=None,
help="Change where config files are found")
- parser.add_option("--rpmbuild_timeout", action="store",
- dest="rpmbuild_timeout", type="int", default=None,
+ parser.add_option("--rpmbuild_timeout", action="store",
+ dest="rpmbuild_timeout", type="int", default=None,
help="Fail build if rpmbuild takes longer than 'timeout'"
" seconds ")
# verbosity
- parser.add_option("-v", "--verbose", action="store_const", const=2,
+ parser.add_option("-v", "--verbose", action="store_const", const=2,
dest="verbose", default=1, help="verbose build")
- parser.add_option("-q", "--quiet", action="store_const", const=0,
+ parser.add_option("-q", "--quiet", action="store_const", const=0,
dest="verbose", help="quiet build")
# plugins
- parser.add_option("--enable-plugin", action="append",
- dest="enabled_plugins", type="string", default=[],
- help="Enable plugin. Currently-available plugins: %s"
+ parser.add_option("--enable-plugin", action="append",
+ dest="enabled_plugins", type="string", default=[],
+ help="Enable plugin. Currently-available plugins: %s"
% repr(config_opts['plugins']))
- parser.add_option("--disable-plugin", action="append",
- dest="disabled_plugins", type="string", default=[],
- help="Disable plugin. Currently-available plugins: %s"
+ parser.add_option("--disable-plugin", action="append",
+ dest="disabled_plugins", type="string", default=[],
+ help="Disable plugin. Currently-available plugins: %s"
% repr(config_opts['plugins']))
-
+
(options, args) = parser.parse_args()
- if len(args) and args[0] in ('chroot', 'shell',
+ if len(args) and args[0] in ('chroot', 'shell',
'rebuild', 'install', 'installdeps', 'init', 'clean'):
options.mode = args[0]
args = args[1:]
@@ -146,8 +147,10 @@ def command_parse(config_opts):
decorate(traceLog(log))
def setup_default_config_opts(config_opts):
+ "sets up default configuration."
# global
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['clean'] = True
config_opts['chroothome'] = '/builddir'
@@ -165,11 +168,7 @@ def setup_default_config_opts(config_opts):
config_opts['online'] = True
config_opts['internal_dev_setup'] = True
- try:
- import ctypes
- config_opts['internal_setarch'] = True
- except ImportError:
- config_opts['internal_setarch'] = False
+ config_opts['internal_setarch'] = True
# cleanup_on_* only take effect for separate --resultdir
# config_opts provides fine-grained control. cmdline only has big hammer
@@ -181,25 +180,30 @@ def setup_default_config_opts(config_opts):
config_opts['plugin_dir'] = os.path.join(PKGPYTHONDIR, "plugins")
config_opts['plugin_conf'] = {
'ccache_enable': True,
- 'ccache_opts': {'max_cache_size': "4G", 'dir': "%(cache_topdir)s/%(root)s/ccache/"},
+ 'ccache_opts': {
+ 'max_cache_size': "4G",
+ 'dir': "%(cache_topdir)s/%(root)s/ccache/"},
'yum_cache_enable': True,
'yum_cache_opts': {
- 'max_age_days': 30,
- 'max_metadata_age_days': 30,
+ 'max_age_days': 30,
+ 'max_metadata_age_days': 30,
'dir': "%(cache_topdir)s/%(root)s/yum_cache/",
'online': True,},
'root_cache_enable': True,
- 'root_cache_opts': {'max_age_days': 15, 'dir': "%(cache_topdir)s/%(root)s/root_cache/"},
+ 'root_cache_opts': {
+ 'max_age_days': 15,
+ 'dir': "%(cache_topdir)s/%(root)s/root_cache/"},
'bind_mount_enable': True,
'bind_mount_opts': {'dirs': [
- # specify like this:
- # ( '/host/path', '/bind/mount/path/in/chroot/' ),
- # ( '/another/host/path', '/another/bind/mount/path/in/chroot/' ),
- ]},
+ # specify like this:
+ # ('/host/path', '/bind/mount/path/in/chroot/' ),
+ # ('/another/host/path', '/another/bind/mount/path/in/chroot/'),
+ ]},
}
# dependent on guest OS
- config_opts['useradd'] = '/usr/sbin/useradd -o -m -u %(uid)s -g %(gid)s -d %(home)s -n %(user)s' # Fedora/RedHat
+ config_opts['useradd'] = \
+ '/usr/sbin/useradd -o -m -u %(uid)s -g %(gid)s -d %(home)s -n %(user)s'
config_opts['use_host_resolv'] = True
config_opts['chroot_setup_cmd'] = 'install buildsys-build'
config_opts['target_arch'] = 'i386'
@@ -207,12 +211,14 @@ def setup_default_config_opts(config_opts):
config_opts['more_buildreqs'] = {}
config_opts['files'] = {}
config_opts['files']['etc/hosts'] = "127.0.0.1 localhost localhost.localdomain\n"
- config_opts['macros'] = {'%_topdir': '%s/build' % config_opts['chroothome'],
- '%_rpmfilename': '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm',
- }
+ config_opts['macros'] = {
+ '%_topdir': '%s/build' % config_opts['chroothome'],
+ '%_rpmfilename': '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm',
+ }
decorate(traceLog(log))
def set_config_opts_per_cmdline(config_opts, options):
+ "takes processed cmdline args and sets config options."
# do some other options and stuff
if options.arch:
config_opts['target_arch'] = options.arch
@@ -228,15 +234,20 @@ def set_config_opts_per_cmdline(config_opts, options):
for i in options.disabled_plugins:
if i not in config_opts['plugins']:
- raise mock.exception.BadCmdline("Bad option for '--disable-plugins=%s'. Expecting one of: %s" % (i, config_opts['plugins']))
+ raise mock.exception.BadCmdline(
+ "Bad option for '--disable-plugins=%s'. Expecting one of: %s"
+ % (i, config_opts['plugins']))
config_opts['plugin_conf']['%s_enable' % i] = False
for i in options.enabled_plugins:
if i not in config_opts['plugins']:
- raise mock.exception.BadCmdline("Bad option for '--enable-plugins=%s'. Expecting one of: %s" % (i, config_opts['plugins']))
+ raise mock.exception.BadCmdline(
+ "Bad option for '--enable-plugins=%s'. Expecting one of: %s"
+ % (i, config_opts['plugins']))
config_opts['plugin_conf']['%s_enable' % i] = True
if options.cleanup_after and not options.resultdir:
- raise mock.exception.BadCmdline("Must specify --resultdir when using --cleanup-after")
+ raise mock.exception.BadCmdline(
+ "Must specify --resultdir when using --cleanup-after")
if options.cleanup_after == False:
config_opts['cleanup_on_success'] = False
@@ -254,17 +265,15 @@ def set_config_opts_per_cmdline(config_opts, options):
config_opts['online'] = options.online
decorate(traceLog(log))
-def warn_obsolete_config_options(config_opts):
- pass
-
-decorate(traceLog(log))
def do_rebuild(config_opts, chroot, srpms):
+ "rebuilds a list of srpms using provided chroot"
if len(srpms) < 1:
log.critical("No package specified to rebuild command.")
sys.exit(50)
# check that everything is kosher. Raises exception on error
- for hdr in mock.util.yieldSrpmHeaders(srpms): pass
+ for hdr in mock.util.yieldSrpmHeaders(srpms):
+ pass
start = time.time()
try:
@@ -276,22 +285,25 @@ def do_rebuild(config_opts, chroot, srpms):
chroot.init()
chroot.build(srpm, timeout=config_opts['rpmbuild_timeout'])
elapsed = time.time() - start
- log.info("Done(%s) Config(%s) %d minutes %d seconds" % (srpm, config_opts['chroot_name'], elapsed//60, elapsed%60))
+ log.info("Done(%s) Config(%s) %d minutes %d seconds"
+ % (srpm, config_opts['chroot_name'], elapsed//60, elapsed%60))
log.info("Results and/or logs in: %s" % chroot.resultdir)
-
+
if config_opts["cleanup_on_success"]:
log.info("Cleaning up build root ('clean_on_success=True')")
chroot.clean()
- except (Exception, KeyboardInterrupt), e:
+ except (Exception, KeyboardInterrupt):
elapsed = time.time() - start
- log.error("Exception(%s) Config(%s) %d minutes %d seconds" % (srpm, chroot.sharedRootName, elapsed//60, elapsed%60))
+ log.error("Exception(%s) Config(%s) %d minutes %d seconds"
+ % (srpm, chroot.sharedRootName, elapsed//60, elapsed%60))
log.info("Results and/or logs in: %s" % chroot.resultdir)
if config_opts["cleanup_on_failure"]:
log.info("Cleaning up build root ('clean_on_failure=True')")
chroot.clean()
raise
-def main(retParams):
+def main(ret):
+ "Main executable entry point."
# drop unprivleged to parse args, etc.
# uidManager saves current real uid/gid which are unpriviledged (callers)
# due to suid helper, our current effective uid is 0
@@ -300,12 +312,12 @@ def main(retParams):
# setuid wrapper has real uid = unpriv, effective uid = 0
# sudo sets real/effective = 0, and sets env vars
# setuid wrapper clears environment, so there wont be any conflict between these two
- unprivUid=os.getuid()
+ unprivUid = os.getuid()
if os.environ.get("SUDO_UID") is not None:
- unprivUid=int(os.environ['SUDO_UID'])
- unprivGid=os.getgid()
+ unprivUid = int(os.environ['SUDO_UID'])
+ unprivGid = os.getgid()
if os.environ.get("SUDO_GID") is not None:
- unprivGid=int(os.environ['SUDO_GID'])
+ unprivGid = int(os.environ['SUDO_GID'])
uidManager = mock.uid.uidManager(unprivUid, unprivGid)
uidManager._becomeUser(unprivUid, unprivGid)
@@ -315,9 +327,9 @@ def main(retParams):
config_opts = {}
setup_default_config_opts(config_opts)
(options, args) = command_parse(config_opts)
-
+
# config path -- can be overridden on cmdline
- config_path=MOCKCONFDIR
+ config_path = MOCKCONFDIR
if options.configdir:
config_path = options.configdir
@@ -329,7 +341,7 @@ def main(retParams):
log.error("Could not find required config file: %s" % cfg)
if options.chroot == "default": log.error(" Did you forget to specify the chroot to use with '-r'?")
sys.exit(1)
-
+
# configure logging
config_opts['chroot_name'] = options.chroot
log_ini = os.path.join(config_path, config_opts["log_config_file"])
@@ -341,8 +353,8 @@ def main(retParams):
log_cfg = ConfigParser.ConfigParser()
logging.config.fileConfig(log_ini)
log_cfg.read(log_ini)
- except (IOError, OSError, ConfigParser.NoSectionError), e:
- log.error("Log config file(%s) not correctly configured: %s" % (log_ini, e))
+ except (IOError, OSError, ConfigParser.NoSectionError), exc:
+ log.error("Log config file(%s) not correctly configured: %s" % (log_ini, exc))
sys.exit(50)
try:
@@ -350,8 +362,8 @@ def main(retParams):
config_opts['build_log_fmt_str'] = log_cfg.get("formatter_%s" % config_opts['build_log_fmt_name'], "format", raw=1)
config_opts['root_log_fmt_str'] = log_cfg.get("formatter_%s" % config_opts['root_log_fmt_name'], "format", raw=1)
config_opts['state_log_fmt_str'] = log_cfg.get("formatter_%s" % config_opts['state_log_fmt_name'], "format", raw=1)
- except ConfigParser.NoSectionError, e:
- log.error("Log config file (%s) missing required section: %s" % (log_ini, e))
+ except ConfigParser.NoSectionError, exc:
+ log.error("Log config file (%s) missing required section: %s" % (log_ini, exc))
sys.exit(50)
if options.verbose == 0:
@@ -362,14 +374,13 @@ def main(retParams):
elif options.verbose == 2:
log.handlers[0].setLevel(logging.DEBUG)
build_log = logging.getLogger("mock.Root.build")
- build_log.propagate = 1;
+ build_log.propagate = 1
mock_log = logging.getLogger("mock")
- mock_log.propagate = 1;
+ mock_log.propagate = 1
# cmdline options override config options
log.info("mock.py version %s starting..." % __VERSION__)
set_config_opts_per_cmdline(config_opts, options)
- warn_obsolete_config_options(config_opts)
# do whatever we're here to do
chroot = mock.backend.Root(config_opts, uidManager)
@@ -377,8 +388,8 @@ def main(retParams):
# elevate privs
uidManager._becomeUser(0, 0)
- retParams["chroot"] = chroot
- retParams["config_opts"] = config_opts
+ ret["chroot"] = chroot
+ ret["config_opts"] = config_opts
os.umask(002)
if options.mode not in ('chroot', 'shell', 'install', 'installdeps') and config_opts['clean']:
chroot.clean()
@@ -406,7 +417,8 @@ def main(retParams):
log.critical("You must specify an SRPM file.")
sys.exit(50)
- for hdr in mock.util.yieldSrpmHeaders(args, plainRpmOk=1): pass
+ for hdr in mock.util.yieldSrpmHeaders(args, plainRpmOk=1):
+ pass
chroot.tryLockBuildRoot()
chroot._mountall()
try:
@@ -430,41 +442,41 @@ if __name__ == '__main__':
exitStatus = 0
killOrphans = 1
try:
- # sneaky way to ensure that we get passed back parameter even if
+ # sneaky way to ensure that we get passed back parameter even if
# we hit an exception.
retParams = {}
main(retParams)
- except (SystemExit,), e:
+ except (SystemExit,):
raise
-
- except (KeyboardInterrupt,), e:
+
+ except (KeyboardInterrupt,):
exitStatus = 7
log.error("Exiting on user interrupt, <CTRL>-C")
- except (mock.exception.BadCmdline), e:
- exitStatus = e.resultcode
- log.error(str(e))
+ except (mock.exception.BadCmdline), exc:
+ exitStatus = exc.resultcode
+ log.error(str(exc))
killOrphans = 0
- except (mock.exception.BuildRootLocked), e:
- exitStatus = e.resultcode
- log.error(str(e))
+ except (mock.exception.BuildRootLocked), exc:
+ exitStatus = exc.resultcode
+ log.error(str(exc))
killOrphans = 0
- except (mock.exception.Error), e:
- exitStatus = e.resultcode
- log.error(str(e))
+ except (mock.exception.Error), exc:
+ exitStatus = exc.resultcode
+ log.error(str(exc))
- except (Exception,), e:
+ except (Exception,), exc:
exitStatus = 1
- log.exception(e)
+ log.exception(exc)
if killOrphans and retParams:
mock.util.orphansKill(retParams["chroot"].rootdir)
# fix for python 2.4 logging module bug:
- logging.raiseExceptions=0
+ logging.raiseExceptions = 0
logging.shutdown()
sys.exit(exitStatus)
diff --git a/py/mock/__init__.py b/py/mock/__init__.py
index e69de29..e8150a0 100644
--- a/py/mock/__init__.py
+++ b/py/mock/__init__.py
@@ -0,0 +1 @@
+"""All of the mock utility classes."""
diff --git a/py/mock/backend.py b/py/mock/backend.py
index 463f69c..9ceace6 100644
--- a/py/mock/backend.py
+++ b/py/mock/backend.py
@@ -13,7 +13,6 @@ import logging
import os
import shutil
import stat
-import time
from peak.util.decorators import decorate
# our imports
@@ -34,6 +33,8 @@ class Root(object):
self._hooks = {}
self.chrootWasCleaned = False
self.preExistingDeps = ""
+ self.logging_initialized = False
+ self.buildrootLock = None
self.sharedRootName = config['root']
root = self.sharedRootName
@@ -51,10 +52,7 @@ class Root(object):
self.personality = config['target_arch']
# result dir
- if not config.has_key('resultdir'):
- self.resultdir = os.path.join(self.basedir, 'result')
- else:
- self.resultdir = config['resultdir'] % config
+ self.resultdir = config['resultdir'] % config
self.root_log = logging.getLogger("mock")
self.build_log = logging.getLogger("mock.Root.build")
@@ -277,7 +275,7 @@ class Root(object):
os.mknod( os.path.join(self.rootdir, i[2]), i[0], i[1] )
# set context. (only necessary if host running selinux enabled.)
# fails gracefully if chcon not installed.
- mock.util.do("chcon --reference=/%s %s" %
+ mock.util.do("chcon --reference=/%s %s" %
(i[2], os.path.join(self.rootdir, i[2])), raiseExc=0)
os.symlink("/proc/self/fd/0", os.path.join(self.rootdir, "dev/stdin"))
@@ -319,7 +317,7 @@ class Root(object):
# get text buildreqs
a = mock.util.requiresTextFromHdr(hdr)
b = mock.util.getAddtlReqs(hdr, self.more_buildreqs)
- for item in mock.util.uniqReqs(a,b):
+ for item in mock.util.uniqReqs(a, b):
arg_string = arg_string + " '%s'" % item
finally:
@@ -333,7 +331,7 @@ class Root(object):
if line.lower().find('No Package found for'.lower()) != -1:
raise mock.exception.BuildError, "Bad build req: %s. Exiting." % line
# nothing made us exit, so we continue
- self.uidManager.becomeUser(0,0)
+ self.uidManager.becomeUser(0, 0)
try:
self._yum('install %s' % arg_string, returnOutput=1)
finally:
@@ -361,7 +359,7 @@ class Root(object):
srpmBasename = os.path.basename(srpmChrootFilename)
# install srpm
- os.environ["HOME"] = self.homedir
+ os.environ["HOME"] = self.homedir
# Completely/Permanently drop privs while running the following:
self.doChroot(
"rpm -Uvh --nodeps %s" % (srpmChrootFilename,),
@@ -379,7 +377,7 @@ class Root(object):
chrootspec = spec.replace(self.rootdir, '') # get rid of rootdir prefix
# Completely/Permanently drop privs while running the following:
self.doChroot(
- "rpmbuild -bs --target %s --nodeps %s" % (self.target_arch, chrootspec),
+ "rpmbuild -bs --target %s --nodeps %s" % (self.target_arch, chrootspec),
logger=self.build_log, timeout=timeout,
uidManager=self.uidManager,
uid=self.chrootuid,
@@ -388,7 +386,7 @@ class Root(object):
rebuiltSrpmFile = glob.glob("%s/%s/SRPMS/*.src.rpm" % (self.rootdir, self.builddir))
if len(rebuiltSrpmFile) != 1:
- raise mock.exception.PkgError, "Didnt find single rebuilt srpm."
+ raise mock.exception.PkgError, "Didnt find single rebuilt srpm."
rebuiltSrpmFile = rebuiltSrpmFile[0]
self.installSrpmDeps(rebuiltSrpmFile)
@@ -400,7 +398,7 @@ class Root(object):
self._callHooks('prebuild')
self.doChroot(
- "rpmbuild -bb --target %s --nodeps %s" % (self.target_arch, chrootspec),
+ "rpmbuild -bb --target %s --nodeps %s" % (self.target_arch, chrootspec),
logger=self.build_log, timeout=timeout,
uidManager=self.uidManager,
uid=self.chrootuid,
@@ -501,9 +499,9 @@ class Root(object):
decorate(traceLog(moduleLog))
def _resetLogging(self):
# ensure we dont attach the handlers multiple times.
- if getattr(self, "logging_initialized", None):
+ if self.logging_initialized:
return
- self.logging_initialized = 1
+ self.logging_initialized = True
# attach logs to log files.
# This happens in addition to anything that
diff --git a/py/mock/exception.py b/py/mock/exception.py
index aee93b9..d93fcf3 100644
--- a/py/mock/exception.py
+++ b/py/mock/exception.py
@@ -4,14 +4,16 @@
# Sections taken from Mach by Thomas Vander Stichele
# Major reorganization and adaptation by Michael Brown
# Copyright (C) 2007 Michael E Brown <mebrown@michaels-house.net>
+"""define most of the exceptions used."""
# python library imports
-from exceptions import Exception
+#from exceptions import Exception
# our imports
# classes
class Error(Exception):
+ "base class for our errors."
def __init__(self, msg):
Exception.__init__(self)
self.msg = msg
@@ -32,36 +34,42 @@ class Error(Exception):
# 60 = buildroot locked
class BuildError(Error):
+ "rpmbuild failed."
def __init__(self, msg):
Error.__init__(self, msg)
self.msg = msg
self.resultcode = 10
class RootError(Error):
+ "failed to set up chroot"
def __init__(self, msg):
Error.__init__(self, msg)
self.msg = msg
self.resultcode = 20
-class YumError(Error):
+class YumError(RootError):
+ "yum failed."
def __init__(self, msg):
- Error.__init__(self, msg)
+ RootError.__init__(self, msg)
self.msg = msg
self.resultcode = 30
class PkgError(Error):
+ "error with the srpm given to us."
def __init__(self, msg):
Error.__init__(self, msg)
self.msg = msg
self.resultcode = 40
class BuildRootLocked(Error):
+ "build root in use by another process."
def __init__(self, msg):
Error.__init__(self, msg)
self.msg = msg
self.resultcode = 60
class BadCmdline(Error):
+ "user gave bad/inconsistent command line."
def __init__(self, msg):
Error.__init__(self, msg)
self.msg = msg
diff --git a/py/mock/trace_decorator.py b/py/mock/trace_decorator.py
index 5529628..7ce0806 100755
--- a/py/mock/trace_decorator.py
+++ b/py/mock/trace_decorator.py
@@ -25,19 +25,19 @@ def traceLog(log = moduleLog):
# can override by passing logger=foo as function parameter.
# make sure this doesnt conflict with one of the parameters
# you are expecting
-
+
filename = os.path.normcase(func.func_code.co_filename)
func_name = func.func_code.co_name
lineno = func.func_code.co_firstlineno
-
+
l2 = kw.get('logger', log)
message = "ENTER %s(" % func_name
for arg in args:
message = message + repr(arg) + ", "
- for k,v in kw.items():
- message = message + "%s=%s" % (k,repr(v))
+ for k, v in kw.items():
+ message = message + "%s=%s" % (k, repr(v))
message = message + ")"
-
+
frame = sys._getframe(2)
doLog(l2, logging.DEBUG, os.path.normcase(frame.f_code.co_filename), frame.f_lineno, message, args=[], exc_info=None, func=frame.f_code.co_name)
try:
diff --git a/py/mock/uid.py b/py/mock/uid.py
index 241f77a..a9aca11 100644
--- a/py/mock/uid.py
+++ b/py/mock/uid.py
@@ -39,7 +39,7 @@ class uidManager(object):
# back to root first
self._elevatePrivs()
- # then set saved
+ # then set saved
privs = self.privStack.pop()
os.setregid(privs['rgid'], privs['egid'])
setresuid(privs['ruid'], privs['euid'])
diff --git a/py/mock/util.py b/py/mock/util.py
index 4c5dbb6..b54e5f3 100644
--- a/py/mock/util.py
+++ b/py/mock/util.py
@@ -35,15 +35,15 @@ class commandTimeoutExpired(mock.exception.Error):
# functions
decorate(traceLog(log))
def mkdirIfAbsent(*args):
- for dir in args:
- log.debug("ensuring that dir exists: %s" % dir)
- if not os.path.exists(dir):
+ for dirName in args:
+ log.debug("ensuring that dir exists: %s" % dirName)
+ if not os.path.exists(dirName):
try:
- log.debug("creating dir: %s" % dir)
- os.makedirs(dir)
+ log.debug("creating dir: %s" % dirName)
+ os.makedirs(dirName)
except OSError, e:
- log.exception("Could not create dir %s. Error: %s" % (dir, e))
- raise mock.exception.Error, "Could not create dir %s. Error: %s" % (dir, e)
+ log.exception("Could not create dir %s. Error: %s" % (dirName, e))
+ raise mock.exception.Error, "Could not create dir %s. Error: %s" % (dirName, e)
decorate(traceLog(log))
def touch(fileName):
@@ -53,7 +53,7 @@ def touch(fileName):
decorate(traceLog(log))
def rmtree(path, *args, **kargs):
- """version os shutil.rmtree that ignores no-such-file-or-directory errors,
+ """version os shutil.rmtree that ignores no-such-file-or-directory errors,
and tries harder if it finds immutable files"""
tryAgain = 1
failedFilename = None
@@ -81,10 +81,10 @@ def orphansKill(rootToKill):
root = os.readlink("/proc/%s/root" % fn)
if root == rootToKill:
log.warning("Process ID %s still running in chroot. Killing..." % fn)
- os.kill(int(fn,10), 15)
+ os.kill(int(fn, 10), 15)
except OSError, e:
pass
-
+
decorate(traceLog(log))
def yieldSrpmHeaders(srpms, plainRpmOk=0):
@@ -136,8 +136,8 @@ def getAddtlReqs(hdr, conf):
# Add the 'more_buildreqs' for this SRPM (if defined in config file)
(name, epoch, ver, rel, arch) = getNEVRA(hdr)
reqlist = []
- for this_srpm in ['-'.join([name,ver,rel]),
- '-'.join([name,ver]),
+ for this_srpm in ['-'.join([name, ver, rel]),
+ '-'.join([name, ver]),
'-'.join([name]),]:
if conf.has_key(this_srpm):
more_reqs = conf[this_srpm]
@@ -172,8 +172,10 @@ decorate(traceLog(log))
def condDropPrivs(uidManager, uid, gid):
if uidManager is not None:
log.debug("about to drop privs")
- if uid is not None: uidManager.unprivUid=uid
- if gid is not None: uidManager.unprivGid=gid
+ if uid is not None:
+ uidManager.unprivUid = uid
+ if gid is not None:
+ uidManager.unprivGid = gid
uidManager.dropPrivsForever()
# not traced...
@@ -192,7 +194,7 @@ personality_defs['ppc'] = 0x0008
decorate(traceLog(log))
def condPersonality(per=None):
- if personality_defs.get(per,None) is None: return
+ if personality_defs.get(per, None) is None: return
import ctypes
_libc = ctypes.cdll.LoadLibrary("libc.so.6")
_libc.personality.argtypes = [ctypes.c_ulong]
@@ -208,23 +210,23 @@ def condPersonality(per=None):
decorate(traceLog(log))
def do(command, chrootPath=None, timeout=0, raiseExc=True, returnOutput=0, uidManager=None, uid=None, gid=None, personality=None, *args, **kargs):
"""execute given command outside of chroot"""
-
+
logger = kargs.get("logger", log)
logger.debug("Run cmd: %s" % command)
- def alarmhandler(signum,stackframe):
+ def alarmhandler(signum, stackframe):
raise commandTimeoutExpired("Timeout(%s) exceeded for command: %s" % (timeout, command))
-
+
retval = 0
logger.debug("Executing timeout(%s): %s" % (timeout, command))
- output=""
- (r,w) = os.pipe()
+ output = ""
+ (r, w) = os.pipe()
pid = os.fork()
if pid: #parent
rpid = ret = 0
os.close(w)
- oldhandler=signal.signal(signal.SIGALRM,alarmhandler)
+ oldhandler = signal.signal(signal.SIGALRM, alarmhandler)
# timeout=0 means disable alarm signal. no timeout
signal.alarm(timeout)
@@ -241,7 +243,7 @@ def do(command, chrootPath=None, timeout=0, raiseExc=True, returnOutput=0, uidMa
r_fh.close()
(rpid, ret) = os.waitpid(pid, 0)
signal.alarm(0)
- signal.signal(signal.SIGALRM,oldhandler)
+ signal.signal(signal.SIGALRM, oldhandler)
# kill children for any exception...
finally:
@@ -251,7 +253,7 @@ def do(command, chrootPath=None, timeout=0, raiseExc=True, returnOutput=0, uidMa
os.kill(-pid, signal.SIGKILL)
except OSError:
pass
- signal.signal(signal.SIGALRM,oldhandler)
+ signal.signal(signal.SIGALRM, oldhandler)
# mask and return just return value, plus child output
if raiseExc and os.WEXITSTATUS(ret):
@@ -268,7 +270,7 @@ def do(command, chrootPath=None, timeout=0, raiseExc=True, returnOutput=0, uidMa
os.close(r)
# become process group leader so that our parent
# can kill our children
- os.setpgrp()
+ os.setpgrp()
condPersonality(personality)
condChroot(chrootPath, uidManager)
@@ -282,6 +284,6 @@ def do(command, chrootPath=None, timeout=0, raiseExc=True, returnOutput=0, uidMa
w.write(line)
w.flush()
w.close()
- retval=child.wait()
+ retval = child.wait()
finally:
- os._exit(os.WEXITSTATUS(retval))
+ os._exit(os.WEXITSTATUS(retval))