summaryrefslogtreecommitdiff
path: root/sys-apps/pkgcore/files/pkgcore-0.10.18-sighdlr-r1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/pkgcore/files/pkgcore-0.10.18-sighdlr-r1.patch')
-rw-r--r--sys-apps/pkgcore/files/pkgcore-0.10.18-sighdlr-r1.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/sys-apps/pkgcore/files/pkgcore-0.10.18-sighdlr-r1.patch b/sys-apps/pkgcore/files/pkgcore-0.10.18-sighdlr-r1.patch
new file mode 100644
index 000000000000..a48bfc5873bb
--- /dev/null
+++ b/sys-apps/pkgcore/files/pkgcore-0.10.18-sighdlr-r1.patch
@@ -0,0 +1,67 @@
+From 303826ceb22985cfa1dfbf1e7a68ed327ffc741b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 15 May 2021 09:30:58 +0200
+Subject: [PATCH] pytest: Delay loading pkgcore modules until fixtures are used
+
+Delay loading pkgcore modules until the EbuildRepo-based fixtures are
+actually used. This prevents the pkgcore signal handlers from being
+enabled on all packages using pytest while keeping the old behavior
+of setting them upon import in packages using pkgcore directly.
+---
+ src/pkgcore/pytest/plugin.py | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/src/pkgcore/pytest/plugin.py b/src/pkgcore/pytest/plugin.py
+index 082538ab..bdc89e4b 100644
+--- a/src/pkgcore/pytest/plugin.py
++++ b/src/pkgcore/pytest/plugin.py
+@@ -1,3 +1,4 @@
++import importlib
+ import os
+ import subprocess
+ import textwrap
+@@ -5,8 +6,6 @@ from collections.abc import MutableSet
+ from datetime import datetime
+
+ import pytest
+-from pkgcore.ebuild import cpv as cpv_mod
+-from pkgcore.ebuild import repo_objs, repository
+ from snakeoil import klass
+ from snakeoil.fileutils import touch
+ from snakeoil.osutils import pjoin
+@@ -169,6 +168,12 @@ class EbuildRepo:
+ """Class for creating/manipulating ebuild repos."""
+
+ def __init__(self, path, repo_id='fake', eapi='5', masters=(), arches=()):
++ # load pkgcore modules late to avoid overriding signal handlers
++ # when the plugin is not actually used
++ self.cpv_mod = importlib.import_module('pkgcore.ebuild.cpv')
++ self.repo_objs = importlib.import_module('pkgcore.ebuild.repo_objs')
++ self.repository = importlib.import_module('pkgcore.ebuild.repository')
++
+ self.path = path
+ self.arches = _FileSet(pjoin(self.path, 'profiles', 'arch.list'))
+ self._today = datetime.today()
+@@ -194,8 +199,8 @@ class EbuildRepo:
+
+ def sync(self):
+ """Forcibly create underlying repo object avoiding cache usage."""
+- repo_config = repo_objs.RepoConfig(location=self.path, disable_inst_caching=True)
+- self._repo = repository.UnconfiguredTree(self.path, repo_config=repo_config)
++ repo_config = self.repo_objs.RepoConfig(location=self.path, disable_inst_caching=True)
++ self._repo = self.repository.UnconfiguredTree(self.path, repo_config=repo_config)
+
+ def create_profiles(self, profiles):
+ for p in profiles:
+@@ -215,7 +220,7 @@ class EbuildRepo:
+ f.write(f'{p.eapi}\n')
+
+ def create_ebuild(self, cpvstr, data=None, **kwargs):
+- cpv = cpv_mod.VersionedCPV(cpvstr)
++ cpv = self.cpv_mod.VersionedCPV(cpvstr)
+ self._repo.notify_add_package(cpv)
+ ebuild_dir = pjoin(self.path, cpv.category, cpv.package)
+ os.makedirs(ebuild_dir, exist_ok=True)
+--
+2.31.1
+