From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 941A0138CC5 for ; Mon, 4 May 2015 18:21:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3FD7AE08C8; Mon, 4 May 2015 18:21:40 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id B9E8FE08C8 for ; Mon, 4 May 2015 18:21:39 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 40AA53408FF for ; Mon, 4 May 2015 18:21:38 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 5E4FA722 for ; Mon, 4 May 2015 18:21:33 +0000 (UTC) From: "Brian Dolbec" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Brian Dolbec" Message-ID: <1430761094.34be556371a0c40dfbf821996fc40f5720f4bf95.dolsen@gentoo> Subject: [gentoo-commits] proj/layman:master commit in: pm_plugins/portage/sync/modules/laymansync/ X-VCS-Repository: proj/layman X-VCS-Files: pm_plugins/portage/sync/modules/laymansync/__init__.py pm_plugins/portage/sync/modules/laymansync/laymansync.py pm_plugins/portage/sync/modules/laymansync/pylayman.py pm_plugins/portage/sync/modules/laymansync/subproc.py X-VCS-Directories: pm_plugins/portage/sync/modules/laymansync/ X-VCS-Committer: dolsen X-VCS-Committer-Name: Brian Dolbec X-VCS-Revision: 34be556371a0c40dfbf821996fc40f5720f4bf95 X-VCS-Branch: master Date: Mon, 4 May 2015 18:21:33 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 8d2f18e8-9329-49c3-8f52-c4819e168e61 X-Archives-Hash: f2a60550fe78987971edf779ace1e1d5 commit: 34be556371a0c40dfbf821996fc40f5720f4bf95 Author: Brian Dolbec gentoo org> AuthorDate: Mon May 4 17:36:45 2015 +0000 Commit: Brian Dolbec gentoo org> CommitDate: Mon May 4 17:38:14 2015 +0000 URL: https://gitweb.gentoo.org/proj/layman.git/commit/?id=34be5563 pm_plugins/portage: Split up laymansync into sub-files to delay import of layman bug 548328 The laymansync module prevented emerge from operating due to the layman import in the module's __init__.py. There was breakage in the cryptography import due to an openssl USE flag change and re-compile. This caused the chain reaction traceback preventing emerge from running. .../portage/sync/modules/laymansync/__init__.py | 11 +- .../portage/sync/modules/laymansync/laymansync.py | 357 +-------------------- .../laymansync/{laymansync.py => pylayman.py} | 138 +------- .../portage/sync/modules/laymansync/subproc.py | 136 ++++++++ 4 files changed, 147 insertions(+), 495 deletions(-) diff --git a/pm_plugins/portage/sync/modules/laymansync/__init__.py b/pm_plugins/portage/sync/modules/laymansync/__init__.py index de06b03..d80f885 100644 --- a/pm_plugins/portage/sync/modules/laymansync/__init__.py +++ b/pm_plugins/portage/sync/modules/laymansync/__init__.py @@ -5,26 +5,17 @@ Performs layman sync actions for layman overlays. ''' -import os from portage.sync.config_checks import CheckSyncConfig -try: - import layman - config_class = 'PyLayman' - del layman -except ImportError: - config_class = 'Layman' - - module_spec = { 'name': 'laymansync', 'description': __doc__, 'provides':{ 'layman-module': { 'name': 'laymansync', - 'class': config_class, + 'class': 'CONFIG_CLASS', 'description': __doc__, 'functions': ['sync', 'new', 'exists'], 'func_desc': { diff --git a/pm_plugins/portage/sync/modules/laymansync/laymansync.py b/pm_plugins/portage/sync/modules/laymansync/laymansync.py index 1156c61..9835beb 100644 --- a/pm_plugins/portage/sync/modules/laymansync/laymansync.py +++ b/pm_plugins/portage/sync/modules/laymansync/laymansync.py @@ -2,357 +2,12 @@ # Distributed under the terms of the GNU General Public License v2 '''Layman module for portage''' -import logging -import layman.overlays.overlay as Overlay -from layman.api import LaymanAPI -from layman.config import BareConfig, OptionConfig -from layman.maker import Interactive -from layman.output import Message -from layman.utils import reload_config +try: + from pylayman import PyLayman + CONFIG_CLASS = PyLayman +except ImportError: + from subproc import Layman + CONFIG_CLASS = Layman -import portage -from portage import os -from portage.util import writemsg_level -from portage.output import create_color_func -good = create_color_func("GOOD") -bad = create_color_func("BAD") -warn = create_color_func("WARN") -from portage.sync.syncbase import NewBase - -import sys - -def create_overlay_package(config=None, repo=None, logger=None, xterm_titles=None): - ''' - Creates a layman overlay object - from the given repos.conf repo info. - - @params config: layman.config class object - @params repo: portage.repo class object - @rtype tuple: overlay name and layman.overlay object or None - ''' - if repo: - overlay = {'sources': []} - desc = 'Defined and created from info in %(repo)s config file...'\ - % ({'repo': repo.name}) - if not config: - config = BareConfig() - if not repo.branch: - repo.branch = '' - - overlay['name'] = repo.name - overlay['descriptions'] = [desc] - overlay['owner_name'] = 'repos.conf' - overlay['owner_email'] = '127.0.0.1' - overlay['sources'].append([repo.sync_uri, repo.layman_type, repo.branch]) - overlay['priority'] = repo.priority - - ovl = Overlay.Overlay(config=config, ovl_dict=overlay, ignore=1) - return (repo.name, ovl) - - msg = '!!! laymansync sez... Error: repo not found.' - if logger and xterm_titles: - logger(xterm_titles, msg) - writemsg_level(msg + '\n', level=logging.ERROR, noiselevel=-1) - return None - - -class Layman(NewBase): - ''' - Layman sync class which makes use of a subprocess call to - execute desired layman actions. - ''' - - short_desc = "Perform sync operations on layman based repositories" - - @staticmethod - def name(): - ''' - Returns sync plugin name. - - @rtype str - ''' - return "Layman" - - - def __init__(self): - NewBase.__init__(self, 'layman', 'app-portage/layman') - - - def _get_optargs(self, args): - ''' - Gets optional layman arguments. - - @params args: dict of current subprocess args. - ''' - if self.settings: - if self.settings.get('NOCOLOR'): - args.append('-N') - if self.settings.get('PORTAGE_QUIET'): - args.append('-q') - - - def new(self, **kwargs): - '''Use layman to install the repository''' - if kwargs: - self._kwargs(kwargs) - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - args = [] - msg = '>>> Starting to add new layman overlay %(repo)s'\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - location = self.repo.location.replace(self.repo.name, '') - - args.append('layman') - self._get_optargs(args) - args.append('--storage') - args.append(location) - args.append('-a') - args.append(self.repo.name) - - command = ' '.join(args) - - exitcode = portage.process.spawn_bash("%(command)s" % \ - ({'command': command}), - **portage._native_kwargs(self.spawn_kwargs)) - if exitcode != os.EX_OK: - msg = "!!! layman add error in %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - msg = ">>> Addition of layman repo succeeded: %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - msg = '>>> laymansync sez... "Hasta la add ya, baby!"' - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - - return (exitcode, True) - - - def update(self): - ''' Update existing repository''' - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - args = [] - - msg = '>>> Starting layman sync for %(repo)s...'\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - location = self.repo.location.replace(self.repo.name, '') - - args.append('layman') - self._get_optargs(args) - args.append('--storage') - args.append(location) - args.append('-s') - args.append(self.repo.name) - - command = ' '.join(args) - exitcode = portage.process.spawn_bash("%(command)s" % \ - ({'command': command}), - **portage._native_kwargs(self.spawn_kwargs)) - - if exitcode != os.EX_OK: - exitcode = self.new()[0] - if exitcode != os.EX_OK: - msg = "!!! layman sync error in %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - else: - return (exitcode, True) - - msg = ">>> layman sync succeeded: %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - msg = '>>> laymansync sez... "Hasta la sync ya, baby!"' - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - - return (exitcode, True) - - -class PyLayman(NewBase): - ''' - Layman sync class which makes use of layman's modules to - perform desired actions. - ''' - - short_desc = "Perform sync operations on layman based repositories" - - @staticmethod - def name(): - ''' - Returns sync plugin name. - - @rtype str - ''' - return "Layman" - - def __init__(self): - NewBase.__init__(self, 'layman', 'app-portage/layman') - - self._layman = None - self.storage = '' - self.current_storage = '' - - - def _get_layman_api(self): - ''' - Initializes layman api. - - @rtype layman.api.LaymanAPI instance - ''' - # Make it so that we aren't initializing the - # LaymanAPI instance if it already exists and - # if the current storage location hasn't been - # changed for the new repository. - self.storage = self.repo.location.replace(self.repo.name, '') - - if self._layman and self.storage in self.current_storage: - return self._layman - - config = BareConfig() - configdir = {'configdir': config.get_option('configdir')} - - self.message = Message(out=sys.stdout, err=sys.stderr) - self.current_storage = self.storage - options = { - 'config': config.get_option('config') % (configdir), - 'quiet': self.settings.get('PORTAGE_QUIET'), - 'quietness': config.get_option('quietness'), - 'overlay_defs': config.get_option('overlay_defs') % (configdir), - 'output': self.message, - 'nocolor': self.settings.get('NOCOLOR'), - 'root': self.settings.get('EROOT'), - 'storage': self.current_storage, - 'verbose': self.settings.get('PORTAGE_VERBOSE'), - 'width': self.settings.get('COLUMNWIDTH'), - - } - self.config = OptionConfig(options=options, root=options['root']) - - # Reloads config to read custom overlay - # xml files. - reload_config(self.config) - - layman_api = LaymanAPI(self.config, - report_errors=True, - output=self.config['output'] - ) - - self._layman = layman_api - - return layman_api - - - def _eval_exitcode(self, exitcode): - ''' - Evaluates the boolean returned by layman's API - when performing a task and returns the proper exitcode. - - @params exitcode: boolean value reflecting the successful - execution of a task. - @rtype int - ''' - if exitcode == True: - return 0 - return 1 - - - def new(self, **kwargs): - '''Do the initial download and install of the repository''' - layman_inst = self._get_layman_api() - # Update the remote list before adding anything. - layman_inst.fetch_remote_list() - available_overlays = layman_inst.get_available(dbreload=True) - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - - msg = '>>> Starting to add new layman overlay %(repo)s'\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - if self.repo.name not in available_overlays: - overlay_package = create_overlay_package(repo=self.repo,\ - logger=self.logger,\ - xterm_titles=self.xter_titles) - create_overlay_xml = Interactive(config=self.config) - path = self.config.get_option('overlay_defs') + '/reposconf.xml' - result = create_overlay_xml(overlay_package=overlay_package, - path=path) - - if not result: - msg = '!!! layman add error in %(repo)s: Failed to add'\ - '%(repo)s to %(path)s' % ({'repo': self.repo.name, - 'path': path}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n', level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - - results = layman_inst.add_repos(self.repo.name) - exitcode = self._eval_exitcode(results) - - if exitcode != os.EX_OK: - msg = "!!! layman add error in %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - msg = ">>> Addition of layman repo succeeded: %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - msg = '>>> laymansync sez... "Hasta la add ya, baby!"' - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - return (exitcode, True) - - def update(self): - ''' Update existing repository''' - layman_inst = self._get_layman_api() - - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - - msg = '>>> Starting layman sync for %(repo)s...'\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - results = layman_inst.sync(self.repo.name) - exitcode = self._eval_exitcode(results) - - if exitcode != os.EX_OK: - exitcode = self.new()[0] - if exitcode != os.EX_OK: - msg = "!!! layman sync error in %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - else: - return (exitcode, True) - - msg = ">>> layman sync succeeded: %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - msg = '>>> laymansync sez... "Hasta la sync ya, baby!"' - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - - return (exitcode, True) diff --git a/pm_plugins/portage/sync/modules/laymansync/laymansync.py b/pm_plugins/portage/sync/modules/laymansync/pylayman.py similarity index 64% copy from pm_plugins/portage/sync/modules/laymansync/laymansync.py copy to pm_plugins/portage/sync/modules/laymansync/pylayman.py index 1156c61..5682135 100644 --- a/pm_plugins/portage/sync/modules/laymansync/laymansync.py +++ b/pm_plugins/portage/sync/modules/laymansync/pylayman.py @@ -1,18 +1,17 @@ -# Copyright 2014 Gentoo Foundation +# Copyright 2014-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -'''Layman module for portage''' +'''Layman module for portage using the lyman api''' import logging import layman.overlays.overlay as Overlay - from layman.api import LaymanAPI from layman.config import BareConfig, OptionConfig from layman.maker import Interactive from layman.output import Message from layman.utils import reload_config -import portage + from portage import os from portage.util import writemsg_level from portage.output import create_color_func @@ -58,130 +57,6 @@ def create_overlay_package(config=None, repo=None, logger=None, xterm_titles=Non return None -class Layman(NewBase): - ''' - Layman sync class which makes use of a subprocess call to - execute desired layman actions. - ''' - - short_desc = "Perform sync operations on layman based repositories" - - @staticmethod - def name(): - ''' - Returns sync plugin name. - - @rtype str - ''' - return "Layman" - - - def __init__(self): - NewBase.__init__(self, 'layman', 'app-portage/layman') - - - def _get_optargs(self, args): - ''' - Gets optional layman arguments. - - @params args: dict of current subprocess args. - ''' - if self.settings: - if self.settings.get('NOCOLOR'): - args.append('-N') - if self.settings.get('PORTAGE_QUIET'): - args.append('-q') - - - def new(self, **kwargs): - '''Use layman to install the repository''' - if kwargs: - self._kwargs(kwargs) - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - args = [] - msg = '>>> Starting to add new layman overlay %(repo)s'\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - location = self.repo.location.replace(self.repo.name, '') - - args.append('layman') - self._get_optargs(args) - args.append('--storage') - args.append(location) - args.append('-a') - args.append(self.repo.name) - - command = ' '.join(args) - - exitcode = portage.process.spawn_bash("%(command)s" % \ - ({'command': command}), - **portage._native_kwargs(self.spawn_kwargs)) - if exitcode != os.EX_OK: - msg = "!!! layman add error in %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - msg = ">>> Addition of layman repo succeeded: %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - msg = '>>> laymansync sez... "Hasta la add ya, baby!"' - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - - return (exitcode, True) - - - def update(self): - ''' Update existing repository''' - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - args = [] - - msg = '>>> Starting layman sync for %(repo)s...'\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + '\n') - - location = self.repo.location.replace(self.repo.name, '') - - args.append('layman') - self._get_optargs(args) - args.append('--storage') - args.append(location) - args.append('-s') - args.append(self.repo.name) - - command = ' '.join(args) - exitcode = portage.process.spawn_bash("%(command)s" % \ - ({'command': command}), - **portage._native_kwargs(self.spawn_kwargs)) - - if exitcode != os.EX_OK: - exitcode = self.new()[0] - if exitcode != os.EX_OK: - msg = "!!! layman sync error in %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) - return (exitcode, False) - else: - return (exitcode, True) - - msg = ">>> layman sync succeeded: %(repo)s"\ - % ({'repo': self.repo.name}) - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - msg = '>>> laymansync sez... "Hasta la sync ya, baby!"' - self.logger(self.xterm_titles, msg) - writemsg_level(msg + "\n") - - return (exitcode, True) - class PyLayman(NewBase): ''' @@ -277,8 +152,6 @@ class PyLayman(NewBase): # Update the remote list before adding anything. layman_inst.fetch_remote_list() available_overlays = layman_inst.get_available(dbreload=True) - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) msg = '>>> Starting to add new layman overlay %(repo)s'\ % ({'repo': self.repo.name}) @@ -300,7 +173,7 @@ class PyLayman(NewBase): 'path': path}) self.logger(self.xterm_titles, msg) writemsg_level(msg + '\n', level=logging.ERROR, noiselevel=-1) - return (exitcode, False) + return (1, False) results = layman_inst.add_repos(self.repo.name) exitcode = self._eval_exitcode(results) @@ -325,9 +198,6 @@ class PyLayman(NewBase): ''' Update existing repository''' layman_inst = self._get_layman_api() - emerge_config = self.options.get('emerge_config', None) - portdb = self.options.get('portdb', None) - msg = '>>> Starting layman sync for %(repo)s...'\ % ({'repo': self.repo.name}) self.logger(self.xterm_titles, msg) diff --git a/pm_plugins/portage/sync/modules/laymansync/subproc.py b/pm_plugins/portage/sync/modules/laymansync/subproc.py new file mode 100644 index 0000000..1166841 --- /dev/null +++ b/pm_plugins/portage/sync/modules/laymansync/subproc.py @@ -0,0 +1,136 @@ +# Copyright 2014-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +'''Layman module for portage using a subprocess call''' + +import logging + +import portage +from portage import os +from portage.util import writemsg_level +from portage.output import create_color_func +good = create_color_func("GOOD") +bad = create_color_func("BAD") +warn = create_color_func("WARN") +from portage.sync.syncbase import NewBase + + +class Layman(NewBase): + ''' + Layman sync class which makes use of a subprocess call to + execute desired layman actions. + ''' + + short_desc = "Perform sync operations on layman based repositories" + + @staticmethod + def name(): + ''' + Returns sync plugin name. + + @rtype str + ''' + return "Layman" + + + def __init__(self): + NewBase.__init__(self, 'layman', 'app-portage/layman') + + + def _get_optargs(self, args): + ''' + Gets optional layman arguments. + + @params args: dict of current subprocess args. + ''' + if self.settings: + if self.settings.get('NOCOLOR'): + args.append('-N') + if self.settings.get('PORTAGE_QUIET'): + args.append('-q') + + + def new(self, **kwargs): + '''Use layman to install the repository''' + if kwargs: + self._kwargs(kwargs) + args = [] + msg = '>>> Starting to add new layman overlay %(repo)s'\ + % ({'repo': self.repo.name}) + self.logger(self.xterm_titles, msg) + writemsg_level(msg + '\n') + + location = self.repo.location.replace(self.repo.name, '') + + args.append('layman') + self._get_optargs(args) + args.append('--storage') + args.append(location) + args.append('-a') + args.append(self.repo.name) + + command = ' '.join(args) + + exitcode = portage.process.spawn_bash("%(command)s" % \ + ({'command': command}), + **portage._native_kwargs(self.spawn_kwargs)) + if exitcode != os.EX_OK: + msg = "!!! layman add error in %(repo)s"\ + % ({'repo': self.repo.name}) + self.logger(self.xterm_titles, msg) + writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) + return (exitcode, False) + msg = ">>> Addition of layman repo succeeded: %(repo)s"\ + % ({'repo': self.repo.name}) + self.logger(self.xterm_titles, msg) + writemsg_level(msg + "\n") + msg = '>>> laymansync sez... "Hasta la add ya, baby!"' + self.logger(self.xterm_titles, msg) + writemsg_level(msg + "\n") + + return (exitcode, True) + + + def update(self): + ''' Update existing repository''' + args = [] + + msg = '>>> Starting layman sync for %(repo)s...'\ + % ({'repo': self.repo.name}) + self.logger(self.xterm_titles, msg) + writemsg_level(msg + '\n') + + location = self.repo.location.replace(self.repo.name, '') + + args.append('layman') + self._get_optargs(args) + args.append('--storage') + args.append(location) + args.append('-s') + args.append(self.repo.name) + + command = ' '.join(args) + exitcode = portage.process.spawn_bash("%(command)s" % \ + ({'command': command}), + **portage._native_kwargs(self.spawn_kwargs)) + + if exitcode != os.EX_OK: + exitcode = self.new()[0] + if exitcode != os.EX_OK: + msg = "!!! layman sync error in %(repo)s"\ + % ({'repo': self.repo.name}) + self.logger(self.xterm_titles, msg) + writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1) + return (exitcode, False) + else: + return (exitcode, True) + + msg = ">>> layman sync succeeded: %(repo)s"\ + % ({'repo': self.repo.name}) + self.logger(self.xterm_titles, msg) + writemsg_level(msg + "\n") + msg = '>>> laymansync sez... "Hasta la sync ya, baby!"' + self.logger(self.xterm_titles, msg) + writemsg_level(msg + "\n") + + return (exitcode, True) +