app-text/docbook-xsl-stylesheets: apply nonrecursive-string-subst.patch
authorMike Gilbert <floppym@gentoo.org>
Tue, 5 Sep 2017 20:24:44 +0000 (16:24 -0400)
committerMike Gilbert <floppym@gentoo.org>
Tue, 5 Sep 2017 20:25:40 +0000 (16:25 -0400)
Patch taken from Debian.

Bug: https://bugs.debian.org/765567
Bug: https://bugs.gentoo.org/630022
Package-Manager: Portage-2.3.6_p39, Repoman-2.3.3_p17

app-text/docbook-xsl-stylesheets/docbook-xsl-stylesheets-1.79.1-r2.ebuild [new file with mode: 0644]
app-text/docbook-xsl-stylesheets/files/nonrecursive-string-subst.patch [new file with mode: 0644]

diff --git a/app-text/docbook-xsl-stylesheets/docbook-xsl-stylesheets-1.79.1-r2.ebuild b/app-text/docbook-xsl-stylesheets/docbook-xsl-stylesheets-1.79.1-r2.ebuild
new file mode 100644 (file)
index 0000000..77db5fd
--- /dev/null
@@ -0,0 +1,101 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+USE_RUBY="ruby20 ruby21 ruby22 ruby23"
+
+inherit ruby-single
+
+DOCBOOKDIR="/usr/share/sgml/${PN/-//}"
+MY_PN="${PN%-stylesheets}"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="XSL Stylesheets for Docbook"
+HOMEPAGE="http://wiki.docbook.org/DocBookXslStylesheets"
+SRC_URI="mirror://sourceforge/docbook/${MY_P}.tar.bz2"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="ruby"
+
+RDEPEND=">=app-text/build-docbook-catalog-1.1
+       ruby? ( ${RUBY_DEPS} )"
+
+S="${WORKDIR}/${MY_P}"
+
+# Makefile is broken since 1.76.0
+RESTRICT=test
+
+PATCHES=(
+       "${FILESDIR}"/nonrecursive-string-subst.patch
+)
+
+src_prepare() {
+       default
+
+       # Delete the unnecessary Java-related stuff and other tools as they
+       # bloat the stage3 tarballs massively. See bug #575818.
+       rm -rv extensions/ tools/ || die
+       find \( -name build.xml -o -name build.properties \) \
+                -printf "removed %p\n" -delete || die
+
+       if ! use ruby; then
+          rm -rv epub/ || die
+       fi
+}
+
+# The makefile runs tests, not builds.
+src_compile() { :; }
+
+src_test() {
+       emake check
+}
+
+src_install() {
+       # The changelog is now zipped, and copied as the RELEASE-NOTES, so we
+       # don't need to install it
+       dodoc AUTHORS BUGS NEWS README RELEASE-NOTES.txt TODO
+
+       insinto ${DOCBOOKDIR}
+       doins VERSION VERSION.xsl
+
+       local i
+       for i in */; do
+               i=${i%/}
+
+               cd "${S}"/${i}
+               for doc in ChangeLog README; do
+                       if [ -e "$doc" ]; then
+                               mv ${doc} ${doc}.${i}
+                               dodoc ${doc}.${i}
+                               rm ${doc}.${i}
+                       fi
+               done
+
+               doins -r "${S}"/${i}
+       done
+
+       if use ruby; then
+               local cmd="dbtoepub${MY_PN#docbook-xsl}"
+
+               # we can't use a symlink or it'll look for the library in the
+               # wrong path.
+               dodir /usr/bin
+               cat - > "${D}"/usr/bin/${cmd} <<EOF
+#!/usr/bin/env ruby
+
+load "${DOCBOOKDIR}/epub/bin/dbtoepub"
+EOF
+               fperms 0755 /usr/bin/${cmd}
+       fi
+}
+
+pkg_postinst() {
+       build-docbook-catalog
+}
+
+pkg_postrm() {
+       build-docbook-catalog
+}
diff --git a/app-text/docbook-xsl-stylesheets/files/nonrecursive-string-subst.patch b/app-text/docbook-xsl-stylesheets/files/nonrecursive-string-subst.patch
new file mode 100644 (file)
index 0000000..99ce996
--- /dev/null
@@ -0,0 +1,30 @@
+Description: use EXSLT "replace" function when available
+ A recursive implementation  of string.subst is problematic,
+ long strings with many matches will cause stack overflows.
+Author: Peter De Wachter <pdewacht@gmail.com>
+Bug-Debian: https://bugs.debian.org/750593
+
+--- a/lib/lib.xsl
++++ b/lib/lib.xsl
+@@ -10,7 +10,10 @@
+      This module implements DTD-independent functions
+      ******************************************************************** -->
+-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++                xmlns:str="http://exslt.org/strings"
++                exclude-result-prefixes="str"
++                version="1.0">
+ <xsl:template name="dot.count">
+   <!-- Returns the number of "." characters in a string -->
+@@ -56,6 +59,9 @@
+   <xsl:param name="replacement"/>
+   <xsl:choose>
++    <xsl:when test="function-available('str:replace')">
++      <xsl:value-of select="str:replace($string, string($target), string($replacement))"/>
++    </xsl:when>
+     <xsl:when test="contains($string, $target)">
+       <xsl:variable name="rest">
+         <xsl:call-template name="string.subst">