On Wed, Jun 30, 2010 at 11:06:04 -0700, Russ Allbery wrote:

> diff --git a/policy.sgml b/policy.sgml
> index 9fe7158..2635fa8 100644
> --- a/policy.sgml
> +++ b/policy.sgml
> @@ -7361,40 +7361,58 @@ strip --strip-unneeded <var>your-lib</var>
>       </p>
>  
>       <p>
> -       An ever increasing number of packages are using
> -       <prgn>libtool</prgn> to do their linking.  The latest GNU
> -       libtools (>= 1.3a) can take advantage of the metadata in the
> -       installed <prgn>libtool</prgn> archive files (<file>*.la</file>
> -       files).  The main advantage of <prgn>libtool</prgn>'s
> -       <file>.la</file> files is that it allows <prgn>libtool</prgn> to
> -       store and subsequently access metadata with respect to the
> -       libraries it builds.  <prgn>libtool</prgn> will search for
> -       those files, which contain a lot of useful information about
> -       a library (such as library dependency information for static
> -       linking).  Also, they're <em>essential</em> for programs
> -       using <tt>libltdl</tt>.<footnote>
> -           Although <prgn>libtool</prgn> is fully capable of
> -           linking against shared libraries which don't have
> -           <tt>.la</tt> files, as it is a mere shell script it can
> -           add considerably to the build time of a
> -           <prgn>libtool</prgn>-using package if that shell script
> -           has to derive all this information from first principles
> -           for each library every time it is linked.  With the
> -           advent of <prgn>libtool</prgn> version 1.4 (and to a
> -           lesser extent <prgn>libtool</prgn> version 1.3), the
> -           <file>.la</file> files also store information about
> -           inter-library dependencies which cannot necessarily be
> -           derived after the <file>.la</file> file is deleted.
> +       Packages that use <prgn>libtool</prgn> to create and install
> +       their shared libraries install a file containing additional
> +       metadata (ending in <file>.la</file>) alongside the library.
> +       For public libraries intended for use by other packages, these
> +       files normally should not be included in the Debian package,
> +       since the information they include is not necessary to link with
> +       the shared library on Debian and can add unnecessary additional
> +       dependencies to other programs or libraries.<footnote>
> +         These files store, among other things, all libraries on which
> +         that shared library depends.  Unfortunately, if
> +         the <file>.la</file> file is present and contains that
> +         dependency information, using <prgn>libtool</prgn> when
> +         linking against that library will cause the resulting program
> +         or library to be linked against those dependencies as well,
> +         even if this is unnecessary.  This can create unneeded
> +         dependencies on shared library packages that would otherwise
> +         be hidden behind the library ABI, and can make library
> +         transitions to new SONAMEs unnecessarily complicated and
> +         difficult to manage.
>         </footnote>
> +       If the <file>.la</file> file is required for that library (if,
> +       for instance, it's loaded via <tt>libltdl</tt> in a way that
> +       requires that meta-information), the <tt>dependency_libs</tt>
> +       setting in the <file>.la</file> file should normally be set to
> +       the empty string.  If the shared library development package has
> +       historically included the <file>.la</file>, it must be retained
> +       in the development package (with <tt>dependency_libs</tt>
> +       emptied) until all libraries that depend on it have removed or
> +       emptied <tt>dependency_libs</tt> in their <file>.la</file>
> +       files to prevent linking with those other libraries
> +       using <prgn>libtool</prgn> from failing.
> +     </p>
> +
> +     <p>
> +       If the <file>.la</file> must be included, it should be included
> +       in the development (<tt>-dev</tt>) package, unless the library
> +       will be loaded by <prgn>libtool</prgn>'s <tt>libltdl</tt>
> +       library.  If it is intended for use with <tt>libltdl</tt>,
> +       the <file>.la</file> files must go in the run-time library
> +       package.
>       </p>
>  
>       <p>
> -       Packages that use <prgn>libtool</prgn> to create shared
> -       libraries should include the <file>.la</file> files in the
> -       <tt>-dev</tt> package, unless the package relies on
> -       <tt>libtool</tt>'s <tt>libltdl</tt> library, in which case
> -       the <tt>.la</tt> files must go in the run-time library
> -       package.
> +       These requirements for handling of <file>.la</file> files do not
> +       apply to loadable modules or libraries not installed in
> +       directories searched by default by the dynamic linker.  Packages
> +       installing loadable modules will frequently need to install
> +       the <file>.la</file> files alongside the modules so that they
> +       can be loaded by <tt>libltdl</tt>.  <tt>dependency_libs</tt>
> +       does not need to be modified for libraries or modules that are
> +       not installed in directories searched by the dynamic linker by
> +       default and not intended for use by other packages.
>       </p>
>  
>       <p>
> 
Looks good to me, seconded.

Cheers,
Julien

Attachment: signature.asc
Description: Digital signature

Reply via email to