summary refs log tree commit diff
path: root/pkgs/development/coq-modules/contribs/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/coq-modules/contribs/default.nix')
-rw-r--r--pkgs/development/coq-modules/contribs/default.nix261
1 files changed, 261 insertions, 0 deletions
diff --git a/pkgs/development/coq-modules/contribs/default.nix b/pkgs/development/coq-modules/contribs/default.nix
new file mode 100644
index 00000000000..289a4d75921
--- /dev/null
+++ b/pkgs/development/coq-modules/contribs/default.nix
@@ -0,0 +1,261 @@
+contribs:
+
+let
+  mkContrib = import ./mk-contrib.nix;
+  all = import ./all.nix;
+  overrides = {
+    Additions = self: {
+      patchPhase = ''
+        for p in binary_strat dicho_strat generation log2_implementation shift
+        do
+          substituteInPlace $p.v \
+          --replace 'Require Import Euclid.' 'Require Import Coq.Arith.Euclid.'
+        done
+      '';
+    };
+    BDDs = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        32d30
+        < extraction
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp extraction/dyade $out/bin
+      '';
+    };
+    CanonBDDs = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        17d16
+        < rauzy/algorithme1/extraction
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp rauzy/algorithme1/extraction/suresnes $out/bin
+      '';
+    };
+    CoinductiveReals = self: {
+      buildInputs = self.buildInputs ++ [ contribs.QArithSternBrocot ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../QArithSternBrocot QArithSternBrocot
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    CoRN = self: {
+      buildInputs = self.buildInputs ++ [ contribs.MathClasses ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../MathClasses/ MathClasses
+        EOF
+        coq_makefile -f Make -o Makefile.coq
+      '';
+      enableParallelBuilding = true;
+      installFlags = self.installFlags + " -f Makefile.coq";
+    };
+    Counting = self: {
+      postInstall = ''
+        for ext in cma cmxs
+        do
+          cp src/counting_plugin.$ext $out/lib/coq/8.4/user-contrib/Counting/
+        done
+      '';
+    };
+    Ergo = self: {
+      buildInputs = self.buildInputs ++ (with contribs; [ Containers Counting Nfix ]);
+      patchPhase = ''
+        patch Make <<EOF
+        4,9d3
+        < -I ../Containers/src
+        < -R ../Containers/theories Containers
+        < -I ../Nfix/src
+        < -R ../Nfix/theories Nfix
+        < -I ../Counting/src
+        < -R ../Counting/theories Counting
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    FingerTree = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        21d20
+        < extraction
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    FOUnify = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        8c8
+        < -custom "\$(CAMLOPTLINK) -pp '\$(CAMLBIN)\$(CAMLP4)o' -o unif unif.mli unif.ml main.ml" unif.ml unif
+        ---
+        > -custom "\$(CAMLOPTLINK) -pp 'camlp5o' -o unif unif.mli unif.ml main.ml" unif.ml unif
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp unif $out/bin/
+      '';
+    };
+    Goedel = self: {
+      buildInputs = self.buildInputs ++ [ contribs.Pocklington ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Eindhoven/Pocklington Pocklington
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    Graphs = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp checker $out/bin/
+      '';
+    };
+    IntMap = self: { configurePhase = "coq_makefile -f Make -o Makefile"; };
+    LinAlg = self: {
+      buildInputs = self.buildInputs ++ [ contribs.Algebra ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Sophia-Antipolis/Algebra/ Algebra
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    Markov = self: { configurePhase = "coq_makefile -o Makefile -R . Markov markov.v"; };
+    Nfix = self: {
+      postInstall = ''
+        for ext in cma cmxs
+        do
+          cp src/nfix_plugin.$ext $out/lib/coq/8.4/user-contrib/Nfix/
+        done
+      '';
+    };
+    OrbStab = self: {
+      buildInputs = self.buildInputs ++ (with contribs; [ LinAlg Algebra ]);
+      patchPhase = ''
+        patch Make <<EOF
+        2,3d1
+        < -R ../../Sophia-Antipolis/Algebra Algebra
+        < -R ../../Nijmegen/LinAlg LinAlg
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    PTSF = self: {
+      buildInputs = self.buildInputs ++ [ contribs.PTSATR ];
+      patchPhase = ''
+        patch Make <<EOF
+        1d0
+        < -R ../../Paris/PTSATR/ PTSATR
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    RelationExtraction = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        31d30
+        < test
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    Semantics = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        18a19
+        > interp.mli
+        EOF
+      '';
+      configurePhase = ''
+        coq_makefile -f Make -o Makefile
+        make extract_interpret.vo
+        rm -f str_little.ml.d
+      '';
+    };
+    SMC = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    Ssreflect = self: {
+      patchPhase = ''
+        substituteInPlace Makefile \
+        --replace "/bin/mkdir" "mkdir"
+      '';
+    };
+    Stalmarck = self: {
+      configurePhase = "coq_makefile -R . Stalmarck *.v staltac.ml4 > Makefile";
+    };
+    Topology = self: {
+      buildInputs = self.buildInputs ++ [ contribs.ZornsLemma ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../ZornsLemma ZornsLemma
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+    TreeAutomata = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        EOF
+        coq_makefile -f Make -o Makefile
+      '';
+    };
+  };
+in
+
+callPackage: extra:
+
+builtins.listToAttrs (
+map
+(name:
+  let
+    sha256 = builtins.getAttr name all;
+    override =
+      if builtins.hasAttr name overrides
+      then builtins.getAttr name overrides
+      else x: { };
+  in
+  {
+    inherit name;
+    value = callPackage (mkContrib { inherit name sha256 override; }) extra;
+  }
+)
+(builtins.attrNames all)
+)