summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/howitworks.docbook')
-rw-r--r--doc/howitworks.docbook158
1 files changed, 72 insertions, 86 deletions
diff --git a/doc/howitworks.docbook b/doc/howitworks.docbook
index 4472531..8b748f2 100644
--- a/doc/howitworks.docbook
+++ b/doc/howitworks.docbook
@@ -2,80 +2,71 @@
<title>How it works</title>
<para>
-In this chapter, we'll try to explain how autoepatch works, and how to
-extend it to patch and fix new problems. The reason to provide a
-throughout documentation about this is to make the maintainership of
-autoepatch simpler, so that if the developers currently involved in
-its writing would not be available, newcomers won't have to read all
-the code to find how it actually works.
+In this chapter, we'll try to explain how autoepatch works, and how to extend it
+to patch and fix new problems. Specifically, this chapter is intended to make
+maintaining autoepatch much simpler, especially for newcomers, who shouldn't
+have to read all the code to understand how it works.
</para>
<sect1 id="requirements">
<title>Requirements</title>
<para>
-Being a package that is going to be in the system set, and used by
-every user as a Portage component, autoepatch needs to have the
-minimum impact over the dependencies of that set. For this reason, the
-script is a bash script. As the targets for Gentoo software are less
-wide than the general GNU or Open Source targets, there's no need to
-use a portable subset of sh (as we already consider bash present), and
-it can depend on a few GNU tools, or at least tools that can support
-an acceptable subset of GNU parameters.
+Being a package that is going to be in the system set, and used by every user as
+a Portage component, autoepatch needs to have the minimum impact over the
+dependencies of that set. For this reason, the script is written in bash. As the
+targets for Gentoo software are less wide than the general GNU or Open Source
+targets, there's no need to use a portable subset of sh (as we already consider
+bash present), and it can depend on a few GNU tools, or at least tools that can
+support an acceptable subset of GNU parameters.
</para>
<para>
-There are basically two Gentoo specific softwares that are needed for
-autoepatch: the first is baselayout, as autoepatch loads
-/sbin/functions.sh to get functions like ebegin and eend, and
-similar; the other is Portage, as autoepatch uses the portageq
-command, and allows to the patchsets to use it.
+There are basically two Gentoo-specific dependencies that are needed for
+autoepatch: the first is baselayout, as autoepatch loads /sbin/functions.sh to
+get functions like ebegin and eend; the other is Portage, as autoepatch uses the
+portageq command, and allows the patchsets to use it.
</para>
<para>
-First of all, as most of the patchsets are expected to be actual patch
-files, the patch(1) command is supposed to be coming from GNU
-project. While FreeBSD uses Larry Wall's patch(1) command, that
-supports most of the options that GNU patch supports, there are some
-tricky behaviours on fuzzyness of patches. If patch(1) is not a
-GNU-compatible implementation, you can provide a GNU patch command
-named <emphasis>gpatch</emphasis> that will be prioritised over the
-normal patch(1).
+First of all, as most of the patchsets are expected to be actual patch files,
+the patch(1) command is supposed to be the GNU patch. While FreeBSD uses Larry
+Wall's patch(1) command that supports most of the options that GNU patch
+supports, there are some tricky behaviours on fuzzyness of patches. If patch(1)
+is not a GNU-compatible implementation, you can provide a GNU patch command
+named <emphasis>gpatch</emphasis> that will be prioritised over the normal
+patch(1).
</para>
<para>
-Another command on which behaviour the script relies more than just a
-bit is find(1). Considering the frequency of execution of the script
-itself, and thus of the targetting logic, the script tries to reduce
-as much as possible the processes spawn, so instead of using xargs(1)
-command to transform the find(1) output to input arguments to other
-commands, autoepatch relies on find(1) to support the <emphasis>-exec
-cmd {} +</emphasis> syntax.
+Another command on which behaviour the script relies more than just a bit is
+find(1). Considering the frequency of execution of the script itself, and thus
+of the targeting logic, the script tries to reduce as much as possible the
+processes spawned, so instead of using the xargs(1) command to transform the
+find(1) output to input arguments to other commands, autoepatch relies on
+find(1) to support the <emphasis>-exec cmd {} +</emphasis> syntax.
</para>
<para>
-Luckily not only GNU findutils, but also FreeBSD, Darwin and NetBSD find(1)
-implementations support that syntax. OpenBSD on the other hand does
-not, so to allow autoepatch to work on that operating system, a
-special handling for the find command was written: by replacing the
-string <emphasis>@findcmd@</emphasis> with the path, or the name, of a
-compatible find implementation (most likely GNU find), you can tell
-autoepatch to run an alternative command.
+Fortunately, FreeBSD, Darwin and NetBSD find(1) implementations support the GNU
+findutils syntax. OpenBSD on the other hand does not, so to allow autoepatch to
+work on that operating system, a special handling for the find command was
+written: by replacing the string <emphasis>@findcmd@</emphasis> with the path,
+or the name, of a compatible find implementation (most likely GNU find), you can
+tell autoepatch to run an alternative command.
</para>
<para>
-As there is often the need to get a temporary file, either for log or
-debugging purposes, or to store intermediate results, the mktemp
-utility is also required. Unfortunately, the mktemp utility found on
-most Linux implementations (Gentoo Linux included) comes from
-debianutils package, and has a syntax incompatible with the original
-BSD mktemp utility. As the autoepatch script does not get the USERLAND
-variable from Portage, and tries to be entirely transparent to that
-matter, the choice between the two implementations is done at runtime
-by checking the outcome of calling <emphasis>mktemp -V</emphasis>; on
-Debian implementation, this reports the version of the command itself,
-while it simply fails on BSD implementation. The emktemp wrapper is
-picked up from eutils.eclass.
+As there is often the need to get a temporary file, either for log or debugging
+purposes, or to store intermediate results, the mktemp utility is also required.
+Unfortunately, the mktemp utility found on most Linux implementations (Gentoo
+Linux included) comes from debianutils package, and has a syntax incompatible
+with the original BSD mktemp utility. As the autoepatch script does not get the
+USERLAND variable from Portage (and tries to be entirely transparent), the
+choice between the two implementations is done at runtime by checking the
+outcome of calling <emphasis>mktemp -V</emphasis>. On Debian implementation,
+this reports the version of the command itself, while it simply fails on BSD
+implementation. The emktemp wrapper is picked up from eutils.eclass.
</para>
</sect1>
@@ -84,11 +75,10 @@ picked up from eutils.eclass.
<title>Concepts</title>
<para>
-There aren't many concepts to describe on autoepatch because it is,
-basically, a simple set of scripts. The definitions that will be given
-here are not even proper "concepts" but this section is intented to
-clear up the terminology used, so that there can't be misunderstanding
-in the next sections and chapters.
+Autoepatch is, basically, a simple set of scripts. The definitions that will be
+given here are not even proper "concepts," but this section is intended to clear
+up the terminology used, to prevent any misunderstanding in the next sections
+and chapters.
</para>
<variablelist>
@@ -97,22 +87,20 @@ in the next sections and chapters.
<listitem>
<para>
- With this term, the documentation will refer to a set of scripts
- and actual patches, the base element handled by autoepatch itself.
- Despite the name used seem to limit a patchset to just patches,
- it's well possible that a patchset has no actual ".patch" file,
- and instead consist of a single shell script that describes the
- changes to apply to targets.
+ This is a set of scripts and actual patches, and is the base element handled
+ by autoepatch itself. Despite the name, it's possible that a "patchset" has
+ no actual ".patch" file, and instead consists of a single shell script that
+ describes the changes to will be applied to the targets.
</para>
<para>
- The patchsets can be found in the repository inside the patches
- directory, or for the installed copy in
- /usr/share/autoepatch/patches
- <footnote><para>
- For alternative prefixes support, see <xref
- linkend="prefixsupport" />.
- </para></footnote>
+ The patchsets can be found in the repository inside the patches/ directory,
+ or for the installed copy in /usr/share/autoepatch/patches.
+ <footnote>
+ <para>
+ For alternative prefixes support, see <xref linkend="#prefixsupport" />.
+ </para>
+ </footnote>
</para>
</listitem>
@@ -123,19 +111,18 @@ in the next sections and chapters.
<listitem>
<para>
- Under this name we consider a file, or a directory, on which the
- patchset applies. When the target is a directory, ad the patchset
- contains actual patches, the paths inside the patches should refer
- to the direct name of the files starting from the target directory
- (-p0 option to gpatch); when the target is a file instead, the
- patch will apply directly over the file. When instead the patchset
- consist of a function (or a series of functions), the target is
- passed as parameter, whichever the type it is.
+ This is a file or a directory on which the patchset applies. When the target
+ is a directory, and the patchset contains actual patches, the paths inside
+ the patches should refer to the direct name of the files starting from the
+ target directory (-p0 option to gpatch). When the target is a file, the
+ patch will apply directly over the file. When instead the patchset consist
+ of a function (or a series of functions), the target is passed as parameter,
+ whichever the type it is.
</para>
<para>
- For more informations about target, look at <xref
- linkend="writingpatchsets" />.
+ For more informations about target, look at <xref linkend="writingpatchsets"
+ />.
</para>
</listitem>
@@ -188,11 +175,10 @@ to pass the result of grep -l, also add the --null parameter.
<title>Alternative prefixes support</title>
<para>
-Although Portage, at the time of writing, it's limited to work as a
-primary package manager and does not support officially a way to
-install packages on an alternate prefix (like /usr/local or something
-else), autoepatch is designed to support being installed in an
-arbitrary prefix from day one.
+At the time of writing, Portage does not officially support a way to install
+packages on an alternate prefix (such as /usr/local). However, autoepatch has
+been designed from the beginning to support being installed in an arbitrary
+prefix.
</para>
<para>