spack/var/spack/repos/builtin/packages/docbook-xsl/package.py
Glenn Johnson 2d2a1c82d4
docbook: resolve conflict in spack env view (#35682)
If the docbook packages
- docbook-xml
- docbook-xsl

are installed in a spack environment view the catalog files will be in
conflict in the view directory. This PR resolves that by adding an
appropriate prefix to each catalog name so that they are unique in the
view. The resulting XML_CATALOG_FILES environment variable will then be
able to point to both of them.
2023-03-01 04:17:46 -08:00

76 lines
2.8 KiB
Python

# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class DocbookXsl(Package):
"""DocBook XSLT 1.0 Stylesheets."""
homepage = "https://github.com/docbook/xslt10-stylesheets"
url = "https://github.com/docbook/xslt10-stylesheets/releases/download/release%2F1.79.2/docbook-xsl-1.79.2.tar.bz2"
version("1.79.2", sha256="316524ea444e53208a2fb90eeb676af755da96e1417835ba5f5eb719c81fa371")
version(
"1.78.1",
sha256="c98f7296ab5c8ccd2e0bc07634976a37f50847df2d8a59bdb1e157664700b467",
url="https://sourceforge.net/projects/docbook/files/docbook-xsl/1.78.1/docbook-xsl-1.78.1.tar.bz2",
)
depends_on("docbook-xml")
depends_on("libxml2", type="build")
patch("docbook-xsl-1.79.2-stack_fix-1.patch", when="@1.79.2")
def install(self, spec, prefix):
install_tree(".", prefix)
@property
def catalog(self):
return join_path(self.prefix, "xsl-catalog")
@run_after("install")
def config_docbook(self):
catalog = self.catalog
version = self.version
xml_xsd = join_path(prefix, "slides", "schema", "xsd", "xml.xsd")
xmlcatalog = which("xmlcatalog")
# create catalog
xmlcatalog("--noout", "--create", catalog)
xmlcatalog(
"--noout", "--add", "system", "https://www.w3.org/2001/xml.xsd", xml_xsd, catalog
)
xmlcatalog(
"--noout", "--add", "system", "https://www.w3.org/2009/01/xml.xsd", xml_xsd, catalog
)
xmlcatalog("--noout", "--add", "uri", "https://www.w3.org/2001/xml.xsd", xml_xsd, catalog)
xmlcatalog(
"--noout", "--add", "uri", "https://www.w3.org/2009/01/xml.xsd", xml_xsd, catalog
)
docbook_urls = ["docbook.sourceforge.net", "cdn.docbook.org"]
docbook_rewrites = ["rewriteSystem", "rewriteURI"]
docbook_versions = ["current", version]
for docbook_url in docbook_urls:
for docbook_rewrite in docbook_rewrites:
for docbook_version in docbook_versions:
xmlcatalog(
"--noout",
"--add",
docbook_rewrite,
"http://{0}/release/xsl/{1}".format(docbook_url, docbook_version),
"file://{0}".format(prefix),
catalog,
)
def setup_run_environment(self, env):
catalog = self.catalog
env.prepend_path("XML_CATALOG_FILES", catalog, separator=" ")
def setup_dependent_build_environment(self, env, dependent_spec):
catalog = self.catalog
env.prepend_path("XML_CATALOG_FILES", catalog, separator=" ")