| <?xml version="1.0" encoding="UTF-8"?>
|
| <xsl:stylesheet version="1.0"
|
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
|
| <xsl:output method="text" encoding="UTF-8"/>
|
|
|
| <!-- Match each top-level package -->
|
| <xsl:template match="/">
|
| <xsl:for-each select="//sect1[@id]">
|
| <xsl:variable name="id" select="@id"/>
|
| <xsl:variable name="pkgdir" select="title"/>
|
| <xsl:variable name="pkgname" select="substring-before($pkgdir, '-')"/>
|
| <xsl:variable name="pkgver" select="substring-after($pkgdir, '-')"/>
|
| <xsl:variable name="md5full" select=".//para[contains(., 'MD5')]/text()"/>
|
| <xsl:variable name="md5" select="normalize-space(substring-after($md5full, 'MD5 sum: '))"/>
|
| <xsl:variable name="build" select=".//screen[not(@role)]/userinput"/>
|
| <xsl:variable name="install" select=".//screen[@role='root']/userinput"/>
|
|
|
| <!-- Capture full HTTP URL -->
|
| <xsl:variable name="pkgurl" select=".//ulink[contains(@url, 'http')]/@url"/>
|
|
|
| <!-- Extract filename, e.g., xfwm4-4.18.tar.bz2 -->
|
| <xsl:variable name="tarball" select="substring-after($pkgurl, '/')"/>
|
| <!-- Get the tarball filename from the last slash -->
|
| <!-- extract the last part of the URL path -->
|
| <xsl:variable name="filename" select="substring-after($pkgurl, substring-before($pkgurl, concat('/', substring-after($pkgurl, 'https://'))))"/>
|
|
|
| <!-- Extract version from tarball name -->
|
| <!-- This grabs what’s between the last '-' and the file extension -->
|
| <xsl:variable name="basename" select="substring-before($filename, '.tar')"/>
|
| <xsl:variable name="version" select="substring-after($basename, '-')"/>
|
|
|
| <xsl:variable name="required" select=".//para[@role='required']//xref/@linkend"/>
|
| <xsl:variable name="recommended" select=".//para[@role='recommended']//xref/@linkend"/>
|
| <xsl:variable name="optional" select=".//para[@role='optional']//xref/@linkend"/>
|
|
|
| <xsl:text>pkgdir=[</xsl:text><xsl:value-of select="$pkgdir"/><xsl:text>] </xsl:text>
|
| <xsl:text>pkgname=[</xsl:text><xsl:value-of select="$pkgname"/><xsl:text>] </xsl:text>
|
| <xsl:text>pkgver=[</xsl:text><xsl:value-of select="$pkgver"/><xsl:text>] </xsl:text>
|
| <xsl:text>pkgrel=[1] </xsl:text>
|
| <xsl:text>zarchive=[false] </xsl:text>
|
|
|
| <xsl:text>pkgurl=[</xsl:text><xsl:value-of select="$pkgurl"/><xsl:text>] </xsl:text>
|
| <xsl:text>md5sum=[</xsl:text><xsl:value-of select="normalize-space($md5)"/><xsl:text>] </xsl:text>
|
|
|
| <xsl:text>preconfig=[] </xsl:text>
|
| <xsl:text>prepare=[] </xsl:text>
|
|
|
| <xsl:text>build=[</xsl:text>
|
| <xsl:for-each select="$build">
|
| <xsl:value-of select="normalize-space(.)"/>
|
| <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
|
| </xsl:for-each>
|
| <xsl:text>] </xsl:text>
|
|
|
| <xsl:text>check=[] </xsl:text>
|
|
|
| <xsl:text>install=[</xsl:text>
|
| <xsl:for-each select="$install">
|
| <xsl:value-of select="normalize-space(.)"/>
|
| <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
|
| </xsl:for-each>
|
| <xsl:text>] </xsl:text>
|
|
|
| <xsl:text> # Optional execution order </xsl:text>
|
| <xsl:text>post=[] </xsl:text>
|
| <xsl:text>postconfig=[] </xsl:text>
|
|
|
| <xsl:if test="$required">
|
| <xsl:text>DEPEND=(</xsl:text>
|
| <xsl:for-each select="$required">
|
| <xsl:value-of select="."/>
|
| <xsl:if test="position() != last()"> </xsl:if>
|
| </xsl:for-each>
|
| <xsl:text>) </xsl:text>
|
| </xsl:if>
|
|
|
| <xsl:if test="$recommended">
|
| <xsl:text>recommended=(</xsl:text>
|
| <xsl:for-each select="$recommended">
|
| <xsl:value-of select="."/>
|
| <xsl:if test="position() != last()"> </xsl:if>
|
| </xsl:for-each>
|
| <xsl:text>) </xsl:text>
|
| </xsl:if>
|
|
|
| <xsl:if test="$optional">
|
| <xsl:text>optional=(</xsl:text>
|
| <xsl:for-each select="$optional">
|
| <xsl:value-of select="."/>
|
| <xsl:if test="position() != last()"> </xsl:if>
|
| </xsl:for-each>
|
| <xsl:text>) </xsl:text>
|
| </xsl:if>
|
|
|
| </xsl:for-each>
|
| </xsl:template>
|
| </xsl:stylesheet>
|