Thanks Martin, I'm extremely pleased about how things worked out. I think you are borderline understating the significance of this development, so I will try to hype it a bit more ;)

On 28/05/15 16:49, Martin Lucina wrote:
The user-visible change is that `rumprun-*-cc' will no longer produce a
unikernel image, but instead produce an intermediate file that must be
"bakend" into the final unikernel image with `rumpbake'. "Hello, world"
example:

"bakend"?  Are we speaking pseudo-swedish now? ;)

$ rumprun-bmk-cc -o hello hello.c
(produces an intermediate "hello")

Notably, it not only produces a binary, but also guarantees that baking hello will not fail due to missing libraries or similar. This detail is important, since it allows for a familiar unikernel building experience for people with a background in "make+vi". (of course, also the previous build model flagged errors, but the key is that the new model does not cause regressions there)

$ rumpbake -T hw_generic -o hello.bin hello
(produces the final unikernel as "hello.bin", targeted for the "hw_generic"
configuration)

Equally notably, we can in the future (after figuring out a bunch of other things) specify hello1 & hello2 to be baked into the same image. Even so, both hello{1,2} can still be compiled with "make" as usual, so no special build system hackery is required. Again, this detail makes for a good user experience.

I would also like to note that I already added my own hw_virtio component configuration, and it was supertrivial to do. Users can very easily bake exactly the rump kernel component configuration that they want (well, with some limitations. for example, I don't think a rumprun unikernel would work without librumpvfs, but we'll call that a limitation of reality).

$ rumprun qemu ./hello.bin
(boots the unikernel)

it's even better with "rumprun qemu -i ./hello.bin" ;)

2) Toolchain renaming

With `rumpbake', we are hopefully now in a position to unify and rename the
app-tools toolchain, using the following scheme:

<CPU>-rumprun-netbsd{elf}

Examples:
i686-rumprun-netbsdelf      (32-bit Intel compiler targeted for i686)
x86_64-rumprun-netbsd       (64-bit Intel compiler targeted for x86_64)
arm<SUBARCH>-rumprun-netbsd (32-bit ARM compiler targeted for <SUBARCH>)

This means we will NOT need to put the `board' or `platform' in either the
toolchain name or autoconf tuple. Applications can be built once using the
toolchain appropriate for the target CPU.

If anyone has any last-minute input on the above scheme, please speak up
now!

Looks good to me, but maybe wait for a day or so in case anyone else has comments. As much as I want to get the toolchain name stamped down, I don't want to see it changed ever again afterwards ;)

Then we can slowly start ironing down the usages & syntaxes of rump{bake,run}.

  - antti

Reply via email to