nixpkgs/pkgs/development/libraries/expat/default.nix
Artem Leshchev 6d28b263de expat: fix tests flakiness in 2.6.0 version
libexpat 2.6.0 introduced fix for performance issue on some of the
inputs along with tests that check the parsing performance.
Unfortunately, the first implementation of the test case relied on the
clock() function to check if the performance is good enough, resulting
in flakiness on some of the platforms (eg. aarch64-darwin).

https://github.com/libexpat/libexpat/pull/817 fixes tests, but it is not
released yet. This commit brings that PR as a patch.
2024-02-17 10:49:09 +03:00

75 lines
2.0 KiB
Nix

{ lib
, stdenv
, fetchurl
# for passthru.tests
, python3
, perlPackages
, haskellPackages
, luaPackages
, ocamlPackages
}:
# Note: this package is used for bootstrapping fetchurl, and thus
# cannot use fetchpatch! All mutable patches (generated by GitHub or
# cgit) that are needed here should be included directly in Nixpkgs as
# files.
let
version = "2.6.0";
tag = "R_${lib.replaceStrings ["."] ["_"] version}";
in stdenv.mkDerivation rec {
pname = "expat";
inherit version;
src = fetchurl {
url = "https://github.com/libexpat/libexpat/releases/download/${tag}/${pname}-${version}.tar.xz";
hash = "sha256-y19ajqIR4cq9Wb4KkzpS48Aswyboak04fY0hjn7kej4=";
};
patches = [
# Fix tests flakiness on some platforms (like aarch64-darwin), should be released in 2.6.1
./2.6.0-fix-tests-flakiness.patch
];
strictDeps = true;
outputs = [ "out" "dev" ]; # TODO: fix referrers
outputBin = "dev";
enableParallelBuilding = true;
configureFlags = lib.optional stdenv.isFreeBSD "--with-pic";
outputMan = "dev"; # tiny page for a dev tool
doCheck = true; # not cross;
preCheck = ''
patchShebangs ./run.sh ./test-driver-wrapper.sh
'';
# CMake files incorrectly calculate library path from dev prefix
# https://github.com/libexpat/libexpat/issues/501
postFixup = ''
substituteInPlace $dev/lib/cmake/expat-${version}/expat-noconfig.cmake \
--replace "$"'{_IMPORT_PREFIX}' $out
'';
passthru.tests = {
inherit python3;
inherit (python3.pkgs) xmltodict;
inherit (haskellPackages) hexpat;
inherit (perlPackages) XMLSAXExpat XMLParser;
inherit (luaPackages) luaexpat;
inherit (ocamlPackages) ocaml_expat;
};
meta = with lib; {
changelog = "https://github.com/libexpat/libexpat/blob/${tag}/expat/Changes";
homepage = "https://libexpat.github.io/";
description = "A stream-oriented XML parser library written in C";
platforms = platforms.all;
license = licenses.mit; # expat version
};
}