From f1ca5bea49cffef2feb1745ae0cec8834d330229 Mon Sep 17 00:00:00 2001 From: Joshua Henderson Date: Tue, 16 Jan 2024 01:17:00 -0500 Subject: [PATCH] waf : wscript add submoduleclean & submodule_force_clean --- BUILD.md | 5 +++++ wscript | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/BUILD.md b/BUILD.md index ae32c0a910..5e11d2c838 100644 --- a/BUILD.md +++ b/BUILD.md @@ -102,6 +102,11 @@ list some basic and more used commands as example. Cleaning the build is very often not necessary and discouraged. We do incremental builds reducing the build time by orders of magnitude. + If submodules are failing to be synchronized, `submodulesync` may be used + to resync the submodules. This is usually necessary when shifting development + between stable releases or a stable release and the master branch. + + In some some cases `submodule_force_clean` may be necessary. This removes all submodules and then performs a `submodulesync`. (Note whitelisted modules like esp_idf is not removed.) * **Upload or install** diff --git a/wscript b/wscript index 8d2c2a68b2..c21a031e52 100644 --- a/wscript +++ b/wscript @@ -86,6 +86,29 @@ def _set_build_context_variant(board): continue c.variant = board +# Remove all submodules and then sync +@conf +def submodule_force_clean(ctx): + whitelist = { + 'COLCON_IGNORE', + 'esp_idf', + } + + # Get all items in the modules folder + module_list = os.scandir('modules') + + # Delete all directories except those in the whitelist + for module in module_list: + if (module.is_dir()) and (module.name not in whitelist): + shutil.rmtree(module) + + submodulesync(ctx) + +# run Tools/gittools/submodule-sync.sh to sync submodules +@conf +def submodulesync(ctx): + subprocess.call(['Tools/gittools/submodule-sync.sh']) + def init(ctx): # Generate Task List, so that VS Code extension can keep track # of changes to possible build targets