Raphael Hertzog <hert...@debian.org> writes: > On Mon, 02 Jan 2012, Russ Allbery wrote:
> [...] >> <p> >> <file>shlibs</file> files were the original mechanism for >> handling library dependencies. They are documented >> in <ref id="sharedlibs-shlibdeps">. <file>symbols</file> files, >> documented in this section, are recommended for most packages, >> since they provide dependency information for each exported >> symbol and therefore generate more accurate dependencies for >> binaries that do not use symbols from newer versions of the >> shared library. However, <file>shlibs</file> files must be used >> for udebs. Packages which provide a <file>symbols</file> file >> are not required to provide a <file>shlibs</file> file. >> </p> > In practice I don't think that we have any package providing a symbols > files without a shlibs file. Yes, but there was some discussion in the Policy bug asking why shlibs files were required when they're not used if a symbols file is present, and while I originally argued that keeping them both made sense, I came around to that position after reviewing the bug discussion. It doesn't hurt anything, but there doesn't really seem to be any point in providing shlibs if symbols is present. > ---- >> If your source package builds only a >> single binary package that contains only compiled binaries and >> libraries (but no scripts) and is not multiarch, you can use a >> command such as: >> <example compact="compact"> >> dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \ >> debian/tmp/usr/lib/* >> </example> >> but normally finding all of the binaries is more >> complex. > I would drop the part above (up to the 4 dashes that I added). This > example will only mislead people IMO because debian/tmp/ is far from > being the norm. debian/<pkg> is much more common for single binary > packages. And as you said, it doesn't cover all cases. Yeah, good point. This was retained from the old shlibs documentation, but at this point I don't think anyone really looks here to see how to do this. Dropped. >> binary package.<footnote> >> Again, <prgn>dh_shlibdeps</prgn> >> and <prgn>dh_gencontrol</prgn> will handle all of this for >> you if you're using <tt>debhelper</tt>. >> </footnote> > I would indicate in the footnote that dh_shlibdeps/dh_gencontrol use an > alternate substvars file by default (debian/<pkg>.substvars). I now have: binary package.<footnote> Again, <prgn>dh_shlibdeps</prgn> and <prgn>dh_gencontrol</prgn> will handle all of this for you if you're using <tt>debhelper</tt>, including generating separate <file>substvars</file> files for each binary package and calling <prgn>dpkg-gencontrol</prgn> with the appropriate flags. </footnote> >> <sect1 id="symbols"> >> <heading>The <file>symbols</file> File Format</heading> > [...] >> For our example, the <tt>zlib1g</tt> <file>symbols</file> file >> would contain: >> <example compact="compact"> >> * Build-Depends-Package: zlib1g-dev >> </example> >> (Don't forget the leading space.) > What leading space are you referring to ? I now have: (Don't forget the space before the <tt>*</tt> so that it will be parsed as part of the entry for that library.) Due to the way that the formatting of Policy works, it's very hard to tell that there's a space there, and unlike with symbols where the indentation is fairly obvious, it's not completely obvious that it's required. > [...] >> <sect1 id="shlibs-paths"> >> <heading>The <file>shlibs</file> files present on the >> system</heading> > [...] >> <item> >> <p><file>DEBIAN/shlibs</file> files in the "build >> directory"</p> >> >> <p> >> When packages are being built, >> any <file>debian/shlibs</file> files are copied into the >> control information file area of the temporary build >> directory and given the name <file>shlibs</file>. These >> files give details of any shared libraries included in >> the same package. >> </p> >> </item> > debian/shlibs is (no longer) a standard file... debhelper doesn't install > such files, it generates shlibs files on the fly and I don't believe that > any modern package still has debian/shlibs. > So I would rewrite this paragraph to just say that DEBIAN/shlibs is the > shlibs file produced by the current package build. I now have: <p> These files are generated as part of the package build process and staged for inclusion as control files in the binary packages being built. They provide details of any shared libraries included in the same package. </p> > I would shorten the explanation here and drop the example of how to > install a manually crafted shlibs file. This is far from being the norm > and should not be difficult to find out alone if one really needs it. I've replaced this section with just: <sect1> <heading>Providing a <file>shlibs</file> file</heading> <p> To provide a <file>shlibs</file> file for a shared library binary package, create a <file>shlibs</file> file following the format described above and place it in the <file>DEBIAN</file> directory for that package during the build. It will then be included as a control file for that package<footnote> This is what <prgn>dh_makeshlibs</prgn> in the <package>debhelper</package> suite does. If your package also has a udeb that provides a shared library, <prgn>dh_makeshlibs</prgn> can automatically generate the <tt>udeb:</tt> lines if you specify the name of the udeb with the <tt>--add-udeb</tt> option. </footnote>. </p> <p> Since <prgn>dpkg-shlibdeps</prgn> reads the <file>DEBIAN/shlibs</file> files in all of the binary packages being built from this source package, all of the <file>DEBIAN/shlibs</file> files should be installed before <prgn>dpkg-shlibdeps</prgn> is called on any of the binary packages. </p> </sect1> Thanks for the review! -- Russ Allbery (r...@debian.org) <http://www.eyrie.org/~eagle/> -- To UNSUBSCRIBE, email to debian-policy-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87ehv3a3ak....@windlord.stanford.edu