r2389 - in jhalfs/branches/experimental: CLFS common

manuel at linuxfromscratch.org manuel at linuxfromscratch.org
Wed Mar 22 14:52:33 PST 2006


Author: manuel
Date: 2006-03-22 15:52:32 -0700 (Wed, 22 Mar 2006)
New Revision: 2389

Modified:
   jhalfs/branches/experimental/CLFS/clfs.xsl
   jhalfs/branches/experimental/CLFS/master.sh
   jhalfs/branches/experimental/common/common-functions
Log:
Added specific CLFS XSL file.
At this momment the CLFS system build may be broken.

Modified: jhalfs/branches/experimental/CLFS/clfs.xsl
===================================================================
--- jhalfs/branches/experimental/CLFS/clfs.xsl	2006-03-22 19:48:20 UTC (rev 2388)
+++ jhalfs/branches/experimental/CLFS/clfs.xsl	2006-03-22 22:52:32 UTC (rev 2389)
@@ -1,84 +1,228 @@
 <?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY % general-entities SYSTEM "FAKEDIR/general.ent">
+  %general-entities;
+]>
+
+<!-- $Id$ -->
+
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:exsl="http://exslt.org/common"
     extension-element-prefixes="exsl"
     version="1.0">
 
-<!-- XSLT stylesheet to extract commands from [B,H]LFS books. -->
+<!-- XSLT stylesheet to create shell scripts from CLFS books. -->
 
+  <!-- Build method used -->
+  <xsl:param name="method" select="chroot"/>
+
+  <!-- Compile the keymap into the kernel? -->
+  <xsl:param name="keymap" select="none"/>
+
+  <!-- Run test suites?
+       0 = none
+       1 = only Glibc, GCC and Binutils testsuites
+       2 = all testsuites
+       3 = alias to 2 -->
+  <xsl:param name="testsuite" select="1"/>
+
+  <!-- Install vim-lang package? -->
+  <xsl:param name="vim-lang" select="1"/>
+
+  <!-- Time zone -->
+  <xsl:param name="timezone" select="America/Toronto"/>
+
+  <!-- Page size -->
+  <xsl:param name="page" select="letter"/>
+
+  <!-- Locale settings -->
+  <xsl:param name="lang" select="en_CA"/>
+
   <xsl:template match="/">
     <xsl:apply-templates select="//sect1"/>
   </xsl:template>
 
   <xsl:template match="sect1">
-      <!-- The dirs names -->
-    <xsl:variable name="pi-dir" select="../processing-instruction('dbhtml')"/>
-    <xsl:variable name="pi-dir-value" select="substring-after($pi-dir,'dir=')"/>
-    <xsl:variable name="quote-dir" select="substring($pi-dir-value,1,1)"/>
-    <xsl:variable name="dirname" select="substring-before(substring($pi-dir-value,2),$quote-dir)"/>
-      <!-- The file names -->
-    <xsl:variable name="pi-file" select="processing-instruction('dbhtml')"/>
-    <xsl:variable name="pi-file-value" select="substring-after($pi-file,'filename=')"/>
-    <xsl:variable name="filename" select="substring-before(substring($pi-file-value,2),'.html')"/>
-      <!-- The build order -->
-    <xsl:variable name="position" select="position()"/>
-    <xsl:variable name="order">
-      <xsl:choose>
-        <xsl:when test="string-length($position) = 1">
-          <xsl:text>00</xsl:text>
-          <xsl:value-of select="$position"/>
-        </xsl:when>
-        <xsl:when test="string-length($position) = 2">
-          <xsl:text>0</xsl:text>
-          <xsl:value-of select="$position"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="$position"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-      <!-- Creating dirs and files -->
-    <exsl:document href="{$dirname}/{$order}-{$filename}" method="text">
-      <xsl:apply-templates select=".//screen"/>
-    </exsl:document>
+    <xsl:choose>
+      <xsl:when test="../@id='chapter-partitioning' or
+                      ../@id='chapter-getting-materials' or
+                      ../@id='chapter-final-preps'"/>
+      <xsl:when test="../@id='chapter-testsuite-tools' and $testsuite='0'"/>
+      <xsl:when test="../@id='chapter-boot' and $method='chroot'"/>
+      <xsl:when test="../@id='chapter-chroot' and $method='boot'"/>
+      <xsl:otherwise>
+        <xsl:if test="count(descendant::screen/userinput) > 0 and
+                      count(descendant::screen/userinput) >
+                      count(descendant::screen[@role='nodump'])">
+            <!-- The dirs names -->
+          <xsl:variable name="pi-dir" select="../processing-instruction('dbhtml')"/>
+          <xsl:variable name="pi-dir-value" select="substring-after($pi-dir,'dir=')"/>
+          <xsl:variable name="quote-dir" select="substring($pi-dir-value,1,1)"/>
+          <xsl:variable name="dirname" select="substring-before(substring($pi-dir-value,2),$quote-dir)"/>
+            <!-- The file names -->
+          <xsl:variable name="pi-file" select="processing-instruction('dbhtml')"/>
+          <xsl:variable name="pi-file-value" select="substring-after($pi-file,'filename=')"/>
+          <xsl:variable name="filename" select="substring-before(substring($pi-file-value,2),'.html')"/>
+            <!-- The build order -->
+          <xsl:variable name="position" select="position()"/>
+          <xsl:variable name="order">
+            <xsl:choose>
+              <xsl:when test="string-length($position) = 1">
+                <xsl:text>00</xsl:text>
+                <xsl:value-of select="$position"/>
+              </xsl:when>
+              <xsl:when test="string-length($position) = 2">
+                <xsl:text>0</xsl:text>
+                <xsl:value-of select="$position"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:value-of select="$position"/>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:variable>
+            <!-- Creating dirs and files -->
+          <exsl:document href="{$dirname}/{$order}-{$filename}" method="text">
+            <xsl:choose>
+              <xsl:when test="../@id='chapter-chroot'">
+                <xsl:text>#!/tools/bin/bash&#xA;set -e&#xA;&#xA;</xsl:text>
+              </xsl:when>
+              <xsl:when test="@id='ch-system-stripping'">
+                <xsl:text>#!/bin/sh&#xA;</xsl:text>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:text>#!/bin/sh&#xA;set -e&#xA;&#xA;</xsl:text>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="sect2[@role='installation']">
+              <xsl:text>cd $PKGDIR&#xA;</xsl:text>
+              <xsl:if test="@id='ch-system-vim' and $vim-lang = '1'">
+                <xsl:text>tar -xvf ../vim-&vim-version;-lang.* --strip-components=1&#xA;</xsl:text>
+              </xsl:if>
+            </xsl:if>
+            <xsl:apply-templates select=".//para/userinput | .//screen"/>
+            <xsl:text>exit</xsl:text>
+          </exsl:document>
+        </xsl:if>
+      </xsl:otherwise>
+    </xsl:choose>
   </xsl:template>
 
   <xsl:template match="screen">
-    <xsl:if test="child::* = userinput">
-      <xsl:choose>
-        <xsl:when test="@role = 'nodump'"/>
-        <xsl:when test="@role = 'root'">
-          <xsl:text>&#xA;</xsl:text>
-          <xsl:text># Run this as root</xsl:text>
-          <xsl:apply-templates select="userinput"/>
-          <xsl:text># End root commands</xsl:text>
-          <xsl:text>&#xA;</xsl:text>
-	</xsl:when>
-        <xsl:otherwise>
-          <xsl:apply-templates select="userinput"/>
-        </xsl:otherwise>
-      </xsl:choose>
+    <xsl:if test="child::* = userinput and not(@role = 'nodump')">
+      <xsl:apply-templates select="userinput" mode="screen"/>
     </xsl:if>
   </xsl:template>
 
-  <xsl:template match="userinput">
-    <xsl:text>&#xA;</xsl:text>
-    <xsl:if test=".//replaceable">
-      <xsl:text># This block must be edited to suit your needs.</xsl:text>
+  <xsl:template match="para/userinput">
+    <xsl:if test="(contains(string(),'test') or
+            contains(string(),'check')) and
+            ($testsuite = '2' or $testsuite = '3')">
+      <xsl:value-of select="substring-before(string(),'make')"/>
+      <xsl:text>make -k</xsl:text>
+      <xsl:value-of select="substring-after(string(),'make')"/>
+      <xsl:text> || true&#xA;</xsl:text>
     </xsl:if>
-    <xsl:text>&#xA;</xsl:text>
-    <xsl:apply-templates/>
-    <xsl:text>&#xA;</xsl:text>
-    <xsl:if test=".//replaceable">
-      <xsl:text># End of editable block.</xsl:text>
-    </xsl:if>
-    <xsl:text>&#xA;</xsl:text>
   </xsl:template>
 
+  <xsl:template match="userinput" mode="screen">
+    <xsl:choose>
+      <!-- Estandarized package formats -->
+      <xsl:when test="contains(string(),'tar.gz')">
+        <xsl:value-of select="substring-before(string(),'tar.gz')"/>
+        <xsl:text>tar.*</xsl:text>
+        <xsl:value-of select="substring-after(string(),'tar.gz')"/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- Avoiding a race condition in a patch -->
+      <xsl:when test="contains(string(),'debian_fixes')">
+        <xsl:value-of select="substring-before(string(),'patch')"/>
+        <xsl:text>patch -Z</xsl:text>
+        <xsl:value-of select="substring-after(string(),'patch')"/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- Setting $LANG for /etc/profile -->
+      <xsl:when test="ancestor::sect1[@id='ch-scripts-profile'] and
+                contains(string(),'export LANG=')">
+        <xsl:value-of select="substring-before(string(),'export LANG=')"/>
+        <xsl:text>export LANG=</xsl:text>
+        <xsl:value-of select="$lang"/>
+        <xsl:value-of select="substring-after(string(),'modifiers]')"/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- Compile the keymap into the kernel? -->
+      <xsl:when test="contains(string(),'defkeymap') and
+                $keymap = 'none'"/>
+      <!-- Copying the kernel config file -->
+      <xsl:when test="string() = 'make mrproper'">
+        <xsl:text>make mrproper&#xA;</xsl:text>
+        <xsl:if test="ancestor::sect1[@id='ch-boot-kernel']">
+          <xsl:text>cp -v ../bootkernel-config .config&#xA;</xsl:text>
+        </xsl:if>
+        <xsl:if test="ancestor::sect1[@id='ch-bootable-kernel']">
+          <xsl:text>cp -v ../kernel-config .config&#xA;</xsl:text>
+        </xsl:if>
+      </xsl:when>
+      <!-- The Coreutils and Module-Init-Tools test suites are optional -->
+      <xsl:when test="($testsuite = '0' or $testsuite = '1') and
+                (ancestor::sect1[@id='ch-system-coreutils'] or
+                ancestor::sect1[@id='ch-system-module-init-tools']) and
+                (contains(string(),'check') or
+                contains(string(),'dummy'))"/>
+      <!-- Fixing toolchain test suites run -->
+      <xsl:when test="string() = 'make check' or
+                string() = 'make -k check'">
+        <xsl:choose>
+          <xsl:when test="$testsuite != '0'">
+            <xsl:text>make -k check || true&#xA;</xsl:text>
+          </xsl:when>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:when test="contains(string(),'glibc-check-log')">
+        <xsl:choose>
+          <xsl:when test="$testsuite != '0'">
+            <xsl:value-of select="substring-before(string(),';')"/>
+            <xsl:text> || true&#xA;</xsl:text>
+            <xsl:value-of select="substring-after(string(),';')"/>
+            <xsl:text>&#xA;</xsl:text>
+          </xsl:when>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:when test="contains(string(),'test_summary') or
+                contains(string(),'expect -c')">
+        <xsl:choose>
+          <xsl:when test="$testsuite != '0'">
+            <xsl:apply-templates/>
+            <xsl:text>&#xA;</xsl:text>
+          </xsl:when>
+        </xsl:choose>
+      </xsl:when>
+      <!-- Don't stop on strip run -->
+      <xsl:when test="contains(string(),'strip ')">
+        <xsl:apply-templates/>
+        <xsl:text> || true&#xA;</xsl:text>
+      </xsl:when>
+      <!-- The rest of commands -->
+      <xsl:otherwise>
+        <xsl:apply-templates/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
   <xsl:template match="replaceable">
-    <xsl:text>**EDITME</xsl:text>
-    <xsl:apply-templates/>
-    <xsl:text>EDITME**</xsl:text>
+    <xsl:choose>
+      <xsl:when test="ancestor::sect1[@id='ch-system-glibc']">
+        <xsl:value-of select="$timezone"/>
+      </xsl:when>
+      <xsl:when test="ancestor::sect1[@id='ch-system-groff']">
+        <xsl:value-of select="$page"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>**EDITME</xsl:text>
+        <xsl:apply-templates/>
+        <xsl:text>EDITME**</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
   </xsl:template>
 
 </xsl:stylesheet>

Modified: jhalfs/branches/experimental/CLFS/master.sh
===================================================================
--- jhalfs/branches/experimental/CLFS/master.sh	2006-03-22 19:48:20 UTC (rev 2388)
+++ jhalfs/branches/experimental/CLFS/master.sh	2006-03-22 22:52:32 UTC (rev 2389)
@@ -1070,9 +1070,8 @@
 ) > $MKFILE
 
   # Add chroot commands
-  i=1
-  for file in chroot/*chroot* ; do
-    chroot=`cat $file | sed -e '/#!\/bin\/sh/d' \
+  if [ "$METHOD" = "chroot" ] ; then
+    chroot=`cat chroot/*chroot* | sed -e '/#!\/tools\/bin\/bash/d' \
                             -e '/^export/d' \
                             -e '/^logout/d' \
                             -e 's@ \\\@ @g' | tr -d '\n' |  sed -e 's/  */ /g' \
@@ -1081,9 +1080,8 @@
                                                                 -e 's|$| -c|' \
                                                                 -e 's|"$$LFS"|$(MOUNT_PT)|'\
                                                                 -e 's|set -e||'`
-    echo -e "CHROOT$i= $chroot\n" >> $MKFILE
-    i=`expr $i + 1`
-  done
+    echo -e "CHROOT1= $chroot\n" >> $MKFILE
+  fi
 
   # Drop in the main target 'all:' and the chapter targets with each sub-target
   # as a dependency.

Modified: jhalfs/branches/experimental/common/common-functions
===================================================================
--- jhalfs/branches/experimental/common/common-functions	2006-03-22 19:48:20 UTC (rev 2388)
+++ jhalfs/branches/experimental/common/common-functions	2006-03-22 22:52:32 UTC (rev 2389)
@@ -620,8 +620,15 @@
   case ${PROGNAME} in
     clfs)
         echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture"
-        xsltproc --xinclude \
-                 --nonet \
+        xsltproc --nonet \
+                 --xinclude \
+                 --stringparam method $METHOD \
+                 --stringparam testsuite $TEST \
+                 --stringparam vim-lang $VIMLANG \
+                 --stringparam timezone $TIMEZONE \
+                 --stringparam page $PAGE \
+                 --stringparam lang $LANG \
+                 --stringparam keymap $KEYMAP \
                  -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
       ;;
     hlfs)




More information about the alfs-log mailing list