Merge remote-tracking branch 'origin/trunk' into xry111/clfs-ng

This commit is contained in:
Xi Ruoyao 2022-11-19 16:27:13 +08:00
commit b59b371e1f
No known key found for this signature in database
GPG Key ID: ACAAD20E19E710E3
17 changed files with 101 additions and 90 deletions

View File

@ -52,19 +52,19 @@ bash: no job control in this shell</computeroutput></screen>
process, with controlling terminal set up.</para>
<para>The <parameter>-i</parameter> option given to the <command>env</command>
command will clear all variables of the environment. After that, only
command will clear all the variables in the environment. After that, only
the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
<envar>PATH</envar> variables are set again. The
<parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
variable to the default value specified by <command>agetty</command>. This variable is
needed for programs like <command>vim</command> and <command>less</command>
to operate properly. If other variables are desired, such as
needed so programs like <command>vim</command> and <command>less</command>
can operate properly. If other variables are desired, such as
<envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
them again.</para>
them.</para>
<para>Notice that <filename class="directory">/tools/bin</filename> is not
in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
used on the target machine.</para>
used.</para>
<para>Note that the <command>bash</command> prompt will say
<computeroutput>I have no name!</computeroutput> This is normal because the

View File

@ -13,15 +13,15 @@
<sect2>
<title>Cleaning</title>
<para>First, remove the currently installed documentation to prevent them
<para>First, remove the currently installed documentation files to prevent them
from ending up in the final system, and to save about 35 MB:</para>
<screen><userinput>rm -rf /usr/share/{info,man,doc}/*</userinput></screen>
<para>Second, on a modern Linux system, the libtool .la files are only
useful for libltdl. No libraries in LFS are expected to be loaded by
libltdl, and it's known that some .la files can cause BLFS packages
fail to build. Remove those files now:</para>
useful for libltdl. No libraries in LFS are loaded by
libltdl, and it's known that some .la files can cause BLFS package
failures. Remove those files now:</para>
<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
@ -42,9 +42,9 @@
and your current LFS system is in a good state. Your system can now be
backed up for later reuse. In case of fatal failures in the subsequent
chapters, it often turns out that removing everything and starting over
(more carefully) is the best option to recover. Unfortunately, all the
(more carefully) is the best way to recover. Unfortunately, all the
temporary files will be removed, too. To avoid spending extra time to
redo something which has been built successfully, creating a backup of
redo something which has been done successfully, creating a backup of
the current LFS system may prove useful.
</para>
@ -71,10 +71,7 @@
<para>
Note that the instructions below specify the home directory of the host
system's <systemitem class="username">root</systemitem> user, which is
typically found on the root filesystem.
</para>
<para>
typically found on the root file system.
Replace <envar>$HOME</envar> by a directory of your choice if you
do not want to have the backup stored in <systemitem
class="username">root</systemitem>'s home directory.

View File

@ -34,11 +34,11 @@
<primary sortas="e-/var/log/wtmp">/var/log/wtmp</primary>
</indexterm>
<para>Historically, Linux maintains a list of the mounted file systems in the
<para>Historically, Linux maintained a list of the mounted file systems in the
file <filename>/etc/mtab</filename>. Modern kernels maintain this list
internally and expose it to the user via the <filename
class="directory">/proc</filename> filesystem. To satisfy utilities that
expect the presence of <filename>/etc/mtab</filename>, create the following
expect to find <filename>/etc/mtab</filename>, create the following
symbolic link:</para>
<screen><userinput>ln -sv /proc/self/mounts /etc/mtab</userinput></screen>
@ -159,13 +159,13 @@ EOF</userinput></screen>
<para>The created groups are not part of any standard&mdash;they are groups
decided on in part by the requirements of the Udev configuration in Chapter
9, and in part by common convention employed by a number of existing Linux
9, and in part by common conventions employed by a number of existing Linux
distributions. In addition, some test suites rely on specific users or
groups. The Linux Standard Base (LSB, available at <ulink
url="https://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that,
besides the group <systemitem class="groupname">root</systemitem> with a
Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
with a GID of 1 be present. The GID of 5 is widely used for
with a GID of 1 be present. The GID of 5 is widely used for the
<systemitem class="groupname">tty</systemitem> group, and the number 5 is
also used in <phrase revision="systemd">systemd</phrase>
<phrase revision="sysv"><filename>/etc/fstab</filename></phrase> for the
@ -179,7 +179,7 @@ EOF</userinput></screen>
or the parent user namespace, but <quote>do not exist</quote> on the local
machine or in the separate namespace). We assign
<systemitem class="username">nobody</systemitem> and
<systemitem class="groupname">nogroup</systemitem> for it to avoid an
<systemitem class="groupname">nogroup</systemitem> to avoid an
unnamed ID. But other distros may treat this ID differently, so any
portable program should not depend on this assignment.</para>

View File

@ -15,12 +15,12 @@
</indexterm>
<para>Applications running in user space utilize various file
systems exported by the kernel to communicate
systems created by the kernel to communicate
with the kernel itself. These file systems are virtual: no disk
space is used for them. The content of the file systems resides in
space is used for them. The content of these file systems resides in
memory.</para>
<para>Begin by creating directories on which the file systems will be
<para>Begin by creating the directories on which these virtual file systems will be
mounted:</para>
<screen><userinput>mkdir -pv /{proc,sys,run}</userinput></screen>
@ -30,7 +30,7 @@
<para>The kernel has already mounted
<systemitem class="filesystem">devtmpfs</systemitem>.
Mount the remaining virtual kernel filesystems:</para>
Mount the remaining virtual kernel file systems:</para>
<screen><userinput>mkdir -pv /dev/{pts,shm}
mount -vt devpts /dev/pts /dev/pts -o gid=5,mode=620

View File

@ -59,7 +59,7 @@
<term><parameter>-G</parameter></term>
<listitem>
<para>Omit parts of the test suite that won't work
without a GNU bc present.</para>
until the bc program has been installed.</para>
</listitem>
</varlistentry>

View File

@ -87,7 +87,7 @@ cd build</userinput></screen>
<varlistentry>
<term><parameter>--enable-gold</parameter></term>
<listitem>
<para>Build the gold linker and install it as ld.gold (along side the
<para>Build the gold linker and install it as ld.gold (alongside the
default linker).</para>
</listitem>
</varlistentry>
@ -118,7 +118,7 @@ cd build</userinput></screen>
<varlistentry>
<term><parameter>--with-system-zlib</parameter></term>
<listitem>
<para>Use the installed zlib library rather than building the
<para>Use the installed zlib library instead of building the
included version.</para>
</listitem>
</varlistentry>
@ -143,7 +143,7 @@ cd build</userinput></screen>
a custom system, this target-specific directory in <filename
class="directory">/usr</filename> is not required. <filename
class="directory">$(exec_prefix)/$(target_alias)</filename> would be
used if the system was used to cross-compile (for example, compiling a
used if the system were used to cross-compile (for example, compiling a
package on an Intel machine that generates code that can be executed
on PowerPC machines).</para>
</listitem>
@ -164,7 +164,7 @@ cd build</userinput></screen>
<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
<para>Twelve tests fail in the gold testsuite when the
<para>Twelve tests fail in the gold test suite when the
<option>--enable-default-pie</option> and
<option>--enable-default-ssp</option> options are passed to GCC.
<!-- Caused by egrep deprecation. Note that we don't "patch" temp grep.
@ -179,8 +179,8 @@ cd build</userinput></screen>
some gas tests may fail if parallel jobs are used. If you are not
assured of the correctness of gas, invoke
<command>make check-gas</command> to run gas testsuite separately and
all tests should pass. Three gprofng tests result
<literal>ERROR</literal> and they are counted as
all tests should pass. Three gprofng tests yield the
<literal>ERROR</literal> result, and they are counted as
<literal>UNRESOLVED</literal> in the summary.</para>
<para>Install the package:</para>
@ -273,7 +273,7 @@ rm -fv /usr/share/man/man1/gprofng.1</userinput></screen>
<varlistentry id="elfedit">
<term><command>elfedit</command></term>
<listitem>
<para>Updates the ELF header of ELF files</para>
<para>Updates the ELF headers of ELF files</para>
<indexterm zone="ch-system-binutils elfedit">
<primary sortas="b-elfedit">elfedit</primary>
</indexterm>
@ -293,7 +293,7 @@ rm -fv /usr/share/man/man1/gprofng.1</userinput></screen>
<varlistentry id="gprofng">
<term><command>gprofng</command></term>
<listitem>
<para>Gather and analyze performance data</para>
<para>Gathers and analyzes performance data</para>
<indexterm zone="ch-system-binutils gprofng">
<primary sortas="b-gprofng">gprofng</primary>
</indexterm>
@ -326,7 +326,7 @@ rm -fv /usr/share/man/man1/gprofng.1</userinput></screen>
<varlistentry id="ld.bfd">
<term><command>ld.bfd</command></term>
<listitem>
<para>Hard link to <command>ld</command></para>
<para>A hard link to <command>ld</command></para>
<indexterm zone="ch-system-binutils ld.bfd">
<primary sortas="b-ld.bfd">ld.bfd</primary>
</indexterm>

View File

@ -55,7 +55,7 @@
--disable-static \
--disable-doxygen-docs \
--disable-xml-docs \
--docdir=/usr/share/doc/dbus-&dbus-version; \
--docdir=/usr/share/doc/dbus-&dbus-version; \
--with-system-socket=/run/dbus/system_bus_socket</userinput></screen>
<variablelist>

View File

@ -43,7 +43,7 @@
<sect2 role="installation">
<title>Installation of Glibc</title>
<para>First, fix an issue building Glibc with parallel jobs and make-4.4
<para>First, fix an issue building Glibc with parallel jobs and Make-4.4
or later:</para>
<screen><userinput remap="pre">sed '/MAKEFLAGS :=/s/)r/) -r/' -i Makerules</userinput></screen>
@ -90,7 +90,7 @@ cd build</userinput></screen>
<varlistentry>
<term><parameter>--enable-kernel=&linux-major-version;.&linux-minor-version;</parameter></term>
<listitem>
<para>This option tells the build system that this glibc may
<para>This option tells the build system that this Glibc may
be used with kernels as old as
&linux-major-version;.&linux-minor-version;. This means generating
workarounds in case a system call introduced in a later version
@ -218,7 +218,7 @@ esac</userinput></screen>
<screen><userinput remap="install">make install</userinput></screen>
<para>Fix hardcoded path to the executable loader in
<para>Fix a hardcoded path to the executable loader in the
<command>ldd</command> script:</para>
<screen><userinput remap="install">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</userinput></screen>
@ -236,9 +236,9 @@ mkdir -pv /var/cache/nscd</userinput></screen>
install -v -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service</userinput></screen>
<para>Next, install the locales that can make the system respond in a
different language. None of the locales are required, but if some of them
are missing, the test suites of future packages would skip important
testcases.</para>
different language. None of these locales are required, but if some of them
are missing, the test suites of some packages will skip important
test cases.</para>
<para>Individual locales can be installed using the
<command>localedef</command> program. E.g., the second
@ -291,7 +291,7 @@ localedef -i zh_TW -f UTF-8 zh_TW.UTF-8</userinput></screen>
<para>In addition, install the locale for your own country, language and
character set.</para>
<para>Alternatively, install all locales listed in the
<para>Alternatively, install all the locales listed in the
<filename>glibc-&glibc-version;/localedata/SUPPORTED</filename> file
(it includes every locale listed above and many more) at once with the
following time-consuming command:</para>
@ -357,7 +357,7 @@ EOF</userinput></screen>
</sect3>
<sect3>
<title>Adding time zone data</title>
<title>Adding Time Zone Data</title>
<para>Install and set up the time zone data with the following:</para>
<screen><userinput>tar -xf ../../tzdata&tzdata-version;.tar.gz

View File

@ -20,20 +20,28 @@
work is to know what each package is used for and why you (or the system)
may need it.</para>
<para>We do not recommend using optimizations. They can make
<para>We do not recommend using customized optimizations. They can make
a program run slightly faster, but they may also cause compilation
difficulties and problems when running the program. If a package refuses to
compile when using optimization, try to compile it without optimization and
see if that fixes the problem. Even if the package does compile when using
difficulties, and problems when running the program. If a package refuses to
compile with a customized optimization, try to compile it without
optimization and see if that fixes the problem. Even if the package does compile when using a customized
optimization, there is the risk it may have been compiled incorrectly because
of the complex interactions between the code and build tools. Also note that
of the complex interactions between the code and the build tools. Also note that
the <option>-march</option> and <option>-mtune</option> options using values
not specified in the book have not been tested. This may cause problems with
the toolchain packages (Binutils, GCC and Glibc). The small potential gains
achieved in using compiler optimizations are often outweighed by the risks.
achieved by customizing compiler optimizations are often outweighed by the risks.
First-time builders of LFS are encouraged to build without custom
optimizations. The subsequent system will still run very fast and be stable
at the same time.</para>
optimizations.</para>
<para>On the other hand, we keep the optimizations enabled by the default
configuration of the packages. In addition, we sometimes explicitly enable an
optimized configuration provided by a package but not enabled by
default. The package maintainers have already tested these configurations
and consider them safe, so it's not likely they would break the build.
Generally the default configuration already enables <option>-O2</option>
or <option>-O3</option>, so the resulting system will still run very fast
without any customized optimization, and be stable at the same time.</para>
<para>Before the installation instructions, each installation page provides
information about the package, including a concise description of what it
@ -42,31 +50,31 @@
instructions, there is a list of programs and libraries (along with brief
descriptions) that the package installs.</para>
<note><para>The SBU values and required disk space includes test suite data
<note><para>The SBU values and required disk space include test suite data
for all applicable packages in <xref linkend="chapter-building-system"/>. SBU
values have been calculated using a single CPU core (-j1) for all
operations.</para></note>
<sect2>
<title>About libraries</title>
<title>About Libraries</title>
<para>In general, the LFS editors discourage building and installing static
libraries. The original purpose for most static libraries has been made
libraries. Most static libraries have been made
obsolete in a modern Linux system. In addition, linking a static library
into a program can be detrimental. If an update to the library is needed
to remove a security problem, all programs that use the static library will
need to be relinked to the new library. Since the use of static libraries
to remove a security problem, every program that uses the static library will
need to be relinked with the new library. Since the use of static libraries
is not always obvious, the relevant programs (and the procedures needed to
do the linking) may not even be known.</para>
<para>In the procedures in this chapter, we remove or disable installation of
<para>The procedures in this chapter remove or disable installation of
most static libraries. Usually this is done by passing a
<option>--disable-static</option> option to <command>configure</command>.
In other cases, alternate means are needed. In a few cases, especially
glibc and gcc, the use of static libraries remains essential to the general
Glibc and GCC, the use of static libraries remains an essential feature of the
package building process. </para>
<para>For a more complete discussion of libraries, see the discussion
<para>For a more complete discussion of libraries, see
<ulink url="&blfs-book;introduction/libraries.html">
Libraries: Static or shared?</ulink> in the BLFS book.</para>

View File

@ -12,10 +12,11 @@
<para>Package Management is an often requested addition to the LFS Book. A
Package Manager tracks the installation of files, making it easier to
remove and upgrade packages. As well as the binary and library files, a
package manager will handle the installation of configuration files. Before
remove and upgrade packages. A good package manager will also handle the
configuration files specially to keep the user configuration when the
package is reinstalled or upgraded. Before
you begin to wonder, NO&mdash;this section will not talk about nor recommend
any particular package manager. What it provides is a roundup of the more
any particular package manager. What it does provide is a roundup of the more
popular techniques and how they work. The perfect package manager for you may
be among these techniques, or it may be a combination of two or more of these
techniques. This section briefly mentions issues that may arise when upgrading
@ -61,8 +62,8 @@
</listitem>
<listitem>
<para>If Linux API headers or glibc need to be upgraded to a newer
version, (e.g., from glibc-2.31 to glibc-2.32), it is safer to
<para>If the Linux API headers or Glibc need to be upgraded to a newer
version, (e.g., from Glibc-2.31 to Glibc-2.32), it is safer to
rebuild LFS. Though you <emphasis>may</emphasis> be able to rebuild
all the packages in their dependency order, we do not recommend
it. </para>
@ -202,7 +203,7 @@
it is installed in <filename class="directory">/usr</filename> though in
reality it is installed in the
<filename class="directory">/usr/pkg</filename> hierarchy. Installing in
this manner is not usually a trivial task. For example, consider that you
this manner is not usually a trivial task. For example, suppose you
are installing a package libfoo-1.1. The following instructions may
not install the package properly:</para>
@ -321,7 +322,8 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
depend on the position of files on a disk system. Cloning an LFS build to
another computer with the same architecture as the base system is as
simple as using <command>tar</command> on the LFS partition that contains
the root directory (about 250MB uncompressed for a base LFS build), copying
the root directory (about 900MB uncompressed for a basic LFS build), copying
<!-- D. Bryant created LFS 11.2 in October 2022; 900MB is (roughly) the size of his rsync archive. -->
that file via network transfer or CD-ROM / USB stick to the new system, and expanding
it. After that, a few configuration files will have to be changed.
Configuration files that may need to be updated include:

View File

@ -42,15 +42,15 @@
<para>Prepare procps-ng for compilation:</para>
<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr \
<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr \
--docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
--disable-static \
--disable-static \
--disable-kill</userinput></screen>
<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr \
<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr \
--docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
--disable-static \
--disable-kill \
--disable-static \
--disable-kill \
--with-systemd</userinput></screen>
<variablelist>

View File

@ -23,7 +23,7 @@
<sect2 role="package">
<title/>
<para>The Readline package is a set of libraries that offers command-line
<para>The Readline package is a set of libraries that offer command-line
editing and history capabilities.</para>
<segmentedlist>
@ -61,14 +61,14 @@ sed -i '/{OLDSUFF}/c:' support/shlib-install</userinput></screen>
--docdir=/usr/share/doc/readline-&readline-version;</userinput></screen>
<variablelist>
<title>The meaning of the configure option:</title>
<title>The meaning of the new configure option:</title>
<varlistentry>
<term><parameter>--with-curses</parameter></term>
<listitem>
<para>This option tells Readline that it can find the termcap
library functions in the curses library, rather than a separate
termcap library. It allows generating a correct
library functions in the curses library, not a separate
termcap library. This will generate the correct
<filename>readline.pc</filename> file.</para>
</listitem>
</varlistentry>

View File

@ -244,7 +244,7 @@ useradd -D --gid 999</userinput></screen>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed directory</segtitle>
<segtitle>Installed directories</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem>
@ -254,7 +254,7 @@ useradd -D --gid 999</userinput></screen>
newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv,
sg (link to newgrp), su, useradd, userdel, usermod,
vigr (link to vipw), and vipw</seg>
<seg>/etc/default</seg>
<seg>/etc/default and /usr/include/shadow</seg>
<seg>libsubid.so</seg>
</seglistitem>
</segmentedlist>

View File

@ -27,7 +27,7 @@
<para>The <application>Tcl</application> package contains the Tool Command Language,
a robust general-purpose scripting language. The <application>Expect</application> package
is written in the <application>Tcl</application> language.</para>
is written in <application>Tcl</application> (pronounced "tickle").</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -45,7 +45,7 @@
<title>Installation of Tcl</title>
<para>This package and the next two (Expect and DejaGNU) are
installed to support running the test suites for binutils and GCC and other
installed to support running the test suites for Binutils, GCC and other
packages. Installing three packages for testing purposes may seem
excessive, but it is very reassuring, if not essential, to know that the
most important tools are working properly.</para>
@ -87,9 +87,9 @@ sed -e "s|$SRCDIR/unix/pkgs/itcl&itcl-ver;|/usr/lib/itcl&itcl-ver;|" \
unset SRCDIR</userinput></screen>
<para>The various <quote>sed</quote> instructions after the
<quote>make</quote> command removes references to the build directory from
the configuration files and replaces them with the install directory.
This is not mandatory for the remainder of LFS, but may be needed in case a
<quote>make</quote> command remove references to the build directory from
the configuration files and replace them with the install directory.
This is not mandatory for the remainder of LFS, but may be needed if a
package built later uses Tcl.</para>
<para>To test the results, issue:</para>

View File

@ -44,11 +44,10 @@
<para>Prepare Util-linux for compilation:</para>
<screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
<screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--bindir=/usr/bin \
--libdir=/usr/lib \
--sbindir=/usr/sbin \
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
@ -59,13 +58,13 @@
--disable-static \
--without-python \
--without-systemd \
--without-systemdsystemunitdir</userinput></screen>
--without-systemdsystemunitdir \
--docdir=/usr/share/doc/util-linux-&util-linux-version;</userinput></screen>
<screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
<screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--bindir=/usr/bin \
--libdir=/usr/lib \
--sbindir=/usr/sbin \
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
@ -74,7 +73,8 @@
--disable-runuser \
--disable-pylibmount \
--disable-static \
--without-python</userinput></screen>
--without-python \
--docdir=/usr/share/doc/util-linux-&util-linux-version;</userinput></screen>
<para>The --disable and --without options prevent warnings about
building components that require packages not in LFS or are

View File

@ -139,6 +139,7 @@ if ( $package == "procps-ng" ) $dirpath = "https://gitlab.com/procps-ng/procps/
if ( $package == "psmisc" ) $dirpath = "https://gitlab.com/psmisc/psmisc/-/tags";
if ( $package == "Python" ) $dirpath = "https://www.python.org/downloads/source/";
if ( $package == "shadow" ) $dirpath = "https://github.com/shadow-maint/shadow/releases";
if ( $package == "sysvinit" ) $dirpath = "https://github.com/slicer69/sysvinit/releases";
if ( $package == "MarkupSafe" ) $dirpath = "https://pypi.python.org/pypi/MarkupSafe/";
if ( $package == "Jinja" ) $dirpath = "https://pypi.python.org/pypi/Jinja2/";
if ( $package == "systemd" ) $dirpath = "https://github.com/systemd/systemd/releases";
@ -275,6 +276,9 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
if ( $package == "shadow" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "sysvinit" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "XML-Parser" )
{
$max = find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d).tar.*$/" );

View File

@ -356,7 +356,7 @@
<!ENTITY jinja2-version "3.1.2">
<!ENTITY jinja2-size "262 KB">
<!ENTITY jinja2-url "https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-&jinja2-version;.tar.gz">
<!ENTITY jinja2-url "&pypi-src;/J/Jinja2/Jinja2-&jinja2-version;.tar.gz">
<!ENTITY jinja2-md5 "d31148abd89c1df1cdb077a55db27d02">
<!ENTITY jinja2-home "https://jinja.palletsprojects.com/en/3.0.x/">
<!ENTITY jinja2-fin-du "3.0 MB">
@ -487,7 +487,7 @@
<!ENTITY markupsafe-version "2.1.1">
<!ENTITY markupsafe-size "20 KB">
<!ENTITY markupsafe-url "https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-&markupsafe-version;.tar.gz">
<!ENTITY markupsafe-url "&pypi-src;/M/MarkupSafe/MarkupSafe-&markupsafe-version;.tar.gz">
<!ENTITY markupsafe-md5 "9809f9fdd98bc835b0c21aa8f79cbf30">
<!ENTITY markupsafe-home "https://palletsprojects.com/p/markupsafe/">
<!ENTITY markupsafe-fin-du "168 KB">