From bc12dcb0f0143b84e4078f53cbe7aff0cca844e1 Mon Sep 17 00:00:00 2001 From: Thomas Trepl Date: Mon, 24 Feb 2020 22:15:33 +0000 Subject: [PATCH] Merge upstream; Upgrade isl+firmware; add description to glibc git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/multilib@11759 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 --- chapter01/changelog.xml | 24 +++++++++++- chapter05/binutils-pass2.xml | 14 +++++-- chapter05/gcc-pass1.xml | 2 + chapter05/gcc-pass2.xml | 2 + chapter05/glibc.xml | 73 +++++++++++++++++++++++++++++++----- chapter05/libstdc++.xml | 4 +- chapter06/createfiles.xml | 4 +- chapter06/gcc.xml | 2 + packages.ent | 16 ++++---- 9 files changed, 115 insertions(+), 26 deletions(-) diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index da795a9e6..2dcb0ae66 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -44,6 +44,28 @@ or as appropriate for the entry or if needed the entire day's listitem. --> + + 2020-02-24 + + + [thomas] - Add description to glibc configuration in Chapter 5. + Thanks to Kevin Buckley. + + + + + + 2020-02-21 + + + [thomas] - Update to isl-0.22.1. + + + [thomas] - Upgrade to linux-firmware-20200219 + + + + 2020-02-16 @@ -344,7 +366,7 @@ - + 2019-12-02 diff --git a/chapter05/binutils-pass2.xml b/chapter05/binutils-pass2.xml index 8ff9d3574..86204df45 100644 --- a/chapter05/binutils-pass2.xml +++ b/chapter05/binutils-pass2.xml @@ -114,10 +114,16 @@ RANLIB=$LFS_TGT-ranlib \ --with-sysroot - The sysroot feature enables the linker to find shared objects - which are required by other shared objects explicitly included on the - linker's command line. Without this, some packages may not build - successfully on some hosts. + This defines a default (non-existent) sysroot directory + /tools/$LFS_TGT/sys-root. + It is useful when looking for shared objects which are required by + other shared objects explicitly included on the linker's command + line. Those objects are searched into the directories listed in + <sysroot>/etc/ld.so.conf, and failing + that, into the linker search path, which is right. If this switch + is not given, /etc/ld.so.conf on the host + is used, that is, programs may be linked to libraries on + the host, which we want to avoid. diff --git a/chapter05/gcc-pass1.xml b/chapter05/gcc-pass1.xml index 04427880f..12eb0ff51 100644 --- a/chapter05/gcc-pass1.xml +++ b/chapter05/gcc-pass1.xml @@ -140,10 +140,12 @@ esac + The GCC documentation recommends building GCC in a dedicated build directory: diff --git a/chapter05/gcc-pass2.xml b/chapter05/gcc-pass2.xml index 2ad8fe4e3..8947bc991 100644 --- a/chapter05/gcc-pass2.xml +++ b/chapter05/gcc-pass2.xml @@ -122,10 +122,12 @@ tar -xf ../isl-&isl-version;.tar.xz mv -v isl-&isl-version; isl + Now fix a problem introduced by Glibc-2.31: diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml index ed19f960d..7cf862545 100644 --- a/chapter05/glibc.xml +++ b/chapter05/glibc.xml @@ -216,15 +216,42 @@ RANLIB="${LFS_TGT}-ranlib" \ --build=$(../scripts/config.guess) \ --host=${LFS_TGT32} \ --enable-kernel=&min-kernel; \ + --with-headers=/tools/include \ + --with-binutils=/tools/bin \ --enable-multi-arch \ --libdir=/tools/lib32 \ - --libexecdir=/tools/lib32 \ - --with-headers=/tools/include \ - --with-binutils=/tools/bin + --libexecdir=/tools/lib32 + + The meaning of the extra configure options: + + + --enable-multi-arch + + Enables glibc for multiarch environments. + + + + + --libdir=/tools/lib32, --libexecdir=/tools/lib32 + + Overrides location for installing 32-bit files. + + + + + --with-binutils=/tools/bin + + This tells Glibc to compile itself against the utilities + found within our "tools" heirachy, because otherwise... + + + + + Now compile the 32-bit version of glibc: make @@ -234,8 +261,7 @@ install -vdm755 /tools/lib32 cp -Rv DESTDIR/tools/lib32/* /tools/lib32 install -vm644 DESTDIR/tools/include/gnu/{lib-names,stubs}-32.h \ /tools/include/gnu/ -ln -svf /tools/lib32/ld-linux.so.2 /tools/lib/ -cd .. +ln -svf /tools/lib32/ld-linux.so.2 /tools/lib/ @@ -243,8 +269,8 @@ cd .. Installation of Glibc x32-bit Create a build directory for redoing glibc for x32-bit: -mkdir build32x -cd build32x +mkdir ../build32x +cd ../build32x Rebuild glibc for x32-bit: echo slibdir=/tools/libx32 > configparms @@ -257,15 +283,42 @@ RANLIB="${LFS_TGT}-ranlib" \ --build=$(../scripts/config.guess) \ --host=${LFS_TGTX32} \ --enable-kernel=&min-kernel; \ + --with-headers=/tools/include \ + --with-binutils=/tools/bin \ --enable-multi-arch \ --libdir=/tools/libx32 \ - --libexecdir=/tools/libx32 \ - --with-headers=/tools/include \ - --with-binutils=/tools/bin + --libexecdir=/tools/libx32 + + The meaning of the extra configure options: + + + --enable-multi-arch + + Enables glibc for multiarch environments. + + + + + --libdir=/tools/libx32, --libexecdir=/tools/libx32 + + Overrides location for installing x32-bit files. + + + + + --with-binutils=/tools/bin + + This tells Glibc to compile itself against the utilities + found within our "tools" heirachy, because otherwise... + + + + + Now compile the x32-bit version of glibc: make diff --git a/chapter05/libstdc++.xml b/chapter05/libstdc++.xml index 6c3b3d27b..42a304bfe 100644 --- a/chapter05/libstdc++.xml +++ b/chapter05/libstdc++.xml @@ -82,8 +82,8 @@ cd build --disable-libstdcxx-threads - Since we have not yet built the C threads library, the C++ - one cannot be built either. + Since gcc-pass1 is built without thread support, the C++ + thread library cannot be built either. diff --git a/chapter06/createfiles.xml b/chapter06/createfiles.xml index 5c3705095..42d1ec1fe 100644 --- a/chapter06/createfiles.xml +++ b/chapter06/createfiles.xml @@ -46,9 +46,9 @@ ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib ln -sv bash /bin/sh - 32-bit builds also require these links: + 32-bit builds also require these links: -ln -sv /tools/lib32/libgcc_s.so{,.1} /usr/lib32 +ln -sv /tools/lib32/libgcc_s.so{,.1} /usr/lib32 ln -sv /tools/lib32/libstdc++.{a,so{,.6}} /usr/lib32 x32-bit builds also require these links: diff --git a/chapter06/gcc.xml b/chapter06/gcc.xml index fb3650471..a5becfd75 100644 --- a/chapter06/gcc.xml +++ b/chapter06/gcc.xml @@ -64,10 +64,12 @@ esac rm -f /usr/lib/gcc + As in gcc-pass2, fix a problem introduced by Glibc-2.31: diff --git a/packages.ent b/packages.ent index a4cb0ec0b..2dc0f4de9 100644 --- a/packages.ent +++ b/packages.ent @@ -357,10 +357,10 @@ - + - + @@ -449,13 +449,15 @@ - - + + - + - - + + + +