From aad85a65d877738b8fa9614876a3d3947e2884aa Mon Sep 17 00:00:00 2001 From: Krejzi Date: Mon, 20 Apr 2015 11:28:26 +0000 Subject: [PATCH] Imported changes from the main book. git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/systemd@10894 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 --- appendices/dependencies.xml | 2 +- chapter01/changelog.xml | 131 ++++++++++++++++++++++++++++++++++++ chapter01/whatsnew.xml | 59 ++++++++-------- chapter02/chapter02.xml | 2 +- chapter02/mounting.xml | 14 ++-- chapter05/gcc-pass1.xml | 5 +- chapter05/libstdc++.xml | 4 +- chapter05/linux-headers.xml | 3 +- chapter05/tcl.xml | 14 ++-- chapter06/acl.xml | 4 +- chapter06/attr.xml | 2 +- chapter06/bison.xml | 11 ++- chapter06/dbus.xml | 1 + chapter06/expat.xml | 2 +- chapter06/flex.xml | 3 +- chapter06/gdbm.xml | 4 +- chapter06/gettext.xml | 4 +- chapter06/glibc.xml | 20 ++++-- chapter06/gmp.xml | 5 +- chapter06/introduction.xml | 25 +++++++ chapter06/kmod.xml | 7 +- chapter06/libcap.xml | 4 ++ chapter06/mpc.xml | 4 +- chapter06/mpfr.xml | 1 + chapter06/ncurses.xml | 61 ++++++++++------- chapter06/readline.xml | 4 +- chapter06/revisedchroot.xml | 16 ++++- chapter06/util-linux.xml | 3 +- chapter06/xz.xml | 45 ++++++++++--- chapter08/kernel.xml | 15 +++-- general.ent | 6 +- packages.ent | 76 ++++++++++----------- prologue/hostreqs.xml | 3 +- 33 files changed, 403 insertions(+), 157 deletions(-) diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml index 8dc0bcc7e..79ff7c0d1 100644 --- a/appendices/dependencies.xml +++ b/appendices/dependencies.xml @@ -546,7 +546,7 @@ &dependencies; - Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, + Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Gperf, Make, and Sed diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 843f8702c..4fe3bbb6a 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -36,6 +36,137 @@ --> + + 2015-04-16 + + + [bdubbs] - Update to linux-4.0. Fixes + #3775. + + + [bdubbs] - Update to tzdata-2015c. Fixes + #3776. + + + [bdubbs] - Update to iproute2-4.0.0. Fixes + #3777. + + + + + + 2015-03-31 + + + [bdubbs] - Adjust discussion of LFS envronment variable to be + before first use. + + + [bdubbs] - Use --with-glibc-version=2.11 in gcc-pass1. + + + [bdubbs] - Update to dejagnu-1.5.3. Fixes + #3773. + + + + + + 2015-03-28 + + + [bdubbs] - Update to linux-3.19.3. Fixes + #3772. + + + [bdubbs] - Update to tzdata2015b. Fixes + #3770. + + + + + + 2015-03-20 + + + [bdubbs] - Update to linux-3.19.2. Fixes + #3768. + + + + + + 2015-03-15 + + + [bdubbs] - Update to tcl-core-8.6.4. Fixes + #3766. + + + [bdubbs] - Update to util-linux-2.26.1. Fixes + #3767. + + + [bdubbs] - Remove non-essential static libraries + from the installation. Added a new section in Chapter 6 + Introduction, suppressed many static libraries in different + packages, and removed the remaining in the Cleaning Up section. + Fixes + #3751. + + + + + + 2015-03-11 + + + [bdubbs] - Update to intltool-0.51.0. Fixes + #3764. + + + + + + 2015-03-08 + + + [bdubbs] - Update to linux-3.19.1. Fixes + #3763. + + + [bdubbs] - Update to patch-2.7.5. Fixes + #3762. + + + [bdubbs] - Change tcl to minimal tcl-core package. Fixes + #3752. + + + + + + 2015-03-07 + + + [bdubbs] - Update to mpc-1.0.3. Fixes + #3753. + + + [bdubbs] - Update to man-pages-3.8.1. Fixes + #3754. + + + [bdubbs] - Update to xz-5.2.1. Fixes + #3757. + + + [bdubbs] - Update to kmod-20. Fixes + #3758. + + + + 2015-03-06 diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index 580f218e4..6a6f2af96 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -24,7 +24,7 @@ + --> @@ -58,14 +58,13 @@ - + - - + - + @@ -146,9 +145,9 @@ - + @@ -158,21 +157,21 @@ - - + - + @@ -201,26 +200,26 @@ Tar &tar-version; --> - - + - + @@ -239,6 +238,10 @@ Added: + + Tcl-core-&tcl-version; + + @@ -261,9 +264,9 @@ Removed: - + + Tcl-8.6.3 + + Prepare Bison for compilation: ./configure --prefix=/usr --docdir=/usr/share/doc/bison-&bison-version; - Compile the package: make diff --git a/chapter06/dbus.xml b/chapter06/dbus.xml index 00579d312..a8c970a52 100644 --- a/chapter06/dbus.xml +++ b/chapter06/dbus.xml @@ -52,6 +52,7 @@ --sysconfdir=/etc \ --localstatedir=/var \ --docdir=/usr/share/doc/dbus-&dbus-version; \ + --disable-static \ --with-console-auth-dir=/run/console diff --git a/chapter06/expat.xml b/chapter06/expat.xml index 5a3bbea81..b813a840e 100644 --- a/chapter06/expat.xml +++ b/chapter06/expat.xml @@ -43,7 +43,7 @@ Prepare Expat for compilation: -./configure --prefix=/usr +./configure --prefix=/usr --disable-static Compile the package: diff --git a/chapter06/flex.xml b/chapter06/flex.xml index 7ed596a94..f508fb0b2 100644 --- a/chapter06/flex.xml +++ b/chapter06/flex.xml @@ -47,7 +47,8 @@ Prepare Flex for compilation: -./configure --prefix=/usr --docdir=/usr/share/doc/flex-&flex-version; +./configure --prefix=/usr \ + --docdir=/usr/share/doc/flex-&flex-version; Compile the package: diff --git a/chapter06/gdbm.xml b/chapter06/gdbm.xml index 6457f1c83..662dc4324 100644 --- a/chapter06/gdbm.xml +++ b/chapter06/gdbm.xml @@ -46,7 +46,9 @@ Prepare GDBM for compilation: -./configure --prefix=/usr --enable-libgdbm-compat +./configure --prefix=/usr \ + --disable-static \ + --enable-libgdbm-compat The meaning of the configure option: diff --git a/chapter06/gettext.xml b/chapter06/gettext.xml index f1a236ae8..7ad8aeb69 100644 --- a/chapter06/gettext.xml +++ b/chapter06/gettext.xml @@ -45,7 +45,9 @@ Prepare Gettext for compilation: -./configure --prefix=/usr --docdir=/usr/share/doc/gettext-&gettext-version; +./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/gettext-&gettext-version; Compile the package: diff --git a/chapter06/glibc.xml b/chapter06/glibc.xml index bd68a6075..4eff24af1 100644 --- a/chapter06/glibc.xml +++ b/chapter06/glibc.xml @@ -248,10 +248,12 @@ localedef -i zh_CN -f GB18030 zh_CN.GB18030 /etc/localtime + + Adding nsswitch.conf + The /etc/nsswitch.conf file needs to be created - because, although Glibc provides defaults when this file is missing or corrupt, - the Glibc defaults do not work well in a networked environment. The time zone - also needs to be configured. + because the Glibc defaults do not work well in a networked environment. + Create a new file /etc/nsswitch.conf by running the following: @@ -274,7 +276,12 @@ rpc: files # End /etc/nsswitch.conf EOF - Install timezone data: + + + + Adding time zone data + + Install and set up the timezone data with the following: tar -xf ../tzdata&tzdata-version;.tar.gz ZONEINFO=/usr/share/zoneinfo @@ -352,9 +359,9 @@ unset ZONEINFO Replace <xxx> with the name of the time zone selected (e.g., Canada/Eastern). - + - + Configuring the Dynamic Loader @@ -397,6 +404,7 @@ include /etc/ld.so.conf.d/*.conf EOF mkdir -pv /etc/ld.so.conf.d + diff --git a/chapter06/gmp.xml b/chapter06/gmp.xml index 6f4c2c7c9..c342d5f59 100644 --- a/chapter06/gmp.xml +++ b/chapter06/gmp.xml @@ -52,8 +52,9 @@ Prepare GMP for compilation: -./configure --prefix=/usr \ - --enable-cxx \ +./configure --prefix=/usr \ + --enable-cxx \ + --disable-static \ --docdir=/usr/share/doc/gmp-&gmp-version; diff --git a/chapter06/introduction.xml b/chapter06/introduction.xml index a3a8b8829..ae0e54c58 100644 --- a/chapter06/introduction.xml +++ b/chapter06/introduction.xml @@ -55,4 +55,29 @@ The SBU values and required disk space includes test suite data for all applicable packages in Chapter 6. + + About libraries + + In general, the LFS editors discourage building and installing static + libraries. The original purpose for most static libraries has been made + obsolete in a modern Linux system. In addition linking a static library + into a program can be detrimental. If an update to the library is needed + to remove a security problem, all programs that use the static library will + need to be relinked to the new library. Since the use of static libraries + is not always obvious, deciding which programs (and the procedures needed to + do the linking) may not even be known. + + In the prcedures in Chapter 6, we remove or disable installation of + most static libraries. In a few cases, especially glibc and gcc, the use + of static libraries remains essential to the general package building + process. Usually this is done by passing a + option to configure. + In other cases, alternate means are needed. + + For a more complete discussion of libraries, see the discussion + + Libraries: Static or shared? in the BLFS book. + + + diff --git a/chapter06/kmod.xml b/chapter06/kmod.xml index 82b2ce9b7..a68e259f6 100644 --- a/chapter06/kmod.xml +++ b/chapter06/kmod.xml @@ -74,10 +74,15 @@ make + This package does not come with a test suite that can be run in the + LFS chroot environment. At a minimum the git program is required and + several tests will not run outside of a git repository. + + Install the package, and create symlinks for compatibility with Module-Init-Tools (the package that previously handled Linux kernel modules): diff --git a/chapter06/libcap.xml b/chapter06/libcap.xml index 1a71b7b28..202a4b3a4 100644 --- a/chapter06/libcap.xml +++ b/chapter06/libcap.xml @@ -43,6 +43,10 @@ Installation of Libcap + Prevent a static library from being installed: + +sed -i '/install.*STALIBNAME/d' libcap/Makefile + Compile the package: make diff --git a/chapter06/mpc.xml b/chapter06/mpc.xml index a8b8818dc..cac9cc7fa 100644 --- a/chapter06/mpc.xml +++ b/chapter06/mpc.xml @@ -44,7 +44,9 @@ Prepare MPC for compilation: -./configure --prefix=/usr --docdir=/usr/share/doc/mpc-&mpc-version; +./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/mpc-&mpc-version; Compile the package and generate the HTML documentation: diff --git a/chapter06/mpfr.xml b/chapter06/mpfr.xml index e4febcc9f..ab702f17a 100644 --- a/chapter06/mpfr.xml +++ b/chapter06/mpfr.xml @@ -49,6 +49,7 @@ Prepare MPFR for compilation: ./configure --prefix=/usr \ + --disable-static \ --enable-thread-safe \ --docdir=/usr/share/doc/mpfr-&mpfr-version; diff --git a/chapter06/ncurses.xml b/chapter06/ncurses.xml index 6761124d4..70aca29fe 100644 --- a/chapter06/ncurses.xml +++ b/chapter06/ncurses.xml @@ -41,15 +41,9 @@ Installation of Ncurses - +sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in Prepare Ncurses for compilation: @@ -57,6 +51,7 @@ --mandir=/usr/share/man \ --with-shared \ --without-debug \ + --without-normal \ --enable-pc-files \ --enable-widec @@ -85,6 +80,14 @@ + + --without-normal + + This switch disables building and installing most static libraries. + + + + Compile the package: @@ -119,11 +122,8 @@ for lib in ncurses form panel menu ; do rm -vf /usr/lib/lib${lib}.so echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so - ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc -done - -ln -sfv libncurses++w.a /usr/lib/libncurses++.a +done Finally, make sure that old applications that look for -lcurses at build time are still @@ -131,9 +131,7 @@ ln -sfv libncurses++w.a /usr/lib/libncurses++.a rm -vf /usr/lib/libcursesw.so echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so -ln -sfv libncurses.so /usr/lib/libcurses.so -ln -sfv libncursesw.a /usr/lib/libcursesw.a -ln -sfv libncurses.a /usr/lib/libcurses.a +ln -sfv libncurses.so /usr/lib/libcurses.so If desired, install the Ncurses documentation: @@ -168,14 +166,31 @@ cp -av lib/lib*.so.5* /usr/lib Installed directories - captoinfo (link to tic), clear, infocmp, infotocap (link to tic), - ncursesw5-config, reset (link to tset), tabs, tic, toe, tput, and tset - libcursesw.{a,so} (symlink and linker script to libncursesw.{a,so}), - libformw.{a,so}, libmenuw.{a,so}, libncurses++w.a, libncursesw.{a,so}, - libpanelw.{a,so}, and their non-wide-character counterparts without "w" - in the library names. - /usr/share/tabset, /usr/share/terminfo, and - /usr/share/doc/ncurses-&ncurses-version; + + captoinfo (link to tic), + clear, + infocmp, + infotocap (link to tic), + ncursesw5-config, + reset (link to tset), + tabs, + tic, + toe, + tput, and + tset + + + libcursesw.so (symlink and linker script to libncursesw.so), + libformw.so, + libmenuw.so, + libncursesw.so, + libpanelw.so, and their non-wide-character counterparts without "w" + in the library names. + + /usr/share/tabset, + /usr/share/terminfo, and + /usr/share/doc/ncurses-&ncurses-version; + diff --git a/chapter06/readline.xml b/chapter06/readline.xml index 1f8c63e56..5ddbdf9df 100644 --- a/chapter06/readline.xml +++ b/chapter06/readline.xml @@ -56,7 +56,9 @@ sed -i '/{OLDSUFF}/c:' support/shlib-install Prepare Readline for compilation: -./configure --prefix=/usr --docdir=/usr/share/doc/readline-&readline-version; +./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/readline-&readline-version; Compile the package: diff --git a/chapter06/revisedchroot.xml b/chapter06/revisedchroot.xml index 8927a9f29..32a86a251 100644 --- a/chapter06/revisedchroot.xml +++ b/chapter06/revisedchroot.xml @@ -35,12 +35,24 @@ instructions for this (see ). -rm -rf /tools - If the virtual kernel file systems have been unmounted, either manually or through a reboot, ensure that the virtual kernel file systems are mounted when reentering the chroot. This process was explained in and . + Finally, thre were several static libraries that were not supressed earlier + in the chapter in order to satisfy the regression tests in several packages. These + libraries are from binutils, bzip2, e2fsprogs, libtool, and zlib. If desired, + remove them now: + +rm /usr/lib/lib{bfd,opcodes}.a +rm /usr/lib/libbz2.a +rm /usr/lib/lib{com_err,e2p,ext2fs,ss}.a +rm /usr/lib/libltdl.a +rm /usr/lib/libz.a + + + diff --git a/chapter06/util-linux.xml b/chapter06/util-linux.xml index 50faa410e..00706794e 100644 --- a/chapter06/util-linux.xml +++ b/chapter06/util-linux.xml @@ -62,7 +62,7 @@ --> Prepare Util-linux for compilation: -./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ +./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ --docdir=/usr/share/doc/util-linux-&util-linux-version; \ --disable-chfn-chsh \ --disable-login \ @@ -71,6 +71,7 @@ --disable-setpriv \ --disable-runuser \ --disable-pylibmount \ + --disable-static \ --without-python The --disable and --without options prevent warnings about diff --git a/chapter06/xz.xml b/chapter06/xz.xml index 77f3c298d..1ecdace87 100644 --- a/chapter06/xz.xml +++ b/chapter06/xz.xml @@ -46,7 +46,10 @@ Prepare Xz for compilation with: -./configure --prefix=/usr --docdir=/usr/share/doc/xz-&xz-version; + +./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/xz-&xz-version; Compile the package: @@ -75,15 +78,37 @@ ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.soInstalled directories - lzcat (link to xz), lzcmp (link to xzdiff), lzdiff (link to - xzdiff), lzegrep (link to xzgrep), lzfgrep (link to xzgrep), - lzgrep (link to xzgrep), lzless (link to xzless), lzma (link to xz), - lzmadec, lzmainfo, lzmore (link to xzmore), - unlzma (link to xz), unxz, (link to xz), xz, xzcat (link to xz), - xzcmp (link to xzdiff), xzdec, xzdiff, xzegrep (link to xzgrep), - xzfgrep (link to xzgrep), xzgrep, xzless, and xzmore - liblzma.{a,so} - /usr/include/lzma and /usr/share/doc/xz-&xz-version; + + lzcat (link to xz), + lzcmp (link to xzdiff), + lzdiff (link to xzdiff), + lzegrep (link to xzgrep), + lzfgrep (link to xzgrep), + lzgrep (link to xzgrep), + lzless (link to xzless), + lzma (link to xz), + lzmadec, + lzmainfo, + lzmore (link to xzmore), + unlzma (link to xz), + unxz (link to xz), + xz, + xzcat (link to xz), + xzcmp (link to xzdiff), + xzdec, + xzdiff, + xzegrep (link to xzgrep), + xzfgrep (link to xzgrep), + xzgrep, + xzless, and + xzmore + + liblzma.so + + + /usr/include/lzma and + /usr/share/doc/xz-&xz-version; + diff --git a/chapter08/kernel.xml b/chapter08/kernel.xml index 13932fcf8..39626d001 100644 --- a/chapter08/kernel.xml +++ b/chapter08/kernel.xml @@ -216,10 +216,17 @@ cp -r Documentation/* /usr/share/doc/linux-&linux-version; on the machine. That person would then have write access to the kernel source. - If the kernel source tree is going to be retained, run - chown -R 0:0 on the linux-&linux-version; directory to ensure - all files are owned by user root. + + In many cases, the configuration of the kernel will need to be + updated for packages that will be installed later in BLFS. Unlike + other packages, it is not necessary to remove the kernel source tree + after the newly built kernel is installed. + + If the kernel source tree is going to be retained, run + chown -R 0:0 on the linux-&linux-version; directory to ensure + all files are owned by user root. + Some kernel documentation recommends creating a symlink from diff --git a/general.ent b/general.ent index d12ba058b..ab7b4197f 100644 --- a/general.ent +++ b/general.ent @@ -1,8 +1,8 @@ - + - + - + diff --git a/packages.ent b/packages.ent index da588b24a..9b911fac8 100644 --- a/packages.ent +++ b/packages.ent @@ -113,10 +113,10 @@ - - + + - + @@ -309,18 +309,18 @@ - - + + - + - - + + - + @@ -333,10 +333,10 @@ - - + + - + @@ -373,14 +373,14 @@ - - + + - + - +