<pre style='margin:0'>
Aaron Madlon-Kay (amake) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/6e067bb39f33b0d236178ad9694741acd49ba887">https://github.com/macports/macports-ports/commit/6e067bb39f33b0d236178ad9694741acd49ba887</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 6e067bb39f3 py-fido2, yubikey-manager(4): Backport upstream fixes for py-scard API change
</span>6e067bb39f3 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 6e067bb39f33b0d236178ad9694741acd49ba887
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Thu Apr 17 00:00:57 2025 +0200

<span style='display:block; white-space:pre;color:#404040;'>    py-fido2, yubikey-manager(4): Backport upstream fixes for py-scard API change
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This fixes Yubico Authenticator.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See
</span><span style='display:block; white-space:pre;color:#404040;'>      https://github.com/Yubico/python-fido2/commit/e2eb7d4a52a762795c1a8aa9804f184b11b5e64d
</span><span style='display:block; white-space:pre;color:#404040;'>    and
</span><span style='display:block; white-space:pre;color:#404040;'>      https://github.com/Yubico/yubikey-manager/commit/b951fcd0c6e916a5ccf751307b8dcdf71149b38a
</span>---
 python/py-fido2/Portfile                           |  3 ++
 .../e2eb7d4a52a762795c1a8aa9804f184b11b5e64d.patch | 41 ++++++++++++++++++
 security/yubikey-manager/Portfile                  |  4 +-
 .../b951fcd0c6e916a5ccf751307b8dcdf71149b38a.patch | 45 ++++++++++++++++++++
 security/yubikey-manager4/Portfile                 |  4 +-
 ...id-using-PCSCContext-if-it-is-unavailable.patch | 49 ++++++++++++++++++++++
 6 files changed, 144 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-fido2/Portfile b/python/py-fido2/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 97e7fe657a3..e7aca472e50 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-fido2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-fido2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,6 +5,7 @@ PortGroup           python 1.0
</span> 
 name                py-fido2
 version             1.2.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> categories          python security crypto
 license             BSD
 platforms           {darwin any}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,6 +24,8 @@ checksums           rmd160  2cf72565783670b9a53e246311527272f47d0b64 \
</span>                     sha256  e39f95920122d64283fda5e5581d95a206e704fa42846bfa4662f86aa0d3333b \
                     size    266369
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          e2eb7d4a52a762795c1a8aa9804f184b11b5e64d.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> python.versions     39 310 311 312
 
 python.pep517_backend poetry
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-fido2/files/e2eb7d4a52a762795c1a8aa9804f184b11b5e64d.patch b/python/py-fido2/files/e2eb7d4a52a762795c1a8aa9804f184b11b5e64d.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..bb0279c0f7d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-fido2/files/e2eb7d4a52a762795c1a8aa9804f184b11b5e64d.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,41 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From e2eb7d4a52a762795c1a8aa9804f184b11b5e64d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Dain Nilsson <dain@yubico.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 14 Apr 2025 13:20:17 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Support pyscard >=2.2.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream-Status: Backport [https://github.com/Yubico/python-fido2/commit/e2eb7d4a52a762795c1a8aa9804f184b11b5e64d]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fido2/pcsc.py | 13 +++++++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fido2/pcsc.py b/fido2/pcsc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 894c56b..4ce1f64 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./fido2/pcsc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./fido2/pcsc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,7 +34,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard import System
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.CardConnection import CardConnection
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.pcsc.PCSCExceptions import ListReadersException
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from smartcard.pcsc.PCSCContext import PCSCContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from threading import Event
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from typing import Callable, Iterator
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -243,9 +242,15 @@ def list_devices(cls, name: str = "") -> Iterator[CtapPcscDevice]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _list_readers():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    except ListReadersException:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    except ListReadersException as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # If the PCSC system has restarted the context might be stale, try
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # forcing a new context (This happens on Windows if the last reader is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # removed):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        PCSCContext.instance = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            from smartcard.pcsc.PCSCContext import PCSCContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            PCSCContext.instance = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # As of pyscard 2.2.2 the PCSCContext singleton has been removed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            raise e
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/yubikey-manager/Portfile b/security/yubikey-manager/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a32645f78b1..9a6d576c349 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/yubikey-manager/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/yubikey-manager/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup           python 1.0
</span> 
 name                yubikey-manager
 version             5.6.1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> categories-prepend  security
 platforms           {darwin any}
 supported_archs     noarch
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,6 +25,8 @@ checksums           rmd160  f2bc89e54bb36f0a121b806d5b54e8bd5cd615d8 \
</span>                     sha256  730da1358504de6616f1868bf48ddb788ada4b39137fb3ada435efbf39070160 \
                     size    220053
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          b951fcd0c6e916a5ccf751307b8dcdf71149b38a.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> python.default_version 312
 
 python.pep517           yes
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/yubikey-manager/files/b951fcd0c6e916a5ccf751307b8dcdf71149b38a.patch b/security/yubikey-manager/files/b951fcd0c6e916a5ccf751307b8dcdf71149b38a.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..15c556f551b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/yubikey-manager/files/b951fcd0c6e916a5ccf751307b8dcdf71149b38a.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,45 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b951fcd0c6e916a5ccf751307b8dcdf71149b38a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Dain Nilsson <dain@yubico.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 14 Apr 2025 10:41:46 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Lock pyscard to <2.2.2 until PCSCContext removal is handled
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream-Stauts: Backport [https://github.com/Yubico/yubikey-manager/commit/b951fcd0c6e916a5ccf751307b8dcdf71149b38a]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ykman/pcsc/__init__.py | 13 +++++++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 21 insertions(+), 16 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ykman/pcsc/__init__.py b/ykman/pcsc/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e5bbf962f..617f2edee 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./ykman/pcsc/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./ykman/pcsc/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,7 +34,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard import System
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.Exceptions import CardConnectionException, NoCardException
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.pcsc.PCSCExceptions import ListReadersException
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from smartcard.pcsc.PCSCContext import PCSCContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.ExclusiveConnectCardConnection import ExclusiveConnectCardConnection
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from fido2.pcsc import CtapPcscDevice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -198,12 +197,18 @@ def kill_yubikey_agent():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def list_readers():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    except ListReadersException:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    except ListReadersException as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # If the PCSC system has restarted the context might be stale, try
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # forcing a new context (This happens on Windows if the last reader is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # removed):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        PCSCContext.instance = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            from smartcard.pcsc.PCSCContext import PCSCContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            PCSCContext.instance = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # As of pyscard 2.2.2 the PCSCContext singleton has been removed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            raise e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def list_devices(name_filter=None):
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/yubikey-manager4/Portfile b/security/yubikey-manager4/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 314fd1f2099..6f80642dc45 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/yubikey-manager4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/yubikey-manager4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup           python 1.0
</span> 
 name                yubikey-manager4
 version             4.0.9
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span> categories-prepend  security
 platforms           {darwin any}
 supported_archs     noarch
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,6 +25,8 @@ conflicts           yubikey-manager
</span> 
 python.rootname     yubikey-manager
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          0001-Avoid-using-PCSCContext-if-it-is-unavailable.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # This must be bumped in step with the yubico-authenticator port's Python
 # version. The full, built app must be tested: Python 3.8 previously failed at
 # runtime.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/yubikey-manager4/files/0001-Avoid-using-PCSCContext-if-it-is-unavailable.patch b/security/yubikey-manager4/files/0001-Avoid-using-PCSCContext-if-it-is-unavailable.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..610f05e5bae
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/yubikey-manager4/files/0001-Avoid-using-PCSCContext-if-it-is-unavailable.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 946093be61e668dd371978a1715519a0db2137ee Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Dain Nilsson <dain@yubico.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 14 Apr 2025 10:41:46 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Avoid using PCSCContext if it is unavailable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(cherry picked from commit b951fcd0c6e916a5ccf751307b8dcdf71149b38a)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Upstream-Staus: Backport [https://github.com/Yubico/yubikey-manager/commit/b951fcd0c6e916a5ccf751307b8dcdf71149b38a]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ykman/pcsc/__init__.py | 13 +++++++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ykman/pcsc/__init__.py b/ykman/pcsc/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 39aaf3aa..bb11a66c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./ykman/pcsc/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./ykman/pcsc/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,7 +33,6 @@ from ..base import YUBIKEY, YkmanDevice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard import System
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.Exceptions import CardConnectionException
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from smartcard.pcsc.PCSCExceptions import ListReadersException
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from smartcard.pcsc.PCSCContext import PCSCContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from fido2.pcsc import CtapPcscDevice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from time import sleep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -150,12 +149,18 @@ def kill_scdaemon():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def list_readers():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    except ListReadersException:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    except ListReadersException as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # If the PCSC system has restarted the context might be stale, try
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # forcing a new context (This happens on Windows if the last reader is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # removed):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        PCSCContext.instance = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            from smartcard.pcsc.PCSCContext import PCSCContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            PCSCContext.instance = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return System.readers()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # As of pyscard 2.2.2 the PCSCContext singleton has been removed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            raise e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def list_devices(name_filter=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.49.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>