src/Tools/Haskell/Test.thy
author wenzelm
Wed, 12 Dec 2018 14:19:56 +0100
changeset 69453 dcea1fffbfe6
parent 69446 9cf0b79dfb7f
child 69459 bbb61a9cb99a
permissions -rw-r--r--
more Haskell operations;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
69241
5426d266dcc5 clarified names;
wenzelm
parents: 69239
diff changeset
     1
(*  Title:      Tools/Haskell/Test.thy
69225
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
     3
*)
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
     4
69241
5426d266dcc5 clarified names;
wenzelm
parents: 69239
diff changeset
     5
section \<open>Test build of Isabelle/Haskell modules\<close>
69225
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
     6
69241
5426d266dcc5 clarified names;
wenzelm
parents: 69239
diff changeset
     7
theory Test imports Haskell
69225
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
     8
begin
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
     9
69239
6cd985a78d6e support sub-directories, i.e. structure module names;
wenzelm
parents: 69225
diff changeset
    10
ML \<open>
69444
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    11
  Isabelle_System.with_tmp_dir "ghc" (fn tmp_dir =>
69225
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
    12
    let
69444
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    13
      val src_dir = Path.append tmp_dir (Path.explode "src");
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    14
      val files = Generated_Files.write_files \<^theory>\<open>Haskell\<close> src_dir;
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    15
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    16
      val modules = files
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    17
        |> map (Path.implode #> unsuffix ".hs" #> space_explode "/" #> space_implode ".");
69446
9cf0b79dfb7f more Haskell operations;
wenzelm
parents: 69444
diff changeset
    18
      val _ =
9cf0b79dfb7f more Haskell operations;
wenzelm
parents: 69444
diff changeset
    19
        GHC.new_project tmp_dir
69453
dcea1fffbfe6 more Haskell operations;
wenzelm
parents: 69446
diff changeset
    20
          {name = "isabelle",
dcea1fffbfe6 more Haskell operations;
wenzelm
parents: 69446
diff changeset
    21
           depends = ["bytestring", "network", "split", "utf8-string"],
dcea1fffbfe6 more Haskell operations;
wenzelm
parents: 69446
diff changeset
    22
           modules = modules};
69444
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    23
69225
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
    24
      val (out, rc) =
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
    25
        Isabelle_System.bash_output
69444
c3c9440cbf9b more formal Haskell project setup, with dependencies on packages from "stackage";
wenzelm
parents: 69385
diff changeset
    26
          (cat_lines ["set -e", "cd " ^ File.bash_path tmp_dir, "isabelle ghc_stack build 2>&1"]);
69239
6cd985a78d6e support sub-directories, i.e. structure module names;
wenzelm
parents: 69225
diff changeset
    27
    in if rc = 0 then writeln out else error out end)
69225
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
    28
\<close>
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
    29
bf2fecda8383 support for Isabelle tools in Haskell;
wenzelm
parents:
diff changeset
    30
end