summary refs log tree commit diff
path: root/pkgs/development/tools/documentation
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2017-10-07 00:07:40 +0200
committerJan Tojnar <jtojnar@gmail.com>2017-10-07 23:37:35 +0200
commit407db7b0196417296677f2a4ef929bb092ec382b (patch)
treec5b9d8f366ac6f1230383fbe014db0aaf7518623 /pkgs/development/tools/documentation
parent99af040ee10c762a1f413b32c0961f7389feb25f (diff)
downloadnixlib-407db7b0196417296677f2a4ef929bb092ec382b.tar
nixlib-407db7b0196417296677f2a4ef929bb092ec382b.tar.gz
nixlib-407db7b0196417296677f2a4ef929bb092ec382b.tar.bz2
nixlib-407db7b0196417296677f2a4ef929bb092ec382b.tar.lz
nixlib-407db7b0196417296677f2a4ef929bb092ec382b.tar.xz
nixlib-407db7b0196417296677f2a4ef929bb092ec382b.tar.zst
nixlib-407db7b0196417296677f2a4ef929bb092ec382b.zip
gtk_doc: replace catalog lookup hack
In the previous commit, we added a setup hook to docbook dtd and xsl
packages, that adds derivation’s catalog file to an environment variable.
That should, in theory, remove the need for declaring their catalogs manually.
Unfortunately, xmlcatalog utility expects exactly one catalog file, completely
disregarding the environment variable in non-interactive context. In the same
spirit, the design of gtk-doc m4 files only admits a single catalog file,
resulting in another ugly hack.
Diffstat (limited to 'pkgs/development/tools/documentation')
-rw-r--r--pkgs/development/tools/documentation/gtk-doc/default.nix25
-rw-r--r--pkgs/development/tools/documentation/gtk-doc/respect-xml-catalog-files-var.patch28
2 files changed, 36 insertions, 17 deletions
diff --git a/pkgs/development/tools/documentation/gtk-doc/default.nix b/pkgs/development/tools/documentation/gtk-doc/default.nix
index 506684088343..5f31a2dfb7c6 100644
--- a/pkgs/development/tools/documentation/gtk-doc/default.nix
+++ b/pkgs/development/tools/documentation/gtk-doc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, perl, python, libxml2Python, libxslt, which
+{ stdenv, fetchurl, autoreconfHook, pkgconfig, perl, python, libxml2Python, libxslt, which
 , docbook_xml_dtd_43, docbook_xsl, gnome_doc_utils, dblatex, gettext, itstool }:
 
 stdenv.mkDerivation rec {
@@ -10,29 +10,20 @@ stdenv.mkDerivation rec {
     sha256 = "0hpxcij9xx9ny3gs9p0iz4r8zslw8wqymbyababiyl7603a6x90y";
   };
 
-  outputDevdoc = "out";
-
-  # maybe there is a better way to pass the needed dtd and xsl files
-  # "-//OASIS//DTD DocBook XML V4.1.2//EN" and "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"
-  preConfigure = ''
-    mkdir -p $out/nix-support
-    cat > $out/nix-support/catalog.xml << EOF
-    <?xml version="1.0"?>
-    <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
-    <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
-      <nextCatalog  catalog="${docbook_xsl}/xml/xsl/docbook/catalog.xml" />
-      <nextCatalog  catalog="${docbook_xml_dtd_43}/xml/dtd/docbook/catalog.xml" />
-    </catalog>
-    EOF
+  patches = [
+    ./respect-xml-catalog-files-var.patch
+  ];
 
-    configureFlags="--with-xml-catalog=$out/nix-support/catalog.xml --disable-scrollkeeper";
-  '';
+  outputDevdoc = "out";
 
+  nativeBuildInputs = [ autoreconfHook ];
   buildInputs =
    [ pkgconfig perl python libxml2Python libxslt docbook_xml_dtd_43 docbook_xsl
      gnome_doc_utils dblatex gettext which itstool
    ];
 
+  configureFlags = "--disable-scrollkeeper";
+
   meta = with stdenv.lib; {
     homepage = https://www.gtk.org/gtk-doc;
     description = "Tools to extract documentation embedded in GTK+ and GNOME source code";
diff --git a/pkgs/development/tools/documentation/gtk-doc/respect-xml-catalog-files-var.patch b/pkgs/development/tools/documentation/gtk-doc/respect-xml-catalog-files-var.patch
new file mode 100644
index 000000000000..78c57306b797
--- /dev/null
+++ b/pkgs/development/tools/documentation/gtk-doc/respect-xml-catalog-files-var.patch
@@ -0,0 +1,28 @@
+diff --git a/m4/gtkdoc_jh_check_xml_catalog.m4 b/m4/gtkdoc_jh_check_xml_catalog.m4
+index 618c1c9..1842a0d 100644
+--- a/m4/gtkdoc_jh_check_xml_catalog.m4
++++ b/m4/gtkdoc_jh_check_xml_catalog.m4
+@@ -10,7 +10,21 @@ AC_DEFUN([JH_CHECK_XML_CATALOG],
+ 		AC_MSG_RESULT([found])
+ 		ifelse([$3],,,[$3])
+ 	else
+-		AC_MSG_RESULT([not found])
+-		ifelse([$4],,[AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],[$4])
++		jh_check_xml_catalog_saved_ifs="$IFS"
++		IFS=' '
++		for f in $XML_CATALOG_FILES; do
++			if [[ -f "$f" ]] && \
++				AC_RUN_LOG([$XMLCATALOG --noout "$f" "$1" >&2]); then
++				jh_found_xmlcatalog=true
++				AC_MSG_RESULT([found])
++				ifelse([$3],,,[$3])
++				break
++			fi
++		done
++		IFS="$jh_check_xml_catalog_saved_ifs"
++		if ! $jh_found_xmlcatalog; then
++			AC_MSG_RESULT([not found])
++			ifelse([$4],,[AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],[$4])
++		fi
+ 	fi
+ ])