overview of sysroot/multilib patches
Stefan Fiedler <e0155490-oe7qfRrRQffzPE21tAIdciO7C/[email protected]> Fri, 2 Nov 2007 00:07:51 +0100
| Newsgroups | gmane.linux.distributions.rock.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi all, here is an overview of changes in the sysroot/multilib journal. The complete journal can be found at http://rocklinux.net/submaster/index.websplb?mode=journal&id=50 . The patches have been tested with various cross-builds (arm, sparc, x86_64 multilib and 64-bit only) and the usual bootdisk and crystal builds. I have tested different gcc versions and cross-toolchain packages as well. The toolchain packages have been rewritten with less code to be more easily understandable and maintable. gcc and binutils now use the --sysroot configure option which makes e.g. modifying the gcc specs file unecessary and is generally much less error prone. The gcc is now build three times before chroot stages to get complete C/C++ cross-compilers with shared libraries including libstdc++. For this a third build stage before chroot is required. Most packages from stages 1, 2 and 3 are now built one stage later and stage 3 is the first chroot stage. The build scripts now support separate 32-/64-bit packages in multilib builds. Packages named *-32bit are built as 32-bit and $bindir etc. point to a temporary directory as not to overwrite 64-bit files. $libdir however contains the real location, so that packages with a configure script (or which consider $libdir otherwise) usually install libraries to the correct location. The build variable $multilib contains 'lib' or 'lib64' and indicates where to install libraries, e.g. if a package sets $libdir, it should do it like this: libdir="$root/usr/$multilib". Packages containing the MULTILIB flag will be automatically built as 32- and 64-bit in all stages. The default $confopt now passes $prefix, $bindir, etc. without the $root prefix to configure. Packages may hard-code these paths into their files, so they should never contain $root. This fixes e.g. cross-builds of ncurses and file, and makes it unnecessary to change the paths in $makeopt. In $makeinstopt, $root is added to the installation paths not via prefix=, but via DESTDIR=. Packages that understand prefix in $makeopt usually understand DESTDIR as well, plus some packages only know DESTDIR. For cross-building packages that don't know DESTDIR one usually has to add 'prefix=$root/$prefix' to $makeinstopt. Cross-toolchain packages can now be built for linux26-headers and glibc26. Various bugfixes and multilib support for basic packages (glibc, ncurses, grub, ...) are also included. With best regards, Stefan Fiedler