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

Bug#509932: shlibs format only addresses one versioning structure



I've started looking at revising the sections in Debian Policy about the
shlibs file and have two patches to propose.  This is the first.  (Yes,
this whole section will need further revision to add information about
symbols files, but I think we have a separate bug about that and
regardless can handle that separately.)

This patch removes the instructions for how to create shlibs.local files
and the encouragement to do so if one runs into errors with
dpkg-shlibdeps, since the archive coverage for shlibs is now complete and
writing a shlibs.local file is unlikely to be an appropriate solution to
one's problem.

Objections or seconds?

diff --git a/policy.sgml b/policy.sgml
index 1e641e6..9a72be5 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -5470,8 +5470,13 @@ Replaces: mail-transport-agent
 	      <p><file>debian/shlibs.local</file></p>
 
 	      <p>
-		This lists overrides for this package.  Its use is
-		described below (see <ref id="shlibslocal">).
+		This lists overrides for this package.  This file should
+		normally not be used, but may be needed temporarily in
+		unusual situations to work around bugs in other packages,
+		or in unusual cases where the normally declared dependency
+		information in the installed <file>shlibs</file> file for
+		a library cannot be used.  The contents of this file
+		override information obtained from any other source.
 	      </p>
 	    </item>
 
@@ -5577,13 +5582,6 @@ dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \
 	</p>
 
 	<p>
-	  If <prgn>dpkg-shlibdeps</prgn> doesn't complain, you're
-	  done.  If it does complain you might need to create your own
-	  <file>debian/shlibs.local</file> file, as explained below (see
-	  <ref id="shlibslocal">).
-	</p>
-
-	<p>
 	  If you have multiple binary packages, you will need to call
 	  <prgn>dpkg-shlibdeps</prgn> on each one which contains
 	  compiled libraries or binaries.  In such a case, you will
@@ -5730,74 +5728,7 @@ install -m644 debian/shlibs.<var>package</var> debian/<var>package</var>/DEBIAN/
 	  packages.
 	</p>
       </sect1>
-
-      <sect1 id="shlibslocal">
-	<heading>Writing the <file>debian/shlibs.local</file> file</heading>
-
-	<p>
-	  This file is intended only as a <em>temporary</em> fix if
-	  your binaries or libraries depend on a library whose package
-	  does not yet provide a correct <file>shlibs</file> file.
-	</p>
-
-	<p>
-	  We will assume that you are trying to package a binary
-	  <tt>foo</tt>.  When you try running
-	  <prgn>dpkg-shlibdeps</prgn> you get the following error
-	  message (<tt>-O</tt> displays the dependency information on
-	  <tt>stdout</tt> instead of writing it to
-	  <tt>debian/substvars</tt>, and the lines have been wrapped
-	  for ease of reading):
-	  <example compact="compact">
-$ dpkg-shlibdeps -O debian/tmp/usr/bin/foo
-dpkg-shlibdeps: warning: unable to find dependency
-  information for shared library libbar (soname 1,
-  path /usr/lib/libbar.so.1, dependency field Depends)
-shlibs:Depends=libc6 (>= 2.2.2-2)
-	  </example>
-	  You can then run <prgn>ldd</prgn> on the binary to find the
-	  full location of the library concerned:
-	  <example compact="compact">
-$ ldd foo
-libbar.so.1 => /usr/lib/libbar.so.1 (0x4001e000)
-libc.so.6 => /lib/libc.so.6 (0x40032000)
-/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
-	  </example>
-	  So the <prgn>foo</prgn> binary depends on the
-	  <prgn>libbar</prgn> shared library, but no package seems to
-	  provide a <file>*.shlibs</file> file handling
-	  <file>libbar.so.1</file> in <file>/var/lib/dpkg/info/</file>.  Let's
-	  determine the package responsible:
-	  <example compact="compact">
-$ dpkg -S /usr/lib/libbar.so.1
-bar1: /usr/lib/libbar.so.1
-$ dpkg -s bar1 | grep Version
-Version: 1.0-1
-	  </example>
-	  This tells us that the <tt>bar1</tt> package, version 1.0-1,
-	  is the one we are using.  Now we can file a bug against the
-	  <tt>bar1</tt> package and create our own
-	  <file>debian/shlibs.local</file> to locally fix the problem.
-	  Including the following line into your
-	  <file>debian/shlibs.local</file> file:
-	  <example compact="compact">
-libbar 1 bar1 (>= 1.0-1)
-	  </example>
-	  should allow the package build to work.
-	</p>
-
-	<p>
-	  As soon as the maintainer of <tt>bar1</tt> provides a
-	  correct <file>shlibs</file> file, you should remove this line
-	  from your <file>debian/shlibs.local</file> file.  (You should
-	  probably also then have a versioned <tt>Build-Depends</tt>
-	  on <tt>bar1</tt> to help ensure that others do not have the
-	  same problem building your package.)
-	</p>
-      </sect1>
-
       </sect>
-
     </chapt>

-- 
Russ Allbery (rra@debian.org)               <http://www.eyrie.org/~eagle/>



Reply to: