summary refs log tree commit diff
path: root/pkgs/development/libraries/libxml2
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-02-09 15:37:04 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-04-23 10:52:02 +0200
commit94eba251038cc3177f312e122c28bfbb0cc92ebc (patch)
tree07ec83daf4710736ca2ab5f1043ef8f1d52bdeda /pkgs/development/libraries/libxml2
parent91f2b9ed663bc58c2305edf2d52b4e54228394c4 (diff)
downloadnixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.tar
nixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.tar.gz
nixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.tar.bz2
nixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.tar.lz
nixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.tar.xz
nixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.tar.zst
nixlib-94eba251038cc3177f312e122c28bfbb0cc92ebc.zip
libxml2: fix on mingw, without DLLs ATM
After closure-size merge we need to disable python support,
as python upstream doesn't support cross-building linux -> mingw.
Diffstat (limited to 'pkgs/development/libraries/libxml2')
-rw-r--r--pkgs/development/libraries/libxml2/default.nix35
1 files changed, 24 insertions, 11 deletions
diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index f7e175373e12..769169104ab3 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, zlib, xz, python, findXMLCatalogs }:
+{ stdenv, lib, fetchurl, zlib, xz, python, findXMLCatalogs, libiconv
+, supportPython ? (! stdenv ? cross) }:
 
 stdenv.mkDerivation rec {
   name = "libxml2-${version}";
@@ -9,23 +10,35 @@ stdenv.mkDerivation rec {
     sha256 = "0bd17g6znn2r98gzpjppsqjg33iraky4px923j3k8kdl8qgy7sad";
   };
 
-  outputs = [ "dev" "out" "bin" "doc" "py" ];
-  propagatedBuildOutputs = "out bin py";
+  outputs = [ "dev" "out" "bin" "doc" ]
+    ++ lib.optional supportPython "py";
+  propagatedBuildOutputs = "out bin" + lib.optionalString supportPython " py";
 
-  buildInputs = [ python ]
+  buildInputs = lib.optional supportPython 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.
-    ++ stdenv.lib.optional stdenv.isFreeBSD xz;
+    ++ lib.optional stdenv.isFreeBSD xz;
 
   propagatedBuildInputs = [ zlib findXMLCatalogs ];
 
-  configureFlags = "--with-python=${python}";
+  configureFlags = lib.optional supportPython "--with-python=${python}";
 
   enableParallelBuilding = true;
 
-  preInstall = ''substituteInPlace python/libxml2mod.la --replace "${python}" "$py"'';
-  installFlags = ''pythondir="$(py)/lib/${python.libPrefix}/site-packages"'';
+  crossAttrs = lib.optionalAttrs (stdenv.cross.libc == "msvcrt") {
+    # creating the DLL is broken ATM
+    dontDisableStatic = true;
+    configureFlags = configureFlags ++ [ "--disable-shared" ];
+
+    # libiconv is a header dependency - propagating is enough
+    propagatedBuildInputs =  [ findXMLCatalogs libiconv ];
+  };
+
+  preInstall = lib.optionalString supportPython
+    ''substituteInPlace python/libxml2mod.la --replace "${python}" "$py"'';
+  installFlags = lib.optionalString supportPython
+    ''pythondir="$(py)/lib/${python.libPrefix}/site-packages"'';
 
   postFixup = ''
     moveToOutput bin/xml2-config "$dev"
@@ -33,13 +46,13 @@ stdenv.mkDerivation rec {
     moveToOutput share/man/man1 "$bin"
   '';
 
-  passthru = { inherit version; pythonSupport = true; };
+  passthru = { inherit version; pythonSupport = supportPython; };
 
   meta = {
     homepage = http://xmlsoft.org/;
     description = "An XML parsing library for C";
     license = "bsd";
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.eelco ];
   };
 }