Hi Gerard,
it's great that you are thinking about how to best approach this and create some sort of wizard that could handle the most common setup problems.
But I'm not convinced that writing complicated XSD schemas is the way to go as to me it seems quite hard to encode all this (although you are welcome to prove me wrong ;-)
In general I'm a fan of not duplicating the information and encoding dependencies, etc. in a parallel definition that is otherwise not used/needed.
IMHO it would be best to keep this information "close to the code" and extract as much as possible from that.
In the past we already tried a (simple) approach to list at least possible subsystems with their options in an xml file (conf/firmwares/rotorcraft.xml), but it was cumbersome to keep up to date and not really used. I will actually just delete those as they are of no use...
The most promising way I can currently think of is also using an xml file for subsystems (instead of just a makefile), so basically an enhanced version of the module xml.
Or even get rid of the module/subsystem distinction with that...
That makes it easier to parse and list dependencies and conflicts. See also
https://github.com/paparazzi/paparazzi/pull/1007Of course that still doesn't give you all allowed sections/defines for the airframe file, but we could start by using the documented configure/defines from the xml.
Christophe also worked on an airframe editor that should be able to list available subsystems and reorganize the airframe file: sw/tools/airframe_editor/airframe_editor.py
But that would need a lot more love...