* Harshula <harsh...@debian.org>, 2015-08-26, 02:28:
Thanks for the feedback. If you are an expert on multi-arch support, I would really appreciate your assistance.

Not sure if I can call myself an expert, but I'll answer anyway!

libm17n-dev is marked as "Multi-Arch: same", but the following file is architecture-dependent:

/usr/bin/m17n-config

1) My understanding was that "Multi-Arch: same" was for files that are architecture-dependent and "Multi-Arch: foreign" was for files that are architecture-independent. Is that correct?

More or less, yes.

2) Since m17n-config contains paths that include the <triplet>, should m17n-config itself be placed somewhere architecture specific instead of in /usr/bin/ ?

There is no such place for public executables. You either need to fix the script to be identical across architectures, or remove it, or remove the "Multi-Arch: same" annotation.

Are there some good examples of packages that are multi-arch enabled that deal with the same issue?

Off the top of my head: #741519

Looking at the diff I sent you, fixing the script should be relative easy:

-  if test "${prefix}/lib/i386-linux-gnu" != "/usr/lib"; then
-    echo "-L${prefix}/lib/i386-linux-gnu ${LIBNAME}"
+  if test "${prefix}/lib/x86_64-linux-gnu" != "/usr/lib"; then
+    echo "-L${prefix}/lib/x86_64-linux-gnu ${LIBNAME}"

/usr/lib/<triplet> is already in the linker's search path, so these -L options are needless.

--libtool)
  for name in $LIBTOOLNAME; do
-    echo -n "${prefix}/lib/i386-linux-gnu/lib${name}.la "
+    echo -n "${prefix}/lib/x86_64-linux-gnu/lib${name}.la "
  done;

These seems to print names of *.la files that don't exist in the first place! I'm not sure what is this option useful for anyway. Isn't libtool supposed to find the .la files itself? (Disclaimer: I'm fairly libtool-ignorant.) Perhaps the --libtool option should be removed. It doesn't seem to have any users in the archive.

3) re: https://wiki.debian.org/Multiarch/Implementation:
----------------------------------
/usr/lib -> /usr/lib/<triplet>
/usr/lib/<pkgdir> -> /usr/lib/<triplet>/<pkgdir>
/usr/include: no change
/usr/bin: no change
/usr/share: no change
/usr/sbin: no change
----------------------------------

What should happen to files in /usr/lib/debug/? Should they reside in /usr/lib/<triplet>/debug/ ?

I don't think gdb knows about /usr/lib/<triplet>/debug.

In compat>=9, dh_strip puts separated debug symbols in a location based on their build-id (/usr/lib/debug/.build-id/ab/cdef1234.debug). This enables having "Multi-Arch: same" debug packages, because build-id is different on each architecture.

--
Jakub Wilk

Reply via email to