mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-07-19 18:55:09 +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
|
<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
|
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
|
patch which fixes the following issues:</para>
|
||||||
with:</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><screen><userinput>patch -Np1 -i ../findutils-&findutils-patch-version;.patch</userinput></screen></para>
|
||||||
|
|
||||||
|
@ -3,14 +3,34 @@
|
|||||||
<sect2>
|
<sect2>
|
||||||
<title>Installing Findutils</title>
|
<title>Installing Findutils</title>
|
||||||
|
|
||||||
<para>A patch must be applied in order to prevent compilation
|
<para>The Findutils package is quite old and it has problems compiling
|
||||||
errors. The patch fixes a variable conflict and some bad syntax:</para>
|
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><screen><userinput>patch -Np1 -i ../findutils-&findutils-patch-version;.patch</userinput></screen></para>
|
||||||
|
|
||||||
<para>The <userinput>locate</userinput> program from Findutils may
|
<para>There is a bug in locate.c of Findutils that causes a segmentation
|
||||||
segfault if it encounters a long path name. To correct this, apply
|
fault to occur on very long path names. The problem is caused by the
|
||||||
the second patch:</para>
|
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>
|
<para><screen><userinput>patch -Np1 -i ../findutils-&findutils-segfault-patch-version;-segfault.patch</userinput></screen></para>
|
||||||
|
|
||||||
|
@ -3,15 +3,36 @@
|
|||||||
<sect2>
|
<sect2>
|
||||||
<title>Installation of Gawk</title>
|
<title>Installation of Gawk</title>
|
||||||
|
|
||||||
<para>This package requires its patch to be applied before you can
|
<para>Before installing the Gawk package you have to apply a patch to it
|
||||||
install it:</para>
|
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><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>Prepare Gawk to be compiled:</para>
|
||||||
|
|
||||||
<para><screen><userinput>./configure --prefix=/usr --libexecdir=/usr/bin</userinput></screen></para>
|
<para><screen><userinput>./configure --prefix=/usr --libexecdir=/usr/bin</userinput></screen></para>
|
||||||
|
Loading…
Reference in New Issue
Block a user