Import makefile edits from repo:voltha-docs

makefiles/include.mk
makefiles/virtualenv/include.mk
makefiles/virtualenv/patches/
makefiles/virtualenv/python_310_migration.sh
--------------------------------------------
  o Add deps and targets to create a python virtualenv
    install patched for local use of v3.10+.

Change-Id: I9a3bf8cdfc9a98f09ac84c97c0246e6194c50d01
diff --git a/makefiles/virtualenv/lib/python3.10/site-packages/robot/utils/normalizing.py/patch b/makefiles/virtualenv/lib/python3.10/site-packages/robot/utils/normalizing.py/patch
new file mode 100644
index 0000000..ae8619a
--- /dev/null
+++ b/makefiles/virtualenv/lib/python3.10/site-packages/robot/utils/normalizing.py/patch
@@ -0,0 +1,14 @@
+--- vault/lib/python3.10/site-packages/robot/utils/normalizing.py	2022-11-26 06:59:47.438751606 -0500
++++ .venv/lib/python3.10/site-packages/robot/utils/normalizing.py	2022-11-26 06:57:29.960476182 -0500
+@@ -13,10 +13,7 @@
+ #  See the License for the specific language governing permissions and
+ #  limitations under the License.
+ 
+-try: # python >= 3.10
+-    from collections.abc import MutableMapping
+-except ImportError: # python 2x
+-    from collections import MutableMapping
++from collections import MutableMapping
+ 
+ from .platform import IRONPYTHON, PY_VERSION, PY3
+ from .robottypes import is_dict_like, is_unicode
diff --git a/makefiles/virtualenv/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch b/makefiles/virtualenv/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch
new file mode 100644
index 0000000..d1aa540
--- /dev/null
+++ b/makefiles/virtualenv/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch
@@ -0,0 +1,16 @@
+--- vault/lib/python3.10/site-packages/robot/utils/robottypes3.py	2022-11-26 07:00:17.126386733 -0500
++++ .venv/lib/python3.10/site-packages/robot/utils/robottypes3.py	2022-11-26 06:57:29.956476232 -0500
+@@ -13,12 +13,7 @@
+ #  See the License for the specific language governing permissions and
+ #  limitations under the License.
+ 
+-try: # python >= 3.10
+-    from collections.abc import Mapping
+-    from collections     import UserString
+-except ImportError: # python 2x
+-    from collections import Mapping, UserString
+-
++from collections import Mapping, UserString
+ from io import IOBase
+ 
+ from .platform import RERAISED_EXCEPTIONS
diff --git a/makefiles/virtualenv/lib/python3.10/site-packages/sphinx/util/typing.py/patch b/makefiles/virtualenv/lib/python3.10/site-packages/sphinx/util/typing.py/patch
new file mode 100644
index 0000000..da24cd5
--- /dev/null
+++ b/makefiles/virtualenv/lib/python3.10/site-packages/sphinx/util/typing.py/patch
@@ -0,0 +1,18 @@
+--- staging/lib/python3.10/site-packages/sphinx/util/typing.py	2023-09-14 16:25:24.179214865 -0400
++++ .venv/lib/python3.10/site-packages/sphinx/util/typing.py	2023-09-14 16:22:16.545588690 -0400
+@@ -34,14 +34,7 @@
+             return ref._eval_type(globalns, localns)
+ 
+ if sys.version_info > (3, 10):
+-
+-    try: # ver >= 3.10.12
+-        from typing import Union as types_Union
+-    except ImportError:
+-        try: # ver >= 3.10.6
+-            from types import Union as types_Union
+-        except ImportError:
+-            types_Union = None
++    from types import Union as types_Union
+ else:
+     types_Union = None
+ 
diff --git a/makefiles/virtualenv/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch b/makefiles/virtualenv/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch
new file mode 100644
index 0000000..3fda183
--- /dev/null
+++ b/makefiles/virtualenv/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch
@@ -0,0 +1,29 @@
+--- staging/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py	2022-12-02 18:47:40.050490678 -0500
++++ venv_docs/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py	2022-12-02 18:45:53.023832002 -0500
+@@ -10,12 +10,7 @@
+ 
+ from __future__ import unicode_literals
+ 
+-try:
+-    import collections.abc
+-    from collections.abc import Mapping
+-except ImportError: # fall through
+-    import collections
+-    from collections import Mapping
++import collections
+ 
+ import jsonschema
+ try:
+@@ -40,10 +35,10 @@
+     resolver = jsonschema.RefResolver(uri, spec)
+ 
+     def _do_resolve(node):
+-        if isinstance(node, Mapping) and '$ref' in node:
++        if isinstance(node, collections.Mapping) and '$ref' in node:
+             with resolver.resolving(node['$ref']) as resolved:
+                 return resolved
+-        elif isinstance(node, Mapping):
++        elif isinstance(node, collections.Mapping):
+             for k, v in node.items():
+                 node[k] = _do_resolve(v)
+         elif isinstance(node, (list, tuple)):