[Pkg-mono-devel] CLI packaging: glue module location?

Mirco Bauer meebey at meebey.net
Fri Apr 10 09:57:28 UTC 2009


Hi Steve and Mathieu,

On Thu, 9 Apr 2009 23:23:58 -0500
"Steve M. Robbins" <steve at sumost.ca> wrote:

> Hi again,
> 
> On Thu, Apr 09, 2009 at 11:07:19PM -0500, Steve M. Robbins wrote:
> 
> > The shared lib is not intended as a link library so it shouldn't
> > really be in /usr/lib but, rather, in a directory that all cli-based
> > programs have in their library path.  For example, similar glue code
> > modules for python modules can be placed in
> > /usr/lib/pymodules/pythonX.Y.  Is there such a directory for C#?  I
> > had a look at the CLI Policy document [1] but did not see any
> > suitable advice.
> 
> As often happens, right after sending a question like this, I find
> that the answer was right there [1] in the document I had cited :-/
> 
> So ... is this advice still valid for the new mono layout [2] ?

Yes, the Mono 2.0 transition was more about package name layout, and to
link everything against CLI 2.0, not about file structure layout.

>  And
> for non-GAC stuff, should everything be in /usr/lib/package or
> /usr/lib/cli/package?  

§3.3.1 Naming says:
"The package should be named libfoo-cil (without a version in the
package name) and libraries should not be installed into the GAC but
only into /usr/lib/packagename.

That means the gluelib should go in /usr/lib/packagename (while
packagename is not strongly defined btw) .

The Mono runtime is not fiddling with the LD_LIBRARY_PATH and thus you
have to hint the runtime where it can find the gluelib using the DLL
map that goes along with the assembly (CIL lib).

Is the library you are packaging really API unstable? Unversioned
(non-GACed) packaging should be only done if really needed.

> The policy [2] is a bit confusing on that
> point:
> 
>     3.1.2 File Locations
> 
>     The package's applications, libraries and meta-data must be
>     installed into /usr/lib/upstream_package_name.
> 
>     [...]
> 
>     Never install native "glue" libraries into /usr/lib, instead
>     install them at /usr/lib/cli/upstream_package_name-X.Y. When
>     moving libraries update the references to the new location using a
>     DLL Map. See the Mono DLL maps secion for an example.

3.1.2 is about the general location of files, while GAC and non-GAC
libs are overriding that definition in 3.2.1 and 3.3.1.

> 
> 
> 
> Thanks,
> -Steve
> 
> 
> [1]
> http://pkg-mono.alioth.debian.org/cli-policy/ch-packaging.html#s-file-locations
> [2] http://wiki.debian.org/Teams/DebianMonoGroup/Mono20Transition
> 
> 


-- 
Regards,

Mirco 'meebey' Bauer

PGP-Key ID: 0xEEF946C8

FOSS Developer    meebey at meebey.net  http://www.meebey.net/
PEAR Developer    meebey at php.net     http://pear.php.net/
Debian Developer  meebey at debian.org  http://www.debian.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 315 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-mono-devel/attachments/20090410/60844dd3/attachment.pgp>


More information about the Pkg-mono-devel mailing list