source: BLFS/libs/scripts.xsl@ 5fb652f

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since 5fb652f was 5fb652f, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

BLFS: Fixed xorg-server + mesalib issues (I think)

  • Property mode set to 100644
File size: 16.6 KB
Line 
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
8<!-- $Id$ -->
9
10<!-- XSLT stylesheet to create shell scripts from "linear build" BLFS books. -->
11
12 <!-- Build as user (y) or as root (n)? -->
13 <xsl:param name="sudo" select="y"/>
14
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 <xsl:if test="(count(descendant::screen/userinput) &gt; 0 and
23 count(descendant::screen/userinput) &gt;
24 count(descendant::screen[@role='nodump'])) and
25 @id != 'locale-issues' and @id != 'xorg7' and
26 @id != 'x-setup'">
27
28 <!-- The file names -->
29 <xsl:variable name="filename" select="@id"/>
30
31 <!-- Package name (use "Download FTP" by default. If empty, use "Download HTTP" -->
32 <xsl:variable name="package">
33 <xsl:choose>
34 <xsl:when
35 test="string-length(sect2[@role='package']/itemizedlist/listitem[2]/para/ulink/@url)
36 &gt; '10'">
37 <xsl:call-template name="package_name">
38 <xsl:with-param name="url"
39 select="sect2[@role='package']/itemizedlist/listitem[2]/para/ulink/@url"/>
40 </xsl:call-template>
41 </xsl:when>
42 <xsl:otherwise>
43 <xsl:call-template name="package_name">
44 <xsl:with-param name="url"
45 select="sect2[@role='package']/itemizedlist/listitem[1]/para/ulink/@url"/>
46 </xsl:call-template>
47 </xsl:otherwise>
48 </xsl:choose>
49 </xsl:variable>
50
51 <!-- FTP dir name -->
52 <xsl:variable name="ftpdir">
53 <xsl:call-template name="ftp_dir">
54 <xsl:with-param name="package" select="$package"/>
55 </xsl:call-template>
56 </xsl:variable>
57
58 <!-- The build order -->
59 <xsl:variable name="position" select="position()"/>
60 <xsl:variable name="order">
61 <xsl:choose>
62 <xsl:when test="string-length($position) = 1">
63 <xsl:text>00</xsl:text>
64 <xsl:value-of select="$position"/>
65 </xsl:when>
66 <xsl:when test="string-length($position) = 2">
67 <xsl:text>0</xsl:text>
68 <xsl:value-of select="$position"/>
69 </xsl:when>
70 <xsl:otherwise>
71 <xsl:value-of select="$position"/>
72 </xsl:otherwise>
73 </xsl:choose>
74 </xsl:variable>
75
76 <!-- Depuration code -->
77 <xsl:message>
78 <xsl:text>SCRIPT is </xsl:text>
79 <xsl:value-of select="concat($order,'-',$filename)"/>
80 <xsl:text>&#xA; PACKAGE is </xsl:text>
81 <xsl:value-of select="$package"/>
82 <xsl:text>&#xA; FTPDIR is </xsl:text>
83 <xsl:value-of select="$ftpdir"/>
84 <xsl:text>&#xA;&#xA;</xsl:text>
85 </xsl:message>
86
87 <!-- Creating the scripts -->
88 <exsl:document href="{$order}-z-{$filename}" method="text">
89 <xsl:text>#!/bin/bash&#xA;set -e&#xA;&#xA;</xsl:text>
90 <xsl:choose>
91 <!-- Package page -->
92 <xsl:when test="sect2[@role='package'] and not(@id = 'xorg7-app' or
93 @id = 'xorg7-data' or @id = 'xorg7-driver' or
94 @id = 'xorg7-font' or @id = 'xorg7-lib' or
95 @id = 'xorg7-proto' or @id = 'xorg7-util')">
96 <!-- Variables -->
97 <xsl:text>SRC_ARCHIVE=$SRC_ARCHIVE&#xA;</xsl:text>
98 <xsl:text>FTP_SERVER=$FTP_SERVER&#xA;&#xA;PACKAGE=</xsl:text>
99 <xsl:value-of select="$package"/>
100 <xsl:text>&#xA;PKG_DIR=</xsl:text>
101 <xsl:value-of select="$ftpdir"/>
102 <xsl:text>&#xA;SRC_DIR=$SRC_DIR&#xA;&#xA;</xsl:text>
103 <!-- Download code and build commands -->
104 <xsl:apply-templates select="sect2">
105 <xsl:with-param name="package" select="$package"/>
106 <xsl:with-param name="ftpdir" select="$ftpdir"/>
107 </xsl:apply-templates>
108 <!-- Clean-up -->
109 <xsl:if test="not(@id='mesalib')">
110 <xsl:text>cd $SRC_DIR/$PKG_DIR&#xA;</xsl:text>
111 <xsl:text>rm -rf $UNPACKDIR unpacked&#xA;&#xA;</xsl:text>
112 </xsl:if>
113 <xsl:if test="@id='xorg7-server'">
114 <xsl:text>cd $SRC_DIR/MesaLib
115UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
116rm -rf $UNPACKDIR unpacked&#xA;&#xA;</xsl:text>
117 </xsl:if>
118 </xsl:when>
119 <!-- Xorg7 pseudo-packages -->
120 <xsl:when test="contains(@id,'xorg7') and not(@id = 'xorg7-server')">
121 <xsl:text>SRC_DIR=$SRC_DIR
122
123cd $SRC_DIR
124mkdir -p xc
125cd xc&#xA;</xsl:text>
126 <xsl:apply-templates select="sect2" mode="xorg7"/>
127 </xsl:when>
128 <!-- Non-package page -->
129 <xsl:otherwise>
130 <xsl:apply-templates select=".//screen"/>
131 </xsl:otherwise>
132 </xsl:choose>
133 <xsl:text>exit</xsl:text>
134 </exsl:document>
135
136 </xsl:if>
137 </xsl:template>
138
139<!--======================= Sub-sections code =======================-->
140
141 <xsl:template match="sect2">
142 <xsl:param name="package" select="foo"/>
143 <xsl:param name="ftpdir" select="foo"/>
144 <xsl:choose>
145 <xsl:when test="@role = 'package'">
146 <xsl:text>mkdir -p $SRC_DIR/$PKG_DIR&#xA;</xsl:text>
147 <xsl:text>cd $SRC_DIR/$PKG_DIR&#xA;</xsl:text>
148 <xsl:apply-templates select="itemizedlist/listitem/para">
149 <xsl:with-param name="package" select="$package"/>
150 <xsl:with-param name="ftpdir" select="$ftpdir"/>
151 </xsl:apply-templates>
152 <xsl:text>&#xA;</xsl:text>
153 </xsl:when>
154 <xsl:when test="@role = 'installation'">
155 <xsl:text>
156if [[ -e unpacked ]] ; then
157 UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
158 rm -rf $UNPACKDIR
159fi
160tar -xvf $PACKAGE > unpacked
161UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'`
162cd $UNPACKDIR&#xA;</xsl:text>
163 <xsl:apply-templates select=".//screen | .//para/command"/>
164 <xsl:if test="$sudo = 'y'">
165 <xsl:text>sudo /sbin/</xsl:text>
166 </xsl:if>
167 <xsl:text>ldconfig&#xA;&#xA;</xsl:text>
168 </xsl:when>
169 <xsl:when test="@role = 'configuration'">
170 <xsl:apply-templates select=".//screen"/>
171 <xsl:text>&#xA;</xsl:text>
172 </xsl:when>
173 </xsl:choose>
174 </xsl:template>
175
176 <xsl:template match="sect2" mode="xorg7">
177 <xsl:choose>
178 <xsl:when test="@role = 'package'">
179 <xsl:apply-templates select="itemizedlist/listitem/para" mode="xorg7"/>
180 </xsl:when>
181 <xsl:when test="not(@role)">
182 <xsl:apply-templates select=".//screen"/>
183 <xsl:apply-templates select="../sect2[@role='package']/itemizedlist/listitem/para" mode="xorg7-patch"/>
184 <xsl:apply-templates select=".//screen" mode="sect-ver"/>
185 </xsl:when>
186 <xsl:when test="@role = 'installation'">
187 <xsl:text>for package in $(grep -v '^#' ../${sect-ver}.wget) ; do
188 packagedir=$(echo $package | sed 's/.tar.bz2//')
189 tar -xf $package
190 cd $packagedir&#xA;</xsl:text>
191 <xsl:apply-templates select=".//screen | .//para/command"/>
192 <xsl:text> cd ..
193 rm -rf $packagedir
194done&#xA;</xsl:text>
195 <xsl:if test="$sudo = 'y'">
196 <xsl:text>sudo /sbin/</xsl:text>
197 </xsl:if>
198 <xsl:text>ldconfig&#xA;&#xA;</xsl:text>
199 </xsl:when>
200 <xsl:when test="@role = 'configuration'">
201 <xsl:apply-templates select=".//screen"/>
202 <xsl:text>&#xA;</xsl:text>
203 </xsl:when>
204 </xsl:choose>
205 </xsl:template>
206
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:when test="contains($sub-url,'.patch')"/>
224 <xsl:otherwise>
225 <xsl:value-of select="$sub-url"/>
226 </xsl:otherwise>
227 </xsl:choose>
228 </xsl:otherwise>
229 </xsl:choose>
230 </xsl:template>
231
232 <xsl:template name="ftp_dir">
233 <xsl:param name="package" select="foo"/>
234 <!-- A lot of hardcoded dir names. Not full revised yet. -->
235 <xsl:choose>
236 <!-- cdparanoia -->
237 <xsl:when test="contains($package, '-III')">
238 <xsl:text>cdparanoia</xsl:text>
239 </xsl:when>
240 <!-- DobBook 3.1 -->
241 <xsl:when test="contains($package, 'docbk31')">
242 <xsl:text>docbk</xsl:text>
243 </xsl:when>
244 <!-- gc -->
245 <xsl:when test="contains($package, 'gc6')">
246 <xsl:text>gc</xsl:text>
247 </xsl:when>
248 <!-- ISO-codes -->
249 <xsl:when test="contains($package, 'iso-codes')">
250 <xsl:text>iso-codes</xsl:text>
251 </xsl:when>
252 <!-- JPEG -->
253 <xsl:when test="contains($package, 'jpegsrc')">
254 <xsl:text>jpeg</xsl:text>
255 </xsl:when>
256 <!-- lynx -->
257 <xsl:when test="contains($package, 'lynx')">
258 <xsl:text>lynx</xsl:text>
259 </xsl:when>
260 <!-- ntp -->
261 <xsl:when test="contains($package, 'ntp')">
262 <xsl:text>ntp</xsl:text>
263 </xsl:when>
264 <!-- OpenLDAP -->
265 <xsl:when test="contains($package, 'openldap')">
266 <xsl:text>openldap</xsl:text>
267 </xsl:when>
268 <!-- Open Office -->
269 <xsl:when test="contains($package, 'OOo')">
270 <xsl:text>OOo</xsl:text>
271 </xsl:when>
272 <!-- pine -->
273 <xsl:when test="contains($package, 'pine')">
274 <xsl:text>pine</xsl:text>
275 </xsl:when>
276 <!-- portmap -->
277 <xsl:when test="contains($package, 'portmap')">
278 <xsl:text>portmap</xsl:text>
279 </xsl:when>
280 <!-- psutils -->
281 <xsl:when test="contains($package, 'psutils')">
282 <xsl:text>psutils</xsl:text>
283 </xsl:when>
284 <!-- qpopper -->
285 <xsl:when test="contains($package, 'qpopper')">
286 <xsl:text>qpopper</xsl:text>
287 </xsl:when>
288 <!-- QT -->
289 <xsl:when test="contains($package, 'qt-x')">
290 <xsl:text>qt-x11-free</xsl:text>
291 </xsl:when>
292 <!-- sendmail -->
293 <xsl:when test="contains($package, 'sendmail')">
294 <xsl:text>sendmail</xsl:text>
295 </xsl:when>
296 <!-- Slib -->
297 <xsl:when test="contains($package, 'slib')">
298 <xsl:text>slib</xsl:text>
299 </xsl:when>
300 <!-- TCL -->
301 <xsl:when test="contains($package, 'tcl')">
302 <xsl:text>tcl</xsl:text>
303 </xsl:when>
304 <!-- tcpwrappers -->
305 <xsl:when test="contains($package, 'tcp_wrappers')">
306 <xsl:text>tcp_wrappers</xsl:text>
307 </xsl:when>
308 <!-- TeTeX -->
309 <xsl:when test="contains($package, 'tetex')">
310 <xsl:text>tetex</xsl:text>
311 </xsl:when>
312 <!-- Tidy -->
313 <xsl:when test="contains($package, 'tidy')">
314 <xsl:text>tidy</xsl:text>
315 </xsl:when>
316 <!-- Tk -->
317 <xsl:when test="contains($package, 'tk8')">
318 <xsl:text>tk</xsl:text>
319 </xsl:when>
320 <!-- unzip -->
321 <xsl:when test="contains($package, 'unzip')">
322 <xsl:text>unzip</xsl:text>
323 </xsl:when>
324 <!-- wireless_tools -->
325 <xsl:when test="contains($package, 'wireless_tools')">
326 <xsl:text>wireless_tools</xsl:text>
327 </xsl:when>
328 <!-- whois -->
329 <xsl:when test="contains($package, 'whois')">
330 <xsl:text>whois</xsl:text>
331 </xsl:when>
332 <!-- XOrg -->
333 <xsl:when test="contains($package, 'X11R6')">
334 <xsl:text>Xorg</xsl:text>
335 </xsl:when>
336 <!-- zip -->
337 <xsl:when test="contains($package, 'zip2')">
338 <xsl:text>zip</xsl:text>
339 </xsl:when>
340 <!-- General rule -->
341 <xsl:otherwise>
342 <xsl:variable name="cut"
343 select="translate(substring-after($package, '-'), '0123456789', '0000000000')"/>
344 <xsl:variable name="package2">
345 <xsl:value-of select="substring-before($package, '-')"/>
346 <xsl:text>-</xsl:text>
347 <xsl:value-of select="$cut"/>
348 </xsl:variable>
349 <xsl:value-of select="substring-before($package2, '-0')"/>
350 </xsl:otherwise>
351 </xsl:choose>
352 </xsl:template>
353
354 <xsl:template match="itemizedlist/listitem/para">
355 <xsl:param name="package" select="foo"/>
356 <xsl:param name="ftpdir" select="foo"/>
357 <xsl:choose>
358 <!-- This depend on all package pages having both "Download HTTP" and "Download FTP" lines -->
359 <xsl:when test="contains(string(),'HTTP')">
360 <xsl:text>if [[ ! -f $PACKAGE ]] ; then&#xA;</xsl:text>
361 <!-- SRC_ARCHIVE may have subdirectories or not -->
362 <xsl:text> if [[ -f $SRC_ARCHIVE/$PKG_DIR/$PACKAGE ]] ; then&#xA;</xsl:text>
363 <xsl:text> cp $SRC_ARCHIVE/$PKG_DIR/$PACKAGE $PACKAGE&#xA;</xsl:text>
364 <xsl:text> elif [[ -f $SRC_ARCHIVE/$PACKAGE ]] ; then&#xA;</xsl:text>
365 <xsl:text> cp $SRC_ARCHIVE/$PACKAGE $PACKAGE&#xA; else&#xA;</xsl:text>
366 <!-- The FTP_SERVER mirror -->
367 <xsl:text> wget ${FTP_SERVER}conglomeration/$PKG_DIR/$PACKAGE</xsl:text>
368 <!-- Upstream HTTP URL -->
369 <xsl:if test="string-length(ulink/@url) &gt; '10'">
370 <xsl:text> || \&#xA; wget </xsl:text>
371 <xsl:choose>
372 <xsl:when test="contains(ulink/@url,'?')">
373 <xsl:value-of select="substring-before(ulink/@url,'?')"/>
374 </xsl:when>
375 <xsl:otherwise>
376 <xsl:value-of select="ulink/@url"/>
377 </xsl:otherwise>
378 </xsl:choose>
379 </xsl:if>
380 </xsl:when>
381 <xsl:when test="contains(string(),'FTP')">
382 <!-- Upstream FTP URL -->
383 <xsl:if test="string-length(ulink/@url) &gt; '10'">
384 <xsl:text> || \&#xA; wget </xsl:text>
385 <xsl:value-of select="ulink/@url"/>
386 </xsl:if>
387 <xsl:text>&#xA; fi&#xA;fi&#xA;</xsl:text>
388 </xsl:when>
389 <xsl:when test="contains(string(),'MD5')">
390 <xsl:text>echo "</xsl:text>
391 <xsl:value-of select="substring-after(string(),'sum: ')"/>
392 <xsl:text>&#x20;&#x20;$PACKAGE" | md5sum -c -&#xA;</xsl:text>
393 </xsl:when>
394 <!-- Patches -->
395 <xsl:when test="contains(string(ulink/@url),'.patch')">
396 <xsl:text>wget </xsl:text>
397 <xsl:value-of select="ulink/@url"/>
398 <xsl:text>&#xA;</xsl:text>
399 </xsl:when>
400 </xsl:choose>
401 </xsl:template>
402
403 <xsl:template match="itemizedlist/listitem/para" mode="xorg7">
404 <xsl:if test="contains(string(ulink/@url),'.md5') or
405 contains(string(ulink/@url),'.wget')">
406 <xsl:text>wget </xsl:text>
407 <xsl:value-of select="ulink/@url"/>
408 <xsl:text>&#xA;</xsl:text>
409 </xsl:if>
410 </xsl:template>
411
412 <xsl:template match="itemizedlist/listitem/para" mode="xorg7-patch">
413 <xsl:if test="contains(string(ulink/@url),'.patch')">
414 <xsl:text>wget </xsl:text>
415 <xsl:value-of select="ulink/@url"/>
416 <xsl:text>&#xA;</xsl:text>
417 </xsl:if>
418 </xsl:template>
419
420<!--======================== Commands code ==========================-->
421
422 <xsl:template match="screen">
423 <xsl:if test="child::* = userinput and not(@role = 'nodump')">
424 <xsl:if test="@role = 'root' and $sudo = 'y'">
425 <xsl:text>sudo sh -c "</xsl:text>
426 </xsl:if>
427 <xsl:apply-templates select="userinput"/>
428 <xsl:if test="@role = 'root' and $sudo = 'y'">
429 <xsl:text>"</xsl:text>
430 </xsl:if>
431 <xsl:text>&#xA;</xsl:text>
432 </xsl:if>
433 </xsl:template>
434
435 <xsl:template match="screen" mode="sect-ver">
436 <xsl:text>sect-ver=</xsl:text>
437 <xsl:value-of select="substring-before(substring-after(string(),'-c ../'),'.md5')"/>
438 <xsl:text>&#xA;</xsl:text>
439 </xsl:template>
440
441 <xsl:template match="para/command">
442 <xsl:if test="(contains(string(),'test') or
443 contains(string(),'check'))">
444 <xsl:text>#</xsl:text>
445 <xsl:value-of select="substring-before(string(),'make')"/>
446 <xsl:text>make -k</xsl:text>
447 <xsl:value-of select="substring-after(string(),'make')"/>
448 <xsl:text> || true&#xA;</xsl:text>
449 </xsl:if>
450 </xsl:template>
451
452 <xsl:template match="userinput">
453 <xsl:apply-templates/>
454 </xsl:template>
455
456 <xsl:template match="replaceable">
457 <xsl:choose>
458 <xsl:when test="ancestor::sect1[@id='xorg7-server']">
459 <xsl:text>$SRC_DIR/MesaLib</xsl:text>
460 </xsl:when>
461 <xsl:otherwise>
462 <xsl:text>**EDITME</xsl:text>
463 <xsl:apply-templates/>
464 <xsl:text>EDITME**</xsl:text>
465 </xsl:otherwise>
466 </xsl:choose>
467 </xsl:template>
468
469</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.