I've written a draft of changes to the static library guidelines:: http://fedoraproject.org/wiki/PackagingDrafts/StaticLibraryChanges There are three pieces which can be voted on separately or together depending on how controversial they are: 1) Separate static library inclusion from static library linkage and make static library inclusion less strict. 2) Change how to package static libraries when the package does not include dynamic libraries (per Ralf's note to the list) 3) Incorporate mschwendt's note about *.la files directly into the guidelines instead of as a footnote. Comments welcome. == Exclusion of Static Libraries == Packages including libraries should exclude static libs as far as possible (eg by configuring with ''--disable-static''). Static libraries should only be included in exceptional circumstances. Applications linking against libraries should as far as possible link against shared libraries not static versions. Libtool archives, ''foo.la'' files, should not be included. Packages using libtool will install these by default even if you configure with ''--disable-static'', so they may need to be removed before packaging. Due to bugs in older versions of libtool or bugs in programs that use it, there are times when it is not always possible to remove *.la files without modifying the program. In most cases it is fairly easy to work with upstream to fix these issues. === Packaging Static Libraries === * In general, packagers are strongly encouraged not to ship static libs unless a compelling reason exists. * We want to be able to track which packages are using static libraries (so we can find which packages need to be rebuilt if a security flaw in a static library is fixed, for instance.) * When a package provides both dynamic and static libraries the static libraries must be placed in a ''*-static'' subpackage. Separating the static libs from the other development files in ''*-devel'' allow us to track this usage by checking which packages Build''''''Require the ''*-static'' package. * When a package only provides static libraries you can place all the files in the ''*-devel'' subpackage. When doing this you also have to have a virtual Provide for the static package: {{{ %package devel Provides: foo-static = %{version}-%{release} }}} This way other packages which will link against a dynamic library when your package starts providing one can {{{BuildRequire: foo-devel}}} and packages which explicitly need to link against the static version can {{{BuildRequire: foo-static}}} === Staticly Linking Executables === * Static linkage is a special exception and should be decided on a case-by-case basis. The packager must provide rationale for linking statically, including precedences where available, to FESCO for approval. -Toshio
Attachment:
signature.asc
Description: This is a digitally signed message part
-- Fedora-packaging mailing list Fedora-packaging@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/fedora-packaging