From nobody Tue May 24 13:17:14 2022 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D1EF71B5739F; Tue, 24 May 2022 13:17:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4L6vqt3MP9z4SjC; Tue, 24 May 2022 13:17:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1653398234; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2X718qCohjr/aYEdyK4Qks/Qz0cbjqfFV8vLuS0WBQ8=; b=PetkL2rZtO19I6AbYyeghJFL61B7+FLKb2N6gErThrMieuiGpXfG3w7o9h1qN3JhZ+O/bQ yrOGqcNPvcIfZgNl/99T1Mqn/LivJ2eCFL9KoBBryribtz2BGCl+zcC892dTThj/EvKpxc Icg9kf9gvyNeyOBEfJ4/WrjT7bLt30QYY+3Tduztl7JlE/3g77ofBnz1iBaKvdDq/9zU1g Lc54vfG0RYy4Rge7OTzah3EUki19tvf2D2kKoJjrjv70ZSKKfaY2mg7QAXIT4S7bcjlJrk 2Z090rWSATWZAUfoB9uK81UyKAEp4Xjp6Icfaojiu8B4OscYdYJa18mSaWUMvQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 34369252FE; Tue, 24 May 2022 13:17:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 24ODHE5C011885; Tue, 24 May 2022 13:17:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 24ODHEAp011884; Tue, 24 May 2022 13:17:14 GMT (envelope-from git) Date: Tue, 24 May 2022 13:17:14 GMT Message-Id: <202205241317.24ODHEAp011884@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Dave Cottlehuber Subject: git: c6b11c8202d1 - main - sysutils/py-mitogen: update to 0.3.2 List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dch X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c6b11c8202d18d5327584d6f2f1338a8e82b5419 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1653398234; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2X718qCohjr/aYEdyK4Qks/Qz0cbjqfFV8vLuS0WBQ8=; b=TxFq2fVSOqQD70/PAt2YTwj8bwpDSxx7ZIooBZiF58wbGcDgOm07x8BeA2IR2oR0hu+wU+ uU8HWP60kwMm5dW5BhmQq7ZC81HMQhr48qnHQ9WQgfm7Y+U8LZJrUHTH6ZcHBy9rsFaMsk ssun9bFu1uyNh7isKmKEEnZfjvmKuOSl6hZyCFwU0yplAafA+9Dqw0SzYN1aGY1I+e3N2b vDzTuSXMntzHOwTad8c9ynTf9omkBSAq8hQ3vFoWTerzJo/2yHHo+7eos6E+sEt1galpt6 DKCM6h9h6i+CuvbjTdYAe5P/c2D1nd0OcoUkl9sNf28YZhyfxvC2GLT3wwKGhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1653398234; a=rsa-sha256; cv=none; b=q2H10nvzCRN9gUw2PZ4YGRq7cBPbhBetjiJTfH+OO8t5pmb0CgU9cILt0Im7QzO6s0Ke0A 4TjAEJphHvmVdMErDqmEvDnF8SMaFlcFMgrGelpLN2I/FAAaUZomoeep+IigFY/NY7Iszt lTczC7uNx3PrhefMr9VXWQ/lOFISR7A/3YZyOd4f8Zd93wu2DGUTo7DYkiIUm8amx6+iqQ aOZgQDGT9xyVXW+ZPV8l6eyK5dmLjnBJNLAWz1PNkcdgchUIMoZi69SHfhFo9ePJF/tGx2 k7YgkwcHByezRikP798SOLr/p81Iki2e/Su7xhFFzE9vS4ldLpeF1MmRKs0cWg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by dch: URL: https://cgit.FreeBSD.org/ports/commit/?id=c6b11c8202d18d5327584d6f2f1338a8e82b5419 commit c6b11c8202d18d5327584d6f2f1338a8e82b5419 Author: Dave Cottlehuber AuthorDate: 2022-05-24 13:16:23 +0000 Commit: Dave Cottlehuber CommitDate: 2022-05-24 13:16:54 +0000 sysutils/py-mitogen: update to 0.3.2 This drops ansible 2.x compatibility as upstream ansible version is also no longer supported. Includes backported fix for #906, which breaks mitogen if py-distro is also installed. https://github.com/mitogen-hq/mitogen/issues/906 Sponsored by: SkunkWerks, GmbH --- sysutils/py-mitogen/Makefile | 5 +- sysutils/py-mitogen/distinfo | 8 +- sysutils/py-mitogen/files/patch-mitogen_core.py | 32 ++++ sysutils/py-mitogen/files/patch-mitogen_master.py | 214 ++++++++++++++++++++++ 4 files changed, 255 insertions(+), 4 deletions(-) diff --git a/sysutils/py-mitogen/Makefile b/sysutils/py-mitogen/Makefile index 692e82bdf5ae..258ba5b37a29 100644 --- a/sysutils/py-mitogen/Makefile +++ b/sysutils/py-mitogen/Makefile @@ -1,9 +1,12 @@ PORTNAME= mitogen -DISTVERSION= 0.2.9 +DISTVERSION= 0.3.2 CATEGORIES= sysutils python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +# PATCH_SITES= https://github.com/mitogen-hq/${PORTNAME}/pull/ +# PATCHFILES+= 913.patch:-p1 # https://github.com/mitogen-hq/mitogen/pull/913.patch + MAINTAINER= dch@FreeBSD.org COMMENT= Ansible accelerator & python library for writing distributed programs diff --git a/sysutils/py-mitogen/distinfo b/sysutils/py-mitogen/distinfo index 643135251318..d34920fb5b9e 100644 --- a/sysutils/py-mitogen/distinfo +++ b/sysutils/py-mitogen/distinfo @@ -1,3 +1,5 @@ -TIMESTAMP = 1587412579 -SHA256 (mitogen-0.2.9.tar.gz) = 76cb9afef92596818a4639afb2a0bb0384ce7b6699b353af55662057b08b1e57 -SIZE (mitogen-0.2.9.tar.gz) = 210868 +TIMESTAMP = 1653396026 +SHA256 (mitogen-0.3.2.tar.gz) = 49e1e391cb4fa3627e290fea656a3c38cce990778137f013291d7e7085304c3d +SIZE (mitogen-0.3.2.tar.gz) = 218661 +SHA256 (913.patch) = 29e678a1eb6fbea615b25f3114f17cd5504ae2a11bb691124bef253ca2e9ba98 +SIZE (913.patch) = 16016 diff --git a/sysutils/py-mitogen/files/patch-mitogen_core.py b/sysutils/py-mitogen/files/patch-mitogen_core.py new file mode 100644 index 000000000000..66abd739671b --- /dev/null +++ b/sysutils/py-mitogen/files/patch-mitogen_core.py @@ -0,0 +1,32 @@ +--- mitogen/core.py.orig 2022-01-12 07:45:19 UTC ++++ mitogen/core.py +@@ -1357,6 +1357,16 @@ class Importer(object): + fp.close() + + def find_module(self, fullname, path=None): ++ """ ++ Return a loader (ourself) or None, for the module with fullname. ++ ++ Implements importlib.abc.MetaPathFinder.find_module(). ++ Deprecrated in Python 3.4+, replaced by find_spec(). ++ Raises ImportWarning in Python 3.10+. ++ ++ fullname A (fully qualified?) module name, e.g. "os.path". ++ path __path__ of parent packge. None for a top level module. ++ """ + if hasattr(_tls, 'running'): + return None + +@@ -1478,6 +1488,12 @@ class Importer(object): + callback() + + def load_module(self, fullname): ++ """ ++ Return the loaded module specified by fullname. ++ ++ Implements importlib.abc.Loader.load_module(). ++ Deprecated in Python 3.4+, replaced by create_module() & exec_module(). ++ """ + fullname = to_text(fullname) + _v and self._log.debug('requesting %s', fullname) + self._refuse_imports(fullname) diff --git a/sysutils/py-mitogen/files/patch-mitogen_master.py b/sysutils/py-mitogen/files/patch-mitogen_master.py new file mode 100644 index 000000000000..6e669e792c55 --- /dev/null +++ b/sysutils/py-mitogen/files/patch-mitogen_master.py @@ -0,0 +1,214 @@ +--- mitogen/master.py.orig 2022-01-12 07:45:19 UTC ++++ mitogen/master.py +@@ -122,6 +122,13 @@ def is_stdlib_name(modname): + """ + Return :data:`True` if `modname` appears to come from the standard library. + """ ++ # `imp.is_builtin()` isn't a documented as part of Python's stdlib API. ++ # ++ # """ ++ # Main is a little special - imp.is_builtin("__main__") will return False, ++ # but BuiltinImporter is still the most appropriate initial setting for ++ # its __loader__ attribute. ++ # """ -- comment in CPython pylifecycle.c:add_main_module() + if imp.is_builtin(modname) != 0: + return True + +@@ -512,42 +519,57 @@ class PkgutilMethod(FinderMethod): + Find `fullname` using :func:`pkgutil.find_loader`. + """ + try: ++ # If fullname refers to a submodule that's not already imported ++ # then the containing package is imported. + # Pre-'import spec' this returned None, in Python3.6 it raises + # ImportError. + loader = pkgutil.find_loader(fullname) + except ImportError: + e = sys.exc_info()[1] +- LOG.debug('%r._get_module_via_pkgutil(%r): %s', +- self, fullname, e) ++ LOG.debug('%r: find_loader(%r) failed: %s', self, fullname, e) + return None + +- IOLOG.debug('%r._get_module_via_pkgutil(%r) -> %r', +- self, fullname, loader) + if not loader: ++ LOG.debug('%r: find_loader(%r) returned %r, aborting', ++ self, fullname, loader) + return + + try: +- path, is_special = _py_filename(loader.get_filename(fullname)) +- source = loader.get_source(fullname) +- is_pkg = loader.is_package(fullname) +- +- # workaround for special python modules that might only exist in memory +- if is_special and is_pkg and not source: +- source = '\n' ++ path = loader.get_filename(fullname) + except (AttributeError, ImportError): +- # - Per PEP-302, get_source() and is_package() are optional, +- # calling them may throw AttributeError. + # - get_filename() may throw ImportError if pkgutil.find_loader() + # picks a "parent" package's loader for some crap that's been + # stuffed in sys.modules, for example in the case of urllib3: + # "loader for urllib3.contrib.pyopenssl cannot handle + # requests.packages.urllib3.contrib.pyopenssl" + e = sys.exc_info()[1] +- LOG.debug('%r: loading %r using %r failed: %s', +- self, fullname, loader, e) ++ LOG.debug('%r: %r.get_file_name(%r) failed: %r', self, loader, fullname, e) + return + ++ path, is_special = _py_filename(path) ++ ++ try: ++ source = loader.get_source(fullname) ++ except AttributeError: ++ # Per PEP-302, get_source() is optional, ++ e = sys.exc_info()[1] ++ LOG.debug('%r: %r.get_source() failed: %r', self, loader, fullname, e) ++ return ++ ++ try: ++ is_pkg = loader.is_package(fullname) ++ except AttributeError: ++ # Per PEP-302, is_package() is optional, ++ e = sys.exc_info()[1] ++ LOG.debug('%r: %r.is_package(%r) failed: %r', self, loader, fullname, e) ++ return ++ ++ # workaround for special python modules that might only exist in memory ++ if is_special and is_pkg and not source: ++ source = '\n' ++ + if path is None or source is None: ++ LOG.debug('%r: path=%r, source=%r, aborting', self, path, source) + return + + if isinstance(source, mitogen.core.UnicodeType): +@@ -567,23 +589,37 @@ class SysModulesMethod(FinderMethod): + """ + Find `fullname` using its :data:`__file__` attribute. + """ +- module = sys.modules.get(fullname) ++ try: ++ module = sys.modules[fullname] ++ except KeyError: ++ LOG.debug('%r: sys.modules[%r] absent, aborting', self, fullname) ++ return ++ + if not isinstance(module, types.ModuleType): +- LOG.debug('%r: sys.modules[%r] absent or not a regular module', +- self, fullname) ++ LOG.debug('%r: sys.modules[%r] is %r, aborting', ++ self, fullname, module) + return + +- LOG.debug('_get_module_via_sys_modules(%r) -> %r', fullname, module) +- alleged_name = getattr(module, '__name__', None) +- if alleged_name != fullname: +- LOG.debug('sys.modules[%r].__name__ is incorrect, assuming ' +- 'this is a hacky module alias and ignoring it. ' +- 'Got %r, module object: %r', +- fullname, alleged_name, module) ++ try: ++ resolved_name = module.__name__ ++ except AttributeError: ++ LOG.debug('%r: %r has no __name__, aborting', self, module) + return + +- path, _ = _py_filename(getattr(module, '__file__', '')) ++ if resolved_name != fullname: ++ LOG.debug('%r: %r.__name__ is %r, aborting', ++ self, module, resolved_name) ++ return ++ ++ try: ++ path = module.__file__ ++ except AttributeError: ++ LOG.debug('%r: %r has no __file__, aborting', self, module) ++ return ++ ++ path, _ = _py_filename(path) + if not path: ++ LOG.debug('%r: %r.__file__ is %r, aborting', self, module, path) + return + + LOG.debug('%r: sys.modules[%r]: found %s', self, fullname, path) +@@ -628,10 +664,24 @@ class ParentEnumerationMethod(FinderMethod): + module object or any parent package's :data:`__path__`, since they have all + been overwritten. Some men just want to watch the world burn. + """ ++ ++ @staticmethod ++ def _iter_parents(fullname): ++ """ ++ >>> list(ParentEnumerationMethod._iter_parents('a')) ++ [('', 'a')] ++ >>> list(ParentEnumerationMethod._iter_parents('a.b.c')) ++ [('a.b', 'c'), ('a', 'b'), ('', 'a')] ++ """ ++ while fullname: ++ fullname, _, modname = str_rpartition(fullname, u'.') ++ yield fullname, modname ++ + def _find_sane_parent(self, fullname): + """ + Iteratively search :data:`sys.modules` for the least indirect parent of +- `fullname` that is loaded and contains a :data:`__path__` attribute. ++ `fullname` that's from the same package and has a :data:`__path__` ++ attribute. + + :return: + `(parent_name, path, modpath)` tuple, where: +@@ -644,21 +694,40 @@ class ParentEnumerationMethod(FinderMethod): + * `modpath`: list of module name components leading from `path` + to the target module. + """ +- path = None + modpath = [] +- while True: +- pkgname, _, modname = str_rpartition(to_text(fullname), u'.') ++ for pkgname, modname in self._iter_parents(fullname): + modpath.insert(0, modname) + if not pkgname: + return [], None, modpath + +- pkg = sys.modules.get(pkgname) +- path = getattr(pkg, '__path__', None) +- if pkg and path: +- return pkgname.split('.'), path, modpath ++ try: ++ pkg = sys.modules[pkgname] ++ except KeyError: ++ LOG.debug('%r: sys.modules[%r] absent, skipping', self, pkgname) ++ continue + +- LOG.debug('%r: %r lacks __path__ attribute', self, pkgname) +- fullname = pkgname ++ try: ++ resolved_pkgname = pkg.__name__ ++ except AttributeError: ++ LOG.debug('%r: %r has no __name__, skipping', self, pkg) ++ continue ++ ++ if resolved_pkgname != pkgname: ++ LOG.debug('%r: %r.__name__ is %r, skipping', ++ self, pkg, resolved_pkgname) ++ continue ++ ++ try: ++ path = pkg.__path__ ++ except AttributeError: ++ LOG.debug('%r: %r has no __path__, skipping', self, pkg) ++ continue ++ ++ if not path: ++ LOG.debug('%r: %r.__path__ is %r, skipping', self, pkg, path) ++ continue ++ ++ return pkgname.split('.'), path, modpath + + def _found_package(self, fullname, path): + path = os.path.join(path, '__init__.py')