Creation of Waf tool ap_persistent and build issues

Hi all,

We’ve pushed some changes recently from https://github.com/ArduPilot/ardupilot/pull/4590 that, among other things, create a new Waf tool called ap_persistent. That reduces clean build time by persisting scanner results across clean commands. It does so by adding some new attributes of BuildContext to Build.SAVED_ATTRS.

If you have already built Ardupilot before those changes and try to build again after updating your local repository, you’ll probably run into something like:

Traceback (most recent call last):
  File "/path/to/ardupilot/modules/waf/waflib/Scripting.py", line 165, in waf_entry_point
    run_commands()
  File "/path/to/ardupilot/modules/waf/waflib/Scripting.py", line 266, in run_commands
    ctx = run_command(cmd_name)
  File "/path/to/ardupilot/modules/waf/waflib/Scripting.py", line 250, in run_command
    ctx.execute()
  File "/path/to/ardupilot/modules/waf/waflib/Scripting.py", line 616, in execute
    return execute_method(self)
  File "/path/to/ardupilot/modules/waf/waflib/Build.py", line 252, in execute
    self.restore()
  File "/path/to/ardupilot/modules/waf/waflib/Build.py", line 319, in restore
    setattr(self, x, data[x])
KeyError: 'ap_persistent_task_sigs'

That’s expected and actually a bug in Waf. waf distclean should get rid of that error. I’d just like to remind you that that command will completely clean the build for all boards.

Best regards,
Gustavo Sousa

Update: Problem fixed. Our patch fixing that bug has been accepted in Waf upstream and we’ve updated our submodule to contain that.