Tuesday, November 3, 2009

kernel and Fedora-ARM

Handling the kernel package on ARM is different than other architectures. Our kernel package typically provides only the kernel-headers. This is because, there are hundreds of ARM boards out there and everyone will use their own optimised and stripped down kernels anyway!

The side-effect of this choice is that there is no kernel package in the rpm database and hence, the packages that Require kernel (about 15 of them) won't have their dependencies satisfied. (Some examples would be, fuse, xorg-x11-drv-ati, pulseaudio, libdrm, etc) Currently, we work around this by changing the Requires on the kernel by Conflicts. Here is a sample patch. (It is obviously not a very elegant solution and any suggestions are welcome)

Now, this isn't much of a problem for packages that just Require kernel. But, now xorg-x11-drv-nouveau Requires kernel-drm-nouveau. It is rare for any ARM kernel to be compiled with nouveau support, so it makes less sense to change this Requires to Conflicts. Ofcourse, we can assume that whoever is trying to use a nVidia card with an ARM board knows what the hell he's doing, but the solution doesn't seem right anyway.

Any suggestions on how this can be handled?


  1. Post to fedora-devel list immediately I guess

  2. Why not create a dummy kernel package that would only satisfy dependencies.
    The kernel-arm.spec would be something like:
    -- cut --------------------

    Arch: arm
    Provides: kernel
    # Nothing
    -- cut --------------------


  3. Oron,
    The issue is not just satisfying the dependencies (that cnan be done in a million possible ways), its about doing the right thing. If, rpm says its OK to install xorg-x11-drv-nouveau, it should be *actually* OK to do so.

  4. Update:
    After a discussion with Dennis Gilmore, the decision was made to include a package with fake Provides.


  5. The patch link does not seem to be working.