Misc library edits and cleanup

Makefile
--------
  o Simplify initial bootstrap path construction logic used to load
    the top level library makefile repo:onf-lib/makefiles/include.mk.
  o Remove direct includes (consts.mk) that are loaded by include.mk.

bin/setup.sh
------------
  o Update repo:onf-lib installer script.
  o Re-arrange inlined logic into functions.
  o Added a banner message to display installation progress.
  o Added install_config_mk(), relocate sandbox/config.mk into sandbox/makefiles/onf-lib/config.mk.
  o Added detection logic to handle patching python to v3.10+.

makefiles/etc/include.mk
------------------------
  o Remove dup logic, include.mk mirrored features.mk, changed to simply include features.mk.

makefiles/include.mk
--------------------
  o Relocate display of include/display of help target trailer message
    from top level Makefile into the library makefile hierarchy.

makefiles_include_mk.ex
-----------------------
  o Added git-submodule maintenance helper targets & dependencies that
    consuming repository makefiles can use to automate submodule checkout
    from a clean state.

Change-Id: Id8df17cef09a17325137934d04e58d87ea370621
diff --git a/bin/setup.sh b/bin/setup.sh
index 0d3f577..0175083 100755
--- a/bin/setup.sh
+++ b/bin/setup.sh
@@ -27,6 +27,7 @@
 ##---]  GLOBALS  [---##
 ##-------------------##
 set -euo pipefail
+# declare -g -i debug=1
 
 ## -----------------------------------------------------------------------
 ## Intent: Display a message with formatting
@@ -51,20 +52,71 @@
     exit 1
 }
 
-##----------------##
-##---]  MAIN  [---##
-##----------------##
+## -----------------------------------------------------------------------
+## Intent: Archive current directory before we begin
+## -----------------------------------------------------------------------
+function archive_sandbox()
+{
+	local abs="$(realpath --canonicalize-existing '.')"
+	local dir="${abs##*/}"
+	local ts="$(date '+%Y%m%d%H%M%S')"
+	local prefix="../${dir}-all/backups"
 
-## Avoid trashing a work-in-progress
-path='makefiles/local/include.mk'
-[[ -e "$path" ]] && { error "Detected upgrade path: $path"; }
+	banner "Archive current directory ($dir)"
 
-banner "Archive current directory"
-tar czvf ../backup-setup.tgz .
+#	make sterile >/dev/null # nuke lingering .venv/ installs
+#	make clean-all >/dev/null # nuke lingering .venv/ installs
 
-## Migration patches should be simple and plentiful.
-if [[ ! -d makefiles-orig ]]; then
-    cat <<EOM
+	declare -a targs=()
+	targs+=('--create')
+
+    ## Set archive compression level
+	local compress='bzip2'
+	local ext
+	case "$compress" in
+	  bzip2) targs+=('--bzip2'); ext='bz2' ;;
+	  gzip) targs+=('--gzip'); ext='tgz' ;;
+	  zstd) targs+=('--zstd'); ext='zst' ;;
+	*) error "Detected invalid compression [$compress]" ;;
+	esac
+
+	local out="${prefix}/${ts}.${ext}"
+
+	targs+=('--file' "$out")
+
+	mkdir -p "$prefix"
+	tar "${targs[@]}" '.'
+	/bin/ls -l "$out"
+	return
+}	
+
+## -----------------------------------------------------------------------
+## Intent: Install feature enabling makefile.
+## -----------------------------------------------------------------------
+function install_config_mk
+{
+	local dst='makefiles/config.mk'
+	if [[ -f "$dst" ]]; then
+		:
+	elif [[ -f 'config.mk' ]]; then
+		git mv config.mk "$dst"
+	else
+		rsync -v --checksum makefiles/onf-lib/config.mk "$dst"
+	fi
+
+	return
+}
+
+## -----------------------------------------------------------------------
+## Intent: Re-home existing local makefiles/ into makefiles/local
+## -----------------------------------------------------------------------
+function patch_detection()
+{
+	[[ ! -d makefiles ]] && return
+
+    ## Migration patches should be simple and plentiful.
+	if [[ ! -d makefiles-orig ]]; then
+	    cat <<EOM
 
 * -----------------------------------------------------------------------
 * Replacing a repository makefile directory is deployed
@@ -82,8 +134,28 @@
   3) Update Makefile to include makefiles/include.mk
 
 EOM
-    exit 1
-fi
+		exit 1
+	fi
+	return
+}
+
+##----------------##
+##---]  MAIN  [---##
+##----------------##
+while [[ $# -gt 0 ]]; do
+	arg=$1; shift
+	case "$arg" in
+	  debug) declare -g -i debug=1 ;;
+	  *) error "Detected invalid switch [$arg]" ;;
+	esac
+done
+
+## Avoid trashing a work-in-progress
+path='makefiles/local/include.mk'
+[[ -e "$path" ]] && { error "Detected upgrade path: $path"; }
+
+archive_sandbox
+patch_detection
 
 mkdir -p makefiles
 pushd makefiles || { error 'pushd makefiles failed'; }
@@ -103,7 +175,8 @@
 banner 'Prep work for pending checkin'
 git add makefiles/include.mk
 git add makefiles/local/include.mk
-git mv config.mk makefiles/config.mk
+install_config_mk
 git add makefiles
+git status
 
 # [EOF]