]> git.donarmstrong.com Git - debian/debian-policy.git/commitdiff
Bug#542865: Grant an FHS exception for the multiarch library directories
authorSteve Langasek <vorlon@debian.org>
Sat, 5 Sep 2009 03:50:30 +0000 (20:50 -0700)
committerManoj Srivastava <srivasta@debian.org>
Thu, 10 Sep 2009 03:53:14 +0000 (22:53 -0500)
On Fri, Aug 21, 2009 at 09:25:30PM -0700, Russ Allbery wrote:
> Manoj Srivastava <srivasta@debian.org> writes:
> > On Fri, Aug 21 2009, Russ Allbery wrote:

> >> The current restriction is specific to libraries.  Don't we need to say
> >> that you can't put *any* files into any triplet directory that isn't
> >> for your package architecture?

> >         Hmm. My first read was that one could not put anything that was
> >  not a library in these directories, but perhaps it should be stated
> >  explicitly.

> I was expecting that we'd need to put anything that you might want to have
> simultaneous installs from multiple architectures in that directory, which
> would include, for instance, any shared library plugins or loadable
> modules, which aren't strictly libraries.

> We might have to duplicate some library helper programs as well, if for
> instance they communicate with the library using binary structures that
> are sensitive to sizeof(long).

Right, this was a bug in the proposed patch, not a deliberate statement that
only libraries belong in these directories.  (As I mentioned, the first
patch was something of a trial balloon.)  I think this updated patch should
cover everything for the first round.

Re-seconds?

Signed-off-by: Manoj Srivastava <srivasta@debian.org>
policy.sgml

index 844053dd0fc4143a9473d0a29ce72359607533ab..0bf1001f2486ae6ff362216a9efc69f0c09581fb 100644 (file)
@@ -5582,6 +5582,40 @@ libbar 1 bar1 (>= 1.0-1)
                   for 64 bit binaries is removed.
                 </p>
               </item>
+              <item>
+                <p>
+                  The requirement for object files, internal binaries, and
+                  libraries, including <file>libc.so.*</file>, to be located
+                  directly under <file>/lib{,32}</file> and
+                  <file>/usr/lib{,32}</file> is amended, permitting files
+                  to instead be installed to
+                  <file>/lib/<var>triplet</var></file> and
+                  <file>/usr/lib/<var>triplet</var></file>, where
+                  <tt><var>triplet</var></tt> is the value returned by
+                  <tt>dpkg-architecture -qDEB_HOST_GNU_TYPE</tt> for the
+                  architecture of the package.  Packages may <em>not</em>
+                  install files to any <var>triplet</var> path other
+                  than the one matching the architecture of that package;
+                  for instance, an <tt>Architecture: amd64</tt> package
+                  containing 32-bit x86 libraries may not install these
+                  libraries to <file>/usr/lib/i486-linux-gnu</file>.
+                  <footnote>
+                    This is necessary in order to reserve the directories for
+                    use in cross-installation of library packages from other
+                    architectures, as part of the planned deployment of
+                    <tt>multiarch</tt>.
+                  </footnote>
+                </p>
+                <p>
+                  Applications may also use a single subdirectory under
+                  <file>/usr/lib/<var>triplet</var></file>.
+                </p>
+                <p>
+                  The execution time linker/loader, ld*, must still be made
+                  available in the existing location under /lib or /lib64
+                  since this is part of the ELF ABI for the architecture.
+                </p>
+              </item>
               <item>
                 <p>
                   The requirement that