summary refs log tree commit diff
diff options
context:
space:
mode:
-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
+ ])