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

Bug#100346: seconding this proposal



On Sat, Jul 28, 2001 at 05:55:10PM -0500, Branden Robinson wrote:
> --------------------------------------------------------------------------------
> In general, libraries must be available in both shared and static forms.
> In some cases, it is acceptable for a library to be available in static
> form only; these cases include:
>   * libraries for languages whose shared library support is immature or
>     unstable;
>   * libraries whose interfaces are in flux or under development (commonly
>     the case when the library's major version number is zero, or where the
>     ABI breaks across patchlevels);
>   * libraries which are explicitly intended to be available only in static
>     form by their upstream author(s)
> 
> The shared version must be compiled with -fPIC, and the static version must
> not be. In other words, each *.c file will need to be compiled twice.
> 
> --------------------------------------------------------------------------------
>
> Aside from providing the exception cases for shared libraries, I eliminated
> the existing language which mandates what the shared and static library
> packages "must" be named, because policy 11.3 covers this subject in
> greater detail and could be construed to contradict the existing policy
> 11.2 in this respect.  I made no other changes.

Good work.  I have some comments about it, though.

First, I think the part that talks about the "lib" and "lib-dev"
package did contain a useful meaning, which can be stated like this:

The shared version must be in the library package, and the static
version must be in the development package.

Paragraph 11.3 says where the shared version should go, but nothing
else says where the static version should go, so I think we need to
maintain this statement in some form.  (I get the impression that
11.2 and 11.3 are in the wrong order and cover the same subject
matter, but I don't feel up to fixing that here.)

Second, so many words are spent on allowing some libraries to have only
static version that it's confusing that the next paragraph assumes that
there must be two versions.  I think it would be better if turned around
like this:

--------------------------------------------------------------------
In general, libraries must have a shared version in the library
package and a static version in the development package.  The
shared version must be compiled with `-fPIC', and the static
version must not be.  In other words, each `*.c' file will need
to be compiled twice.

In some cases, it is acceptable for a library to be available in static
form only; these cases include:
  * libraries for languages whose shared library support is immature or
    unstable;
  * libraries whose interfaces are in flux or under development (commonly
    the case when the library's major version number is zero, or where the
    ABI breaks across patchlevels);
  * libraries which are explicitly intended to be available only in static
    form by their upstream author(s)
If a library is available only in static form, then it must follow
the conventions for a development package.
--------------------------------------------------------------------

I added the last sentence to make clear what happens if the assumptions
of the first paragraph are broken, but I'm not happy with the wording.
The reason for explicitly following the conventions for a development
package is that it makes it easy to add a shared version later.

> Richard, Wichert, would you guys care to second this proposal?

I second it.

-- 
Richard Braakman
Will write free software for money.
See http://www.xs4all.nl/~dark/resume.html



Reply to: