On Wed, 11 Mar 2009 14:50:19 +0100 Goswin von Brederlow <goswin-...@web.de> wrote:
> > > > [*] > > I have been looking lately into making some cross toolchain > > improvements, one of them will be to change to a sysrooted cross > > toolchain, but the current layout we are using by dpkg-cross installs > > relevant bits under: > > <DIR>/{include,bin,lib,lib64} > > Mainstream code expects a different layout more LHS compliant, > > <DIR>/{usr/include,bin,lib,lib64} dpkg-cross currently does: /usr/ `-- $arch-linux-gnu/ |-- include/ | `-- foo.h `-- lib/ `-- libfoo.so $ ls /usr/arm-linux-gnu/ bin include lib Very flat but quite simple. I thought mulitarch wanted: /usr/ |-- bin/ | `-- $arch-linux-gnu/ |-- include/ | `-- $arch-linux-gnu/ | `-- foo.h |-- lib64/ | `-- $arch-linux-gnu/ `-- lib/ `-- $arch-linux-gnu/ `-- libfoo.so ? The problem, as I see it, with /usr/include/$arch-linux-gnu/foo.h is that it makes it impossible to export one entire tree of all cross-build stuff. i.e. make /usr/$arch-linux-gnu/ available and everything is in a single place. Instead, three paths need to be exported. So which layout do we need for LHS? /usr/ `-- $arch-linux-gnu/ |-- bin/ |-- lib64/ !-- lib/ |-- usr/ `-- |-- bin/ |-- include/ | `-- foo.h `-- lib/ `-- libfoo.so $ ls /usr/arm-linux-gnu/ bin lib64 lib usr $ ls /usr/arm-linux-gnu/usr bin include lib (with or without a symlink of /usr/arm-linux-gnu/usr/lib64 to /usr/arm-linux-gnu/usr/lib) ? i.e. a complete hierarchy beneath /usr/arm-linux-gnu/ with files that are normally in /bin/ in /usr/$arch-linux-gnu/bin and files that are normally in /usr/bin/ in /usr/$arch-linux-gnu/usr/bin, similarly for lib. > > Is there any information arround, maybe LHS, on how to setup <DIR> > > layout? > > > > Nowadays we are using non multiarch structure as: > > > > usr/$arch-linux-gnu > > |-- bin > > |-- include > > |-- lib > > `-- lib64 > > > > But what it should look like in future? /usr/include/$arch-linux-gnu? > > Would it be reasonable to be using a new layout like: > > > > usr/include/$arch-linux-gnu > > That is already standard on i386/amd64 at least. Many /usr/include/* > files just include the right usr/include/$arch-linux-gnu file > depending on wether __i386__ or __x86_64__ is set. gcc also looks into > those dirs on its own. So yes, do use those. Is that /usr/include/$arch-linux-gnu/usr/include/foo.h ? > > |-- bin > > All binaries are assumed to do the same thing no matter what > architecture they are compiled for. As such there is no need to have > the same binary compiled for different archs at the same time. Also > any change here would play havock with shebang lines. binutils-multiarch puts stuff in /usr/$arch-linux-gnu/bin/ $ ls /usr/arm-linux-gnu/bin/ ar as ld nm objcopy objdump ranlib strip > > I am missing some papers on multiarch, are there any kind of > > information out there. > > You are missing the actual multiarch or cross-compile library dirs: > > /usr/$arch-linux-gnu/lib (cross-compile) > /usr/lib/$arch-linux-gnu (multiarch) > > I still haven't heart a good reason why multiarch can't use the > cross-compile dirs as the libraries for each are ment to be > interchangable (and in fact dpkg-cross demonstrates that already). Hmm, so dpkg-cross would need to change the path to include/ for headers but not change the path for libraries? We'd have: /usr/arm-linux-gnu/lib/libfoo.so /usr/include/arm-linux-gnu/include/foo.h or /usr/arm-linux-gnu/usr/lib/libfoo.so /usr/include/arm-linux-gnu/usr/include/foo.h ? I thought the question was whether we would have: /usr/lib/arm-linux-gnu/lib/libfoo.so or /usr/lib/arm-linux-gnu/usr/lib/libfoo.so or /usr/arm-linux-gnu/usr/lib/libfoo.so or the current /usr/arm-linux-gnu/lib/libfoo.so as a conversion of /usr/lib/libfoo.so -- Neil Williams ============= http://www.data-freedom.org/ http://www.nosoftwarepatents.com/ http://www.linux.codehelp.co.uk/
pgp9tgMdTd7tZ.pgp
Description: PGP signature