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

shared library issue



Running lintian on my package I get this message:
-----------
W: felix: non-dev-pkg-with-shlib-symlink usr/lib/libflx_dynamic.so.1.1.0
usr/lib/libflx_dynamic.so
N:
N:   Although this package is not a `-dev' package, it installs a
N:   `libsomething.so' symbolic link referencing the corresponding
shared
N:   library. When the link doesn't include the version number, it is
used
N:   by the linker when other programs are built against this shared
N:   library.
N:
N:   Shared libraries are supposed to place such symbolic links in their
N:   respective `-dev' packages, so it is a bug to include it with the
main
N:   library package.
N:
N:   However, if this is a small package which includes the runtime and
the
N:   development libraries, this is not a bug. In the latter case,
please
N:   contact lintian-maint@debian.org about this so that this exception
N:   would be recognized in future versions of Lintian.
N:
N:   Refer to Policy Manual, section 8.4 for details.
N:
----------------

and am duly reporting the issue here as requested.

Here is my understanding:

'Normally' a shared library is provided to allow one
or more executables to run. The library is a separate
package so several binary executables can share it.

In order to compile code against the library, you'd
need appropriate header files, and a link of the kind
lintian is complaining about above.

This would go in a separate -dev package, since people
writing code using the library need that, whereas
uses of their programs do not.

However my package, Felix, is language translator,
and it 'defines' programs in terms of source code,
as does, say, Python or Perl. 

With Python, the translation to bytecode, followed by
execution, is intentionally transparent: the client
believes they're executing source code. 

With Felix, the same kind of transparent operation
is supported, however behind the scenes something
different happens: the source is translated to C++,
and then g++ is used to compile it, then the resulting
binary is executed.

Because of this the 'run time library .so link' is required
by the end user, not just 'developers'. In addition,
the library contains implementation details and has
no documented public C/C++ interface, so it does not
belong in a separate package. This applies to C++
header files contained in the package too -- they're
not for 'developers' but implementation details
of the system end users require.

I have no idea of a good way to tell lintian not
to make naive assumptions about these kinds of things:
those assumptions are probably generally right
in the C world, not many people are developing
scripting languages that generate binaries, indeed
this is one of the novel features of Felix 

"works like a scripting languages: EASY!"
"runs like a compiled one: FAST!!"

BTW: this is NOT a 'small' package: 

1273439 2005-06-09 19:52 felix_1.1.0.orig.tar.gz
[about 4.7Mb source, 166K LOC]

[I don't normally read this list so please CC any replies to me]

-- 
John Skaller, skaller at users.sf.net
PO Box 401 Glebe, NSW 2037, Australia Ph:61-2-96600850 
Download Felix here: http://felix.sf.net



Reply to: