[vbox-dev] How to build a multi-platform extension pack?

Klaus Espenlaub klaus.espenlaub at oracle.com
Tue Mar 21 10:02:36 UTC 2017

Hi Volkert,

On 19.03.2017 12:46, Volkert wrote:
> Hello,
> After quite a bit of fruitless Googling for an answer first, I initially
> posted this in the VirtualBox forums, where I was referred to this
> mailing list.
> My question is the following:
> What is the correct way to assemble a single "fat" (as in
> multi-platform) extension pack, just like Oracle managed to do with its
> closed-source extension pack?

The correct way is whatever achieves the result... Oracle is using a 
complex staged build setup for building all necessary binaries from one 
single source tree (a good part of the logic is in the root directory 
Makefile.kmk, but don't take that as the only solution). Use whatever 
solution suits you.

> If I build one of the example extension packs bundled with the
> VirtualBox OSE source code, such as the bus mouse extension pack or the
> VNC extension pack, the result is indeed a .vbox-extpack file, but one
> that has been built for one target platform only and that can therefore
> only be installed on a VirtualBox version on the same platform. In other
> words, a .vbox-extpack file built in Linux cannot be installed in a
> VirtualBox installation on Windows. Of course I understand that I would
> have to compile my extension pack(s) on each platform separately, but so
> far, I haven't been able to find any standard script that would bundle
> platform-specific .vbox-extpack files into a single "fat" multi-platform
> .vbox-extpack file for convenient distribution, like Oracle's
> PUEL-licensed extension pack.

There's no such script. Our Makefile.kmk is collecting the list of 
files, uses it to create the manifest and finally creates a .tar.gz of 
the whole lot. Not rocket science, and the logic is *exactly* the same 
as in the BusMouseSample directory. So you wouldn't gain any additional 
knowledge from the closed source Makefile.kmk

You just need to build things for all architectures, and set 
VBOX_WITH_EXTPACK_OS_ARCHS appropriately (it defaults to just one arch, 
the current one).

> Perhaps such a script already exists in the code base in plain sight and
> I just missed it, but regardless, I hope someone can help me out with this.

The sample Makefile.kmk does everything, so maybe that's the "script" 
you're looking for.

> Also, if there are any additional concerns to be aware of when building
> such multi-platform extension packs, such as the signing of binary files
> and archives with certificates and such, I would be happy to learn about
> those as well.

Signing is definitely an issue on Windows, and it works just the usual 
way. Don't see any reason to repeat everything from the Microsoft etc. 
docs, especially because we don't use the standard way due to internal 
Oracle process reasons, and explaining the Oracle process is entirely 
useless for anyone not at Oracle.

If you run into any kind of signature verification issues (in some areas 
VirtualBox is extremely paranoid, more paranoid than the OS itself) then 
let us know.

Hope it helps... curious what kind of extpack is going to land soon :D


> Thank you kindly in advance!
> Volkert

More information about the vbox-dev mailing list