diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-12-10 12:29:11 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-12-10 12:41:36 +0100 |
commit | 87dd1780a31de9ea1df70a8511c262ff252bf99a (patch) | |
tree | 9ccced4eb8800b6afb1e7466ea2d1465c7d9420c /officecfg/util | |
parent | 6e89666b4e23189dcaa8fdb308e1b48015d6875b (diff) |
Get rid of $(share_subdir_name) again
Quoting 56211a166ab25d80de84c2cccce22be15a9be051 "fdo#72394 Don't endlessly
expand $(share_subdir_name) into itself":
* The compile-time variable LIBO_SHARE_FOLDER should not end up as a runtime
framework path variable, esp. since accidentally re-substituting it for
"share" segments in unrelated URLs like <file:///export/share/for-all> does
not make sense. ac4e19f9085dbd0103c7336a5318aa1e55b3e3e0 "fdo#68552: Don't
(attempt to) do run-time expansion of build-time parameters" had already
attempted a fix for that, but it had to be reverted again with
791a8b96f754798192875da287c84f8cfa4e533e because it "Unfortunately does not
work if BUILDDIR is different from SRCDIR."
So this time fix it not via configure-expanded *.in files, but via xsltproc
(for officecfg/registry/ files) and sed (for wizards/soruce/configshare files).
The changes to officecfg/util/alllang.xsl will replace @LIBO_SHARE_FOLDER@ only
in oor:name attribues (and in <value> text), not in any other attributes,
because I have no idea how to write that generically in XSLT and it happens to
be only needed in oor:name for now.
Change-Id: Iec78eb70dcbf1a5bbabf4e42f21c44dc65c3e438
Diffstat (limited to 'officecfg/util')
-rw-r--r-- | officecfg/util/alllang.xsl | 55 | ||||
-rw-r--r-- | officecfg/util/schema_trim.xsl | 40 |
2 files changed, 88 insertions, 7 deletions
diff --git a/officecfg/util/alllang.xsl b/officecfg/util/alllang.xsl index 252a0beefe66..31b53bccd853 100644 --- a/officecfg/util/alllang.xsl +++ b/officecfg/util/alllang.xsl @@ -34,6 +34,8 @@ <xsl:param name="schemaRoot">.</xsl:param> <xsl:param name="fallback-locale">en-US</xsl:param> +<xsl:param name="LIBO_SHARE_FOLDER"/> + <xsl:variable name="schemaRootURL"> <xsl:value-of select="$schemaRoot"/> </xsl:variable> @@ -91,7 +93,7 @@ <xsl:if test="@xml:lang=$locale and not(@install:module)"> <xsl:copy> <xsl:apply-templates select = "@*" mode="locale"/> - <xsl:copy-of select="node()"/> + <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:if> </xsl:template> @@ -265,8 +267,7 @@ <xsl:when test="not($module) and ancestor-or-self::*/@install:module"/> <xsl:otherwise> <xsl:copy> - <xsl:apply-templates select = "@*"/> - <xsl:copy-of select="node()"/> + <xsl:apply-templates select = "@*|node()"/> </xsl:copy> </xsl:otherwise> </xsl:choose> @@ -275,12 +276,17 @@ <xsl:template match="value" mode="fallback-locale"> <xsl:if test="@xml:lang=$fallback-locale and not(@install:module)"> <xsl:copy> - <xsl:apply-templates select = "@*"/> - <xsl:copy-of select="node()"/> + <xsl:apply-templates select = "@*|node()"/> </xsl:copy> </xsl:if> </xsl:template> + <xsl:template match ="it|unicode"> + <xsl:copy> + <xsl:apply-templates select = "@*|node()"/> + </xsl:copy> + </xsl:template> + <xsl:template match = "@*"> <xsl:copy/> </xsl:template> @@ -333,4 +339,43 @@ <xsl:value-of select="$fileURL"/> </xsl:template> + <xsl:template match="@oor:name"> + <xsl:attribute name="oor:name"> + <xsl:call-template name="replace"> + <xsl:with-param name="input" select="current()"/> + <xsl:with-param name="pattern" select="'@LIBO_SHARE_FOLDER@'"/> + <xsl:with-param name="replace" select="$LIBO_SHARE_FOLDER"/> + </xsl:call-template> + </xsl:attribute> + </xsl:template> + + <xsl:template match="text()"> + <xsl:call-template name="replace"> + <xsl:with-param name="input" select="current()"/> + <xsl:with-param name="pattern" select="'@LIBO_SHARE_FOLDER@'"/> + <xsl:with-param name="replace" select="$LIBO_SHARE_FOLDER"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="replace"> + <xsl:param name="input"/> + <xsl:param name="pattern"/> + <xsl:param name="replace"/> + <xsl:choose> + <xsl:when test="contains($input, $pattern)"> + <xsl:value-of select="substring-before($input, $pattern)"/> + <xsl:value-of select="$replace"/> + <xsl:call-template name="replace"> + <xsl:with-param + name="input" select="substring-after($input, $pattern)"/> + <xsl:with-param name="pattern" select="$pattern"/> + <xsl:with-param name="replace" select="$replace"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$input"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + </xsl:transform> diff --git a/officecfg/util/schema_trim.xsl b/officecfg/util/schema_trim.xsl index 4f75348b2ecb..79b3c5c8cb4f 100644 --- a/officecfg/util/schema_trim.xsl +++ b/officecfg/util/schema_trim.xsl @@ -23,6 +23,8 @@ xmlns:oor="http://openoffice.org/2001/registry" version="1.0"> + <xsl:param name="LIBO_SHARE_FOLDER"/> + <!-- Get the correct format --> <xsl:output method="xml" indent="yes"/> <xsl:namespace-alias stylesheet-prefix="xs" result-prefix="xs"></xsl:namespace-alias> @@ -68,9 +70,43 @@ <!-- copy all other values with content --> <xsl:template match="value"> <xsl:copy> - <xsl:apply-templates select="@*"/> - <xsl:copy-of select="node()"/> + <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> + <xsl:template match ="it|unicode"> + <xsl:copy> + <xsl:apply-templates select = "@*|node()"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="text()"> + <xsl:call-template name="replace"> + <xsl:with-param name="input" select="current()"/> + <xsl:with-param name="pattern" select="'@LIBO_SHARE_FOLDER@'"/> + <xsl:with-param name="replace" select="$LIBO_SHARE_FOLDER"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="replace"> + <xsl:param name="input"/> + <xsl:param name="pattern"/> + <xsl:param name="replace"/> + <xsl:choose> + <xsl:when test="contains($input, $pattern)"> + <xsl:value-of select="substring-before($input, $pattern)"/> + <xsl:value-of select="$replace"/> + <xsl:call-template name="replace"> + <xsl:with-param + name="input" select="substring-after($input, $pattern)"/> + <xsl:with-param name="pattern" select="$pattern"/> + <xsl:with-param name="replace" select="$replace"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$input"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + </xsl:transform> |