#!/usr/bin/python # rpmci_srpm_builder_main.py: # Implementation of rpm-vcs-mirror # # Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php) # Copyright (C) 2010 Red Hat, Inc. # Written by Colin Walters import os import sys import time import shutil import optparse from ConfigParser import SafeConfigParser import logging import urllib import glib import gobject import gio from . import msgqueue from . import dynrepo from . import lame_vcs_abstraction class SRPMBuilder(object): def __init__(self, options, config): self.config = config self.urls = urls self._options = options vcs_msgqueue_dir = config.get('VCS', 'msgqueue') self._vcs_msgqueue = msgqueue.MessageQueue(vcs_msgqueue_dir) self._artifactset = artifact.ArtifactSet.from_config(config) self._vcs_by_url = {} for target in self._artifactset.get_build_targets(): fedora_url = artifact.fedora_git_url_for_build_target(target) upstream_url = artifact.upstream_git_url_for_build_target(target) self._vcs_by_url[fedora_url] = lame_vcs_abstraction.VCS.new_from_spec(fedora_url) self._vcs_by_url[upstream_url] = lame_vcs_abstraction.VCS.new_from_spec(upstream_url) self._srcrepo = dynrepo.Repo(config.get('SRPM', 'srpm_dir')) def start(self): self._vcs_msgqueue.connect(self._on_vcs_message) def _on_vcs_message(self, q, messages): for msg in messages: url = msg.payload.url q.consume(msg) vcs = self._vcs_by_url[url] def main(): glib.threads_init() opts = optparse.OptionParser("usage: %prog [options]") opts.add_option('-c', '--config', dest='config', help="Path to configuration file") opts.add_option('', '--debug', action='store_true', help="Print verbose debugging") (options, args) = opts.parse_args() if options.config is None: print "Must specify --config" sys.exit(1) config = SafeConfigParser({'home': os.environ['HOME']}) config.read(options.config) level = logging.DEBUG if options.debug else logging.INFO logging.basicConfig(stream=sys.stderr, level=level) builder = SRPMBuilder(options, config, urls) builder.start() loop = glib.MainLoop() loop.run()