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