commit: b1079269328e5fad5e82ba4e33893cafeef4d132
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 2 09:22:16 2022 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Sun Dec 18 18:58:27 2022 +0000
URL:
https://gitweb.gentoo.org/proj/pkgcore/pkgcore.git/commit/?id=b1079269
remove pkgcore_syncers plugins
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcore/plugins/pkgcore_syncers.py | 4 ----
src/pkgcore/sync/base.py | 38 +++++++++++++++++++++++-----------
2 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/src/pkgcore/plugins/pkgcore_syncers.py
b/src/pkgcore/plugins/pkgcore_syncers.py
deleted file mode 100644
index 225f20eab..000000000
--- a/src/pkgcore/plugins/pkgcore_syncers.py
+++ /dev/null
@@ -1,4 +0,0 @@
-pkgcore_plugins = {
- 'syncer': [f'pkgcore.sync.{x}.{x}_syncer' for x in
- ('bzr', 'cvs', 'darcs', 'git', 'git_svn', 'hg', 'sqfs', 'svn',
'tar')],
-}
diff --git a/src/pkgcore/sync/base.py b/src/pkgcore/sync/base.py
index a4d31d3a8..d60edeef8 100644
--- a/src/pkgcore/sync/base.py
+++ b/src/pkgcore/sync/base.py
@@ -7,10 +7,11 @@ __all__ = (
import os
import pwd
import stat
+from importlib import import_module
from snakeoil import process
-from .. import os_data, plugin
+from .. import os_data
from ..config.hint import ConfigHint, configurable
from ..exceptions import PkgcoreUserException
@@ -93,17 +94,16 @@ class Syncer:
"""
uri = raw_uri.split("::", 1)
if len(uri) == 1:
- if self.usersync:
- if os.path.exists(self.basedir):
- stat = os.stat(self.basedir)
- uid = stat.st_uid
- gid = stat.st_gid
- else:
- uid = os_data.portage_uid
- gid = os_data.portage_gid
- else:
+ if not self.usersync:
uid = os_data.uid
gid = os_data.gid
+ elif os.path.exists(self.basedir):
+ stat = os.stat(self.basedir)
+ uid = stat.st_uid
+ gid = stat.st_gid
+ else:
+ uid = os_data.portage_uid
+ gid = os_data.portage_gid
return uid, gid, raw_uri
try:
@@ -237,6 +237,20 @@ class VcsSyncer(ExternalSyncer):
raise NotImplementedError(self, "_update_existing")
+def _load_syncers():
+ syncers = ('bzr', 'cvs', 'darcs', 'git', 'git_svn', 'hg', 'sqfs', 'svn',
'tar')
+ for syncer in syncers:
+ try:
+ syncer_cls: type[Syncer] =
getattr(import_module(f'pkgcore.sync.{syncer}'), f'{syncer}_syncer')
+ except (ImportError, AttributeError):
+ continue
+ if syncer_cls.disabled:
+ continue
+ if (f := getattr(syncer_cls, '_plugin_disabled_check', None)) is not
None and f():
+ continue
+ yield syncer_cls
+
+
@configurable(
{'basedir': 'str', 'uri': 'str', 'usersync': 'bool', 'opts': 'str'},
typename='syncer')
@@ -244,7 +258,7 @@ def GenericSyncer(basedir, uri, **kwargs):
"""Syncer using the plugin system to find a syncer based on uri."""
plugins = [
(plug.supports_uri(uri), plug)
- for plug in plugin.get_plugins('syncer')]
+ for plug in _load_syncers()]
plugins.sort(key=lambda x: x[0])
if not plugins or plugins[-1][0] <= 0:
raise UriError(uri, "no known syncer support")
@@ -267,7 +281,7 @@ def DisabledSync(basedir, *args, **kwargs):
@configurable({'basedir': 'str', 'usersync': 'bool'}, typename='syncer')
def AutodetectSyncer(basedir, **kwargs):
- for syncer_cls in plugin.get_plugins('syncer'):
+ for syncer_cls in _load_syncers():
if args := syncer_cls.is_usable_on_filepath(basedir):
return syncer_cls(basedir, *args, **kwargs)
return DisabledSyncer(basedir, **kwargs)