diff --git a/pkgs/development/libraries/libxmlxx/v3.nix b/pkgs/development/libraries/libxmlxx/v3.nix index c40631e78b9a8..5dabe98bd711b 100644 --- a/pkgs/development/libraries/libxmlxx/v3.nix +++ b/pkgs/development/libraries/libxmlxx/v3.nix @@ -7,36 +7,82 @@ glibmm, perl, gnome, + meson, + ninja, + docbook5, + docbook-xsl-ns, + doxygen, + libxslt, + fop, + dblatex, + graphviz, + + withDocumentation ? false, + withManual ? false, # Broken due to not being allowed to fetch file from web + withPDF ? false, + withExamples ? false, }: stdenv.mkDerivation rec { pname = "libxml++"; - version = "3.0.1"; + version = "3.2.5"; src = fetchurl { - url = "mirror://gnome/sources/libxml++/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "19kik79fmg61nv0by0a5f9wchrcfjwzvih4v2waw01hqflhqvp0r"; + url = "mirror://gnome/sources/libxml++/${lib.versions.majorMinor version}/libxml++-${version}.tar.xz"; + hash = "sha256-DJs4G1qD1rOrSwuGXXJW2rJ9V1mBtjvi+Fnty5TaWcc="; }; - outputs = [ - "out" - "dev" - "doc" - "devdoc" - ]; + outputs = + [ + "out" + "dev" + ] + ++ lib.lists.optionals withDocumentation [ + "doc" + "devdoc" + ]; - nativeBuildInputs = [ - pkg-config - perl - ]; + nativeBuildInputs = + [ + ninja + meson + pkg-config + ] + ++ lib.lists.optionals withDocumentation [ + perl + doxygen + libxslt + graphviz + ] + ++ lib.lists.optionals withManual [ + docbook5 + docbook-xsl-ns + ] + ++ lib.lists.optional withPDF [ + fop + dblatex + ]; buildInputs = [ glibmm ]; propagatedBuildInputs = [ libxml2 ]; + mesonFlags = [ + (lib.mesonBool "maintainer-mode" false) + (lib.mesonBool "build-documentation" withDocumentation) + (lib.mesonBool "build-manual" withManual) + (lib.mesonBool "build-pdf" withPDF) + (lib.mesonBool "build-examples" withExamples) + (lib.mesonBool "build-tests" doCheck) + ]; + + preBuild = lib.strings.optionalString withDocumentation '' + doxygen -u docs/reference/Doxyfile + ''; + postFixup = '' substituteInPlace $dev/lib/pkgconfig/libxml++-3.0.pc \ - --replace 'docdir=''${datarootdir}' "docdir=$doc/share" + --replace-fail 'docdir=''${datarootdir}' "docdir=$doc/share" ''; passthru = { @@ -48,11 +94,16 @@ stdenv.mkDerivation rec { }; }; + doCheck = true; + meta = with lib; { homepage = "https://libxmlplusplus.sourceforge.net/"; description = "C++ wrapper for the libxml2 XML parser library, version 3"; license = licenses.lgpl2Plus; platforms = platforms.unix; - maintainers = with maintainers; [ loskutov ]; + maintainers = with maintainers; [ + loskutov + willow + ]; }; }