Merge branch 'trunk' of git.linuxfromscratch.org:lfs into trunk

This commit is contained in:
Bruce Dubbs
2025-09-04 11:44:46 -05:00
14 changed files with 325 additions and 44 deletions

View File

@@ -1139,7 +1139,7 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, <seg>Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
Make, Patch, Sed, and Texinfo</seg> Make, Patch, Pcre2, Sed, and Texinfo</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@@ -1168,9 +1168,7 @@
<segtitle>&external;</segtitle> <segtitle>&external;</segtitle>
<seglistitem> <seglistitem>
<seg> <seg>
<ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink> None
and
<ulink url="&blfs-book;general/libsigsegv.html">libsigsegv</ulink>
</seg> </seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@@ -1584,7 +1582,7 @@
<segtitle>&dependencies;</segtitle> <segtitle>&dependencies;</segtitle>
<seglistitem> <seglistitem>
<seg>Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, <seg>Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make,
Ncurses, and Sed</seg> Ncurses, Pcre2, and Sed</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@@ -1613,8 +1611,7 @@
<segtitle>&external;</segtitle> <segtitle>&external;</segtitle>
<seglistitem> <seglistitem>
<seg> <seg>
<ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink> or None
<ulink url="&blfs-book;general/pcre.html">PCRE</ulink>
</seg> </seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@@ -1759,7 +1756,7 @@
<segmentedlist id="libpipeline-testdeps"> <segmentedlist id="libpipeline-testdeps">
<segtitle>&testsuites;</segtitle> <segtitle>&testsuites;</segtitle>
<seglistitem> <seglistitem>
<seg>Check and Pkgconf</seg> <seg>Pkgconf</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@@ -2497,6 +2494,48 @@
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
<!-- Begin Pcre2 dependency info -->
<bridgehead renderas="sect2" id="pcre2-dep">Pcre2</bridgehead>
<segmentedlist id="pcre2-depends">
<segtitle>&dependencies;</segtitle>
<seglistitem>
<seg>Bash, Binutils, Bzip2, Coreutils, GCC, Glibc, GZip, Make, and
Readline</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="pcre2-rundeps">
<segtitle>&runtime;</segtitle>
<seglistitem>
<seg>Glibc</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="pcre2-testdeps">
<segtitle>&testsuites;</segtitle>
<seglistitem>
<seg>Grep</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="pcre2-before">
<segtitle>&before;</segtitle>
<seglistitem>
<seg>Grep and Less</seg>
</seglistitem>
</segmentedlist>
<segmentedlist id="pcre2-optdeps">
<segtitle>&external;</segtitle>
<seglistitem>
<seg>
<ulink url="&blfs-book;general/valgrind.html">Valgrind</ulink> and
<ulink url="https://thrysoee.dk/editline/">libedit</ulink>
</seg>
</seglistitem>
</segmentedlist>
<!-- Begin Perl dependency info --> <!-- Begin Perl dependency info -->
<bridgehead renderas="sect2" id="perl-dep">Perl</bridgehead> <bridgehead renderas="sect2" id="perl-dep">Perl</bridgehead>
@@ -2916,7 +2955,7 @@
<seglistitem> <seglistitem>
<seg>Acl, Bash, Binutils, Coreutils, Diffutils, Gawk, <seg>Acl, Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Lz4, Meson, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Lz4, Meson,
OpenSSL, Pkgconf, Sed, Util-linux, and Zstd</seg> OpenSSL, Pcre2, Pkgconf, Sed, Util-linux, and Zstd</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@@ -2983,7 +3022,6 @@
url="&blfs-book;general/python-modules.html#lxml">lxml</ulink>, url="&blfs-book;general/python-modules.html#lxml">lxml</ulink>,
<ulink url="&blfs-book;postlfs/make-ca.html">make-ca</ulink>, <ulink url="&blfs-book;postlfs/make-ca.html">make-ca</ulink>,
<ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>, <ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>,
<ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink>,
<ulink url="&pypi-home;pefile">pefile</ulink>, <ulink url="&pypi-home;pefile">pefile</ulink>,
<ulink url="&blfs-book;postlfs/polkit.html">Polkit</ulink>, <ulink url="&blfs-book;postlfs/polkit.html">Polkit</ulink>,
<ulink url='&pypi-home;/pyelftools'>pyelftools</ulink>, <ulink url='&pypi-home;/pyelftools'>pyelftools</ulink>,

View File

@@ -40,6 +40,21 @@
appropriate for the entry or if needed the entire day's listitem. appropriate for the entry or if needed the entire day's listitem.
--> -->
<listitem>
<para>2025-09-03</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Add the pcre2 package. Fixes
<ulink url='&lfs-ticket-root;5782'>#5782</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Add a description on how to use a kernel base+patch
in Chapter 3. Fixes
<ulink url='&lfs-ticket-root;5785'>#5785</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem> <listitem>
<para>2025-09-01</para> <para>2025-09-01</para>
<itemizedlist> <itemizedlist>

View File

@@ -292,6 +292,7 @@
<itemizedlist> <itemizedlist>
<title>Added:</title> <title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build --> <listitem><para></para></listitem> <!-- satisfy build -->
<listitem><para>pcre2</para></listitem>
</itemizedlist> </itemizedlist>
<itemizedlist> <itemizedlist>

View File

@@ -3,6 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent"> <!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities; %general-entities;
<!ENTITY kernel-directory "https://www.kernel.org/pub/linux/kernel/v6.x">
]> ]>
<sect1 id="ch-materials-packages"> <sect1 id="ch-materials-packages">
@@ -466,15 +467,43 @@
<note> <note>
<para>The Linux kernel is updated quite frequently, many times due to <para>The Linux kernel is updated quite frequently, many times due to
discoveries of security vulnerabilities. The latest available discoveries of security vulnerabilities. The latest available stable
<!--&linux-major-version;.&linux-minor-version;.x--> stable kernel kernel version may be used, unless the errata page says
version <!--should--> may be otherwise.</para>
used, unless the errata page says otherwise.</para>
<para>For users with limited speed or expensive bandwidth who wish to <para>For users with limited speed or expensive bandwidth who wish to
update the Linux kernel, a baseline version of the package and update the Linux kernel, a baseline version of the package and
patches can be downloaded separately. This may save some time or patches can be downloaded separately. This may save some time or
cost for a subsequent patch level upgrade within a minor release. cost for a subsequent patch level upgrade within a minor
release.</para>
<para>
As an example, for linux-&linux-version;, the following could be downloaded:
<itemizedlist spacing="compact">
<listitem>
<para>
<ulink url='&kernel-directory;/linux-&linux-majmin-version;.tar.xz'/>
</para>
</listitem>
<listitem>
<para>
<ulink url='&kernel-directory;/patch-&linux-version;.xz'/>
</para>
</listitem>
</itemizedlist>
Then in <xref linkend='ch-tools-linux-headers'/> and
<xref linkend='ch-bootable-kernel'/> unpack the kernel, change
to the package directory and then apply the patch with
<userinput>xzcat ../patch-&linux-version;.xz | patch -Np1</userinput>.
</para>
<para>
At this point, if a newer point version of the kernel is needed, then
only the newer patch is needed. However, if a new minor version is
desired, then both full minor version and any desired patch will both
need to be downloaded.
</para> </para>
</note> </note>
</listitem> </listitem>
@@ -606,6 +635,15 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>Pcre2 (&pcre2-version;) - <token>&pcre2-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&pcre2-home;"/></para>
<para>Download: <ulink url="&pcre2-url;"/></para>
<para>MD5 sum: <literal>&pcre2-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>Perl (&perl-version;) - <token>&perl-size;</token>:</term> <term>Perl (&perl-version;) - <token>&perl-size;</token>:</term>
<listitem> <listitem>

View File

@@ -42,11 +42,7 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Bash</title> <title>Installation of Bash</title>
<!--
<para>First, fix a problem related to cross compilation and gcc-15:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&bash-crosscompile-fix-patch;</userinput></screen>
-->
<para>Prepare Bash for compilation:</para> <para>Prepare Bash for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \ <screen><userinput remap="configure">./configure --prefix=/usr \

View File

@@ -23,6 +23,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="zstd.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="zstd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="file.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="file.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="readline.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="readline.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pcre.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="m4.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="m4.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bc.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="flex.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="flex.xml"/>

View File

@@ -39,11 +39,7 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Meson</title> <title>Installation of Meson</title>
<!--
<para>First, apply a patch that fixes an issue identified upstream:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&meson-fix-patch;</userinput></screen>
-->
<para>Compile Meson with the following command:</para> <para>Compile Meson with the following command:</para>
<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen> <screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>

185
chapter08/pcre.xml Normal file
View File

@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-pcre2" role="wrap">
<?dbhtml filename="pcre2.html"?>
<sect1info condition="script">
<productname>pcre2</productname>
<productnumber>&pcre2-version;</productnumber>
<address>&pcre2-url;</address>
</sect1info>
<title>Pcre2-&pcre2-version;</title>
<indexterm zone="ch-system-pcre2">
<primary sortas="a-Pcre2">Pcre2</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The pcre2 package contains a new generation of the Perl Compatible
Regular Expression libraries.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&pcre2-fin-sbu;</seg>
<seg>&pcre2-fin-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Pcre2</title>
<para>Prepare pcre2 for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--docdir=/usr/share/doc/pcre2-10.45 \
--enable-unicode \
--enable-jit \
--enable-pcre2-16 \
--enable-pcre2-32 \
--enable-pcre2grep-libz \
--enable-pcre2grep-libbz2 \
--enable-pcre2test-libreadline \
--disable-static</userinput></screen>
<variablelist>
<title>The meaning of the new configure options:</title>
<varlistentry>
<term><parameter>--enable-unicode</parameter></term>
<listitem>
<para>
This option enables Unicode support and includes the functions for
handling UTF-8/16/32 character strings in the library.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-jit</parameter></term>
<listitem>
<para>
This option enables Just-in-time compiling, which can greatly
speed up pattern matching.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-pcre2-16</parameter></term>
<listitem>
<para>
This option enables 16 bit character support.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-pcre2-32</parameter></term>
<listitem>
<para>
This option enables 32 bit character support.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-pcre2grep-libz</parameter></term>
<listitem>
<para>
This option adds support for reading .gz compressed files to pcre2grep.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-pcre2grep-libbz2</parameter></term>
<listitem>
<para>
This option adds support for reading .bz2 compressed files to pcre2grep.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-pcre2test-libreadline</parameter></term>
<listitem>
<para>
This option adds line editing and history features to the pcre2test program.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-pcre2" role="content">
<title>Contents of Pcre2</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem>
<seg>pcre2grep and pcre2test</seg>
<seg>libpcre2-8.so, libpcre2-16.so, libpcre2-32.so, and libpcre2-posix.so</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="pcre2grep">
<term><command>pcre2grep</command></term>
<listitem>
<para>is a version of grep that understands Perl compatible regular
expressions</para>
<indexterm zone="ch-system-pcre2 pcre2grep">
<primary sortas="b-pcre2grep">pcre2grep</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="pcre2test">
<term><command>pcre2test</command></term>
<listitem>
<para>can test a Perl compatible regular expression</para>
<indexterm zone="ch-system-pcre2 pcre2test">
<primary sortas="b-pcre2test">pcre2test</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@@ -40,11 +40,7 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Perl</title> <title>Installation of Perl</title>
<!--
<para>First, apply a security patch identified upstream:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&perl-upstream-fix-patch;</userinput></screen>
-->
<para>This version of Perl builds the Compress::Raw::Zlib and <para>This version of Perl builds the Compress::Raw::Zlib and
Compress::Raw::BZip2 modules. By Compress::Raw::BZip2 modules. By
default Perl will use an internal copy of the sources for the build. default Perl will use an internal copy of the sources for the build.

View File

@@ -43,11 +43,7 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Xz</title> <title>Installation of Xz</title>
<!--
<para>Apply a patch to fix an issue in xzgrep:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&xz-upstream-fix-patch;</userinput></screen>
-->
<para>Prepare Xz for compilation with:</para> <para>Prepare Xz for compilation with:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \ <screen><userinput remap="configure">./configure --prefix=/usr \

View File

@@ -398,7 +398,7 @@
<!ENTITY libffi-fin-sbu "1.7 SBU"> <!ENTITY libffi-fin-sbu "1.7 SBU">
<!ENTITY libpipeline-version "1.5.8"> <!ENTITY libpipeline-version "1.5.8">
<!ENTITY libpipeline-size "1046 KB"> <!ENTITY libpipeline-size "1,046 KB">
<!ENTITY libpipeline-url "&savannah;/releases/libpipeline/libpipeline-&libpipeline-version;.tar.gz"> <!ENTITY libpipeline-url "&savannah;/releases/libpipeline/libpipeline-&libpipeline-version;.tar.gz">
<!ENTITY libpipeline-md5 "17ac6969b2015386bcb5d278a08a40b5"> <!ENTITY libpipeline-md5 "17ac6969b2015386bcb5d278a08a40b5">
<!ENTITY libpipeline-home "https://libpipeline.nongnu.org/"> <!ENTITY libpipeline-home "https://libpipeline.nongnu.org/">
@@ -423,6 +423,7 @@
<!ENTITY linux-major-version "6"> <!ENTITY linux-major-version "6">
<!ENTITY linux-minor-version "16"> <!ENTITY linux-minor-version "16">
<!ENTITY linux-majmin-version "&linux-major-version;.&linux-minor-version;">
<!ENTITY linux-patch-version "1"> <!ENTITY linux-patch-version "1">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">--> <!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;"> <!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
@@ -496,7 +497,7 @@
<!ENTITY markupsafe-fin-sbu "less than 0.1 SBU"> <!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
<!ENTITY meson-version "1.8.3"> <!ENTITY meson-version "1.8.3">
<!ENTITY meson-size "2,282"> <!ENTITY meson-size "2,282 KB">
<!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz"> <!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
<!ENTITY meson-md5 "08221d2f515e759686f666ff6409a903"> <!ENTITY meson-md5 "08221d2f515e759686f666ff6409a903">
<!ENTITY meson-home "https://mesonbuild.com"> <!ENTITY meson-home "https://mesonbuild.com">
@@ -564,6 +565,14 @@
<!ENTITY patch-fin-du "13 MB"> <!ENTITY patch-fin-du "13 MB">
<!ENTITY patch-fin-sbu "0.2 SBU"> <!ENTITY patch-fin-sbu "0.2 SBU">
<!ENTITY pcre2-version "10.45">
<!ENTITY pcre2-size "2,024 KB">
<!ENTITY pcre2-url "&github;/PCRE2Project/pcre2/releases/download/pcre2-&pcre2-version;/pcre2-&pcre2-version;.tar.bz2">
<!ENTITY pcre2-md5 "f71abbe1b5adf25cd9af5d26ef223b66">
<!ENTITY pcre2-home "&github;/PCRE2Project/pcre2/">
<!ENTITY pcre2-fin-du "20 MB">
<!ENTITY pcre2-fin-sbu "0.5 SBU">
<!ENTITY perl-version-major "5"> <!ENTITY perl-version-major "5">
<!ENTITY perl-version-minor "42"> <!ENTITY perl-version-minor "42">
<!ENTITY perl-version-patch "0"> <!ENTITY perl-version-patch "0">

View File

@@ -91,13 +91,13 @@
<para>This package contains programs for compressing and decompressing <para>This package contains programs for compressing and decompressing
files. It is required to decompress many LFS packages.</para> files. It is required to decompress many LFS packages.</para>
</listitem> </listitem>
<!--
<listitem> <listitem>
<para>Check</para> <para>Check</para>
<para>This package provides a test harness for other programs.</para> <para>This package provides a test harness for other programs.</para>
</listitem> </listitem>
-->
<listitem> <listitem>
<para>Coreutils</para> <para>Coreutils</para>
@@ -480,6 +480,14 @@
the build procedure for several LFS packages.</para> the build procedure for several LFS packages.</para>
</listitem> </listitem>
<listitem>
<para>Pcre2</para>
<para>This package provides a set of functions that implement regular
expression pattern matching using the same syntax and semantics as
Perl 5.</para>
</listitem>
<listitem> <listitem>
<para>Perl</para> <para>Perl</para>

View File

@@ -15,10 +15,11 @@
<!-- If some package don't have the predefined strings in their <!-- If some package don't have the predefined strings in their
name, the next test must be fixed to match it also. Skip possible name, the next test must be fixed to match it also. Skip possible
duplicated URLs that may be split for PDF output --> duplicated URLs that may be split for PDF output -->
<xsl:if test="(contains( @url, '.tar.' ) or <xsl:if test="( (contains( @url, '.tar.' ) and not( ancestor::note ) ) or
contains( @url, '.tgz' ) or contains( @url, '.tgz' ) or
contains( @url, '.patch') ) and contains( @url, '.patch' )
not( ancestor-or-self::*/@condition = 'pdf' )" > ) and
not( ancestor-or-self::*/@condition = 'pdf' )" >
<!-- Get the md5sum --> <!-- Get the md5sum -->
<xsl:value-of select="../../para/literal"/> <xsl:value-of select="../../para/literal"/>

View File

@@ -16,10 +16,11 @@
<!-- If some package don't have the predefined strings in their <!-- If some package don't have the predefined strings in their
name, the next test must be fixed to match it also. Skip possible name, the next test must be fixed to match it also. Skip possible
duplicated URLs due that may be split for PDF output --> duplicated URLs due that may be split for PDF output -->
<xsl:if test="(contains(@url, '.tar.') or <xsl:if test="( (contains(@url, '.tar.') and not( ancestor::note ) ) or
contains(@url, '.tgz') or contains(@url, '.tgz' ) or
contains(@url, '.patch')) and contains(@url, '.patch')
not(ancestor-or-self::*/@condition = 'pdf')"> ) and
not(ancestor-or-self::*/@condition = 'pdf')">
<xsl:choose> <xsl:choose>
<xsl:when test="contains(@url,'?download')"> <xsl:when test="contains(@url,'?download')">
<xsl:value-of select="substring-before(@url,'?download')"/> <xsl:value-of select="substring-before(@url,'?download')"/>