diff --git a/chapter05/findutils-inst.xml b/chapter05/findutils-inst.xml index b05c8089f..985242b33 100644 --- a/chapter05/findutils-inst.xml +++ b/chapter05/findutils-inst.xml @@ -5,8 +5,25 @@ 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: +patch which fixes the following issues: + + +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. + +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. + +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. + patch -Np1 -i ../findutils-&findutils-patch-version;.patch diff --git a/chapter06/findutils-inst.xml b/chapter06/findutils-inst.xml index 90d38edb0..122acf259 100644 --- a/chapter06/findutils-inst.xml +++ b/chapter06/findutils-inst.xml @@ -3,14 +3,34 @@ Installing Findutils -A patch must be applied in order to prevent compilation -errors. The patch fixes a variable conflict and some bad syntax: +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: + + +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. + +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. + +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. + patch -Np1 -i ../findutils-&findutils-patch-version;.patch -The locate program from Findutils may -segfault if it encounters a long path name. To correct this, apply -the second patch: +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. patch -Np1 -i ../findutils-&findutils-segfault-patch-version;-segfault.patch diff --git a/chapter06/gawk-inst.xml b/chapter06/gawk-inst.xml index d426e38a3..2c5d72266 100644 --- a/chapter06/gawk-inst.xml +++ b/chapter06/gawk-inst.xml @@ -3,15 +3,36 @@ Installation of Gawk -This package requires its patch to be applied before you can -install it: +Before installing the Gawk package you have to apply a patch to it +which fixes the following issues: + + +Gawk's default location for libexecdir is $prefix/libexecdir/awk. This location doesn't +comply with FHS (FHS never mentions a directory called +libexecdir). + +The patch allows us to pass +--libexecdir 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 (/usr/bin in +the book). + +The default data directory for gawk is $prefix/share/awk. 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 +$prefix/share/gawk-3.1.1 to be more +correct. + +The patch ensures that this directory ($prefix/share/gawk-3.1.1) is removed along +with its contents on a make uninstall. + patch -Np1 -i ../gawk-&gawk-patch-version;.patch -This patch alters the code that determines the location of the -libexec directory. The patch will allow us to override it by passing ---libexecdir to the configure script. - Prepare Gawk to be compiled: ./configure --prefix=/usr --libexecdir=/usr/bin