From: Russ Allbery Date: Fri, 13 Jan 2012 18:03:07 +0000 (-0800) Subject: Improvements and simplifications of symbols/shlibs rewrite X-Git-Url: https://git.donarmstrong.com/?p=debian%2Fdebian-policy.git;a=commitdiff_plain;h=2d47e9eebcbe675f4815035851b3b42cedaa28af Improvements and simplifications of symbols/shlibs rewrite Based on review by Raphaƫl Hertzog. --- diff --git a/policy.sgml b/policy.sgml index d044507..1f14e34 100644 --- a/policy.sgml +++ b/policy.sgml @@ -5996,16 +5996,7 @@ Replaces: mail-transport-agent libraries, put a call to dpkg-shlibdeps into your debian/rules file in the source package. List all of the compiled binaries, libraries, or loadable - modules in your package. 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: - -dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \ - debian/tmp/usr/lib/* - - but normally finding all of the binaries is more - complex. + modules in your package. The easiest way to do this is to use a package helper framework such as debhelper. If you are using debhelper, the dh_shlibdeps @@ -6029,7 +6020,10 @@ dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \ binary package. Again, dh_shlibdeps and dh_gencontrol will handle all of this for - you if you're using debhelper. + you if you're using debhelper, including generating + separate substvars files for each binary + package and calling dpkg-gencontrol with the + appropriate flags.

@@ -6175,7 +6169,7 @@ libz.so.1 zlib1g #MINVER# following symbols file: libGL.so.1 libgl1 -| libgl1-mesa-glx #MINVER# + | libgl1-mesa-glx #MINVER# publicGlSymbol@Base 6.3-1 [...] implementationSpecificSymbol@Base 6.5.2-7 1 @@ -6216,7 +6210,8 @@ libGL.so.1 libgl1 * Build-Depends-Package: zlib1g-dev - (Don't forget the leading space.) + (Don't forget the space before the * so that it will + be parsed as part of the entry for that library.)

@@ -6403,12 +6398,10 @@ int library_do_operation(enum library_op); directory"

- When packages are being built, - any debian/shlibs files are copied into the - control information file area of the temporary build - directory and given the name shlibs. These - files give details of any shared libraries included in - the same package. + 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.

@@ -6559,34 +6552,19 @@ udeb: libz 1 zlib1g-udeb (>= 1:1.2.3.3.dfsg-1) Providing a shlibs file

- If your package provides a shared library, you need to create - a shlibs file following the format described - above. It is usual to call this - file debian/shlibs (but if you have multiple - binary packages, you might want to call - it debian/package.shlibs instead). - Then let debian/rules install it in the control - information file area: - -install -m644 debian/shlibs debian/tmp/DEBIAN - - or, in the case of a multi-binary package: - -install -m644 debian/package.shlibs debian/package/DEBIAN/shlibs - - An alternative way of doing this is to create - the shlibs file in the control information file - area directly from debian/rules without using - a debian/shlibs file at all, + To provide a shlibs file for a shared library + binary package, create a shlibs file following + the format described above and place it in + the DEBIAN directory for that package during the + build. It will then be included as a control file for that + package This is what dh_makeshlibs in the debhelper suite does. If your package also has a udeb that provides a shared library, dh_makeshlibs can automatically generate the udeb: lines if you specify the name of the udeb with the --add-udeb option. - - since the debian/shlibs file itself is ignored by - dpkg-shlibdeps. + .