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]