coq: Add csdp dependency

The csdp program is invoked for some uses of Micromega tactics.
This commit is contained in:
Russell O'Connor 2015-09-09 23:43:31 -04:00 committed by Russell O'Connor
parent 772ec9cae3
commit 4cc5f5dbb6
4 changed files with 36 additions and 4 deletions

View File

@ -1,6 +1,9 @@
# - coqide compilation can be disabled by setting lablgtk to null; # - coqide compilation can be disabled by setting lablgtk to null;
# - The csdp program used for the Micromega tactic is statically referenced.
# However, coq can build without csdp by setting it to null.
# In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
{ stdenv, make, fetchurl, ocaml, findlib, camlp5, ncurses, lablgtk ? null }: { stdenv, make, fetchurl, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null }:
let let
version = "8.3pl4"; version = "8.3pl4";
@ -11,6 +14,10 @@ let
"\"-I\"; \"+lablgtk2\"" \ "\"-I\"; \"+lablgtk2\"" \
"\"-I\"; \"$(echo "${lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)\"; \"-I\"; \"$(echo "${lablgtk}"/lib/ocaml/*/site-lib/stublibs)\"" "\"-I\"; \"$(echo "${lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)\"; \"-I\"; \"$(echo "${lablgtk}"/lib/ocaml/*/site-lib/stublibs)\""
'' else ""; '' else "";
csdpPatch = if csdp != null then ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.search_exe_in_path \"csdp\"" "Some \"${csdp}/bin/csdp\""
'' else "";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -44,6 +51,7 @@ stdenv.mkDerivation {
substituteInPlace configure --replace "/bin/uname" "$UNAME" substituteInPlace configure --replace "/bin/uname" "$UNAME"
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM" substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
${idePatch} ${idePatch}
${csdpPatch}
''; '';
# This post install step is needed to build ssrcoqide from the ssreflect package # This post install step is needed to build ssrcoqide from the ssreflect package

View File

@ -1,12 +1,19 @@
# - coqide compilation can be disabled by setting lablgtk to null; # - coqide compilation can be disabled by setting lablgtk to null;
# - The csdp program used for the Micromega tactic is statically referenced.
# However, coq can build without csdp by setting it to null.
# In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
{stdenv, fetchurl, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}: {stdenv, fetchurl, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}:
let let
version = "8.5b2"; version = "8.5b2";
coq-version = "8.5"; coq-version = "8.5";
buildIde = lablgtk != null; buildIde = lablgtk != null;
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
csdpPatch = if csdp != null then ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
'' else "";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -28,6 +35,7 @@ stdenv.mkDerivation {
substituteInPlace configure --replace "/bin/uname" "$UNAME" substituteInPlace configure --replace "/bin/uname" "$UNAME"
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM" substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
substituteInPlace Makefile.build --replace "ifeq (\$(ARCH),Darwin)" "ifeq (\$(ARCH),Darwinx)" substituteInPlace Makefile.build --replace "ifeq (\$(ARCH),Darwin)" "ifeq (\$(ARCH),Darwinx)"
${csdpPatch}
''; '';
setupHook = writeText "setupHook.sh" '' setupHook = writeText "setupHook.sh" ''

View File

@ -1,12 +1,19 @@
# - coqide compilation can be disabled by setting lablgtk to null; # - coqide compilation can be disabled by setting lablgtk to null;
# - The csdp program used for the Micromega tactic is statically referenced.
# However, coq can build without csdp by setting it to null.
# In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
{stdenv, fetchgit, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}: {stdenv, fetchgit, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}:
let let
version = "8.5pre-0c999f02"; version = "8.5pre-0c999f02";
coq-version = "8.5"; coq-version = "8.5";
buildIde = lablgtk != null; buildIde = lablgtk != null;
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
csdpPatch = if csdp != null then ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
'' else "";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -31,6 +38,7 @@ stdenv.mkDerivation {
substituteInPlace configure --replace "/bin/uname" "$UNAME" substituteInPlace configure --replace "/bin/uname" "$UNAME"
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM" substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
substituteInPlace Makefile.build --replace "ifeq (\$(ARCH),Darwin)" "ifeq (\$(ARCH),Darwinx)" substituteInPlace Makefile.build --replace "ifeq (\$(ARCH),Darwin)" "ifeq (\$(ARCH),Darwinx)"
${csdpPatch}
''; '';
setupHook = writeText "setupHook.sh" '' setupHook = writeText "setupHook.sh" ''

View File

@ -1,12 +1,19 @@
# - coqide compilation can be disabled by setting lablgtk to null; # - coqide compilation can be disabled by setting lablgtk to null;
# - The csdp program used for the Micromega tactic is statically referenced.
# However, coq can build without csdp by setting it to null.
# In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
{stdenv, fetchurl, pkgconfig, writeText, ocaml, findlib, camlp5, ncurses, lablgtk ? null}: {stdenv, fetchurl, pkgconfig, writeText, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}:
let let
version = "8.4pl6"; version = "8.4pl6";
coq-version = "8.4"; coq-version = "8.4";
buildIde = lablgtk != null; buildIde = lablgtk != null;
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
csdpPatch = if csdp != null then ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
'' else "";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -29,6 +36,7 @@ stdenv.mkDerivation {
RM=$(type -tp rm) RM=$(type -tp rm)
substituteInPlace configure --replace "/bin/uname" "$UNAME" substituteInPlace configure --replace "/bin/uname" "$UNAME"
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM" substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
${csdpPatch}
''; '';
preConfigure = '' preConfigure = ''