Skip to content

Commit

Permalink
waf : wscript add submoduleclean & submodule_force_clean
Browse files Browse the repository at this point in the history
  • Loading branch information
hendjoshsr71 committed Jan 16, 2024
1 parent 200bd46 commit c5b421b
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
5 changes: 5 additions & 0 deletions BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -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**

Expand Down
23 changes: 23 additions & 0 deletions wscript
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c5b421b

Please sign in to comment.