Skip to content
Snippets Groups Projects
Commit 7abc2fb2 authored by George Hartzell's avatar George Hartzell Committed by Adam J. Stewart
Browse files

bugfix/gdk-pixbuf (#10312)

* docbook processing works correctly for gdk-pixbuf

1. The various bits of documentation in gdk-pixbuf include hardcoded
   references to dtd's and stuff at their canonical, Internet,
   locations.  BUT, gdk-pixbuf runs xslt-proc with the `--nonet`
   option, which forbids it from using the network.  Sadness ensues.

   Traditionally folks use XML Catalogs to map these to local copies.
   Our docbook-xsl package wasn't setting the appropriate env var in
   its dependents environments to use our catalog.

   Now it does.  Less sadness ensues.

2. If we're going to use these things, we should depend on them.

* Add gdk-pixbuf's bin to build environment

The "post-install.sh" script uses gdk-pixbuf-query-loaders, which was
installed earlier.

If py-psyclone can set its own bin on its PATH, so can we...

* Make gdk-pixbuf use recognizable docbook location

Our docbook-xsl package assumes that the canonical location is
`http://cdn.docbook.org/release/xsl/current/manpages/docbook.xsl`, but
the gdk-pixbuf's meson build script uses
`http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl`.

This means that our XML Catalog doesn't fix the reference and sadness
happens.

Just patch the build that we see what we want to see, then we can make
it all go away.

* Add commentary re docbook patch

* Make catalog helper a property

Thanks @adamjstewart!

* Run tests if/when run_tests is true

Thanks @adamjstewart!

* Tune up dependencies

Thanks @adamjstewart!

* Wordsmit commentary
parent 9350db56
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,14 @@ class DocbookXsl(Package):
def install(self, spec, prefix):
install_tree('.', prefix)
@property
def catalog(self):
return os.path.join(self.prefix, 'catalog.xml')
def setup_environment(self, spack_env, run_env):
catalog = os.path.join(self.prefix, 'catalog.xml')
catalog = self.catalog
run_env.set('XML_CATALOG_FILES', catalog, separator=' ')
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
catalog = self.catalog
spack_env.prepend_path("XML_CATALOG_FILES", catalog)
--- a/docs/meson.build 2019-01-10 17:55:09.573701375 -0800
+++ b/docs/meson.build 2019-01-10 17:56:03.672667410 -0800
@@ -89,7 +89,7 @@
xsltproc,
xlstproc_flags,
'-o', '@OUTPUT@',
- 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
+ 'http://cdn.docbook.org/release/xsl/current/manpages/docbook.xsl',
'@INPUT@',
],
install: true,
......@@ -27,13 +27,21 @@ class GdkPixbuf(Package):
depends_on('shared-mime-info', type='build', when='@2.36.8: platform=linux')
depends_on('shared-mime-info', type='build', when='@2.36.8: platform=cray')
depends_on('pkgconfig', type='build')
# Building the man pages requires libxslt and the Docbook stylesheets
depends_on('libxslt', type='build')
depends_on('docbook-xsl', type='build')
depends_on('gettext')
depends_on('glib')
depends_on('glib@2.38.0:')
depends_on('jpeg')
depends_on('libpng')
depends_on('zlib')
depends_on('libtiff')
depends_on('gobject-introspection')
# Replace the docbook stylesheet URL with the one that our
# docbook-xsl package uses/recognizes.
patch('docbook-cdn.patch')
def url_for_version(self, version):
url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/{0}/gdk-pixbuf-{1}.tar.xz"
return url.format(version.up_to(2), version)
......@@ -48,6 +56,8 @@ def install(self, spec, prefix):
with working_dir('spack-build', create=True):
meson('..', *std_meson_args)
ninja('-v')
if self.run_tests:
ninja('test')
ninja('install')
def configure_args(self):
......@@ -70,3 +80,8 @@ def install(self, spec, prefix):
make('install')
if self.run_tests:
make('installcheck')
def setup_environment(self, spack_env, run_env):
# The "post-install.sh" script uses gdk-pixbuf-query-loaders,
# which was installed earlier.
spack_env.prepend_path('PATH', self.prefix.bin)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment