Output a linear book for LFS, with BLFS format
This commit is contained in:
parent
b8aa7ed93b
commit
91b7b5fd88
2 changed files with 230 additions and 0 deletions
211
BLFS/xsl/lfs_make_book.xsl
Normal file
211
BLFS/xsl/lfs_make_book.xsl
Normal file
|
@ -0,0 +1,211 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<!-- $Id: -->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
|
||||
<xsl:key name="idlfs" match="sect1" use="sect1info/productname"/>
|
||||
|
||||
<xsl:template name="detect-lfs">
|
||||
<xsl:param name="package"/>
|
||||
<xsl:param name="lfsbook"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$package='gcc' or
|
||||
$package='dbus' or
|
||||
$package='systemd' or
|
||||
$package='shadow'"/>
|
||||
<xsl:when test="$package='LFS-Release'">true</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:for-each select="document($lfsbook)">
|
||||
<xsl:copy-of select="boolean(key('idlfs',$package)/ancestor::chapter[@id='chapter-building-system'])"/>
|
||||
</xsl:for-each>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="process-lfs">
|
||||
<xsl:param name="package"/>
|
||||
<xsl:param name="lfsbook"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$package='gcc' or
|
||||
$package='dbus' or
|
||||
$package='systemd' or
|
||||
$package='shadow'"/>
|
||||
<xsl:when test="$package='linux'">
|
||||
<xsl:for-each select="document($lfsbook)">
|
||||
<xsl:apply-templates select="key('idlfs',$package)[ancestor::chapter/@id='chapter-bootable']" mode="lfs"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:when test="$package='LFS-Release'">
|
||||
<sect1 id="LFS-Release">
|
||||
<xsl:apply-templates select="document($lfsbook)//sect1[@id='ch-finish-theend']/*" mode="lfs-remap"/>
|
||||
</sect1>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:for-each select="document($lfsbook)">
|
||||
<xsl:apply-templates select="key('idlfs',$package)[ancestor::chapter/@id='chapter-building-system']" mode="lfs"/>
|
||||
</xsl:for-each>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*" mode="lfs">
|
||||
<xsl:choose>
|
||||
<!--variablelist may contain id attributes equal to the name of the package,
|
||||
which generates non-unique id. They are of not mcuh use (short descriptions)
|
||||
here. So just remove them-->
|
||||
<xsl:when test="self::variablelist"/>
|
||||
<!--The id's in lfs are of the form ch-xxx-package. We do not want to
|
||||
use that for file names and the like. So change the id-->
|
||||
<xsl:when test="self::sect1">
|
||||
<xsl:element name="sect1">
|
||||
<xsl:attribute name="id">
|
||||
<xsl:value-of select="./sect1info/productname"/>
|
||||
</xsl:attribute>
|
||||
<xsl:apply-templates mode="lfs"/>
|
||||
</xsl:element>
|
||||
</xsl:when>
|
||||
<xsl:when test=".//sect2">
|
||||
<xsl:element name="{name()}">
|
||||
<xsl:for-each select="attribute::*">
|
||||
<xsl:attribute name="{name()}">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:attribute>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates mode="lfs"/>
|
||||
</xsl:element>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::sect2[@role='package']">
|
||||
<xsl:variable name="url" select="../sect1info/address/text()"/>
|
||||
<xsl:variable name="md5" select="//sect1[@id='materials-packages']//ulink[@url=$url]/../following-sibling::para/literal/text()"/>
|
||||
<xsl:variable name="patch">
|
||||
<xsl:call-template name="find-patch"/>
|
||||
</xsl:variable>
|
||||
<sect2 role="package">
|
||||
<xsl:copy-of select="./*"/>
|
||||
<bridgehead renderas="sect3">Package Information</bridgehead>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>
|
||||
Download (HTTP): <!--<xsl:element name="ulink">
|
||||
<xsl:attribute name="url">
|
||||
<xsl:value-of select="$url"/>
|
||||
</xsl:attribute>
|
||||
</xsl:element>--><ulink url="{$url}"/>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Download (FTP): <ulink url=" "/>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Download MD5 sum: <xsl:value-of select="$md5"/>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<xsl:if test="string-length($patch)>10">
|
||||
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>
|
||||
Required patch:
|
||||
<ulink url="{$patch}"/>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</xsl:if>
|
||||
</sect2>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::sect2[@role='installation']">
|
||||
<sect2 role="installation">
|
||||
<xsl:apply-templates mode="lfs-remap"/>
|
||||
</sect2>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::sect2[@role='configuration']">
|
||||
<sect2 role="configuration">
|
||||
<xsl:apply-templates mode="lfs-remap"/>
|
||||
</sect2>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::sect2">
|
||||
<xsl:element name="sect2">
|
||||
<xsl:for-each select="attribute::*">
|
||||
<xsl:attribute name="{name()}">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:attribute>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates mode="lfs"/>
|
||||
</xsl:element>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>i<!--
|
||||
<xsl:element name="{name()}">
|
||||
<xsl:for-each select="attribute::*">
|
||||
<xsl:attribute name="{name()}">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:attribute>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:element>-->
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="find-patch">
|
||||
<xsl:variable name="patch-command" select="..//userinput[contains(string(),'patch -Np1')]/text()"/>
|
||||
<xsl:variable name="patch" select="substring-after($patch-command,'../')"/>
|
||||
<xsl:if test="string-length($patch) > 10">
|
||||
<xsl:value-of select="//sect1[@id='materials-patches']//ulink/@url[contains(string(),$patch)]"/>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*" mode="lfs-remap">
|
||||
<xsl:choose>
|
||||
<xsl:when test=".//screen">
|
||||
<xsl:element name="{name()}">
|
||||
<xsl:for-each select="attribute::*">
|
||||
<xsl:attribute name="{name()}">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:attribute>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates mode="lfs-remap"/>
|
||||
</xsl:element>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::screen">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@role='nodump'">
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:when>
|
||||
<!-- Since we are using the *-full.xml files, revisions have already been
|
||||
selected, so no need to bother about revision attributes-->
|
||||
<xsl:when test="./userinput[@remap='install' or not(@remap)]">
|
||||
<screen role="root">
|
||||
<xsl:copy-of select="./*"/>
|
||||
</screen>
|
||||
</xsl:when>
|
||||
<xsl:when test="./userinput[@remap='test']">
|
||||
<para><command>
|
||||
<xsl:copy-of select="./userinput/text()"/>
|
||||
</command></para>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise><!--
|
||||
<xsl:copy-of select="."/>-->
|
||||
<xsl:element name="{name()}">
|
||||
<xsl:for-each select="attribute::*">
|
||||
<xsl:attribute name="{name()}">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:attribute>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates mode="sect1"/>
|
||||
</xsl:element>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
<xsl:param name="list" select="''"/>
|
||||
<xsl:param name="MTA" select="'sendmail'"/>
|
||||
<xsl:param name="lfsbook" select="'lfs-full.xml'"/>
|
||||
|
||||
<!-- Check whether the book is sysv or systemd -->
|
||||
<xsl:variable name="rev">
|
||||
|
@ -25,6 +26,8 @@
|
|||
encoding="ISO-8859-1"
|
||||
doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>
|
||||
|
||||
<xsl:include href="lfs_make_book.xsl"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<book>
|
||||
<xsl:copy-of select="/book/bookinfo"/>
|
||||
|
@ -80,7 +83,23 @@
|
|||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:variable name="is-lfs">
|
||||
<xsl:call-template name="detect-lfs">
|
||||
<xsl:with-param name="package" select="$list"/>
|
||||
<xsl:with-param name="lfsbook" select="$lfsbook"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$is-lfs='true'">
|
||||
<xsl:message>
|
||||
<xsl:value-of select="$list"/>
|
||||
<xsl:text> is an lfs package</xsl:text>
|
||||
</xsl:message>
|
||||
<xsl:call-template name="process-lfs">
|
||||
<xsl:with-param name="package" select="$list"/>
|
||||
<xsl:with-param name="lfsbook" select="$lfsbook"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="not(id($list)[self::sect1 or self::sect2 or self::para or self::bridgehead])">
|
||||
<xsl:apply-templates
|
||||
select="//sect1[contains(@id,'xorg7')
|
||||
|
|
Reference in a new issue