summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/science/logic/coq/default.nix5
-rw-r--r--pkgs/development/coq-modules/mathcomp/default.nix5
-rw-r--r--pkgs/development/coq-modules/mathcomp/extra.nix19
3 files changed, 13 insertions, 16 deletions
diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix
index 774fbadd4fd..7427875895f 100644
--- a/pkgs/applications/science/logic/coq/default.nix
+++ b/pkgs/applications/science/logic/coq/default.nix
@@ -29,10 +29,7 @@ let
    "8.9.0" = "1dkgdjc4n1m15m1p724hhi5cyxpqbjw6rxc5na6fl3v4qjjfnizh";
    "8.10+beta1" = "19wf39i0ap2vakglgdlqxpjd3l1h5w7dp460w8y7nc1y06b2153h";
   }."${version}";
-  coq-version =
-    let inherit (builtins) concatStringsSep head map; in
-    let inherit (stdenv.lib) take splitString; in
-    concatStringsSep "." (take 2 (map head (map (splitString "pl") (splitString "." version))));
+  coq-version = stdenv.lib.versions.majorMinor version;
   versionAtLeast = stdenv.lib.versionAtLeast coq-version;
   ideFlags = stdenv.lib.optionalString (buildIde && !versionAtLeast "8.10")
     "-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt";
diff --git a/pkgs/development/coq-modules/mathcomp/default.nix b/pkgs/development/coq-modules/mathcomp/default.nix
index aa6da1a1e28..a9933692db3 100644
--- a/pkgs/development/coq-modules/mathcomp/default.nix
+++ b/pkgs/development/coq-modules/mathcomp/default.nix
@@ -16,9 +16,10 @@ let
     "1.6.1" = flip elem ["8.5"];
   };
   # computes the default version of mathcomp given a version of Coq
-  min-mathcomp-version = head (naturalSort (attrNames mathcomp-coq-versions));
-  default-mathcomp-version = last (naturalSort ([min-mathcomp-version]
+  max-mathcomp-version = last (naturalSort (attrNames mathcomp-coq-versions));
+  default-mathcomp-version = let v = last (naturalSort (["0.0.0"]
      ++ (attrNames (filterAttrs (_: vs: vs coq.coq-version) mathcomp-coq-versions))));
+     in if v == "0.0.0" then max-mathcomp-version else v;
 
   # list of core mathcomp packages sorted by dependency order
   mathcomp-packages =
diff --git a/pkgs/development/coq-modules/mathcomp/extra.nix b/pkgs/development/coq-modules/mathcomp/extra.nix
index ef387985e06..3666d54a786 100644
--- a/pkgs/development/coq-modules/mathcomp/extra.nix
+++ b/pkgs/development/coq-modules/mathcomp/extra.nix
@@ -75,11 +75,9 @@ packageGen = {
   mathcomp ? current-mathcomp,
   license ? mathcomp.meta.license,
   # mandatory
-  package, version, version-sha256, description
+  package, version ? "broken", version-sha256, description
   }:
-  if version == "" then {}
-  else { "${package}" =
-  let from = src; in
+  { "${package}" = let from = src; in
 
   stdenv.mkDerivation rec {
     inherit version;
@@ -102,19 +100,20 @@ packageGen = {
       inherit (src.meta) homepage;
       inherit (mathcomp.meta) platforms;
       maintainers = [ stdenv.lib.maintainers.vbgl ];
+      broken = (version == "broken");
     };
 
     passthru = {
       inherit version-sha256;
-      compatibleCoqVersions = v: builtins.elem v coq-versions;
+      compatibleCoqVersions = if meta.broken then _: false else
+                              v: builtins.elem v coq-versions;
     };
-  };};
+  };
+  };
 
-current-versions = versions."${current-mathcomp.version}"
-  or (throw "no mathcomp extra packages found for mathcomp ${current-mathcomp.version}");
+current-versions = versions."${current-mathcomp.version}" or {};
 
-select = x: mapAttrs (n: pkg: {package = n;} // pkg)
-              (recursiveUpdate (overrideExisting x param) x);
+select = x: mapAttrs (n: pkg: {package = n;} // pkg) (recursiveUpdate param x);
 
 all = (mapAttrs' (n: pkg:
         {name = "mathcomp_1_7-${n}";