Changeset b59b371


Ignore:
Timestamp:
11/19/2022 08:27:13 AM (17 months ago)
Author:
Xi Ruoyao <xry111@…>
Branches:
xry111/clfs-ng
Children:
2ef64c4
Parents:
4d3f41c (diff), 651f491 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

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

Files:
17 edited

Legend:

Unmodified
Added
Removed
  • chapter07/chroot.xml

    r4d3f41c rb59b371  
    5353
    5454  <para>The <parameter>-i</parameter> option given to the <command>env</command>
    55   command will clear all variables of the environment. After that, only
     55  command will clear all the variables in the environment. After that, only
    5656  the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
    5757  <envar>PATH</envar> variables are set again. The
    5858  <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
    5959  variable to the default value specified by <command>agetty</command>. This variable is
    60   needed for programs like <command>vim</command> and <command>less</command>
    61   to operate properly.  If other variables are desired, such as
     60  needed so programs like <command>vim</command> and <command>less</command>
     61  can operate properly.  If other variables are desired, such as
    6262  <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
    63   them again.</para>
     63  them.</para>
    6464
    6565  <para>Notice that <filename class="directory">/tools/bin</filename> is not
    6666  in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
    67   used on the target machine.</para>
     67  used.</para>
    6868
    6969  <para>Note that the <command>bash</command> prompt will say
  • chapter07/cleanup.xml

    r4d3f41c rb59b371  
    1414    <title>Cleaning</title>
    1515
    16     <para>First, remove the currently installed documentation to prevent them
     16    <para>First, remove the currently installed documentation files to prevent them
    1717    from ending up in the final system, and to save about 35 MB:</para>
    1818
     
    2020
    2121    <para>Second, on a modern Linux system, the libtool .la files are only
    22     useful for libltdl.  No libraries in LFS are expected to be loaded by
    23     libltdl, and it's known that some .la files can cause BLFS packages
    24     fail to build.  Remove those files now:</para>
     22    useful for libltdl.  No libraries in LFS are loaded by
     23    libltdl, and it's known that some .la files can cause BLFS package
     24    failures.  Remove those files now:</para>
    2525
    2626<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
     
    4343      backed up for later reuse. In case of fatal failures in the subsequent
    4444      chapters, it often turns out that removing everything and starting over
    45       (more carefully) is the best option to recover. Unfortunately, all the
     45      (more carefully) is the best way to recover. Unfortunately, all the
    4646      temporary files will be removed, too. To avoid spending extra time to
    47       redo something which has been built successfully, creating a backup of
     47      redo something which has been done successfully, creating a backup of
    4848      the current LFS system may prove useful.
    4949    </para>
     
    7272      Note that the instructions below specify the home directory of the host
    7373      system's <systemitem class="username">root</systemitem> user, which is
    74       typically found on the root filesystem.
    75     </para>
    76 
    77     <para>
     74      typically found on the root file system.
    7875      Replace <envar>$HOME</envar> by a directory of your choice if you
    7976      do not want to have the backup stored in <systemitem
  • chapter07/createfiles.xml

    r4d3f41c rb59b371  
    3535  </indexterm>
    3636
    37   <para>Historically, Linux maintains a list of the mounted file systems in the
     37  <para>Historically, Linux maintained a list of the mounted file systems in the
    3838  file <filename>/etc/mtab</filename>. Modern kernels maintain this list
    3939  internally and expose it to the user via the <filename
    4040  class="directory">/proc</filename> filesystem. To satisfy utilities that
    41   expect the presence of <filename>/etc/mtab</filename>, create the following
     41  expect to find <filename>/etc/mtab</filename>, create the following
    4242  symbolic link:</para>
    4343
     
    160160  <para>The created groups are not part of any standard&mdash;they are groups
    161161  decided on in part by the requirements of the Udev configuration in Chapter
    162   9, and in part by common convention employed by a number of existing Linux
     162  9, and in part by common conventions employed by a number of existing Linux
    163163  distributions. In addition, some test suites rely on specific users or
    164164  groups.  The Linux Standard Base (LSB, available at <ulink
     
    166166  besides the group <systemitem class="groupname">root</systemitem> with a
    167167  Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
    168   with a GID of 1 be present. The GID of 5 is widely used for
     168  with a GID of 1 be present. The GID of 5 is widely used for the
    169169  <systemitem class="groupname">tty</systemitem> group, and the number 5 is
    170170  also used in <phrase revision="systemd">systemd</phrase>
     
    180180  machine or in the separate namespace).  We assign
    181181  <systemitem class="username">nobody</systemitem> and
    182   <systemitem class="groupname">nogroup</systemitem> for it to avoid an
     182  <systemitem class="groupname">nogroup</systemitem> to avoid an
    183183  unnamed ID.  But other distros may treat this ID differently, so any
    184184  portable program should not depend on this assignment.</para>
  • chapter07/kernfs.xml

    r4d3f41c rb59b371  
    1616
    1717    <para>Applications running in user space utilize various file
    18     systems exported by the kernel to communicate
     18    systems created by the kernel to communicate
    1919    with the kernel itself. These file systems are virtual: no disk
    20     space is used for them. The content of the file systems resides in
     20    space is used for them. The content of these file systems resides in
    2121    memory.</para>
    2222
    23     <para>Begin by creating directories on which the file systems will be
     23    <para>Begin by creating the directories on which these virtual file systems will be
    2424    mounted:</para>
    2525
     
    3131    <para>The kernel has already mounted
    3232    <systemitem class="filesystem">devtmpfs</systemitem>.
    33     Mount the remaining virtual kernel filesystems:</para>
     33    Mount the remaining virtual kernel file systems:</para>
    3434
    3535<screen><userinput>mkdir -pv /dev/{pts,shm}
  • chapter08/bc.xml

    r4d3f41c rb59b371  
    6060        <listitem>
    6161          <para>Omit parts of the test suite that won't work
    62           without a GNU bc present.</para>
     62          until the bc program has been installed.</para>
    6363        </listitem>
    6464      </varlistentry>
  • chapter08/binutils.xml

    r4d3f41c rb59b371  
    8888        <term><parameter>--enable-gold</parameter></term>
    8989        <listitem>
    90           <para>Build the gold linker and install it as ld.gold (along side the
     90          <para>Build the gold linker and install it as ld.gold (alongside the
    9191          default linker).</para>
    9292        </listitem>
     
    119119        <term><parameter>--with-system-zlib</parameter></term>
    120120        <listitem>
    121           <para>Use the installed zlib library rather than building the
     121          <para>Use the installed zlib library instead of building the
    122122          included version.</para>
    123123        </listitem>
     
    144144          class="directory">/usr</filename> is not required. <filename
    145145          class="directory">$(exec_prefix)/$(target_alias)</filename> would be
    146           used if the system was used to cross-compile (for example, compiling a
     146          used if the system were used to cross-compile (for example, compiling a
    147147          package on an Intel machine that generates code that can be executed
    148148          on PowerPC machines).</para>
     
    165165<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
    166166
    167     <para>Twelve tests fail in the gold testsuite when the
     167    <para>Twelve tests fail in the gold test suite when the
    168168    <option>--enable-default-pie</option> and
    169169    <option>--enable-default-ssp</option> options are passed to GCC.
     
    180180    assured of the correctness of gas, invoke
    181181    <command>make check-gas</command> to run gas testsuite separately and
    182     all tests should pass. Three gprofng tests result
    183     <literal>ERROR</literal> and they are counted as
     182    all tests should pass. Three gprofng tests yield the
     183    <literal>ERROR</literal> result, and they are counted as
    184184    <literal>UNRESOLVED</literal> in the summary.</para>
    185185
     
    274274        <term><command>elfedit</command></term>
    275275        <listitem>
    276           <para>Updates the ELF header of ELF files</para>
     276          <para>Updates the ELF headers of ELF files</para>
    277277          <indexterm zone="ch-system-binutils elfedit">
    278278            <primary sortas="b-elfedit">elfedit</primary>
     
    294294        <term><command>gprofng</command></term>
    295295        <listitem>
    296           <para>Gather and analyze performance data</para>
     296          <para>Gathers and analyzes performance data</para>
    297297          <indexterm zone="ch-system-binutils gprofng">
    298298            <primary sortas="b-gprofng">gprofng</primary>
     
    327327        <term><command>ld.bfd</command></term>
    328328        <listitem>
    329           <para>Hard link to <command>ld</command></para>
     329          <para>A hard link to <command>ld</command></para>
    330330          <indexterm zone="ch-system-binutils ld.bfd">
    331331            <primary sortas="b-ld.bfd">ld.bfd</primary>
  • chapter08/dbus.xml

    r4d3f41c rb59b371  
    5656            --disable-doxygen-docs               \
    5757            --disable-xml-docs                   \
    58             --docdir=/usr/share/doc/dbus-&dbus-version; \
     58            --docdir=/usr/share/doc/dbus-&dbus-version;  \
    5959            --with-system-socket=/run/dbus/system_bus_socket</userinput></screen>
    6060
  • chapter08/glibc.xml

    r4d3f41c rb59b371  
    4444    <title>Installation of Glibc</title>
    4545
    46     <para>First, fix an issue building Glibc with parallel jobs and make-4.4
     46    <para>First, fix an issue building Glibc with parallel jobs and Make-4.4
    4747    or later:</para>
    4848
     
    9191        <term><parameter>--enable-kernel=&linux-major-version;.&linux-minor-version;</parameter></term>
    9292        <listitem>
    93           <para>This option tells the build system that this glibc may
     93          <para>This option tells the build system that this Glibc may
    9494          be used with kernels as old as
    9595          &linux-major-version;.&linux-minor-version;. This means generating
     
    219219<screen><userinput remap="install">make install</userinput></screen>
    220220
    221     <para>Fix hardcoded path to the executable loader in
     221    <para>Fix a hardcoded path to the executable loader in the
    222222    <command>ldd</command> script:</para>
    223223
     
    237237
    238238    <para>Next, install the locales that can make the system respond in a
    239     different language.  None of the locales are required, but if some of them
    240     are missing, the test suites of future packages would skip important
    241     testcases.</para>
     239    different language.  None of these locales are required, but if some of them
     240    are missing, the test suites of some packages will skip important
     241    test cases.</para>
    242242
    243243    <para>Individual locales can be installed using the
     
    292292    character set.</para>
    293293
    294     <para>Alternatively, install all locales listed in the
     294    <para>Alternatively, install all the locales listed in the
    295295    <filename>glibc-&glibc-version;/localedata/SUPPORTED</filename> file
    296296    (it includes every locale listed above and many more) at once with the
     
    358358
    359359    <sect3>
    360     <title>Adding time zone data</title>
     360    <title>Adding Time Zone Data</title>
    361361
    362362    <para>Install and set up the time zone data with the following:</para>
  • chapter08/introduction.xml

    r4d3f41c rb59b371  
    2121  may need it.</para>
    2222
    23   <para>We do not recommend using optimizations.  They can make
     23  <para>We do not recommend using customized optimizations.  They can make
    2424  a program run slightly faster, but they may also cause compilation
    25   difficulties and problems when running the program.  If a package refuses to
    26   compile when using optimization, try to compile it without optimization and
    27   see if that fixes the problem. Even if the package does compile when using
     25  difficulties, and problems when running the program.  If a package refuses to
     26  compile with a customized optimization, try to compile it without
     27  optimization and see if that fixes the problem. Even if the package does compile when using a customized
    2828  optimization, there is the risk it may have been compiled incorrectly because
    29   of the complex interactions between the code and build tools.  Also note that
     29  of the complex interactions between the code and the build tools.  Also note that
    3030  the <option>-march</option> and <option>-mtune</option> options using values
    3131  not specified in the book have not been tested. This may cause problems with
    3232  the toolchain packages (Binutils, GCC and Glibc).  The small potential gains
    33   achieved in using compiler optimizations are often outweighed by the risks.
     33  achieved by customizing compiler optimizations are often outweighed by the risks.
    3434  First-time builders of LFS are encouraged to build without custom
    35   optimizations. The subsequent system will still run very fast and be stable
    36   at the same time.</para>
     35  optimizations.</para>
     36
     37  <para>On the other hand, we keep the optimizations enabled by the default
     38  configuration of the packages.  In addition, we sometimes explicitly enable an
     39  optimized configuration provided by a package but not enabled by
     40  default.  The package maintainers have already tested these configurations
     41  and consider them safe, so it's not likely they would break the build.
     42  Generally the default configuration already enables <option>-O2</option>
     43  or <option>-O3</option>, so the resulting system will still run very fast
     44  without any customized optimization, and be stable at the same time.</para>
    3745
    3846  <para>Before the installation instructions, each installation page provides
     
    4351  descriptions) that the package installs.</para>
    4452
    45   <note><para>The SBU values and required disk space includes test suite data
     53  <note><para>The SBU values and required disk space include test suite data
    4654  for all applicable packages in <xref linkend="chapter-building-system"/>. SBU
    4755  values have been calculated using a single CPU core (-j1) for all
     
    4957
    5058  <sect2>
    51     <title>About libraries</title>
     59    <title>About Libraries</title>
    5260
    5361    <para>In general, the LFS editors discourage building and installing static
    54     libraries.  The original purpose for most static libraries has been made
     62    libraries.  Most static libraries have been made
    5563    obsolete in a modern Linux system.  In addition, linking a static library
    5664    into a program can be detrimental.  If an update to the library is needed
    57     to remove a security problem, all programs that use the static library will
    58     need to be relinked to the new library.  Since the use of static libraries
     65    to remove a security problem, every program that uses the static library will
     66    need to be relinked with the new library.  Since the use of static libraries
    5967    is not always obvious, the relevant programs (and the procedures needed to
    6068    do the linking) may not even be known.</para>
    6169
    62     <para>In the procedures in this chapter, we remove or disable installation of
     70    <para>The procedures in this chapter remove or disable installation of
    6371    most static libraries. Usually this is done by passing a
    6472    <option>--disable-static</option> option to <command>configure</command>.
    6573    In other cases, alternate means are needed. In a few cases, especially
    66     glibc and gcc, the use of static libraries remains essential to the general
     74    Glibc and GCC, the use of static libraries remains an essential feature of the
    6775    package building process. </para>
    6876
    69     <para>For a more complete discussion of libraries, see the discussion
     77    <para>For a more complete discussion of libraries, see
    7078    <ulink url="&blfs-book;introduction/libraries.html">
    7179    Libraries: Static or shared?</ulink> in the BLFS book.</para>
  • chapter08/pkgmgt.xml

    r4d3f41c rb59b371  
    1313  <para>Package Management is an often requested addition to the LFS Book. A
    1414  Package Manager tracks the installation of files, making it easier to
    15   remove and upgrade packages. As well as the binary and library files, a
    16   package manager will handle the installation of configuration files.  Before
     15  remove and upgrade packages. A good package manager will also handle the
     16  configuration files specially to keep the user configuration when the
     17  package is reinstalled or upgraded.  Before
    1718  you begin to wonder, NO&mdash;this section will not talk about nor recommend
    18   any particular package manager. What it provides is a roundup of the more
     19  any particular package manager. What it does provide is a roundup of the more
    1920  popular techniques and how they work. The perfect package manager for you may
    2021  be among these techniques, or it may be a combination of two or more of these
     
    6263
    6364      <listitem>
    64         <para>If Linux API headers or glibc need to be upgraded to a newer
    65         version, (e.g.,  from glibc-2.31 to glibc-2.32), it is safer to
     65        <para>If the Linux API headers or Glibc need to be upgraded to a newer
     66        version, (e.g.,  from Glibc-2.31 to Glibc-2.32), it is safer to
    6667        rebuild LFS.  Though you <emphasis>may</emphasis> be able to rebuild
    6768        all the packages in their dependency order, we do not recommend
     
    203204      reality it is installed in the
    204205      <filename class="directory">/usr/pkg</filename> hierarchy. Installing in
    205       this manner is not usually a trivial task. For example, consider that you
     206      this manner is not usually a trivial task. For example, suppose you
    206207      are installing a package libfoo-1.1. The following instructions may
    207208      not install the package properly:</para>
     
    322323    another computer with the same architecture as the base system is as
    323324    simple as using <command>tar</command> on the LFS partition that contains
    324     the root directory (about 250MB uncompressed for a base LFS build), copying
     325    the root directory (about 900MB uncompressed for a basic LFS build), copying
     326    <!-- D. Bryant created LFS 11.2 in October 2022; 900MB is (roughly) the size of his rsync archive. -->
    325327    that file via network transfer or CD-ROM / USB stick to the new system, and expanding
    326328    it.  After that, a few configuration files will have to be changed.
  • chapter08/procps.xml

    r4d3f41c rb59b371  
    4343    <para>Prepare procps-ng for compilation:</para>
    4444
    45 <screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr                            \
     45<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr                           \
    4646            --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
    47             --disable-static                         \
     47            --disable-static                        \
    4848            --disable-kill</userinput></screen>
    4949
    50 <screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr                            \
     50<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr                           \
    5151            --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
    52             --disable-static                         \
    53             --disable-kill                           \
     52            --disable-static                        \
     53            --disable-kill                          \
    5454            --with-systemd</userinput></screen>
    5555
  • chapter08/readline.xml

    r4d3f41c rb59b371  
    2424    <title/>
    2525
    26     <para>The Readline package is a set of libraries that offers command-line
     26    <para>The Readline package is a set of libraries that offer command-line
    2727    editing and history capabilities.</para>
    2828
     
    6262
    6363     <variablelist>
    64       <title>The meaning of the configure option:</title>
     64      <title>The meaning of the new configure option:</title>
    6565
    6666      <varlistentry>
     
    6868        <listitem>
    6969          <para>This option tells Readline that it can find the termcap
    70           library functions in the curses library, rather than a separate
    71           termcap library. It allows generating a correct
     70          library functions in the curses library, not a separate
     71          termcap library. This will generate the correct
    7272          <filename>readline.pc</filename> file.</para>
    7373        </listitem>
  • chapter08/shadow.xml

    r4d3f41c rb59b371  
    245245    <segmentedlist>
    246246      <segtitle>Installed programs</segtitle>
    247       <segtitle>Installed directory</segtitle>
     247      <segtitle>Installed directories</segtitle>
    248248      <segtitle>Installed libraries</segtitle>
    249249
     
    255255        sg (link to newgrp), su, useradd, userdel, usermod,
    256256        vigr (link to vipw), and vipw</seg>
    257         <seg>/etc/default</seg>
     257      <seg>/etc/default and /usr/include/shadow</seg>
    258258        <seg>libsubid.so</seg>
    259259      </seglistitem>
  • chapter08/tcl.xml

    r4d3f41c rb59b371  
    2828    <para>The <application>Tcl</application> package contains the Tool Command Language,
    2929    a robust general-purpose scripting language. The <application>Expect</application> package
    30     is written in the <application>Tcl</application> language.</para>
     30    is written in <application>Tcl</application> (pronounced "tickle").</para>
    3131
    3232    <segmentedlist>
     
    4646
    4747    <para>This package and the next two (Expect and DejaGNU) are
    48     installed to support running the test suites for binutils and GCC and other
     48    installed to support running the test suites for Binutils, GCC and other
    4949    packages.  Installing three packages for testing purposes may seem
    5050    excessive, but it is very reassuring, if not essential, to know that the
     
    8888
    8989    <para>The various <quote>sed</quote> instructions after the
    90     <quote>make</quote> command removes references to the build directory from
    91     the configuration files and replaces them with the install directory.
    92     This is not mandatory for the remainder of LFS, but may be needed in case a
     90    <quote>make</quote> command remove references to the build directory from
     91    the configuration files and replace them with the install directory.
     92    This is not mandatory for the remainder of LFS, but may be needed if a
    9393    package built later uses Tcl.</para>
    9494
  • chapter08/util-linux.xml

    r4d3f41c rb59b371  
    4545    <para>Prepare Util-linux for compilation:</para>
    4646
    47 <screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     47<screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
    4848            --bindir=/usr/bin    \
    4949            --libdir=/usr/lib    \
    5050            --sbindir=/usr/sbin  \
    51             --docdir=/usr/share/doc/util-linux-&util-linux-version; \
    5251            --disable-chfn-chsh  \
    5352            --disable-login      \
     
    6059            --without-python     \
    6160            --without-systemd    \
    62             --without-systemdsystemunitdir</userinput></screen>
    63 
    64 <screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     61            --without-systemdsystemunitdir \
     62            --docdir=/usr/share/doc/util-linux-&util-linux-version;</userinput></screen>
     63
     64<screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
    6565            --bindir=/usr/bin    \
    6666            --libdir=/usr/lib    \
    6767            --sbindir=/usr/sbin  \
    68             --docdir=/usr/share/doc/util-linux-&util-linux-version; \
    6968            --disable-chfn-chsh  \
    7069            --disable-login      \
     
    7574            --disable-pylibmount \
    7675            --disable-static     \
    77             --without-python</userinput></screen>
     76            --without-python     \
     77            --docdir=/usr/share/doc/util-linux-&util-linux-version;</userinput></screen>
    7878
    7979    <para>The --disable and --without options prevent warnings about
  • lfs-latest-git.php

    r4d3f41c rb59b371  
    140140if ( $package == "Python"     ) $dirpath = "https://www.python.org/downloads/source/";
    141141if ( $package == "shadow"     ) $dirpath = "https://github.com/shadow-maint/shadow/releases";
     142if ( $package == "sysvinit"   ) $dirpath = "https://github.com/slicer69/sysvinit/releases";
    142143if ( $package == "MarkupSafe" ) $dirpath = "https://pypi.python.org/pypi/MarkupSafe/";
    143144if ( $package == "Jinja"      ) $dirpath = "https://pypi.python.org/pypi/Jinja2/";
     
    276277     return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
    277278
     279  if ( $package == "sysvinit" )
     280     return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
     281
    278282  if ( $package == "XML-Parser" )
    279283  {
  • packages.ent

    r4d3f41c rb59b371  
    357357<!ENTITY jinja2-version "3.1.2">
    358358<!ENTITY jinja2-size "262 KB">
    359 <!ENTITY jinja2-url "https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-&jinja2-version;.tar.gz">
     359<!ENTITY jinja2-url "&pypi-src;/J/Jinja2/Jinja2-&jinja2-version;.tar.gz">
    360360<!ENTITY jinja2-md5 "d31148abd89c1df1cdb077a55db27d02">
    361361<!ENTITY jinja2-home "https://jinja.palletsprojects.com/en/3.0.x/">
     
    488488<!ENTITY markupsafe-version "2.1.1">
    489489<!ENTITY markupsafe-size "20 KB">
    490 <!ENTITY markupsafe-url "https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-&markupsafe-version;.tar.gz">
     490<!ENTITY markupsafe-url "&pypi-src;/M/MarkupSafe/MarkupSafe-&markupsafe-version;.tar.gz">
    491491<!ENTITY markupsafe-md5 "9809f9fdd98bc835b0c21aa8f79cbf30">
    492492<!ENTITY markupsafe-home "https://palletsprojects.com/p/markupsafe/">
Note: See TracChangeset for help on using the changeset viewer.