Re: Multi-arch all-architecture plugins
Ian Jackson <ijackson@chiark.greenend.org.uk> writes:
> Goswin von Brederlow writes ("Re: Multi-arch all-architecture plugins"):
>> As you said these are usualy plugins that nothing depends on. So this
>> wouldn't help much. Also if there is a dependency than the rules for
>> m-a:same should be sufficient. If the package is something to depend on
>> then packages of all architectures should depend on it if they use
>> it. The plugin might only be used by amd64 packages and none of the i386
>> would depend on it and then installing only amd64 is perfectly fine.
>
> I don't think that's the case. Consider something like fakeroot. The
> fakeroot binary itself may be any architecture, because its function
> is to set up a socket and be a server for children and set an
> LD_PRELOAD and so forth. But the libfakeroot.so must be available for
> all configured architectures so that the LD_PRELOAD works no matter
> what architecture(s') binaries end up running.
Ok, this is a 3rd class of packages with this problem. libfakeroot.so
isn't a plugin but due to LD_PRELOAD it has the same issues with
multiarch as plugins with no depends on them (e.g. input methods).
> So you would have:
>
> Package: fakeroot
> Multi-Arch: foreign
> Depends: libfakeroot
>
> Package: libfakeroot
> Multi-Arch: all
>
> and it would have to mean "install libfakeroot for all configured
> architectures". If libfakeroot were m-a:same then it would mean
> "install libfakeroot for the arch whose fakeroot we picked" which is
> wrong.
>
>> I would concentrate on the case that nothing depends on it and the
>> solution while keeping the depending case in the back of my mind.
> ...
>> Another possible solution was to have a metapackage with wildcard
>> dependency:
>>
>> Package: plugin-all
>> Depends: plugin:*
>
> So plugin would be m-a:allowed ?
No limitations on what plugin may be, doesn't factor into the equation
so far. For fakeroot it would be this:
Package: fakeroot
Multi-Arch: foreign
Depends: libfakeroot:*
Package: libfakeroot
Multi-Arch: same
>> One thing to keep in mind is that the list of architectures for the
>> system might change (the admin adds another architecture) making any
>> such all-archs dependencies suddenly unfullfilled. But that is probably
>> unavoidable and apt-get -f install would fix it right up.
>
> Yes. Something would have to be done then, certainly.
>
> Perhaps the right answer is not to consider configured architectures,
> but rather architectures for which any package is installed.
>
> Ie, as follows:
>
> * Find the set of all architectures "foo" for which any package is
> present on the system
>
> * Now for each
>
> Package: plugin
> Architecture: bar
> Multi-Arch: all
>
> imagine a dependency
>
> Depends: plugin:foo1, plugin:foo2, ...
>
> Should dpkg do this as well as apt ?
>
> Ian.
Good question. Apt certainly has to care. dpkg could ignore it and
assume frontends will do the right thing.
MfG
Goswin
Reply to: