Goswin Brederlow <[EMAIL PROTECTED]> writes:

> Package: debian-policy
> Severity: normal
>
> Policy currently reads:
>
> | 8.2 Run-time support programs
> |
> | If your package has some run-time support programs which use the
> | shared library you must not put them in the shared library
> | package. If you do that then you won't be able to install several
> | versions of the shared library without getting filename clashes.
> |
> | Instead, either create another package for the runtime binaries
> | (this package might typically be named libraryname-runtime; note the
> | absence of the soversion in the package name), or if the development
> | package is small, include them in there. 
>
> The only thing that makes sense putting in a development package would
> be compile-time support programs (all those foobar-config programs)
> but not run-time support programs like pt_chown (in libc6) or apt-get
> (in apt with libapt). Maybe this section could be rephrased like this:

Agreed.

This also ties into another problem that I ran into a while back, namely
that Policy talks about run-time support programs but isn't explicit that
the requirement that different versions of shared library packages not
conflict applies to *all* files.  The information about run-time support
files is also scattered through 8.1 and 8.2.

Here's a patch that I think resolves this and is more explicit about the
problems and the suggested solutions.

Comments?  Seconds?

--- orig/policy.sgml
+++ mod/policy.sgml
@@ -4485,21 +4485,6 @@
        instead.
       </p>
 
-        <p>                                                                 
-          If your package includes run-time support programs that            
-          do not need to be invoked manually by users, but are               
-          nevertheless required  for the package to function, then it        
-          is recommended that these programs are placed                      
-          (if they are binary) in a subdirectory of                          
-          <file>/usr/lib</file>, preferably under                            
-          <file>/usr/lib/</file><var>package-name</var>.                     
-          If the program is architecture independent, the                    
-          recommendation is for it to be placed in a subdirectory of         
-          <file>/usr/share</file> instead, preferably under                  
-          <file>/usr/share/</file><var>package-name</var>.                     
-        </p>                                                                 
-                                                                            
-
       <p>
        If you have several shared libraries built from the same
        source tree you may lump them all together into a single
@@ -4642,24 +4627,50 @@
 
       </sect>
 
-      <sect id="sharedlibs-runtime-progs">
-       <heading>Run-time support programs</heading>
+      <sect id="sharedlibs-support-files">
+       <heading>Shared library support files</heading>
 
-      <p>
-       If your package has some run-time support programs which use
-       the shared library you must not put them in the shared
-       library package.  If you do that then you won't be able to
-       install several versions of the shared library without
-       getting filename clashes.
-      </p>
+       <p>
+         If your package contains files whose names do not change with
+         each change in the library shared object version, you must not
+         put them in the shared library package.  Otherwise, several
+         versions of the shared library cannot be installed at the same
+         time without filename clashes, making upgrades and transitions
+         unnecessarily difficult.
+       </p>
 
-      <p>
-       Instead, either create another package for the runtime binaries
-       (this package might typically be named
-       <package><var>libraryname</var>-runtime</package>; note the absence
-       of the <var>soversion</var> in the package name), or if the
-       development package is small, include them in there.
-      </p>
+       <p>
+         It is recommended that supporting files and run-time support
+         programs that do not need to be invoked manually by users, but
+         are nevertheless required for the package to function, be placed
+         (if they are binary) in a subdirectory of <file>/usr/lib</file>,
+         preferably under <file>/usr/lib/</file><var>package-name</var>.
+         If the program or file is architecture independent, the
+         recommendation is for it to be placed in a subdirectory of
+         <file>/usr/share</file> instead, preferably under
+         <file>/usr/share/</file><var>package-name</var>.  Following the
+         <var>package-name</var> naming convention ensures that the file
+         names change when the shared object version changes.
+       </p>
+
+       <p>
+         Run-time support programs that use the shared library but are
+         not required for the library to function or files used by the
+         shared library that can be used by any version of the shared
+         library package should instead be put in a separate package.
+         This package might typically be named
+         <package><var>libraryname</var>-runtime</package>; note the
+         absence of the <var>soversion</var> in the package name.
+       </p>
+
+       <p>
+         Files and support programs only useful when compiling software
+         against the library should be included in the development
+         package for the library.<footnote>
+           For example, a <file><var>package-name</var>-config</file>
+           script or <package>pkg-config</package> configuration files.
+         </footnote>
+       </p>
       </sect>
 
       <sect id="sharedlibs-static">

-- 
Russ Allbery ([EMAIL PROTECTED])             <http://www.eyrie.org/~eagle/>



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to