<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>