On Tue, 28 Oct 2008, Francisco Puente wrote:
> Hello,
>
> I'm building another kickstart CD, minimal, and creating my own
> repository.
>
> Is there any way I can get the list of files that a group (like
> @core o @base) will install?
Below my .sig is an XSLT stylesheet that will do the trick. Save it to
your filesystem as, e.g., comps.xsl. Then use xsltproc to apply it to
the comps.xml file, e.g.,
xsltproc --novalid comps.xsl /path/to/repodata/comps.xml > comps.html
The resulting HTML file will provide you a reasonable list of packages
associated with each group.
Warning: the list might not be complete because any given package in
your named group(s) might might require packages not in those groups.
That's why anaconda does dependency checking at installation time.
--
Paul Heinlein <> heinlein at madboa.com <> http://www.madboa.com/
----- comps.xsl -----
<?xml version='1.0'?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet version="1.0"
mlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"
indent="yes"
encoding="iso-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<!-- the main event -->
<xsl:template match="comps">
<html lang="en-US">
<head>
<title>comps.xml</title>
<xsl:call-template name="default.css"/>
</head>
<body>
<xsl:call-template name="intro.text"/>
<table width="95%">
<tr>
<th>Name</th>
<th>Default</th>
<th>Visible</th>
<th>Description</th>
</tr>
<xsl:apply-templates select="group"
mode="group.chart"/>
</table>
<p> </p>
<table width="95%">
<tr>
<th>Name</th>
<th>Groups Req.</th>
<th>Packages Req.</th>
</tr>
<xsl:apply-templates select="group"
mode="package.chart"/>
</table>
</body>
</html>
</xsl:template>
<!-- for listing descriptions, whether group is default, ... -->
<xsl:template match="group" mode="group.chart">
<xsl:variable name="id" select="id"/>
<tr>
<td id="{$id}-info">
<a href="#{$id}-detail"><xsl:value-of
select="name"/></a>
</td>
<td><xsl:value-of
select="default"/> </td>
<td><xsl:value-of
select="uservisible"/> </td>
<td><xsl:value-of
select="description"/> </td>
</tr>
</xsl:template>
<!-- for listing groups and packages req. by this group -->
<xsl:template match="group" mode="package.chart">
<xsl:variable name="id" select="id"/>
<tr>
<td id="{$id}-detail">
<a href="#{$id}-info"><xsl:value-of
select="name"/></a>
</td>
<td><xsl:apply-templates
select="grouplist"/></td>
<td><xsl:apply-templates
select="packagelist"/></td>
</tr>
</xsl:template>
<!-- templates for grouplist and children -->
<xsl:template match="grouplist">
<table width="100%">
<xsl:apply-templates select="*"
mode="html.table"/>
</table>
</xsl:template>
<xsl:template match="groupreq" mode="html.table">
<tr>
<xsl:call-template name="sub.table.row">
<xsl:with-param name="leftcol" select="."/>
<xsl:with-param name="rightcol"
select="' '"/>
</xsl:call-template>
</tr>
</xsl:template>
<xsl:template match="metapkg" mode="html.table">
<tr>
<xsl:call-template name="sub.table.row">
<xsl:with-param name="leftcol" select="."/>
<xsl:with-param name="rightcol"
select="@type"/>
</xsl:call-template>
</tr>
</xsl:template>
<!-- templates for packagelist and children -->
<xsl:template match="packagelist">
<table width="100%">
<xsl:apply-templates select="*"
mode="html.table"/>
</table>
</xsl:template>
<xsl:template match="packagereq" mode="html.table">
<tr>
<xsl:call-template name="sub.table.row">
<xsl:with-param name="leftcol" select="."/>
<xsl:with-param name="rightcol"
select="@type"/>
</xsl:call-template>
</tr>
</xsl:template>
<!-- named templates -->
<xsl:template name="sub.table.row">
<xsl:param name="leftcol"/>
<xsl:param name="rightcol"/>
<xsl:variable name="last">
<xsl:choose>
<xsl:when test="position() = last()">1</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$last = '1'">
<td style="border-style: none;"><xsl:value-of
select="$leftcol"/></td>
<td style="border-style: none; text-align: right;">
<xsl:value-of select="$rightcol"/>
</td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="$leftcol"/></td>
<td style="text-align: right;"><xsl:value-of
select="$rightcol"/></td>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="default.css">
<xsl:variable name="color"
select="'#990000'"/>
<style type="text/css">
a, a:link, a:active, a:visited {
color: <xsl:value-of select="$color"/>;
}
body {
font-size: small;
background-color: white;
color: black;
width: 700px;
}
td {
border-bottom: 1px solid #999;
font-size: small;
vertical-align: top;
}
th {
color: white;
background-color: <xsl:value-of select="$color"/>;
font-weight: bold;
text-align: left;
padding-right: 15px;
}
</style>
</xsl:template>
<xsl:template name="intro.text">
<p>
Below is an outline of the package groups available at installation
and, later, via yum and other package-management tools. The top
table contains descriptions of each group. To see a detailed view
of the packages that get installed with each group, click on the
group name.
</p>
</xsl:template>
</xsl:stylesheet>
----- end comps.xsl -----