source: BLFS/xsl/scripts.xsl@ 970f2dc

ablfs
Last change on this file since 970f2dc was 970f2dc, checked in by Pierre Labastie <pierre@…>, 13 years ago

Change script generation of root command: replace fragile construct
sudo sh -c '<commands>'
with slightly less fragile construct
sudo sh << ROOT_EOF
<commands with ` and \ escaped>
ROOT_EOF
Note: $ are not escaped, which is usually what is intended, but not always

  • Property mode set to 100644
File size: 21.2 KB
RevLine 
[3c10176]1<?xml version="1.0"?>
2
3<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:exsl="http://exslt.org/common"
5 extension-element-prefixes="exsl"
6 version="1.0">
7
[63fc514]8<!-- $Id: scripts.xsl 34 2012-02-21 16:05:09Z labastie $ -->
[3c10176]9
10<!-- XSLT stylesheet to create shell scripts from "linear build" BLFS books. -->
11
[c0bc66d]12 <!-- Build as user (y) or as root (n)? -->
13 <xsl:param name="sudo" select="y"/>
14
[3c10176]15 <xsl:template match="/">
16 <xsl:apply-templates select="//sect1"/>
17 </xsl:template>
18
19<!--=================== Master chunks code ======================-->
20
21 <xsl:template match="sect1">
22
[63fc514]23 <xsl:if test="@id != 'bootscripts'">
[3c10176]24 <!-- The file names -->
[f4ed135]25 <xsl:variable name="filename" select="@id"/>
[3c10176]26
27 <!-- The build order -->
28 <xsl:variable name="position" select="position()"/>
29 <xsl:variable name="order">
30 <xsl:choose>
31 <xsl:when test="string-length($position) = 1">
32 <xsl:text>00</xsl:text>
33 <xsl:value-of select="$position"/>
34 </xsl:when>
35 <xsl:when test="string-length($position) = 2">
36 <xsl:text>0</xsl:text>
37 <xsl:value-of select="$position"/>
38 </xsl:when>
39 <xsl:otherwise>
40 <xsl:value-of select="$position"/>
41 </xsl:otherwise>
42 </xsl:choose>
43 </xsl:variable>
44
45 <!-- Depuration code -->
46 <xsl:message>
47 <xsl:text>SCRIPT is </xsl:text>
[63fc514]48 <xsl:value-of select="concat($order,'-z-',$filename)"/>
[3c10176]49 <xsl:text>&#xA; FTPDIR is </xsl:text>
[63fc514]50 <xsl:value-of select="$filename"/>
[3c10176]51 <xsl:text>&#xA;&#xA;</xsl:text>
52 </xsl:message>
53
54 <!-- Creating the scripts -->
[73c3c1c]55 <exsl:document href="{$order}-z-{$filename}" method="text">
[91ff6a9]56 <xsl:text>#!/bin/bash&#xA;set -e&#xA;&#xA;</xsl:text>
[3c10176]57 <xsl:choose>
58 <!-- Package page -->
[b45f723]59 <xsl:when test="sect2[@role='package'] and not(@id = 'xorg7-app' or
60 @id = 'xorg7-data' or @id = 'xorg7-driver' or
61 @id = 'xorg7-font' or @id = 'xorg7-lib' or
62 @id = 'xorg7-proto' or @id = 'xorg7-util')">
[3c10176]63 <!-- Variables -->
[63fc514]64 <!-- These three lines could be important if SRC_ARCHIVE,
65 FTP_SERVER and SRCDIR were not set in the environment.
66 But they are not tested for length or anything later,
67 so not needed
[3c10176]68 <xsl:text>SRC_ARCHIVE=$SRC_ARCHIVE&#xA;</xsl:text>
[63fc514]69 <xsl:text>FTP_SERVER=$FTP_SERVER&#xA;</xsl:text>
70 <xsl:text>SRC_DIR=$SRC_DIR&#xA;&#xA;</xsl:text>-->
[3c10176]71 <xsl:text>&#xA;PKG_DIR=</xsl:text>
[63fc514]72 <xsl:value-of select="$filename"/>
73 <xsl:text>&#xA;</xsl:text>
[3c10176]74 <!-- Download code and build commands -->
[63fc514]75 <xsl:apply-templates select="sect2"/>
[3c10176]76 <!-- Clean-up -->
[63fc514]77 <!-- xorg7-server used to require mesalib tree being present.
78 That is no more true
79 <xsl:if test="not(@id='mesalib')"> -->
[5fb652f]80 <xsl:text>cd $SRC_DIR/$PKG_DIR&#xA;</xsl:text>
[5e9076f]81 <!-- In some case, some files in the build tree are owned
82 by root -->
83 <xsl:if test="$sudo='y'">
84 <xsl:text>sudo </xsl:text>
85 </xsl:if>
[5fb652f]86 <xsl:text>rm -rf $UNPACKDIR unpacked&#xA;&#xA;</xsl:text>
[63fc514]87 <!-- Same reason as preceding comment
[5fb652f]88 </xsl:if>
89 <xsl:if test="@id='xorg7-server'">
90 <xsl:text>cd $SRC_DIR/MesaLib
91UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
92rm -rf $UNPACKDIR unpacked&#xA;&#xA;</xsl:text>
[63fc514]93 </xsl:if> -->
[3c10176]94 </xsl:when>
[b45f723]95 <!-- Xorg7 pseudo-packages -->
96 <xsl:when test="contains(@id,'xorg7') and not(@id = 'xorg7-server')">
[63fc514]97 <xsl:text># Useless SRC_DIR=$SRC_DIR
[b45f723]98
99cd $SRC_DIR
100mkdir -p xc
101cd xc&#xA;</xsl:text>
102 <xsl:apply-templates select="sect2" mode="xorg7"/>
103 </xsl:when>
[3c10176]104 <!-- Non-package page -->
105 <xsl:otherwise>
106 <xsl:apply-templates select=".//screen"/>
107 </xsl:otherwise>
108 </xsl:choose>
109 <xsl:text>exit</xsl:text>
110 </exsl:document>
111 </xsl:if>
112 </xsl:template>
113
114<!--======================= Sub-sections code =======================-->
115
116 <xsl:template match="sect2">
117 <xsl:choose>
118 <xsl:when test="@role = 'package'">
[f65d3cb]119 <xsl:text>mkdir -p $SRC_DIR/$PKG_DIR&#xA;</xsl:text>
120 <xsl:text>cd $SRC_DIR/$PKG_DIR&#xA;</xsl:text>
[63fc514]121 <xsl:apply-templates select="bridgehead[@renderas='sect3']"/>
[3c10176]122 <xsl:text>&#xA;</xsl:text>
123 </xsl:when>
124 <xsl:when test="@role = 'installation'">
[859d863]125 <xsl:text>
[9683707]126if [ "${PACKAGE%.zip}" = "${PACKAGE}" ]; then
127 if [[ -e unpacked ]] ; then
[859d863]128 UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
[efef736]129 [[ -n $UNPACKDIR ]] &amp;&amp; [[ -d $UNPACKDIR ]] &amp;&amp; rm -rf $UNPACKDIR
[9683707]130 fi
131 tar -xvf $PACKAGE > unpacked
132 UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
133else
134 UNPACKDIR=${PACKAGE%.zip}
135 [[ -n $UNPACKDIR ]] &amp;&amp; [[ -d $UNPACKDIR ]] &amp;&amp; rm -rf $UNPACKDIR
136 unzip -d $UNPACKDIR ${PACKAGE}
[859d863]137fi
[6ff1be4]138cd $UNPACKDIR&#xA;</xsl:text>
[3c10176]139 <xsl:apply-templates select=".//screen | .//para/command"/>
[a1d0d5c]140 <xsl:if test="$sudo = 'y'">
[52b0d10]141 <xsl:text>sudo /sbin/</xsl:text>
[a1d0d5c]142 </xsl:if>
143 <xsl:text>ldconfig&#xA;&#xA;</xsl:text>
[3c10176]144 </xsl:when>
145 <xsl:when test="@role = 'configuration'">
[63fc514]146 <xsl:apply-templates select=".//screen" mode="config"/>
[3c10176]147 </xsl:when>
148 </xsl:choose>
149 </xsl:template>
150
[b45f723]151 <xsl:template match="sect2" mode="xorg7">
152 <xsl:choose>
[0efb837]153 <xsl:when test="@role = 'package'">
154 <xsl:apply-templates select="itemizedlist/listitem/para" mode="xorg7"/>
155 </xsl:when>
[b45f723]156 <xsl:when test="not(@role)">
[63fc514]157<!-- Useless <xsl:text>SRC_ARCHIVE=$SRC_ARCHIVE
158FTP_SERVER=$FTP_SERVER&#xA;</xsl:text> -->
[0efb837]159 <xsl:apply-templates select=".//screen" mode="sect-ver"/>
[a70c289]160 <xsl:text>mkdir -p ${section}&#xA;cd ${section}&#xA;</xsl:text>
161 <xsl:apply-templates select="../sect2[@role='package']/itemizedlist/listitem/para" mode="xorg7-patch"/>
[9d9a810]162 <xsl:text>for line in $(grep -v '^#' ../${sect_ver}.wget) ; do
[1caf1f4]163 if [[ ! -f ${line} ]] ; then
164 if [[ -f $SRC_ARCHIVE/Xorg/${section}/${line} ]] ; then
165 cp $SRC_ARCHIVE/Xorg/${section}/${line} ${line}
166 elif [[ -f $SRC_ARCHIVE/Xorg/${line} ]] ; then
167 cp $SRC_ARCHIVE/Xorg/${line} ${line}
168 elif [[ -f $SRC_ARCHIVE/${section}/${line} ]] ; then
169 cp $SRC_ARCHIVE/${section}/${line} ${line}
170 elif [[ -f $SRC_ARCHIVE/${line} ]] ; then
171 cp $SRC_ARCHIVE/${line} ${line}
[a70c289]172 else
[63fc514]173 wget -T 30 -t 5 ${FTP_X_SERVER}pub/individual/${section}/${line} || \
174 wget -T 30 -t 5 http://xorg.freedesktop.org/releases/individual/${section}/${line}
[a70c289]175 fi
176 fi
177done
[9d9a810]178md5sum -c ../${sect_ver}.md5
179cp ../${sect_ver}.wget ../${sect_ver}.wget.orig
180cp ../${sect_ver}.md5 ../${sect_ver}.md5.orig&#xA;</xsl:text>
[b45f723]181 </xsl:when>
182 <xsl:when test="@role = 'installation'">
[9d9a810]183 <xsl:text>for package in $(grep -v '^#' ../${sect_ver}.wget) ; do
[b45f723]184 packagedir=$(echo $package | sed 's/.tar.bz2//')
[1caf1f4]185 tar -xf ${package}
186 cd ${packagedir}&#xA;</xsl:text>
[b45f723]187 <xsl:apply-templates select=".//screen | .//para/command"/>
[5be3651]188 <xsl:text> cd ..
[1caf1f4]189 rm -rf ${packagedir}
[9d9a810]190 sed -i "/${package}/d" ../${sect_ver}.wget
191 sed -i "/${package}/d" ../${sect_ver}.md5
[a70c289]192done
[9d9a810]193mv ../${sect_ver}.wget.orig ../${sect_ver}.wget
194mv ../${sect_ver}.md5.orig ../${sect_ver}.md5&#xA;</xsl:text>
[b45f723]195 <xsl:if test="$sudo = 'y'">
[52b0d10]196 <xsl:text>sudo /sbin/</xsl:text>
[b45f723]197 </xsl:if>
198 <xsl:text>ldconfig&#xA;&#xA;</xsl:text>
199 </xsl:when>
[0efb837]200 <xsl:when test="@role = 'configuration'">
201 <xsl:apply-templates select=".//screen"/>
202 <xsl:text>&#xA;</xsl:text>
203 </xsl:when>
[b45f723]204 </xsl:choose>
205 </xsl:template>
206
[3c10176]207<!--==================== Download code =======================-->
208
209 <xsl:template name="package_name">
210 <xsl:param name="url" select="foo"/>
211 <xsl:param name="sub-url" select="substring-after($url,'/')"/>
212 <xsl:choose>
213 <xsl:when test="contains($sub-url,'/')">
214 <xsl:call-template name="package_name">
215 <xsl:with-param name="url" select="$sub-url"/>
216 </xsl:call-template>
217 </xsl:when>
218 <xsl:otherwise>
219 <xsl:choose>
220 <xsl:when test="contains($sub-url,'?')">
221 <xsl:value-of select="substring-before($sub-url,'?')"/>
222 </xsl:when>
223 <xsl:otherwise>
224 <xsl:value-of select="$sub-url"/>
225 </xsl:otherwise>
226 </xsl:choose>
227 </xsl:otherwise>
228 </xsl:choose>
229 </xsl:template>
230
[63fc514]231 <xsl:template match="bridgehead">
[3c10176]232 <xsl:choose>
[63fc514]233 <xsl:when test="string()='Package Information'">
234 <xsl:variable name="url">
235 <xsl:choose>
236 <xsl:when
237 test="string-length(
238 following-sibling::itemizedlist[1]/listitem[1]/para/ulink/@url)
239 &gt; 10">
240 <xsl:value-of select=
241 "following-sibling::itemizedlist[1]/listitem[1]/para/ulink/@url"/>
242 </xsl:when>
243 <xsl:otherwise>
244 <xsl:value-of select=
245 "following-sibling::itemizedlist[1]/listitem[2]/para/ulink/@url"/>
246 </xsl:otherwise>
247 </xsl:choose>
[3c10176]248 </xsl:variable>
[63fc514]249 <xsl:variable name="package">
250 <xsl:call-template name="package_name">
251 <xsl:with-param name="url" select="$url"/>
252 </xsl:call-template>
253 </xsl:variable>
254 <xsl:variable
255 name="first_letter"
256 select="translate(substring($package,1,1),
257 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
258 'abcdefghijklmnopqrstuvwxyz')"/>
259 <xsl:text>PACKAGE=</xsl:text>
260 <xsl:value-of select="$package"/>
261 <xsl:text>&#xA;if [[ ! -f $PACKAGE ]] ; then&#xA;</xsl:text>
[3c10176]262 <!-- SRC_ARCHIVE may have subdirectories or not -->
263 <xsl:text> if [[ -f $SRC_ARCHIVE/$PKG_DIR/$PACKAGE ]] ; then&#xA;</xsl:text>
264 <xsl:text> cp $SRC_ARCHIVE/$PKG_DIR/$PACKAGE $PACKAGE&#xA;</xsl:text>
265 <xsl:text> elif [[ -f $SRC_ARCHIVE/$PACKAGE ]] ; then&#xA;</xsl:text>
266 <xsl:text> cp $SRC_ARCHIVE/$PACKAGE $PACKAGE&#xA; else&#xA;</xsl:text>
267 <!-- The FTP_SERVER mirror -->
[63fc514]268 <xsl:text> wget -T 30 -t 5 ${FTP_SERVER}svn/</xsl:text>
269 <xsl:value-of select="$first_letter"/>
270 <xsl:text>/$PACKAGE</xsl:text>
271 <xsl:apply-templates
272 select="following-sibling::itemizedlist[1]/listitem/para"
273 mode="package"/>
274 </xsl:when>
275 <xsl:when test="string()='Additional Downloads'">
276 <xsl:apply-templates
277 select="following-sibling::itemizedlist[1]/listitem/para"
278 mode="additional"/>
279 </xsl:when>
280 <xsl:otherwise/>
281 </xsl:choose>
282 </xsl:template>
283
284 <xsl:template match="para" mode="package">
285 <xsl:choose>
286 <xsl:when test="contains(string(),'HTTP')">
[3c10176]287 <!-- Upstream HTTP URL -->
[f221c2c]288 <xsl:if test="string-length(ulink/@url) &gt; '10'">
[63fc514]289 <xsl:text> || \&#xA; wget -T 30 -t 5 </xsl:text>
[f221c2c]290 <xsl:choose>
291 <xsl:when test="contains(ulink/@url,'?')">
292 <xsl:value-of select="substring-before(ulink/@url,'?')"/>
293 </xsl:when>
294 <xsl:otherwise>
295 <xsl:value-of select="ulink/@url"/>
296 </xsl:otherwise>
297 </xsl:choose>
[63fc514]298 <xsl:if test="not(contains(string(parent::listitem/following-sibling::listitem[1]/para),'FTP'))">
[fd988ce]299 <xsl:text>
300 cp $PACKAGE $SRC_ARCHIVE
301 fi
302fi
303</xsl:text>
[63fc514]304 </xsl:if>
[3c10176]305 </xsl:if>
306 </xsl:when>
307 <xsl:when test="contains(string(),'FTP')">
308 <!-- Upstream FTP URL -->
309 <xsl:if test="string-length(ulink/@url) &gt; '10'">
[63fc514]310 <xsl:text> || \&#xA; wget -T 30 -t 5 </xsl:text>
[3c10176]311 <xsl:value-of select="ulink/@url"/>
312 </xsl:if>
[fd988ce]313 <xsl:text>
314 cp $PACKAGE $SRC_ARCHIVE
315 fi
316fi
317</xsl:text>
[3c10176]318 </xsl:when>
319 <xsl:when test="contains(string(),'MD5')">
[0aaeb8e]320<!-- some md5 sums are written with a LF -->
321 <xsl:variable name="md5">
322 <xsl:choose>
[6631b83]323 <xsl:when test="contains(substring-after(string(),'sum: '),'&#xA;')">
[0aaeb8e]324 <xsl:value-of select="substring-before(substring-after(string(),'sum: '),'&#xA;')"/>
325 </xsl:when>
326 <xsl:otherwise>
327 <xsl:value-of select="substring-after(string(),'sum: ')"/>
328 </xsl:otherwise>
329 </xsl:choose>
330 </xsl:variable>
[3c10176]331 <xsl:text>echo "</xsl:text>
[0aaeb8e]332 <xsl:value-of select="$md5"/>
[3c10176]333 <xsl:text>&#x20;&#x20;$PACKAGE" | md5sum -c -&#xA;</xsl:text>
334 </xsl:when>
[63fc514]335 </xsl:choose>
336 </xsl:template>
337
338 <xsl:template match="para" mode="additional">
339 <xsl:choose>
[3c10176]340 <xsl:when test="contains(string(ulink/@url),'.patch')">
[b9c5dc9]341 <xsl:variable name="patch">
342 <xsl:call-template name="package_name">
343 <xsl:with-param name="url" select="ulink/@url"/>
344 </xsl:call-template>
345 </xsl:variable>
346 <xsl:text>PATCH=</xsl:text>
347 <xsl:value-of select="$patch"/>
348 <xsl:text>&#xA;if [[ ! -f $PATCH ]] ; then&#xA;</xsl:text>
349 <!-- SRC_ARCHIVE may have subdirectories or not -->
350 <xsl:text> if [[ -f $SRC_ARCHIVE/$PKG_DIR/$PATCH ]] ; then&#xA;</xsl:text>
351 <xsl:text> cp $SRC_ARCHIVE/$PKG_DIR/$PATCH $PATCH&#xA;</xsl:text>
352 <xsl:text> elif [[ -f $SRC_ARCHIVE/$PATCH ]] ; then&#xA;</xsl:text>
353 <xsl:text> cp $SRC_ARCHIVE/$PATCH $PATCH&#xA; else&#xA;</xsl:text>
[63fc514]354 <xsl:text>wget -T 30 -t 5 </xsl:text>
[3c10176]355 <xsl:value-of select="ulink/@url"/>
356 <xsl:text>&#xA;</xsl:text>
[fd988ce]357 <xsl:text>
358 cp $PATCH $SRC_ARCHIVE
359 fi
360fi
361</xsl:text>
[3c10176]362 </xsl:when>
[63fc514]363 <xsl:when test="ulink">
364 <xsl:if test="string-length(ulink/@url) &gt; '10'">
365 <xsl:variable name="package">
366 <xsl:call-template name="package_name">
367 <xsl:with-param name="url" select="ulink/@url"/>
368 </xsl:call-template>
369 </xsl:variable>
370 <xsl:variable
371 name="first_letter"
372 select="translate(substring($package,1,1),
373 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
374 'abcdefghijklmnopqrstuvwxyz')"/>
375 <xsl:text>PACKAGE1=</xsl:text>
376 <xsl:value-of select="$package"/>
377 <xsl:text>&#xA;if [[ ! -f $PACKAGE1 ]] ; then&#xA;</xsl:text>
378 <!-- SRC_ARCHIVE may have subdirectories or not -->
379 <xsl:text> if [[ -f $SRC_ARCHIVE/$PKG_DIR/$PACKAGE1 ]] ; then&#xA;</xsl:text>
380 <xsl:text> cp $SRC_ARCHIVE/$PKG_DIR/$PACKAGE1 $PACKAGE1&#xA;</xsl:text>
381 <xsl:text> elif [[ -f $SRC_ARCHIVE/$PACKAGE1 ]] ; then&#xA;</xsl:text>
382 <xsl:text> cp $SRC_ARCHIVE/$PACKAGE1 $PACKAGE1&#xA; else&#xA;</xsl:text>
383 <!-- The FTP_SERVER mirror -->
[b9c5dc9]384 <xsl:text> wget -T 30 -t 5 ${FTP_SERVER}svn/</xsl:text>
[63fc514]385 <xsl:value-of select="$first_letter"/>
386 <xsl:text>/$PACKAGE1</xsl:text>
387 <xsl:text> || \&#xA; wget -T 30 -t 5 </xsl:text>
388 <xsl:value-of select="ulink/@url"/>
[fd988ce]389 <xsl:text>
390 cp $PACKAGE1 $SRC_ARCHIVE
391 fi
392fi
393</xsl:text>
[63fc514]394 </xsl:if>
395 </xsl:when>
396 <xsl:when test="contains(string(),'MD5')">
[968e958]397<!-- some md5 sums are written with a LF -->
398 <xsl:variable name="md5">
399 <xsl:choose>
[6631b83]400 <xsl:when test="contains(substring-after(string(),'sum: '),'&#xA;')">
[968e958]401 <xsl:value-of select="substring-before(substring-after(string(),'sum: '),'&#xA;')"/>
402 </xsl:when>
403 <xsl:otherwise>
404 <xsl:value-of select="substring-after(string(),'sum: ')"/>
405 </xsl:otherwise>
406 </xsl:choose>
407 </xsl:variable>
[63fc514]408 <xsl:text>echo "</xsl:text>
[968e958]409 <xsl:value-of select="$md5"/>
[63fc514]410 <xsl:text>&#x20;&#x20;$PACKAGE1" | md5sum -c -&#xA;</xsl:text>
411 </xsl:when>
[3c10176]412 </xsl:choose>
413 </xsl:template>
414
[5be3651]415 <xsl:template match="itemizedlist/listitem/para" mode="xorg7">
[0efb837]416 <xsl:if test="contains(string(ulink/@url),'.md5') or
417 contains(string(ulink/@url),'.wget')">
[63fc514]418 <xsl:text>wget -T 30 -t 5 </xsl:text>
[0efb837]419 <xsl:value-of select="ulink/@url"/>
420 <xsl:text>&#xA;</xsl:text>
421 </xsl:if>
422 </xsl:template>
423
424 <xsl:template match="itemizedlist/listitem/para" mode="xorg7-patch">
[5be3651]425 <xsl:if test="contains(string(ulink/@url),'.patch')">
[63fc514]426 <xsl:text>wget -T 30 -t 5 </xsl:text>
[5be3651]427 <xsl:value-of select="ulink/@url"/>
428 <xsl:text>&#xA;</xsl:text>
429 </xsl:if>
430 </xsl:template>
431
[3c10176]432<!--======================== Commands code ==========================-->
433
434 <xsl:template match="screen">
435 <xsl:if test="child::* = userinput and not(@role = 'nodump')">
[96a30c7]436 <xsl:choose>
437 <xsl:when test="@role = 'root'">
438 <xsl:if test="$sudo = 'y'">
[970f2dc]439 <xsl:text>sudo sh &lt;&lt; ROOT_EOF&#xA;</xsl:text>
[96a30c7]440 </xsl:if>
441 <xsl:apply-templates select="userinput" mode="root"/>
442 <xsl:if test="$sudo = 'y'">
[970f2dc]443 <xsl:text>&#xA;ROOT_EOF</xsl:text>
[96a30c7]444 </xsl:if>
445 </xsl:when>
446 <xsl:otherwise>
447 <xsl:apply-templates select="userinput"/>
448 </xsl:otherwise>
449 </xsl:choose>
[3c10176]450 <xsl:text>&#xA;</xsl:text>
451 </xsl:if>
452 </xsl:template>
453
[63fc514]454 <xsl:template match="screen" mode="config">
455 <xsl:if test="preceding-sibling::para[1]/xref[@linkend='bootscripts']">
456 <xsl:text>[[ ! -d $SRC_DIR/blfs-bootscripts ]] &amp;&amp; mkdir $SRC_DIR/blfs-bootscripts
457pushd $SRC_DIR/blfs-bootscripts
458URL=</xsl:text>
459 <xsl:value-of select="id('bootscripts')//itemizedlist//ulink/@url"/><xsl:text>
460BOOTPACKG=$(basename $URL)
461[[ ! -f "$BOOTPACKG" ]] &amp;&amp; { wget -T 30 -t 5 $URL; rm -f unpacked; }
462if [[ -e unpacked ]] ; then
463 UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
464 if ! [[ -d $UNPACKDIR ]]; then
465 rm unpacked
466 tar -xvf $BOOTPACKG > unpacked
467 UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
468 fi
469else
470 tar -xvf $BOOTPACKG > unpacked
471 UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
472fi
473cd $UNPACKDIR
474</xsl:text>
475 </xsl:if>
476 <xsl:apply-templates select='.'/>
477 <xsl:if test="preceding-sibling::para[1]/xref[@linkend='bootscripts']">
478 <xsl:text>
479popd</xsl:text>
480 </xsl:if>
481 <xsl:text>&#xA;</xsl:text>
482 </xsl:template>
483
[0efb837]484 <xsl:template match="screen" mode="sect-ver">
[a70c289]485 <xsl:text>section=</xsl:text>
486 <xsl:value-of select="substring-before(substring-after(string(),'mkdir '),' &amp;')"/>
[9d9a810]487 <xsl:text>&#xA;sect_ver=</xsl:text>
[0efb837]488 <xsl:value-of select="substring-before(substring-after(string(),'-c ../'),'.md5')"/>
489 <xsl:text>&#xA;</xsl:text>
[b45f723]490 </xsl:template>
491
[3c10176]492 <xsl:template match="para/command">
493 <xsl:if test="(contains(string(),'test') or
494 contains(string(),'check'))">
495 <xsl:text>#</xsl:text>
496 <xsl:value-of select="substring-before(string(),'make')"/>
497 <xsl:text>make -k</xsl:text>
498 <xsl:value-of select="substring-after(string(),'make')"/>
499 <xsl:text> || true&#xA;</xsl:text>
500 </xsl:if>
501 </xsl:template>
502
503 <xsl:template match="userinput">
504 <xsl:apply-templates/>
505 </xsl:template>
506
[96a30c7]507 <xsl:template match="userinput" mode="root">
508 <xsl:for-each select="child::node()">
509 <xsl:choose>
[970f2dc]510 <xsl:when test="self::text()">
511 <xsl:call-template name="output-root">
512 <xsl:with-param name="out-string" select="string()"/>
513 </xsl:call-template>
[96a30c7]514 </xsl:when>
515 <xsl:otherwise>
516 <xsl:apply-templates select="self::node()"/>
517 </xsl:otherwise>
518 </xsl:choose>
519 </xsl:for-each>
520 </xsl:template>
521
[970f2dc]522 <xsl:template name="output-root">
523 <xsl:param name="out-string" select="''"/>
[5fb652f]524 <xsl:choose>
[970f2dc]525 <xsl:when test="contains($out-string,'make')">
526 <xsl:call-template name="output-root">
527 <xsl:with-param name="out-string"
528 select="substring-before($out-string,'make')"/>
529 </xsl:call-template>
530 <xsl:text>make -j1</xsl:text>
531 <xsl:call-template name="output-root">
532 <xsl:with-param name="out-string"
533 select="substring-after($out-string,'make')"/>
534 </xsl:call-template>
535 </xsl:when>
536 <xsl:when test="contains($out-string,'`')">
537 <xsl:call-template name="output-root">
538 <xsl:with-param name="out-string"
539 select="substring-before($out-string,'`')"/>
540 </xsl:call-template>
541 <xsl:text>\`</xsl:text>
542 <xsl:call-template name="output-root">
543 <xsl:with-param name="out-string"
544 select="substring-after($out-string,'`')"/>
545 </xsl:call-template>
546 </xsl:when>
547 <xsl:when test="contains($out-string,'\')">
548 <xsl:call-template name="output-root">
549 <xsl:with-param name="out-string"
550 select="substring-before($out-string,'\')"/>
551 </xsl:call-template>
552 <xsl:text>\\</xsl:text>
553 <xsl:call-template name="output-root">
554 <xsl:with-param name="out-string"
555 select="substring-after($out-string,'\')"/>
556 </xsl:call-template>
[5fb652f]557 </xsl:when>
[970f2dc]558 <xsl:otherwise>
559 <xsl:value-of select="$out-string"/>
560 </xsl:otherwise>
561 </xsl:choose>
562 </xsl:template>
563
564 <xsl:template match="replaceable">
[5fb652f]565 <xsl:text>**EDITME</xsl:text>
566 <xsl:apply-templates/>
567 <xsl:text>EDITME**</xsl:text>
[3c10176]568 </xsl:template>
569
570</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.