summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2007-10-18 21:08:47 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2007-10-18 21:08:47 +0000
commiteaa4db148dc402f7a124bc9c17583067710a7814 (patch)
tree91178298375eb468e36b34f44e24d9b6c8343cbc
parentf6073d7f348309397e30f6bc1ec1127d244756ae (diff)
downloadnixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.tar
nixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.tar.gz
nixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.tar.bz2
nixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.tar.lz
nixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.tar.xz
nixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.tar.zst
nixpkgs-eaa4db148dc402f7a124bc9c17583067710a7814.zip
* libxml2 / libxslt: provide a setup hook that prevents xmllint and
  xsltproc from downloading DTDs from the network, which is impure.
  This caused a lot of problems with Gnome builds in the build farm,
  because those downloads are slow and would sometimes fail.

  The setup hook also sets up $XML_CATALOG_FILES.

svn path=/nixpkgs/trunk/; revision=9471
-rw-r--r--pkgs/desktops/gnome/default.nix3
-rw-r--r--pkgs/desktops/gnome/scrollkeeper.nix4
-rw-r--r--pkgs/desktops/gnome/xmlcatalog.patch37
-rw-r--r--pkgs/development/libraries/libxml2/default.nix8
-rw-r--r--pkgs/development/libraries/libxml2/setup-hook.sh25
-rw-r--r--pkgs/development/libraries/libxslt/default.nix7
-rw-r--r--pkgs/top-level/all-packages.nix6
7 files changed, 42 insertions, 48 deletions
diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix
index 0c330c161f3..6410e9c053a 100644
--- a/pkgs/desktops/gnome/default.nix
+++ b/pkgs/desktops/gnome/default.nix
@@ -2,7 +2,8 @@
 
 { stdenv, fetchurl, pkgconfig, audiofile
 , flex, bison, popt, perl, zlib, libxml2, libxslt
-, perlXMLParser, docbook_xml_dtd_42, gettext, x11, libtiff, libjpeg
+, perlXMLParser, docbook_xml_dtd_42, docbook_xml_dtd_412
+, gettext, x11, libtiff, libjpeg
 , libpng, gtkLibs, xlibs, bzip2, libcm, python, dbus_glib, ncurses
 , which, libxml2Python, iconnamingutils
 }:
diff --git a/pkgs/desktops/gnome/scrollkeeper.nix b/pkgs/desktops/gnome/scrollkeeper.nix
index ffdbe065912..105d585b39f 100644
--- a/pkgs/desktops/gnome/scrollkeeper.nix
+++ b/pkgs/desktops/gnome/scrollkeeper.nix
@@ -4,7 +4,9 @@
 
 stdenv.mkDerivation {
   inherit (input) name src;
-  patches = [./xmlcatalog.patch];
+  preConfigure = "
+    substituteInPlace extract/dtds/Makefile.am --replace /usr/bin/xmlcatalog xmlcatalog
+  ";
   buildInputs = [pkgconfig perl perlXMLParser libxml2 libxslt];
   configureFlags = "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/docbook.cat";
 }
diff --git a/pkgs/desktops/gnome/xmlcatalog.patch b/pkgs/desktops/gnome/xmlcatalog.patch
deleted file mode 100644
index 77313819fce..00000000000
--- a/pkgs/desktops/gnome/xmlcatalog.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -rrc scrollkeeper-orig/extract/dtds/Makefile.in scrollkeeper-0.3.14/extract/dtds/Makefile.in
-*** scrollkeeper-orig/extract/dtds/Makefile.in	2003-12-06 09:18:01.000000000 +0100
---- scrollkeeper-0.3.14/extract/dtds/Makefile.in	2005-03-08 19:22:27.000000000 +0100
-***************
-*** 408,414 ****
-  
-  # ScrollKeeper OMF Variation DTD V1.0
-  install-data-hook:
-! 	-/usr/bin/xmlcatalog --noout --add "public" \
-  		"-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" \
-  		"$(dtdsdir)/scrollkeeper-omf.dtd" $(CATALOG)
-  
---- 408,414 ----
-  
-  # ScrollKeeper OMF Variation DTD V1.0
-  install-data-hook:
-! 	-xmlcatalog --noout --add "public" \
-  		"-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" \
-  		"$(dtdsdir)/scrollkeeper-omf.dtd" $(CATALOG)
-  
-***************
-*** 418,424 ****
-  
-  # ScrollKeeper OMF Variation DTD V1.0
-  uninstall-local:
-! 	-/usr/bin/xmlcatalog --noout --del \
-  		"$(dtdsdir)/scrollkeeper-omf.dtd" $(CATALOG)
-  # Tell versions [3.59,3.63) of GNU make to not export all variables.
-  # Otherwise a system limit (for SysV at least) may be exceeded.
---- 418,424 ----
-  
-  # ScrollKeeper OMF Variation DTD V1.0
-  uninstall-local:
-! 	-xmlcatalog --noout --del \
-  		"$(dtdsdir)/scrollkeeper-omf.dtd" $(CATALOG)
-  # Tell versions [3.59,3.63) of GNU make to not export all variables.
-  # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index 89f0a443f56..7f1e120e775 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -4,12 +4,12 @@ assert zlib != null;
 assert pythonSupport -> python != null;
 
 stdenv.mkDerivation {
-  name = "libxml2-2.6.29";
+  name = "libxml2-2.6.30";
   builder = ./builder.sh;
 
   src = fetchurl {
-    url = ftp://xmlsoft.org/libxml2/libxml2-2.6.29.tar.gz;
-    sha256 = "14jrjvdbvlbc3m0q9p3np67sk18w317n5zfg9a3h7b6pp7h1jjp3";
+    url = ftp://xmlsoft.org/libxml2/libxml2-2.6.30.tar.gz;
+    sha256 = "0pkk6cw0qd56kz2fkn768dcygbb4ncyvvmvyfiyli1a7yjh64xw7";
   };
 
   python = if pythonSupport then python else null;
@@ -17,4 +17,6 @@ stdenv.mkDerivation {
 
   buildInputs =  if pythonSupport then [python] else [];
   propagatedBuildInputs = [zlib];
+
+  postInstall = "ensureDir $out/nix-support; cp ${./setup-hook.sh} $out/nix-support/setup-hook";
 }
diff --git a/pkgs/development/libraries/libxml2/setup-hook.sh b/pkgs/development/libraries/libxml2/setup-hook.sh
new file mode 100644
index 00000000000..df1155d1809
--- /dev/null
+++ b/pkgs/development/libraries/libxml2/setup-hook.sh
@@ -0,0 +1,25 @@
+addXMLCatalogs () {
+    if test -d $1/xml/dtd; then
+        for i in $(find $1/xml/dtd -name catalog.xml); do
+            export XML_CATALOG_FILES="$XML_CATALOG_FILES $i"
+        done
+    fi
+}
+
+if test -z "$libxmlHookDone"; then
+    libxmlHookDone=1
+
+    # Set http_proxy and ftp_proxy to a invalid host to prevent
+    # xmllint and xsltproc from trying to download DTDs from the
+    # network even when --nonet is not given.  That would be impure.
+    # (Note that .invalid is a reserved domain guaranteed not to
+    # work.)
+    export http_proxy=http://nodtd.invalid/
+    export ftp_proxy=http://nodtd.invalid/
+
+    # Set up XML_CATALOG_FILES.  An empty initial value prevents
+    # xmllint and xsltproc from looking in /etc/xml/catalog.
+    export XML_CATALOG_FILES
+    if test -z "$XML_CATALOG_FILES"; then XML_CATALOG_FILES=" "; fi
+    envHooks=(${envHooks[@]} addXMLCatalogs)
+fi
diff --git a/pkgs/development/libraries/libxslt/default.nix b/pkgs/development/libraries/libxslt/default.nix
index 69efd18753e..896d0fc563b 100644
--- a/pkgs/development/libraries/libxslt/default.nix
+++ b/pkgs/development/libraries/libxslt/default.nix
@@ -3,10 +3,11 @@
 assert libxml2 != null;
 
 stdenv.mkDerivation {
-  name = "libxslt-1.1.21";
+  name = "libxslt-1.1.22";
   src = fetchurl {
-    url = ftp://xmlsoft.org/libxml2/libxslt-1.1.21.tar.gz;
-    sha256 = "1q2lzdp75lx9w4mxgg99znnk94aacn34m7csmbf2kdwvnb7d9vyc";
+    url = ftp://xmlsoft.org/libxml2/libxslt-1.1.22.tar.gz;
+    sha256 = "1nj9pvn4ibhwxpl3ry9n6d7jahppcnqc7mi87nld4vsr2vp3j7sf";
   };
   buildInputs = [libxml2];
+  postInstall = "ensureDir $out/nix-support; ln -s ${libxml2}/nix-support/setup-hook $out/nix-support/";
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5bb4134d268..f700278211d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4067,9 +4067,9 @@ rec {
   gnome = recurseIntoAttrs (import ../desktops/gnome {
     inherit fetchurl stdenv pkgconfig audiofile
             flex bison popt zlib libxml2 libxslt
-            perl perlXMLParser docbook_xml_dtd_42 gettext x11
-            libtiff libjpeg libpng gtkLibs xlibs bzip2 libcm
-            python dbus_glib ncurses which libxml2Python
+            perl perlXMLParser docbook_xml_dtd_42 docbook_xml_dtd_412
+            gettext x11 libtiff libjpeg libpng gtkLibs xlibs bzip2
+            libcm python dbus_glib ncurses which libxml2Python
             iconnamingutils;
   });