Author: pierre
Date: Mon Apr 22 02:38:44 2019
New Revision: 4100
Log:
Fix generation of install instructions, and remove those pesky && as much as
possible
Modified:
jhalfs/trunk/BLFS/xsl/gen-install.xsl
jhalfs/trunk/BLFS/xsl/scripts.xsl
Modified: jhalfs/trunk/BLFS/xsl/gen-install.xsl
==============================================================================
--- jhalfs/trunk/BLFS/xsl/gen-install.xsl Thu Apr 18 01:55:19 2019
(r4099)
+++ jhalfs/trunk/BLFS/xsl/gen-install.xsl Mon Apr 22 02:38:44 2019
(r4100)
@@ -247,7 +247,7 @@
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="output-root">
- <xsl:with-param name="out-string" select="."/>
+ <xsl:with-param name="out-string" select="$out-string"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
Modified: jhalfs/trunk/BLFS/xsl/scripts.xsl
==============================================================================
--- jhalfs/trunk/BLFS/xsl/scripts.xsl Thu Apr 18 01:55:19 2019 (r4099)
+++ jhalfs/trunk/BLFS/xsl/scripts.xsl Mon Apr 22 02:38:44 2019 (r4100)
@@ -540,24 +540,22 @@
<xsl:choose>
<!-- instructions run as root (configuration mainly) -->
<xsl:when test="@role = 'root'">
+<!-- templates begin/end-root are in gen-install.xsl -->
<xsl:if test="not(preceding-sibling::screen[1][@role='root'])">
- <xsl:if test="$sudo = 'y'">
- <xsl:text>sudo -E sh << ROOT_EOF
</xsl:text>
- </xsl:if>
+ <xsl:call-template name="begin-root"/>
</xsl:if>
<xsl:apply-templates mode="root"/>
+ <xsl:text>
</xsl:text>
<xsl:if test="not(following-sibling::screen[1][@role='root'])">
- <xsl:if test="$sudo = 'y'">
- <xsl:text>
ROOT_EOF</xsl:text>
- </xsl:if>
+ <xsl:call-template name="end-root"/>
</xsl:if>
</xsl:when>
<!-- then all the instructions run as user -->
<xsl:otherwise>
<xsl:apply-templates select="userinput"/>
+ <xsl:text>
</xsl:text>
</xsl:otherwise>
</xsl:choose>
- <xsl:text>
</xsl:text>
</xsl:template>
<xsl:template name="set-bootpkg-dir">
@@ -602,26 +600,61 @@
<xsl:template match="screen" mode="config">
<xsl:if test="preceding-sibling::para[1]/xref[@linkend='bootscripts']">
+<!-- if the preceding "screen" tag is role="root", and we are role="root"
+ the end-root has not been called. So do it -->
+ <xsl:if test="preceding-sibling::screen[1][@role='root'] and
+ @role='root'">
+ <xsl:call-template name="end-root"/>
+ </xsl:if>
<xsl:call-template name="set-bootpkg-dir">
<xsl:with-param name="bootpkg" select="'bootscripts'"/>
<xsl:with-param name="url"
select="id('bootscripts')//itemizedlist//ulink/@url"/>
</xsl:call-template>
+<!-- if the preceding "screen" tag is role="root", and we are role="root"
+ the begin-root will not be called. So do it -->
+ <xsl:if test="preceding-sibling::screen[1][@role='root'] and
+ @role='root'">
+ <xsl:call-template name="begin-root"/>
+ </xsl:if>
</xsl:if>
<xsl:if test="preceding-sibling::para[1]/xref[@linkend='systemd-units']">
+<!-- if the preceding "screen" tag is role="root", and we are role="root"
+ the end-root has not been called. So do it -->
+ <xsl:if test="preceding-sibling::screen[1][@role='root'] and
+ @role='root'">
+ <xsl:call-template name="end-root"/>
+ </xsl:if>
<xsl:call-template name="set-bootpkg-dir">
<xsl:with-param name="bootpkg" select="'systemd-units'"/>
<xsl:with-param name="url"
select="id('systemd-units')//itemizedlist//ulink/@url"/>
</xsl:call-template>
+<!-- if the preceding "screen" tag is role="root", and we are role="root"
+ the begin-root will not be called. So do it -->
+ <xsl:if test="preceding-sibling::screen[1][@role='root'] and
+ @role='root'">
+ <xsl:call-template name="begin-root"/>
+ </xsl:if>
</xsl:if>
<xsl:apply-templates select='.'/>
<xsl:if test="preceding-sibling::para[1]/xref[@linkend='bootscripts' or
@linkend='systemd-units']">
- <xsl:text>
-popd</xsl:text>
+<!-- if the next "screen" tag is role="root", and we are role="root"
+ the end-root has not been called. So do it -->
+ <xsl:if test="following-sibling::screen[1][@role='root'] and
+ @role='root'">
+ <xsl:call-template name="end-root"/>
+ </xsl:if>
+ <xsl:text>popd
+</xsl:text>
+<!-- if the next "screen" tag is role="root", and we are role="root"
+ the begin-root will not be called. So do it -->
+ <xsl:if test="following-sibling::screen[1][@role='root'] and
+ @role='root'">
+ <xsl:call-template name="begin-root"/>
+ </xsl:if>
</xsl:if>
- <xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="command" mode="installation">
@@ -685,6 +718,12 @@
<xsl:apply-templates/>
</xsl:template>
+ <xsl:template match="text()">
+ <xsl:call-template name="remove-ampersand">
+ <xsl:with-param name="out-string" select="string()"/>
+ </xsl:call-template>
+ </xsl:template>
+
<xsl:template match="text()" mode="root">
<xsl:call-template name="output-root">
<xsl:with-param name="out-string" select="string()"/>
@@ -739,7 +778,10 @@
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
- <xsl:value-of select="$out-string"/>
+ <xsl:call-template name="remove-ampersand">
+ <xsl:with-param name="out-string" select="$out-string"/>
+ </xsl:call-template>
+<!-- <xsl:value-of select="$out-string"/> -->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -889,25 +931,104 @@
<xsl:choose>
<xsl:when test="contains($outputstring,'>/') and
not(contains(substring-before($outputstring,'>/'),' /'))">
- <xsl:value-of select="substring-before($outputstring,'>/')"/>
+ <xsl:call-template name="remove-ampersand">
+ <xsl:with-param name="out-string"
+ select="substring-before($outputstring,'>/')"/>
+ </xsl:call-template>
+<!-- <xsl:value-of
select="substring-before($outputstring,'>/')"/>-->
<xsl:text>>$PKG_DEST/</xsl:text>
<xsl:call-template name="outputpkgdest">
<xsl:with-param name="outputstring"
select="substring-after($outputstring,'>/')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($outputstring,' /')">
- <xsl:value-of select="substring-before($outputstring,' /')"/>
+ <xsl:call-template name="remove-ampersand">
+ <xsl:with-param name="out-string"
+ select="substring-before($outputstring,' /')"/>
+ </xsl:call-template>
+<!-- <xsl:value-of select="substring-before($outputstring,'
/')"/>-->
<xsl:text> $PKG_DEST/</xsl:text>
<xsl:call-template name="outputpkgdest">
<xsl:with-param name="outputstring"
select="substring-after($outputstring,' /')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
- <xsl:value-of select="$outputstring"/>
+ <xsl:call-template name="remove-ampersand">
+ <xsl:with-param name="out-string" select="$outputstring"/>
+ </xsl:call-template>
+<!-- <xsl:value-of select="$outputstring"/>-->
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
+
+ <xsl:template name="remove-ampersand">
+ <xsl:param name="out-string" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($out-string,'&&
')">
+ <xsl:variable name="instruction-before">
+ <xsl:call-template name="last-line">
+ <xsl:with-param
+ name="instructions"
+ select="substring-before($out-string,'&&
')"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="remove-end-space">
+ <xsl:with-param
+ name="instructions"
+ select="substring-before($out-string,'&&
')"/>
+ </xsl:call-template>
+ <xsl:if test="contains($instruction-before,' ]') or
+ contains($instruction-before,'test ') or
+ contains($instruction-before,'pgrep -l')">
+ <xsl:text> &&</xsl:text>
+ </xsl:if>
+ <xsl:text>
</xsl:text>
+ <xsl:call-template name="remove-ampersand">
+ <xsl:with-param name="out-string"
+ select="substring-after($out-string,
+ '&&
')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$out-string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="last-line">
+ <xsl:param name="instructions" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($instructions,'
')">
+ <xsl:call-template name="last-line">
+ <xsl:with-param
+ name="instructions"
+ select="substring-after($instructions,'
')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="normalize-space($instructions)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="remove-end-space">
+ <xsl:param name="instructions" select="''"/>
+ <xsl:choose>
+ <xsl:when test="contains($instructions,'
')">
+ <xsl:copy-of select="substring-before($instructions,'
')"/>
+ <xsl:text>
</xsl:text>
+ <xsl:call-template name="remove-end-space">
+ <xsl:with-param
+ name="instructions"
+ select="substring-after($instructions,'
')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="normalize-space($instructions)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
</xsl:stylesheet>
--
http://lists.linuxfromscratch.org/listinfo/alfs-log
Unsubscribe: See the above information page