Hi,

This post is very handwavy just to put the subject on the radar. If you're not interested in handwaving, better not read further ;)

Given mato's experiments in making it possible to "rumprun" unmodified software packages, we are starting to face a problem common in OS-land: how to make it easy to use 3rd party software without having to compile everything manually and track library dependencies by hand. The current "quick and easy way to provide something usable" by managing rumprun packages as separate github repositories will not scale either from a maintenance or usability perspective.

Much like a regular packaging system, the rumprun packaging system would offer a repository of prebuild software, and especially in the beginning an easy way to create such a repository locally. This software would of course be entirely cross-compiled, as is possible with some packaging systems. The software would also be "cross-installed" into a rumprunnable image with no support for altering the package configuration. If you want to upgrade packages or change the configuration, you rebuild the image and re-run it. Yes, it would be possible to work in some sort of poke-the-binary-and-live-upgrade-the-kernel nonsense, but let's aim for the simplest solution, not the most complex one.

A packaging system could also push app-tools to be an expert-level interface, while the packaging system would be the one for which the user experience is optimized. That said, I'm not sure if it matters.

A related but not-immediately-relevant subproblem is how would you create a rumprunnable image with multiple "executables". I think it's safe to start with one executable being the goal and figure out the next step after that goal has been reached. We just need to make sure multiexecutable mode is at least theoretically possible with the hooks offered by the packaging system.

So, summarizing the requirements of the packaging system:

1) established set of packages
2) cross-compile support
3) easy to build your local binary repositories from a *subset* of the supported packages
4) cross-installation support, i.e. create image from {x} packages
5) at least theoretical viability for some crunchgen-like multiexecutable mode

Does anyone know which existing packaging system would best suit the goal? I think pkgsrc and xbps are at least seemingly viable candidates, but as always, it's the details which matter.

Thoughts?

  - antti

p.s. there's http://wiki.rumpkernel.org/Project-ideas%3A-packaging but that's slightly different, since it's about splitting the rump kernel itself into multiple packages. I think the packaging system for rumprun would be simpler since the whole rumprun base system and development toolchain would just be one package. In other words, the lack of hard thinking which has prevented the packaging model outlined on the wiki from materializing would not be a problem.

Reply via email to