<pre style='margin:0'>
Landon Fuller (landonf) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/10ab5fff57bea18515806493222178792092a2c4">https://github.com/macports/macports-ports/commit/10ab5fff57bea18515806493222178792092a2c4</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 10ab5fff57bea18515806493222178792092a2c4
</span>Author: Landon Fuller <landonf@macports.org>
AuthorDate: Tue Aug 25 17:51:24 2020 -0600
<span style='display:block; white-space:pre;color:#404040;'> everparse: update to 20200825-70f7516
</span>---
devel/everparse/Portfile | 109 ++++++++++++++-----
devel/everparse/files/everparse-hints.tar.xz | Bin 293788 -> 485372 bytes
devel/everparse/files/patch-add_FStar_Getopt.ml | 117 +++++++++++++++++++++
.../files/patch-batch-driver-toolchain-paths | 16 +++
devel/everparse/files/patch-fix-tests-mkdir | 11 ++
5 files changed, 227 insertions(+), 26 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/everparse/Portfile b/devel/everparse/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 6f6674a7da4..dccd54bc105 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/everparse/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/everparse/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,9 +4,9 @@ PortSystem 1.0
</span> PortGroup github 1.0
name everparse
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup project-everest everparse 76b4cbb473b001e26a88b729df61362779905bb9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-version 20200803-[string range ${github.version} 0 6]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup project-everest everparse 70f75165e1df9f86a3d24fba2f0bd4ddc624884e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 20200825-[string range ${github.version} 0 6]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span>
categories devel
platforms darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,9 +17,9 @@ long_description EverParse provides LowParse, verified-secure F*/Low* parser
</span> QuackyDucky, an untrusted compiler for generating verified secure parsers from a \
message format specification.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 bfd380063f2fe4b30cbbf60ade22fb95e0a41fc4 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 2794efbee63563b78f308fc866fc90554cebebe1765b86dfee2cb12a20567cc5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 658983
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 3aeee23e5a12a71cf9ed14bee6c18f3e30630555 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 b5e8190b6223cc6384004481a66267ce47063094774ccab6772b171e8d9d76bd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 796939
</span>
depends_lib port:fstar-devel \
port:kremlin-devel
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,44 +29,96 @@ depends_build port:ocaml \
</span> port:ocaml-batteries \
port:ocaml-hex
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles patch-add_FStar_Getopt.ml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-fix-tests-mkdir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-batch-driver-toolchain-paths
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options lowparse.home \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fstar.home \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kremlin.home
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default fstar.home {${prefix}/libexec/fstar-devel}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default kremlin.home {${prefix}/libexec/kremlin-devel}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default lowparse.home {${prefix}/libexec/${subport}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Fix CRLF newlines before trying to patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|\r||g" src/3d/ocaml/Makefile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {key path_var} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @FSTAR_HOME@ fstar.home
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @KREMLIN_HOME@ kremlin.home
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @QD_HOME@ lowparse.home
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|${key}|[set ${path_var}]/home|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/3d/ocaml/Batch.ml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # z3 hints significantly decrease build time; can be updated after a successful build+test run via:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# tar -Jcf files/everparse-hints.tar.xz -C work lowparse.hints lowparse-tests.hints
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# tar -Jcf files/everparse-hints.tar.xz -C work lowparse.hints
</span> distfiles-append everparse-hints.tar.xz
use_configure no
build.type gnu
<span style='display:block; white-space:pre;background:#ffe0e0;'>-build.env-append "FSTAR_OPTIONS=--hint_dir .hints --record_hints"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.args FSTAR_HOME=${prefix}/libexec/fstar-devel/home \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- KREMLIN_HOME=${prefix}/libexec/kremlin-devel/home
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env-append "OTHERFLAGS=--hint_dir .hints --record_hints"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args FSTAR_HOME=${fstar.home}/home \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ KREMLIN_HOME=${kremlin.home}/home
</span>
pre-build {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Link lowparse's .hint directories to the top-level ${workpath} directories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Link lowparse's .hint directories to the top-level ${workpath} directory
</span> # we actually package up in everparse-hints.tar.xz
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach {eph_src eph_dst} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lowparse.hints src/lowparse
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lowparse-tests.hints tests/lowparse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set eph_hints ${workpath}/lowparse.hints
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${eph_hints}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {eph_src} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/lowparse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/3d
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/3d/prelude
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tests/lowparse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tests/sample
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tests/bitfields
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tests/unit
</span> } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- file mkdir ${workpath}/${eph_src}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ln -sf ${workpath}/${eph_src} ${worksrcpath}/${eph_dst}/.hints
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${eph_hints}/${eph_src}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -sf ${eph_hints}/${eph_src} ${worksrcpath}/${eph_src}/.hints
</span> }
}
destroot {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Install parser/serializer generator binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${worksrcpath}/_build/src/quackyducky.native \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${destroot}${prefix}/bin/quackyducky
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Create QD_HOME layout compatible with src/package/package.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set everparse_root ${prefix}/libexec/everparse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set everparse_bin ${everparse_root}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set everparse_home ${everparse_root}/src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set everparse_home_3d ${everparse_home}/3d
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ln -sf quackyducky ${destroot}${prefix}/bin/qd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${everparse_home} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${everparse_home_3d} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${everparse_bin}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Install our F* library
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set lowparse_lib_dir ${prefix}/libexec/fstar-devel/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/_build/src/quackyducky.native \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${everparse_bin}/qd
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -d ${destroot}${lowparse_lib_dir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- copy ${worksrcpath}/src/lowparse ${destroot}${lowparse_lib_dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/src/3d/3d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${everparse_bin}/3d
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {ep_src ep_dst} [list \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lowparse ${everparse_home} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3d/prelude ${everparse_home_3d} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3d/.clang-format ${everparse_home_3d} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3d/copyright.txt ${everparse_home_3d} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3d/EverParseEndianness.h ${everparse_home_3d} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3d/noheader.txt ${everparse_home_3d} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/src/${ep_src} ${destroot}${ep_dst}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- fs-traverse {f} ${destroot}${lowparse_lib_dir}/lowparse {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fs-traverse {f} ${destroot}${everparse_home} {
</span> switch -glob -- "[file tail $f] [file type $f]" {
{.hints link} -
{.gitignore file} -
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -74,6 +126,11 @@ destroot {
</span> {Makefile file} { delete $f }
}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Symlink the binaries into ${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -sf ${everparse_bin}/qd ${destroot}${prefix}/bin/quackyducky
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -sf quackyducky ${destroot}${prefix}/bin/qd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -sf ${everparse_bin}/3d ${destroot}${prefix}/bin/quackyducky-3d
</span> }
test.run yes
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/everparse/files/everparse-hints.tar.xz b/devel/everparse/files/everparse-hints.tar.xz
</span><span style='display:block; white-space:pre;color:#808080;'>index d1dcb769c1b..1424084ef33 100644
</span>Binary files a/devel/everparse/files/everparse-hints.tar.xz and b/devel/everparse/files/everparse-hints.tar.xz differ
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/everparse/files/patch-add_FStar_Getopt.ml b/devel/everparse/files/patch-add_FStar_Getopt.ml
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d57236d45aa
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/everparse/files/patch-add_FStar_Getopt.ml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,117 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null 2020-08-03 16:34:50.831886000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/3d/ocaml/FStar_Getopt.ml 2020-08-03 16:33:20.493842000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,102 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let noshort = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++type 'a opt_variant =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | ZeroArgs of (unit -> 'a)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | OneArg of (string -> 'a) * string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++type 'a opt' = FStar_Char.char * string * 'a opt_variant * string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++type opt = unit opt'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++type parse_cmdline_res =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Help
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Error of string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Success
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let bind l f =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ match l with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Help
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Error _ -> l
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Success -> f ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++(* Returns None if this wasn't an option arg (did not start with "-")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Otherwise, returns Some (o, s) where [s] is the trimmed option, and [o]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * is the opt we found in specs (possibly None if not present, which should
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * trigger an error) *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let find_matching_opt specs s : (opt option * string) option =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if String.length s < 2 then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if String.sub s 0 2 = "--" then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (* long opts *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let strim = String.sub s 2 ((String.length s) - 2) in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let o = FStar_List.tryFind (fun (_, option, _, _) -> option = strim) specs in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Some (o, strim)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if String.sub s 0 1 = "-" then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (* short opts *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let strim = String.sub s 1 ((String.length s) - 1) in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let o = FStar_List.tryFind (fun (shortoption, _, _, _) -> FStar_String.make Z.one shortoption = strim) specs in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Some (o, strim)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++(* remark: doesn't work with files starting with -- *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let rec parse (opts:opt list) def ar ix max i : parse_cmdline_res =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ix > max then Success
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let arg = ar.(ix) in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let go_on () = let _ = def arg in parse opts def ar (ix + 1) max (i + 1) in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ match find_matching_opt opts arg with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | None -> go_on ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Some (None, _) -> Error ("unrecognized option '" ^ arg ^ "'\n")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Some (Some (_, _, p, _), argtrim) ->
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ begin match p with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | ZeroArgs f -> f (); parse opts def ar (ix + 1) max (i + 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | OneArg (f, _) ->
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ix + 1 > max
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ then Error ("last option '" ^ argtrim ^ "' takes an argument but has none\n")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let r =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ try (f (ar.(ix + 1)); Success)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ with _ -> Error ("wrong argument given to option `" ^ argtrim ^ "`\n")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ in bind r (fun () -> parse opts def ar (ix + 2) max (i + 1))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ end
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let parse_array specs others args offset =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ parse specs others args offset (Array.length args - 1) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let parse_cmdline specs others =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if Array.length Sys.argv = 1 then Help
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else parse_array specs others Sys.argv 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let parse_string specs others (str:string) =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let split_spaces (str:string) =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let seps = [int_of_char ' '; int_of_char '\t'] in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FStar_List.filter (fun s -> s != "") (FStar_String.split seps str)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (* to match the style of the F# code in FStar.GetOpt.fs *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let index_of str c =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ try
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ String.index str c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ with Not_found -> -1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let substring_from s j =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let len = String.length s - j in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ String.sub s j len
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let rec split_quoted_fragments (str:string) =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let i = index_of str '\'' in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if i < 0 then Some (split_spaces str)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else let prefix = String.sub str 0 i in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let suffix = substring_from str (i + 1) in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let j = index_of suffix '\'' in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if j < 0 then None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else let quoted_frag = String.sub suffix 0 j in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ let rest = split_quoted_fragments (substring_from suffix (j + 1)) in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ match rest with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | None -> None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Some rest -> Some (split_spaces prefix @ quoted_frag::rest)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ match split_quoted_fragments str with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | None -> Error("Failed to parse options; unmatched quote \"'\"")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ | Some args ->
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ parse_array specs others (Array.of_list args) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let cmdline () =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Array.to_list (Sys.argv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/3d/ocaml/Makefile.orig 2020-08-18 00:07:51.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/3d/ocaml/Makefile 2020-08-25 17:08:26.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,9 +4,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f Main.native
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OCAMLPATH="$(FSTAR_HOME)/bin" ocamlbuild -tag debug -use-menhir -tag thread -use-ocamlfind -quiet -pkg batteries -pkg menhirLib -pkg fstarlib -pkg process -cflags -w,-8 Main.native
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-FStar_Getopt.ml: $(FSTAR_HOME)/src/basic/ml/FStar_Getopt.ml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cp $^ $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clean:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -rf _build Main.native *~
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/everparse/files/patch-batch-driver-toolchain-paths b/devel/everparse/files/patch-batch-driver-toolchain-paths
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4da2c708d8f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/everparse/files/patch-batch-driver-toolchain-paths
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/3d/ocaml/Batch.ml.orig.1 2020-08-04 09:59:54.153758000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/3d/ocaml/Batch.ml 2020-08-04 10:06:32.902125000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,10 +1,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ open OS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (* paths *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-let fstar_home = OS.getenv "FSTAR_HOME"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-let kremlin_home = OS.getenv "KREMLIN_HOME"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let fstar_home = try OS.getenv "FSTAR_HOME" with Undefined_environment_variable _ -> "@FSTAR_HOME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let kremlin_home = try OS.getenv "KREMLIN_HOME" with Undefined_environment_variable _ -> "@KREMLIN_HOME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ let kremlib = filename_concat kremlin_home "kremlib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-let qd_home = OS.getenv "QD_HOME"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++let qd_home = try OS.getenv "QD_HOME" with Undefined_environment_variable _ -> "@QD_HOME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ let lowparse_home = filename_concat (filename_concat qd_home "src") "lowparse"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ let ddd_home = filename_concat (filename_concat qd_home "src") "3d"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ let ddd_prelude_home = filename_concat (filename_concat (filename_concat qd_home "src") "3d") "prelude"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/everparse/files/patch-fix-tests-mkdir b/devel/everparse/files/patch-fix-tests-mkdir
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9c6bbbf0030
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/everparse/files/patch-fix-tests-mkdir
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- tests/unit/Makefile.orig.1 2020-08-04 09:52:39.060371000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tests/unit/Makefile 2020-08-04 09:52:47.099995000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -71,7 +71,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ALL_KRML_FILES := $(filter-out kremlin/prims.krml,$(ALL_KRML_FILES))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extract: $(ALL_KRML_FILES) # from .depend
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- -@mkdir out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ -@mkdir -p out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(KREMLIN) -warn-error '@2' -skip-compilation $^
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.exe: $(ALL_KRML_FILES) kremlin/Test.krml
</span></pre><pre style='margin:0'>
</pre>