> On Oct 26, 2015, at 5:08 PM, Christopher Collins <[email protected]> wrote: > > On Mon, Oct 26, 2015 at 03:35:12PM -0700, marko kiiskila wrote: >> Hi, > > [...] > >> And 2nd (related) topic: >> At the moment there is libs/console/full and libs/console/stub. >> What kind of mechanism should we have for picking between >> these two implementation? What I’d need is a way for a builder >> of project to pick between these, and all eggs in the project >> to have include the header file for the right implementation. >> >> But I also want to be able to specify within egg definition that >> the egg will make calls to console_printf(). Egg itself does not >> care which one of the implementations gets used. >> >> Is there a way to do this kind of thing yet? > > The newt tool supports the concept of "capabilities" which can address > this requirement. ... > All that said, the capabilities feature isn't actually fully implemented > yet; the above is just how I might expect it to work once it is done :). > > Here are a few more questions that I think need to be answered: > > * How does the "peripheral" egg include the appropriate console > header files? Even if both console eggs have identically named > header files, newt needs to arrange for the appropriate include > directory to be passed to the compiler. > > * What is an easy way to switch between the debug and full > implementations. The user should not need to modify the > myproject.yml file to do this. Perhaps the "identities" feature > can be used here. >
Thanks, this sounds like a thing that matches my requirement. I’ll have to start filling in these blanks in newt tool then. I think I’ll treat a dependency that comes in a form of capability requirement the same way as I’d treat normal dependency: once an egg is found which implements the capability, it’s include path is passed to compiler. I won’t address the identity thing with this work, but that sounds useful. Depending on whether you’re building a debug version of your project or not, you could pick whether you get console output.
