From 94eba251038cc3177f312e122c28bfbb0cc92ebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 9 Feb 2016 15:37:04 +0100 Subject: [PATCH] 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. --- .../development/libraries/libxml2/default.nix | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix index f7e175373e1..769169104ab 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 ]; }; }