commit:     a7d3a01ae62b55d4e4f0ada9b8b5a9466565371d
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat May  9 03:46:35 2020 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May  9 03:48:38 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a7d3a01a

app-portage/elogviewer: Revision bump 3.0, add patch

Add a patch to fix a HeaderState.parse segfault for a newer line format
Bug: https://bugs.gentoo.org/721522

Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>

 app-portage/elogviewer/elogviewer-3.0-r2.ebuild    | 69 ++++++++++++++++++++++
 .../elogviewer/files/elogviewer-3.0-segfault.patch | 34 +++++++++++
 2 files changed, 103 insertions(+)

diff --git a/app-portage/elogviewer/elogviewer-3.0-r2.ebuild 
b/app-portage/elogviewer/elogviewer-3.0-r2.ebuild
new file mode 100644
index 00000000000..f733ba8a7fe
--- /dev/null
+++ b/app-portage/elogviewer/elogviewer-3.0-r2.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+DISABLE_AUTOFORMATTING=true
+
+inherit desktop python-single-r1 readme.gentoo-r1
+
+DESCRIPTION="Elog viewer for Gentoo"
+HOMEPAGE="https://sourceforge.net/projects/elogviewer";
+SRC_URI="https://github.com/Synss/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE=""
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+       $(python_gen_cond_dep '
+               dev-python/PyQt5[gui,widgets,${PYTHON_MULTI_USEDEP}]
+               >=sys-apps/portage-2.1[${PYTHON_MULTI_USEDEP}]
+       ')
+       $(python_gen_cond_dep 'dev-python/enum34[${PYTHON_MULTI_USEDEP}]' 
python2_7)
+"
+DEPEND="${RDEPEND}
+       $(python_gen_cond_dep '
+               dev-python/setuptools[${PYTHON_MULTI_USEDEP}]
+       ')
+"
+
+DOC_CONTENTS="In order to use this software, you need to activate
+Portage's elog features.  Required is
+       PORTAGE_ELOG_SYSTEM=\"save\"
+and at least one of
+       PORTAGE_ELOG_CLASSES=\"warn error info log qa\"
+More information on the elog system can be found in
+/usr/share/portage/config/make.conf.example
+
+To operate properly this software needs the directory
+${PORT_LOGDIR:-/var/log/portage}/elog created, belonging to group portage.
+To start the software as a user, add yourself to the portage group."
+
+PATCHES=( "${FILESDIR}/elogviewer-3.0-segfault.patch"
+)
+
+src_compile() {
+       rm -f Makefile
+}
+
+src_install() {
+       python_newscript elogviewer.py elogviewer
+
+       make_desktop_entry ${PN} ${PN} ${PN} System
+
+       doman elogviewer.1
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       readme.gentoo_print_elog
+
+       ewarn "The elogviewer's configuration file is now saved in:"
+       ewarn "~/.config/elogviewer/ (was ~/.config/Mathias\ Laurin/)."
+       ewarn "Please migrate any user specific settings to the new config 
file."
+}

diff --git a/app-portage/elogviewer/files/elogviewer-3.0-segfault.patch 
b/app-portage/elogviewer/files/elogviewer-3.0-segfault.patch
new file mode 100644
index 00000000000..cc67a0d6f19
--- /dev/null
+++ b/app-portage/elogviewer/files/elogviewer-3.0-segfault.patch
@@ -0,0 +1,34 @@
+--- a/elogviewer.py    2020-05-08 20:23:04.419257166 -0700
++++ b/elogviewer.py    2020-05-08 20:23:30.436359552 -0700
+@@ -255,15 +255,22 @@
+         return "</h2>"
+ 
+     def parse(self, line):
+-        eclass, stage = line.split(":")
+-        self.context.eclass = {
+-            "ERROR": EClass.Error,
+-            "WARN": EClass.Warning,
+-            "LOG": EClass.Log,
+-            "INFO": EClass.Info,
+-            "QA": EClass.QA,
+-        }[eclass]
+-        return "{}: {}".format(self.context.eclass.name, stage)
++        if not line:
++            return
++        parts = line.split(":")
++        if len(parts) == 2:
++            eclass, stage = parts[0:2]
++            self.context.eclass = {
++                "ERROR": EClass.Error,
++                "WARN": EClass.Warning,
++                "LOG": EClass.Log,
++                "INFO": EClass.Info,
++                "QA": EClass.QA,
++            }[eclass]
++            return "{}: {}".format(self.context.eclass.name, stage)
++        elif len(parts) > 2:
++            # Return an empty string, eclass and stage are populated anyway
++            return "" 
+ 
+ 
+ class BodyState(AbstractState):

Reply via email to