summary refs log tree commit diff
path: root/pkgs/development/libraries/libxml2/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/libxml2/default.nix')
-rw-r--r--pkgs/development/libraries/libxml2/default.nix36
1 files changed, 24 insertions, 12 deletions
diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index e25074f8d126..7e3ee3e9adc7 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -2,20 +2,21 @@
 
 assert pythonSupport -> python != null;
 
-stdenv.mkDerivation rec {
-  name = "libxml2-2.9.0";
+#TODO: share most stuff between python and non-python builds, perhaps via multiple-output
+
+let
+  version = "2.9.1";
+in
+
+stdenv.mkDerivation (rec {
+  name = "libxml2-${version}";
 
   src = fetchurl {
     url = "ftp://xmlsoft.org/libxml2/${name}.tar.gz";
-    sha256 = "10ib8bpar2pl68aqksfinvfmqknwnk7i35ibq6yjl8dpb0cxj9dd";
+    sha256 = "1nqgd1qqmg0cg09mch78m2ac9klj9n87blilx4kymi7jcv5n8g7x";
   };
 
-  patches = [ ./pthread-once-init.patch ];
-
-  configureFlags = stdenv.lib.optionalString pythonSupport "--with-python=${python}";
-
-  buildInputs = (stdenv.lib.optional pythonSupport [ python ])
-
+  buildInputs = stdenv.lib.optional pythonSupport python
     # Libxml2 has an optional dependency on liblzma.  However, on impure
     # platforms, it may end up using that from /usr/lib, and thus lack a
     # RUNPATH for that, leading to undefined references for its users.
@@ -25,7 +26,7 @@ stdenv.mkDerivation rec {
 
   setupHook = ./setup-hook.sh;
 
-  passthru = { inherit pythonSupport; };
+  passthru = { inherit pythonSupport version; };
 
   enableParallelBuilding = true;
 
@@ -33,7 +34,18 @@ stdenv.mkDerivation rec {
     homepage = http://xmlsoft.org/;
     description = "An XML parsing library for C";
     license = "bsd";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.unix;
     maintainers = [ stdenv.lib.maintainers.eelco ];
   };
-}
+
+} // stdenv.lib.optionalAttrs pythonSupport {
+  configureFlags = "--with-python=${python}";
+
+  # this is a pair of ugly hacks to make python stuff install into the right place
+  preInstall = ''substituteInPlace python/libxml2mod.la --replace "${python}" "$out"'';
+  installFlags = ''pythondir="$(out)/lib/${python.libPrefix}/site-packages"'';
+
+} // stdenv.lib.optionalAttrs (!pythonSupport) {
+  configureFlags = "--with-python=no"; # otherwise build impurity bites us
+})
+