I've now reworked the rumpbake.conf syntax. It supports the following operations:

bakeconf_create cfg descr => create cfg (or error if cfg already exists)
bakeconf_assimilate cfg from ... => add components of from's to cfg
bakeconf_nuke cfg => remove cfg (not sure if that's necessary, but for completeness)

cfg names beginning with an underscore are "building block" configs which are private to the config file in which they are defined (e.g. _usb in the global rumpbake.conf), and can be used only within that config file by being assimilated to public ones. This is mostly so that we can have non-published stuff in the global rumpbake.conf.

To control the configs, add or remove elems from them. An elem is simply passed as-is to the linker, so you can use e.g. -lfoo, /path/to/obj.o or -L/mydir. However, you cannot specify the order.

bakeconf_elem_add cfg elem ... => add elem's to cfg
bakeconf_elem_del cfg elem ... => remove elem's from cfg

So, for example, if I wanted hw_virtio but with an extra object file and without sysproxy, I would have a local config file like this:

=== snip ===
bakeconf_version 20150928

bakeconf_create hw_coolbeans "Insert coolbeans descr here"
bakeconf_assimilate hw_coolbeans hw_virtio
bakeconf_elem_del hw_coolbeans -lrumpkern_sysproxy
bakeconf_elem_add hw_coolbeans /home/pooka/startmsg.o
=== snip ===

Note! The config file syntax is not intended to have shell syntax. It's just an implementation detail. Not sure if we at some point want to implement the same in !shell.

Thoughts? I'd like to declare the bake.conf syntax and semantics stable very soon now. We still need to figure out how various configs map to various build targets (e.g. hw_generic does not make sense for ARM), though.

  - antti

Reply via email to