Author: maggesi
Date: Wed Sep  8 13:07:45 2010
New Revision: 23685
URL: https://svn.nixos.org/websvn/nix/?rev=23685&sc=1

Log:
Improve hol_light:

  *   Upgrade hol_light to the latest svn version on google code (r57).

  *   Improve and semplify the mechanism for the generation of checkpointed 
binaries.

  *   Make hol to work with camlp5 and thus with recent version of ocaml 
(>=3.10, <=3.11).

  *   Remove ocaml_with_sources which is not needed anymore.

Added:
   nixpkgs/trunk/pkgs/applications/science/logic/hol_light/restart_hol_light
   nixpkgs/trunk/pkgs/applications/science/logic/hol_light/start_hol.ml
   nixpkgs/trunk/pkgs/applications/science/logic/hol_light/start_hol_light
Deleted:
   nixpkgs/trunk/pkgs/applications/science/logic/hol_light/configure-3.09.3
   
nixpkgs/trunk/pkgs/applications/science/logic/hol_light/ocaml-with-sources.nix
   
nixpkgs/trunk/pkgs/applications/science/logic/hol_light/selfcheckpoint_complex.ml
   
nixpkgs/trunk/pkgs/applications/science/logic/hol_light/selfcheckpoint_core.ml
   
nixpkgs/trunk/pkgs/applications/science/logic/hol_light/selfcheckpoint_multivariate.ml
Modified:
   nixpkgs/trunk/pkgs/applications/science/logic/hol_light/binaries.nix
   nixpkgs/trunk/pkgs/applications/science/logic/hol_light/default.nix
   nixpkgs/trunk/pkgs/top-level/all-packages.nix

Modified: nixpkgs/trunk/pkgs/applications/science/logic/hol_light/binaries.nix
==============================================================================
--- nixpkgs/trunk/pkgs/applications/science/logic/hol_light/binaries.nix        
Wed Sep  8 11:40:32 2010        (r23684)
+++ nixpkgs/trunk/pkgs/applications/science/logic/hol_light/binaries.nix        
Wed Sep  8 13:07:45 2010        (r23685)
@@ -1,55 +1,60 @@
-{stdenv, ocaml_with_sources, hol_light, dmtcp, nettools, openssh}:
-# nettools and openssh needed for dmtcp restarting script.
+{stdenv, hol_light, dmtcp}:
 
 let
-  selfcheckpoint_core_ml = ./selfcheckpoint_core.ml;
-  selfcheckpoint_multivariate_ml = ./selfcheckpoint_multivariate.ml;
-  selfcheckpoint_complex_ml = ./selfcheckpoint_complex.ml;
+  cmd_core = ''
+    #use "${./start_hol.ml}";;
+    dmtcp_selfdestruct "";;
+  '';
+  cmd_multivariate = ''
+    loadt "Multivariate/make.ml";;
+    dmtcp_checkpoint "Preloaded with multivariate analysis";;
+  '';
+  cmd_complex = ''
+    loadt "Multivariate/complexes.ml";;
+    loadt "Multivariate/canal.ml";;
+    loadt "Multivariate/transcendentals.ml";;
+    loadt "Multivariate/realanalysis.ml";;
+    loadt "Multivariate/cauchy.ml";;
+    loadt "Multivariate/complex_database.ml";;
+    loadt "update_database.ml";;
+    dmtcp_checkpoint "Preloaded with multivariate-based complex analysis";;
+  '';
 in
 
 stdenv.mkDerivation {
   name = "hol_light_binaries-${hol_light.version}";
 
-  buildInputs = [ dmtcp ocaml_with_sources nettools openssh];
+  buildInputs = [ dmtcp hol_light hol_light.ocaml ];
 
   buildCommand = ''
-    HOL_DIR=${hol_light}/src/hol_light
-    BIN_DIR=$out/bin
-    ensureDir $BIN_DIR
+    HOL_DIR="${hol_light}/src/hol_light"
+    BIN_DIR="$out/bin"
+    ensureDir "$BIN_DIR"
 
     # HOL Light Core
-    dmtcp_coordinator --background
-    echo 'Unix.system "dmtcp_command -k";;\n' |
-      dmtcp_checkpoint -q -c "$BIN_DIR" \
-        ocaml -I "$HOL_DIR" -init ${selfcheckpoint_core_ml}
-    substituteInPlace dmtcp_restart_script.sh \
-      --replace dmtcp_restart "dmtcp_restart --quiet"
-    mv dmtcp_restart_script.sh $BIN_DIR/hol_light
-    dmtcp_command -q
+    (echo '${cmd_core}' | dmtcp_checkpoint --quiet 
${hol_light}/bin/start_hol_light) || exit 0
+    mv ckpt* "$BIN_DIR/hol_light.ckpt"
+    substitute "${./restart_hol_light}" "$BIN_DIR/hol_light" \
+      --subst-var-by DMTCP_RESTART `type -p dmtcp_restart` \
+      --subst-var-by CKPT_FILE "$BIN_DIR/hol_light.ckpt"
+    chmod +x "$BIN_DIR/hol_light"
 
     # HOL Light Multivariate
-    dmtcp_coordinator --background
-    echo 'Unix.system "dmtcp_command -k";;\n' |
-      dmtcp_checkpoint -q -c "$BIN_DIR" \
-        ocaml -I "$HOL_DIR" -init ${selfcheckpoint_multivariate_ml}
-    substituteInPlace dmtcp_restart_script.sh \
-      --replace dmtcp_restart "dmtcp_restart --quiet"
-    mv dmtcp_restart_script.sh $BIN_DIR/hol_light_multivariate
-    dmtcp_command -q
+    cp "$BIN_DIR/hol_light.ckpt" .
+    (echo '${cmd_multivariate}' | dmtcp_restart --quiet hol_light.ckpt) || 
exit 0
+    mv hol_light.ckpt "$BIN_DIR/hol_light_multivariate.ckpt"
+    substitute "${./restart_hol_light}" "$BIN_DIR/hol_light_multivariate" \
+      --subst-var-by DMTCP_RESTART `type -p dmtcp_restart` \
+      --subst-var-by CKPT_FILE "$BIN_DIR/hol_light_multivariate.ckpt"
+    chmod +x "$BIN_DIR/hol_light_multivariate"
 
     # HOL Light Complex
-    dmtcp_coordinator --background
-    echo 'Unix.system "dmtcp_command -k";;\n' |
-      dmtcp_checkpoint -q -c "$BIN_DIR" \
-        ocaml -I "$HOL_DIR" -init ${selfcheckpoint_complex_ml}
-    substituteInPlace dmtcp_restart_script.sh \
-      --replace dmtcp_restart "dmtcp_restart --quiet"
-    mv dmtcp_restart_script.sh $BIN_DIR/hol_light_complex
-    dmtcp_command -q
+    cp "$BIN_DIR/hol_light_multivariate.ckpt" .
+    (echo '${cmd_complex}' | dmtcp_restart --quiet 
hol_light_multivariate.ckpt) || exit 0
+    mv hol_light_multivariate.ckpt "$BIN_DIR/hol_light_complex.ckpt"
+    substitute "${./restart_hol_light}" "$BIN_DIR/hol_light_complex" \
+      --subst-var-by DMTCP_RESTART `type -p dmtcp_restart` \
+      --subst-var-by CKPT_FILE "$BIN_DIR/hol_light_complex.ckpt"
+    chmod +x "$BIN_DIR/hol_light_complex"
   '';
-
-  meta = {
-    description = "Preload binaries for HOL Light.";
-    license = "BSD";
-  };
 }

Modified: nixpkgs/trunk/pkgs/applications/science/logic/hol_light/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/applications/science/logic/hol_light/default.nix Wed Sep 
 8 11:40:32 2010        (r23684)
+++ nixpkgs/trunk/pkgs/applications/science/logic/hol_light/default.nix Wed Sep 
 8 13:07:45 2010        (r23685)
@@ -1,56 +1,40 @@
-{stdenv, fetchurl, ocaml_with_sources}:
+{stdenv, fetchsvn, ocaml, camlp5_transitional}:
 
-let
-  pname = "hol_light";
-  version = "100110";
-  webpage = http://www.cl.cam.ac.uk/~jrh13/hol-light/;
-
-  dmtcp_checkpoint = ''
-
-(* ------------------------------------------------------------------------- *)
-(* Non-destructive checkpoint using DMTCP.                                   *)
-(* ------------------------------------------------------------------------- *)
-
-let dmtcp_checkpoint bannerstring =
-  let longer_banner = startup_banner ^ " with DMTCP" in
-  let complete_banner =
-    if bannerstring = "" then longer_banner
-    else longer_banner^"\n        "^bannerstring in
-  (Gc.compact(); Unix.sleep 1;
-   try ignore(Unix.system ("dmtcp_command -bc")) with _ -> ();
-   Format.print_string complete_banner;
-   Format.print_newline(); Format.print_newline());;
-  '';
-
-in
-
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-  inherit version;
-
-  src = fetchurl {
-    url = "${webpage}${pname}_${version}.tgz";
-    sha256 = "1jkn9vpl3n9dgb96zwmly32h1p3f9mcf34pg6vm0fyvqp9kbx3ac";
+stdenv.mkDerivation rec {
+  name = "hol_light-${version}";
+  version = "20100820svn57";
+
+  inherit ocaml;
+  camlp5 = camlp5_transitional;
+
+  src = fetchsvn {
+    url = http://hol-light.googlecode.com/svn/trunk;
+    rev = "57";
+    sha256 = 
"d1372744abca6c9978673850977d3e1577fd8cfd8298826eb713b3681c10cccd";
   };
 
-  buildInputs = [ ocaml_with_sources ];
+  buildInputs = [ ocaml camlp5 ];
 
   buildCommand = ''
-    ensureDir "$out/src"
-    cd "$out/src"
-
-    tar -xzf "$src"
-    cd hol_light
+    export HOL_DIR="$out/src/hol_light"
+    ensureDir `dirname $HOL_DIR` "$out/bin"
+    cp -a "${src}" "$HOL_DIR"
+    cd "$HOL_DIR"
+    chmod -R u+rwX .
 
     substituteInPlace hol.ml --replace \
       "(try Sys.getenv \"HOLLIGHT_DIR\" with Not_found -> Sys.getcwd())" \
-      "\"$out/src/hol_light\""
-
-    substituteInPlace Examples/update_database.ml --replace \
-      "Filename.concat ocaml_source_dir" \
-      "Filename.concat \"${ocaml_with_sources}/src/ocaml\""
+      "\"$HOL_DIR\""
 
-    echo '${dmtcp_checkpoint}' >> make.ml
+    substituteInPlace Makefile --replace \
+      "+camlp5" \
+      "${camlp5}/lib/ocaml/camlp5"
+
+    substitute ${./start_hol_light} "$out/bin/start_hol_light" \
+      --subst-var-by OCAML "${ocaml}" \
+      --subst-var-by CAMLP5 "${camlp5_transitional}" \
+      --subst-var HOL_DIR
+    chmod +x "$out/bin/start_hol_light"
 
     make
   '';
@@ -66,7 +50,8 @@
 can extend it with new theorems and inference rules without compromising its
 soundness.
     '';
-    homepage = webpage;
+    homepage = http://www.cl.cam.ac.uk/~jrh13/hol-light/;
     license = "BSD";
+    ocamlVersions = [ "3.10.0" "3.11.1" ];
   };
 }

Added: nixpkgs/trunk/pkgs/applications/science/logic/hol_light/restart_hol_light
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixpkgs/trunk/pkgs/applications/science/logic/hol_light/restart_hol_light   
Wed Sep  8 13:07:45 2010        (r23685)
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec @DMTCP_RESTART@ --quiet @CKPT_FILE@

Added: nixpkgs/trunk/pkgs/applications/science/logic/hol_light/start_hol.ml
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixpkgs/trunk/pkgs/applications/science/logic/hol_light/start_hol.ml        
Wed Sep  8 13:07:45 2010        (r23685)
@@ -0,0 +1,37 @@
+(* ========================================================================= *)
+(* Create a standalone HOL image. Assumes that we are running under Linux    *)
+(* and have the program "dmtcp" available to create checkpoints.             *)
+(*                                                                           *)
+(*              (c) Copyright, John Harrison 1998-2007                       *)
+(*              (c) Copyright, Marco Maggesi 2010                            *)
+(* ========================================================================= *)
+
+(* Use this instead of #use "make.ml";; for quick tests. *)
+(*
+let a = 1;
+#load "unix.cma";;
+let startup_banner = "Bogus banner\n";;
+Format.print_string "Hello!"; Format.print_newline();;
+*)
+
+#use "make.ml";;
+
+(* ------------------------------------------------------------------------- *)
+(* Checkpoint using DMTCP.                                                   *)
+(* dmtcp_selfdestruct is similar to dmtcp_checkpoint but terminates          *)
+(* HOL Light and shuts down the dmtcp coordinator.                           *)
+(* ------------------------------------------------------------------------- *)
+
+let dmtcp_checkpoint, dmtcp_selfdestruct =
+  let call_dmtcp opts bannerstring =
+    let longer_banner = startup_banner ^ " with DMTCP" in
+    let complete_banner =
+      if bannerstring = "" then longer_banner
+      else longer_banner^"\n        "^bannerstring in
+    (Gc.compact(); Unix.sleep 4;
+     Format.print_string "Checkpointing..."; Format.print_newline();
+     try ignore(Unix.system ("dmtcp_command -bc " ^ opts)) with _ -> ();
+     Format.print_string complete_banner;
+     Format.print_newline(); Format.print_newline())
+  in
+  call_dmtcp "", call_dmtcp "-q";;

Added: nixpkgs/trunk/pkgs/applications/science/logic/hol_light/start_hol_light
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixpkgs/trunk/pkgs/applications/science/logic/hol_light/start_hol_light     
Wed Sep  8 13:07:45 2010        (r23685)
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec @OCAML@/bin/ocaml -I @CAMLP5@/lib/ocaml/camlp5 -I @HOL_DIR@ "$@"

Modified: nixpkgs/trunk/pkgs/top-level/all-packages.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/all-packages.nix       Wed Sep  8 11:40:32 
2010        (r23684)
+++ nixpkgs/trunk/pkgs/top-level/all-packages.nix       Wed Sep  8 13:07:45 
2010        (r23685)
@@ -6783,11 +6783,6 @@
 
   hol_light_binaries = callPackage 
../applications/science/logic/hol_light/binaries.nix { };
 
-  # This is a special version of OCaml handcrafted especially for
-  # hol_light it should be merged with the current expresion for ocaml
-  # one day.
-  ocaml_with_sources = callPackage 
../applications/science/logic/hol_light/ocaml-with-sources.nix { };
-
   isabelle = import ../applications/science/logic/isabelle {
     inherit (pkgs) stdenv fetchurl nettools perl polyml;
     inherit (pkgs.emacs23Packages) proofgeneral;
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to