Browse Source

Applied Alexander Patrakov's patch which adds UTF-8 capability to the
development branch of the LFS Book.


git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7235 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

Archaic 19 years ago
parent
commit
5536f7440f

+ 11 - 2
chapter01/changelog.xml

@@ -44,7 +44,7 @@ First a summary, then a detailed log.</para>
 <listitem><para>Gettext &gettext-version;</para></listitem>
 <listitem><para>Gettext &gettext-version;</para></listitem>
 <listitem><para>Glibc &glibc-version;</para></listitem>
 <listitem><para>Glibc &glibc-version;</para></listitem>
 <!-- <listitem><para>Grep &grep-version;</para></listitem> -->
 <!-- <listitem><para>Grep &grep-version;</para></listitem> -->
-<listitem><para>Groff &groff-version;</para></listitem>
+<!-- <listitem><para>Groff &groff-version;</para></listitem> -->
 <listitem><para>GRUB &grub-version;</para></listitem>
 <listitem><para>GRUB &grub-version;</para></listitem>
 <!-- <listitem><para>Gzip &gzip-version;</para></listitem> -->
 <!-- <listitem><para>Gzip &gzip-version;</para></listitem> -->
 <!-- <listitem><para>Hotplug &hotplug-version;</para></listitem> -->
 <!-- <listitem><para>Hotplug &hotplug-version;</para></listitem> -->
@@ -59,7 +59,7 @@ First a summary, then a detailed log.</para>
 <listitem><para>Linux-Libc-Headers &linux-libc-headers-version;</para></listitem>
 <listitem><para>Linux-Libc-Headers &linux-libc-headers-version;</para></listitem>
 <listitem><para>M4 &m4-version;</para></listitem>
 <listitem><para>M4 &m4-version;</para></listitem>
 <!-- <listitem><para>Make &make-version;</para></listitem> -->
 <!-- <listitem><para>Make &make-version;</para></listitem> -->
-<listitem><para>Man &man-version;</para></listitem>
+<listitem><para>Man-DB &man-db-version;</para></listitem>
 <listitem><para>Man-pages &man-pages-version;</para></listitem>
 <listitem><para>Man-pages &man-pages-version;</para></listitem>
 <!-- <listitem><para>Mktemp &mktemp-version;</para></listitem> -->
 <!-- <listitem><para>Mktemp &mktemp-version;</para></listitem> -->
 <!-- <listitem><para>Module-Init-Tools &module-init-tools-version;</para></listitem> -->
 <!-- <listitem><para>Module-Init-Tools &module-init-tools-version;</para></listitem> -->
@@ -83,14 +83,22 @@ First a summary, then a detailed log.</para>
 </itemizedlist>
 </itemizedlist>
 </listitem>
 </listitem>
 
 
+<listitem><para>Downgraded to:</para>
+<itemizedlist>
+<listitem><para>Groff &groff-version;-&groff-patchlevel;</para></listitem>
+</itemizedlist>
+</listitem>
+
 <listitem><para>Added:</para>
 <listitem><para>Added:</para>
 <itemizedlist>
 <itemizedlist>
 <listitem><para>&bzip2-bzgrep-patch;</para></listitem>
 <listitem><para>&bzip2-bzgrep-patch;</para></listitem>
 <listitem><para>&bzip2-docs-patch;</para></listitem>
 <listitem><para>&bzip2-docs-patch;</para></listitem>
 <listitem><para>&gawk-segfault-patch;</para></listitem>
 <listitem><para>&gawk-segfault-patch;</para></listitem>
 <listitem><para>&gcc-specs-patch;</para></listitem>
 <listitem><para>&gcc-specs-patch;</para></listitem>
+<listitem><para>GDBM-&gdbm-version;</para></listitem>
 <listitem><para>&inetutils-gcc4_fixes-patch;</para></listitem>
 <listitem><para>&inetutils-gcc4_fixes-patch;</para></listitem>
 <listitem><para>&kbd-gcc4_fixes-patch;</para></listitem>
 <listitem><para>&kbd-gcc4_fixes-patch;</para></listitem>
+<listitem><para>MAN-DB-&man-db-version;</para></listitem>
 <listitem><para>&mktemp-tempfile-patch;</para></listitem>
 <listitem><para>&mktemp-tempfile-patch;</para></listitem>
 <listitem><para>&perl-libc-patch;</para></listitem>
 <listitem><para>&perl-libc-patch;</para></listitem>
 <listitem><para>&shadow-configure-patch;</para></listitem>
 <listitem><para>&shadow-configure-patch;</para></listitem>
@@ -107,6 +115,7 @@ First a summary, then a detailed log.</para>
 <listitem><para>glibc-2.3.4-fix_test-1.patch</para></listitem>
 <listitem><para>glibc-2.3.4-fix_test-1.patch</para></listitem>
 <listitem><para>inetutils-1.4.2-kernel_headers-1.patch</para></listitem>
 <listitem><para>inetutils-1.4.2-kernel_headers-1.patch</para></listitem>
 <listitem><para>iproute2-2.6.11-050330-remove_db-1.patch</para></listitem>
 <listitem><para>iproute2-2.6.11-050330-remove_db-1.patch</para></listitem>
+<listitem><para>Man-1.6b</para></listitem>
 <listitem><para>mktemp-1.5-add_tempfile-2.patch</para></listitem>
 <listitem><para>mktemp-1.5-add_tempfile-2.patch</para></listitem>
 <listitem><para>perl-5.8.6-libc-1.patch</para></listitem>
 <listitem><para>perl-5.8.6-libc-1.patch</para></listitem>
 <listitem><para>vim-6.3-security_fix-1.patch</para></listitem>
 <listitem><para>vim-6.3-security_fix-1.patch</para></listitem>

+ 43 - 3
chapter03/packages.xml

@@ -136,6 +136,13 @@ url="http://www.linuxfromscratch.org/lfs/download.html#ftp"/>.</para></note>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>GDBM (&gdbm-version;) - 228 KB:</term>
+<listitem>
+<para><ulink url="&gnu;gdbm/"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Gettext (&gettext-version;) - 4,668 KB:</term>
 <term>Gettext (&gettext-version;) - 4,668 KB:</term>
 <listitem>
 <listitem>
@@ -158,12 +165,25 @@ url="http://www.linuxfromscratch.org/lfs/download.html#ftp"/>.</para></note>
 </varlistentry>
 </varlistentry>
 
 
 <varlistentry>
 <varlistentry>
-<term>Groff (&groff-version;) - 2,096 KB:</term>
+<term>Groff (&groff-version;) - 2,260 KB:</term>
 <listitem>
 <listitem>
 <para><ulink url="&gnu;groff/"/></para>
 <para><ulink url="&gnu;groff/"/></para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Groff Debian Patch - 129 KB:</term>
+<listitem>
+<para><ulink url="http://ftp.debian.org/debian/pool/main/g/groff/&groff-debian-patch;"/></para>
+<note><para>Groff Debian Patch (&groff-version;-&groff-patchlevel;)
+may no longer be available at the
+listed location. The site administrators of the master download
+location occasionally remove older versions when new ones are
+released. There is no alternative download location yet.</para></note>
+<!-- Actually there's snapshot.debian.net, but they have hardware problems -->
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>GRUB (&grub-version;) - 772 KB:</term>
 <term>GRUB (&grub-version;) - 772 KB:</term>
 <listitem>
 <listitem>
@@ -228,6 +248,13 @@ url="http://www.linuxfromscratch.org/lfs/download.html#ftp"/>.</para></note>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Replacement <command>console</command> script for LFS-Bootscripts (&lfs-bootscripts-version;) - 3 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;console"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Libtool (&libtool-version;) - 1,642 KB:</term>
 <term>Libtool (&libtool-version;) - 1,642 KB:</term>
 <listitem>
 <listitem>
@@ -264,9 +291,9 @@ url="http://www.linuxfromscratch.org/lfs/download.html#ftp"/>.</para></note>
 </varlistentry>
 </varlistentry>
 
 
 <varlistentry>
 <varlistentry>
-<term>Man (&man-version;) - 205 KB:</term>
+<term>Man-DB (&man-db-version;) - 816 KB:</term>
 <listitem>
 <listitem>
-<para><ulink url="http://primates.ximian.com/~flucifredi/man/"/></para>
+<para><ulink url="http://savannah.nongnu.org/download/man-db/"/></para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
@@ -298,6 +325,19 @@ url="http://www.linuxfromscratch.org/lfs/download.html#ftp"/>.</para></note>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<!--
+<varlistentry>
+<term>Ncurses Rollup Patch (&ncurses-date;) - 328 KB:</term>
+<listitem>
+<para><ulink url="ftp://invisible-island.net/ncurses/&ncurses-version;/"/></para>
+<note><para>Ncurses Rollup Patch (&ncurses-date;) may no longer be available at the
+listed location. The site administrators of the master download
+location occasionally remove older versions when new ones are
+released. There is no alternative download location yet.</para></note>
+</listitem>
+</varlistentry>
+-->
+
 <varlistentry>
 <varlistentry>
 <term>Patch (&patch-version;) - 156 KB:</term>
 <term>Patch (&patch-version;) - 156 KB:</term>
 <listitem>
 <listitem>

+ 57 - 0
chapter03/patches.xml

@@ -29,6 +29,13 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Coreutils Internationalization Fixes Patch - 110 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&coreutils-i18n-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Coreutils Suppress Uptime, Kill, Su Patch - 15 KB:</term>
 <term>Coreutils Suppress Uptime, Kill, Su Patch - 15 KB:</term>
 <listitem>
 <listitem>
@@ -43,6 +50,13 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Diffutils Internationalization Fixes Patch - 18 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&diffutils-i18n-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Expect Spawn Patch - 7 KB:</term>
 <term>Expect Spawn Patch - 7 KB:</term>
 <listitem>
 <listitem>
@@ -71,12 +85,26 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Grep RedHat Fixes Patch - 56 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&grep-fixes-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Gzip Security Patch - 2 KB:</term><listitem>
 <term>Gzip Security Patch - 2 KB:</term><listitem>
 <para><ulink url="&patches-root;&gzip-security_fix-patch;"/></para>
 <para><ulink url="&patches-root;&gzip-security_fix-patch;"/></para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Kbd Backspace/Delete Fix Patch - 1 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&kbd-backspace-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Kbd GCC-4.x Fix Patch - 1 KB:</term>
 <term>Kbd GCC-4.x Fix Patch - 1 KB:</term>
 <listitem>
 <listitem>
@@ -98,6 +126,13 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Linux kernel UTF-8 Composing Patch - 3 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&linux-utf8-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Mktemp Tempfile Patch - 4 KB:</term>
 <term>Mktemp Tempfile Patch - 4 KB:</term>
 <listitem>
 <listitem>
@@ -105,6 +140,13 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Ncurses Fixes Patch - 9 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&ncurses-fixes-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Perl Libc Patch - 1 KB:</term>
 <term>Perl Libc Patch - 1 KB:</term>
 <listitem>
 <listitem>
@@ -112,6 +154,13 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Sysklogd 8-Bit Cleanness Patch - 1 KB:</term>
+<listitem>
+<para><ulink url="&lfs-root;patches/downloads/sysklogd/&sysklogd-8bit-patch;"/></para>
+</listitem>
+</varlistentry>
+
 <varlistentry>
 <varlistentry>
 <term>Shadow Configure Script Patch - 1KB:</term>
 <term>Shadow Configure Script Patch - 1KB:</term>
 <listitem>
 <listitem>
@@ -140,6 +189,14 @@ needed to build an LFS system:</para>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>
 
 
+<varlistentry>
+<term>Texinfo Multibyte Fixes Patch - 1 KB:</term>
+<listitem>
+<para><ulink url="&alexpatches;&texinfo-multibyte-patch;"/></para>
+</listitem>
+</varlistentry>
+
+
 <varlistentry>
 <varlistentry>
 <term>Texinfo Tempfile Fix Patch - 2 KB:</term>
 <term>Texinfo Tempfile Fix Patch - 2 KB:</term>
 <listitem>
 <listitem>

+ 8 - 5
chapter05/gawk.xml

@@ -31,11 +31,14 @@
 
 
 <screen><userinput>./configure --prefix=/tools</userinput></screen>
 <screen><userinput>./configure --prefix=/tools</userinput></screen>
 
 
-<para>The configure script doesn't detect some functionality correctly.  The
-following commands correct this problem:</para>
-
-<screen><userinput>echo "#define HAVE_LANGINFO_CODESET 1" >> config.h
-echo "#define HAVE_LC_MESSAGES 1" >> config.h</userinput></screen>
+<para>Due to a bug in the <command>./configure</command> script, Gawk fails
+to detect certain aspects of locale support in glibc. This
+bug leads to, e.g., Gettext testsuite failures. Work around this issue
+by appending the missing macro definitions to <filename>config.h</filename>:</para>
+<screen><userinput>cat &gt;&gt;config.h &lt;&lt;"EOF"
+<literal>#define HAVE_LANGINFO_CODESET 1
+#define HAVE_LC_MESSAGES 1</literal>
+EOF</userinput></screen>
 
 
 <para>Compile the package:</para>
 <para>Compile the package:</para>
 
 

+ 14 - 3
chapter05/glibc.xml

@@ -27,6 +27,17 @@
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Glibc</title>
 <title>Installation of Glibc</title>
 
 
+<para>The glibc-libidn tarball adds support for internationalized
+(non-ASCII) domain names to Glibc. While this facility is not
+useful in this chapter, the installation commands of
+<xref linkend="chapter-building-system"/>
+glibc (wrongly) check <xref linkend="chapter-temporary-tools"/> glibc for
+this feature. Unpack the tarball from within the Glibc source
+directory in order to avoid this bogus failure:</para>
+
+<screen><userinput>tar jxf ../glibc-libidn-&glibc-version;.tar.bz2</userinput></screen>
+<!-- TODO: DIY Linux modifies the installation check script in Chapte 6 instead -->
+
 <para>The Glibc documentation recommends building Glibc outside of the source
 <para>The Glibc documentation recommends building Glibc outside of the source
 directory in a dedicated build directory:</para>
 directory in a dedicated build directory:</para>
 
 
@@ -36,7 +47,7 @@ cd ../glibc-build</userinput></screen>
 <para>Next, prepare Glibc for compilation:</para>
 <para>Next, prepare Glibc for compilation:</para>
 
 
 <screen><userinput>../glibc-&glibc-version;/configure --prefix=/tools \
 <screen><userinput>../glibc-&glibc-version;/configure --prefix=/tools \
-    --disable-profile --enable-add-ons \
+    --disable-profile --enable-add-ons=nptl,libidn \
     --enable-kernel=2.6.0 --with-binutils=/tools/bin \
     --enable-kernel=2.6.0 --with-binutils=/tools/bin \
     --without-gd --with-headers=/tools/include \
     --without-gd --with-headers=/tools/include \
     --without-selinux</userinput></screen>
     --without-selinux</userinput></screen>
@@ -52,9 +63,9 @@ necessary.</para></listitem>
 </varlistentry>
 </varlistentry>
 
 
 <varlistentry>
 <varlistentry>
-<term><parameter>--enable-add-ons</parameter></term>
+<term><parameter>--enable-add-ons=nptl,libidn</parameter></term>
 <listitem><para>This tells Glibc to use the NPTL add-on as its threading 
 <listitem><para>This tells Glibc to use the NPTL add-on as its threading 
-library.</para></listitem>
+library, and adds support for non-ASCII domain names.</para></listitem>
 </varlistentry>
 </varlistentry>
 
 
 <varlistentry>
 <varlistentry>

+ 2 - 1
chapter06/chapter06.xml

@@ -34,6 +34,7 @@
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="less.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="less.xml"/>
+<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gdbm.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="groff.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="groff.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sed.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sed.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/>
@@ -55,7 +56,7 @@
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gzip.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gzip.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hotplug.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hotplug.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man.xml"/>
+<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-db.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="make.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="make.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="module-init-tools.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="module-init-tools.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patch.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patch.xml"/>

+ 20 - 0
chapter06/coreutils.xml

@@ -41,6 +41,26 @@ other packages later:</para>
 
 
 <screen><userinput>patch -Np1 -i ../&coreutils-suppress-patch;</userinput></screen>
 <screen><userinput>patch -Np1 -i ../&coreutils-suppress-patch;</userinput></screen>
 
 
+<para>POSIX requires that programs from Coreutils recognize character
+boundaries correctly even in multibyte locales. The following patch
+fixes this non-compliance and other internationalization-related bugs:</para>
+
+<screen><userinput>patch -Np1 -i ../&coreutils-i18n-patch;</userinput></screen>
+
+<para>In order for the tests added by this patch to pass, the permissions for
+the test file have to be changed:</para>
+
+<screen><userinput>chmod +x tests/sort/sort-mb-tests</userinput></screen>
+
+<note><para>In the past, many bugs were found in this patch. When reporting
+new bugs to Coreutils maintainers, please check first if they are reproducible
+without this patch.</para></note>
+
+<para>It has been found that translated messages sometimes overflow a buffer
+in the <command>who -Hu</command> command. Increase the buffer size:</para>
+
+<screen><userinput>sed -i 's,_LEN 6,_LEN 20,' src/who.c</userinput></screen>
+
 <para>Now prepare Coreutils for compilation:</para>
 <para>Now prepare Coreutils for compilation:</para>
 
 
 <screen><userinput>./configure --prefix=/usr</userinput></screen>
 <screen><userinput>./configure --prefix=/usr</userinput></screen>

+ 6 - 0
chapter06/diffutils.xml

@@ -29,6 +29,12 @@ Gettext, Glibc, Grep, Make, and Sed</seg></seglistitem>
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Diffutils</title>
 <title>Installation of Diffutils</title>
 
 
+<para>POSIX requires that the <command>diff</command> command treats whitespace
+characters according to the current locale. The following patch fixes the
+non-complinace issue:</para>
+
+<screen><userinput>patch -Np1 -i ../&diffutils-i18n-patch;</userinput></screen>
+
 <para>Prepare Diffutils for compilation:</para>
 <para>Prepare Diffutils for compilation:</para>
 
 
 <screen><userinput>./configure --prefix=/usr</userinput></screen>
 <screen><userinput>./configure --prefix=/usr</userinput></screen>

+ 10 - 6
chapter06/gawk.xml

@@ -28,8 +28,8 @@ Diffutils, GCC, Gettext, Glibc, Grep, Make, and Sed</seg></seglistitem>
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Gawk</title>
 <title>Installation of Gawk</title>
 
 
-<para>Patch Gawk to fix a bug which causes it to segfault when invoked on a
-non-existent file:</para>
+<para>Under some circumstances, Gawk-&gawk-version;  attempts to free a chunk
+of memory that was not allocated. This bug is fixed by the following patch:</para>
 
 
 <screen><userinput>patch -Np1 -i ../&gawk-segfault-patch;</userinput></screen>
 <screen><userinput>patch -Np1 -i ../&gawk-segfault-patch;</userinput></screen>
 
 
@@ -37,11 +37,15 @@ non-existent file:</para>
 
 
 <screen><userinput>./configure --prefix=/usr --libexecdir=/usr/lib</userinput></screen>
 <screen><userinput>./configure --prefix=/usr --libexecdir=/usr/lib</userinput></screen>
 
 
-<para>The configure script doesn't detect some functionality correctly.  The
-following commands correct this problem:</para>
+<para>Due to a bug in the <command>./configure</command> script, Gawk fails
+to detect certain aspects of locale support in glibc. This
+bug leads to, e.g., Gettext testsuite failures. Work around this issue
+by appending the missing macro definitions to <filename>config.h</filename>:</para>
 
 
-<screen><userinput>echo "#define HAVE_LANGINFO_CODESET 1" >> config.h
-echo "#define HAVE_LC_MESSAGES 1" >> config.h</userinput></screen>
+<screen><userinput>cat &gt;&gt;config.h &lt;&lt;"EOF"
+<literal>#define HAVE_LANGINFO_CODESET 1
+#define HAVE_LC_MESSAGES 1</literal>
+EOF</userinput></screen>
 
 
 <para>Compile the package:</para>
 <para>Compile the package:</para>
 
 

+ 73 - 0
chapter06/gdbm.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+<sect1 id="ch-system-gdbm" role="wrap">
+<title>GDBM-&gdbm-version;</title>
+<?dbhtml filename="gdbm.html"?>
+
+<indexterm zone="ch-system-gdbm"><primary sortas="a-Gdbm">GDBM</primary></indexterm>
+
+<sect2 role="package"><title/>
+<para>The GDBM package contains the GNU Database Manager.</para>
+
+<segmentedlist>
+<segtitle>&buildtime;</segtitle>
+<segtitle>&diskspace;</segtitle>
+<seglistitem><seg>0.08 SBU</seg><seg>2.75 MB</seg></seglistitem>
+</segmentedlist>
+
+<segmentedlist>
+<segtitle>&dependencies;</segtitle>
+<seglistitem><seg>Not checked yet.</seg></seglistitem>
+</segmentedlist>
+</sect2>
+
+<sect2 role="installation">
+<title>Installation of GDBM</title>
+
+<para>Prepare GDBM for compilation:</para>
+
+<screen><userinput>./configure --prefix=/usr</userinput></screen>
+
+<para>Compile the package:</para>
+
+<screen><userinput>make</userinput></screen>
+
+<para>Install the package:</para>
+
+<screen><userinput>make BINOWN=root BINGRP=root install install-compat</userinput></screen>
+
+</sect2>
+
+
+<sect2 id="contents-gDBM" role="content"><title>Contents of GDBM</title>
+
+<segmentedlist>
+<segtitle>Installed libraries</segtitle>
+<seglistitem><seg>libgdbm.[so,a] and libgdbm_compat.[so,a]</seg></seglistitem>
+</segmentedlist>
+
+<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
+<?dbfo list-presentation="list"?>
+<?dbhtml list-presentation="table"?>
+
+<varlistentry id="libgdbm">
+<term>libgdbm.[so,a]</term>
+<listitem>
+<para>contains functions to manipulate a hashed database.</para>
+</listitem>
+</varlistentry>
+
+<varlistentry id="libgdbm-compat">
+<term>libgdbm_compat.[so,a]</term>
+<listitem>
+<para>provide compatibility with older dbm routines</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</sect2>
+
+</sect1>

+ 29 - 16
chapter06/glibc.xml

@@ -47,6 +47,21 @@ and linker cannot be adjusted before the Glibc install because the
 Glibc autoconf tests would give false results and defeat the goal
 Glibc autoconf tests would give false results and defeat the goal
 of achieving a clean build.</para>
 of achieving a clean build.</para>
 
 
+<para>The glibc-libidn tarball adds support for internationalized
+domain names (IDN) to Glibc. Note that many programs that
+support IDN require the full libidn library from
+<ulink url="http://josefsson.org/libidn/releases/"/>, not this add-on.
+Unpack the tarball from within the Glibc source
+directory:</para>
+
+<screen><userinput>tar jxf ../glibc-libidn-&glibc-version;.tar.bz2</userinput></screen>
+
+<para>In the vi_VN.TCVN locale, bash enters infinite loop at startup. It is
+unknown whether this is a bash bug or a glibc problem. Disable installation
+of this locale in order to avoid the problem:</para>
+
+<screen><userinput>sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED</userinput></screen>
+
 <para>The Glibc documentation recommends building Glibc outside of the source
 <para>The Glibc documentation recommends building Glibc outside of the source
 directory in a dedicated build directory:</para>
 directory in a dedicated build directory:</para>
 
 
@@ -56,7 +71,7 @@ cd ../glibc-build</userinput></screen>
 <para>Prepare Glibc for compilation:</para>
 <para>Prepare Glibc for compilation:</para>
 
 
 <screen><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
 <screen><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
-    --disable-profile --enable-add-ons \
+    --disable-profile --enable-add-ons=nptl,libidn \
     --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc</userinput></screen>
     --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc</userinput></screen>
 
 
 <para>The meaning of the new configure options:</para>
 <para>The meaning of the new configure options:</para>
@@ -129,6 +144,11 @@ with:</para>
 
 
 <screen><userinput>make localedata/install-locales</userinput></screen>
 <screen><userinput>make localedata/install-locales</userinput></screen>
 
 
+<note><para>It is possible to create and install additional locales such as
+ru_RU.CP1251 by means of the <command>localedef</command> command, as
+explained in the <filename>INSTALL</filename> file in the Glibc source.</para></note>
+<!-- The Live CD patches the localedata/SUPPORTED file instead of running localedef -->
+
 <para>To save time, an alternative to running the
 <para>To save time, an alternative to running the
 previous command (which generates and installs every locale listed in the
 previous command (which generates and installs every locale listed in the
 glibc-&glibc-version;/localedata/SUPPORTED file) is to install only those
 glibc-&glibc-version;/localedata/SUPPORTED file) is to install only those
@@ -142,6 +162,7 @@ instructions, instead of the <parameter>install-locales</parameter>
 target used above, will install the minimum set of locales necessary
 target used above, will install the minimum set of locales necessary
 for the tests to run successfully:</para>
 for the tests to run successfully:</para>
 
 
+<!-- FIXME: recheck that "make localedata/install_locales" actually does the same -->
 <screen role="nodump"><userinput>mkdir -pv /usr/lib/locale
 <screen role="nodump"><userinput>mkdir -pv /usr/lib/locale
 localedef -i de_DE -f ISO-8859-1 de_DE
 localedef -i de_DE -f ISO-8859-1 de_DE
 localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
 localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
@@ -152,24 +173,16 @@ localedef -i es_MX -f ISO-8859-1 es_MX
 localedef -i fa_IR -f UTF-8 fa_IR
 localedef -i fa_IR -f UTF-8 fa_IR
 localedef -i fr_FR -f ISO-8859-1 fr_FR
 localedef -i fr_FR -f ISO-8859-1 fr_FR
 localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
 localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
+localedef -i fr_FR.UTF-8 -f UTF-8 fr_FR
 localedef -i it_IT -f ISO-8859-1 it_IT
 localedef -i it_IT -f ISO-8859-1 it_IT
 localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
 localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
 
 
-<para>Some locales installed by the <command>make
-localedata/install-locales</command> command above are not properly
-supported by some applications that are in the LFS and BLFS books.
-Because of the various problems that arise due to application
-programmers making assumptions that break in such locales, LFS should
-not be used in locales that utilize multibyte character sets
-(including UTF-8) or right-to-left writing order.  Numerous unofficial
-and unstable patches are required to fix these problems, and it has
-been decided by the LFS developers not to support such complex locales at this
-time.  This applies to the ja_JP and fa_IR locales as well&mdash;they have been
-installed only for GCC and Gettext tests to pass, and the
-<command>watch</command> program (part of the Procps package) does not work
-properly in them. Various attempts to circumvent these restrictions are
-documented in internationalization-related hints.</para>
-
+<para>The first <command>localedef</command> above combines the
+<filename>/usr/share/i18n/locales/de_DE</filename> charset-independent
+locale definition with the
+<filename>/usr/share/i18n/charmaps/ISO-8859-1.gz</filename> charmap definition
+and appends the result to the
+<filename>/usr/lib/locale/locale-archive</filename> file.</para>
 </sect2>
 </sect2>
 
 
 <sect2 id="conf-glibc" role="configuration"><title>Configuring Glibc</title>
 <sect2 id="conf-glibc" role="configuration"><title>Configuring Glibc</title>

+ 10 - 0
chapter06/grep.xml

@@ -28,6 +28,16 @@ Diffutils, GCC, Gettext, Glibc, Make, Sed, and Texinfo</seg></seglistitem>
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Grep</title>
 <title>Installation of Grep</title>
 
 
+<para>The original Grep package has many bugs, especially in the support of
+multibyte locales. RedHat fixed some of them by the following patch:</para>
+
+<screen><userinput>patch -Np1 -i ../&grep-fixes-patch;</userinput></screen>
+
+<para>In order for the tests added by this patch to pass, the permissions for
+the test file have to be changed:</para>
+
+<screen><userinput>chmod +x tests/fmbtest.sh</userinput></screen>
+
 <para>Prepare Grep for compilation:</para>
 <para>Prepare Grep for compilation:</para>
 
 
 <screen><userinput>./configure --prefix=/usr --bindir=/bin</userinput></screen>
 <screen><userinput>./configure --prefix=/usr --bindir=/bin</userinput></screen>

+ 20 - 1
chapter06/groff.xml

@@ -28,10 +28,29 @@ Gawk, GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Groff</title>
 <title>Installation of Groff</title>
 
 
+<para>Apply the patch that adds the "ascii8" and "nippon" devices to Groff:</para>
+
+<screen><userinput>zcat ../&groff-debian-patch; | patch -Np1</userinput></screen>
+
+<note><para>These devices are used by Man-DB when formatting non-English manual
+pages that are not in the ISO-8859-1 encoding. There is no working patch for
+Groff-1.19.x that adds this functionality at the time of this writing.
+<!-- Details: http://bugs.debian.org/196762 -->
+</para></note>
+
+<para>Many screen fonts don't have Unicode dashes in them. Tell groff to use
+the ASCII hyphen instead:</para>
+
+<screen><userinput>sed -i 's,2010,002D,' font/devutf8/R.proto
+sed -i 's,2212,002D,' font/devutf8/R.proto</userinput></screen>
+
 <para>Groff expects the environment variable <envar>PAGE</envar>
 <para>Groff expects the environment variable <envar>PAGE</envar>
 to contain the default paper size. For users in the United States,
 to contain the default paper size. For users in the United States,
 <parameter>PAGE=letter</parameter> is appropriate. Elsewhere,
 <parameter>PAGE=letter</parameter> is appropriate. Elsewhere,
-<parameter>PAGE=A4</parameter> may be more suitable.</para>
+<parameter>PAGE=A4</parameter> may be more suitable.
+The default paper size can be changed after installation by writing
+the word "A4" or "letter" to the <filename>/etc/papersize</filename>
+file.</para>
 
 
 <para>Prepare Groff for compilation:</para>
 <para>Prepare Groff for compilation:</para>
 
 

+ 17 - 2
chapter06/kbd.xml

@@ -28,6 +28,15 @@ Diffutils, Flex, GCC, Gettext, Glibc, Grep, Gzip, M4, Make, and Sed</seg></segli
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Kbd</title>
 <title>Installation of Kbd</title>
 
 
+<para>The behaviour of Backspace and Delete keys is not consistent across the
+keymaps in the Kbd package. The following patch fixes this issue for
+i386 keymaps:</para>
+
+<screen><userinput>patch -Np1 -i ../&kbd-backspace-patch;</userinput></screen>
+
+<para>After patching, the Backspace key generates the character with code 127,
+and the Delete key generates a well-known escape sequence.</para>
+
 <para>Patch Kbd to fix a bug in <command>setfont</command> that is triggered
 <para>Patch Kbd to fix a bug in <command>setfont</command> that is triggered
 when compiling with GCC-&gcc-version;:</para>
 when compiling with GCC-&gcc-version;:</para>
 
 
@@ -47,6 +56,11 @@ when compiling with GCC-&gcc-version;:</para>
 
 
 <screen><userinput>make install</userinput></screen>
 <screen><userinput>make install</userinput></screen>
 
 
+<note>For some languages, e.g. Belarusian, the Kbd package doesn't provide
+a useful keymap (the stock "by" keymap assumes the ISO-8859-5 encoding,
+while everybody uses CP1251 instead). Users of such languages
+have to download working keymaps separately.</note>
+
 </sect2>
 </sect2>
 
 
 <sect2 id="contents-kbd" role="content"><title>Contents of Kbd</title>
 <sect2 id="contents-kbd" role="content"><title>Contents of Kbd</title>
@@ -274,8 +288,9 @@ pressed on the keyboard</para>
 <varlistentry id="unicode_start">
 <varlistentry id="unicode_start">
 <term><command>unicode_start</command></term>
 <term><command>unicode_start</command></term>
 <listitem>
 <listitem>
-<para>Puts the keyboard and console in UNICODE mode. Never use it on LFS, 
-because applications are not configured to support UNICODE.</para>
+<para>Puts the keyboard and console in UNICODE mode. Don't use this program
+unless your keymap file is in the ISO-8859-1 encoding. For other encodings,
+this utility produces incorrect results.</para>
 <indexterm zone="ch-system-kbd unicode_start"><primary sortas="b-unicode_start">unicode_start</primary></indexterm>
 <indexterm zone="ch-system-kbd unicode_start"><primary sortas="b-unicode_start">unicode_start</primary></indexterm>
 </listitem>
 </listitem>
 </varlistentry>
 </varlistentry>

+ 268 - 0
chapter06/man-db.xml

@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+<sect1 id="ch-system-man-db" role="wrap">
+<title>Man-DB-&man-db-version;</title>
+<?dbhtml filename="man-db.html"?>
+
+<indexterm zone="ch-system-man-db"><primary sortas="a-Man-DB">Man-DB</primary></indexterm>
+
+<sect2 role="package"><title/>
+<para>The Man-DB package contains programs for finding and viewing man pages.</para>
+
+<segmentedlist>
+<segtitle>&buildtime;</segtitle>
+<segtitle>&diskspace;</segtitle>
+<seglistitem><seg>0.1 SBU</seg><seg>1.1 MB</seg></seglistitem>
+</segmentedlist>
+
+<segmentedlist>
+<segtitle>&dependencies;</segtitle>
+<seglistitem><seg>Bash, Binutils, Coreutils, Gawk, GCC,
+Glibc, Gettext, GDBM, Grep, Make, and Sed</seg></seglistitem>
+</segmentedlist>
+</sect2>
+
+<sect2 role="installation">
+<title>Installation of Man-DB</title>
+
+<para>Three adjustments need to be made to the sources of Man-DB.</para>
+
+<para>The first one changes the location of translated manual pages that come
+with Man-DB, in order for them to be accessible in both traditional and
+UTF-8 locales:</para>
+
+<screen><userinput>mv man/de{_DE.88591,} &amp;&amp;
+mv man/es{_ES.88591,} &amp;&amp;
+mv man/it{_IT.88591,} &amp;&amp;
+mv man/ja{_JP.eucJP,} &amp;&amp;
+sed -i 's,\*_\*,??,' man/Makefile.in</userinput></screen>
+
+<para>The second change is a sed substitution to delete the
+<quote>/usr/man</quote> lines in the
+<filename>man_db.conf</filename> file to prevent redundant results when
+using programs such as <command>whatis</command>:</para>
+
+<screen><userinput>sed -i '/\t\/usr\/man/d' src/man_db.conf.in</userinput></screen>
+
+<para>The third change accounts for programs that Man-DB should be able
+to find at runtime, but that haven't been installed yet:</para>
+
+<screen><userinput>cat &gt;&gt;include/manconfig.h.in &lt;&lt;"EOF"
+<literal>#define WEB_BROWSER "exec /usr/bin/lynx"
+#define COL "/usr/bin/col"
+#define VGRIND "/usr/bin/vgrind"
+#define GRAP "/usr/bin/grap"</literal>
+EOF</userinput></screen>
+
+<para>The <command>col</command> program is a part of the Util-linux package,
+<command>lynx</command> is a text-based web browser
+(see BLFS for installation instructions),
+<command>vgrind</command> converts program sources to Groff input,
+and <command>grap</command> is useful for typesetting graphs in Groff documents.
+The <command>vgrind</command> and <command>grap</command> programs are
+not normally needed for viewing manual pages. They are
+not part of LFS or BLFS, but you should be able to install them yourself
+after finishing LFS if you wish to do so.</para>
+
+<para>Prepare Man-DB for compilation:</para>
+
+<screen><userinput>./configure --prefix=/usr --enable-mb-groff --disable-setuid</userinput></screen>
+
+<para>The meaning of the configure options:</para>
+
+<variablelist>
+<varlistentry>
+<term><parameter>--enable-mb-groff</parameter></term>
+<listitem><para>This tells the <command>man</command> program to
+use the "ascii8" and "nippon" Groff devices for formatting non-ISO-8859-1
+manual pages.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term><parameter>--disable-setuid</parameter></term>
+<listitem><para>This disables making the <command>man</command> program
+setuid to user "man".</para></listitem>
+</varlistentry>
+</variablelist>
+
+<para>Compile the package:</para>
+
+<screen><userinput>make</userinput></screen>
+
+<para>Install the package:</para>
+
+<screen><userinput>make install</userinput></screen>
+
+<para>Additional information with regards to the compression of
+man and info pages can be found in the BLFS book at
+<ulink url="&blfs-root;view/cvs/postlfs/compressdoc.html"/>.</para>
+
+</sect2>
+
+<sect2><title>Non-English Manual Pages in LFS</title>
+
+<para>Linux distributions have different policies concerning the chracter
+encoding in which manual pages are stored on the hard disk. E.g., RedHat
+stores all manual pages in UTF-8, while Debian uses language-specific
+(mostly 8-bit) encodings. This leads to incompatibility of packages with
+manual pages designed for different distributions.</para>
+
+<para>LFS uses the same conventions as Debian. The correspondence between
+language codes and the expected encoding of manual pages is listed below.
+Man-DB automatically converts them to the locale encoding "on the fly"
+while viewing.</para>
+
+<!-- Origin: man-db-2.4.3/src/encodings.c -->
+<table frame='all'><title>Expected character encoding of manual pages</title>
+<tgroup cols='2' align='center' colsep='1' rowsep='1'>
+<thead>
+<row><entry>Language (code)</entry><entry>Encoding</entry></row>
+</thead>
+<tbody>
+<row><entry>Danish (da)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>German (de)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>English (en)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Spanish (es)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Finnish (fi)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>French (fr)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Irish (ga)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Galician (gl)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Indonesian (id)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Icelandic (is)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Italian (it)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Dutch (nl)</entry><entry>ISO-8859-1</entry></row>
+<!-- BUG: "no" is deprecated, should use "nb" or "nn" and symlinks -->
+<row><entry>Norwegian (no)</entry><entry>ISO-8859-1</entry></row>
+<!-- END BUG -->
+<row><entry>Portuguese (pt)</entry><entry>ISO-8859-1</entry></row>
+<row><entry>Swedish (sv)</entry><entry>ISO-8859-1</entry></row>
+<!-- Languages below require patched groff -->
+<row><entry>Czech (cs)</entry><entry>ISO-8859-2</entry></row>
+<row><entry>Croatian (hr)</entry><entry>ISO-8859-2</entry></row>
+<row><entry>Hungarian (hu)</entry><entry>ISO-8859-2</entry></row>
+<row><entry>Japanese (ja)</entry><entry>EUC-JP</entry></row>
+<row><entry>Korean (ko)</entry><entry>EUC-KR</entry></row>
+<row><entry>Polish (pl)</entry><entry>ISO-8859-2</entry></row>
+<row><entry>Russian (ru)</entry><entry>KOI8-R</entry></row>
+<row><entry>Slovak (sk)</entry><entry>ISO-8859-2</entry></row>
+<row><entry>Turkish (tr)</entry><entry>ISO-8859-9</entry></row>
+</tbody>
+</tgroup>
+</table>
+
+<note><para>Manual pages in languages not in the list are not supported.
+Norwegian doesn't work now because of the transition from no_NO to nb_NO
+locale, and Korean is non-functional because of incomplete Groff patch.
+</para></note>
+
+<para>If upstream distributes the manual pages in the same encoding as
+Man-DB expects, the manual pages can be copied to
+<filename class="directory">/usr/share/man/<replaceable>[language code]</replaceable></filename>.
+E.g., French manual pages
+(<ulink url="http://ccb.club.fr/man/man-fr-1.58.0.tar.bz2"/>)
+can be installed with the following command:</para>
+
+<screen role="nodump"><userinput>mkdir -p /usr/share/man/fr &amp;&amp;
+cp -r man? /usr/share/man/fr</userinput></screen>
+
+<para>If upstream distributes manual pages in UTF-8 (i.e. "for RedHat")
+instead of the encoding listed in the table above, they have to be
+downconverted from UTF-8 to the encoding listed in the table before
+installation. E.g., Spanish manual pages
+(<ulink url="http://ditec.um.es/~piernas/manpages-es/man-pages-es-1.55.tar.bz2"/>)
+can be installed with the following commands:</para>
+
+<screen role="nodump"><userinput>mkdir -p /usr/share/man/es &amp;&amp;
+find man? -type f | \
+grep -v 'man7/iso_8859-2.7' | grep -v 'man7/iso_8859-7.7' | \
+while read F ; do
+	iconv -f UTF-8 -t ISO-8859-1 $F >tmp ; mv tmp $F
+done &amp;&amp;
+cp -r man? /usr/share/man/es</userinput></screen>
+
+<note>The need to exclude <filename>man7/iso_8859-2.7</filename>
+and <filename>man7/iso_8859-7.7</filename> files from the conversion process
+because they are already in ISO-8859-1 is a packaging bug in
+man-pages-es-1.55. Future versions should not require this kludge.</note>
+
+</sect2>
+
+<sect2 id="contents-man-db" role="content"><title>Contents of Man-DB</title>
+
+<segmentedlist>
+<segtitle>Installed programs</segtitle>
+<seglistitem><seg>accessdb, apropos, catman, lexgrog, man, mandb, manpath,
+and whatis</seg></seglistitem>
+</segmentedlist>
+
+<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
+<?dbfo list-presentation="list"?>
+<?dbhtml list-presentation="table"?>
+
+
+<varlistentry id="accessdb">
+<term><command>accessdb</command></term>
+<listitem>
+<para>Dumps the <command>whatis</command> database contents in human-readable form.</para>
+<indexterm zone="ch-system-man-db accessdb"><primary sortas="b-accessdb">accessdb</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="apropos">
+<term><command>apropos</command></term>
+<listitem>
+<para>Searches the <command>whatis</command> database and displays the short descriptions
+of system commands that contain a given string</para>
+<indexterm zone="ch-system-man-db apropos"><primary sortas="b-apropos">apropos</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="catman">
+<term><command>catman</command></term>
+<listitem>
+<para>Creates or updates the pre-formatted manual pages</para>
+<indexterm zone="ch-system-man-db catman"><primary sortas="b-catman">catman</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="lexgrog">
+<term><command>lexgrog</command></term>
+<listitem>
+<para>Displays one-line summary information about a given manual page.</para>
+<indexterm zone="ch-system-man-db lexgrog"><primary sortas="b-lexgrog">lexgrog</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="man">
+<term><command>man</command></term>
+<listitem>
+<para>Formats and displays the requested on-line man page</para>
+<indexterm zone="ch-system-man-db man"><primary sortas="b-man">man</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="mandb">
+<term><command>mandb</command></term>
+<listitem>
+<para>Creates or updates the <command>whatis</command> database</para>
+<indexterm zone="ch-system-man-db mandb"><primary sortas="b-mandb">mandb</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="whatis">
+<term><command>whatis</command></term>
+<listitem>
+<para>Searches the <command>whatis</command> database and displays the short descriptions
+of system commands that contain the given keyword as a separate
+word</para>
+<indexterm zone="ch-system-man-db whatis"><primary sortas="b-whatis">whatis</primary></indexterm>
+</listitem>
+</varlistentry>
+</variablelist>
+
+</sect2>
+
+</sect1>
+

+ 0 - 180
chapter06/man.xml

@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
-  <!ENTITY % general-entities SYSTEM "../general.ent">
-  %general-entities;
-]>
-<sect1 id="ch-system-man" role="wrap">
-<title>Man-&man-version;</title>
-<?dbhtml filename="man.html"?>
-
-<indexterm zone="ch-system-man"><primary sortas="a-Man">Man</primary></indexterm>
-
-<sect2 role="package"><title/>
-<para>The Man package contains programs for finding and viewing man pages.</para>
-
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.1 SBU</seg><seg>1.3 MB</seg></seglistitem>
-</segmentedlist>
-
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Binutils, Coreutils, Gawk, GCC,
-Glibc, Grep, Make, and Sed</seg></seglistitem>
-</segmentedlist>
-</sect2>
-
-<sect2 role="installation">
-<title>Installation of Man</title>
-
-<para>Two adjustments need to be made to the sources of Man.</para>
-
-<para>The first is a <command>sed</command> substitution to add the
-<parameter>-R</parameter> switch to the <envar>PAGER</envar>
-variable so that escape sequences are properly handled by Less:</para>
-
-<screen><userinput>sed -i 's@-is@&amp;R@g' configure</userinput></screen>
-
-<para>The second is also a <command>sed</command> substitution to comment out the
-<quote>MANPATH /usr/man</quote> line in the
-<filename>man.conf</filename> file to prevent redundant results when
-using programs such as <command>whatis</command>:</para>
-
-<screen><userinput>sed -i 's@MANPATH./usr/man@#&amp;@g' src/man.conf.in</userinput></screen>
-
-<para>Prepare Man for compilation:</para>
-
-<screen><userinput>./configure -confdir=/etc</userinput></screen>
-
-<para>The meaning of the configure options:</para>
-
-<variablelist>
-<varlistentry>
-<term><parameter>-confdir=/etc</parameter></term>
-<listitem><para>This tells the <command>man</command> program to look for the
-<filename>man.conf</filename> configuration file in the <filename
-class="directory">/etc</filename> directory.</para></listitem>
-</varlistentry>
-</variablelist>
-
-<para>Compile the package:</para>
-
-<screen><userinput>make</userinput></screen>
-
-<para>This package does not come with a test suite.</para>
-
-<para>Install the package:</para>
-
-<screen><userinput>make install</userinput></screen>
-
-<note><para>If you will be working on a terminal that does not support text
-attributes such as color and bold, you can disable Select Graphic Rendition
-(SGR) escape sequences by editing the <filename>man.conf</filename> file and
-adding the <parameter>-c</parameter> option to the <envar>NROFF</envar>
-variable. If you use multiple terminal types for one computer it may be better
-to selectively add the <envar>GROFF_NO_SGR</envar> environment variable for the
-terminals that do not support SGR.</para></note>
-
-<para>If the character set of the locale uses 8-bit characters, search for the
-line beginning with <quote>NROFF</quote> in <filename>/etc/man.conf</filename>,
-and verify that it matches the following:</para>
-
-<screen>NROFF  /usr/bin/nroff -Tlatin1 -mandoc</screen>
-
-<para>Note that <quote>latin1</quote> should be used even if it is not
-the character set of the locale. The reason is that, according to the
-specification, <command>groff</command> has no means of typesetting
-characters outside International Organization for Standards
-(ISO) 8859-1 without some strange escape codes. When formatting man
-pages, <command>groff</command> thinks that they are in the ISO 8859-1
-encoding and this <parameter>-Tlatin1</parameter> switch tells
-<command>groff</command> to use the same encoding for output. Since
-<command>groff</command> does no recoding of input characters, the
-formatted result is really in the same encoding as input, and therefore
-it is usable as the input for a pager.</para>
-
-<para>This does not solve the problem of a non-working
-<command>man2dvi</command> program for localized man pages in
-non-ISO 8859-1 locales. Also, it does not work with multibyte
-character sets. The first problem does not currently have a solution.
-The second issue is not of concern because the LFS installation does
-not support multibyte character sets.</para>
-
-<para>Additional information with regards to the compression of
-man and info pages can be found in the BLFS book at
-<ulink url="&blfs-root;view/cvs/postlfs/compressdoc.html"/>.</para>
-
-</sect2>
-
-
-<sect2 id="contents-man" role="content"><title>Contents of Man</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<seglistitem><seg>apropos, makewhatis, man,
-man2dvi, man2html, and whatis</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="apropos">
-<term><command>apropos</command></term>
-<listitem>
-<para>Searches the <command>whatis</command> database and displays the short descriptions
-of system commands that contain a given string</para>
-<indexterm zone="ch-system-man apropos"><primary sortas="b-apropos">apropos</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="makewhatis">
-<term><command>makewhatis</command></term>
-<listitem>
-<para>Builds the <command>whatis</command> database; it reads all the man pages
-in the <envar>MANPATH</envar> and writes the name and a short description in the
-<command>whatis</command> database for each page</para>
-<indexterm zone="ch-system-man makewhatis"><primary sortas="b-makewhatis">makewhatis</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="man">
-<term><command>man</command></term>
-<listitem>
-<para>Formats and displays the requested on-line man page</para>
-<indexterm zone="ch-system-man man"><primary sortas="b-man">man</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="man2dvi">
-<term><command>man2dvi</command></term>
-<listitem>
-<para>Converts a man page into dvi format</para>
-<indexterm zone="ch-system-man man2dvi"><primary sortas="b-man2dvi">man2dvi</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="man2html">
-<term><command>man2html</command></term>
-<listitem>
-<para>Converts a man page into HTML</para>
-<indexterm zone="ch-system-man man2html"><primary sortas="b-man2html">man2html</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="whatis">
-<term><command>whatis</command></term>
-<listitem>
-<para>Searches the <command>whatis</command> database and displays the short descriptions
-of system commands that contain the given keyword as a separate
-word</para>
-<indexterm zone="ch-system-man whatis"><primary sortas="b-whatis">whatis</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
-
-</sect1>
-

+ 82 - 12
chapter06/ncurses.xml

@@ -28,10 +28,49 @@ Gawk, GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
 
 
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Ncurses</title>
 <title>Installation of Ncurses</title>
+<!-- Uncomment if using a dated ncurses release instead of a numbered one.
+
+<para>Since the release of Ncurses-&ncurses-version;, some bugs have been fixed
+and features added. The most important news are .......
+To get these fixes and features, apply the rollup patch:</para>
+
+<screen><userinput>bzcat ../&ncurses-rollup-patch; | patch -Np1</userinput></screen>
+-->
+
+<para>Since the release of Ncurses-&ncurses-version;, a memory leak and some
+display bugs were found and fixed upstream. Apply those fixes:</para>
+
+<screen><userinput>patch -Np1 -i ../&ncurses-fixes-patch;</userinput></screen>
 
 
 <para>Prepare Ncurses for compilation:</para>
 <para>Prepare Ncurses for compilation:</para>
 
 
-<screen><userinput>./configure --prefix=/usr --with-shared --without-debug</userinput></screen>
+<screen><userinput>./configure --prefix=/usr --with-shared --without-debug --enable-widec</userinput></screen>
+
+<para>The meaning of the configure options:</para>
+
+<variablelist>
+<varlistentry>
+<term><parameter>--enable-widec</parameter></term>
+<listitem><para>This switch causes wide-character libraries
+(e.g. <filename class="libraryfile">libncursesw.so.&ncurses-version;</filename>)
+to be built instead of normal ones
+(e.g. <filename class="libraryfile">libncurses.so.&ncurses-version;</filename>).
+Those wide-character libraries are usable in both multibyte and traditional 8-bit
+locales, while normal libraries work properly only in 8-bit locales.
+Wide-character and normal libraries are source-compatible, but not
+binary-compatible.</para>
+</listitem>
+</varlistentry>
+<!--
+<varlistentry>
+<term><parameter>- -without-cxx-binding</parameter></term>
+<listitem><para>This optional switch causes the
+<filename class="libraryfile">libncurses++w.a</filename> library
+not to be built. Nothing in LFS and BLFS uses this library.</para>
+</listitem>
+</varlistentry>
+-->
+</variablelist>
 
 
 <para>Compile the package:</para>
 <para>Compile the package:</para>
 
 
@@ -49,18 +88,48 @@ Gawk, GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
 
 
 <para>Fix a library that should not be executable:</para>
 <para>Fix a library that should not be executable:</para>
 
 
-<screen><userinput>chmod -v 644 /usr/lib/libncurses++.a</userinput></screen>
+<screen><userinput>chmod -v 644 /usr/lib/libncurses++w.a</userinput></screen>
 
 
 <para>Move the libraries to the <filename class="directory">/lib</filename> directory,
 <para>Move the libraries to the <filename class="directory">/lib</filename> directory,
 where they are expected to reside:</para>
 where they are expected to reside:</para>
 
 
-<screen><userinput>mv -v /usr/lib/libncurses.so.5* /lib</userinput></screen>
-
-<para>Because the libraries have been moved, a few symlinks point to
-non-existent files. Recreate those symlinks:</para>
-
-<screen><userinput>ln -sfv ../../lib/libncurses.so.5 /usr/lib/libncurses.so
-ln -sfv libncurses.so /usr/lib/libcurses.so</userinput></screen>
+<screen><userinput>mv -v /usr/lib/libncursesw.so.5* /lib</userinput></screen>
+
+<para>Because the libraries have been moved, one symlink points to
+a non-existent file. Recreate it:</para>
+
+<screen><userinput>ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so</userinput></screen>
+
+<para>Many applications still expect the linker to be able to find
+non-wide-character Ncurses libraries. Trick such applications into linking with
+wide-character libraries by means of symlinks and linker scripts:</para>
+
+<screen><userinput>for lib in curses ncurses form panel menu ; do \
+	rm -vf /usr/lib/lib${lib}.so ; \
+	echo "INPUT(-l${lib}w)" &gt;/usr/lib/lib${lib}.so ; \
+	ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \
+done &amp;&amp;
+ln -sfv libncurses++w.a /usr/lib/libncurses++.a</userinput></screen>
+
+<para>Finally, make sure that really old applications that look for
+<filename class="libaryfile">-lcurses</filename> at build time are still
+buildable:</para>
+
+<screen><userinput>echo "INPUT(-lncursesw)" &gt;/usr/lib/libcursesw.so &amp;&amp;
+ln -sfv libncurses.so /usr/lib/libcurses.so &amp;&amp;
+ln -sfv libncursesw.a /usr/lib/libcursesw.a &amp;&amp;
+ln -sfv libncurses.a /usr/lib/libcurses.a</userinput></screen>
+
+<note><para>The instructions above don't create non-wide-character Ncurses
+libraries since nothing in LFS and BLFS would link against them at runtime.
+If you must have such libraries because of some binary-only application,
+build them with the following commands:</para>
+<screen role="nodump"><userinput>make distclean &amp;&amp;
+./configure --prefix=/usr --with-shared --without-normal \
+	--without-debug --without-cxx-binding &amp;&amp;
+make sources libs &amp;&amp;
+cp -av lib/lib*.so.5* /usr/lib</userinput></screen>
+</note>
 </sect2>
 </sect2>
 
 
 
 
@@ -71,8 +140,10 @@ ln -sfv libncurses.so /usr/lib/libcurses.so</userinput></screen>
 <segtitle>Installed libraries</segtitle>
 <segtitle>Installed libraries</segtitle>
 <seglistitem><seg>captoinfo (link to tic), clear, infocmp, infotocap (link to tic), 
 <seglistitem><seg>captoinfo (link to tic), clear, infocmp, infotocap (link to tic), 
 reset (link to tset), tack, tic, toe, tput, and tset</seg>
 reset (link to tset), tack, tic, toe, tput, and tset</seg>
-<seg>libcurses.[a,so] (link to libncurses.[a,so]), libform.[a,so], libmenu.[a,so], 
-libncurses++.a, libncurses.[a,so], and libpanel.[a,so]</seg></seglistitem>
+<seg>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.</seg></seglistitem>
 </segmentedlist>
 </segmentedlist>
 
 
 <variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
 <variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
@@ -212,4 +283,3 @@ menu displayed during the kernel's <command>make menuconfig</command></para>
 </sect2>
 </sect2>
 
 
 </sect1>
 </sect1>
-

+ 3 - 1
chapter06/readline.xml

@@ -43,7 +43,9 @@ GCC, Glibc, Grep, Make, Ncurses, and Sed</seg></seglistitem>
 <varlistentry>
 <varlistentry>
 <term><parameter>SHLIB_LIBS=-lncurses</parameter></term>
 <term><parameter>SHLIB_LIBS=-lncurses</parameter></term>
 <listitem><para>This option forces Readline to link against the
 <listitem><para>This option forces Readline to link against the
-<filename class="libraryfile">libncurses</filename> library.</para></listitem>
+<filename class="libraryfile">libncurses</filename>
+(really, <filename class="libraryfile">libncursesw</filename>)
+library.</para></listitem>
 </varlistentry>
 </varlistentry>
 </variablelist>
 </variablelist>
 
 

+ 6 - 0
chapter06/sysklogd.xml

@@ -33,6 +33,12 @@ Sysklogd with Linux 2.6 series kernels</para>
 
 
 <screen><userinput>patch -Np1 -i ../&sysklogd-fixes-patch;</userinput></screen>
 <screen><userinput>patch -Np1 -i ../&sysklogd-fixes-patch;</userinput></screen>
 
 
+<para>The following patch makes sysklogd treat bytes in the 0x80--0x9f range
+literally in the messages being logged, instead of replacing them with octal
+codes. Such replacement caused damage to messages in UTF-8 encoding.</para>
+
+<screen><userinput>patch -Np1 -i ../&sysklogd-8bit-patch;</userinput></screen>
+
 <para>Compile the package:</para>
 <para>Compile the package:</para>
 
 
 <screen><userinput>make</userinput></screen>
 <screen><userinput>make</userinput></screen>

+ 6 - 17
chapter06/sysvinit.xml

@@ -84,26 +84,15 @@ ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
 
 
 su:S016:once:/sbin/sulogin
 su:S016:once:/sbin/sulogin
 
 
-1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
-2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
-3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
-4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
-5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
-6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600
+1:2345:respawn:/sbin/agetty tty1 9600
+2:2345:respawn:/sbin/agetty tty2 9600
+3:2345:respawn:/sbin/agetty tty3 9600
+4:2345:respawn:/sbin/agetty tty4 9600
+5:2345:respawn:/sbin/agetty tty5 9600
+6:2345:respawn:/sbin/agetty tty6 9600
 
 
 # End /etc/inittab</literal>
 # End /etc/inittab</literal>
 EOF</userinput></screen>
 EOF</userinput></screen>
-
-<para>The <parameter>-I '\033(K'</parameter> option tells
-<command>agetty</command> to send this escape sequence to the terminal
-before doing anything else. This escape sequence switches the console
-character set to a user-defined one, which can be modified by running
-the <command>setfont</command> program. The <command>console</command>
-initscript from the LFS-Bootscripts package calls the <command>setfont</command>
-program during system startup. Sending this escape sequence is
-necessary for people who use non-ISO 8859-1 screen fonts, but it does
-not affect native English speakers.</para>
-
 </sect2>
 </sect2>
 
 
 
 

+ 8 - 0
chapter06/texinfo.xml

@@ -29,6 +29,14 @@ Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, and Sed</seg></seglistitem>
 <sect2 role="installation">
 <sect2 role="installation">
 <title>Installation of Texinfo</title>
 <title>Installation of Texinfo</title>
 
 
+<para>The <command>info</command> program makes assumptions such as "a string
+occupies the same number of character cells on the screen and bytes in memory"
+and "one can break the string anywhere" that are incorrect in UTF-8 locales.
+While the patch below is not the proper solution, it at least hides the problem
+by falling back to English messages when a multibyte locale is in use:</para>
+
+<screen><userinput>patch -Np1 -i ../&texinfo-multibyte-patch;</userinput></screen>
+
 <para>Texinfo allows local users to overwrite arbitrary files via a symlink
 <para>Texinfo allows local users to overwrite arbitrary files via a symlink
 attack on temporary files. Apply the following patch to fix this:</para>
 attack on temporary files. Apply the following patch to fix this:</para>
 
 

+ 1 - 0
chapter06/udev.xml

@@ -78,6 +78,7 @@ the configuration files here:</para>
 
 
 <screen><userinput>install -m644 -D -v docs/writing_udev_rules/index.html /usr/share/doc/udev-&udev-version;/index.html</userinput></screen>
 <screen><userinput>install -m644 -D -v docs/writing_udev_rules/index.html /usr/share/doc/udev-&udev-version;/index.html</userinput></screen>
 
 
+<!-- Not for the LiveCD -->
 <!-- Edit Me -->
 <!-- Edit Me -->
 <para>Run the <command>udevstart</command> program to create our full
 <para>Run the <command>udevstart</command> program to create our full
 complement of device nodes.</para>
 complement of device nodes.</para>

+ 13 - 1
chapter06/vim.xml

@@ -53,7 +53,7 @@ class="directory">/etc</filename>:</para>
 <variablelist>
 <variablelist>
 <varlistentry>
 <varlistentry>
 <term><parameter>--enable-multibyte</parameter></term>
 <term><parameter>--enable-multibyte</parameter></term>
-<listitem><para>This optional but highly recommended switch enables support for
+<listitem><para>This switch enables support for
 editing files in multibyte character encodings.  This is needed if using a
 editing files in multibyte character encodings.  This is needed if using a
 locale with a multibyte character set. This switch is also helpful to be able to
 locale with a multibyte character set. This switch is also helpful to be able to
 edit text files initially created in Linux distributions like Fedora Core that
 edit text files initially created in Linux distributions like Fedora Core that
@@ -75,6 +75,18 @@ redirecting the output to a log file.</para>
 
 
 <screen><userinput>make install</userinput></screen>
 <screen><userinput>make install</userinput></screen>
 
 
+<para>In UTF-8 locales, the <command>vimtutor</command> program
+tries to convert the tutorials from ISO-8859-1 to UTF-8. Since
+some tutorials are not in ISO-8859-1, the text in them is thus made unreadable.
+If you unpacked the <filename>vim-&vim-version;-lang.tar.gz</filename>
+archive and are going to use a UTF-8 based locale, remove non-ISO-8859-1
+tutorials. An English tutorial will be used instead.</para>
+<!-- Removal is used instead of conversion in order for the user to be able to
+painlessly revert his UTF-8 locale choice. -->
+
+<screen><userinput>rm -f /usr/share/vim/vim64/tutor/tutor.{gr,pl,ru,sk}
+rm -f /usr/share/vim/vim64/tutor/tutor.??.*</userinput></screen>
+
 <para>Many users are used to using <command>vi</command> instead of
 <para>Many users are used to using <command>vi</command> instead of
 <command>vim</command>. To allow execution of <command>vim</command>
 <command>vim</command>. To allow execution of <command>vim</command>
 when users habitually enter <command>vi</command>, create a
 when users habitually enter <command>vi</command>, create a

+ 6 - 0
chapter07/bootscripts.xml

@@ -47,6 +47,12 @@
 
 
 <screen><userinput>make install</userinput></screen>
 <screen><userinput>make install</userinput></screen>
 
 
+    <para>The <command>console</command> script that comes with
+    LFS-Bootscripts-&lfs-bootscripts-version; doesn't support Unicode. Install
+    a replacement version:</para>
+
+<screen><userinput>install -m755 ../console /etc/rc.d/init.d</userinput></screen>
+
   </sect2>
   </sect2>
 
 
   <sect2 id="contents-bootscripts" role="content">
   <sect2 id="contents-bootscripts" role="content">

+ 186 - 75
chapter07/console.xml

@@ -17,96 +17,207 @@
 
 
   <para>This section discusses how to configure the <command>console</command>
   <para>This section discusses how to configure the <command>console</command>
   bootscript that sets up the keyboard map and the console font. If non-ASCII
   bootscript that sets up the keyboard map and the console font. If non-ASCII
-  characters (e.g., the British pound sign and Euro character) will not be used
-  and the keyboard is a U.S. one, skip this section. Without the configuration
-  file, the <command>console</command> bootscript will do nothing.</para>
+  characters (e.g., the copyright sign, the British pound sign and Euro symbol)
+  will not be used and the keyboard is a U.S. one, skip this section. Without
+  the configuration file, the <command>console</command> bootscript will do
+  nothing.</para>
 
 
   <para>The <command>console</command> script reads the
   <para>The <command>console</command> script reads the
   <filename>/etc/sysconfig/console</filename> file for configuration information.
   <filename>/etc/sysconfig/console</filename> file for configuration information.
   Decide which keymap and screen font will be used. Various language-specific
   Decide which keymap and screen font will be used. Various language-specific
-  HOWTO's can also help with this (see <ulink
-  url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. A pre-made
-  <filename>/etc/sysconfig/console</filename> file with known settings for several
-  countries was installed with the LFS-Bootscripts package, so the relevant
-  section can be uncommented if the country is supported. If still in doubt, look
-  in the <filename class="directory">/usr/share/kbd</filename> directory for valid
-  keymaps and screen fonts. Read <filename>loadkeys(1)</filename> and
-  <filename>setfont(8)</filename> to determine the correct arguments for
-  these programs. Once decided, create the configuration file with the following
-  command:</para>
-
-<screen><userinput>cat &gt;/etc/sysconfig/console &lt;&lt;"EOF"
-<literal>KEYMAP="<replaceable>[arguments for loadkeys]</replaceable>"
-FONT="<replaceable>[arguments for setfont]</replaceable>"</literal>
+  HOWTO's can also help with this, see <ulink
+  url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. If still in
+  doubt, look in the <filename class="directory">/usr/share/kbd</filename>
+  directory for valid keymaps and screen fonts. Read
+  <filename>loadkeys(1)</filename> and <filename>setfont(8)</filename> manual
+  pages to determine the correct arguments for these programs.</para>
+
+  <para>The <filename>/etc/sysconfig/console</filename> file should contain lines
+  of the form: VARIABLE="value". The following variables are recognized:</para>
+
+  <variablelist>
+
+    <varlistentry>
+      <term>KEYMAP</term>
+      <listitem>
+        <para>This variable specifies the arguments for the
+        <command>loadkeys</command> program, typically, the name of keymap
+        to load, e.g. "es". If this variable is not set, the bootscript will
+        not run the <command>loadkeys</command> program, and the default kernel
+        keymap will be used.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>KEYMAP_CORRECTIONS</term>
+      <listitem>
+        <para>This (rarely used) variable
+        specifies the arguments for the second call to the
+        <command>loadkeys</command> program. This is useful if the stock keymap
+        is not completely satisfactory and a small adjustment has to be made. E.g.,
+        to include the Euro sign into a keymap that normally doesn't have it,
+        set this variable to "euro2".</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>FONT</term>
+      <listitem>
+        <para>This variable specifies the arguments for the
+        <command>setfont</command> program. Typically, this includes the font
+        name, "-m", and the name of the application character map to load.
+        E.g., in order to load the "lat1-16" font together with the "8859-1"
+        application character map, set this variable to "lat1-16 -m 8859-1".
+        If this variable is not set, the bootscript will not run the
+        <command>setfont</command> program, and the default VGA font will be
+        used together with the default application character map.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>UNICODE</term>
+      <listitem>
+        <para>Set this variable to "1", "yes" or "true" in order to put the
+        console into UTF-8 mode. This is useful in UTF-8 based locales and
+        harmful otherwise.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>LEGACY_CHARSET</term>
+      <listitem>
+        <para>For many keyboard layouts, there is no stock Unicode keymap in
+        the Kbd package. The <command>console</command> bootscript will
+        convert an available keymap to UTF-8 on the fly if this variable is
+        set to the encoding of the available non-UTF-8 keymap. Note, however,
+        that dead keys and composing will not work in UTF-8 mode without the
+        special kernel patch.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>BROKEN_COMPOSE</term>
+      <listitem>
+        <para>Set this to "0" if you are going to apply that kernel patch in
+        Chapter 8. Note that you also have to add the character set expected
+        by composition rules in your keymap to the FONT variable after the
+        "-m" switch.</para>
+      </listitem>
+    </varlistentry>
+
+  </variablelist>
+
+  <para>Support for compiling the keymap directly into the kernel has been
+  removed because there were reports that it leads to incorrect results.</para>
+
+  <para>Some examples:</para>
+
+  <itemizedlist>
+
+    <listitem>
+      <para>For a non-Unicode setup, only the KEYMAP and FONT variables are
+      generally needed. E.g., for a Polish setup, one would use:</para>
+
+<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<literal># Begin /etc/sysconfig/console
+
+KEYMAP="pl2"
+FONT="lat2a-16 -m 8859-2"
+
+# End /etc/sysconfig/console</literal>
 EOF</userinput></screen>
 EOF</userinput></screen>
+    </listitem>
 
 
-  <para>For example, for Spanish users who also want to use the Euro
-  character (accessible by pressing AltGr+E), the following settings are
-  correct:</para>
+    <listitem>
+      <para>As mentioned above, it is sometimes necessary to adjust a
+      stock keymap slightly. The following example adds the Euro symbol to the
+      German keymap:</para>
 
 
-<screen role="nodump"><userinput>cat &gt;/etc/sysconfig/console &lt;&lt;"EOF"
-<literal>KEYMAP="es euro2"
-FONT="lat9-16 -u iso01"</literal>
+<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<literal># Begin /etc/sysconfig/console
+
+KEYMAP="de-latin1"
+KEYMAP_CORRECTIONS="euro2"
+FONT="lat0-16 -m 8859-15"
+
+# End /etc/sysconfig/console</literal>
 EOF</userinput></screen>
 EOF</userinput></screen>
+    </listitem>
 
 
-  <note>
-    <para>The <envar>FONT</envar> line above is correct only for the ISO 8859-15
-    character set. If using ISO 8859-1 and, therefore, a pound sign
-    instead of Euro, the correct <envar>FONT</envar> line would be:</para>
+    <listitem>
+      <para>Here is a Unicode-enabled example for Bulgarian, where a stock
+      UTF-8 keymap exists and defines no dead keys or composition rules:</para>
 
 
-<screen role="nodump"><userinput>FONT="lat1-16"</userinput></screen>
-  </note>
+<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<literal># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="bg_bds-utf8"
+FONT="LatArCyrHeb-16"
 
 
-  <para>If the <envar>KEYMAP</envar> or <envar>FONT</envar> variable is not set,
-  the <command>console</command> initscript will not run the corresponding
-  program.</para>
-
-  <para>In some keymaps, the Backspace and Delete keys send characters different
-  from ones in the default keymap built into the kernel. This confuses some
-  applications. For example, Emacs displays its help (instead of erasing the
-  character before the cursor) when Backspace is pressed. To check if the keymap
-  in use is affected (this works only for i386 keymaps):</para>
-
-<screen role="nodump"><userinput>zgrep '\W14\W' <replaceable>[/path/to/your/keymap]</replaceable></userinput></screen>
-
-  <para>If the keycode 14 is Backspace instead of Delete, create the
-  following keymap snippet to fix this issue:</para>
-
-<screen role="nodump"><userinput>mkdir -pv /etc/kbd &amp;&amp; cat &gt; /etc/kbd/bs-sends-del &lt;&lt;"EOF"
-<literal>                  keycode  14 = Delete Delete Delete Delete
-              alt keycode  14 = Meta_Delete
-        altgr alt keycode  14 = Meta_Delete
-                  keycode 111 = Remove
-    altgr control keycode 111 = Boot
-      control alt keycode 111 = Boot
-altgr control alt keycode 111 = Boot</literal>
+# End /etc/sysconfig/console</literal>
+EOF</userinput></screen>
+    </listitem>
+
+    <listitem>
+      <para>Due to the use of a 512-glyph LatArCyrHeb-16 font in the previous
+      example, bright colors are no longer available on the Linux console unless
+      a framebuffer is used. If one wants to have bright colors without
+      framebuffer and can live without characters not belonging to his language,
+      it is still possible to use a language-specific 256-glyph font, as
+      illustrated below. This would, however, also break single quotes in manual
+      pages.</para>
+
+      <!-- And even with the LatArCyrHeb-16 font, copying-and-pasting produces
+      non-ASCII variants of opening and closing single quote instead of ` and '.
+      Maybe another sed has to be added to groff instructions that will remove
+      both issues. -->
+
+<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<literal># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="bg_bds-utf8"
+FONT="cyr-sun16"
+
+# End /etc/sysconfig/console</literal>
 EOF</userinput></screen>
 EOF</userinput></screen>
+    </listitem>
 
 
-  <para>Tell the <command>console</command> script to load this
-  snippet after the main keymap:</para>
+    <listitem>
+      <para>The following example illustrates keymap autoconversion from
+      ISO-8859-15 to UTF-8 and enabling dead keys in Unicode mode:</para>
 
 
-<screen role="nodump"><userinput>cat &gt;&gt;/etc/sysconfig/console &lt;&lt;"EOF"
-<literal>KEYMAP_CORRECTIONS="/etc/kbd/bs-sends-del"</literal>
+<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<literal># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="de-latin1"
+KEYMAP_CORRECTIONS="euro2"
+LEGACY_CHARSET="iso-8859-15"
+BROKEN_COMPOSE="0"
+FONT="LatArCyrHeb-16 -m 8859-15"
+
+# End /etc/sysconfig/console</literal>
 EOF</userinput></screen>
 EOF</userinput></screen>
+    </listitem>
+
+    <listitem>
+      <para>For Chinese, Japanese, Korean and some other languages, the Linux
+      console cannot be configured to display the needed characters. Users
+      who need such languages should install the X Window System, fonts that
+      cover the necessary character ranges, and the proper input Method (e.g.
+      SCIM, it supports a wide variety of languages).</para>
+    </listitem>
 
 
-  <para>To compile the keymap directly into the kernel instead of
-  setting it every time from the <command>console</command> bootscript,
-  follow the instructions given in <xref linkend="ch-bootable-kernel" role="."/>
-  Doing this ensures that the keyboard will always work as expected,
-  even when booting into maintenance mode (by passing
-  <parameter>init=/bin/sh</parameter> to the kernel), because the
-  <command>console</command> bootscript will not be run in that
-  situation. Additionally, the kernel will not set the screen font
-  automatically. This should not pose many problems because ASCII characters
-  will be handled correctly, and it is unlikely that a user would need
-  to rely on non-ASCII characters while in maintenance mode.</para>
-
-  <para>Since the kernel will set up the keymap, it is possible to omit
-  the <envar>KEYMAP</envar> variable from the
-  <filename>/etc/sysconfig/console</filename> configuration file. It can
-  also be left in place, if desired, without consequence.  Keeping it
-  could be beneficial if running several different kernels where it is
-  difficult to ensure that the keymap is compiled into every one of
-  them.</para>
+  </itemizedlist>
+
+  <!-- Added because folks keep posting their console file with X questions
+  to blfs-support list -->
+  <note>
+    <para>The <filename>/etc/sysconfig/console</filename> file only controls
+    Linux text console localization. It has nothing to do with setting the proper
+    keyboard layout and terminal fonts in X Window System.</para>
+  </note>
 
 
 </sect1>
 </sect1>

+ 38 - 15
chapter07/profile.xml

@@ -69,17 +69,19 @@
   for the desired language (e.g., <quote>en</quote>) and
   for the desired language (e.g., <quote>en</quote>) and
   <replaceable>[CC]</replaceable> with the two-letter code for the appropriate
   <replaceable>[CC]</replaceable> with the two-letter code for the appropriate
   country (e.g., <quote>GB</quote>). <replaceable>[charmap]</replaceable> should
   country (e.g., <quote>GB</quote>). <replaceable>[charmap]</replaceable> should
-  be replaced with the canonical charmap for your chosen locale.</para>
+  be replaced with the canonical charmap for your chosen locale. Optional
+  modifiers such as <quote>@euro</quote> may also be present.</para>
 
 
   <para>The list of all locales supported by Glibc can be obtained by running
   <para>The list of all locales supported by Glibc can be obtained by running
   the following command:</para>
   the following command:</para>
 
 
 <screen role="nodump"><userinput>locale -a</userinput></screen>
 <screen role="nodump"><userinput>locale -a</userinput></screen>
 
 
-  <para>Locales can have a number of synonyms, e.g. <quote>ISO-8859-1</quote>
+  <para>Charmaps can have a number of aliases, e.g. <quote>ISO-8859-1</quote>
   is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
   is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
-  Some applications cannot handle the various synonyms correctly, so it is
-  safest to choose the canonical name for a particular locale. To determine
+  Some applications cannot handle the various synonyms correctly (e.g. require
+  that "UTF-8" is written as "UTF-8", not "utf8"), so it is safest in most
+  cases to choose the canonical name for a particular locale. To determine
   the canonical name, run the following command, where <replaceable>[locale
   the canonical name, run the following command, where <replaceable>[locale
   name]</replaceable> is the output given by <command>locale -a</command> for
   name]</replaceable> is the output given by <command>locale -a</command> for
   your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para>
   your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para>
@@ -115,6 +117,7 @@ LC_ALL=[locale name] locale int_prefix</userinput></screen>
   Further instructions assume that there are no such error messages from
   Further instructions assume that there are no such error messages from
   Glibc.</para>
   Glibc.</para>
 
 
+  <!-- FIXME: the xlib example will became obsolete real soon -->
   <para>Some packages beyond LFS may also lack support for your chosen locale. One
   <para>Some packages beyond LFS may also lack support for your chosen locale. One
   example is the X library (part of the X Window System), which outputs the
   example is the X library (part of the X Window System), which outputs the
   following error message:</para>
   following error message:</para>
@@ -139,23 +142,43 @@ LC_ALL=[locale name] locale int_prefix</userinput></screen>
 <screen><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
 <screen><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
 <literal># Begin /etc/profile
 <literal># Begin /etc/profile
 
 
-export LANG=<replaceable>[ll]</replaceable>_<replaceable>[CC]</replaceable>.<replaceable>[charmap]</replaceable>
+export LANG=<replaceable>[ll]</replaceable>_<replaceable>[CC]</replaceable>.<replaceable>[charmap]</replaceable><replaceable>[@modifiers]</replaceable>
 export INPUTRC=/etc/inputrc
 export INPUTRC=/etc/inputrc
 
 
 # End /etc/profile</literal>
 # End /etc/profile</literal>
 EOF</userinput></screen>
 EOF</userinput></screen>
 
 
+  <para>The <quote>C</quote> (default) and <quote>en_US</quote> (the recommended
+  one for United States English users) locales are different. <quote>C</quote>
+  uses the US-ASCII 7-bit character set, and treats bytes with the high bit set
+  as invalid characters. That's why, e.g., the <command>ls</command> command
+  substitutes them with question marks in that locale. Also, an attempt to send
+  mail with such characters from Mutt or Pine results in non-RFC-conforming
+  messages being set (the charset in the outgoing mail is indicatsed as "unknown
+  8-bit"). So you can use the <quote>C</quote> locale only if you are sure that
+  you will never need 8-bit characters.</para>
+
+  <para>UTF-8 based locales are not supported well by many programs. E.g., the
+  <command>watch</command> program displays only ASCII characters in UTF-8
+  locales and has no such restriction in traditional 8-bit locales like en_US.
+  Without patches and/or installing software beyond BLFS, in UTF-8 based locales
+  you will not be able to do such basic tasks as printing plain-text files from
+  the command line, recording Windows-readable CDs with filenames containing
+  non-ASCII characters, viewing ID3v1 tags in MP3 files and so on. It is also
+  impossible (without damaging non-ASCII characters) to connect using ssh from
+  the system using a UTF-8 based locale to a host that still uses a traditional
+  8-bit locale, and vice versa. In short, use UTF-8 only if you are going to
+  use KDE or GNOME and never open the terminal, or if you are going to tolerate
+  bugs.</para>
+  <!-- All abovementioned problems except "watch" have a known fix beyond BLFS -->
+
   <note>
   <note>
-    <para>The <quote>C</quote> (default) and <quote>en_US</quote> (the
-    recommended one for United States English users) locales are different.</para>
+    <para>Bug reports reproducible only in UTF-8 locales and for which there
+    is no patch or other fix mentioned in the report, will be closed immediately,
+    without investigation, with the "WONTFIX" resolution and a "don't use this
+    program or revert to non-UTF-8 locale" comment. Patches that have ill
+    effects in non-UTF-8 locales (other than replacement of translated program
+    messages with English ones) will be rejected.</para>
   </note>
   </note>
 
 
-  <para>Setting the keyboard layout, screen font, and locale-related environment
-  variables are the only internationalization steps needed to support locales
-  that use ordinary single-byte encodings and left-to-right writing direction.
-  More complex cases (including UTF-8 based locales) require additional steps
-  and additional patches because many applications tend to not work properly
-  under such conditions. These steps and patches are not included in the LFS
-  book and such locales are not yet supported by LFS.</para>
-
 </sect1>
 </sect1>

+ 39 - 0
chapter08/fstab.xml

@@ -65,4 +65,43 @@ EOF</userinput></screen>
   <filename>usbcore</filename> must be listed in
   <filename>usbcore</filename> must be listed in
   <filename>/etc/sysconfig/modules</filename>.</para>
   <filename>/etc/sysconfig/modules</filename>.</para>
 
 
+  <para>Filesystems with MS-DOS or Windows origin (i.e.: vfat, ntfs, smbfs, cifs,
+  iso9660, udf) need the <quote>iocharset</quote> mount option in order for
+  non-ASCII characters in file names to be interpreted properly. The value
+  of this option should be the same as the character set of your locale,
+  adjusted in such a way that the kernel understands it. This works if the
+  relevant character set definition (found under File systems -&gt;
+  Native Language Support) has been compiled into the kernel
+  or built as a module. The <quote>codepage</quote> option is also needed for
+  vfat and smbfs filesystems. It
+  should be set to the codepage number used under MS-DOS in your country. E.g.,
+  in order to mount USB flash drives, a ru_RU.KOI8-R user would need the
+  following line in <filename>/etc/fstab</filename>:</para>
+
+<screen>/dev/sda1    /media/flash vfat noauto,user,quiet,showexec,iocharset=koi8r,codepage=866 0 0</screen>
+
+  <para>The corresponding line for ru_RU.UTF-8 users is:</para>
+
+<screen>/dev/sda1    /media/flash vfat noauto,user,quiet,showexec,iocharset=utf8,codepage=866 0 0</screen>
+
+  <note><para>In the latter case, the kernel emits the following message:</para>
+
+<screen><computeroutput>FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!</computeroutput></screen>
+
+  <para>This negative recommendation should be ignored, since all other values
+  of the <quote>iocharset</quote> option result in wrong display of filenames in
+  UTF-8 locales.</para></note>
+
+  <para>It is also possible to specify default codepage and iocharset values for
+  some filesystems during kernel configuration, the relevant parameters
+  are named
+  <quote>Default NLS Option</quote> (CONFIG_NLS_DEFAULT),
+  <quote>Default Remote NLS Option</quote> (CONFIG_SMB_NLS_DEFAULT),
+  <quote>Default codepage for FAT</quote> (CONFIG_FAT_DEFAULT_CODEPAGE), and
+  <quote>Default iocharset for FAT</quote> (CONFIG_FAT_DEFAULT_IOCHARSET).
+  There is no way to specify these settings for the
+  ntfs filesystem at kernel compilation time.</para>
+  <!-- Personally, I find it more foolproof to always specify the iocharset and
+  codepage in /etc/fstab for MS-based filesystems - Alexander E. Patrakov -->
+
 </sect1>
 </sect1>

+ 8 - 8
chapter08/kernel.xml

@@ -48,6 +48,13 @@
     in the kernel source tree for alternative methods to the way this book
     in the kernel source tree for alternative methods to the way this book
     configures the kernel.</para>
     configures the kernel.</para>
 
 
+    <para>By default, Linux kernel generates wrong sequences of bytes when
+    dead keys are used in UTF-8 keyboard mode. Also, one cannot copy and paste
+    non-ASCII characters when UTF-8 mode is aciive. Fix these issues with the
+    patch:</para>
+
+<screen><userinput>patch -Np1 -i ../&linux-utf8-patch;</userinput></screen>
+
     <para>Prepare for compilation by running the following command:</para>
     <para>Prepare for compilation by running the following command:</para>
 
 
 <screen><userinput>make mrproper</userinput></screen>
 <screen><userinput>make mrproper</userinput></screen>
@@ -57,14 +64,7 @@
     kernel compilation. Do not rely on the source tree being clean after
     kernel compilation. Do not rely on the source tree being clean after
     un-tarring.</para>
     un-tarring.</para>
 
 
-    <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
-    compile the keymap into the kernel, issue the command below:</para>
-
-<screen role="nodump"><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to  keymap]</replaceable> &gt; \
-    drivers/char/defkeymap.c</userinput></screen>
-
-    <para>For example, if using a Dutch keyboard, use
-    <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
+    <!-- Support for compiling a keymap into the kernel is deliberately removed -->
 
 
     <para>Configure the kernel via a menu-driven interface. BLFS has some
     <para>Configure the kernel via a menu-driven interface. BLFS has some
     information regarding particular kernel configuration requirements of
     information regarding particular kernel configuration requirements of

+ 6 - 2
general.ent

@@ -22,6 +22,7 @@
 <!ENTITY alpha-gnu "ftp://alpha.gnu.org/gnu/">
 <!ENTITY alpha-gnu "ftp://alpha.gnu.org/gnu/">
 <!ENTITY kernel "http://www.kernel.org/pub/">
 <!ENTITY kernel "http://www.kernel.org/pub/">
 <!ENTITY sourceforge "http://prdownloads.sourceforge.net/">
 <!ENTITY sourceforge "http://prdownloads.sourceforge.net/">
+<!ENTITY alexpatches "&lfs-root;~alexander/patches/">
 
 
 <!ENTITY % patches-entities SYSTEM "patches.ent">
 <!ENTITY % patches-entities SYSTEM "patches.ent">
 %patches-entities;
 %patches-entities;
@@ -44,10 +45,12 @@
 <!ENTITY flex-version "2.5.31">
 <!ENTITY flex-version "2.5.31">
 <!ENTITY gawk-version "3.1.5">
 <!ENTITY gawk-version "3.1.5">
 <!ENTITY gcc-version "4.0.2">
 <!ENTITY gcc-version "4.0.2">
+<!ENTITY gdbm-version "1.8.3">
 <!ENTITY gettext-version "0.14.5">
 <!ENTITY gettext-version "0.14.5">
 <!ENTITY glibc-version "2.3.6">
 <!ENTITY glibc-version "2.3.6">
 <!ENTITY grep-version "2.5.1a">
 <!ENTITY grep-version "2.5.1a">
-<!ENTITY groff-version "1.19.2">
+<!ENTITY groff-version "1.18.1.1">
+<!ENTITY groff-patchlevel "10">
 <!ENTITY grub-version "0.97">
 <!ENTITY grub-version "0.97">
 <!ENTITY gzip-version "1.3.5">
 <!ENTITY gzip-version "1.3.5">
 <!ENTITY hotplug-version "2004_09_23">
 <!ENTITY hotplug-version "2004_09_23">
@@ -63,11 +66,12 @@
 <!ENTITY linux-libc-headers-version "2.6.12.0">
 <!ENTITY linux-libc-headers-version "2.6.12.0">
 <!ENTITY m4-version "1.4.4">
 <!ENTITY m4-version "1.4.4">
 <!ENTITY make-version "3.80">
 <!ENTITY make-version "3.80">
-<!ENTITY man-version "1.6b">
+<!ENTITY man-db-version "2.4.3">
 <!ENTITY man-pages-version "2.17">
 <!ENTITY man-pages-version "2.17">
 <!ENTITY mktemp-version "1.5">
 <!ENTITY mktemp-version "1.5">
 <!ENTITY module-init-tools-version "3.2.2">
 <!ENTITY module-init-tools-version "3.2.2">
 <!ENTITY ncurses-version "5.5">
 <!ENTITY ncurses-version "5.5">
+<!-- <!ENTITY ncurses-date "20050319"> -->
 <!ENTITY patch-version "2.5.4">
 <!ENTITY patch-version "2.5.4">
 <!ENTITY perl-version "5.8.7">
 <!ENTITY perl-version "5.8.7">
 <!ENTITY procps-version "3.2.6">
 <!ENTITY procps-version "3.2.6">

+ 19 - 3
patches.ent

@@ -1,12 +1,15 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
 
 <!-- Start of Common Patches -->
 <!-- Start of Common Patches -->
-<!ENTITY bzip2-docs-patch "bzip2-&bzip2-version;-install_docs-1.patch">
 <!ENTITY bzip2-bzgrep-patch "bzip2-&bzip2-version;-bzgrep_security-1.patch">
 <!ENTITY bzip2-bzgrep-patch "bzip2-&bzip2-version;-bzgrep_security-1.patch">
+<!ENTITY bzip2-docs-patch "bzip2-&bzip2-version;-install_docs-1.patch">
 
 
+<!ENTITY coreutils-i18n-patch "coreutils-&coreutils-version;-i18n-1.patch">
 <!ENTITY coreutils-suppress-patch "coreutils-&coreutils-version;-suppress_uptime_kill_su-1.patch">
 <!ENTITY coreutils-suppress-patch "coreutils-&coreutils-version;-suppress_uptime_kill_su-1.patch">
 <!ENTITY coreutils-uname-patch "coreutils-&coreutils-version;-uname-1.patch">
 <!ENTITY coreutils-uname-patch "coreutils-&coreutils-version;-uname-1.patch">
 
 
+<!ENTITY diffutils-i18n-patch "diffutils-&diffutils-version;-i18n-1.patch">
+
 <!ENTITY expect-spawn-patch "expect-&expect-version;-spawn-1.patch">
 <!ENTITY expect-spawn-patch "expect-&expect-version;-spawn-1.patch">
 
 
 <!ENTITY flex-fixes-patch "flex-&flex-version;-debian_fixes-3.patch">
 <!ENTITY flex-fixes-patch "flex-&flex-version;-debian_fixes-3.patch">
@@ -15,24 +18,37 @@
 
 
 <!ENTITY gcc-specs-patch "gcc-&gcc-version;-specs-1.patch">
 <!ENTITY gcc-specs-patch "gcc-&gcc-version;-specs-1.patch">
 
 
+<!ENTITY grep-fixes-patch "grep-&grep-version;-redhat_fixes-2.patch">
+
+<!ENTITY groff-debian-patch "groff_&groff-version;-&groff-patchlevel;.diff.gz">
+
 <!ENTITY gzip-security_fix-patch "gzip-&gzip-version;-security_fixes-1.patch">
 <!ENTITY gzip-security_fix-patch "gzip-&gzip-version;-security_fixes-1.patch">
 
 
+<!ENTITY kbd-backspace-patch "kbd-&kbd-version;-backspace-1.patch">
 <!ENTITY kbd-gcc4_fixes-patch "kbd-&kbd-version;-gcc4_fixes-1.patch">
 <!ENTITY kbd-gcc4_fixes-patch "kbd-&kbd-version;-gcc4_fixes-1.patch">
 
 
 <!ENTITY inetutils-gcc4_fixes-patch "inetutils-&inetutils-version;-gcc4_fixes-3.patch">
 <!ENTITY inetutils-gcc4_fixes-patch "inetutils-&inetutils-version;-gcc4_fixes-3.patch">
 <!ENTITY inetutils-man_pages-patch "inetutils-&inetutils-version;-no_server_man_pages-1.patch">
 <!ENTITY inetutils-man_pages-patch "inetutils-&inetutils-version;-no_server_man_pages-1.patch">
 
 
+<!ENTITY linux-utf8-patch "linux-&linux-version;-utf8_input-2.patch">
+
 <!ENTITY mktemp-tempfile-patch "mktemp-&mktemp-version;-add_tempfile-3.patch">
 <!ENTITY mktemp-tempfile-patch "mktemp-&mktemp-version;-add_tempfile-3.patch">
 
 
+<!ENTITY ncurses-fixes-patch "ncurses-&ncurses-version;-fixes-1.patch">
+<!-- <!ENTITY ncurses-rollup-patch "ncurses-&ncurses-version;-&ncurses-date;-patch.sh.bz2"> -->
+
 <!ENTITY perl-libc-patch "perl-&perl-version;-libc-1.patch">
 <!ENTITY perl-libc-patch "perl-&perl-version;-libc-1.patch">
 
 
+<!ENTITY sysklogd-8bit-patch "sysklogd-&sysklogd-version;-8bit-1.patch">
+
 <!ENTITY shadow-configure-patch "shadow-&shadow-version;-configure_fix-1.patch">
 <!ENTITY shadow-configure-patch "shadow-&shadow-version;-configure_fix-1.patch">
 
 
 <!ENTITY sysklogd-fixes-patch "sysklogd-&sysklogd-version;-fixes-1.patch">
 <!ENTITY sysklogd-fixes-patch "sysklogd-&sysklogd-version;-fixes-1.patch">
 
 
-<!ENTITY tar-sparse_fix-patch "tar-&tar-version;-sparse_fix-1.patch">
 <!ENTITY tar-gcc4_fix-patch "tar-&tar-version;-gcc4_fix_tests-1.patch">
 <!ENTITY tar-gcc4_fix-patch "tar-&tar-version;-gcc4_fix_tests-1.patch">
+<!ENTITY tar-sparse_fix-patch "tar-&tar-version;-sparse_fix-1.patch">
 
 
-<!ENTITY texinfo-tempfile_fix-patch "texinfo-&texinfo-version;-tempfile_fix-2.patch">
+<!ENTITY texinfo-multibyte-patch "texinfo-&texinfo-version;-multibyte-2.patch">
+<!ENTITY texinfo-tempfile_fix-patch "texinfo-&texinfo-version;-tempfile_fix-1.patch">
 
 
 <!ENTITY util-linux-cramfs-patch "util-linux-&util-linux-version;-cramfs-1.patch">
 <!ENTITY util-linux-cramfs-patch "util-linux-&util-linux-version;-cramfs-1.patch">