From Fedora Project Wiki

Packaging VirtualBox

This page exists so that we can collaborate on getting VirtualBox packaged for Fedora. Note it can't make it to Fedora as it contains a kernel module, so targets are Livna and RPMFusion.

Source repository

SPEC and patches are stored in a Mercurial repository. To check it out, do the following:

{{{ $ hg clone ssh://people.fedoraproject.org//home/fedora/lkundrak/repo/virtualbox }}}

Look at the {{{Makefile}}} to see for some shorthands. Feel free to improve it. Use {{{make srpm}}} to create a source package, use mock to build it.

If you add patches, don't forget to {{{hg add}}} those. Once your patches look sane, do a {{{hg commit}}}. If you can {{{hg push}}} the patches to the repository if you're in {{{cla_done}}} FAS group, otherwise feel free to mail the patches to lkundrak@redhat.com, he'll be happy to push :) Please add to your {{{~/.hgrc}}} file on fedorapeople: {{{ [trusted] users=lkundrak }}} This will make hg send a notification mail when you push your patch.

Building VirtualBox

VirtualBox needs kBuild to build.

Repository with binaries prebuilt for i386 and x86_64 as well as source packages is available at http://people.fedoraproject.org/~lkundrak/kBuild/. Feel free to grab the source package, polish it if needed, and submit for inclusion in Fedora.

This is food for your mock or yum configuration:

{{{ [kBuild] name=kBuild gpgcheck=0 baseurl=http://people.fedoraproject.org/~lkundrak/kBuild/ }}}

TODO

  1. Does it work with all kernel flavours?
  2. Make it honour RPM_OPT_FLAGS as much as possible
  3. Where doesn't it do? (some info) Also the current spec does not use any of the RPM_OPT_FLAGS
  4. Guest additions
  5. If there are some that don't depend on a kernel module, they should be packaged separately
    • the shared folders one does depend
    • x11 driver probably does not
  1. We should not build 32bit ones when building a 64bit package
  2. create /usr/share/hwdata/videoaliases/virtualbox.xinf
    • how to find out the pci IDs?
    • There is some information about how to create .xinf files at my page: TillMaas
  1. long time idea: also create an iso image that can be used in guests to install additions like upstream does it.
  2. packages: timesync
  3. iso: timesync and xorg drivers
  4. iso: Windows stuff (maybe it can be crosscompiled with xmingw-gcc or whatever the correct name is)
  5. Icon / installation of .desktop file
  6. x86_64 Test
  7. use rpath instead of wrapper script(?)
  8. Install into FHS hierarchy
    • Debian does this
  1. In case libaries can't be installed directly into %{_libdir}, is ldconfig configuration file a good alternative to rpath and wrapper?
  2. Selinux for strict mode
  3. Do not disable tests
  4. kernel module packages
    • Provide both dkms and kmod2?
    • ThorstenLeemhis, 20080307 -- livna in devel support akmods; IOW: you can maintain one normal kmod spec and have the traditional kmods build for the repo as well as support akmods, which provide a dkms-like functionality
    • maybe the kmod package needs to be adjusted to work in rpmfusion-devel (builds on Fedora 8)
    • test, whether they actually work, e.g. on xen?
  1. Review kBuild for Fedora
  2. Check out debian patches for VirtualBox and kBuild
    • Seem mostly uninteresting :)