[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Multi-arch all-architecture plugins

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.

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

> 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 ?
> 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 ?


Reply to: