diff --git a/packages/genpybind/package.py b/packages/genpybind/package.py
index b2a639b8c0605f322bed8d3e3b0fa4ba9dda03cd..3f892433f891144a05488bbae1dcba5d30d39a1c 100644
--- a/packages/genpybind/package.py
+++ b/packages/genpybind/package.py
@@ -50,6 +50,9 @@ class Genpybind(WafPackage):
 
     extends('python')
 
+    patch('v0.2.1-python3.10.patch', when='@:0.2.1 ^python@3.10:')
+
+
     def configure_args(self):
         args = super(Genpybind, self).configure_args()
 
diff --git a/packages/genpybind/v0.2.1-python3.10.patch b/packages/genpybind/v0.2.1-python3.10.patch
new file mode 100644
index 0000000000000000000000000000000000000000..bdd22115f0873ff969744852951707a39205d1dc
--- /dev/null
+++ b/packages/genpybind/v0.2.1-python3.10.patch
@@ -0,0 +1,43 @@
+diff --git a/genpybind/annotations.py b/genpybind/annotations.py
+index 1dfd1f4..871ef4d 100644
+--- a/genpybind/annotations.py
++++ b/genpybind/annotations.py
+@@ -3,7 +3,7 @@
+ from __future__ import unicode_literals
+ 
+ import ast
+-import collections
++from collections.abc import Sequence
+ 
+ from clang.cindex import CursorKind
+ 
+@@ -25,7 +25,7 @@ LOZENGE = u"â—Š"
+ SPECIAL_NAMES = {"true": True, "false": False, "default": None, "none": None}
+ 
+ 
+-class Annotations(collections.Sequence):
++class Annotations(Sequence):
+     def __init__(self, annotations=None):
+         # type: (Union[None, Text, Iterable[Text]]) -> None
+         self._annotations = []  # type: List[AnnotationT]
+diff --git a/genpybind/registry.py b/genpybind/registry.py
+index 4f66ace..75ba7a9 100644
+--- a/genpybind/registry.py
++++ b/genpybind/registry.py
+@@ -1,6 +1,6 @@
+ from __future__ import unicode_literals
+ 
+-import collections
++from collections.abc import Mapping
+ import re
+ 
+ from clang import cindex
+@@ -16,7 +16,7 @@ if False:  # pylint: disable=using-constant-test
+ RE_NON_IDENTIFIER = re.compile(r"[^a-zA-Z0-9_]+")
+ 
+ 
+-class Registry(collections.Mapping):
++class Registry(Mapping):
+     def __init__(self, tags=None):
+         # type: (Optional[Iterable[Text]]) -> None
+         self._declarations = {}  # type: Dict[Text, Optional[Declaration]]