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

Questions about the amd64-multiarch-3 proposal



Hello fellows developers,

I have some comment on the amd64-multiarch-3 proposal
<http://people.debian.org/~ajt/amd64-multiarch-3.txt>

First I think this update go in the right direction, at least it does
not look like a large kludge, but I need some clarification.

I will assume, while it is not stated explicitly that amd64-multiarch-3
follow  amd64-multiarch-2 w.r.t. the introduction
/usr/$(gcc -dumpmachine)/{lib,include}

Without this assumption the proposal make no sense.

                   =========

Extracted from amd64-multiarch-3.txt:
> we want the development stuff to be multiply installable (why the hell
> not?).

[Of course there is no reason, unless it is too unpractical to do so.]

>        lib<foo><n>-<arch>
>               - .so file
>                - libfooN-x, libfooM-x, libfooN-y must all be concurrently
>                  installable
                  
If you ship the .so symlink here, how will you have libfooN-x and libfooM-x
concurently installable ? They both include the libfoo.so symlink.
This is for this reason the .so symlink is in the -dev package. 
(Unless you meant libfoo.so.N, in this case please clarify in a future
version.)

>        lib<foo><n>-dev-<arch>

[The concurrent install possible is probably only libfooN-x with libfooN-y]

>                - .a file
>                - arch-dependent include files


>        lib<foo><n>-dev-common

[Probably no concurrent install possible]

>                - arch: all
[Probably the .so symlink belong here]
>                - manpages, arch-independent include files



While that sound like a good idea, how that will be implement?
1) Where arch-dependent include files will be put 
         [/usr/$(gcc-dumpmachine)/include]
1) Where arch-independent include files will be put [/usr/include ?]

Will gcc search first in
/usr/$(gcc -dumpmachine)/{lib,include}
and if nothing is found will look in /usr/include ?

How relative header path will be handled ?
(For example
-8<-/usr/include/foo/foo.h----
#include "foo-arch.h"
#include "foo-all.h"
------------------------------

---8<-----bar.c---------------
#include <foo/foo.h>
int main(void) { return foo(42); }
------------------------------

Now user issue
gcc -c bar.c

info cpp state that:
`#include "FILE"'
     This variant is used for header files of your own program.  It
     searches for a file named FILE first in the directory containing
     the current file, then in the same directories used for `<FILE>'.

Under current cpp semantic, cpp will search foo-arch.h and
foo-all.h in /usr/include/foo was found and
then in /usr/$(gcc -dumpmachine)/include and /usr/include 
bu not in _both_ /usr/$(gcc -dumpmachine)/include/foo.

So if foo-arch.h is arch-dependent, it will not be found. 

This flaw is not critical since we can decide to ship all the include
files in lib<foo><n>-dev-<arch> in this case.

I see two remaining uncertainty
1) Were does the .so symlink go ?
2) Should -dev-common depend on -dev-arch (even after the transitional 
period?)

I apologize in advance for all the misunderstanding.

Cheers,
-- 
Bill. <ballombe@debian.org>

Imagine a large red swirl here. 



Reply to: