summaryrefslogtreecommitdiff
path: root/net-misc/gns3-server
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/gns3-server')
-rw-r--r--net-misc/gns3-server/Manifest3
-rw-r--r--net-misc/gns3-server/files/gns3-server-rmraven.patch194
-rw-r--r--net-misc/gns3-server/gns3-server-2.2.17.ebuild67
3 files changed, 69 insertions, 195 deletions
diff --git a/net-misc/gns3-server/Manifest b/net-misc/gns3-server/Manifest
index 66749eb9764e..f1e78f21d914 100644
--- a/net-misc/gns3-server/Manifest
+++ b/net-misc/gns3-server/Manifest
@@ -1,4 +1,5 @@
-AUX gns3-server-rmraven.patch 7946 BLAKE2B 910366f4552ce3984cef20b88d5fb3a6233d02294d4921a068e5175e9b305dc6d60349c9362e6d09a959aa5eef615a1793363e8965e5711f33b15c981a3b192c SHA512 94af9d532ad6c90c23360240ab15f439cbdfbd95c870c76e0f71b5178d8a24058a18be088a98f9e3cc731f186cfb12c5fc501da32b0a514b7d66c98fdc0b58c3
DIST gns3-server-2.2.11.tar.gz 7588877 BLAKE2B 429eb23e44ca0f3f68abba6fa437b80c12fb1e70c02e1c81ce2051a9d9b78f31f6618397dee07e307589c3f9f0ad55a26f22084ffa01b7c42b730bd505979c2e SHA512 6e11c6ae10942bac9f82dc3b5e0bee04c8afbbae8ca6b5d20e42495c15010ba17cddbac83c7c188a565ce8b24ed58ac7c80b4eb5a8f29f2612dce9d0dfa65a07
+DIST gns3-server-2.2.17.tar.gz 8980894 BLAKE2B 0f3698adeb7cf9daede05c0281a2c324bad0952a9e5774e11ebb9af342da020bac8b7acb05a938cd8df5a8934bed6bd2b56ee0187ea28b8356376e1f1396e944 SHA512 233db2e3bb3d6a071ce3ce24b8c86049f2707863f92ca67c4fdfb763bbdc98d3b78a1c2156d2d05548ee10f84394ab333f1c3404723091dc4e7edeb3df5a4a57
EBUILD gns3-server-2.2.11.ebuild 1990 BLAKE2B 985f6510da23c8924af22a73faf0c7764b40c05b37964c21eef33ddf0a4546115ebefff79923ae49ff404e0e37480aec4e9017411f0f573884f4a2f2f756da62 SHA512 a0060db7bd91bc00d0313e2041e038d0999e16e542dd016f78e1b271107ca74d360f09b32d8488b45dfd24ac04c04b08cf86ea6088989ffbcdac1a16efbb9cc6
+EBUILD gns3-server-2.2.17.ebuild 2141 BLAKE2B bdf09970f3219a647417c16be639efc24db650957ecc8d1d33b0a782aa428f1499faa34e9e3147fd1ee0359937da6d0cd8714e849eb29246678e8dd4f306bc43 SHA512 9adc66b53022286421d46f591ef79eefb1b186376a5cee802c41b1a89e770e0ac7972c1b748e570da4dedb42473f6d89d032e698c080ff8f96e7fa3b29775507
MISC metadata.xml 567 BLAKE2B 91ca81f4e547aaf3098d74655d41ba9c340fd642268ac88cf28de6f4b782826d020a7b17cbad9a3dd17f27c573a632a006e23d114b0a049382075b4e71f125f4 SHA512 475a15519d9f8f3a2c8c6aed6ae780895b1f2ead2a659058f609ee1de19cac3e75b37f5f159bc8b6b0ce345ea64fee7d515ad1977fa1072aed73fe0b55c980ee
diff --git a/net-misc/gns3-server/files/gns3-server-rmraven.patch b/net-misc/gns3-server/files/gns3-server-rmraven.patch
deleted file mode 100644
index 612a16aecaee..000000000000
--- a/net-misc/gns3-server/files/gns3-server-rmraven.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From c63aad8eca00bca2ec48fcb667bbdfd80a22a7ab Mon Sep 17 00:00:00 2001
-From: grossmj <grossmj@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
-
----
- gns3server/crash_report.py | 93 ++++++++++++++++++++------------------
- gns3server/web/route.py | 2 +-
- requirements.txt | 3 +-
- 3 files changed, 53 insertions(+), 45 deletions(-)
-
-diff --git a/gns3server/crash_report.py b/gns3server/crash_report.py
-index 87e22a213..7f92d38e6 100644
---- a/gns3server/crash_report.py
-+++ b/gns3server/crash_report.py
-@@ -15,22 +15,21 @@
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-+try:
-+ import sentry_sdk
-+ from sentry_sdk.integrations.aiohttp import AioHttpIntegration
-+ SENTRY_SDK_AVAILABLE = True
-+except ImportError:
-+ # Sentry SDK is not installed with deb package in order to simplify packaging
-+ SENTRY_SDK_AVAILABLE = False
-+
- import os
- import sys
- import struct
--import aiohttp
- import platform
- import locale
- import distro
-
--try:
-- import raven
-- from raven.transport.http import HTTPTransport
-- RAVEN_AVAILABLE = True
--except ImportError:
-- # raven is not installed with deb package in order to simplify packaging
-- RAVEN_AVAILABLE = False
--
- from .version import __version__, __version_info__
- from .config import Config
- from .utils.get_resource import get_resource
-@@ -59,48 +58,45 @@ class CrashReport:
- """
-
- DSN = "https://dbfb677c73304b1286aef33dfbb749c6:93b9a937d4884426a1b15f37536fcd94@o19455.ingest.sentry.io/38482"
-- if hasattr(sys, "frozen"):
-- cacert = get_resource("cacert.pem")
-- if cacert is not None and os.path.isfile(cacert):
-- DSN += "?ca_certs={}".format(cacert)
-- else:
-- log.warning("The SSL certificate bundle file '{}' could not be found".format(cacert))
- _instance = None
-
- def __init__(self):
-- self._client = None
-
-- # We don't want sentry making noise if an error is catched when you don't have internet
-+ # We don't want sentry making noise if an error is caught when you don't have internet
- sentry_errors = logging.getLogger('sentry.errors')
- sentry_errors.disabled = True
-
- sentry_uncaught = logging.getLogger('sentry.errors.uncaught')
- sentry_uncaught.disabled = True
-
-- def capture_exception(self, request=None):
-- if not RAVEN_AVAILABLE:
-- return
-- if os.path.exists(".git"):
-- log.warning("A .git directory exist crash report is turn off for developers")
-- return
-- server_config = Config.instance().get_section_config("Server")
-- if server_config.getboolean("report_errors"):
-- if self._client is None:
-- self._client = raven.Client(CrashReport.DSN, release=__version__, raise_send_errors=True, transport=HTTPTransport)
-- if request is not None:
-- self._client.http_context({
-- "method": request.method,
-- "url": request.path,
-- "data": request.json,
-- })
--
-- context = {
-+ 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))
-+
-+ sentry_sdk.init(dsn=CrashReport.DSN,
-+ release=__version__,
-+ ca_certs=cacert,
-+ integrations=[AioHttpIntegration()])
-+
-+ 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()),
-- "aiohttp:version": aiohttp.__version__,
-+
-+ }
-+
-+ 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]),
-@@ -113,8 +109,8 @@ def capture_exception(self, request=None):
- # add locale information
- try:
- language, encoding = locale.getlocale()
-- context["locale:language"] = language
-- context["locale:encoding"] = encoding
-+ extra_context["locale:language"] = language
-+ extra_context["locale:encoding"] = encoding
- except ValueError:
- pass
-
-@@ -124,17 +120,28 @@ def capture_exception(self, request=None):
- if os.path.isfile(gns3vm_version):
- try:
- with open(gns3vm_version) as fd:
-- context["gns3vm:version"] = fd.readline().strip()
-+ extra_context["gns3vm:version"] = fd.readline().strip()
- except OSError:
- pass
-
-- self._client.tags_context(context)
-+ with sentry_sdk.configure_scope() as scope:
-+ for key, value in extra_context.items():
-+ scope.set_extra(key, value)
-+
-+ def capture_exception(self):
-+ if not SENTRY_SDK_AVAILABLE:
-+ return
-+ if os.path.exists(".git"):
-+ log.warning(".git directory detected, crash reporting is turned off for developers.")
-+ return
-+ server_config = Config.instance().get_section_config("Server")
-+ if server_config.getboolean("report_errors"):
-+
- try:
-- report = self._client.captureException()
-+ sentry_sdk.capture_exception()
-+ 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.info("Crash report sent with event ID: {}".format(self._client.get_ident(report)))
-
- @classmethod
- def instance(cls):
-diff --git a/gns3server/web/route.py b/gns3server/web/route.py
-index d1275250d..c70dbbc3a 100644
---- a/gns3server/web/route.py
-+++ b/gns3server/web/route.py
-@@ -242,7 +242,7 @@ async def control_schema(request):
- log.error("Uncaught exception detected: {type}".format(type=type(e)), exc_info=1)
- response = Response(request=request, route=route)
- response.set_status(500)
-- CrashReport.instance().capture_exception(request)
-+ CrashReport.instance().capture_exception()
- exc_type, exc_value, exc_tb = sys.exc_info()
- lines = traceback.format_exception(exc_type, exc_value, exc_tb)
- if api_version is not None:
-diff --git a/requirements.txt b/requirements.txt
-index 57fbb7938..0af9e0d68 100644
---- a/requirements.txt
-+++ b/requirements.txt
-@@ -4,9 +4,10 @@ jsonschema==2.6.0; python_version < '3.8' # pyup: ignore
- aiohttp==3.6.2
- aiohttp-cors==0.7.0
- aiofiles==0.4.0
-+aiocontextvars==0.2.2
- async_generator>=1.10
- Jinja2>=2.7.3
--raven>=5.23.0
-+sentry-sdk>=0.14.4
- psutil==5.6.6
- async-timeout==3.0.1
- distro>=1.3.0
diff --git a/net-misc/gns3-server/gns3-server-2.2.17.ebuild b/net-misc/gns3-server/gns3-server-2.2.17.ebuild
new file mode 100644
index 000000000000..b014c21ebf68
--- /dev/null
+++ b/net-misc/gns3-server/gns3-server-2.2.17.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7,8} )
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1 systemd optfeature
+
+DESCRIPTION="GNS3 server to asynchronously manage emulators"
+HOMEPAGE="https://www.gns3.com/ https://github.com/GNS3/gns3-server"
+SRC_URI="https://github.com/GNS3/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=app-emulation/dynamips-0.2.18
+ >=dev-python/aiofiles-0.5.0[${PYTHON_USEDEP}]
+ >=dev-python/aiohttp-3.6.2[${PYTHON_USEDEP}]
+ >=dev-python/aiohttp-cors-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/async_timeout-3.0.1[${PYTHON_USEDEP}]
+ >=dev-python/distro-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja-2.7.3[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.7.0[${PYTHON_USEDEP}]
+ >=dev-python/py-cpuinfo-7.0.0[${PYTHON_USEDEP}]
+ >=dev-python/sentry-sdk-0.14.4[${PYTHON_USEDEP}]
+ >=net-misc/ubridge-0.9.14
+"
+
+src_prepare() {
+ default
+
+ # newer python packages are fine
+ sed -i -e 's/[<>=].*//' requirements.txt || die "fixing requirements failed"
+
+ # Remove Pre-built busybox binary
+ rm gns3server/compute/docker/resources/bin/busybox || die
+
+ # Package installs 'tests' package which is forbidden
+ rm -r tests || die
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ systemd_dounit init/gns3.service.systemd
+
+ mkdir -p "${D}$(python_get_sitedir)/gns3server/compute/docker/resources/bin" || die
+ ln -s /bin/busybox "${D}$(python_get_sitedir)/gns3server/compute/docker/resources/bin/busybox" || die
+}
+
+pkg_postinst() {
+ elog "net-misc/gns3-server has several optional packages that must be merged manually for additional functionality."
+ elog ""
+ elog "The following is a list of packages that can be added:"
+ optfeature "QEMU Support" "app-emulation/qemu"
+ optfeature "Virtualbox Support" "app-emulation/virtualbox"
+ optfeature "Docker Support" "app-emulation/docker"
+ optfeature "Wireshark Support" "net-analyzer/wireshark"
+ elog ""
+ elog "The following packages are currently unsupported:"
+ elog "iouyap and vpcs"
+}