mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-07-17 17:55:08 +01:00
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:
parent
31435cae54
commit
a20bfb4974
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user