nixpkgs/pkgs/development/ocaml-modules/stdint/default.nix
sternenseemann 2f96b9a7b4 ocamlPackages.qcheck*: 0.16 -> 0.17
* New exposed function, bug fixes:
  https://github.com/c-cube/qcheck/blob/0.17/CHANGELOG.md#017

* Fix a too liberal testing range causing an integer overflow in stdint
  which for some reason only qcheck 0.17 and not 0.16 seems to find
2021-02-21 17:16:17 +01:00

48 lines
1.6 KiB
Nix

{ lib, fetchurl, fetchpatch, buildDunePackage, qcheck }:
buildDunePackage rec {
pname = "stdint";
version = "0.7.0";
useDune2 = true;
minimumOCamlVersion = "4.03";
src = fetchurl {
url = "https://github.com/andrenth/ocaml-stdint/releases/download/${version}/stdint-${version}.tbz";
sha256 = "4fcc66aef58e2b96e7af3bbca9d910aa239e045ba5fb2400aaef67d0041252dc";
};
patches = [
# fix test bug, remove at next release
(fetchpatch {
url = "https://github.com/andrenth/ocaml-stdint/commit/fc64293f99f597cdfd4470954da6fb323988e2af.patch";
sha256 = "0nxck14vfjfzldsf8cdj2jg1cvhnyh37hqnrcxbdkqmpx4rxkbxs";
})
];
# 1. disable remaining broken tests, see
# https://github.com/andrenth/ocaml-stdint/issues/59
# 2. fix tests to liberal test range
# https://github.com/andrenth/ocaml-stdint/pull/61
postPatch = ''
substituteInPlace tests/stdint_test.ml \
--replace 'test "An integer should perform left-shifts correctly"' \
'skip "An integer should perform left-shifts correctly"' \
--replace 'test "Logical shifts must not sign-extend"' \
'skip "Logical shifts must not sign-extend"' \
--replace 'let pos_int = QCheck.map_same_type abs in_range' \
'let pos_int = QCheck.int_range 0 maxi'
'';
doCheck = true;
checkInputs = [ qcheck ];
meta = {
description = "Various signed and unsigned integers for OCaml";
homepage = "https://github.com/andrenth/ocaml-stdint";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.gebner ];
};
}