3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #134413 from Zimmi48/package-hydra-battles

This commit is contained in:
Ben Siraphob 2021-08-17 08:32:21 -05:00 committed by GitHub
commit 6b7decf64b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 85 additions and 12 deletions

View file

@ -33,6 +33,7 @@ The recommended way of defining a derivation for a Coq library, is to use the `c
* `mlPlugin` (optional, defaults to `false`). Some extensions (plugins) might require OCaml and sometimes other OCaml packages. Standard dependencies can be added by setting the current option to `true`. For a finer grain control, the `coq.ocamlPackages` attribute can be used in `extraBuildInputs` to depend on the same package set Coq was built against. * `mlPlugin` (optional, defaults to `false`). Some extensions (plugins) might require OCaml and sometimes other OCaml packages. Standard dependencies can be added by setting the current option to `true`. For a finer grain control, the `coq.ocamlPackages` attribute can be used in `extraBuildInputs` to depend on the same package set Coq was built against.
* `useDune2ifVersion` (optional, default to `(x: false)` uses Dune2 to build the package if the provided predicate evaluates to true on the version, e.g. `useDune2if = versions.isGe "1.1"` will use dune if the version of the package is greater or equal to `"1.1"`, * `useDune2ifVersion` (optional, default to `(x: false)` uses Dune2 to build the package if the provided predicate evaluates to true on the version, e.g. `useDune2if = versions.isGe "1.1"` will use dune if the version of the package is greater or equal to `"1.1"`,
* `useDune2` (optional, defaults to `false`) uses Dune2 to build the package if set to true, the presence of this attribute overrides the behavior of the previous one. * `useDune2` (optional, defaults to `false`) uses Dune2 to build the package if set to true, the presence of this attribute overrides the behavior of the previous one.
* `opam-name` (optional, defaults to `coq-` followed by the value of `pname`), name of the Dune package to build.
* `enableParallelBuilding` (optional, defaults to `true`), since it is activated by default, we provide a way to disable it. * `enableParallelBuilding` (optional, defaults to `true`), since it is activated by default, we provide a way to disable it.
* `extraInstallFlags` (optional), allows to extend `installFlags` which initializes the variable `COQMF_COQLIB` so as to install in the proper subdirectory. Indeed Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation. * `extraInstallFlags` (optional), allows to extend `installFlags` which initializes the variable `COQMF_COQLIB` so as to install in the proper subdirectory. Indeed Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation.
* `setCOQBIN` (optional, defaults to `true`), by default, the environment variable `$COQBIN` is set to the current Coq's binary, but one can disable this behavior by setting it to `false`, * `setCOQBIN` (optional, defaults to `true`), by default, the environment variable `$COQBIN` is set to the current Coq's binary, but one can disable this behavior by setting it to `false`,

View file

@ -27,6 +27,7 @@ in
dropDerivationAttrs ? [], dropDerivationAttrs ? [],
useDune2ifVersion ? (x: false), useDune2ifVersion ? (x: false),
useDune2 ? false, useDune2 ? false,
opam-name ? "coq-${pname}",
... ...
}@args: }@args:
let let
@ -34,7 +35,7 @@ let
"version" "fetcher" "repo" "owner" "domain" "releaseRev" "version" "fetcher" "repo" "owner" "domain" "releaseRev"
"displayVersion" "defaultVersion" "useMelquiondRemake" "displayVersion" "defaultVersion" "useMelquiondRemake"
"release" "extraBuildInputs" "extraPropagatedBuildInputs" "namePrefix" "release" "extraBuildInputs" "extraPropagatedBuildInputs" "namePrefix"
"meta" "useDune2ifVersion" "useDune2" "meta" "useDune2ifVersion" "useDune2" "opam-name"
"extraInstallFlags" "setCOQBIN" "mlPlugin" "extraInstallFlags" "setCOQBIN" "mlPlugin"
"dropAttrs" "dropDerivationAttrs" "keepAttrs" ] ++ dropAttrs) keepAttrs; "dropAttrs" "dropDerivationAttrs" "keepAttrs" ] ++ dropAttrs) keepAttrs;
fetch = import ../coq/meta-fetch/default.nix fetch = import ../coq/meta-fetch/default.nix
@ -90,9 +91,14 @@ stdenv.mkDerivation (removeAttrs ({
extraInstallFlags; extraInstallFlags;
}) })
// (optionalAttrs useDune2 { // (optionalAttrs useDune2 {
buildPhase = ''
runHook preBuild
dune build -p ${opam-name} ''${enableParallelBuilding:+-j $NIX_BUILD_CORES}
runHook postBuild
'';
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
dune install --prefix=$out dune install ${opam-name} --prefix=$out
mv $out/lib/coq $out/lib/TEMPORARY mv $out/lib/coq $out/lib/TEMPORARY
mkdir $out/lib/coq/ mkdir $out/lib/coq/
mv $out/lib/TEMPORARY $out/lib/coq/${coq.coq-version} mv $out/lib/TEMPORARY $out/lib/coq/${coq.coq-version}

View file

@ -0,0 +1,33 @@
{ lib, mkCoqDerivation, coq, mathcomp-ssreflect, mathcomp-algebra, paramcoq
, version ? null }:
with lib;
mkCoqDerivation {
pname = "addition-chains";
repo = "hydra-battles";
release."0.4".sha256 = "sha256:1f7pc4w3kir4c9p0fjx5l77401bx12y72nmqxrqs3qqd3iynvqlp";
releaseRev = (v: "v${v}");
inherit version;
defaultVersion = with versions; switch coq.coq-version [
{ case = isGe "8.11"; out = "0.4"; }
] null;
propagatedBuildInputs = [ mathcomp-ssreflect mathcomp-algebra paramcoq ];
useDune2 = true;
meta = {
description = "Exponentiation algorithms following addition chains";
longDescription = ''
Addition chains are algorithms for computations of the p-th
power of some x, with the least number of multiplication as
possible. We present a few implementations of addition chains,
with proofs of their correctness.
'';
maintainers = with maintainers; [ Zimmi48 ];
license = licenses.mit;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,24 @@
{ lib, mkCoqDerivation, coq, mathcomp, version ? null }:
with lib; mkCoqDerivation {
pname = "gaia";
release."1.11".sha256 = "sha256:0gwb0blf37sv9gb0qpn34dab71zdcx7jsnqm3j9p58qw65cgsqn5";
release."1.12".sha256 = "sha256:0c6cim4x6f9944g8v0cp0lxs244lrhb04ms4y2s6y1wh321zj5mi";
releaseRev = (v: "v${v}");
inherit version;
defaultVersion = with versions; switch [ coq.version mathcomp.version ] [
{ cases = [ (range "8.10" "8.13") "1.12.0" ]; out = "1.12"; }
{ cases = [ (range "8.10" "8.12") "1.11.0" ]; out = "1.11"; }
] null;
propagatedBuildInputs =
[ mathcomp.ssreflect mathcomp.algebra ];
meta = {
description = "Implementation of books from Bourbaki's Elements of Mathematics in Coq";
maintainers = with maintainers; [ Zimmi48 ];
license = licenses.mit;
};
}

View file

@ -1,28 +1,32 @@
{ lib, mkCoqDerivation, coq, mathcomp, equations, paramcoq, version ? null }: { lib, mkCoqDerivation, coq, equations, version ? null }:
with lib; with lib;
mkCoqDerivation { mkCoqDerivation {
pname = "hydra-battles"; pname = "hydra-battles";
owner = "coq-community"; owner = "coq-community";
release."0.3".rev = "v0.3"; release."0.4".sha256 = "sha256:1f7pc4w3kir4c9p0fjx5l77401bx12y72nmqxrqs3qqd3iynvqlp";
release."0.3".sha256 = "sha256-rXP/vJqVEg2tN/I9LWV13YQ1+C7M6lzGu3oI+7pSZzg="; releaseRev = (v: "v${v}");
inherit version; inherit version;
defaultVersion = with versions; switch coq.coq-version [ defaultVersion = with versions; switch coq.coq-version [
{ case = isGe "8.11"; out = "0.3"; } { case = isGe "8.11"; out = "0.4"; }
] null; ] null;
propagatedBuildInputs = [ mathcomp equations paramcoq ]; propagatedBuildInputs = [ equations ];
useDune2 = true;
meta = { meta = {
description = "Variations on Kirby & Paris' hydra battles and other entertaining math in Coq"; description = "Exploration of some properties of Kirby and Paris' hydra battles, with the help of Coq";
longDescription = '' longDescription = ''
Variations on Kirby & Paris' hydra battles and other An exploration of some properties of Kirby and Paris' hydra
entertaining math in Coq (collaborative, documented, includes battles, with the help of the Coq Proof assistant. This
exercises) development includes the study of several representations of
ordinal numbers, and a part of the so-called Ketonen and Solovay
machinery (combinatorial properties of epsilon0).
''; '';
maintainers = with maintainers; [ siraben ]; maintainers = with maintainers; [ siraben Zimmi48 ];
license = licenses.mit; license = licenses.mit;
platforms = platforms.unix; platforms = platforms.unix;
}; };

View file

@ -4,7 +4,10 @@ with lib; mkCoqDerivation {
namePrefix = [ "coq" "mathcomp" ]; namePrefix = [ "coq" "mathcomp" ];
pname = "multinomials"; pname = "multinomials";
opam-name = "coq-mathcomp-multinomials";
owner = "math-comp"; owner = "math-comp";
inherit version; inherit version;
defaultVersion = with versions; switch [ coq.version mathcomp.version ] [ defaultVersion = with versions; switch [ coq.version mathcomp.version ] [
{ cases = [ (range "8.10" "8.13") "1.12.0" ]; out = "1.5.4"; } { cases = [ (range "8.10" "8.13") "1.12.0" ]; out = "1.5.4"; }

View file

@ -14,6 +14,7 @@ let
(callPackage ../development/coq-modules/contribs {}); (callPackage ../development/coq-modules/contribs {});
aac-tactics = callPackage ../development/coq-modules/aac-tactics {}; aac-tactics = callPackage ../development/coq-modules/aac-tactics {};
addition-chains = callPackage ../development/coq-modules/addition-chains {};
autosubst = callPackage ../development/coq-modules/autosubst {}; autosubst = callPackage ../development/coq-modules/autosubst {};
bignums = if lib.versionAtLeast coq.coq-version "8.6" bignums = if lib.versionAtLeast coq.coq-version "8.6"
then callPackage ../development/coq-modules/bignums {} then callPackage ../development/coq-modules/bignums {}
@ -40,6 +41,7 @@ let
fiat_HEAD = callPackage ../development/coq-modules/fiat/HEAD.nix {}; fiat_HEAD = callPackage ../development/coq-modules/fiat/HEAD.nix {};
flocq = callPackage ../development/coq-modules/flocq {}; flocq = callPackage ../development/coq-modules/flocq {};
fourcolor = callPackage ../development/coq-modules/fourcolor {}; fourcolor = callPackage ../development/coq-modules/fourcolor {};
gaia = callPackage ../development/coq-modules/gaia {};
gappalib = callPackage ../development/coq-modules/gappalib {}; gappalib = callPackage ../development/coq-modules/gappalib {};
goedel = callPackage ../development/coq-modules/goedel {}; goedel = callPackage ../development/coq-modules/goedel {};
graph-theory = callPackage ../development/coq-modules/graph-theory {}; graph-theory = callPackage ../development/coq-modules/graph-theory {};