mupen64plus splitting for 2.0 in debian

by

mupen64plus has changed its internal structure slightly with its upcoming release featuring the new API 2.0. Beside the most obvious change for the user - the removal of a graphical interface as part of the core distribution, there will be an explosion of packages provided by debian.

Currently we provide one package for mupen64plus which includes everything to emulate a N64 and another one which includes only the debugging symbols (a package I always wanted to remove in favor of the planned .ddebs). In the future the mupen64plus package will still be there, but only to provide a meta packages which depends either on a single ui or all available uis for the core library. But since the only usable ui at the moment is mupen64plus-ui-console, the difference will not be really important to the user. We will probably see mupen64plus recommend utilities in the future for savestate conversion or similar tools, but not right now. So this package can be compared to the xorg meta package.

Each ui has now to load the core library (current package name is libmupen64plus2). In contrast to most other libraries, it isn't meant to be loaded implicit by the DT_NEEDED entries in the elf binaries, but by the ui directly through dlopen. This means that we can have different version of the library available on the system for different purposes (profiling, debugging, speed optimized emulation, core comparison, ...) and the user can switch between these library using ui functionality. As most of these will be only rare and special versions used by persons which work on the core, I will provide only one version of the core at the moment - maybe add another one when there is really need for it, but for now the ui has simply to depend on libmupen64plus2.

Because each each ui has also the full control which plugins it loads, the ui package will also depend on plugins and not let the mupen64plus or the libmupen64plus2 package do that job. For each type (rsp, input, audio, video) the user has to provide at least one plugin. For easier usage it will be possible to select a mupen64-*-all package which depends on all package of a type which were known till the upload of the package. But it isn't necessary to install all - a single package for each type which provides a specific virtual package (mupen64plus-rsp-1, mupen64plus-input-1, mupen64plus-audo-1, mupen64plus-video-1) is enough to fulfill the dependencies of mupen64plus-ui-console - how future ui packages have to handle this is unknown, but hopefully the same way as the console ui does it.

Plugins in debian will be for now:

The *-z64 plugins can only be used together. So if you want to use them please check that you start the emulator with mupen64plus --rsp mupen64plus-rsp-z64 --gfx mupen64plus-video-z64

If anyone wants to start to work a little bit with the packages: They can be cloned easily with gbp-clone from git-buildpackage:

for i in audio-sdl core input-sdl rsp-hle rsp-z64 ui-console video-arachnoid video-glide64 video-rice video-z64; do
      gbp-clone --pristine-tar git://git.debian.org/git/collab-maint/mupen64plus-$i.git
done

You will not be able to build these package for anything else then (linux|kfreebsd)-amd64 or (linux|kfreebsd)-i386. If you want to work on better platform support then please get in contact with upstream. There are also works available for armel (pandora) and powerpc (gamecube/wii). But since patches for these changes weren't provided for the mupen64plus developers, these platforms cannot be supported at the moment.

Btw. the input plugin has now a auto-configuration. To add your own gamepad/joystick supported, please send a mail with your old ~/.config/mupen64plus/blight_input.conf to the maintainers.