diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml index 9d92de448..8c3c29ad3 100644 --- a/appendices/dependencies.xml +++ b/appendices/dependencies.xml @@ -1980,6 +1980,44 @@ + + Lz4 + + + &dependencies; + + Bash, Binutils, Coreutils, GCC, Glibc, and Make + + + + + &runtime; + + Glibc + + + + + &testsuites; + + Python + + + + + &before; + + Zstd and Systemd + + + + + &external; + + None + + + M4 @@ -2111,7 +2149,7 @@ &dependencies; - Bash, Coreutils, and Make + Bash, Coreutils, Make, and Sed @@ -2876,7 +2914,7 @@ &dependencies; Acl, Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson, + GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Lz4, Meson, OpenSSL, Pkgconf, Sed, Util-linux, and Zstd @@ -2942,7 +2980,6 @@ Linux-PAM, lxml, - LZ4, make-ca, p11-kit, PCRE2, @@ -3426,7 +3463,7 @@ &dependencies; - Binutils, Coreutils, GCC, Glibc, Gzip, Make, Xz, and Zlib + Binutils, Coreutils, GCC, Glibc, Gzip, Lz4, Make, Xz, and Zlib @@ -3455,7 +3492,7 @@ &external; - LZ4 + None diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 5a29d104f..58c013bdf 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -40,6 +40,178 @@ appropriate for the entry or if needed the entire day's listitem. --> + + 2024-03-31 + + + [bdubbs] - Update to iana-etc-20240318. Addresses + #5006. + + + [bdubbs] - Update to zstd-1.5.6. Fixes + #5468. + + + [bdubbs] - Update to util-linux-2.40. Fixes + #5430. + + + [bdubbs] - Update to shadow-4.15.1. Fixes + #5465. + + + [bdubbs] - Update to pkgconf-2.2.0. Fixes + #5469. + + + [bdubbs] - Update to linux-6.8.2. Fixes + #5467. + + + [bdubbs] - Update to coreutils-9.5. Fixes + #5470. + + + + + + 2024-03-29 + + + [bdubbs] - Revert to xz-5.4.6 due to upstream + compromise. + + + + + + 2024-03-25 + + + [timtas] - Update to sysvinit-3.09. Fixes + #5466. + + + + + + 2024-03-19 + + + [renodr] - Update to iproute2-6.8.0. Fixes + #5458. + + + [renodr] - Update to man-pages-6.7. Fixes + #5464. + + + [renodr] - Update to Linux-6.8.1. Fixes + #5453. + + + [renodr] - Added LZ4 to the book. Fixes + #5463. + + + + + + 2024-03-15 + + + [bdubbs] - Update to wheel-0.43.0. Fixes + #5459. + + + [bdubbs] - Update to setuptools-69.2.0 (Python module). Fixes + #5462. + + + [bdubbs] - Update to meson-1.4.0. Fixes + #5460. + + + [bdubbs] - Update to expat-2.6.2 (Security fix). Fixes + #5461. + + + [bdubbs] - Update to iana-etc-20240305. Addresses + #5006. + + + [bdubbs] - Update to vim-9.1.0161. Addresses + #4500. + + + [bdubbs] - Update to xz-5.6.1. Fixes + #5457. + + + [bdubbs] - Update to shadow-4.15.0. Fixes + #5456. + + + [bdubbs] - Update to psmisc-23.7. Fixes + #5454. + + + [bdubbs] - Update to kmod-32. Fixes + #5455. + + + [bdubbs] - Update to elfutils-0.191. Fixes + #5451. + + + + + + 2024-03-02 + + + [bdubbs] - Update to iana-etc-20240222. Addresses + #5006. + + + [bdubbs] - Update to vim-9.1.0145. Addresses + #4500. + + + [bdubbs] - Update to xz-5.6.0. Fixes + #5447. + + + [bdubbs] - Update to tcl-8.6.14. Fixes + #5448. + + + [bdubbs] - Update to shadow-4.14.6. Fixes + #5450. + + + [bdubbs] - Update to setuptools-69.1.1. Fixes + #5446. + + + [bdubbs] - Update to linux-6.7.7. Fixes + #5444. + + + [bdubbs] - Update to libffi-3.4.6. Fixes + #5443. + + + [bdubbs] - Update to gettext-0.22.5. Fixes + #5445. + + + [bdubbs] - Update to expat-2.6.1. Fixes + #5449. + + + + 2024-03-01 diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index b98cd66a3..f856866bd 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -26,27 +26,27 @@ - + + + - + + + @@ -62,9 +62,9 @@ - + @@ -89,9 +89,9 @@ - + @@ -101,9 +101,9 @@ Gettext-&gettext-version; - + @@ -116,33 +116,33 @@ - + + Iana-Etc-&iana-etc-version; - + IPRoute2-&iproute2-version; - + + Kmod-&kmod-version; - + @@ -155,9 +155,9 @@ Libelf from Elfutils-&elfutils-version; - + @@ -167,64 +167,67 @@ Linux-&linux-version; + - + Man-pages-&man-pages-version; - + Meson-&meson-version; - + + - + - + Pkgconf-&pkgconf-version; - - Procps-ng-&procps-ng-version; - - Python-&python-version; + Psmisc-&psmisc-version; + - + Setuptools-&setuptools-version; @@ -236,21 +239,21 @@ - + - - + + + @@ -263,18 +266,18 @@ Wheel-&wheel-version; - + Xz-&xz-version; - - Zlib-&zlib-version; - + + Zstd-&zstd-version; + - + + Lz4-&lz4-version; + diff --git a/chapter03/packages.xml b/chapter03/packages.xml index 1f5b55427..dbbb43eae 100644 --- a/chapter03/packages.xml +++ b/chapter03/packages.xml @@ -489,6 +489,15 @@ + + Lz4 (&lz4-version;) - &lz4-size;: + + Home page: + Download: + MD5 sum: &lz4-md5; + + + M4 (&m4-version;) - &m4-size;: @@ -813,8 +822,7 @@ The version of vim changes daily. To get the latest version, go to - - https://github.com/vim/vim/tags. + . diff --git a/chapter07/util-linux.xml b/chapter07/util-linux.xml index 488635b7a..1ac069b8c 100644 --- a/chapter07/util-linux.xml +++ b/chapter07/util-linux.xml @@ -51,17 +51,18 @@ Prepare Util-linux for compilation: -./configure --libdir=/usr/lib \ - --runstatedir=/run \ - --disable-chfn-chsh \ - --disable-login \ - --disable-nologin \ - --disable-su \ - --disable-setpriv \ - --disable-runuser \ - --disable-pylibmount \ - --disable-static \ - --without-python \ + ./configure --libdir=/usr/lib \ + --runstatedir=/run \ + --disable-chfn-chsh \ + --disable-login \ + --disable-nologin \ + --disable-su \ + --disable-setpriv \ + --disable-runuser \ + --disable-pylibmount \ + --disable-static \ + --disable-liblastlog2 \ + --without-python \ ADJTIME_PATH=/var/lib/hwclock/adjtime \ --docdir=/usr/share/doc/util-linux-&util-linux-version; diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml index c3ded2719..43bb6404a 100644 --- a/chapter08/chapter08.xml +++ b/chapter08/chapter08.xml @@ -19,6 +19,7 @@ + diff --git a/chapter08/coreutils.xml b/chapter08/coreutils.xml index 68ff3b356..1f935809b 100644 --- a/chapter08/coreutils.xml +++ b/chapter08/coreutils.xml @@ -53,13 +53,6 @@ those bugs are reproducible without this patch. - - Fix a security vulnerability in the split - utility: - -sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \ - -i src/split.c - Now prepare Coreutils for compilation: autoreconf -fiv @@ -140,6 +133,12 @@ FORCE_UNSAFE_CONFIGURE=1 ./configure \ groupdel dummy + + Two tests, tests/cp/preserve-mode.sh and + tests/mv/acl.sh, are known to + fail in the chroot environment, but pass in a complete system. + + Install the package: make install diff --git a/chapter08/kmod.xml b/chapter08/kmod.xml index 9a16da3f0..6c875caed 100644 --- a/chapter08/kmod.xml +++ b/chapter08/kmod.xml @@ -84,17 +84,19 @@ (not the sanitized kernel headers installed earlier), which are beyond the scope of LFS. - Install the package and create symlinks for + Install the package and recreate some symlinks for compatibility with Module-Init-Tools (the package that previously handled - Linux kernel modules): + Linux kernel modules). The building system will create all these + symlinks in /usr/bin, but we + only want lsmod there and all other symlinks in + /usr/sbin instead: make install for target in depmod insmod modinfo modprobe rmmod; do ln -sfv ../bin/kmod /usr/sbin/$target -done - -ln -sfv kmod /usr/bin/lsmod + rm -fv /usr/bin/$target +done diff --git a/chapter08/lz4.xml b/chapter08/lz4.xml new file mode 100644 index 000000000..993d213e2 --- /dev/null +++ b/chapter08/lz4.xml @@ -0,0 +1,141 @@ + + + %general-entities; +]> + + + + + + Lz4 + &lz4-version; +
&lz4-url;
+
+ + Lz4-&lz4-version; + + + Lz4 + + + + + + <para>Lz4 is a lossless compression algorithm, providing compression speed + greater than 500 MB/s per core. It features an extremely fast decoder, with + speed in multiple GB/s per core. Lz4 can work with Zstandard to allow both + algorithms to compress data faster.</para> + + <segmentedlist> + <segtitle>&buildtime;</segtitle> + <segtitle>&diskspace;</segtitle> + + <seglistitem> + <seg>&lz4-fin-sbu;</seg> + <seg>&lz4-fin-du;</seg> + </seglistitem> + </segmentedlist> + + </sect2> + + <sect2 role="installation"> + <title>Installation of Lz4 + + Compile the package: + +make BUILD_STATIC=no + + To test the results, issue: + + + +make -j1 check + + Install the package: + +make BUILD_STATIC=no PREFIX=/usr install + + + + + Contents of Lz4 + + + Installed programs + Installed library + + + lz4, + lz4c (link to lz4), + lz4cat (link to lz4), and + unlz4 (link to lz4) + + + liblz4.so + + + + + Short Descriptions + + + + + lz4 + + Compresses or decompresses files using the LZ4 format + + lz4 + + + + + + lz4c + + Compresses files using the LZ4 format + + lz4c + + + + + + lz4cat + + Lists the contents of a file compressed using the LZ4 format + + lz4cat + + + + + + unlz4 + + Decompresses files using the LZ4 format + + unlz4 + + + + + + liblz4 + + The library implementing lossless data + compression, using the LZ4 algorithm + + liblz4 + + + + + + + + +
diff --git a/chapter08/python.xml b/chapter08/python.xml index 7ac618c09..0f22ab2a9 100644 --- a/chapter08/python.xml +++ b/chapter08/python.xml @@ -78,11 +78,17 @@ make - Running the tests at this point is not recommended. The - tests are known to hang indefinitely in the partial LFS environment. - If desired, the tests can be rerun at the end of this chapter, or - when Python 3 is reinstalled in BLFS. To run the tests anyway, - issue make test. + Some tests are known to occasionally hang indefinitely. So to test the + results, run the test suite but set a 2-minute time limit for each + test case: + +make test TESTOPTS="--timeout 120" + + For a relatively slow system you may need to increase the time + limit and 1 SBU (measured when building Binutils pass 1 with one CPU + core) should be enough. Some tests are flaky, so the test suite will + automatically re-run failed tests. If a test failed but then passed + when re-run, it should be considered as passed. Install the package: diff --git a/chapter08/shadow.xml b/chapter08/shadow.xml index 89678b3f4..315e3cc5e 100644 --- a/chapter08/shadow.xml +++ b/chapter08/shadow.xml @@ -41,6 +41,15 @@ Installation of Shadow + + + If you've installed Linux-PAM, you should follow + the BLFS shadow + page instead of this page to build (or, rebuild or upgrade) + shadow. + + + If you would like to enforce the use of strong passwords, refer to for installing diff --git a/chapter08/tcl.xml b/chapter08/tcl.xml index 8a7884804..fd920e2c9 100644 --- a/chapter08/tcl.xml +++ b/chapter08/tcl.xml @@ -3,8 +3,8 @@ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ %general-entities; - - + + ]> diff --git a/chapter08/util-linux.xml b/chapter08/util-linux.xml index ff24c6b85..763840a98 100644 --- a/chapter08/util-linux.xml +++ b/chapter08/util-linux.xml @@ -42,43 +42,46 @@ Installation of Util-linux + Prepare Util-linux for compilation: -./configure --bindir=/usr/bin \ - --libdir=/usr/lib \ - --runstatedir=/run \ - --sbindir=/usr/sbin \ - --disable-chfn-chsh \ - --disable-login \ - --disable-nologin \ - --disable-su \ - --disable-setpriv \ - --disable-runuser \ - --disable-pylibmount \ - --disable-static \ - --without-python \ - --without-systemd \ + ./configure --bindir=/usr/bin \ + --libdir=/usr/lib \ + --runstatedir=/run \ + --sbindir=/usr/sbin \ + --disable-chfn-chsh \ + --disable-login \ + --disable-nologin \ + --disable-su \ + --disable-setpriv \ + --disable-runuser \ + --disable-pylibmount \ + --disable-liblastlog2 \ + --disable-static \ + --without-python \ + --without-systemd \ --without-systemdsystemunitdir \ ADJTIME_PATH=/var/lib/hwclock/adjtime \ --docdir=/usr/share/doc/util-linux-&util-linux-version; -./configure --bindir=/usr/bin \ - --libdir=/usr/lib \ - --runstatedir=/run \ - --sbindir=/usr/sbin \ - --disable-chfn-chsh \ - --disable-login \ - --disable-nologin \ - --disable-su \ - --disable-setpriv \ - --disable-runuser \ - --disable-pylibmount \ - --disable-static \ - --without-python \ + ./configure --bindir=/usr/bin \ + --libdir=/usr/lib \ + --runstatedir=/run \ + --sbindir=/usr/sbin \ + --disable-chfn-chsh \ + --disable-login \ + --disable-nologin \ + --disable-su \ + --disable-setpriv \ + --disable-runuser \ + --disable-pylibmount \ + --disable-liblastlog2 \ + --disable-static \ + --without-python \ ADJTIME_PATH=/var/lib/hwclock/adjtime \ --docdir=/usr/share/doc/util-linux-&util-linux-version; @@ -106,14 +109,16 @@ chown -R tester . su tester -c "make -k check" - The hardlink tests will fail if the host's kernel - does not have the option - enabled or does not have any options providing a SHA256 implementation - (for example, , or - if the CPU supports - Supplemental SSE3) enabled. In addition, - two sub-tests from misc: mbsencode and one sub-test from script: replay are - known to fail. + + The hardlink tests will fail if the host's kernel + does not have the option + enabled or does not have any options providing a SHA256 implementation + (for example, , or + if the CPU supports + Supplemental SSE3) enabled. In addition, the lsfd: inotify test will + fail if the kernel option is not + enabled. + Two tests named fadvise/drop and diff --git a/chapter08/vim.xml b/chapter08/vim.xml index 88322132e..2ed5cf238 100644 --- a/chapter08/vim.xml +++ b/chapter08/vim.xml @@ -76,7 +76,7 @@ The test suite outputs a lot of binary data to the screen. This can cause issues with the settings of the current terminal (especially while - we are overriding the TERM variable to satisify some + we are overriding the TERM variable to satisfy some assumptions of the test suite). The problem can be avoided by redirecting the output to a log file as shown above. A successful test will result in the words ALL diff --git a/chapter10/kernel/kernel.version b/chapter10/kernel/kernel.version index 06a765991..166d79d6d 100644 --- a/chapter10/kernel/kernel.version +++ b/chapter10/kernel/kernel.version @@ -1 +1 @@ -6.7.1 +6.8.2 diff --git a/chapter10/kernel/systemd.toml b/chapter10/kernel/systemd.toml index dae4a4049..b930e01a6 100644 --- a/chapter10/kernel/systemd.toml +++ b/chapter10/kernel/systemd.toml @@ -14,7 +14,6 @@ UEVENT_HELPER=' ' DEVTMPFS='*' DEVTMPFS_MOUNT='*' DRM=' *M' -AUDIT=' ' NET='*' INET='*' IPV6='*' diff --git a/chapter10/kernel/systemd.xml b/chapter10/kernel/systemd.xml index 72298e56b..4b85742a8 100644 --- a/chapter10/kernel/systemd.xml +++ b/chapter10/kernel/systemd.xml @@ -5,7 +5,6 @@ DO NOT EDIT! --> General setup ---> [ ] Compile the kernel with warnings as errors [WERROR] - [ ] Auditing support [AUDIT] CPU/Task time and stats accounting ---> [*] Pressure stall information tracking [PSI] [ ] Require boot parameter to enable pressure stall information tracking diff --git a/lfs-latest-git.php b/lfs-latest-git.php index c2414789a..95abb7c28 100644 --- a/lfs-latest-git.php +++ b/lfs-latest-git.php @@ -15,7 +15,7 @@ $regex = array(); $regex[ 'intltool' ] = "/^.*Latest version is (\d[\d\.]+\d).*$/"; $regex[ 'less' ] = "/^.*current released version is less-(\d+).*$/"; $regex[ 'mpfr' ] = "/^mpfr-([\d\.]+)\.tar.*$/"; -$regex[ 'Python' ] = "/^.*Latest Python 3.*Python (3[\d\.]+\d).*$/"; +//$regex[ 'Python' ] = "/^.*Latest Python 3.*Python (3[\d\.]+\d).*$/"; //$regex[ 'sysvinit' ] = "/^.*sysvinit-([\d\.]+)dsf\.tar.*$/"; $regex[ 'tzdata' ] = "/^.*tzdata([\d]+[a-z]).*$/"; $regex[ 'xz' ] = "/^.*xz-([\d\.]*\d).*$/"; @@ -77,6 +77,7 @@ function http_get_file( $url ) } if ( preg_match( "/sourceforge/", $url ) || + preg_match( "/python/", $url ) || preg_match( "/psmisc/", $url ) ) { exec( "lynx -dump $url 2>/dev/null", $lines ); @@ -134,6 +135,7 @@ if ( $package == "iana-etc" ) $dirpath = github("Mic92/iana-etc"); if ( $package == "intltool" ) $dirpath = "https://launchpad.net/intltool/trunk"; if ( $package == "libffi" ) $dirpath = github("libffi/libffi"); if ( $package == "libxcrypt" ) $dirpath = github("besser82/libxcrypt"); +if ( $package == "lz" ) $dirpath = github("lz4/lz4"); if ( $package == "meson" ) $dirpath = github("mesonbuild/meson"); if ( $package == "mpc" ) $dirpath = "https://ftp.gnu.org/gnu/mpc"; if ( $package == "mpfr" ) $dirpath = "https://mpfr.loria.fr/mpfr-current"; @@ -160,53 +162,6 @@ if ( $package == "zstd" ) $dirpath = github("facebook/zstd"); if ( preg_match( "/^ftp/", $dirpath ) ) { echo "ftp should not occur\n"; - /* - $dirpath = substr( $dirpath, 6 ); // Remove ftp:// - $dirpath = rtrim ( $dirpath, "/" ); // Trim any trailing slash - $position = strpos( $dirpath, "/" ); // Divide at first slash - $server = substr( $dirpath, 0, $position ); - $path = substr( $dirpath, $position ); - - $conn = ftp_connect( $server ); - ftp_login( $conn, "anonymous", "" ); - - // See if we need special handling - if ( isset( $exceptions[ $package ] ) ) - { - $specials = explode( ":", $exceptions[ $package ] ); - - foreach ( $specials as $i ) - { - list( $op, $regexp ) = explode( "=", $i ); - - switch ($op) - { - case "UPDIR": - // Remove last dir from $path - $position = strrpos( $path, "/" ); - $path = substr( $path, 0, $position ); - - // Get dir listing - $lines = ftp_rawlist ($conn, $path); - $max = find_max( $lines, $regexp, $regexp ); - break; - - case "DOWNDIR": - // Append found directory - $path .= "/$max"; - break; - - default: - echo "Error in specials array for $package\n"; - return -5; - break; - } - } - } - - $lines = ftp_rawlist ($conn, $path); - ftp_close( $conn ); -*/ } else // http(s) { @@ -303,7 +258,7 @@ if ( $package == "zstd" ) $dirpath = github("facebook/zstd"); return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" ); if ( $package == "psmisc" ) - return find_max( $lines, "/v\d/", "/^.*v([\d\.]+).tar.*$/" ); + return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" ); if ( $package == "grub" ) return find_max( $lines, "/grub/", "/^.*grub-([\d\.]+).tar.xz.*$/" ); @@ -311,9 +266,15 @@ if ( $package == "zstd" ) $dirpath = github("facebook/zstd"); if ( $package == "Jinja" ) return find_max( $lines, "/Jinja/", "/^.*Jinja2 ([\d\.]+).*$/" ); + if ( $package == "lz" ) + return find_max( $lines, "/name.:/", '/^.*LZ4 v([\d\.]+)".*$/' ); + if ( $package == "openssl" ) return find_max( $lines, "/openssl/", "/^.*openssl-([\d\.p]*\d.?).tar.*$/" ); + if ( $package == "Python" ) + return find_max( $lines, "/Python 3/", "/^.*Python (3[\d\.]*\d) .*$/" ); + if ( $package == "vim" ) return find_max( $lines, "/v\d\./", "/^.*v([\d\.]+).*$/" ); @@ -332,7 +293,6 @@ function get_current() // Fetech from git and get wget-list $current = array(); - #$lfssvn = "svn://svn.linuxfromscratch.org/LFS/trunk"; $lfsgit = "https://git.linuxfromscratch.org/lfs.git"; $tmpdir = exec( "mktemp -d /tmp/lfscheck.XXXXXX" ); @@ -364,7 +324,6 @@ function get_current() $file = rtrim( $file ); $pkg_pattern = "/(\D*).*/"; - //$pattern = "/\D*(\d.*\d)\D*/"; $pattern = "/\D*(\d.*\d)\D*/"; if ( preg_match( "/e2fsprogs/", $file ) ) diff --git a/packages.ent b/packages.ent index 28a3140ce..69ff0b3e5 100644 --- a/packages.ent +++ b/packages.ent @@ -104,10 +104,10 @@ - - + + - + @@ -148,18 +148,18 @@ - - + + - + - - + + - + @@ -245,10 +245,10 @@ - - + + - + @@ -317,10 +317,10 @@ - + - + @@ -341,10 +341,10 @@ - - + + - + @@ -365,10 +365,10 @@ - - + + - + @@ -397,10 +397,10 @@ - - + + - + @@ -430,13 +430,13 @@ - - + + - + - + - + + + - + - + - + - + - + - + @@ -766,8 +774,8 @@ - - + + @@ -787,10 +795,10 @@ - - + + - + diff --git a/part3intro/generalinstructions.xml b/part3intro/generalinstructions.xml index 624771c2d..37e07f862 100644 --- a/part3intro/generalinstructions.xml +++ b/part3intro/generalinstructions.xml @@ -114,7 +114,7 @@ Do not use any method except the tar command to extract the source code. Notably, using the cp -R command to copy the - source code tree somewhere else can destroy links and + source code tree somewhere else can destroy timestamps in the source tree, and cause the build to fail. diff --git a/patches.ent b/patches.ent index 17966e30c..fabb2f7ad 100644 --- a/patches.ent +++ b/patches.ent @@ -11,8 +11,8 @@ - - + + diff --git a/stylesheets/lfs-xsl/nochunks.xsl b/stylesheets/lfs-xsl/nochunks.xsl index 896449d7c..d5afb4473 100644 --- a/stylesheets/lfs-xsl/nochunks.xsl +++ b/stylesheets/lfs-xsl/nochunks.xsl @@ -123,7 +123,7 @@ a:active { color: #6b77b1 ! important;} padding: 0 1em; } -.book h1, .book .authorgroup, .book .copyright, .book .legalnotice .revhistory { +/*.book h1,*/ .book .authorgroup, .book .copyright, .book .legalnotice .revhistory { background: #f5f6f7; margin: 0px auto; padding: .1em 1em; @@ -188,6 +188,10 @@ h1 { .book h1 { margin: 0; padding: 0.4em; + background: #f5f6f7; + border-top: .2em solid #dbddec; + border-bottom: .2em solid #dbddec; + text-align: center; } h1.title sup { @@ -198,7 +202,7 @@ h2 { font-size: 144%; } -.preface h2, .part h1, .chapter h2, .appendix h2, .index h1, .sect1 h2 { +.preface h2, .part h1, .chapter h2, .appendix h2, .index h1, .sect1 h2, .part h2 { background: #f5f6f7; border-top: .2em solid #dbddec; border-bottom: .2em solid #dbddec;