about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/libxml2
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libxml2')
-rw-r--r--nixpkgs/pkgs/development/libraries/libxml2/default.nix70
1 files changed, 70 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libxml2/default.nix b/nixpkgs/pkgs/development/libraries/libxml2/default.nix
new file mode 100644
index 000000000000..04954f3e1f5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libxml2/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, lib, fetchurl
+, zlib, xz, python2, ncurses, findXMLCatalogs
+, pythonSupport ? stdenv.buildPlatform == stdenv.hostPlatform
+, icuSupport ? false, icu ? null
+, enableShared ? stdenv.hostPlatform.libc != "msvcrt"
+, enableStatic ? !enableShared,
+}:
+
+let
+  python = python2;
+
+in stdenv.mkDerivation rec {
+  pname = "libxml2";
+  version = "2.9.9";
+
+  src = fetchurl {
+    url = "http://xmlsoft.org/sources/${pname}-${version}.tar.gz";
+    sha256 = "0wd881jzvqayx0ihzba29jl80k06xj9ywp16kxacdqs3064p1ywl";
+  };
+
+  outputs = [ "bin" "dev" "out" "man" "doc" ]
+    ++ lib.optional pythonSupport "py"
+    ++ lib.optional (enableStatic && enableShared) "static";
+  propagatedBuildOutputs = "out bin" + lib.optionalString pythonSupport " py";
+
+  buildInputs = lib.optional pythonSupport python
+    ++ lib.optional (pythonSupport && python?isPy3 && python.isPy3) ncurses
+    # 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.
+    ++ lib.optional stdenv.isFreeBSD xz;
+
+  propagatedBuildInputs = [ zlib findXMLCatalogs ] ++ lib.optional icuSupport icu;
+
+  configureFlags = [
+    "--exec_prefix=$dev"
+    (lib.enableFeature enableStatic "static")
+    (lib.enableFeature enableShared "shared")
+    (lib.withFeature icuSupport "icu")
+    (lib.withFeatureAs pythonSupport "python" python)
+  ];
+
+  enableParallelBuilding = true;
+
+  doCheck = (stdenv.hostPlatform == stdenv.buildPlatform) && !stdenv.isDarwin &&
+    stdenv.hostPlatform.libc != "musl";
+
+  preInstall = lib.optionalString pythonSupport
+    ''substituteInPlace python/libxml2mod.la --replace "${python}" "$py"'';
+  installFlags = lib.optionalString pythonSupport
+    ''pythondir="$(py)/lib/${python.libPrefix}/site-packages"'';
+
+  postFixup = ''
+    moveToOutput bin/xml2-config "$dev"
+    moveToOutput lib/xml2Conf.sh "$dev"
+    moveToOutput share/man/man1 "$bin"
+  '' + lib.optionalString (enableStatic && enableShared) ''
+    moveToOutput lib/libxml2.a "$static"
+  '';
+
+  passthru = { inherit version; pythonSupport = pythonSupport; };
+
+  meta = {
+    homepage = http://xmlsoft.org/;
+    description = "An XML parsing library for C";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.eelco ];
+  };
+}