Hi Helmut,
On 2026-03-19 07:30, Helmut Grohne wrote:
> Let me add another one inspired from xorg. How about adding a binary
> package libggml0-backend-all that depends on all other backends. Then
> have every backend provide a virtual libggml0-backend. Then have
> libggml0 Recommends: libggml0-backend-all | libggml0-backend.
>
> The effect of this will change will depend on the situation.
>
> 1. Recommends enabled:
> A. No backend installed: Will install all backends
> B. Some backend installed: Will not install other backends
> 2. Recommends disabled: Will not install any backend
>
> In particular, this allows doing like
>
> apt install libggml0-backend-cuda llama.cpp
>
> and it'll install just that one backend with or without recommends, but
> if you were not careful in specifying what backend you wanted, it'd just
> install them all unless disabling recommends.
>
> What do you think?
In general I like this approach more over the others discussed. The
backends already provide libggml0-backend, so basically only
libggml0-backend-all would have to be added, and libggml0's dependency
updated.
There are still two downsides:
* libggml0-backend-all would not be allowed to depend on
libggml0-backend-cuda, which I expect to be the most popular
backend. So this could be a bit counterintuitive (though xorg
has a similar problem, and people seem to be able to deal with it).
* I still need to test how cooperative the Vulkan backend is with
the vendor-specific ones. These currently conflict because they
require the same hardware resource, but from what Mathieu told me, I
may have been overly cautious, as the backend selection mechanism
seems to pick the vendor-specific one over Vulkan, rather than
using both.
I'm preparing a 0.9.8 upload which will not address this problem yet,
but I'll look into it right after that.
Best,
Christian