commit:     34cfb652844698c47cf249073f8025f7f63c650d
Author:     Aaron Bauman <bman <AT> gentoo <DOT> org>
AuthorDate: Sun May 24 22:28:36 2020 +0000
Commit:     Aaron Bauman <bman <AT> gentoo <DOT> org>
CommitDate: Sun May 24 22:28:36 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=34cfb652

net-misc/gns3-gui: bump to version 2.2.8

* Fix all the crazy dep changes
* Add upstream patch to remove dev-python/raven dep
* Takeover maintainership
* Only support py3.7 and py3.8 to minimize conditionals

Bug: https://bugs.gentoo.org/688016
Bug: https://bugs.gentoo.org/712964
Bug: https://bugs.gentoo.org/714840
Bug: https://bugs.gentoo.org/718444
Signed-off-by: Aaron Bauman <bman <AT> gentoo.org>

 net-misc/gns3-gui/Manifest                     |   1 +
 net-misc/gns3-gui/files/gns3-gui-rmraven.patch | 182 +++++++++++++++++++++++++
 net-misc/gns3-gui/gns3-gui-2.2.8.ebuild        |  57 ++++++++
 net-misc/gns3-gui/metadata.xml                 |  10 +-
 4 files changed, 244 insertions(+), 6 deletions(-)

diff --git a/net-misc/gns3-gui/Manifest b/net-misc/gns3-gui/Manifest
index 9ed2a75cc61..be61aeab7c4 100644
--- a/net-misc/gns3-gui/Manifest
+++ b/net-misc/gns3-gui/Manifest
@@ -1 +1,2 @@
 DIST gns3-gui-2.1.21.tar.gz 4845512 BLAKE2B 
93af250719a0aafe8645926552c61d43152e5a5620d42b4d73cd58d597b3280d11935043771f15cf04e5d116f6740d929e04c27b1af6732d65b7c6e36313ed3c
 SHA512 
b9b03c59064214323fe7375256075c56368747c8cd273bea41791b101ea7d6b877443e81dd57f13faf4b4bdc6de558e98648770de4734b1edd1c82911f2fcb9b
+DIST gns3-gui-2.2.8.tar.gz 5237129 BLAKE2B 
ce72219a1d0201f596c20b0988ab81f280889d3eb4717898da5d1a3c52a248e8f1d020d83b900309e623fadb758e67a91baaac9d61d75e72b96f4144ac5101fb
 SHA512 
28b9f6f16506f206f64831160d95687525b6709d9d0d84623763e46c3c9b2e138e3f12844619bbad00491677818a7e28da4f4ea9358d063c3427db16e62775ca

diff --git a/net-misc/gns3-gui/files/gns3-gui-rmraven.patch 
b/net-misc/gns3-gui/files/gns3-gui-rmraven.patch
new file mode 100644
index 00000000000..9a8be4e6249
--- /dev/null
+++ b/net-misc/gns3-gui/files/gns3-gui-rmraven.patch
@@ -0,0 +1,182 @@
+From 2ea1946c0f83672f5289edcce207a8d2de03cc43 Mon Sep 17 00:00:00 2001
+From: grossmj <gros...@gns3.net>
+Date: Tue, 19 May 2020 15:48:53 +0930
+Subject: [PATCH] Replace Raven by Sentry SDK. Fixes
+ https://github.com/GNS3/gns3-server/issues/1758
+
+---
+ gns3/crash_report.py | 111 +++++++++++++++++++++++++------------------
+ requirements.txt     |   2 +-
+ 2 files changed, 66 insertions(+), 47 deletions(-)
+
+diff --git a/gns3/crash_report.py b/gns3/crash_report.py
+index a6a555fd5..dfbb9fc46 100644
+--- a/gns3/crash_report.py
++++ b/gns3/crash_report.py
+@@ -23,12 +23,11 @@
+ import distro
+ 
+ try:
+-    import raven
+-    from raven.transport.http import HTTPTransport
+-    RAVEN_AVAILABLE = True
++    import sentry_sdk
++    SENTRY_SDK_AVAILABLE = True
+ except ImportError:
+-    # raven is not installed with deb package in order to simplify packaging
+-    RAVEN_AVAILABLE = False
++    # Sentry SDK is not installed with deb package in order to simplify 
packaging
++    SENTRY_SDK_AVAILABLE = False
+ 
+ from .utils.get_resource import get_resource
+ from .version import __version__, __version_info__
+@@ -69,49 +68,50 @@ def __init__(self):
+         sentry_uncaught = logging.getLogger('sentry.errors.uncaught')
+         sentry_uncaught.disabled = True
+ 
+-    def captureException(self, exception, value, tb):
+-        from .local_server import LocalServer
+-        from .local_config import LocalConfig
+-        from .controller import Controller
+-        from .compute_manager import ComputeManager
+-
+-        local_server = LocalServer.instance().localServerSettings()
+-        if local_server["report_errors"]:
+-            if not RAVEN_AVAILABLE:
+-                return
+-
+-            if os.path.exists(LocalConfig.instance().runAsRootPath()):
+-                log.warning("User has run application as root. Crash reports 
are disabled.")
+-                sys.exit(1)
+-                return
++        if SENTRY_SDK_AVAILABLE:
++            cacert = None
++            if hasattr(sys, "frozen"):
++                cacert_resource = get_resource("cacert.pem")
++                if cacert_resource is not None and 
os.path.isfile(cacert_resource):
++                    cacert = cacert_resource
++                else:
++                    log.error("The SSL certificate bundle file '{}' could not 
be found".format(cacert_resource))
+ 
+-            if os.path.exists(".git"):
+-                log.warning("A .git directory exist crash report is turn off 
for developers. Instant exit")
+-                sys.exit(1)
+-                return
++            sentry_sdk.init(dsn=CrashReport.DSN,
++                            release=__version__,
++                            ca_certs=cacert)
+ 
+-            if hasattr(exception, "fingerprint"):
+-                client = raven.Client(CrashReport.DSN, release=__version__, 
fingerprint=['{{ default }}', exception.fingerprint], transport=HTTPTransport)
+-            else:
+-                client = raven.Client(CrashReport.DSN, release=__version__, 
transport=HTTPTransport)
+-            context = {
++            tags = {
+                 "os:name": platform.system(),
+                 "os:release": platform.release(),
+                 "os:win_32": " ".join(platform.win32_ver()),
+                 "os:mac": "{} {}".format(platform.mac_ver()[0], 
platform.mac_ver()[2]),
+                 "os:linux": " ".join(distro.linux_distribution()),
++
++            }
++
++            self._add_qt_information(tags)
++
++            with sentry_sdk.configure_scope() as scope:
++                for key, value in tags.items():
++                    scope.set_tag(key, value)
++
++            extra_context = {
+                 "python:version": "{}.{}.{}".format(sys.version_info[0],
+                                                     sys.version_info[1],
+                                                     sys.version_info[2]),
+                 "python:bit": struct.calcsize("P") * 8,
+                 "python:encoding": sys.getdefaultencoding(),
+-                "python:frozen": "{}".format(hasattr(sys, "frozen")),
++                "python:frozen": "{}".format(hasattr(sys, "frozen"))
+             }
+ 
+             # extra controller and compute information
+-            extra_context = {"controller:version": 
Controller.instance().version(),
+-                             "controller:host": Controller.instance().host(),
+-                             "controller:connected": 
Controller.instance().connected()}
++            from .controller import Controller
++            from .compute_manager import ComputeManager
++            extra_context["controller:version"] = 
Controller.instance().version()
++            extra_context["controller:host"] = Controller.instance().host()
++            extra_context["controller:connected"] = 
Controller.instance().connected()
++
+             for index, compute in 
enumerate(ComputeManager.instance().computes()):
+                 extra_context["compute{}:id".format(index)] = compute.id()
+                 extra_context["compute{}:name".format(index)] = 
compute.name(),
+@@ -120,27 +120,46 @@ def captureException(self, exception, value, tb):
+                 extra_context["compute{}:platform".format(index)] = 
compute.capabilities().get("platform")
+                 extra_context["compute{}:version".format(index)] = 
compute.capabilities().get("version")
+ 
+-            context = self._add_qt_information(context)
+-            client.tags_context(context)
+-            client.extra_context(extra_context)
++            with sentry_sdk.configure_scope() as scope:
++                for key, value in extra_context.items():
++                    scope.set_extra(key, value)
++
++    def captureException(self, exception, value, tb):
++        from .local_server import LocalServer
++        from .local_config import LocalConfig
++
++        local_server = LocalServer.instance().localServerSettings()
++        if local_server["report_errors"]:
++            if not SENTRY_SDK_AVAILABLE:
++                return
++
++            if os.path.exists(LocalConfig.instance().runAsRootPath()):
++                log.warning("User is running application as root. Crash 
reports disabled.")
++                sys.exit(1)
++                return
++
++            if os.path.exists(".git"):
++                log.warning("A .git directory exists, crash reporting is 
turned off for developers.")
++                sys.exit(1)
++                return
++
+             try:
+-                report = client.captureException((exception, value, tb))
++                sentry_sdk.capture_exception((exception, value, tb))
++                log.info("Crash report sent with event ID: 
{}".format(sentry_sdk.last_event_id()))
+             except Exception as e:
+                 log.error("Can't send crash report to Sentry: {}".format(e))
+-                return
+-            log.debug("Crash report sent with event ID: 
{}".format(client.get_ident(report)))
+ 
+-    def _add_qt_information(self, context):
++    def _add_qt_information(self, tags):
++
+         try:
+             from .qt import QtCore
+             from .qt import sip
+         except ImportError:
+-            return context
+-        context["psutil:version"] = psutil.__version__
+-        context["pyqt:version"] = QtCore.PYQT_VERSION_STR
+-        context["qt:version"] = QtCore.QT_VERSION_STR
+-        context["sip:version"] = sip.SIP_VERSION_STR
+-        return context
++            return tags
++        tags["pyqt:version"] = QtCore.PYQT_VERSION_STR
++        tags["qt:version"] = QtCore.QT_VERSION_STR
++        tags["sip:version"] = sip.SIP_VERSION_STR
++        return tags
+ 
+     @classmethod
+     def instance(cls):
+diff --git a/requirements.txt b/requirements.txt
+index 99e803f1b..abd6cc7c9 100644
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -1,5 +1,5 @@
+ jsonschema==3.2.0; python_version >= '3.8'  # pyup: ignore
+ jsonschema==2.6.0; python_version < '3.8'  # pyup: ignore
+-raven>=5.23.0
++sentry-sdk>=0.14.4
+ psutil==5.6.6
+ distro>=1.3.0

diff --git a/net-misc/gns3-gui/gns3-gui-2.2.8.ebuild 
b/net-misc/gns3-gui/gns3-gui-2.2.8.ebuild
new file mode 100644
index 00000000000..5494cff0bb3
--- /dev/null
+++ b/net-misc/gns3-gui/gns3-gui-2.2.8.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7,8} )
+
+inherit distutils-r1 desktop xdg
+
+DESCRIPTION="Graphical Network Simulator"
+HOMEPAGE="https://www.gns3.net/";
+SRC_URI="https://github.com/GNS3/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+#net-misc/gns3-server version should always match gns3-gui version
+RDEPEND="
+       >=dev-python/distro-1.3.0[${PYTHON_USEDEP}]
+       $(python_gen_cond_dep 
'>=dev-python/jsonschema-3.2.0:=[${PYTHON_USEDEP}]' 'python3_8')
+       $(python_gen_cond_dep 
'<=dev-python/jsonschema-2.6.0:=[${PYTHON_USEDEP}]' 'python3_7')
+       >=dev-python/psutil-5.6.0[${PYTHON_USEDEP}]
+       >=dev-python/sentry-sdk-0.14.4[${PYTHON_USEDEP}]
+       ~net-misc/gns3-server-${PV}[${PYTHON_USEDEP}]
+       dev-python/PyQt5[gui,network,svg,websockets,widgets,${PYTHON_USEDEP}]
+"
+
+DISTUTILS_USE_SETUPTOOLS=bdepend
+
+PATCHES=( "${FILESDIR}/gns3-gui-rmraven.patch" )
+
+src_prepare() {
+       default
+       # newer psutils is fine
+       sed -i -e '/psutil==5.6.6/d' requirements.txt || die "fixing 
requirements failed"
+       eapply_user
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+
+       doicon "resources/images/gns3.ico"
+       make_desktop_entry "gns3" "GNS3" "gns3.ico" "Utility"
+}
+
+pkg_postinst() {
+       xdg_desktop_database_update
+       xdg_mimeinfo_database_update
+       xdg_icon_cache_update
+}
+
+pkg_postrm() {
+       xdg_desktop_database_update
+       xdg_mimeinfo_database_update
+       xdg_icon_cache_update
+}

diff --git a/net-misc/gns3-gui/metadata.xml b/net-misc/gns3-gui/metadata.xml
index 019d76c3361..09439c8762b 100644
--- a/net-misc/gns3-gui/metadata.xml
+++ b/net-misc/gns3-gui/metadata.xml
@@ -2,14 +2,12 @@
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
 <pkgmetadata>
        <maintainer type="person">
-               <email>onig...@protonmail.com</email>
-               <name>Gino McCarty</name>
-       </maintainer>
-       <maintainer type="project">
-               <email>proxy-ma...@gentoo.org</email>
-               <name>Proxy Maintainers</name>
+               <email>b...@gentoo.org</email>
+               <name>Aaron Bauman</name>
        </maintainer>
        <upstream>
                <remote-id type="sourceforge">gns-3</remote-id>
+               <remote-id type="github">GNS3/gns3-server</remote-id>
+               <bugs-to>https://github.com/GNS3/gns3-server/issues</bugs-to>
        </upstream>
 </pkgmetadata>

Reply via email to