diff mbox series

docbook-xsl-stylesheets: Use str:replace from exslt.org to implement string.subst

Message ID 20260406161908.2556295-1-khem.raj@oss.qualcomm.com
State New
Headers show
Series docbook-xsl-stylesheets: Use str:replace from exslt.org to implement string.subst | expand

Commit Message

Khem Raj April 6, 2026, 4:19 p.m. UTC
Developement for docbook stylesheets has moved to github
there are newer releases available too which include this fix, however
for now nearing 6.0 release this is least intrusive way to move forward

This is needed for building latest samba versions

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
---
 ...ae5ae3d4816687467712580d5f05957b3b88.patch | 136 ++++++++++++++++++
 ...esheets-no-bashism-in-docbook-xsl-up.patch |   5 -
 .../docbook-xsl-stylesheets_1.79.1.bb         |   1 +
 3 files changed, 137 insertions(+), 5 deletions(-)
 create mode 100644 meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/1c41ae5ae3d4816687467712580d5f05957b3b88.patch
diff mbox series

Patch

diff --git a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/1c41ae5ae3d4816687467712580d5f05957b3b88.patch b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/1c41ae5ae3d4816687467712580d5f05957b3b88.patch
new file mode 100644
index 0000000000..4e65c87c90
--- /dev/null
+++ b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/1c41ae5ae3d4816687467712580d5f05957b3b88.patch
@@ -0,0 +1,136 @@ 
+From 1c41ae5ae3d4816687467712580d5f05957b3b88 Mon Sep 17 00:00:00 2001
+From: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
+Date: Thu, 6 Jul 2017 21:32:14 +0200
+Subject: [PATCH] Use str:replace from exslt.org to implement string.subst
+
+string.subst implementation causes recursion issues when building
+systemd documentation. This issue has been reported in
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765567 and
+https://bugs.archlinux.org/task/54694 .
+
+A possible fix consists in using str:replace from exslt.org when this
+function is available. This has been implemented in a patch for the
+Debian package
+(https://anonscm.debian.org/cgit/collab-maint/docbook-xsl.git/tree/debian/patches/765567_non-recursive_string_subst.patch)
+which has also been used by Arch Linux
+(https://git.archlinux.org/svntogit/packages.git/tree/trunk/765567_non-recursive_string_subst.patch?h=packages/docbook-xsl&id=c6bf4ebc446487043437ed13e4fbe83f648f5c58).
+
+Translate this patch to xsl/lib/lib.xweb in order to fix the recursion
+issues.
+
+For reference, here is the beginning of the error messages reported by
+xslt when building systemd:
+
+      XSLT     man/systemd.directives.html
+    Note: namesp. add : added namespace before processing              systemd.directives
+    runtime error: file file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/lib/lib.xsl line 56 element variable
+    xsltApplySequenceConstructor: A potential infinite template recursion was detected.
+    You can adjust xsltMaxDepth (--maxdepth) in order to raise the maximum number of nested template calls and variables/params (currently set to 3000).
+    Templates:
+    #0 name string.subst
+    #1 name string.subst
+    #2 name string.subst
+    #3 name string.subst
+    #4 name string.subst
+    #5 name string.subst
+    #6 name string.subst
+    #7 name string.subst
+    #8 name string.subst
+    #9 name string.subst
+    #10 name string.subst
+    #11 name string.subst
+    #12 name string.subst
+    #13 name string.subst
+    #14 name string.subst
+    Variables:
+    #0
+    replacement   Object is a Node Set :
+    Set contains 1 nodes:
+      1    ATTRIBUTE newstring
+          TEXT
+            content= .
+
+    target   Object is a Node Set :
+    Set contains 1 nodes:
+      1    ATTRIBUTE oldstring
+          TEXT
+            content=  .
+
+    string   Object is a string : PP \fB\-\-multiple\fR .RS 4 \fBsystemd-a...
+
+    #1
+    target   Object is a Node Set :
+    Set contains 1 nodes:
+      1    ATTRIBUTE oldstring
+          TEXT
+            content=  .
+
+    string   Object is a string : PP \fB\-\-multiple\fR .RS 4 \fBsystemd-a...
+
+    #2
+    string   Object is a string : PP \fB\-\-multiple\fR .RS 4 \fBsystemd-a...
+
+    #3
+    replacement   Object is a Node Set :
+    Set contains 1 nodes:
+      1    ATTRIBUTE newstring
+          TEXT
+            content= .
+
+    target   Object is a Node Set :
+    Set contains 1 nodes:
+      1    ATTRIBUTE oldstring
+          TEXT
+            content=  .
+
+    string   Object is a string : PP \fB\-\-mode=\fR .RS 4 \fBsystemd-inhi...
+
+    #4
+    target   Object is a Node Set :
+    Set contains 1 nodes:
+      1    ATTRIBUTE oldstring
+          TEXT
+            content=  .
+
+    string   Object is a string : PP \fB\-\-mode=\fR .RS 4 \fBsystemd-inhi...
+
+Upstream-Status: Backport [https://github.com/docbook/xslt10-stylesheets/commit/1c41ae5ae3d4816687467712580d5f05957b3b88]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ xsl/lib/lib.xweb | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/lib/lib.xsl
++++ b/lib/lib.xsl
+@@ -10,7 +10,11 @@
+      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 +60,9 @@
+   <xsl:param name="replacement"/>
+ 
+   <xsl:choose>
++    <xsl:when xmlns:str="http://exslt.org/strings" str:foo="" 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">
+@@ -388,7 +395,7 @@
+         </xsl:otherwise>
+       </xsl:choose>
+     </xsl:template>
+-  
++
+ <xsl:template name="count.uri.path.depth">
+   <xsl:param name="filename" select="''"/>
+   <xsl:param name="count" select="0"/>
diff --git a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch
index 0559a5c0d2..a1bcfa6151 100644
--- a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch
+++ b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch
@@ -9,8 +9,6 @@  Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
  tools/bin/docbook-xsl-update | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/tools/bin/docbook-xsl-update b/tools/bin/docbook-xsl-update
-index aba0016..cc73aa2 100755
 --- a/tools/bin/docbook-xsl-update
 +++ b/tools/bin/docbook-xsl-update
 @@ -1,4 +1,4 @@
@@ -19,6 +17,3 @@  index aba0016..cc73aa2 100755
  # vim: number
  
  # docbook-xsl-update - Update environment to latest docbook-xsl snapshot
--- 
-1.9.1
-
diff --git a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
index 7e4730b5e9..8e9a7c9091 100644
--- a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
+++ b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
@@ -5,6 +5,7 @@  LIC_FILES_CHKSUM = "file://COPYING;md5=6beadd98f9c54ab0c387e14211ee4d0e"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/docbook/docbook-xsl-${PV}.tar.bz2 \
            file://docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch \
+           file://1c41ae5ae3d4816687467712580d5f05957b3b88.patch \
 "
 
 SRC_URI[sha256sum] = "725f452e12b296956e8bfb876ccece71eeecdd14b94f667f3ed9091761a4a968"