updated findutils + gawk patch explanations

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2423 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Gerard Beekmans 2003-02-04 05:18:40 +00:00
parent 31435cae54
commit a20bfb4974
3 changed files with 71 additions and 13 deletions

View File

@ -5,8 +5,25 @@
<para>The Findutils package is quite old and it has problems compiling
against newer Glibc versions (Glibc-2.0.x and up). You need to apply the
patch that fixes some variable conflicts you'd otherwise end up
with:</para>
patch which fixes the following issues:</para>
<itemizedlist>
<listitem><para>Findutils declares a function called basename, but this
function name is already used by the C standard libraries. This patch
changes the Findutils version of basename function so that it is called
basename2 instead.</para></listitem>
<listitem><para>Findutils uses an incorrect way to use library files. It
declares library functions, to tell the compiler what the name of the
function will be when the libraries are linked in. This syntax is invalid
and causes compiler warnings/errors. This patch removes this improper
syntax.</para></listitem>
<listitem><para>Every GNU package is supposed use a macro called _GNU_SOURCE.
This macro enables declarations of GNU library extension functions and so the
compiler will be able to detect name conflicts between functions more easily.
This patch adds this macro to the source code.</para></listitem>
</itemizedlist>
<para><screen><userinput>patch -Np1 -i ../findutils-&findutils-patch-version;.patch</userinput></screen></para>

View File

@ -3,14 +3,34 @@
<sect2>
<title>Installing Findutils</title>
<para>A patch must be applied in order to prevent compilation
errors. The patch fixes a variable conflict and some bad syntax:</para>
<para>The Findutils package is quite old and it has problems compiling
against newer Glibc versions (Glibc-2.0.x and up). You need to apply the
patch which fixes the following issues:</para>
<itemizedlist>
<listitem><para>Findutils declares a function called basename, but this
function name is already used by the C standard libraries. This patch
changes the Findutils version of basename function so that it is called
basename2 instead.</para></listitem>
<listitem><para>Findutils uses an incorrect way to use library files. It
declares library functions, to tell the compiler what the name of the
function will be when the libraries are linked in. This syntax is invalid
and causes compiler warnings/errors. This patch removes this improper
syntax.</para></listitem>
<listitem><para>Every GNU package is supposed use a macro called _GNU_SOURCE.
This macro enables declarations of GNU library extension functions and so the
compiler will be able to detect name conflicts between functions more easily.
This patch adds this macro to the source code.</para></listitem>
</itemizedlist>
<para><screen><userinput>patch -Np1 -i ../findutils-&findutils-patch-version;.patch</userinput></screen></para>
<para>The <userinput>locate</userinput> program from Findutils may
segfault if it encounters a long path name. To correct this, apply
the second patch:</para>
<para>There is a bug in locate.c of Findutils that causes a segmentation
fault to occur on very long path names. The problem is caused by the
get_short() function calculating negative numbers incorrectly. This patch
corrects this bug.</para>
<para><screen><userinput>patch -Np1 -i ../findutils-&findutils-segfault-patch-version;-segfault.patch</userinput></screen></para>

View File

@ -3,15 +3,36 @@
<sect2>
<title>Installation of Gawk</title>
<para>This package requires its patch to be applied before you can
install it:</para>
<para>Before installing the Gawk package you have to apply a patch to it
which fixes the following issues:</para>
<itemizedlist>
<listitem><para>Gawk's default location for libexecdir is <filename
class="directory">$prefix/libexecdir/awk</filename>. This location doesn't
comply with FHS (FHS never mentions a directory called
libexecdir).</para></listitem>
<listitem><para>The patch allows us to pass
<emphasis>--libexecdir</emphasis> to the configure script (without gawk
tacking on /awk to the end), so that we can use a more appropriate location
for gawk's libexecdir (<filename class="directory">/usr/bin</filename> in
the book).</para></listitem>
<listitem><para>The default data directory for gawk is <filename
class="directory">$prefix/share/awk</filename>. A package specific
directory should be named after the package and the version (gawk-3.1.1
instead of awk) because there may be more than one awk interpreter on a
system (and more than one version of gawk). The patch changes this to
<filename class="directory">$prefix/share/gawk-3.1.1</filename> to be more
correct.</para></listitem>
<listitem><para>The patch ensures that this directory (<filename
class="directory">$prefix/share/gawk-3.1.1</filename>) is removed along
with its contents on a make uninstall.</para></listitem>
</itemizedlist>
<para><screen><userinput>patch -Np1 -i ../gawk-&gawk-patch-version;.patch</userinput></screen></para>
<para>This patch alters the code that determines the location of the
libexec directory. The patch will allow us to override it by passing
<emphasis>--libexecdir</emphasis> to the configure script.</para>
<para>Prepare Gawk to be compiled:</para>
<para><screen><userinput>./configure --prefix=/usr --libexecdir=/usr/bin</userinput></screen></para>