diff options
author | Tommy Reynolds <Tommy.Reynolds@MegaCoder.com> | 2005-11-25 20:52:52 +0000 |
---|---|---|
committer | Tommy Reynolds <Tommy.Reynolds@MegaCoder.com> | 2005-11-25 20:52:52 +0000 |
commit | c441fc6926fb9243488c6db32394e1ed9c4271b6 (patch) | |
tree | c976910dc041626d350de93a271b586f7dac9cca | |
parent | 9859e1d8312f87165650db526416d4d8c4097fee (diff) | |
download | fedora-doc-utils-c441fc6926fb9243488c6db32394e1ed9c4271b6.tar.gz fedora-doc-utils-c441fc6926fb9243488c6db32394e1ed9c4271b6.tar.xz fedora-doc-utils-c441fc6926fb9243488c6db32394e1ed9c4271b6.zip |
Candidate solution to keeping all the various RPM packaging files
(the RPM spec file, the OMF file, the ".desktop" and the package's
<bookinfo> (or <articleinfo>) consistent by using a DTD-controlled metafile
from which everything else is derived.
-rw-r--r-- | packaging/bookinfo.xsl | 73 | ||||
-rw-r--r-- | packaging/desktop.xsl | 37 | ||||
-rw-r--r-- | packaging/omf.xsl | 57 | ||||
-rw-r--r-- | packaging/rpm-info.dtd | 55 | ||||
-rw-r--r-- | packaging/spec.xsl | 76 |
5 files changed, 298 insertions, 0 deletions
diff --git a/packaging/bookinfo.xsl b/packaging/bookinfo.xsl new file mode 100644 index 0000000..2cc636f --- /dev/null +++ b/packaging/bookinfo.xsl @@ -0,0 +1,73 @@ +<!-- Transform rpm-info.xml into either "bookinfo" or "articleinfo" --> +<xsl:stylesheet version="1.0" xml:space="preserve" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="yes" standalone="no" version="1.0"/> + + <xsl:param name="lang" select="'en'"/> + <xsl:param name="doctype" select="'bookinfo'"/> + + <xsl:template match="/"> + <xsl:element name="{$doctype}"> + <title> + <xsl:call-template name="get-title"/> + </title> + <copyright> + <year> + <xsl:value-of select="/rpm-info/copyright/year"/> + </year> + <xsl:for-each select="/rpm-info/copyright/holder"> + <holder> + <xsl:value-of select="node()"/> + </holder> + </xsl:for-each> + </copyright> + <authorgroup> + <xsl:for-each select="/rpm-info/author"> + <author> + <xsl:call-template name="human"/> + </author> + </xsl:for-each> + <xsl:for-each select="/rpm-info/translator"> + <othercredit> + <xsl:call-template name="human"/> + <personalblurb>Translator</personalblurb> + </othercredit> + </xsl:for-each> + <xsl:for-each select="/rpm-info/editor"> + <editor> + <xsl:call-template name="human"/> + </editor> + </xsl:for-each> + </authorgroup> + <xsl:text disable-output-escaping="yes">&LEGALNOTICE;</xsl:text> + <revhistory> + <xsl:for-each select="/rpm-info/changelog/revision"> + <revision> + <revnumber><xsl:value-of select="@version"/></revnumber> + <date><xsl:value-of select="@date"/></date> + <authorinitials><xsl:value-of select="author/@initials"/></authorinitials> + <revdescription> + <para> + <xsl:value-of select="details"/> + </para> + </revdescription> + </revision> + </xsl:for-each> + </revhistory> + </xsl:element> + </xsl:template> + + <xsl:template name="get-title"> + <xsl:for-each select="/rpm-info/titles/translation"> + <xsl:choose> + <xsl:when test="@lang = $lang"> + <xsl:value-of select="title"/> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <xsl:template name="human"> + <surname><xsl:value-of select="@surname"/></surname> + <firstname><xsl:value-of select="@firstname"/></firstname> + </xsl:template> +</xsl:stylesheet> diff --git a/packaging/desktop.xsl b/packaging/desktop.xsl new file mode 100644 index 0000000..74cf957 --- /dev/null +++ b/packaging/desktop.xsl @@ -0,0 +1,37 @@ +<!-- Transform rpm-info.xml into a .desktop File --> +<xsl:stylesheet version="1.0" xml:space="preserve" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output encoding="UTF-8" indent="no" method="text" omit-xml-declaration="no" standalone="no" version="1.0"/> + +<!-- Note: do not indent this file! Any whitespace here + will be reproduced in the output --> + + <xsl:param name="lang" select="'en'" /> + <xsl:param name="docbase" select="'example-tutorial'" /> + <xsl:param name="release" select="1"/> + +<xsl:template match="/"> +[Desktop Entry] +Encoding=UTF-8 +Categories=X-Fedora-Documentation +GenericName=<xsl:value-of select="/rpm-info/titles/translation[@lang='en']/title"/> +Name=<xsl:value-of select="/rpm-info/titles/translation[@lang='en']/title"/> +Exec=gnome-help file://usr/share/doc/fedora-doc-<xsl:value-of select="$docbase"/>/en/<xsl:value-of select="$docbase"/>-en.xml +<xsl:for-each select="/rpm-info/titles/translation"> +Name[<xsl:value-of select="@lang"/>]=<xsl:value-of select="title"/> +Comment[<xsl:value-of select="@lang"/>]=<xsl:value-of select="desc"/> +Exec[<xsl:value-of select="@lang"/>]=gnome-help file://usr/share/doc/fedora-doc-<xsl:value-of select="$docbase"/>/<xsl:value-of select="@lang"/>/<xsl:value-of select="$docbase"/>-<xsl:value-of select="@lang"/>.xml +</xsl:for-each> + +</xsl:template> + + <xsl:template name="get-title"> + <xsl:for-each select="/rpm-info/titles/translation"> + <xsl:choose> + <xsl:when test="@lang = $lang"> + <xsl:value-of select="title"/> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:template> + +</xsl:stylesheet> diff --git a/packaging/omf.xsl b/packaging/omf.xsl new file mode 100644 index 0000000..b0aedca --- /dev/null +++ b/packaging/omf.xsl @@ -0,0 +1,57 @@ +<!-- Transform rpm-info.xml into an OMF file --> +<xsl:stylesheet version="1.0" xml:space="preserve" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output doctype-public="-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" doctype-system="http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd" encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="no" standalone="no" version="1.0"/> + +<!-- Note: do not indent this file! Any whitespace here + will be reproduced in the output --> + + <xsl:param name="lang" select="'en'" /> + <xsl:param name="docbase" select="'example-tutorial'" /> + + <xsl:template match="/"> + <omf> + <resource> + <creator> + fedora-docs-list@redhat.com (Fedora Documentation Project) + </creator> + <maintainer> + fedora-docs-list@redhat.com (Fedora Documentation Project) + </maintainer> + <title> + <xsl:call-template name="get-title"/> + </title> + <date> + <xsl:value-of select="/rpm-info/changelog/revision[1]/@date"/> + </date> + <version + identifier="{/rpm-info/changelog/revision[1]/@version}" + date="{/rpm-info/changelog/revision[1]/@date}" + description="{$docbase}-{/rpm-info/changelog/revision[1]/@version} ({/rpm-info/changelog/revision[1]/@date})" + /> + <subject category="General|Linux|Distributions|Other"/> + <description> + <xsl:call-template name="get-title"/> + </description> + <type> + <xsl:call-template name="get-title"/> + </type> + <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.2//EN"/> + <identifier url="file:/usr/share/fedora/doc/fedora-doc-{$docbase}/{$lang}/{$docbase}-{$lang}.xml" /> + <language code="{$lang}"/> + <relation seriesid="7a5d3ea2-2a1e-11da-86a3-8ea47a4bb227"/> + <rights type="GNU FDL" license.version="1.1" /> + </resource> + </omf> + </xsl:template> + + <xsl:template name="get-title"> + <xsl:for-each select="/rpm-info/titles/translation"> + <xsl:choose> + <xsl:when test="@lang = $lang"> + <xsl:value-of select="title"/> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:template> + +</xsl:stylesheet> diff --git a/packaging/rpm-info.dtd b/packaging/rpm-info.dtd new file mode 100644 index 0000000..960d862 --- /dev/null +++ b/packaging/rpm-info.dtd @@ -0,0 +1,55 @@ +<!-- + DTD for the Fedora Docs Project RPM Information file "rpm-info.xml" +--> + +<!ELEMENT rpm-info (release,author+,translator*,editor*, + license,copyright+,titles,changelog) > + +<!ELEMENT release EMPTY > +<!ATTLIST release rel CDATA #REQUIRED > + +<!ELEMENT license (rights,license.version) > +<!ELEMENT rights (#PCDATA) > +<!ELEMENT license.version (#PCDATA) > + +<!ELEMENT copyright (year,holder+) > +<!ELEMENT year (#PCDATA) > +<!ELEMENT holder (#PCDATA) > + +<!ELEMENT titles (translation+) > + +<!ELEMENT translation (title,desc)* > +<!ATTLIST translation lang CDATA #REQUIRED > + +<!ELEMENT title (#PCDATA) > +<!ELEMENT version (#PCDATA) > +<!ELEMENT desc (#PCDATA) > + +<!ELEMENT changelog (revision+) > +<!ATTLIST changelog order (newest-first) #REQUIRED > + +<!ELEMENT revision (author+,editor*,details) > +<!ATTLIST revision date CDATA #REQUIRED > +<!ATTLIST revision version CDATA #REQUIRED > + +<!ELEMENT author EMPTY > +<!ATTLIST author wholename CDATA #REQUIRED > +<!ATTLIST author email CDATA #REQUIRED > +<!ATTLIST author surname CDATA #REQUIRED > +<!ATTLIST author firstname CDATA #REQUIRED > +<!ATTLIST author initials CDATA #REQUIRED > + +<!ELEMENT editor EMPTY > +<!ATTLIST editor wholename CDATA #REQUIRED > +<!ATTLIST editor email CDATA #REQUIRED > +<!ATTLIST editor surname CDATA #REQUIRED > +<!ATTLIST editor firstname CDATA #REQUIRED > + + +<!ELEMENT translator EMPTY > +<!ATTLIST translator wholename CDATA #REQUIRED > +<!ATTLIST translator email CDATA #REQUIRED > +<!ATTLIST translator surname CDATA #REQUIRED > +<!ATTLIST translator firstname CDATA #REQUIRED > + +<!ELEMENT details (#PCDATA) > diff --git a/packaging/spec.xsl b/packaging/spec.xsl new file mode 100644 index 0000000..237d10e --- /dev/null +++ b/packaging/spec.xsl @@ -0,0 +1,76 @@ +<!-- Transform rpm-info.xml into a SPEC File --> +<xsl:stylesheet version="1.0" xml:space="preserve" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output encoding="UTF-8" indent="no" method="text" omit-xml-declaration="no" standalone="no" version="1.0"/> + +<!-- Note: do not indent this file! Any whitespace here + will be reproduced in the output --> + + <xsl:param name="lang" select="'en'" /> + <xsl:param name="docbase" select="'example-tutorial'" /> + <xsl:param name="release" select="1"/> + +<xsl:template match="/"> +# Fedora Documentation Specfile +%define docbase <xsl:value-of select="$docbase"/> +%define release <xsl:value-of select="$release"/> +# +Summary: Fedora Documentation: %{docbase} +Name: fedora-doc-%{docbase} +Version: <xsl:value-of select="/rpm-info/changelog/revision[1]/@version"/> +Release: <xsl:value-of select="/rpm-info/release/@rel"/> +License: <xsl:value-of select="/rpm-info/license/rights"/> +Url: http://fedora.redhat.com/projects/docs +Source0: %{docbase}-%{version}.src.tar.gz +Source1: %{name}.desktop +<xsl:for-each select="/rpm-info/titles/translation"> +Source<xsl:value-of select="position()+1" />: %{name}-<xsl:value-of select="@lang"/>.omf</xsl:for-each> +Group: Documentation +BuildArch: noarch +BuildRoot: %{_tmppath}/%{name}-%{version}-root +Requires: scrollkeeper >= 0.3.11 +Requires: fedora-doc-common +BuildRequires: xmlto + +%description +<xsl:value-of select="/rpm-info/titles/translation[@lang='en']/desc" /> + +<xsl:for-each select="/rpm-info/titles/translation"> +%description <xsl:value-of select="@lang"/> +<xsl:value-of select="desc"/> +</xsl:for-each> + +%prep +%setup -q -n %{docbase}-${version} + for in in $RPM_BUILD_DIR/%{docbase}-%{version}/%{docbase}*.xml + do + %{__sed} -i 's;../docs-common;../../docs-common;' "$i" + done + +%build +# /bin/rm -r $RPM_BUILD_ROOT +# /usr/bin/install -d -m 0755 $RPM_BUILD_ROOT/%{_datadir}/omf/%{name} + +%clean + /bin/rm -rf $RPM_BUILD_ROOT + +<xsl:for-each select="/rpm-info/titles/translation"> +%post <xsl:value-of select="@lang"/> + /usr/bin/scrollkeeper-update || true +%postun <xsl:value-of select="@lang"/> + /usr/bin/scrollkeeper-update || true +%files <xsl:value-of select="@lang"/> +%defattr(-, root, root, -) +</xsl:for-each> +</xsl:template> + + <xsl:template name="get-title"> + <xsl:for-each select="/rpm-info/titles/translation"> + <xsl:choose> + <xsl:when test="@lang = $lang"> + <xsl:value-of select="title"/> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:template> + +</xsl:stylesheet> |