Files
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

121 lines
2.2 KiB
Nix

{
coq,
mkCoqDerivation,
mathcomp,
bignums,
flocq,
coquelicot,
interval,
mathcomp-reals-stdlib,
multinomials,
coqeal,
lib,
version ? null,
}:
let
repo = "validsdp";
owner = "validsdp";
inherit version;
defaultVersion =
let
case = coq: mc: out: {
cases = [
coq
mc
];
inherit out;
};
in
with lib.versions;
lib.switch
[ coq.coq-version mathcomp.version ]
[
(case (range "9.0" "9.1") (isGe "2.3.0") "1.1.0")
]
null;
release = {
"1.1.0".sha256 = "sha256-lbESAFBEBpOShNFh6RZQYPLRhdqYvdKBrxJOMy2L+Ws=";
};
releaseRev = v: "v${v}";
# list of packages sorted by dependency order
packages = {
"libvalidsdp" = [ ];
"validsdp" = [ "libvalidsdp" ];
};
validsdp_ =
package:
let
libvalidsdp-deps = [
mathcomp.field
bignums
flocq
coquelicot
interval
mathcomp-reals-stdlib
];
validsdp-deps = [
mathcomp.field
bignums
flocq
interval
mathcomp-reals-stdlib
multinomials
coqeal
coq.ocamlPackages.osdp
coq.ocamlPackages.ocplib-simplex
];
intra-deps = map validsdp_ packages.${package};
pkgpath = lib.switch package [
{
case = "libvalidsdp";
out = "libvalidsdp";
}
{
case = "validsdp";
out = ".";
}
] package;
pname = package;
derivation = mkCoqDerivation {
inherit
version
pname
defaultVersion
release
releaseRev
repo
owner
;
namePrefix = [
"coq"
];
mlPlugin = package == "validsdp";
propagatedBuildInputs =
intra-deps
++ lib.optionals (package == "libvalidsdp") libvalidsdp-deps
++ lib.optionals (package == "validsdp") validsdp-deps;
preBuild = ''
cd ${pkgpath}
'';
meta = {
description = "ValidSDP";
license = lib.licenses.lgpl21Plus;
};
passthru = lib.mapAttrs (package: deps: validsdp_ package) packages;
};
in
derivation;
in
validsdp_ "validsdp"