[VOL-5009] - Update release notes

config.mk
makefiles/*
-----------
  o Refresh library makefiles from https://github.com/opencord/onf-make.
  o More lint targets added with exclusions in config.mk

makefiles/virtualenv.mk
patches/lib/python3.10/site-packages/robot/utils/normalizing.py/patch
patches/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch
patches/python_310_migration.sh
---------------------------------------------------------------------
  o Continue normalizing virtualenv install directory.
  o Update patches to modify .venv VS vst_venv [, vdoc_venv, vfoo_venv, vbar_venv, ...)
  o virtualenv.mk now defines named targets for patching-up-to 3.10 installs.

release_notes/voltha_2.12.rst
-----------------------------
  o Update version string info.
  o Onos component table condensed and populated with versioned urls.
  o voltha components table is a WIP.

howto/release/repositories/
---------------------------
  o Begin capturing repo-specific activities for release.
  o Silly having to figure this out each release cycle.
  o Automation and release helper scripts can be found here:
    - https://github.com/joey-onf/voltha-release

sphinx_conf/exclude_patterns.py
-------------------------------
  o Roach squashing exercise, external repos pulled in as git-submodules.
  o New repository files appear as problems when running 'make reload'
  o Exclude files to squelch messages.

Change-Id: I7adf7b84498511f5cde1e43ad304f9e33283241e
diff --git a/makefiles/bootstrap.mk b/makefiles/bootstrap.mk
new file mode 100644
index 0000000..5a9433b
--- /dev/null
+++ b/makefiles/bootstrap.mk
@@ -0,0 +1,61 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Intent: Dependency-free macros used to source library makefiles
+#         and define the build environment.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG-bootstrap_mk),$(warning ENTER))
+
+##---------------------##
+##---]  CONSTANTS  [---##
+##---------------------##
+is-false = $(if $(1),true,$(null))
+is-true  = $(if $(1),$(null),true)
+
+##--------------------------##
+##---]  LIBRARY MACROS  [---##
+##--------------------------##
+is-null              = $(if $(1),$(null),$(error $(1)= is undef))
+is-null-var          = $(if $$(1),$(null),$(error $(1)= is undef))
+is-null-var-indirect = $(if $(1),$(null),$(error $(1)= is undef))
+
+## variable flavor:
+# origin - undefned
+# default
+# environment
+# environment override
+# automatic
+# null(blah) ?   - true
+
+## -----------------------------------------------------------------------
+## Intent: Given an indirect var containing varname of a makefile *_ROOT
+##         parent director, derive a *_MKDIR variable and conditionally
+##         include the makefile hierarchy.
+## -----------------------------------------------------------------------
+## Given:
+##   o var containing OPT_ROOT=path
+## Return:
+##   o OPT_MKDIR=$(OPT_ROOT)/makefiles
+##   o If exists include $(OPT_MKDIR)/include.mk
+## -----------------------------------------------------------------------
+mk-library-include=$(strip \
+  $(warning mk-library-include: $(1) = $($(1)))\
+  $(call is-null-var,1)\
+  $(foreach var,$$(1),\
+    $(info var=$(var) is-null=$(call is-null-var,var))\
+  $(foreach val,$$(var),\
+    $(info val=$(val))\ 
+    $(foreach makedir,$(subst _ROOT,_MKDIR,$(var)),\
+$(warning makedir=$(makedir))\
+      $(if $($(makedir)),$(null),\
+        $(eval $(makedir)=$$$$($(var))/makefiles)\
+$(warning $(makedir) = $($($(makedir))))\
+$(info $$(wildcard $(val)/makefiles/include.mk) = $(wildcard $(val)/makefiles/include.mk))\
+        $(foreach mf,$(wildcard $(wildcard $(val)/makefiles/include.mk)),\
+$(warning $$(eval include $(mf)))\
+          $(eval include $(mf)))\
+)
+
+$(if $(DEBUG-bootstrap_mk),$(warning LEAVE))
+
+# [EOF]