Merge branch 'main' into ext

This commit is contained in:
Poltern 2024-09-02 10:08:53 +05:00
commit 3aa147717b
29 changed files with 132 additions and 64 deletions

View File

@ -15,7 +15,7 @@ base=$(basename $bootscripts .tar.xz)
bootsize=$(ls -l --block-size=1024 $bootscripts | cut -f5 -d" ")
bootmd5=$(md5sum $bootscripts | cut -f1 -d" ")
# Figure intalled size of bootscripts
# Figure installed size of bootscripts
TOPDIR=$(pwd)
TMP_DIR=$(mktemp -d /tmp/lfsbootfiles.XXXXXX)
pushd $TMP_DIR > /dev/null

View File

@ -1,3 +1,16 @@
2024-08-25 Xi Ruoyao <xry111@xry111.site>
* Remove an empty line and an outdated comment (not valid anymore after
/usr merge) from init-functions.
2024-08-24 Andrew Kreimer <algonell@gmail.com>
* Fix typos.
2024-08-23 Xi Ruoyao <xry111@xry111.site>
* In console, detect FB console by checking /sys/class/graphics/fbcon
instead of fb0. The latter does not exist if CONFIG_FB=n, but
CONFIG_DRM_FBDEV_EMULATION=y can support a FB console without
CONFIG_FB.
2024-07-12 Xi Ruoyao <xry111@xry111.site>
* In mountvirtfs, recreate /dev/fd correctly if it's already created
by the initramfs.

View File

@ -47,7 +47,7 @@ case "${1}" in
log_info_msg "Setting up Linux console..."
# Figure out if a framebuffer console is used
[ -d /sys/class/graphics/fb0 ] && use_fb=1 || use_fb=0
[ -d /sys/class/graphics/fbcon ] && use_fb=1 || use_fb=0
# Figure out the command to set the console into the
# desired mode

View File

@ -457,11 +457,8 @@ pidofproc()
# If a PID file is set and exists, use it.
if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
# Use the value in the first line of the pidfile
pidlist=`/bin/head -n1 "${pidfile}"`
# This can optionally be written as 'sed 1q' to repalce 'head -n1'
# should LFS move /bin/head to /usr/bin/head
else
# Use pidof
pidlist=`pidof "${program}"`

View File

@ -94,7 +94,7 @@ NOTES
compound device such as a bridge.
ONBOOT - If set to 'yes', the specified interface is
configured by the netowrk boot script.
configured by the network boot script.
GATEWAY - The default IP address to use for routing if
the destination IP address is not in a static
@ -112,7 +112,7 @@ NOTES
This list is normally a single value, e.g. eth0,
for use with a virtual host such as kvm.
Other paramters that are service specific include:
Other parameters that are service specific include:
ipv4-static
@ -128,7 +128,7 @@ NOTES
additional IP addresses to a network
device. Example: eth0:2 (optional)
BROADCAST - The brodcast address for this interface,
BROADCAST - The broadcast address for this interface,
e.g 192.168.1.255. If not specified,
the broadcast address will be calculated
from the IP and PREFIX.
@ -154,7 +154,7 @@ NOTES
DHCP_START - Optional parameters to pass to the dhcp client
at startup.
DHCP_STOP - Optional paremeters to pass to the dhcp client
DHCP_STOP - Optional parameters to pass to the dhcp client
at shutdown.
PRINTIP - Flag to print the dhcp address to stdout

View File

@ -39,6 +39,27 @@
appropriate for the entry or if needed the entire day's listitem.
-->
<listitem revision='sysv'>
<para>2024-08-23</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to lfs-bootscripts-20240825. Only trivial
non-functional changes.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem revision='sysv'>
<para>2024-08-23</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to lfs-bootscripts-20240823, to fix an
issue causing VT 2-6 not affected by the FONT= setting in
/etc/sysconfig/console.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2024-08-17</para>
<itemizedlist>
@ -152,11 +173,11 @@
<para>[bdubbs] - Update to setuptools-72.1.0. Fixes
<ulink url='&lfs-ticket-root;5531'>#5531</ulink>.</para>
</listitem>
<listitem>
<listitem revision='sysv'>
<para>[bdubbs] - Update to sysklogd-2.6.1. Fixes
<ulink url='&lfs-ticket-root;5522'>#5522</ulink>.</para>
</listitem>
<listitem>
<listitem revision='systemd'>
<para>[bdubbs] - Update to systemd-256.4. Fixes
<ulink url='&lfs-ticket-root;5518'>#5518</ulink>.</para>
</listitem>
@ -209,7 +230,7 @@
</itemizedlist>
</listitem>
<listitem>
<listitem revision='sysv'>
<para>2024-07-01</para>
<itemizedlist>
<listitem>
@ -238,7 +259,7 @@
<para>[bdubbs] - Update to linux-6.9.7. Fixes
<ulink url='&lfs-ticket-root;5508'>#5508</ulink>.</para>
</listitem>
<listitem>
<listitem revision='sysv'>
<para>[bdubbs] - Update to sysklogd-2.5.2. Fixes
<ulink url='&lfs-ticket-root;5509'>#5509</ulink>.</para>
</listitem>
@ -246,7 +267,7 @@
<para>[bdubbs] - Update to shadow-4.16.0. Fixes
<ulink url='&lfs-ticket-root;5510'>#5510</ulink>.</para>
</listitem>
<listitem>
<listitem revision='systemd'>
<para>[bdubbs] - Update to systemd-256.1. Fixes
<ulink url='&lfs-ticket-root;5511'>#5511</ulink>.</para>
</listitem>
@ -268,7 +289,7 @@
<para>[bdubbs] - Update to iana-etc-20240607. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
</listitem>
<listitem>
<listitem revision='systemd'>
<para>[bdubbs] - Update to systemd-256. Fixes
<ulink url='&lfs-ticket-root;5504'>#5504</ulink>.</para>
</listitem>

View File

@ -297,7 +297,7 @@
</itemizedlist>
<itemizedlist>
<title>Removed:</title>
<title>Удалены:</title>
<listitem>
<para>bash-5.2.21-upstream_fixes-1.patch</para>
</listitem>

View File

@ -23,16 +23,45 @@
или SBU. Время компиляции остальных пакетов будет рассчитано относительно этого времени.</para>
<para>Например, рассмотрим пакет, время компиляции которого составляет 4,5 SBU.
Это означает, что если вашей системе потребовалось 10 минут для компиляции и сборки
Это означает, что если вашей системе потребовалось 4 минуты для компиляции и сборки
первого прохода binutils, то для сборки этого пакета потребуется
<emphasis>примерно</emphasis> 45 минут. К счастью, в большинстве случаев, время
<emphasis>примерно</emphasis> 18 минут. К счастью, в большинстве случаев, время
сборки меньше, чем у binutils.</para>
<para>В целом, величина SBU не совсем точна, поскольку она зависит от многих
факторов, включая версию GCC хост-системы. Она приведены здесь, чтобы дать
<para>В целом, величина SBU не совсем точна, поскольку она зависит от множества
факторов, начиная от версии GCC хост-системы. Она приведены здесь, чтобы дать
оценку того, сколько времени может потребоваться для сборки пакета, но в
некоторых случаях цифры могут отличаться на десятки минут.</para>
<para>В современных материнских платах есть возможность управлять тактовой
частотой процессора. Это можно сделать с помощью команды, такой как,
<command>powerprofilesctl</command>. Данная возможность отсутствует в LFS, но
может быть доступна в хост-дистрибутиве. После сборки LFS управление производительностью
и электропитанием можно добавить в систему с помощью инструкций, описанных на странице
<ulink url='&blfs-book;sysutils/power-profiles-daemon.html'>BLFS power-profiles-daemon</ulink>.
</para>
<para>Перед измерением времени сборки любого пакета рекомендуется задействовать профиль
энергопотребления системы, настроенный на максимальную производительность (и максимальное
энергопотребление). </para>
<para>В противном случае измеренное значение SBU может быть неточным, поскольку система
может по-разному реагировать на сборку <xref linkend='ch-tools-binutils-pass1'/> или
других пакетов.</para>
<para>Имейте в виду, что даже если для обоих пакетов используется один и тот же профиль, все
равно могут возникнуть существенные неточности, поскольку система может реагировать медленнее,
если система простаивает при запуске процедуры сборки. Установка для профиля питания режима
<quote>производительность</quote> сведет к минимуму эту проблему. И, очевидно, это также ускорит
сборку LFS.</para>
<para>Если <command>powerprofilesctl</command> доступен, введите команду
<command>powerprofilesctl set performance</command>, чтобы выбрать профиль
<literal>производительность</literal>. Некоторые дистрибутивы для управления профилями
предоставляют команду <command>tuned-adm</command> вместо <command>powerprofilesctl</command>,
в этих дистрибутивах введите команду <command>tuned-adm profile throughput-performance</command>,
чтобы выбрать профиль <literal>производительность</literal>.</para>
<note>
<para>Когда используется несколько ядер, единицы измерения SBU будут
различаться еще больше, чем обычно. В некоторых случаях make просто
@ -41,9 +70,10 @@
столкнулись с проблемой на этапе сборки, вернитесь к сборке на одном ядре,
чтобы проанализировать сообщения об ошибках.</para>
<para>Представленные здесь значения времени основаны на замерах при использовании
четырех ядер (-j4). Время, указанное в главе 8, также включает время выполнения
регрессионных тестов для пакета, если не указано иное.</para>
<para>Представленные здесь значения времени для всех пакетов (за исключением
<xref linkend='ch-tools-binutils-pass1'/>, который собирается на одном ядре) рассчитаны
при использовании четырех ядер (-j4). Время, указанное в главе 8, также включает время
выполнения регрессионных тестов для пакета, если не указано иное.</para>
</note>
</sect1>

View File

@ -5,7 +5,7 @@
%general-entities;
]>
<sect1 id="ch-tools-binutils-pass1" role="wrap">
<sect1 id="ch-tools-binutils-pass1" role="wrap" xreflabel="binutils-pass1">
<?dbhtml filename="binutils-pass1.html"?>
<sect1info condition="script">

View File

@ -138,7 +138,7 @@ cd build</userinput></screen>
<listitem>
<para>Разрешить <filename class="libraryfile">libstdc++</filename> использовать
<filename class="libraryfile">libgcc</filename>, собранную на этом этапе, вместо
предыдущей версии, собранной в <внешняя ссылка='ch-tools-gcc-pass1'/>. Предыдущая
предыдущей версии, собранной в <xref linkend='ch-tools-gcc-pass1'/>. Предыдущая
версия не поддерживает должным образом обработку исключений на C++, поскольку она
была собрана без поддержки libc</para>
</listitem>

View File

@ -135,12 +135,16 @@ cd build</userinput></screen>
где x - количество ядер процессора в вашей системе.</para>
</important>
<para>Известно, что один набор тестов GCC переполняет стек по умолчанию, поэтому увеличьте
размер стека перед запуском тестов:</para>
<para>GCC может потребоваться больше места в стеке для компиляции некоторых сложных шаблонов
кода. В качестве меры предосторожности для хост-дистрибутивов с жестким ограничением стека
явно установите неограниченный жесткий предел. В большинстве хост-дистрибутивов (и в собранной
LFS) жесткий предел по умолчанию неограничен, но нет ничего плохого в том, чтобы установить
его явно. Также нет необходимости изменять мягкий предел размера стека, поскольку GCC автоматически
установит для него соответствующее значение, если это значение не превышает жесткий предел:</para>
<screen><userinput remap="test">ulimit -s 32768</userinput></screen>
<screen><userinput remap="test">ulimit -s -H unlimited</userinput></screen>
<para>Теперь удалите /исправьте несколько известных ошибок тестирования:</para>
<para>Теперь удалите/исправьте несколько известных ошибок тестирования:</para>
<screen><userinput remap="test">sed -e '/cpython/d' -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
sed -e 's/no-pic /&amp;-no-pie /' -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c

View File

@ -86,6 +86,9 @@ mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
# Do not open any internet ports.
secure_mode 2
# End /etc/syslog.conf</literal>
EOF</userinput></screen>

View File

@ -1,14 +1,14 @@
<!-- Editing up to the line of ==== should be enough
to generate a book for development, release, or rc-->
<!ENTITY % development "INCLUDE"><!-- set to INCLUDE for development,
<!ENTITY % development "IGNORE"><!-- set to INCLUDE for development,
set to IGNORE for release or rc -->
<!ENTITY % release "IGNORE"> <!-- set to INCLUDE for release,
<!ENTITY % release "INCLUDE"> <!-- set to INCLUDE for release,
set to IGNORE for development or rc -->
<!ENTITY % rc "IGNORE"> <!-- set to INCLUDE for rc,
set to IGNORE for development or
release -->
<!ENTITY % relnum "12.1"><!-- must be given for release or rc -->
<!ENTITY % reldate "1 марта 2024"><!-- must ve given for release or rc -->
<!ENTITY % reldate "1 сентября 2024"><!-- must ve given for release or rc -->
<!ENTITY % crdate "1999-2024"><!-- must ve given for release or rc -->
<!ENTITY % rcnum "0"><!-- must be given only for rc -->
<!-- ================================================================== -->

View File

@ -19,7 +19,7 @@ if [ -e LFS-RELEASE ]; then
fi
if ! git status > /dev/null; then
# Either it's not a git repository, or git is unavaliable.
# Either it's not a git repository or git is unavailable.
# Just workaround.
echo "<![ %sysv; [" > version.ent
echo "<!ENTITY version \"unknown\">" >> version.ent

View File

@ -322,7 +322,7 @@ function get_current()
$file = basename( $line ) . "\n";
if ( preg_match( "/patch$/", $file ) ) { continue; } // Skip patches
$file = preg_replace( "/bz2/", '', $file ); // The 2 confusses the regex
$file = preg_replace( "/bz2/", '', $file ); // The 2 confuses the regex
$file = rtrim( $file );
$pkg_pattern = "/(\D*).*/";

View File

@ -2,7 +2,7 @@
<!-- Notes:
For empty *-home entities use " " not ""
Packages sizes allways in KB
Packages sizes always in KB
Allowed deviation in SBUs : 10%
Allowed deviation in disk usage : 2%
@ -86,7 +86,7 @@
<!ENTITY bison-tmp-du "57 MB">
<!ENTITY bison-tmp-sbu "0.2 SBU">
<!ENTITY bison-fin-du "62 MB">
<!ENTITY bison-fin-sbu "2.3 SBU">
<!ENTITY bison-fin-sbu "2.2 SBU">
<!ENTITY bzip2-version "1.0.8">
<!ENTITY bzip2-size "792 KB">
@ -128,7 +128,7 @@
<!ENTITY dejagnu-md5 "68c5208c58236eba447d7d6d1326b821">
<!ENTITY dejagnu-home "&gnu-software;dejagnu/">
<!ENTITY dejagnu-tmp-du "6.9 MB">
<!ENTITY dejagnu-tmp-sbu "0.1 SBU">
<!ENTITY dejagnu-tmp-sbu "менее 0.1 SBU">
<!ENTITY diffutils-version "3.10">
<!ENTITY diffutils-size "1,587 KB">
@ -216,7 +216,7 @@
<!ENTITY gawk-tmp-du "47 MB">
<!ENTITY gawk-tmp-sbu "0.1 SBU">
<!ENTITY gawk-fin-du "42 MB">
<!ENTITY gawk-fin-sbu "0.1 SBU">
<!ENTITY gawk-fin-sbu "0.2 SBU">
<!ENTITY gcc-version "14.2.0">
<!ENTITY gcc-size "90,144 KB">
@ -381,7 +381,7 @@
<!ENTITY less-fin-du "14 MB">
<!ENTITY less-fin-sbu "менее 0.1 SBU">
<!ENTITY lfs-bootscripts-version "20240717"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-version "20240825"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB">
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM">

View File

@ -8,7 +8,7 @@
exclude-result-prefixes="cf exsl">
<!-- Top-level chunked code for fast processing.
Import standart customized chunk code.
Import standard customized chunk code.
Replaces {docbook-xsl}/xhtml/chunkfast.xsl
Note: Using this file as the top-level for chunked output implies that

View File

@ -36,7 +36,7 @@
</xsl:template>
<!-- indexterm:
Dropping unneeded anchors and fo:wraper elemments. -->
Dropping unneeded anchors and fo:wrapper elemments. -->
<!-- The original templates are in {docbook-xsl}/{xhtml,fo}/index.xsl -->
<xsl:template match="indexterm"/>
@ -111,7 +111,7 @@
</xsl:when>
<xsl:when test="$section.autolabel != 0">
<xsl:choose>
<!-- If the first sect2 isn't numbered, renumber the remainig sections -->
<!-- If the first sect2 isn't numbered, renumber the remaining sections -->
<xsl:when test="string-length(../sect2[1]/title) = 0">
<xsl:variable name="totalsect2">
<xsl:number count="sect2"/>

View File

@ -27,7 +27,7 @@
<xsl:include href="pdf/lfs-pagesetup.xsl"/>
<xsl:include href="pdf/lfs-xref.xsl"/>
<!-- Activate FOP-1 extensions. We use FOP-0.93 as the FO procesor. -->
<!-- Activate FOP-1 extensions. We use FOP-0.93 as the FO processor. -->
<xsl:param name="fop1.extensions" select="1"/>
<!-- Deactivate draft mode. -->
@ -97,7 +97,7 @@
<!-- Processing instruction for hard page breaks.
FOP-0.93 supports @keep-*.*, @orphans, and @widows attributes,
that solves several page break issues.
It also supports the soft page break procesing instruction included
It also supports the soft page break processing instruction included
in the DocBook stylesheets.
But sometimes we may need hard page breaks for final book versions.
To understand all of the page break features, see

View File

@ -39,8 +39,8 @@
<xsl:param name="variablelist.max.termlength">35</xsl:param>
<!-- varlistentry mode block:
Addibg a bullet, left alignament, and @kepp-*.* attributes
for packages and paches list. -->
Addibg a bullet, left alignment, and @kepp-*.* attributes
for packages and patches list. -->
<!-- The original template is in {docbook-xsl}/fo/list.xsl -->
<xsl:template match="varlistentry" mode="vl.as.blocks">
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
@ -135,7 +135,7 @@
</xsl:template>
<!-- simplelist:
Self-made template. Wrap it into a fo:block and process member childs.
Self-made template. Wrap it into a fo:block and process member child.
If @type is specified, the original templates will be used.
NOTE: when using type='horiz' or type='vert', FOP-0.93 will complaints
about not supported table-layout="auto" -->

View File

@ -5,7 +5,7 @@
version="1.0">
<!-- This stylesheet contains misc params, attribute sets and templates
for output formating.
for output formatting.
This file is for that templates that don't fit in other files. -->
<!-- What space do you want between normal paragraphs. -->
@ -128,7 +128,7 @@
</xsl:template>
<!-- literal:
Be sure that literal will use allways normal font weight. -->
Be sure that literal will use always normal font weight. -->
<!-- The original template is in {docbook-xsl}/fo/inline.xsl -->
<xsl:template match="literal">
<fo:inline font-weight="normal">
@ -139,7 +139,7 @@
<!-- inline.monoseq:
Added hyphenate-url support to classname, exceptionname, interfacename,
methodname, computeroutput, constant, envar, filename, function, code,
literal, option, promt, systemitem, varname, sgmltag, tag, and uri -->
literal, option, prompt, systemitem, varname, sgmltag, tag, and uri -->
<!-- The original template is in {docbook-xsl}/fo/inline.xsl -->
<xsl:template name="inline.monoseq">
<xsl:param name="content">

View File

@ -176,7 +176,7 @@
</xsl:template>
<!-- chapter title:
Small font size and left alignament. -->
Small font size and left alignment. -->
<!-- The original template is in {docbook-xsl}/fo/titlepage.templates.xsl -->
<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
<fo:block xsl:use-attribute-sets="chapter.titlepage.recto.style"
@ -243,8 +243,8 @@
<!-- page.number.format FOR ENGLISH
We want roman numerals only in book's preface, not parts prefaces
(if any). The original template is in {docbook-xsl}/fo/pagesetup.xsl
<xsl:template name="page.number.format">
(if any). The original template is in {docbook-xsl}/fo/pagesetup.xsl -->
<!--<xsl:template name="page.number.format">
<xsl:param name="element" select="local-name(.)"/>
<xsl:param name="master-reference" select="''"/>

View File

@ -4,9 +4,9 @@
xmlns="http://www.w3.org/1999/xhtml"
version="1.0">
<!-- This stylesheet contains misc templates for output formating.
<!-- This stylesheet contains misc templates for output formatting.
This file is for that templates that don't fit in other files
and that not afect the chunk algorithm. -->
and that do not affect the chunk algorithm. -->
<!-- Individual elements templates -->
@ -187,7 +187,7 @@
</xsl:template>
<!-- para/simplelist:
Self-made template. Add a line break and process the childs.
Self-made template. Add a line break and process the child.
If @type is specified, the original templates should be used,
but not tested. -->
<xsl:template match="para/simplelist">
@ -208,7 +208,7 @@
</xsl:template>
<!-- Named formating templates -->
<!-- Named formatting templates -->
<!-- Body attributes:
Add to the body XHTML output tag a class attribute with the book type

View File

@ -145,7 +145,7 @@
</xsl:template>
<!-- sect1:
When there is a role attibute, use it as the class value.
When there is a role attribute, use it as the class value.
Process the SVN keywords found in sect1info as a footnote.
Output title before the containing <div> so that the title
can be at a fixed position.
@ -171,7 +171,7 @@
</xsl:template>
<!-- sect2:
When there is a role attibute, use it as the class value.
When there is a role attribute, use it as the class value.
Removed unused code. -->
<!-- The original template is in {docbook-xsl}/xhtml/sections.xsl -->
<xsl:template match="sect2">

View File

@ -65,7 +65,7 @@
</xsl:template>
<!-- toc.line:
Adding the h* tags and dropping unneded links.
Adding the h* tags and dropping unneeded links.
This template is a full re-made version of the original one. -->
<!-- The original template is in {docbook-xsl}/xhtml/autotoc.xsl -->
<xsl:template name="toc.line">

View File

@ -51,7 +51,7 @@ exit
<xsl:template match="//text()"/>
<xsl:template match="//ulink">
<!-- Match only local patches links and skip duplicated URLs splitted for PDF output-->
<!-- Match only local patch links and skip duplicated URLs split for PDF output-->
<xsl:if test="contains(@url, '.patch') and contains(@url, '&patches-root;')
and not(ancestor-or-self::*/@condition = 'pdf')">
<xsl:variable name="patch.name" select="substring-after(@url, '&patches-root;')"/>

View File

@ -15,7 +15,7 @@
<xsl:template match="ulink">
<!-- If some package don't have the predefined strings in their
name, the next test must be fixed to match it also. Skip possible
duplicated URLs due that may be splitted for PDF output -->
duplicated URLs due that may be split for PDF output -->
<xsl:if test="(contains(@url, '.tar.') or
contains(@url, '.tgz') or
contains(@url, '.patch')) and

View File

@ -1,6 +1,6 @@
The udev-lfs set of files is a customization of systemd.
In 2012, udev was merged with systemd and a build methodology
incompatible with LFS. These files add cusom udev rules
incompatible with LFS. These files add custom udev rules
for LFS.
These files are distributed in the form of a tar file available

View File

@ -2,7 +2,7 @@
# This script generates rules for persistent network device naming
# Data from udev-182 75-persistent-net-generator.rules
# Updated fof udev-197 (DEVICES=en*)
# Updated for udev-197 (DEVICES=en*)
RULES=/etc/udev/rules.d/70-persistent-net.rules
DEVICES=$(eval echo /sys/class/net/{en*,eth*,ath*,wlan*[0-9],msh*,ra*,sta*,ctc*,lcs*,hsi*})