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

Re: multiarch and interpreters/runtimes



On Thu, Apr 18, 2013 at 06:15:26PM +0100, Ian Jackson wrote:
> Goswin von Brederlow writes ("Re: multiarch and interpreters/runtimes"):
> > Co-installability of interpreters is generally not planed and would
> > have to be made as custom solutions, i.e. place the interpreter in
> > /usr/lib/x86_64-linux-gnu/perl/ and provide /usr/bin/perl as
> > alternative.
> 
> I think it's important to distinguish between (a) coinstallability of
> interpreter executables for use in #!, or explicit invocation and
> (b) coinstallability of the interpreter code as a library which can be
> embedded in other applications.
> 
> So for example, you are saying that coinstalling i386 and amd64
> versions of tclsh (which is normally found in /usr/bin) is not
> generally planned.  But coinstalling i386 and amd64 versions of
> libtcl.so _is_ intended and supported by multiarch, and presumably
> also of tcl extensions.
> 
> Please correct me if I'm wrong.

You are fully correct there. Having dynamic libraries in /usr/lib/
coinstallable is a simple matter of moving them to the multiarch dir.
The problem is indeed only the binary and its #! invocation.

I'm not sure what the situation is for plugins with such interpreter
libs. If the plugin is a libPlugin.so that is linked against
libInterpreter.so then this should just work automatically like any
library dependency with a simple Multiarch: same. If it is not linked
a simple Depends should do. But don't nail me on it. A specific
example might turn out to be more complex and need M-A: allow.

So split second thought, suboptimal solution looks like this:

Package: interpreter
Architecture: any
Depends: libinterpreter
Multi-Arch: foreign

Package: libinterpreter
Architecture: any
Multi-Arch: same

Package: plugin (metapackage)
Architecture: any
Depends: interpreter, libplugin
Multi-Arch: foreign

Package: libplugin
Architecture: any
Depends: libinterpreter
Multi-Arch: same

Package: app-with-lib
Architecture: any
Depends: libinterpreter, libplugin
Multi-Arch: foreign (optional)

Package: app-with-script
Architecture: any/all
Depends: interpreter, plugin 
Multi-Arch: foreign (optional)

Package: script
Architecture: all
Depends: interpreter
Multi-Arch: foreign (optional)


Note: This uses an extra package (plugin) to work around Multi-Arch:
allowed not being allowed.

> > Anyway, all of this has to wait till after wheezy. So get that out
> > first.
> 
> Right.  Thanks for the explanation, anyway.
> 
> Ian.

MfG
	Goswin


Reply to: