diff --git a/.ci/esy-build-steps.yml b/.ci/esy-build-steps.yml index 99bcb56..b245934 100644 --- a/.ci/esy-build-steps.yml +++ b/.ci/esy-build-steps.yml @@ -4,12 +4,12 @@ steps: - task: NodeTool@0 inputs: versionSpec: '8.9' - - script: npm install -g esy@0.5.6 + - script: npm install -g esy@0.5.8 - script: esy install - script: esy build - script: esy test:native - script: esy build:js - script: esy test:js - script: esy @bench install - - script: esy @bench build - - script: esy @bench x reglm-bench + - script: esy @bench build --release + - script: esy @bench x --release reglm-bench diff --git a/.gitignore b/.gitignore index e530b89..d7b7d12 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,9 @@ typings/ .merlin _build/ *.install + +# esy +_esy + +#dune build folder +_build diff --git a/bench.esy.lock/.gitattributes b/bench.esy.lock/.gitattributes new file mode 100644 index 0000000..25366ae --- /dev/null +++ b/bench.esy.lock/.gitattributes @@ -0,0 +1,3 @@ + +# Set eol to LF so files aren't converted to CRLF-eol on Windows. +* text eol=lf diff --git a/bench.esy.lock/.gitignore b/bench.esy.lock/.gitignore new file mode 100644 index 0000000..a221be2 --- /dev/null +++ b/bench.esy.lock/.gitignore @@ -0,0 +1,3 @@ + +# Reset any possible .gitignore, we want all esy.lock to be un-ignored. +!* diff --git a/bench.esy.lock/index.json b/bench.esy.lock/index.json new file mode 100644 index 0000000..88c64cc --- /dev/null +++ b/bench.esy.lock/index.json @@ -0,0 +1,1006 @@ +{ + "checksum": "4a26143aa7dd9527014529a89e8cd46b", + "root": "reason-gl-matrix@link-dev:./package.json", + "node": { + "reperf@1.4.0@d41d8cd9": { + "id": "reperf@1.4.0@d41d8cd9", + "name": "reperf", + "version": "1.4.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/reperf/-/reperf-1.4.0.tgz#sha1:a1b6125e1cb7d61654c435b013114991b974dcde" + ] + }, + "overrides": [], + "dependencies": [ + "refmterr@3.2.2@d41d8cd9", "ocaml@4.8.1000@d41d8cd9", + "@reason-native/pastel@0.1.0@d41d8cd9", + "@opam/printbox@opam:0.2@9f070302", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "refmterr@3.2.2@d41d8cd9": { + "id": "refmterr@3.2.2@d41d8cd9", + "name": "refmterr", + "version": "3.2.2", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/refmterr/-/refmterr-3.2.2.tgz#sha1:b7d6c5df6a37633ec82d339dc609b1867e54e55e" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@reason-native/pastel@0.1.0@d41d8cd9", + "@reason-native/console@0.1.0@d41d8cd9", + "@opam/re@opam:1.9.0@d4d5e13d", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/atdgen@opam:2.0.0@46af0360", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "reason-gl-matrix@link-dev:./package.json": { + "id": "reason-gl-matrix@link-dev:./package.json", + "name": "reason-gl-matrix", + "version": "link-dev:./package.json", + "source": { + "type": "link-dev", + "path": ".", + "manifest": "package.json" + }, + "overrides": [ "bench.json" ], + "dependencies": [ + "reperf@1.4.0@d41d8cd9", + "@opam/js_of_ocaml-compiler@opam:3.5.0@9b63f33c", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [ + "refmterr@3.2.2@d41d8cd9", "@reason-native/rely@3.1.0@d41d8cd9", + "@opam/merlin@opam:3.3.2@7a364181" + ] + }, + "ocaml@4.8.1000@d41d8cd9": { + "id": "ocaml@4.8.1000@d41d8cd9", + "name": "ocaml", + "version": "4.8.1000", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.8.1000.tgz#sha1:abc435b5d4ddea2acba8b2df7efb81e2d1690db1" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@reason-native/rely@3.1.0@d41d8cd9": { + "id": "@reason-native/rely@3.1.0@d41d8cd9", + "name": "@reason-native/rely", + "version": "3.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/rely/-/rely-3.1.0.tgz#sha1:4f59906dc7c18ba86c998e44d6463b6be866dfc6" + ] + }, + "overrides": [], + "dependencies": [ + "refmterr@3.2.2@d41d8cd9", "ocaml@4.8.1000@d41d8cd9", + "@reason-native/pastel@0.1.0@d41d8cd9", + "@reason-native/file-context-printer@0.0.3@d41d8cd9", + "@opam/re@opam:1.9.0@d4d5e13d", "@opam/junit@opam:2.0.1@1b4d302c", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@reason-native/pastel@0.1.0@d41d8cd9": { + "id": "@reason-native/pastel@0.1.0@d41d8cd9", + "name": "@reason-native/pastel", + "version": "0.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/pastel/-/pastel-0.1.0.tgz#sha1:2b262a654b8d807215df74768e628e9b05b3f5e3" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@reason-native/file-context-printer@0.0.3@d41d8cd9": { + "id": "@reason-native/file-context-printer@0.0.3@d41d8cd9", + "name": "@reason-native/file-context-printer", + "version": "0.0.3", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/file-context-printer/-/file-context-printer-0.0.3.tgz#sha1:b92eec7b10107ccb27528f9eea9bb51252bca491" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@reason-native/pastel@0.1.0@d41d8cd9", + "@opam/re@opam:1.9.0@d4d5e13d", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@reason-native/console@0.1.0@d41d8cd9": { + "id": "@reason-native/console@0.1.0@d41d8cd9", + "name": "@reason-native/console", + "version": "0.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/console/-/console-0.1.0.tgz#sha1:3b56f0e9e1be8464329793df29020aa90e71c22c" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@opam/yojson@opam:1.7.0@7056d985": { + "id": "@opam/yojson@opam:1.7.0@7056d985", + "name": "@opam/yojson", + "version": "opam:1.7.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/b8/b89d39ca3f8c532abe5f547ad3b8f84d#md5:b89d39ca3f8c532abe5f547ad3b8f84d", + "archive:https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz#md5:b89d39ca3f8c532abe5f547ad3b8f84d" + ], + "opam": { + "name": "yojson", + "version": "1.7.0", + "path": "bench.esy.lock/opam/yojson.1.7.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd", "@opam/cppo@opam:1.6.6@f4f83858", + "@opam/biniou@opam:1.2.1@d7570399", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd", "@opam/biniou@opam:1.2.1@d7570399" + ] + }, + "@opam/uutf@opam:1.0.2@4440868f": { + "id": "@opam/uutf@opam:1.0.2@4440868f", + "name": "@opam/uutf", + "version": "opam:1.0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/a7/a7c542405a39630c689a82bd7ef2292c#md5:a7c542405a39630c689a82bd7ef2292c", + "archive:http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz#md5:a7c542405a39630c689a82bd7ef2292c" + ], + "opam": { + "name": "uutf", + "version": "1.0.2", + "path": "bench.esy.lock/opam/uutf.1.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", + "@opam/topkg@opam:1.0.1@a42c631e", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea" + ] + }, + "@opam/uchar@opam:0.0.2@c8218eea": { + "id": "@opam/uchar@opam:0.0.2@c8218eea", + "name": "@opam/uchar", + "version": "opam:0.0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", + "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" + ], + "opam": { + "name": "uchar", + "version": "0.0.2", + "path": "bench.esy.lock/opam/uchar.0.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/tyxml@opam:4.3.0@c1da25f1": { + "id": "@opam/tyxml@opam:4.3.0@c1da25f1", + "name": "@opam/tyxml", + "version": "opam:4.3.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/fd/fd834a567f813bf447cab5f4c3a723e2#md5:fd834a567f813bf447cab5f4c3a723e2", + "archive:https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz#md5:fd834a567f813bf447cab5f4c3a723e2" + ], + "opam": { + "name": "tyxml", + "version": "4.3.0", + "path": "bench.esy.lock/opam/tyxml.4.3.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@d4d5e13d", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@d4d5e13d", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/topkg@opam:1.0.1@a42c631e": { + "id": "@opam/topkg@opam:1.0.1@a42c631e", + "name": "@opam/topkg", + "version": "opam:1.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/16/16b90e066d8972a5ef59655e7c28b3e9#md5:16b90e066d8972a5ef59655e7c28b3e9", + "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz#md5:16b90e066d8972a5ef59655e7c28b3e9" + ], + "opam": { + "name": "topkg", + "version": "1.0.1", + "path": "bench.esy.lock/opam/topkg.1.0.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03" + ] + }, + "@opam/seq@opam:base@d8d7de1d": { + "id": "@opam/seq@opam:base@d8d7de1d", + "name": "@opam/seq", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "seq", + "version": "base", + "path": "bench.esy.lock/opam/seq.base" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/result@opam:1.4@dc720aef": { + "id": "@opam/result@opam:1.4@dc720aef", + "name": "@opam/result", + "version": "opam:1.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/d3/d3162dbc501a2af65c8c71e0866541da#md5:d3162dbc501a2af65c8c71e0866541da", + "archive:https://github.com/janestreet/result/archive/1.4.tar.gz#md5:d3162dbc501a2af65c8c71e0866541da" + ], + "opam": { + "name": "result", + "version": "1.4", + "path": "bench.esy.lock/opam/result.1.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/re@opam:1.9.0@d4d5e13d": { + "id": "@opam/re@opam:1.9.0@d4d5e13d", + "name": "@opam/re", + "version": "opam:1.9.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/bd/bddaed4f386a22cace7850c9c7dac296#md5:bddaed4f386a22cace7850c9c7dac296", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz#md5:bddaed4f386a22cace7850c9c7dac296" + ], + "opam": { + "name": "re", + "version": "1.9.0", + "path": "bench.esy.lock/opam/re.1.9.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/ptime@opam:0.8.5@0051d642": { + "id": "@opam/ptime@opam:0.8.5@0051d642", + "name": "@opam/ptime", + "version": "opam:0.8.5", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/4d/4d48055d623ecf2db792439b3e96a520#md5:4d48055d623ecf2db792439b3e96a520", + "archive:https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz#md5:4d48055d623ecf2db792439b3e96a520" + ], + "opam": { + "name": "ptime", + "version": "0.8.5", + "path": "bench.esy.lock/opam/ptime.0.8.5" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", + "@opam/result@opam:1.4@dc720aef", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef" + ] + }, + "@opam/printbox@opam:0.2@9f070302": { + "id": "@opam/printbox@opam:0.2@9f070302", + "name": "@opam/printbox", + "version": "opam:0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/d8/d84584a8ebdf3faa7b04704f0f75813c#md5:d84584a8ebdf3faa7b04704f0f75813c", + "archive:https://github.com/c-cube/printbox/archive/0.2.tar.gz#md5:d84584a8ebdf3faa7b04704f0f75813c" + ], + "opam": { + "name": "printbox", + "version": "0.2", + "path": "bench.esy.lock/opam/printbox.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/tyxml@opam:4.3.0@c1da25f1", + "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/base-bytes@opam:base@19d0c2ff", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/base-bytes@opam:base@19d0c2ff" + ] + }, + "@opam/ppx_derivers@opam:1.2.1@ecf0aa45": { + "id": "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "name": "@opam/ppx_derivers", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/5d/5dc2bf130c1db3c731fe0fffc5648b41#md5:5dc2bf130c1db3c731fe0fffc5648b41", + "archive:https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz#md5:5dc2bf130c1db3c731fe0fffc5648b41" + ], + "opam": { + "name": "ppx_derivers", + "version": "1.2.1", + "path": "bench.esy.lock/opam/ppx_derivers.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/ocamlfind@opam:1.8.1@ff07b0f9": { + "id": "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "name": "@opam/ocamlfind", + "version": "opam:1.8.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/18/18ca650982c15536616dea0e422cbd8c#md5:18ca650982c15536616dea0e422cbd8c", + "archive:http://download2.camlcity.org/download/findlib-1.8.1.tar.gz#md5:18ca650982c15536616dea0e422cbd8c", + "archive:http://download.camlcity.org/download/findlib-1.8.1.tar.gz#md5:18ca650982c15536616dea0e422cbd8c" + ], + "opam": { + "name": "ocamlfind", + "version": "1.8.1", + "path": "bench.esy.lock/opam/ocamlfind.1.8.1" + } + }, + "overrides": [ + { + "opamoverride": + "bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override" + } + ], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/conf-m4@opam:1@3b2b148a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/ocamlbuild@opam:0.14.0@6ac75d03": { + "id": "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "name": "@opam/ocamlbuild", + "version": "opam:0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", + "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" + ], + "opam": { + "name": "ocamlbuild", + "version": "0.14.0", + "path": "bench.esy.lock/opam/ocamlbuild.0.14.0" + } + }, + "overrides": [ + { + "opamoverride": + "bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d": { + "id": "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "name": "@opam/ocaml-migrate-parsetree", + "version": "opam:1.4.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/23/231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8#sha256:231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8", + "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.4.0/ocaml-migrate-parsetree-v1.4.0.tbz#sha256:231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8" + ], + "opam": { + "name": "ocaml-migrate-parsetree", + "version": "1.4.0", + "path": "bench.esy.lock/opam/ocaml-migrate-parsetree.1.4.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef", + "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef", + "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/merlin-extend@opam:0.5@a5dd7d4b": { + "id": "@opam/merlin-extend@opam:0.5@a5dd7d4b", + "name": "@opam/merlin-extend", + "version": "opam:0.5", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/ca/ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227#sha256:ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227", + "archive:https://github.com/let-def/merlin-extend/releases/download/v0.5/merlin-extend-v0.5.tbz#sha256:ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227" + ], + "opam": { + "name": "merlin-extend", + "version": "0.5", + "path": "bench.esy.lock/opam/merlin-extend.0.5" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/cppo@opam:1.6.6@f4f83858", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/merlin@opam:3.3.2@7a364181": { + "id": "@opam/merlin@opam:3.3.2@7a364181", + "name": "@opam/merlin", + "version": "opam:3.3.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/1d/1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801#sha256:1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801", + "archive:https://github.com/ocaml/merlin/releases/download/v3.3.2/merlin-v3.3.2.tbz#sha256:1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801" + ], + "opam": { + "name": "merlin", + "version": "3.3.2", + "path": "bench.esy.lock/opam/merlin.3.3.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/menhir@opam:20190924@004407ff": { + "id": "@opam/menhir@opam:20190924@004407ff", + "name": "@opam/menhir", + "version": "opam:20190924", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/67/677f1997fb73177d5a00fa1b8d61c3ef#md5:677f1997fb73177d5a00fa1b8d61c3ef", + "archive:https://gitlab.inria.fr/fpottier/menhir/repository/20190924/archive.tar.gz#md5:677f1997fb73177d5a00fa1b8d61c3ef" + ], + "opam": { + "name": "menhir", + "version": "20190924", + "path": "bench.esy.lock/opam/menhir.20190924" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/junit@opam:2.0.1@1b4d302c": { + "id": "@opam/junit@opam:2.0.1@1b4d302c", + "name": "@opam/junit", + "version": "opam:2.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/40/40224fb3d4f5e47dc5ff4605587d383b#md5:40224fb3d4f5e47dc5ff4605587d383b", + "archive:https://github.com/Khady/ocaml-junit/releases/download/2.0.1/junit-2.0.1.tbz#md5:40224fb3d4f5e47dc5ff4605587d383b" + ], + "opam": { + "name": "junit", + "version": "2.0.1", + "path": "bench.esy.lock/opam/junit.2.0.1" + } + }, + "overrides": [], + "dependencies": [ + "@opam/tyxml@opam:4.3.0@c1da25f1", "@opam/ptime@opam:0.8.5@0051d642", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "@opam/tyxml@opam:4.3.0@c1da25f1", "@opam/ptime@opam:0.8.5@0051d642", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/js_of_ocaml-compiler@opam:3.5.0@9b63f33c": { + "id": "@opam/js_of_ocaml-compiler@opam:3.5.0@9b63f33c", + "name": "@opam/js_of_ocaml-compiler", + "version": "opam:3.5.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/c1/c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7#sha256:c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7", + "archive:https://github.com/ocsigen/js_of_ocaml/releases/download/3.5.0/js_of_ocaml-3.5.0.tbz#sha256:c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7" + ], + "opam": { + "name": "js_of_ocaml-compiler", + "version": "3.5.0", + "path": "bench.esy.lock/opam/js_of_ocaml-compiler.3.5.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/cmdliner@opam:1.0.4@93208aac" + ] + }, + "@opam/jbuilder@opam:transition@20522f05": { + "id": "@opam/jbuilder@opam:transition@20522f05", + "name": "@opam/jbuilder", + "version": "opam:transition", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "jbuilder", + "version": "transition", + "path": "bench.esy.lock/opam/jbuilder.transition" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/easy-format@opam:1.3.2@0484b3c4": { + "id": "@opam/easy-format@opam:1.3.2@0484b3c4", + "name": "@opam/easy-format", + "version": "opam:1.3.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/34/3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926#sha256:3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926", + "archive:https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz#sha256:3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" + ], + "opam": { + "name": "easy-format", + "version": "1.3.2", + "path": "bench.esy.lock/opam/easy-format.1.3.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/dune@opam:1.11.4@21d66ccd": { + "id": "@opam/dune@opam:1.11.4@21d66ccd", + "name": "@opam/dune", + "version": "opam:1.11.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/77/77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6#sha256:77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6", + "archive:https://github.com/ocaml/dune/releases/download/1.11.4/dune-build-info-1.11.4.tbz#sha256:77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6" + ], + "opam": { + "name": "dune", + "version": "1.11.4", + "path": "bench.esy.lock/opam/dune.1.11.4" + } + }, + "overrides": [ + { + "opamoverride": + "bench.esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override" + } + ], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084" + ] + }, + "@opam/cppo@opam:1.6.6@f4f83858": { + "id": "@opam/cppo@opam:1.6.6@f4f83858", + "name": "@opam/cppo", + "version": "opam:1.6.6", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/e7/e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0", + "archive:https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" + ], + "opam": { + "name": "cppo", + "version": "1.6.6", + "path": "bench.esy.lock/opam/cppo.1.6.6" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/conf-m4@opam:1@3b2b148a": { + "id": "@opam/conf-m4@opam:1@3b2b148a", + "name": "@opam/conf-m4", + "version": "opam:1", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "conf-m4", + "version": "1", + "path": "bench.esy.lock/opam/conf-m4.1" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/cmdliner@opam:1.0.4@93208aac": { + "id": "@opam/cmdliner@opam:1.0.4@93208aac", + "name": "@opam/cmdliner", + "version": "opam:1.0.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/fe/fe2213d0bc63b1e10a2d0aa66d2fc8d9#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9", + "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9" + ], + "opam": { + "name": "cmdliner", + "version": "1.0.4", + "path": "bench.esy.lock/opam/cmdliner.1.0.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/biniou@opam:1.2.1@d7570399": { + "id": "@opam/biniou@opam:1.2.1@d7570399", + "name": "@opam/biniou", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/35/35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335#sha256:35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335", + "archive:https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz#sha256:35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" + ], + "opam": { + "name": "biniou", + "version": "1.2.1", + "path": "bench.esy.lock/opam/biniou.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/base-unix@opam:base@87d0b2eb": { + "id": "@opam/base-unix@opam:base@87d0b2eb", + "name": "@opam/base-unix", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-unix", + "version": "base", + "path": "bench.esy.lock/opam/base-unix.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base-threads@opam:base@36803084": { + "id": "@opam/base-threads@opam:base@36803084", + "name": "@opam/base-threads", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-threads", + "version": "base", + "path": "bench.esy.lock/opam/base-threads.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base-bytes@opam:base@19d0c2ff": { + "id": "@opam/base-bytes@opam:base@19d0c2ff", + "name": "@opam/base-bytes", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-bytes", + "version": "base", + "path": "bench.esy.lock/opam/base-bytes.base" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@ff07b0f9" + ] + }, + "@opam/atdgen-runtime@opam:2.0.0@60f6faab": { + "id": "@opam/atdgen-runtime@opam:2.0.0@60f6faab", + "name": "@opam/atdgen-runtime", + "version": "opam:2.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", + "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" + ], + "opam": { + "name": "atdgen-runtime", + "version": "2.0.0", + "path": "bench.esy.lock/opam/atdgen-runtime.2.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399" + ] + }, + "@opam/atdgen@opam:2.0.0@46af0360": { + "id": "@opam/atdgen@opam:2.0.0@46af0360", + "name": "@opam/atdgen", + "version": "opam:2.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", + "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" + ], + "opam": { + "name": "atdgen", + "version": "2.0.0", + "path": "bench.esy.lock/opam/atdgen.2.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399", + "@opam/atdgen-runtime@opam:2.0.0@60f6faab", + "@opam/atd@opam:2.0.0@e0ddd12f", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399", + "@opam/atdgen-runtime@opam:2.0.0@60f6faab", + "@opam/atd@opam:2.0.0@e0ddd12f" + ] + }, + "@opam/atd@opam:2.0.0@e0ddd12f": { + "id": "@opam/atd@opam:2.0.0@e0ddd12f", + "name": "@opam/atd", + "version": "opam:2.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", + "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" + ], + "opam": { + "name": "atd", + "version": "2.0.0", + "path": "bench.esy.lock/opam/atd.2.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/menhir@opam:20190924@004407ff", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/easy-format@opam:1.3.2@0484b3c4", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", + "@opam/easy-format@opam:1.3.2@0484b3c4" + ] + }, + "@esy-ocaml/substs@0.0.1@d41d8cd9": { + "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", + "name": "@esy-ocaml/substs", + "version": "0.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@esy-ocaml/reason@3.5.2@d41d8cd9": { + "id": "@esy-ocaml/reason@3.5.2@d41d8cd9", + "name": "@esy-ocaml/reason", + "version": "3.5.2", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.5.2.tgz#sha1:ac48b63fd66fbbc1d77ab6a2b7e3a1ba21a8f40b" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "@opam/merlin-extend@opam:0.5@a5dd7d4b", + "@opam/menhir@opam:20190924@004407ff", + "@opam/dune@opam:1.11.4@21d66ccd" + ], + "devDependencies": [] + } + } +} \ No newline at end of file diff --git a/bench.esy.lock/opam/atd.2.0.0/opam b/bench.esy.lock/opam/atd.2.0.0/opam new file mode 100644 index 0000000..2808354 --- /dev/null +++ b/bench.esy.lock/opam/atd.2.0.0/opam @@ -0,0 +1,34 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/atd" +bug-reports: "https://github.com/mjambon/atd/issues" +dev-repo: "git://github.com/mjambon/atd.git" + +build: [ + ["jbuilder" "subst" "-p" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] +] + +# Restore when https://github.com/mjambon/atd/issues/121 is resolved. +# build-test: [ +# ["jbuilder" "runtest" "-p" name] +# ] + +depends: [ + "ocaml" {>= "4.03.0"} + "jbuilder" + "menhir" {build} + "easy-format" +] +synopsis: "Parser for the ATD data format description language" +description: """ +ATD is the OCaml library providing a parser for the ATD language and +various utilities. ATD stands for Adjustable Type Definitions in +reference to its main property of supporting annotations that allow a +good fit with a variety of data formats.""" +url { + src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" + checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" +} diff --git a/bench.esy.lock/opam/atdgen-runtime.2.0.0/opam b/bench.esy.lock/opam/atdgen-runtime.2.0.0/opam new file mode 100644 index 0000000..7236d93 --- /dev/null +++ b/bench.esy.lock/opam/atdgen-runtime.2.0.0/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/atd" +bug-reports: "https://github.com/mjambon/atd/issues" +dev-repo: "git://github.com/mjambon/atd.git" + +build: [ + ["jbuilder" "subst" "-p" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] +] + +# Restore when https://github.com/mjambon/atd/issues/121 is resolved. +# build-test: [ +# ["jbuilder" "runtest" "-p" name] +# ] + +depends: [ + "ocaml" {>= "4.02.3"} + "jbuilder" + "biniou" {>= "1.0.6"} + "yojson" {>= "1.2.1"} +] +synopsis: "Runtime library for code generated by atdgen." +url { + src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" + checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" +} diff --git a/bench.esy.lock/opam/atdgen.2.0.0/opam b/bench.esy.lock/opam/atdgen.2.0.0/opam new file mode 100644 index 0000000..d71d304 --- /dev/null +++ b/bench.esy.lock/opam/atdgen.2.0.0/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/atd" +bug-reports: "https://github.com/mjambon/atd/issues" +dev-repo: "git://github.com/mjambon/atd.git" + +build: [ + ["jbuilder" "subst" "-p" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] +] + +# Restore when https://github.com/mjambon/atd/issues/121 is resolved. +# build-test: [ +# ["jbuilder" "runtest" "-p" name] +# ] + +depends: [ + "ocaml" {>= "4.03.0"} + "jbuilder" + "atd" {>= "2.0.0"} + "atdgen-runtime" {>= "2.0.0"} + "biniou" {>= "1.0.6"} + "yojson" {>= "1.2.1"} +] +synopsis: + "Generates efficient JSON serializers, deserializers and validators" +description: """ +Atdgen is a command-line program that takes as input type definitions in the +ATD syntax and produces OCaml code suitable for data serialization and +deserialization. + +Two data formats are currently supported, these are biniou and JSON. +Atdgen-biniou and Atdgen-json will refer to Atdgen used in one context or the +other. + +Atdgen was designed with efficiency and durability in mind. Software authors +are encouraged to use Atdgen directly and to write tools that may reuse part of +Atdgen’s source code.""" +url { + src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" + checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" +} diff --git a/bench.esy.lock/opam/base-bytes.base/opam b/bench.esy.lock/opam/base-bytes.base/opam new file mode 100644 index 0000000..f1cae50 --- /dev/null +++ b/bench.esy.lock/opam/base-bytes.base/opam @@ -0,0 +1,9 @@ +opam-version: "2.0" +maintainer: " " +authors: " " +homepage: " " +depends: [ + "ocaml" {>= "4.02.0"} + "ocamlfind" {>= "1.5.3"} +] +synopsis: "Bytes library distributed with the OCaml compiler" diff --git a/bench.esy.lock/opam/base-threads.base/opam b/bench.esy.lock/opam/base-threads.base/opam new file mode 100644 index 0000000..914ff50 --- /dev/null +++ b/bench.esy.lock/opam/base-threads.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Threads library distributed with the OCaml compiler +""" + diff --git a/bench.esy.lock/opam/base-unix.base/opam b/bench.esy.lock/opam/base-unix.base/opam new file mode 100644 index 0000000..b973540 --- /dev/null +++ b/bench.esy.lock/opam/base-unix.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Unix library distributed with the OCaml compiler +""" + diff --git a/bench.esy.lock/opam/biniou.1.2.1/opam b/bench.esy.lock/opam/biniou.1.2.1/opam new file mode 100644 index 0000000..b706b42 --- /dev/null +++ b/bench.esy.lock/opam/biniou.1.2.1/opam @@ -0,0 +1,45 @@ +opam-version: "2.0" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "@doc"] {with-doc} +] +maintainer: ["martin@mjambon.com"] +authors: ["Martin Jambon"] +bug-reports: "https://github.com/mjambon/biniou/issues" +homepage: "https://github.com/mjambon/biniou" +doc: "https://mjambon.github.io/biniou/" +license: "BSD-3-Clause" +dev-repo: "git+https://github.com/mjambon/biniou.git" +synopsis: + "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" +description: """ + +Biniou (pronounced "be new") is a binary data format designed for speed, safety, +ease of use and backward compatibility as protocols evolve. Biniou is vastly +equivalent to JSON in terms of functionality but allows implementations several +times faster (4 times faster than yojson), with 25-35% space savings. + +Biniou data can be decoded into human-readable form without knowledge of type +definitions except for field and variant names which are represented by 31-bit +hashes. A program named bdump is provided for routine visualization of biniou +data files. + +The program atdgen is used to derive OCaml-Biniou serializers and deserializers +from type definitions. + +Biniou format specification: mjambon.github.io/atdgen-doc/biniou-format.txt""" +depends: [ + "easy-format" + "dune" {>= "1.10"} + "ocaml" {>= "4.02.3"} +] +url { + src: + "https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz" + checksum: [ + "sha256=35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" + "sha512=82670cc77bf3e869ee26e5fbe5a5affa45a22bc8b6c4bd7e85473912780e0111baca59b34a2c14feae3543ce6e239d7fddaeab24b686a65bfe642cdb91d27ebf" + ] +} diff --git a/bench.esy.lock/opam/cmdliner.1.0.4/opam b/bench.esy.lock/opam/cmdliner.1.0.4/opam new file mode 100644 index 0000000..b2187dc --- /dev/null +++ b/bench.esy.lock/opam/cmdliner.1.0.4/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/cmdliner" +doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" +dev-repo: "git+http://erratique.ch/repos/cmdliner.git" +bug-reports: "https://github.com/dbuenzli/cmdliner/issues" +tags: [ "cli" "system" "declarative" "org:erratique" ] +license: "ISC" +depends:[ "ocaml" {>= "4.03.0"} ] +build: [[ make "all" "PREFIX=%{prefix}%" ]] +install: +[[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ] + [make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]] + +synopsis: """Declarative definition of command line interfaces for OCaml""" +description: """\ + +Cmdliner allows the declarative definition of command line interfaces +for OCaml. + +It provides a simple and compositional mechanism to convert command +line arguments to OCaml values and pass them to your functions. The +module automatically handles syntax errors, help messages and UNIX man +page generation. It supports programs with single or multiple commands +and respects most of the [POSIX][1] and [GNU][2] conventions. + +Cmdliner has no dependencies and is distributed under the ISC license. + +[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html +[2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html +""" +url { +archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz" +checksum: "fe2213d0bc63b1e10a2d0aa66d2fc8d9" +} diff --git a/bench.esy.lock/opam/conf-m4.1/opam b/bench.esy.lock/opam/conf-m4.1/opam new file mode 100644 index 0000000..c6feb2a --- /dev/null +++ b/bench.esy.lock/opam/conf-m4.1/opam @@ -0,0 +1,22 @@ +opam-version: "2.0" +maintainer: "tim@gfxmonk.net" +homepage: "http://www.gnu.org/software/m4/m4.html" +bug-reports: "https://github.com/ocaml/opam-repository/issues" +authors: "GNU Project" +license: "GPL-3.0-only" +build: [["sh" "-exc" "echo | m4"]] +depexts: [ + ["m4"] {os-family = "debian"} + ["m4"] {os-distribution = "fedora"} + ["m4"] {os-distribution = "rhel"} + ["m4"] {os-distribution = "centos"} + ["m4"] {os-distribution = "alpine"} + ["m4"] {os-distribution = "nixos"} + ["m4"] {os-family = "suse"} + ["m4"] {os-distribution = "ol"} + ["m4"] {os-distribution = "arch"} +] +synopsis: "Virtual package relying on m4" +description: + "This package can only install if the m4 binary is installed on the system." +flags: conf diff --git a/bench.esy.lock/opam/cppo.1.6.6/opam b/bench.esy.lock/opam/cppo.1.6.6/opam new file mode 100644 index 0000000..f683f8b --- /dev/null +++ b/bench.esy.lock/opam/cppo.1.6.6/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: "Martin Jambon" +license: "BSD-3-Clause" +homepage: "http://mjambon.com/cppo.html" +doc: "https://ocaml-community.github.io/cppo/" +bug-reports: "https://github.com/ocaml-community/cppo/issues" +depends: [ + "ocaml" {>= "4.03"} + "dune" {>= "1.0"} + "base-unix" +] +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +dev-repo: "git+https://github.com/ocaml-community/cppo.git" +synopsis: "Code preprocessor like cpp for OCaml" +description: """ +Cppo is an equivalent of the C preprocessor for OCaml programs. +It allows the definition of simple macros and file inclusion. + +Cppo is: + +* more OCaml-friendly than cpp +* easy to learn without consulting a manual +* reasonably fast +* simple to install and to maintain +""" +url { + src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" + checksum: [ + "sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" + "sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" + ] +} diff --git a/bench.esy.lock/opam/dune.1.11.4/opam b/bench.esy.lock/opam/dune.1.11.4/opam new file mode 100644 index 0000000..19e2511 --- /dev/null +++ b/bench.esy.lock/opam/dune.1.11.4/opam @@ -0,0 +1,53 @@ +opam-version: "2.0" +synopsis: "Fast, portable and opinionated build system" +description: """ + +dune is a build system that was designed to simplify the release of +Jane Street packages. It reads metadata from "dune" files following a +very simple s-expression syntax. + +dune is fast, it has very low-overhead and support parallel builds on +all platforms. It has no system dependencies, all you need to build +dune and packages using dune is OCaml. You don't need or make or bash +as long as the packages themselves don't use bash explicitly. + +dune supports multi-package development by simply dropping multiple +repositories into the same directory. + +It also supports multi-context builds, such as building against +several opam roots/switches simultaneously. This helps maintaining +packages across several versions of OCaml and gives cross-compilation +for free. +""" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml/dune" +doc: "https://dune.readthedocs.io/" +bug-reports: "https://github.com/ocaml/dune/issues" +depends: [ + "ocaml" {>= "4.02"} + "base-unix" + "base-threads" +] +conflicts: [ + "jbuilder" {!= "transition"} + "odoc" {< "1.3.0"} + "dune-release" {< "1.3.0"} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path + ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} + ["ocaml" "bootstrap.ml"] + ["./boot.exe" "--release" "--subst"] {pinned} + ["./boot.exe" "--release" "-j" jobs] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/1.11.4/dune-build-info-1.11.4.tbz" + checksum: [ + "sha256=77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6" + "sha512=02f00fd872aa49b832fc8c1e928409f23c79ddf84a53009a58875f222cca36fbb92c905e12c539caec9cbad723f195a8aa24218382dca35a903b3f52b11f06f2" + ] +} diff --git a/bench.esy.lock/opam/easy-format.1.3.2/opam b/bench.esy.lock/opam/easy-format.1.3.2/opam new file mode 100644 index 0000000..138d0fb --- /dev/null +++ b/bench.esy.lock/opam/easy-format.1.3.2/opam @@ -0,0 +1,46 @@ +opam-version: "2.0" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "@doc"] {with-doc} +] +maintainer: ["martin@mjambon.com" "rudi.grinberg@gmail.com"] +authors: ["Martin Jambon"] +bug-reports: "https://github.com/mjambon/easy-format/issues" +homepage: "https://github.com/mjambon/easy-format" +doc: "https://mjambon.github.io/easy-format/" +license: "BSD-3-Clause" +dev-repo: "git+https://github.com/mjambon/easy-format.git" +synopsis: + "High-level and functional interface to the Format module of the OCaml standard library" +description: """ + +This module offers a high-level and functional interface to the Format module of +the OCaml standard library. It is a pretty-printing facility, i.e. it takes as +input some code represented as a tree and formats this code into the most +visually satisfying result, breaking and indenting lines of code where +appropriate. + +Input data must be first modelled and converted into a tree using 3 kinds of +nodes: + +* atoms +* lists +* labelled nodes + +Atoms represent any text that is guaranteed to be printed as-is. Lists can model +any sequence of items such as arrays of data or lists of definitions that are +labelled with something like "int main", "let x =" or "x:".""" +depends: [ + "dune" {>= "1.10"} + "ocaml" {>= "4.02.3"} +] +url { + src: + "https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz" + checksum: [ + "sha256=3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" + "sha512=e39377a2ff020ceb9ac29e8515a89d9bdbc91dfcfa871c4e3baafa56753fac2896768e5d9822a050dc1e2ade43c8967afb69391a386c0a8ecd4e1f774e236135" + ] +} diff --git a/bench.esy.lock/opam/jbuilder.transition/opam b/bench.esy.lock/opam/jbuilder.transition/opam new file mode 100644 index 0000000..9280c3f --- /dev/null +++ b/bench.esy.lock/opam/jbuilder.transition/opam @@ -0,0 +1,18 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/ocaml/dune" +bug-reports: "https://github.com/ocaml/dune/issues" +dev-repo: "git+https://github.com/ocaml/dune.git" +license: "MIT" +depends: [ + "ocaml" + "dune" {< "2.0"} +] +post-messages: [ + "Jbuilder has been renamed and the jbuilder package is now a transition \ + package. Use the dune package instead." +] +synopsis: + "This is a transition package, jbuilder is now named dune. Use the dune" +description: "package instead." diff --git a/bench.esy.lock/opam/js_of_ocaml-compiler.3.5.0/opam b/bench.esy.lock/opam/js_of_ocaml-compiler.3.5.0/opam new file mode 100644 index 0000000..6b2a5c3 --- /dev/null +++ b/bench.esy.lock/opam/js_of_ocaml-compiler.3.5.0/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "dev@ocsigen.org" +authors: "Ocsigen team" +bug-reports: "https://github.com/ocsigen/js_of_ocaml/issues" +homepage: "http://ocsigen.github.io/js_of_ocaml" +dev-repo: "git+https://github.com/ocsigen/js_of_ocaml.git" +synopsis: "Compiler from OCaml bytecode to Javascript" +description: """ +Js_of_ocaml is a compiler from OCaml bytecode to JavaScript. +It makes it possible to run pure OCaml programs in JavaScript +environment like browsers and Node.js +""" + +build: [["dune" "build" "-p" name "-j" jobs]] + +depends: [ + "ocaml" {>= "4.02.0"} + "dune" {>= "1.11.1"} + "ppx_expect" {with-test & >= "0.12.0"} + "cmdliner" + "ocaml-migrate-parsetree" + "yojson" # It's optional, but we want users to be able to use source-map without pain. +] + +depopts: [ "ocamlfind" ] + +conflicts: [ + "ocamlfind" {< "1.5.1"} + "js_of_ocaml" {< "3.0"} +] +url { + src: + "https://github.com/ocsigen/js_of_ocaml/releases/download/3.5.0/js_of_ocaml-3.5.0.tbz" + checksum: [ + "sha256=c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7" + "sha512=3aa852552abe268504f7e26841bd1c43e95dba0a5827f70b97230e900909c3fa94f59715b45ce658f0c2e298a0e89c882a994d5fcc6bcf75250cf0b94733fa88" + ] +} diff --git a/bench.esy.lock/opam/junit.2.0.1/opam b/bench.esy.lock/opam/junit.2.0.1/opam new file mode 100644 index 0000000..7713299 --- /dev/null +++ b/bench.esy.lock/opam/junit.2.0.1/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "Louis Roché " +authors: "Louis Roché " +homepage: "https://github.com/Khady/ocaml-junit" +bug-reports: "https://github.com/Khady/ocaml-junit/issues" +license: "LGPL-3.0-or-later with OCaml-LGPL-linking-exception" +dev-repo: "git+https://github.com/Khady/ocaml-junit.git" +doc: "https://khady.github.io/ocaml-junit/" +tags: ["junit" "jenkins"] +depends: [ + "dune" {>= "1.0"} + "ptime" + "tyxml" {>= "4.0.0"} + "odoc" {with-doc & >= "1.1.1"} +] +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "-j" jobs] {with-doc} +] +name: "junit" +synopsis: "JUnit XML reports generation library" +description: "JUnit XML reports generation library" +url { + src: + "https://github.com/Khady/ocaml-junit/releases/download/2.0.1/junit-2.0.1.tbz" + checksum: "md5=40224fb3d4f5e47dc5ff4605587d383b" +} diff --git a/bench.esy.lock/opam/menhir.20190924/opam b/bench.esy.lock/opam/menhir.20190924/opam new file mode 100644 index 0000000..348967a --- /dev/null +++ b/bench.esy.lock/opam/menhir.20190924/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " + "Yann Régis-Gianas " +] +homepage: "http://gitlab.inria.fr/fpottier/menhir" +dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" +bug-reports: "menhir@inria.fr" +build: [ + [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] +] +install: [ + [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] +] +depends: [ + "ocaml" {>= "4.02"} + "ocamlfind" {build} + "ocamlbuild" {build} +] +synopsis: "An LR(1) parser generator" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/repository/20190924/archive.tar.gz" + checksum: [ + "md5=677f1997fb73177d5a00fa1b8d61c3ef" + "sha512=ea8a9a6d773529cf6ac05e4c6c4532770fbb8e574c9b646efcefe90d9f24544741e3e8cfd94c8afea0447e34059a8c79c2829b46764ce3a3d6dcb3e7f75980fc" + ] +} diff --git a/bench.esy.lock/opam/merlin-extend.0.5/opam b/bench.esy.lock/opam/merlin-extend.0.5/opam new file mode 100644 index 0000000..a3ae0d3 --- /dev/null +++ b/bench.esy.lock/opam/merlin-extend.0.5/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "Frederic Bour " +authors: "Frederic Bour " +homepage: "https://github.com/let-def/merlin-extend" +bug-reports: "https://github.com/let-def/merlin-extend" +license: "MIT" +dev-repo: "git+https://github.com/let-def/merlin-extend.git" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "dune" {>= "1.0"} + "cppo" {build} + "ocaml" {>= "4.02.3"} +] +synopsis: "A protocol to provide custom frontend to Merlin" +description: """ +This protocol allows to replace the OCaml frontend of Merlin. +It extends what used to be done with the `-pp' flag to handle a few more cases.""" +doc: "https://let-def.github.io/merlin-extend" +url { + src: + "https://github.com/let-def/merlin-extend/releases/download/v0.5/merlin-extend-v0.5.tbz" + checksum: [ + "sha256=ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227" + "sha512=55c5a3637337abb8ca8db679128a81ca8ccce567bc214d55b2e6444dc0e905b74c64d629bdea2457d0fe4be5306414feefcdbc4d4761fdafd59aa107550936b6" + ] +} diff --git a/bench.esy.lock/opam/merlin.3.3.2/opam b/bench.esy.lock/opam/merlin.3.3.2/opam new file mode 100644 index 0000000..47fb8f5 --- /dev/null +++ b/bench.esy.lock/opam/merlin.3.3.2/opam @@ -0,0 +1,70 @@ +opam-version: "2.0" +name: "merlin" +maintainer: "defree@gmail.com" +authors: "The Merlin team" +homepage: "https://github.com/ocaml/merlin" +bug-reports: "https://github.com/ocaml/merlin/issues" +dev-repo: "git+https://github.com/ocaml/merlin.git" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.02.1" & < "4.09"} + "dune" {>= "1.8.0"} + "ocamlfind" {>= "1.5.2"} + "yojson" + "mdx" {with-test & >= "1.3.0"} +] +synopsis: + "Editor helper, provides completion, typing and source browsing in Vim and Emacs" +description: + "Merlin is an assistant for editing OCaml code. It aims to provide the features available in modern IDEs: error reporting, auto completion, source browsing and much more." +post-messages: [ + "merlin installed. + +Quick setup for VIM +------------------- +Append this to your .vimrc to add merlin to vim's runtime-path: + let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') + execute \"set rtp+=\" . g:opamshare . \"/merlin/vim\" + +Also run the following line in vim to index the documentation: + :execute \"helptags \" . g:opamshare . \"/merlin/vim/doc\" + +Quick setup for EMACS +------------------- +Add opam emacs directory to your load-path by appending this to your .emacs: + (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"config\" \"var\" \"share\"))))) + (when (and opam-share (file-directory-p opam-share)) + ;; Register Merlin + (add-to-list 'load-path (expand-file-name \"emacs/site-lisp\" opam-share)) + (autoload 'merlin-mode \"merlin\" nil t nil) + ;; Automatically start it in OCaml buffers + (add-hook 'tuareg-mode-hook 'merlin-mode t) + (add-hook 'caml-mode-hook 'merlin-mode t) + ;; Use opam switch to lookup ocamlmerlin binary + (setq merlin-command 'opam))) + +Take a look at https://github.com/ocaml/merlin for more information + +Quick setup with opam-user-setup +-------------------------------- + +Opam-user-setup support Merlin. + + $ opam user-setup install + +should take care of basic setup. +See https://github.com/OCamlPro/opam-user-setup +" + {success & !user-setup:installed} +] +url { + src: + "https://github.com/ocaml/merlin/releases/download/v3.3.2/merlin-v3.3.2.tbz" + checksum: [ + "sha256=1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801" + "sha512=3ae021669808a40b4449f1cbdaca40b605ea5779a6204addd8b0ee4af9f14f528d55ca43a8dd3c7d547fb8e4cb256c09a9151d5559ef24dad83b5ab05aa146a2" + ] +} diff --git a/bench.esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam b/bench.esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam new file mode 100644 index 0000000..66d40ba --- /dev/null +++ b/bench.esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "frederic.bour@lakaban.net" +authors: [ + "Frédéric Bour " + "Jérémie Dimino " +] +license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" +bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" +doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" +tags: [ "syntax" "org:ocamllabs" ] +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "result" + "ppx_derivers" + "dune" {>= "1.9.0"} + "ocaml" {>= "4.02.3"} +] +synopsis: "Convert OCaml parsetrees between different versions" +description: """ +Convert OCaml parsetrees between different versions + +This library converts parsetrees, outcometree and ast mappers between +different OCaml versions. High-level functions help making PPX +rewriters independent of a compiler version. +""" +url { + src: + "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.4.0/ocaml-migrate-parsetree-v1.4.0.tbz" + checksum: [ + "sha256=231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8" + "sha512=61ee91d2d146cc2d2ff2d5dc4ef5dea4dc4d3c8dbd8b4c9586d64b6ad7302327ab35547aa0a5b0103c3f07b66b13d416a1bee6d4d117293cd3cabe44113ec6d4" + ] +} diff --git a/bench.esy.lock/opam/ocamlbuild.0.14.0/opam b/bench.esy.lock/opam/ocamlbuild.0.14.0/opam new file mode 100644 index 0000000..8deabee --- /dev/null +++ b/bench.esy.lock/opam/ocamlbuild.0.14.0/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Gabriel Scherer " +authors: ["Nicolas Pouillard" "Berke Durak"] +homepage: "https://github.com/ocaml/ocamlbuild/" +bug-reports: "https://github.com/ocaml/ocamlbuild/issues" +license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" +doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" +dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" +build: [ + [ + make + "-f" + "configure.make" + "all" + "OCAMLBUILD_PREFIX=%{prefix}%" + "OCAMLBUILD_BINDIR=%{bin}%" + "OCAMLBUILD_LIBDIR=%{lib}%" + "OCAMLBUILD_MANDIR=%{man}%" + "OCAML_NATIVE=%{ocaml:native}%" + "OCAML_NATIVE_TOOLS=%{ocaml:native}%" + ] + [make "check-if-preinstalled" "all" "opam-install"] +] +conflicts: [ + "base-ocamlbuild" + "ocamlfind" {< "1.6.2"} +] +synopsis: + "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." +depends: [ + "ocaml" {>= "4.03"} +] +url { + src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" + checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" +} diff --git a/bench.esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub b/bench.esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub new file mode 100644 index 0000000..e5ad990 --- /dev/null +++ b/bench.esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub @@ -0,0 +1,4 @@ +#!/bin/sh + +BINDIR=$(dirname "$(command -v ocamlc)") +"$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" diff --git a/bench.esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install b/bench.esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install new file mode 100644 index 0000000..295c625 --- /dev/null +++ b/bench.esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install @@ -0,0 +1,6 @@ +bin: [ + "src/findlib/ocamlfind" {"ocamlfind"} + "?src/findlib/ocamlfind_opt" {"ocamlfind"} + "?tools/safe_camlp4" +] +toplevel: ["src/findlib/topfind"] diff --git a/bench.esy.lock/opam/ocamlfind.1.8.1/opam b/bench.esy.lock/opam/ocamlfind.1.8.1/opam new file mode 100644 index 0000000..d757d66 --- /dev/null +++ b/bench.esy.lock/opam/ocamlfind.1.8.1/opam @@ -0,0 +1,50 @@ +opam-version: "2.0" +synopsis: "A library manager for OCaml" +maintainer: "Thomas Gazagnaire " +authors: "Gerd Stolpmann " +homepage: "http://projects.camlcity.org/projects/findlib.html" +bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" +dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" +description: """ +Findlib is a library manager for OCaml. It provides a convention how +to store libraries, and a file format ("META") to describe the +properties of libraries. There is also a tool (ocamlfind) for +interpreting the META files, so that it is very easy to use libraries +in programs and scripts. +""" +build: [ + [ + "./configure" + "-bindir" + bin + "-sitelib" + lib + "-mandir" + man + "-config" + "%{lib}%/findlib.conf" + "-no-custom" + "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} + "-no-topfind" {ocaml:preinstalled} + ] + [make "all"] + [make "opt"] {ocaml:native} +] +install: [ + [make "install"] + ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} +] +depends: [ + "ocaml" {>= "4.00.0"} + "conf-m4" {build} +] +extra-files: [ + ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] + ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] +] +url { + src: "http://download.camlcity.org/download/findlib-1.8.1.tar.gz" + checksum: "md5=18ca650982c15536616dea0e422cbd8c" + mirrors: "http://download2.camlcity.org/download/findlib-1.8.1.tar.gz" +} +depopts: ["graphics"] diff --git a/bench.esy.lock/opam/ppx_derivers.1.2.1/opam b/bench.esy.lock/opam/ppx_derivers.1.2.1/opam new file mode 100644 index 0000000..3d10814 --- /dev/null +++ b/bench.esy.lock/opam/ppx_derivers.1.2.1/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "jeremie@dimino.org" +authors: ["Jérémie Dimino"] +license: "BSD-3-Clause" +homepage: "https://github.com/ocaml-ppx/ppx_derivers" +bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" +dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" + "dune" +] +synopsis: "Shared [@@deriving] plugin registry" +description: """ +Ppx_derivers is a tiny package whose sole purpose is to allow +ppx_deriving and ppx_type_conv to inter-operate gracefully when linked +as part of the same ocaml-migrate-parsetree driver.""" +url { + src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz" + checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" +} diff --git a/bench.esy.lock/opam/printbox.0.2/opam b/bench.esy.lock/opam/printbox.0.2/opam new file mode 100644 index 0000000..46f7d4a --- /dev/null +++ b/bench.esy.lock/opam/printbox.0.2/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +synopsis: + "Allows to print nested boxes, lists, arrays, tables in several formats" +maintainer: "simon.cruanes.2007@m4x.org" +authors: ["Simon Cruanes" "Guillaume Bury"] +tags: ["print" "box" "table" "tree"] +homepage: "https://github.com/c-cube/printbox/" +bug-reports: "https://github.com/c-cube/printbox/issues/" +depends: [ + "dune" + "base-bytes" + "odoc" {with-doc} + "ocaml" {>= "4.03"} + "mdx" {with-test} +] +depopts: ["tyxml"] +build: [ + ["dune" "build" "@install" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "@doc" "-p" name "-j" jobs] {with-doc} +] +dev-repo: "git+https://github.com/c-cube/printbox.git" +url { + src: "https://github.com/c-cube/printbox/archive/0.2.tar.gz" + checksum: [ + "md5=d84584a8ebdf3faa7b04704f0f75813c" + "sha512=fa49c037c7b1aad720a9a4e74fa40838bade84572afb7bcb6dae170c2d4cbdc9c217868ee971049da18dda0308357bbbc8a934436d32f41418eceba612d56ab3" + ] +} \ No newline at end of file diff --git a/bench.esy.lock/opam/ptime.0.8.5/opam b/bench.esy.lock/opam/ptime.0.8.5/opam new file mode 100644 index 0000000..ed7c8d9 --- /dev/null +++ b/bench.esy.lock/opam/ptime.0.8.5/opam @@ -0,0 +1,49 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["The ptime programmers"] +homepage: "https://erratique.ch/software/ptime" +doc: "https://erratique.ch/software/ptime/doc" +dev-repo: "git+http://erratique.ch/repos/ptime.git" +bug-reports: "https://github.com/dbuenzli/ptime/issues" +tags: [ "time" "posix" "system" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.01.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build} + "result" +] +depopts: [ "js_of_ocaml" ] +conflicts: [ "js_of_ocaml" { < "3.3.0" } ] +build:[[ + "ocaml" "pkg/pkg.ml" "build" + "--pinned" "%{pinned}%" + "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" ]] + +synopsis: """POSIX time for OCaml""" +description: """\ + +Ptime has platform independent POSIX time support in pure OCaml. It +provides a type to represent a well-defined range of POSIX timestamps +with picosecond precision, conversion with date-time values, +conversion with [RFC 3339 timestamps][rfc3339] and pretty printing to a +human-readable, locale-independent representation. + +The additional Ptime_clock library provides access to a system POSIX +clock and to the system's current time zone offset. + +Ptime is not a calendar library. + +Ptime depends on the `result` compatibility package. Ptime_clock +depends on your system library. Ptime_clock's optional JavaScript +support depends on [js_of_ocaml][jsoo]. Ptime and its libraries are +distributed under the ISC license. + +[rfc3339]: http://tools.ietf.org/html/rfc3339 +[jsoo]: http://ocsigen.org/js_of_ocaml/ +""" +url { +archive: "https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz" +checksum: "4d48055d623ecf2db792439b3e96a520" +} diff --git a/bench.esy.lock/opam/re.1.9.0/opam b/bench.esy.lock/opam/re.1.9.0/opam new file mode 100644 index 0000000..f798754 --- /dev/null +++ b/bench.esy.lock/opam/re.1.9.0/opam @@ -0,0 +1,42 @@ +opam-version: "2.0" + +maintainer: "rudi.grinberg@gmail.com" +authors: [ + "Jerome Vouillon" + "Thomas Gazagnaire" + "Anil Madhavapeddy" + "Rudi Grinberg" + "Gabriel Radanne" +] +license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml/ocaml-re" +bug-reports: "https://github.com/ocaml/ocaml-re/issues" +dev-repo: "git+https://github.com/ocaml/ocaml-re.git" + +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.02"} + "dune" + "ounit" {with-test} + "seq" +] + +synopsis: "RE is a regular expression library for OCaml" +description: """ +Pure OCaml regular expressions with: +* Perl-style regular expressions (module Re.Perl) +* Posix extended regular expressions (module Re.Posix) +* Emacs-style regular expressions (module Re.Emacs) +* Shell-style file globbing (module Re.Glob) +* Compatibility layer for OCaml's built-in Str module (module Re.Str) +""" +url { + src: + "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" + checksum: "md5=bddaed4f386a22cace7850c9c7dac296" +} diff --git a/bench.esy.lock/opam/result.1.4/opam b/bench.esy.lock/opam/result.1.4/opam new file mode 100644 index 0000000..b44aeea --- /dev/null +++ b/bench.esy.lock/opam/result.1.4/opam @@ -0,0 +1,22 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/result" +dev-repo: "git+https://github.com/janestreet/result.git" +bug-reports: "https://github.com/janestreet/result/issues" +license: "BSD-3-Clause" +build: [["dune" "build" "-p" name "-j" jobs]] +depends: [ + "ocaml" + "dune" {>= "1.0"} +] +synopsis: "Compatibility Result module" +description: """ +Projects that want to use the new result type defined in OCaml >= 4.03 +while staying compatible with older version of OCaml should use the +Result module defined in this library.""" +url { + src: + "https://github.com/janestreet/result/archive/1.4.tar.gz" + checksum: "md5=d3162dbc501a2af65c8c71e0866541da" +} diff --git a/bench.esy.lock/opam/seq.base/files/META.seq b/bench.esy.lock/opam/seq.base/files/META.seq new file mode 100644 index 0000000..06b95ef --- /dev/null +++ b/bench.esy.lock/opam/seq.base/files/META.seq @@ -0,0 +1,4 @@ +name="seq" +version="[distributed with OCaml 4.07 or above]" +description="dummy backward-compatibility package for iterators" +requires="" diff --git a/bench.esy.lock/opam/seq.base/files/seq.install b/bench.esy.lock/opam/seq.base/files/seq.install new file mode 100644 index 0000000..c4d7020 --- /dev/null +++ b/bench.esy.lock/opam/seq.base/files/seq.install @@ -0,0 +1,3 @@ +lib:[ + "META.seq" {"META"} +] diff --git a/bench.esy.lock/opam/seq.base/opam b/bench.esy.lock/opam/seq.base/opam new file mode 100644 index 0000000..b33d8c7 --- /dev/null +++ b/bench.esy.lock/opam/seq.base/opam @@ -0,0 +1,15 @@ +opam-version: "2.0" +maintainer: " " +authors: " " +homepage: " " +depends: [ + "ocaml" {>= "4.07.0"} +] +dev-repo: "git+https://github.com/ocaml/ocaml.git" +bug-reports: "https://caml.inria.fr/mantis/main_page.php" +synopsis: + "Compatibility package for OCaml's standard iterator type starting from 4.07." +extra-files: [ + ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] + ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] +] diff --git a/bench.esy.lock/opam/topkg.1.0.1/opam b/bench.esy.lock/opam/topkg.1.0.1/opam new file mode 100644 index 0000000..77ae1f4 --- /dev/null +++ b/bench.esy.lock/opam/topkg.1.0.1/opam @@ -0,0 +1,48 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/topkg" +doc: "http://erratique.ch/software/topkg/doc" +license: "ISC" +dev-repo: "git+http://erratique.ch/repos/topkg.git" +bug-reports: "https://github.com/dbuenzli/topkg/issues" +tags: ["packaging" "ocamlbuild" "org:erratique"] +depends: [ + "ocaml" {>= "4.03.0"} + "ocamlfind" {build & >= "1.6.1"} + "ocamlbuild" ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--pkg-name" name + "--dev-pkg" "%{pinned}%" ]] +synopsis: """The transitory OCaml software packager""" +description: """\ + +Topkg is a packager for distributing OCaml software. It provides an +API to describe the files a package installs in a given build +configuration and to specify information about the package's +distribution, creation and publication procedures. + +The optional topkg-care package provides the `topkg` command line tool +which helps with various aspects of a package's life cycle: creating +and linting a distribution, releasing it on the WWW, publish its +documentation, add it to the OCaml opam repository, etc. + +Topkg is distributed under the ISC license and has **no** +dependencies. This is what your packages will need as a *build* +dependency. + +Topkg-care is distributed under the ISC license it depends on +[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], +[webbrowser][webbrowser] and `opam-format`. + +[fmt]: http://erratique.ch/software/fmt +[logs]: http://erratique.ch/software/logs +[bos]: http://erratique.ch/software/bos +[cmdliner]: http://erratique.ch/software/cmdliner +[webbrowser]: http://erratique.ch/software/webbrowser +""" +url { +archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz" +checksum: "16b90e066d8972a5ef59655e7c28b3e9" +} diff --git a/bench.esy.lock/opam/tyxml.4.3.0/opam b/bench.esy.lock/opam/tyxml.4.3.0/opam new file mode 100644 index 0000000..93872f8 --- /dev/null +++ b/bench.esy.lock/opam/tyxml.4.3.0/opam @@ -0,0 +1,45 @@ +opam-version: "2.0" +maintainer: "dev@ocsigen.org" +homepage: "https://github.com/ocsigen/tyxml/" +bug-reports: "https://github.com/ocsigen/tyxml/issues" +doc: "https://ocsigen.org/tyxml/manual/" +dev-repo: "git+https://github.com/ocsigen/tyxml.git" +license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" + +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.02"} + "re" {>= "1.5.0"} + ("ocaml" {>= "4.07"} | "re" {>= "1.8.0"}) + "dune" + "alcotest" {with-test} + "seq" + "uutf" {>= "1.0.0"} +] + +synopsis:"TyXML is a library for building correct HTML and SVG documents" +description:""" +TyXML provides a set of convenient combinators that uses the OCaml +type system to ensure the validity of the generated documents. TyXML +can be used with any representation of HTML and SVG: the textual one, +provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) +virtual DOM (`virtual-dom`) and reactive or replicated trees +(`eliom`). You can also create your own representation and use it to +instantiate a new set of combinators. + +```ocaml +open Tyxml +let to_ocaml = Html.(a ~a:[a_href "ocaml.org"] [txt "OCaml!"]) +``` +""" +authors: "The ocsigen team" +url { + src: + "https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz" + checksum: "md5=fd834a567f813bf447cab5f4c3a723e2" +} diff --git a/bench.esy.lock/opam/uchar.0.0.2/opam b/bench.esy.lock/opam/uchar.0.0.2/opam new file mode 100644 index 0000000..428d7aa --- /dev/null +++ b/bench.esy.lock/opam/uchar.0.0.2/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://ocaml.org" +doc: "https://ocaml.github.io/uchar/" +dev-repo: "git+https://github.com/ocaml/uchar.git" +bug-reports: "https://github.com/ocaml/uchar/issues" +tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] +license: "typeof OCaml system" +depends: [ + "ocaml" {>= "3.12.0"} + "ocamlbuild" {build} +] +build: [ + ["ocaml" "pkg/git.ml"] + [ + "ocaml" + "pkg/build.ml" + "native=%{ocaml:native}%" + "native-dynlink=%{ocaml:native-dynlink}%" + ] +] +synopsis: "Compatibility library for OCaml's Uchar module" +description: """ +The `uchar` package provides a compatibility library for the +[`Uchar`][1] module introduced in OCaml 4.03. + +The `uchar` package is distributed under the license of the OCaml +compiler. See [LICENSE](LICENSE) for details. + +[1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" +url { + src: + "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" + checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" +} diff --git a/bench.esy.lock/opam/uutf.1.0.2/opam b/bench.esy.lock/opam/uutf.1.0.2/opam new file mode 100644 index 0000000..3a9f567 --- /dev/null +++ b/bench.esy.lock/opam/uutf.1.0.2/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/uutf" +doc: "http://erratique.ch/software/uutf/doc/Uutf" +dev-repo: "git+http://erratique.ch/repos/uutf.git" +bug-reports: "https://github.com/dbuenzli/uutf/issues" +tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.01.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build} + "uchar" +] +depopts: ["cmdliner"] +conflicts: ["cmdliner" { < "0.9.6"} ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--pinned" "%{pinned}%" + "--with-cmdliner" "%{cmdliner:installed}%" ]] +synopsis: """Non-blocking streaming Unicode codec for OCaml""" +description: """\ + +Uutf is a non-blocking streaming codec to decode and encode the UTF-8, +UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently +work character by character without blocking on IO. Decoders perform +character position tracking and support newline normalization. + +Functions are also provided to fold over the characters of UTF encoded +OCaml string values and to directly encode characters in OCaml +Buffer.t values. + +Uutf has no dependency and is distributed under the ISC license. +""" +url { +archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" +checksum: "a7c542405a39630c689a82bd7ef2292c" +} diff --git a/bench.esy.lock/opam/yojson.1.7.0/opam b/bench.esy.lock/opam/yojson.1.7.0/opam new file mode 100644 index 0000000..ffef068 --- /dev/null +++ b/bench.esy.lock/opam/yojson.1.7.0/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] +homepage: "https://github.com/ocaml-community/yojson" +bug-reports: "https://github.com/ocaml-community/yojson/issues" +dev-repo: "git+https://github.com/ocaml-community/yojson.git" +doc: "https://ocaml-community.github.io/yojson/" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +run-test: [["dune" "runtest" "-p" name "-j" jobs]] +depends: [ + "ocaml" {>= "4.02.3"} + "dune" + "cppo" {build} + "easy-format" + "biniou" {>= "1.2.0"} + "alcotest" {with-test & >= "0.8.5"} +] +synopsis: + "Yojson is an optimized parsing and printing library for the JSON format" +description: """ +Yojson is an optimized parsing and printing library for the JSON format. + +It addresses a few shortcomings of json-wheel including 2x speedup, +polymorphic variants and optional syntax for tuples and variants. + +ydump is a pretty-printing command-line program provided with the +yojson package. + +The program atdgen can be used to derive OCaml-JSON serializers and +deserializers from type definitions.""" +url { + src: + "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" + checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" +} diff --git a/bench.esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override/package.json b/bench.esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override/package.json new file mode 100644 index 0000000..064c7e3 --- /dev/null +++ b/bench.esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override/package.json @@ -0,0 +1,14 @@ +{ + "build": [ + [ + "ocaml", + "bootstrap.ml" + ], + [ + "./boot.exe", + "--release", + "-j", + "4" + ] + ] +} diff --git a/bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch b/bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch new file mode 100644 index 0000000..4d5bea0 --- /dev/null +++ b/bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch @@ -0,0 +1,463 @@ +--- ./Makefile ++++ ./Makefile +@@ -213,7 +213,7 @@ + rm -f man/ocamlbuild.1 + + man/options_man.byte: src/ocamlbuild_pack.cmo +- $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte ++ $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte + + clean:: + rm -f man/options_man.cm* +--- ./src/command.ml ++++ ./src/command.ml +@@ -148,9 +148,10 @@ + let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in + let b = Buffer.create 256 in + (* The best way to prevent bash from switching to its windows-style +- * quote-handling is to prepend an empty string before the command name. *) ++ * quote-handling is to prepend an empty string before the command name. ++ * space seems to work, too - and the ouput is nicer *) + if Sys.os_type = "Win32" then +- Buffer.add_string b "''"; ++ Buffer.add_char b ' '; + let first = ref true in + let put_space () = + if !first then +@@ -260,7 +261,7 @@ + + let execute_many ?(quiet=false) ?(pretend=false) cmds = + add_parallel_stat (List.length cmds); +- let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in ++ let degraded = !*My_unix.is_degraded in + let jobs = !jobs in + if jobs < 0 then invalid_arg "jobs < 0"; + let max_jobs = if jobs = 0 then None else Some jobs in +--- ./src/findlib.ml ++++ ./src/findlib.ml +@@ -66,9 +66,6 @@ + (fun command -> lexer & Lexing.from_string & run_and_read command) + command + +-let run_and_read command = +- Printf.ksprintf run_and_read command +- + let rec query name = + try + Hashtbl.find packages name +@@ -135,7 +132,8 @@ + with Not_found -> s + + let list () = +- List.map before_space (split_nl & run_and_read "%s list" ocamlfind) ++ let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in ++ List.map before_space (split_nl & run_and_read cmd) + + (* The closure algorithm is easy because the dependencies are already closed + and sorted for each package. We only have to make the union. We could also +--- ./src/main.ml ++++ ./src/main.ml +@@ -162,6 +162,9 @@ + Tags.mem "traverse" tags + || List.exists (Pathname.is_prefix path_name) !Options.include_dirs + || List.exists (Pathname.is_prefix path_name) target_dirs) ++ && ((* beware: !Options.build_dir is an absolute directory *) ++ Pathname.normalize !Options.build_dir ++ <> Pathname.normalize (Pathname.pwd/path_name)) + end + end + end +--- ./src/my_std.ml ++++ ./src/my_std.ml +@@ -271,13 +271,107 @@ + try Array.iter (fun x -> if x = basename then raise Exit) a; false + with Exit -> true + ++let command_plain = function ++| [| |] -> 0 ++| margv -> ++ let rec waitpid a b = ++ match Unix.waitpid a b with ++ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b ++ | x -> x ++ in ++ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in ++ let pid', process_status = waitpid [] pid in ++ assert (pid = pid'); ++ match process_status with ++ | Unix.WEXITED n -> n ++ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) ++ | Unix.WSTOPPED _ -> 127 ++ ++(* can't use Lexers because of circular dependency *) ++let split_path_win str = ++ let rec aux pos = ++ try ++ let i = String.index_from str pos ';' in ++ let len = i - pos in ++ if len = 0 then ++ aux (succ i) ++ else ++ String.sub str pos (i - pos) :: aux (succ i) ++ with Not_found | Invalid_argument _ -> ++ let len = String.length str - pos in ++ if len = 0 then [] else [String.sub str pos len] ++ in ++ aux 0 ++ ++let windows_shell = lazy begin ++ let rec iter = function ++ | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] ++ | hd::tl -> ++ let dash = Filename.concat hd "dash.exe" in ++ if Sys.file_exists dash then [|dash|] else ++ let bash = Filename.concat hd "bash.exe" in ++ if Sys.file_exists bash = false then iter tl else ++ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) ++ let sh = Filename.concat hd "sh.exe" in ++ if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] ++ in ++ split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter ++end ++ ++let prep_windows_cmd cmd = ++ (* workaround known ocaml bug, remove later *) ++ if String.contains cmd '\t' && String.contains cmd ' ' = false then ++ " " ^ cmd ++ else ++ cmd ++ ++let run_with_shell = function ++| "" -> 0 ++| cmd -> ++ let cmd = prep_windows_cmd cmd in ++ let shell = Lazy.force windows_shell in ++ let qlen = Filename.quote cmd |> String.length in ++ (* old versions of dash had problems with bs *) ++ try ++ if qlen < 7_900 then ++ command_plain (Array.append shell [| "-ec" ; cmd |]) ++ else begin ++ (* it can still work, if the called command is a cygwin tool *) ++ let ch_closed = ref false in ++ let file_deleted = ref false in ++ let fln,ch = ++ Filename.open_temp_file ++ ~mode:[Open_binary] ++ "ocamlbuildtmp" ++ ".sh" ++ in ++ try ++ let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in ++ output_string ch cmd; ++ ch_closed:= true; ++ close_out ch; ++ let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in ++ file_deleted:= true; ++ Sys.remove fln; ++ ret ++ with ++ | x -> ++ if !ch_closed = false then ++ close_out_noerr ch; ++ if !file_deleted = false then ++ (try Sys.remove fln with _ -> ()); ++ raise x ++ end ++ with ++ | (Unix.Unix_error _) as x -> ++ (* Sys.command doesn't raise an exception, so run_with_shell also won't ++ raise *) ++ Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; ++ 1 ++ + let sys_command = +- match Sys.os_type with +- | "Win32" -> fun cmd -> +- if cmd = "" then 0 else +- let cmd = "bash --norc -c " ^ Filename.quote cmd in +- Sys.command cmd +- | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd ++ if Sys.win32 then run_with_shell ++ else fun cmd -> if cmd = "" then 0 else Sys.command cmd + + (* FIXME warning fix and use Filename.concat *) + let filename_concat x y = +--- ./src/my_std.mli ++++ ./src/my_std.mli +@@ -69,3 +69,6 @@ + + val split_ocaml_version : (int * int * int * string) option + (** (major, minor, patchlevel, rest) *) ++ ++val windows_shell : string array Lazy.t ++val prep_windows_cmd : string -> string +--- ./src/ocamlbuild_executor.ml ++++ ./src/ocamlbuild_executor.ml +@@ -34,6 +34,8 @@ + job_stdin : out_channel; + job_stderr : in_channel; + job_buffer : Buffer.t; ++ job_pid : int; ++ job_tmp_file: string option; + mutable job_dying : bool; + };; + +@@ -76,6 +78,61 @@ + in + loop 0 + ;; ++ ++let open_process_full_win cmd env = ++ let (in_read, in_write) = Unix.pipe () in ++ let (out_read, out_write) = Unix.pipe () in ++ let (err_read, err_write) = Unix.pipe () in ++ Unix.set_close_on_exec in_read; ++ Unix.set_close_on_exec out_write; ++ Unix.set_close_on_exec err_read; ++ let inchan = Unix.in_channel_of_descr in_read in ++ let outchan = Unix.out_channel_of_descr out_write in ++ let errchan = Unix.in_channel_of_descr err_read in ++ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in ++ let test_cmd = ++ String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ ++ "-ec " ^ ++ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in ++ let argv,tmp_file = ++ if String.length test_cmd < 7_900 then ++ Array.append ++ shell ++ [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None ++ else ++ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in ++ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); ++ close_out ch; ++ let fln' = String.map (function '\\' -> '/' | c -> c) fln in ++ Array.append ++ shell ++ [| "-c" ; fln' |], Some fln in ++ let pid = ++ Unix.create_process_env argv.(0) argv env out_read in_write err_write in ++ Unix.close out_read; ++ Unix.close in_write; ++ Unix.close err_write; ++ (pid, inchan, outchan, errchan,tmp_file) ++ ++let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = ++ let delete tmp_file = ++ match tmp_file with ++ | None -> () ++ | Some x -> try Sys.remove x with Sys_error _ -> () in ++ let tmp_file_deleted = ref false in ++ try ++ close_in inchan; ++ close_out outchan; ++ close_in errchan; ++ let res = snd(Unix.waitpid [] pid) in ++ tmp_file_deleted := true; ++ delete tmp_file; ++ res ++ with ++ | x when tmp_file <> None && !tmp_file_deleted = false -> ++ delete tmp_file; ++ raise x ++ + (* ***) + (*** execute *) + (* XXX: Add test for non reentrancy *) +@@ -130,10 +187,16 @@ + (*** add_job *) + let add_job cmd rest result id = + (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) +- let (stdout', stdin', stderr') = open_process_full cmd env in ++ let (pid,stdout', stdin', stderr', tmp_file) = ++ if Sys.win32 then open_process_full_win cmd env else ++ let a,b,c = open_process_full cmd env in ++ -1,a,b,c,None ++ in + incr jobs_active; +- set_nonblock (doi stdout'); +- set_nonblock (doi stderr'); ++ if not Sys.win32 then ( ++ set_nonblock (doi stdout'); ++ set_nonblock (doi stderr'); ++ ); + let job = + { job_id = id; + job_command = cmd; +@@ -143,7 +206,9 @@ + job_stdin = stdin'; + job_stderr = stderr'; + job_buffer = Buffer.create 1024; +- job_dying = false } ++ job_dying = false; ++ job_tmp_file = tmp_file; ++ job_pid = pid } + in + outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); + jobs := JS.add job !jobs; +@@ -199,6 +264,7 @@ + try + read fd u 0 (Bytes.length u) + with ++ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 + | Unix.Unix_error(e,_,_) -> + let msg = error_message e in + display (fun oc -> fp oc +@@ -241,14 +307,19 @@ + decr jobs_active; + + (* PR#5371: we would get EAGAIN below otherwise *) +- clear_nonblock (doi job.job_stdout); +- clear_nonblock (doi job.job_stderr); +- ++ if not Sys.win32 then ( ++ clear_nonblock (doi job.job_stdout); ++ clear_nonblock (doi job.job_stderr); ++ ); + do_read ~loop:true (doi job.job_stdout) job; + do_read ~loop:true (doi job.job_stderr) job; + outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); + jobs := JS.remove job !jobs; +- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in ++ let status = ++ if Sys.win32 then ++ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) ++ else ++ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in + + let shown = ref false in + +--- ./src/ocamlbuild_unix_plugin.ml ++++ ./src/ocamlbuild_unix_plugin.ml +@@ -48,12 +48,22 @@ + end + + let run_and_open s kont = ++ let s_orig = s in ++ let s = ++ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and ++ sys_command uses bash. *) ++ if Sys.win32 = false then s else ++ let l = match Lazy.force My_std.windows_shell |> Array.to_list with ++ | hd::tl -> (Filename.quote hd)::tl ++ | _ -> assert false in ++ "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" ++ in + let ic = Unix.open_process_in s in + let close () = + match Unix.close_process_in ic with + | Unix.WEXITED 0 -> () + | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> +- failwith (Printf.sprintf "Error while running: %s" s) in ++ failwith (Printf.sprintf "Error while running: %s" s_orig) in + let res = try + kont ic + with e -> (close (); raise e) +--- ./src/options.ml ++++ ./src/options.ml +@@ -174,11 +174,24 @@ + build_dir := Filename.concat (Sys.getcwd ()) s + else + build_dir := s ++ ++let slashify = ++ if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p ++ else fun p ->p ++ ++let sb () = ++ match Sys.os_type with ++ | "Win32" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ | _ -> () ++ ++ + let spec = ref ( + let print_version () = ++ sb (); + Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK + in +- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in ++ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in + Arg.align + [ + "-version", Unit print_version , " Display the version"; +@@ -257,8 +270,8 @@ + "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; + "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; + "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; +- "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; +- "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; ++ "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; ++ "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; + "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; + "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ + used when building myocamlbuild.ml (only)"; +--- ./src/pathname.ml ++++ ./src/pathname.ml +@@ -84,6 +84,26 @@ + | x :: xs -> x :: normalize_list xs + + let normalize x = ++ let x = ++ if Sys.win32 = false then ++ x ++ else ++ let len = String.length x in ++ let b = Bytes.create len in ++ for i = 0 to pred len do ++ match x.[i] with ++ | '\\' -> Bytes.set b i '/' ++ | c -> Bytes.set b i c ++ done; ++ if len > 1 then ( ++ let c1 = Bytes.get b 0 in ++ let c2 = Bytes.get b 1 in ++ if c2 = ':' && c1 >= 'a' && c1 <= 'z' && ++ ( len = 2 || Bytes.get b 2 = '/') then ++ Bytes.set b 0 (Char.uppercase_ascii c1) ++ ); ++ Bytes.unsafe_to_string b ++ in + if Glob.eval not_normal_form_re x then + let root, paths = split x in + join root (normalize_list paths) +--- ./src/shell.ml ++++ ./src/shell.ml +@@ -24,12 +24,26 @@ + | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) + | _ -> false in + loop 0 ++ ++let generic_quote quotequote s = ++ let l = String.length s in ++ let b = Buffer.create (l + 20) in ++ Buffer.add_char b '\''; ++ for i = 0 to l - 1 do ++ if s.[i] = '\'' ++ then Buffer.add_string b quotequote ++ else Buffer.add_char b s.[i] ++ done; ++ Buffer.add_char b '\''; ++ Buffer.contents b ++let unix_quote = generic_quote "'\\''" ++ + let quote_filename_if_needed s = + if is_simple_filename s then s + (* We should probably be using [Filename.unix_quote] except that function + * isn't exported. Users on Windows will have to live with not being able to + * install OCaml into c:\o'caml. Too bad. *) +- else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s ++ else if Sys.os_type = "Win32" then unix_quote s + else Filename.quote s + let chdir dir = + reset_filesys_cache (); +@@ -37,7 +51,7 @@ + let run args target = + reset_readdir_cache (); + let cmd = String.concat " " (List.map quote_filename_if_needed args) in +- if !*My_unix.is_degraded || Sys.os_type = "Win32" then ++ if !*My_unix.is_degraded then + begin + Log.event cmd target Tags.empty; + let st = sys_command cmd in diff --git a/bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json b/bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json new file mode 100644 index 0000000..b24be7b --- /dev/null +++ b/bench.esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json @@ -0,0 +1,27 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" + ], + [ + "make", + "-f", + "configure.make", + "all", + "OCAMLBUILD_PREFIX=#{self.install}", + "OCAMLBUILD_BINDIR=#{self.bin}", + "OCAMLBUILD_LIBDIR=#{self.lib}", + "OCAMLBUILD_MANDIR=#{self.man}", + "OCAMLBUILD_NATIVE=true", + "OCAMLBUILD_NATIVE_TOOLS=true" + ], + [ + "make", + "check-if-preinstalled", + "all", + "#{os == 'windows' ? 'install' : 'opam-install'}" + ] + ] +} diff --git a/bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch b/bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch new file mode 100644 index 0000000..3e3ee5a --- /dev/null +++ b/bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch @@ -0,0 +1,471 @@ +--- ./Makefile ++++ ./Makefile +@@ -57,16 +57,16 @@ + cat findlib.conf.in | \ + $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf + if ./tools/cmd_from_same_dir ocamlc; then \ +- echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ ++ echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamlopt; then \ +- echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ ++ echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldep; then \ +- echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ ++ echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldoc; then \ +- echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ ++ echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + + .PHONY: install-doc +--- ./src/findlib/findlib_config.mlp ++++ ./src/findlib/findlib_config.mlp +@@ -24,3 +24,5 @@ + | "MacOS" -> "" (* don't know *) + | _ -> failwith "Unknown Sys.os_type" + ;; ++ ++let exec_suffix = "@EXEC_SUFFIX@";; +--- ./src/findlib/findlib.ml ++++ ./src/findlib/findlib.ml +@@ -28,15 +28,20 @@ + let conf_ldconf = ref "";; + let conf_ignore_dups_in = ref ([] : string list);; + +-let ocamlc_default = "ocamlc";; +-let ocamlopt_default = "ocamlopt";; +-let ocamlcp_default = "ocamlcp";; +-let ocamloptp_default = "ocamloptp";; +-let ocamlmklib_default = "ocamlmklib";; +-let ocamlmktop_default = "ocamlmktop";; +-let ocamldep_default = "ocamldep";; +-let ocamlbrowser_default = "ocamlbrowser";; +-let ocamldoc_default = "ocamldoc";; ++let add_exec str = ++ match Findlib_config.exec_suffix with ++ | "" -> str ++ | a -> str ^ a ;; ++let ocamlc_default = add_exec "ocamlc";; ++let ocamlopt_default = add_exec "ocamlopt";; ++let ocamlcp_default = add_exec "ocamlcp";; ++let ocamloptp_default = add_exec "ocamloptp";; ++let ocamlmklib_default = add_exec "ocamlmklib";; ++let ocamlmktop_default = add_exec "ocamlmktop";; ++let ocamldep_default = add_exec "ocamldep";; ++let ocamlbrowser_default = add_exec "ocamlbrowser";; ++let ocamldoc_default = add_exec "ocamldoc";; ++ + + + let init_manually +--- ./src/findlib/fl_package_base.ml ++++ ./src/findlib/fl_package_base.ml +@@ -133,7 +133,15 @@ + List.find (fun def -> def.def_var = "exists_if") p.package_defs in + let files = Fl_split.in_words def.def_value in + List.exists +- (fun file -> Sys.file_exists (Filename.concat d' file)) ++ (fun file -> ++ let fln = Filename.concat d' file in ++ let e = Sys.file_exists fln in ++ (* necessary for ppx executables *) ++ if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then ++ e ++ else ++ Sys.file_exists (fln ^ ".exe") ++ ) + files + with Not_found -> true in + +--- ./src/findlib/fl_split.ml ++++ ./src/findlib/fl_split.ml +@@ -126,10 +126,17 @@ + | '/' | '\\' -> true + | _ -> false in + let norm_dir_win() = +- if l >= 1 && s.[0] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[0]; +- if l >= 2 && s.[1] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[1]; ++ if l >= 1 then ( ++ if s.[0] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[0] ; ++ if l >= 2 then ++ if s.[1] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[1]; ++ ); + for k = 2 to l - 1 do + let c = s.[k] in + if is_slash c then ( +--- ./src/findlib/frontend.ml ++++ ./src/findlib/frontend.ml +@@ -31,10 +31,18 @@ + else + Sys_error (arg ^ ": " ^ Unix.error_message code) + ++let is_win = Sys.os_type = "Win32" ++ ++let () = ++ match Findlib_config.system with ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ (try set_binary_mode_out stderr true with _ -> ()); ++ | _ -> () + + let slashify s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> + let b = Buffer.create 80 in + String.iter + (function +@@ -49,7 +57,7 @@ + + let out_path ?(prefix="") s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> + let u = slashify s in + prefix ^ + (if String.contains u ' ' then +@@ -273,11 +281,9 @@ + + + let identify_dir d = +- match Sys.os_type with +- | "Win32" -> +- failwith "identify_dir" (* not available *) +- | _ -> +- let s = Unix.stat d in ++ if is_win then ++ failwith "identify_dir"; (* not available *) ++ let s = Unix.stat d in + (s.Unix.st_dev, s.Unix.st_ino) + ;; + +@@ -459,6 +465,96 @@ + ) + packages + ++let rewrite_cmd s = ++ if s = "" || not is_win then ++ s ++ else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_cmd s = ++ if s = "" || not is_win then s else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_pp cmd = ++ if not is_win then cmd else ++ let module T = struct exception Keep end in ++ let is_whitespace = function ++ | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true ++ | _ -> false in ++ (* characters that triggers special behaviour (cmd.exe, not unix shell) *) ++ let is_unsafe_char = function ++ | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true ++ | _ -> false in ++ let len = String.length cmd in ++ let buf = Buffer.create (len + 4) in ++ let buf_cmd = Buffer.create len in ++ let rec iter_ws i = ++ if i >= len then () else ++ let cur = cmd.[i] in ++ if is_whitespace cur then ( ++ Buffer.add_char buf cur; ++ iter_ws (succ i) ++ ) ++ else ++ iter_cmd i ++ and iter_cmd i = ++ if i >= len then add_buf_cmd () else ++ let cur = cmd.[i] in ++ if is_unsafe_char cur || cur = '"' || cur = '\'' then ++ raise T.Keep; ++ if is_whitespace cur then ( ++ add_buf_cmd (); ++ Buffer.add_substring buf cmd i (len - i) ++ ) ++ else ( ++ Buffer.add_char buf_cmd cur; ++ iter_cmd (succ i) ++ ) ++ and add_buf_cmd () = ++ if Buffer.length buf_cmd > 0 then ++ Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) ++ in ++ try ++ iter_ws 0; ++ Buffer.contents buf ++ with ++ | T.Keep -> cmd + + let process_pp_spec syntax_preds packages pp_opts = + (* Returns: pp_command *) +@@ -549,7 +645,7 @@ + None -> [] + | Some cmd -> + ["-pp"; +- cmd ^ " " ^ ++ (rewrite_cmd cmd) ^ " " ^ + String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ + String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ + String.concat " " (List.map Filename.quote pp_opts)] +@@ -625,9 +721,11 @@ + in + try + let preprocessor = ++ rewrite_cmd ( + resolve_path + ~base ~explicit:true +- (package_property predicates pname "ppx") in ++ (package_property predicates pname "ppx") ) ++ in + ["-ppx"; String.concat " " (preprocessor :: options)] + with Not_found -> [] + ) +@@ -895,6 +993,14 @@ + switch (e.g. -L instead of -L ) + *) + ++(* We may need to remove files on which we do not have complete control. ++ On Windows, removing a read-only file fails so try to change the ++ mode of the file first. *) ++let remove_file fname = ++ try Sys.remove fname ++ with Sys_error _ when is_win -> ++ (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); ++ Sys.remove fname + + let ocamlc which () = + +@@ -1022,9 +1128,12 @@ + + "-intf", + Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); +- ++ + "-pp", +- Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); ++ Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); ++ ++ "-ppx", ++ Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); + + "-thread", + Arg.Unit (fun _ -> threads := threads_default); +@@ -1237,7 +1346,7 @@ + with + any -> + close_out initl; +- Sys.remove initl_file_name; ++ remove_file initl_file_name; + raise any + end; + +@@ -1245,9 +1354,9 @@ + at_exit + (fun () -> + let tr f x = try f x with _ -> () in +- tr Sys.remove initl_file_name; +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); ++ tr remove_file initl_file_name; ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); + ); + + let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in +@@ -1493,7 +1602,9 @@ + [ "-v", Arg.Unit (fun () -> verbose := Verbose); + "-pp", Arg.String (fun s -> + pp_specified := true; +- options := !options @ ["-pp"; s]); ++ options := !options @ ["-pp"; rewrite_pp s]); ++ "-ppx", Arg.String (fun s -> ++ options := !options @ ["-ppx"; rewrite_pp s]); + ] + ) + ) +@@ -1672,7 +1783,9 @@ + Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); + + "-pp", Arg.String (fun s -> pp_specified := true; +- add_spec_fn "-pp" s); ++ add_spec_fn "-pp" (rewrite_pp s)); ++ "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); ++ + ] + ) + ) +@@ -1830,7 +1943,10 @@ + output_string ch_out append; + close_out ch_out; + close_in ch_in; +- Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; ++ (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime ++ with Unix.Unix_error(e,_,_) -> ++ prerr_endline("Warning: setting utimes for " ^ outpath ++ ^ ": " ^ Unix.error_message e)); + + prerr_endline("Installed " ^ outpath); + with +@@ -1882,6 +1998,8 @@ + Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in + let f = + Unix.in_channel_of_descr fd in ++ if is_win then ++ set_binary_mode_in f false; + try + let line = input_line f in + let is_my_file = (line = pkg) in +@@ -2208,7 +2326,7 @@ + let lines = read_ldconf !ldconf in + let dlldir_norm = Fl_split.norm_dir dlldir in + let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in +- let ci_filesys = (Sys.os_type = "Win32") in ++ let ci_filesys = is_win in + let check_dir d = + let d' = Fl_split.norm_dir d in + (d' = dlldir_norm) || +@@ -2356,7 +2474,7 @@ + List.iter + (fun file -> + let absfile = Filename.concat dlldir file in +- Sys.remove absfile; ++ remove_file absfile; + prerr_endline ("Removed " ^ absfile) + ) + dll_files +@@ -2365,7 +2483,7 @@ + (* Remove the files from the package directory: *) + if Sys.file_exists pkgdir then begin + let files = Sys.readdir pkgdir in +- Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; ++ Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; + Unix.rmdir pkgdir; + prerr_endline ("Removed " ^ pkgdir) + end +@@ -2415,7 +2533,9 @@ + + + let print_configuration() = ++ let sl = slashify in + let dir s = ++ let s = sl s in + if Sys.file_exists s then + s + else +@@ -2453,27 +2573,27 @@ + if md = "" then "the corresponding package directories" else dir md + ); + Printf.printf "The standard library is assumed to reside in:\n %s\n" +- (Findlib.ocaml_stdlib()); ++ (sl (Findlib.ocaml_stdlib())); + Printf.printf "The ld.conf file can be found here:\n %s\n" +- (Findlib.ocaml_ldconf()); ++ (sl (Findlib.ocaml_ldconf())); + flush stdout + | Some "conf" -> +- print_endline (Findlib.config_file()) ++ print_endline (sl (Findlib.config_file())) + | Some "path" -> +- List.iter print_endline (Findlib.search_path()) ++ List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) + | Some "destdir" -> +- print_endline (Findlib.default_location()) ++ print_endline ( sl (Findlib.default_location())) + | Some "metadir" -> +- print_endline (Findlib.meta_directory()) ++ print_endline ( sl (Findlib.meta_directory())) + | Some "metapath" -> + let mdir = Findlib.meta_directory() in + let ddir = Findlib.default_location() in +- print_endline +- (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") ++ print_endline ( sl ++ (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) + | Some "stdlib" -> +- print_endline (Findlib.ocaml_stdlib()) ++ print_endline ( sl (Findlib.ocaml_stdlib())) + | Some "ldconf" -> +- print_endline (Findlib.ocaml_ldconf()) ++ print_endline ( sl (Findlib.ocaml_ldconf())) + | _ -> + assert false + ;; +@@ -2481,7 +2601,7 @@ + + let ocamlcall pkg cmd = + let dir = package_directory pkg in +- let path = Filename.concat dir cmd in ++ let path = rewrite_cmd (Filename.concat dir cmd) in + begin + try Unix.access path [ Unix.X_OK ] + with +@@ -2647,6 +2767,10 @@ + | Sys_error f -> + prerr_endline ("ocamlfind: " ^ f); + exit 2 ++ | Unix.Unix_error (e, fn, f) -> ++ prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f ++ ^ ": " ^ Unix.error_message e); ++ exit 2 + | Findlib.No_such_package(pkg,info) -> + prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ + (if info <> "" then " - " ^ info else "")); +--- ./src/findlib/Makefile ++++ ./src/findlib/Makefile +@@ -90,6 +90,7 @@ + cat findlib_config.mlp | \ + $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ + $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ ++ $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ + sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ + -e 's;@SYSTEM@;$(SYSTEM);g' \ + >findlib_config.ml diff --git a/bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json b/bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json new file mode 100644 index 0000000..9314f87 --- /dev/null +++ b/bench.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json @@ -0,0 +1,61 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < findlib-1.8.1.patch' : 'true'}" + ], + [ + "./configure", + "-bindir", + "#{self.bin}", + "-sitelib", + "#{self.lib}", + "-mandir", + "#{self.man}", + "-config", + "#{self.lib}/findlib.conf", + "-no-custom", + "-no-topfind" + ], + [ + "make", + "all" + ], + [ + "make", + "opt" + ] + ], + "install": [ + [ + "make", + "install" + ], + [ + "install", + "-m", + "0755", + "ocaml-stub", + "#{self.bin}/ocaml" + ], + [ + "mkdir", + "-p", + "#{self.toplevel}" + ], + [ + "install", + "-m", + "0644", + "src/findlib/topfind", + "#{self.toplevel}/topfind" + ] + ], + "exportedEnv": { + "OCAML_TOPLEVEL_PATH": { + "val": "#{self.toplevel}", + "scope": "global" + } + } +} diff --git a/bench.json b/bench.json index a6e37b3..a93cea8 100644 --- a/bench.json +++ b/bench.json @@ -1,13 +1,15 @@ { "source": "./package.json", "override": { - "build": ["dune build --root . -j4"], - "dependencies": { - "reperf": "*" - }, - "install": [ - "esy-installer reglm.install", - "esy-installer reglm-bench.install" - ] + "build": [ + "dune build --root . -j4" + ], + "dependencies": { + "reperf": "^1.4.0" + }, + "install": [ + "esy-installer reglm.install", + "esy-installer reglm-bench.install" + ] } } diff --git a/dune b/dune index 4fa5d9b..e69de29 100644 --- a/dune +++ b/dune @@ -1,3 +0,0 @@ -(alias - (name runtest) - (action (run ./test/bin/test_runner.exe))) diff --git a/esy.lock.json b/esy.lock.json deleted file mode 100644 index c8182e7..0000000 --- a/esy.lock.json +++ /dev/null @@ -1,578 +0,0 @@ -{ - "hash": "ad9c3d44ab6d7a5ca0d812c37bba0ec2", - "root": "root@path:./package.json", - "node": { - "root@path:./package.json": { - "record": { - "name": "root", - "version": "path:./package.json", - "source": "path:./package.json", - "files": [], - "opam": null - }, - "dependencies": [ - "@esy-ocaml/merlin@3.0.5005", "@esy-ocaml/reason@3.3.3", - "@opam/dune@opam:1.4.0", "@opam/js_of_ocaml-compiler@opam:3.2.1", - "ocaml@4.6.7", "refmterr@3.1.7" - ] - }, - "refmterr@3.1.7": { - "record": { - "name": "refmterr", - "version": "3.1.7", - "source": - "archive:https://registry.npmjs.org/refmterr/-/refmterr-3.1.7.tgz#sha1:fdd6a58e212b18c6a0685ff21f27a7df6621b3e8", - "files": [], - "opam": null - }, - "dependencies": [ - "@esy-ocaml/reason@3.3.3", "@opam/jbuilder@opam:transition", - "@opam/re@opam:1.7.3" - ] - }, - "ocaml@4.6.7": { - "record": { - "name": "ocaml", - "version": "4.6.7", - "source": - "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.6.7.tgz#sha1:5bfdf7f9b7752646c2a5ad3c9e4021180eeab704", - "files": [], - "opam": null - }, - "dependencies": [] - }, - "@opam/yojson@opam:1.4.1": { - "record": { - "name": "@opam/yojson", - "version": "opam:1.4.1", - "source": - "archive:https://github.com/mjambon/yojson/archive/v1.4.1.tar.gz#md5:3ea6e36422dd670e8ab880710d5f7398", - "files": [], - "opam": { - "name": "yojson", - "version": "1.4.1", - "opam": - "opam-version: \"2.0\"\nname: \"yojson\"\nversion: \"1.4.1\"\nsynopsis:\n \"Yojson is an optimized parsing and printing library for the JSON format\"\ndescription: \"\"\"\nIt addresses a few shortcomings of json-wheel including 2x speedup,\npolymorphic variants and optional syntax for tuples and variants.\n\nydump is a pretty-printing command-line program provided with the\nyojson package.\n\nThe program atdgen can be used to derive OCaml-JSON serializers and\ndeserializers from type definitions.\"\"\"\nmaintainer: \"martin@mjambon.com\"\nauthors: \"Martin Jambon\"\nhomepage: \"http://mjambon.com/yojson.html\"\nbug-reports: \"https://github.com/mjambon/yojson/issues\"\ndepends: [\n \"ocaml\" {>= \"4.02.3\"}\n \"jbuilder\" {build}\n \"cppo\" {build}\n \"easy-format\"\n \"biniou\" {>= \"1.2.0\"}\n]\nbuild: [\n [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\n [\"jbuilder\" \"runtest\" \"-p\" name] {with-test}\n]\ndev-repo: \"git+https://github.com/mjambon/yojson.git\"\nurl {\n src: \"https://github.com/mjambon/yojson/archive/v1.4.1.tar.gz\"\n checksum: \"md5=3ea6e36422dd670e8ab880710d5f7398\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/biniou@opam:1.2.0", - "@opam/cppo@opam:1.6.5", "@opam/easy-format@opam:1.3.1", - "@opam/jbuilder@opam:transition", "ocaml@4.6.7" - ] - }, - "@opam/topkg@opam:0.9.1": { - "record": { - "name": "@opam/topkg", - "version": "opam:0.9.1", - "source": - "archive:http://erratique.ch/software/topkg/releases/topkg-0.9.1.tbz#md5:8978a0595db1a22e4251ec62735d4b84", - "files": [], - "opam": { - "name": "topkg", - "version": "0.9.1", - "opam": - "opam-version: \"2.0\"\nname: \"topkg\"\nversion: \"0.9.1\"\nsynopsis: \"The transitory OCaml software packager\"\ndescription: \"\"\"\nTopkg is a packager for distributing OCaml software. It provides an\nAPI to describe the files a package installs in a given build\nconfiguration and to specify information about the package's\ndistribution, creation and publication procedures.\n\nThe optional topkg-care package provides the `topkg` command line tool\nwhich helps with various aspects of a package's life cycle: creating\nand linting a distribution, releasing it on the WWW, publish its\ndocumentation, add it to the OCaml opam repository, etc.\n\nTopkg is distributed under the ISC license and has **no**\ndependencies. This is what your packages will need as a *build*\ndependency.\n\nTopkg-care is distributed under the ISC license it depends on\n[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner],\n[webbrowser][webbrowser] and `opam-format`.\n\n[fmt]: http://erratique.ch/software/fmt\n[logs]: http://erratique.ch/software/logs\n[bos]: http://erratique.ch/software/bos\n[cmdliner]: http://erratique.ch/software/cmdliner\n[webbrowser]: http://erratique.ch/software/webbrowser\"\"\"\nmaintainer: \"Daniel Bünzli \"\nauthors: \"Daniel Bünzli \"\nlicense: \"ISC\"\ntags: [\"packaging\" \"ocamlbuild\" \"org:erratique\"]\nhomepage: \"http://erratique.ch/software/topkg\"\ndoc: \"http://erratique.ch/software/topkg/doc\"\nbug-reports: \"https://github.com/dbuenzli/topkg/issues\"\ndepends: [\n \"ocaml\" {>= \"4.01.0\"}\n \"ocamlfind\" {build & >= \"1.6.1\"}\n \"ocamlbuild\"\n \"result\"\n]\nbuild: [\n \"ocaml\" \"pkg/pkg.ml\" \"build\" \"--pkg-name\" name \"--dev-pkg\" \"%{pinned}%\"\n]\ndev-repo: \"git+http://erratique.ch/repos/topkg.git\"\nurl {\n src: \"http://erratique.ch/software/topkg/releases/topkg-0.9.1.tbz\"\n checksum: \"md5=8978a0595db1a22e4251ec62735d4b84\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/ocamlbuild@opam:0.12.0", - "@opam/ocamlfind@opam:1.8.0", "@opam/result@opam:1.3", "ocaml@4.6.7" - ] - }, - "@opam/result@opam:1.3": { - "record": { - "name": "@opam/result", - "version": "opam:1.3", - "source": - "archive:https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz#md5:4beebefd41f7f899b6eeba7414e7ae01", - "files": [], - "opam": { - "name": "result", - "version": "1.3", - "opam": - "opam-version: \"2.0\"\nname: \"result\"\nversion: \"1.3\"\nsynopsis: \"Compatibility Result module\"\ndescription: \"\"\"\nProjects that want to use the new result type defined in OCaml >= 4.03\nwhile staying compatible with older version of OCaml should use the\nResult module defined in this library.\"\"\"\nmaintainer: \"opensource@janestreet.com\"\nauthors: \"Jane Street Group, LLC \"\nlicense: \"BSD3\"\nhomepage: \"https://github.com/janestreet/result\"\nbug-reports: \"https://github.com/janestreet/result/issues\"\ndepends: [\n \"ocaml\"\n \"jbuilder\" {build & >= \"1.0+beta11\"}\n]\nbuild: [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\ndev-repo: \"git+https://github.com/janestreet/result.git\"\nurl {\n src:\n \"https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz\"\n checksum: \"md5=4beebefd41f7f899b6eeba7414e7ae01\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/jbuilder@opam:transition", - "ocaml@4.6.7" - ] - }, - "@opam/re@opam:1.7.3": { - "record": { - "name": "@opam/re", - "version": "opam:1.7.3", - "source": - "archive:https://github.com/ocaml/ocaml-re/releases/download/1.7.3/re-1.7.3.tbz#md5:d2a74ca77216861bce4449600a132de9", - "files": [], - "opam": { - "name": "re", - "version": "1.7.3", - "opam": - "opam-version: \"2.0\"\nname: \"re\"\nversion: \"1.7.3\"\nsynopsis: \"RE is a regular expression library for OCaml\"\ndescription: \"\"\"\nPure OCaml regular expressions with:\n* Perl-style regular expressions (module Re.Perl)\n* Posix extended regular expressions (module Re.Posix)\n* Emacs-style regular expressions (module Re.Emacs)\n* Shell-style file globbing (module Re.Glob)\n* Compatibility layer for OCaml's built-in Str module (module Re.Str)\"\"\"\nmaintainer: \"rudi.grinberg@gmail.com\"\nauthors: [\n \"Jerome Vouillon\"\n \"Thomas Gazagnaire\"\n \"Anil Madhavapeddy\"\n \"Rudi Grinberg\"\n \"Gabriel Radanne\"\n]\nlicense: \"LGPL-2.0 with OCaml linking exception\"\nhomepage: \"https://github.com/ocaml/ocaml-re\"\nbug-reports: \"https://github.com/ocaml/ocaml-re/issues\"\ndepends: [\n \"ocaml\" {>= \"4.02.3\"}\n \"jbuilder\" {build & >= \"1.0+beta10\"}\n \"ounit\" {with-test}\n]\nbuild: [\n [\"jbuilder\" \"subst\" \"-p\" name] {pinned}\n [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\n [\"jbuilder\" \"runtest\" \"-p\" name \"-j\" jobs] {with-test}\n]\ndev-repo: \"git+https://github.com/ocaml/ocaml-re.git\"\nurl {\n src:\n \"https://github.com/ocaml/ocaml-re/releases/download/1.7.3/re-1.7.3.tbz\"\n checksum: \"md5=d2a74ca77216861bce4449600a132de9\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/jbuilder@opam:transition", - "ocaml@4.6.7" - ] - }, - "@opam/ocamlfind@opam:1.8.0": { - "record": { - "name": "@opam/ocamlfind", - "version": "opam:1.8.0", - "source": [ - "archive:http://download.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b", - "archive:http://download2.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b" - ], - "files": [ - { - "name": "ocamlfind.install", - "content": - "bin: [\n \"src/findlib/ocamlfind\" {\"ocamlfind\"}\n \"?src/findlib/ocamlfind_opt\" {\"ocamlfind\"}\n \"?tools/safe_camlp4\"\n]\ntoplevel: [\"src/findlib/topfind\"]\n", - "perm": 438 - }, - { - "name": "ocaml-stub", - "content": - "#!/bin/sh\n\nBINDIR=$(dirname \"$(command -v ocamlc)\")\n\"$BINDIR/ocaml\" -I \"$OCAML_TOPLEVEL_PATH\" \"$@\"\n", - "perm": 438 - }, - { - "name": "findlib-1.8.0.patch", - "content": - "--- ./Makefile\n+++ ./Makefile\n@@ -57,16 +57,16 @@\n \tcat findlib.conf.in | \\\n \t $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf\n \tif ./tools/cmd_from_same_dir ocamlc; then \\\n-\t\techo 'ocamlc=\"ocamlc.opt\"' >>findlib.conf; \\\n+\t\techo 'ocamlc=\"ocamlc.opt$(EXEC_SUFFIX)\"' >>findlib.conf; \\\n \tfi\n \tif ./tools/cmd_from_same_dir ocamlopt; then \\\n-\t\techo 'ocamlopt=\"ocamlopt.opt\"' >>findlib.conf; \\\n+\t\techo 'ocamlopt=\"ocamlopt.opt$(EXEC_SUFFIX)\"' >>findlib.conf; \\\n \tfi\n \tif ./tools/cmd_from_same_dir ocamldep; then \\\n-\t\techo 'ocamldep=\"ocamldep.opt\"' >>findlib.conf; \\\n+\t\techo 'ocamldep=\"ocamldep.opt$(EXEC_SUFFIX)\"' >>findlib.conf; \\\n \tfi\n \tif ./tools/cmd_from_same_dir ocamldoc; then \\\n-\t\techo 'ocamldoc=\"ocamldoc.opt\"' >>findlib.conf; \\\n+\t\techo 'ocamldoc=\"ocamldoc.opt$(EXEC_SUFFIX)\"' >>findlib.conf; \\\n \tfi\n \n .PHONY: install-doc\n--- ./src/findlib/findlib_config.mlp\n+++ ./src/findlib/findlib_config.mlp\n@@ -24,3 +24,5 @@\n | \"MacOS\" -> \"\" (* don't know *)\n | _ -> failwith \"Unknown Sys.os_type\"\n ;;\n+\n+let exec_suffix = \"@EXEC_SUFFIX@\";;\n--- ./src/findlib/findlib.ml\n+++ ./src/findlib/findlib.ml\n@@ -28,15 +28,20 @@\n let conf_ldconf = ref \"\";;\n let conf_ignore_dups_in = ref ([] : string list);;\n \n-let ocamlc_default = \"ocamlc\";;\n-let ocamlopt_default = \"ocamlopt\";;\n-let ocamlcp_default = \"ocamlcp\";;\n-let ocamloptp_default = \"ocamloptp\";;\n-let ocamlmklib_default = \"ocamlmklib\";;\n-let ocamlmktop_default = \"ocamlmktop\";;\n-let ocamldep_default = \"ocamldep\";;\n-let ocamlbrowser_default = \"ocamlbrowser\";;\n-let ocamldoc_default = \"ocamldoc\";;\n+let add_exec str =\n+ match Findlib_config.exec_suffix with\n+ | \"\" -> str\n+ | a -> str ^ a ;;\n+let ocamlc_default = add_exec \"ocamlc\";;\n+let ocamlopt_default = add_exec \"ocamlopt\";;\n+let ocamlcp_default = add_exec \"ocamlcp\";;\n+let ocamloptp_default = add_exec \"ocamloptp\";;\n+let ocamlmklib_default = add_exec \"ocamlmklib\";;\n+let ocamlmktop_default = add_exec \"ocamlmktop\";;\n+let ocamldep_default = add_exec \"ocamldep\";;\n+let ocamlbrowser_default = add_exec \"ocamlbrowser\";;\n+let ocamldoc_default = add_exec \"ocamldoc\";;\n+\n \n \n let init_manually \n--- ./src/findlib/fl_package_base.ml\n+++ ./src/findlib/fl_package_base.ml\n@@ -133,7 +133,15 @@\n \t List.find (fun def -> def.def_var = \"exists_if\") p.package_defs in\n \tlet files = Fl_split.in_words def.def_value in\n \tList.exists \n-\t (fun file -> Sys.file_exists (Filename.concat d' file))\n+\t (fun file ->\n+ let fln = Filename.concat d' file in\n+ let e = Sys.file_exists fln in\n+ (* necessary for ppx executables *)\n+ if e || Sys.os_type <> \"Win32\" || Filename.check_suffix fln \".exe\" then\n+ e\n+ else\n+ Sys.file_exists (fln ^ \".exe\")\n+ )\n \t files\n with Not_found -> true in\n \n--- ./src/findlib/fl_split.ml\n+++ ./src/findlib/fl_split.ml\n@@ -126,10 +126,17 @@\n | '/' | '\\\\' -> true\n | _ -> false in\n let norm_dir_win() =\n- if l >= 1 && s.[0] = '/' then\n- Buffer.add_char b '\\\\' else Buffer.add_char b s.[0];\n- if l >= 2 && s.[1] = '/' then\n- Buffer.add_char b '\\\\' else Buffer.add_char b s.[1];\n+ if l >= 1 then (\n+ if s.[0] = '/' then\n+ Buffer.add_char b '\\\\'\n+ else\n+ Buffer.add_char b s.[0] ;\n+ if l >= 2 then\n+ if s.[1] = '/' then\n+ Buffer.add_char b '\\\\'\n+ else\n+ Buffer.add_char b s.[1];\n+ );\n for k = 2 to l - 1 do\n let c = s.[k] in\n if is_slash c then (\n--- ./src/findlib/frontend.ml\n+++ ./src/findlib/frontend.ml\n@@ -31,10 +31,18 @@\n else\n Sys_error (arg ^ \": \" ^ Unix.error_message code)\n \n+let is_win = Sys.os_type = \"Win32\"\n+\n+let () =\n+ match Findlib_config.system with\n+ | \"win32\" | \"win64\" | \"mingw\" | \"cygwin\" | \"mingw64\" | \"cygwin64\" ->\n+ (try set_binary_mode_out stdout true with _ -> ());\n+ (try set_binary_mode_out stderr true with _ -> ());\n+ | _ -> ()\n \n let slashify s =\n match Findlib_config.system with\n- | \"mingw\" | \"mingw64\" | \"cygwin\" ->\n+ | \"win32\" | \"win64\" | \"mingw\" | \"cygwin\" | \"mingw64\" | \"cygwin64\" ->\n let b = Buffer.create 80 in\n String.iter\n (function\n@@ -49,7 +57,7 @@\n \n let out_path ?(prefix=\"\") s =\n match Findlib_config.system with\n- | \"mingw\" | \"mingw64\" | \"cygwin\" ->\n+ | \"win32\" | \"win64\" | \"mingw\" | \"mingw64\" | \"cygwin\" ->\n \tlet u = slashify s in\n \tprefix ^ \n \t (if String.contains u ' ' then\n@@ -273,11 +281,9 @@\n \n \n let identify_dir d =\n- match Sys.os_type with\n- | \"Win32\" ->\n-\tfailwith \"identify_dir\" (* not available *)\n- | _ ->\n-\tlet s = Unix.stat d in\n+ if is_win then\n+ failwith \"identify_dir\"; (* not available *)\n+ let s = Unix.stat d in\n \t(s.Unix.st_dev, s.Unix.st_ino)\n ;;\n \n@@ -459,6 +465,96 @@\n )\n packages\n \n+let rewrite_cmd s =\n+ if s = \"\" || not is_win then\n+ s\n+ else\n+ let s =\n+ let l = String.length s in\n+ let b = Buffer.create l in\n+ for i = 0 to pred l do\n+ match s.[i] with\n+ | '/' -> Buffer.add_char b '\\\\'\n+ | x -> Buffer.add_char b x\n+ done;\n+ Buffer.contents b\n+ in\n+ if (Filename.is_implicit s && String.contains s '\\\\' = false) ||\n+ Filename.check_suffix (String.lowercase s) \".exe\" then\n+ s\n+ else\n+ let s' = s ^ \".exe\" in\n+ if Sys.file_exists s' then\n+ s'\n+ else\n+ s\n+\n+let rewrite_cmd s =\n+ if s = \"\" || not is_win then s else\n+ let s =\n+ let l = String.length s in\n+ let b = Buffer.create l in\n+ for i = 0 to pred l do\n+ match s.[i] with\n+ | '/' -> Buffer.add_char b '\\\\'\n+ | x -> Buffer.add_char b x\n+ done;\n+ Buffer.contents b\n+ in\n+ if (Filename.is_implicit s && String.contains s '\\\\' = false) ||\n+ Filename.check_suffix (String.lowercase s) \".exe\" then\n+ s\n+ else\n+ let s' = s ^ \".exe\" in\n+ if Sys.file_exists s' then\n+ s'\n+ else\n+ s\n+\n+let rewrite_pp cmd =\n+ if not is_win then cmd else\n+ let module T = struct exception Keep end in\n+ let is_whitespace = function\n+ | ' ' | '\\011' | '\\012' | '\\n' | '\\r' | '\\t' -> true\n+ | _ -> false in\n+ (* characters that triggers special behaviour (cmd.exe, not unix shell) *)\n+ let is_unsafe_char = function\n+ | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true\n+ | _ -> false in\n+ let len = String.length cmd in\n+ let buf = Buffer.create (len + 4) in\n+ let buf_cmd = Buffer.create len in\n+ let rec iter_ws i =\n+ if i >= len then () else\n+ let cur = cmd.[i] in\n+ if is_whitespace cur then (\n+ Buffer.add_char buf cur;\n+ iter_ws (succ i)\n+ )\n+ else\n+ iter_cmd i\n+ and iter_cmd i =\n+ if i >= len then add_buf_cmd () else\n+ let cur = cmd.[i] in\n+ if is_unsafe_char cur || cur = '\"' || cur = '\\'' then\n+ raise T.Keep;\n+ if is_whitespace cur then (\n+ add_buf_cmd ();\n+ Buffer.add_substring buf cmd i (len - i)\n+ )\n+ else (\n+ Buffer.add_char buf_cmd cur;\n+ iter_cmd (succ i)\n+ )\n+ and add_buf_cmd () =\n+ if Buffer.length buf_cmd > 0 then\n+ Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd))\n+ in\n+ try\n+ iter_ws 0;\n+ Buffer.contents buf\n+ with\n+ | T.Keep -> cmd\n \n let process_pp_spec syntax_preds packages pp_opts =\n (* Returns: pp_command *)\n@@ -549,7 +645,7 @@\n None -> []\n | Some cmd ->\n \t[\"-pp\";\n-\t cmd ^ \" \" ^\n+\t (rewrite_cmd cmd) ^ \" \" ^\n \t String.concat \" \" (List.map Filename.quote pp_i_options) ^ \" \" ^\n \t String.concat \" \" (List.map Filename.quote pp_archives) ^ \" \" ^\n \t String.concat \" \" (List.map Filename.quote pp_opts)]\n@@ -625,9 +721,11 @@\n in\n try\n let preprocessor =\n+ rewrite_cmd (\n resolve_path\n ~base ~explicit:true\n- (package_property predicates pname \"ppx\") in\n+ (package_property predicates pname \"ppx\") )\n+ in\n [\"-ppx\"; String.concat \" \" (preprocessor :: options)]\n with Not_found -> []\n )\n@@ -895,6 +993,14 @@\n switch (e.g. -L instead of -L )\n *)\n \n+(* We may need to remove files on which we do not have complete control.\n+ On Windows, removing a read-only file fails so try to change the\n+ mode of the file first. *)\n+let remove_file fname =\n+ try Sys.remove fname\n+ with Sys_error _ when is_win ->\n+ (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ());\n+ Sys.remove fname\n \n let ocamlc which () =\n \n@@ -1022,9 +1128,12 @@\n \n \t \"-intf\", \n \t Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]);\n- \n+\n \t \"-pp\", \n-\t Arg.String (fun s -> pp_specified := true; add_spec_fn \"-pp\" s);\n+\t Arg.String (fun s -> pp_specified := true; add_spec_fn \"-pp\" (rewrite_pp s));\n+\n+ \"-ppx\",\n+ Arg.String (fun s -> add_spec_fn \"-ppx\" (rewrite_pp s));\n \t \n \t \"-thread\", \n \t Arg.Unit (fun _ -> threads := threads_default);\n@@ -1237,7 +1346,7 @@\n with\n any ->\n \tclose_out initl;\n-\tSys.remove initl_file_name;\n+\tremove_file initl_file_name;\n \traise any\n end;\n \n@@ -1245,9 +1354,9 @@\n at_exit\n (fun () ->\n \tlet tr f x = try f x with _ -> () in\n-\ttr Sys.remove initl_file_name;\n-\ttr Sys.remove (Filename.chop_extension initl_file_name ^ \".cmi\");\n-\ttr Sys.remove (Filename.chop_extension initl_file_name ^ \".cmo\");\n+\ttr remove_file initl_file_name;\n+\ttr remove_file (Filename.chop_extension initl_file_name ^ \".cmi\");\n+\ttr remove_file (Filename.chop_extension initl_file_name ^ \".cmo\");\n );\n \n let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in\n@@ -1493,7 +1602,9 @@\n \t [ \"-v\", Arg.Unit (fun () -> verbose := Verbose);\n \t \"-pp\", Arg.String (fun s ->\n \t\t\t\t pp_specified := true;\n-\t\t\t\t options := !options @ [\"-pp\"; s]);\n+\t\t\t\t options := !options @ [\"-pp\"; rewrite_pp s]);\n+ \"-ppx\", Arg.String (fun s ->\n+\t\t\t\t options := !options @ [\"-ppx\"; rewrite_pp s]);\n \t ]\n )\n )\n@@ -1672,7 +1783,9 @@\n \t Arg.String (fun s -> add_spec_fn \"-I\" (slashify (resolve_path s)));\n \n \t \"-pp\", Arg.String (fun s -> pp_specified := true;\n-\t\t \t add_spec_fn \"-pp\" s);\n+ add_spec_fn \"-pp\" (rewrite_pp s));\n+ \"-ppx\", Arg.String (fun s -> add_spec_fn \"-ppx\" (rewrite_pp s));\n+\n \t ]\n \t)\n )\n@@ -1830,7 +1943,10 @@\n output_string ch_out append;\n close_out ch_out;\n close_in ch_in;\n- Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime;\n+ (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime\n+ with Unix.Unix_error(e,_,_) ->\n+ prerr_endline(\"Warning: setting utimes for \" ^ outpath\n+ ^ \": \" ^ Unix.error_message e));\n \n prerr_endline(\"Installed \" ^ outpath);\n with\n@@ -1882,6 +1998,8 @@\n Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in\n let f =\n Unix.in_channel_of_descr fd in\n+ if is_win then\n+ set_binary_mode_in f false;\n try\n let line = input_line f in\n let is_my_file = (line = pkg) in\n@@ -2208,7 +2326,7 @@\n let lines = read_ldconf !ldconf in\n let dlldir_norm = Fl_split.norm_dir dlldir in\n let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in\n- let ci_filesys = (Sys.os_type = \"Win32\") in\n+ let ci_filesys = is_win in\n let check_dir d =\n let d' = Fl_split.norm_dir d in\n (d' = dlldir_norm) || \n@@ -2356,7 +2474,7 @@\n List.iter\n (fun file ->\n let absfile = Filename.concat dlldir file in\n- Sys.remove absfile;\n+ remove_file absfile;\n prerr_endline (\"Removed \" ^ absfile)\n )\n dll_files\n@@ -2365,7 +2483,7 @@\n (* Remove the files from the package directory: *)\n if Sys.file_exists pkgdir then begin\n let files = Sys.readdir pkgdir in\n- Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files;\n+ Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files;\n Unix.rmdir pkgdir;\n prerr_endline (\"Removed \" ^ pkgdir)\n end\n@@ -2415,7 +2533,9 @@\n \n \n let print_configuration() =\n+ let sl = slashify in\n let dir s =\n+ let s = sl s in\n if Sys.file_exists s then\n s\n else\n@@ -2453,27 +2573,27 @@\n \t if md = \"\" then \"the corresponding package directories\" else dir md\n \t );\n \tPrintf.printf \"The standard library is assumed to reside in:\\n %s\\n\"\n-\t (Findlib.ocaml_stdlib());\n+ (sl (Findlib.ocaml_stdlib()));\n \tPrintf.printf \"The ld.conf file can be found here:\\n %s\\n\"\n-\t (Findlib.ocaml_ldconf());\n+ (sl (Findlib.ocaml_ldconf()));\n \tflush stdout\n | Some \"conf\" ->\n-\tprint_endline Findlib_config.config_file\n+ print_endline (sl Findlib_config.config_file)\n | Some \"path\" ->\n-\tList.iter print_endline (Findlib.search_path())\n+ List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path())\n | Some \"destdir\" ->\n-\tprint_endline (Findlib.default_location())\n+ print_endline ( sl (Findlib.default_location()))\n | Some \"metadir\" ->\n-\tprint_endline (Findlib.meta_directory())\n+ print_endline ( sl (Findlib.meta_directory()))\n | Some \"metapath\" ->\n let mdir = Findlib.meta_directory() in\n let ddir = Findlib.default_location() in\n-\tprint_endline \n- (if mdir <> \"\" then mdir ^ \"/META.%s\" else ddir ^ \"/%s/META\")\n+ print_endline ( sl\n+ (if mdir <> \"\" then mdir ^ \"/META.%s\" else ddir ^ \"/%s/META\"))\n | Some \"stdlib\" ->\n-\tprint_endline (Findlib.ocaml_stdlib())\n+ print_endline ( sl (Findlib.ocaml_stdlib()))\n | Some \"ldconf\" ->\n-\tprint_endline (Findlib.ocaml_ldconf())\n+ print_endline ( sl (Findlib.ocaml_ldconf()))\n | _ ->\n \tassert false\n ;;\n@@ -2481,7 +2601,7 @@\n \n let ocamlcall pkg cmd =\n let dir = package_directory pkg in\n- let path = Filename.concat dir cmd in\n+ let path = rewrite_cmd (Filename.concat dir cmd) in\n begin\n try Unix.access path [ Unix.X_OK ]\n with\n@@ -2647,6 +2767,10 @@\n | Sys_error f ->\n prerr_endline (\"ocamlfind: \" ^ f);\n exit 2\n+ | Unix.Unix_error (e, fn, f) ->\n+ prerr_endline (\"ocamlfind: \" ^ fn ^ \" \" ^ f\n+ ^ \": \" ^ Unix.error_message e);\n+ exit 2\n | Findlib.No_such_package(pkg,info) ->\n prerr_endline (\"ocamlfind: Package `\" ^ pkg ^ \"' not found\" ^\n \t\t (if info <> \"\" then \" - \" ^ info else \"\"));\n--- ./src/findlib/Makefile\n+++ ./src/findlib/Makefile\n@@ -90,6 +90,7 @@\n \tcat findlib_config.mlp | \\\n \t $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \\\n \t $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \\\n+\t\t\t$(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \\\n \t\tsed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \\\n \t\t -e 's;@SYSTEM@;$(SYSTEM);g' \\\n \t\t >findlib_config.ml\n@@ -113,7 +114,7 @@\n \t$(OCAMLC) -a -o num_top.cma $(NUMTOP_OBJECTS)\n \n clean:\n-\trm -f *.cmi *.cmo *.cma *.cmx *.a *.o *.cmxa \\\n+\trm -f *.cmi *.cmo *.cma *.cmx *.lib *.a *.o *.cmxa \\\n \t fl_meta.ml findlib_config.ml findlib.mml topfind.ml topfind \\\n \t ocamlfind$(EXEC_SUFFIX) ocamlfind_opt$(EXEC_SUFFIX)\n \n@@ -121,7 +122,7 @@\n \tmkdir -p \"$(prefix)$(OCAML_SITELIB)/$(NAME)\"\n \tmkdir -p \"$(prefix)$(OCAMLFIND_BIN)\"\n \ttest $(INSTALL_TOPFIND) -eq 0 || cp topfind \"$(prefix)$(OCAML_CORE_STDLIB)\"\n-\tfiles=`$(SH) $(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma findlib.cmxa findlib.a findlib.cmxs topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib_top.cmxa findlib_top.a findlib_top.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload.a findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \\\n+\tfiles=`$(SH) $(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma findlib.cmxa findlib$(LIB_SUFFIX) findlib.cmxs topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib_top.cmxa findlib_top$(LIB_SUFFIX) findlib_top.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload$(LIB_SUFFIX) findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \\\n \tcp $$files \"$(prefix)$(OCAML_SITELIB)/$(NAME)\"\n \tf=\"ocamlfind$(EXEC_SUFFIX)\"; { test -f ocamlfind_opt$(EXEC_SUFFIX) && f=\"ocamlfind_opt$(EXEC_SUFFIX)\"; }; \\\n \tcp $$f \"$(prefix)$(OCAMLFIND_BIN)/ocamlfind$(EXEC_SUFFIX)\"\n", - "perm": 438 - } - ], - "opam": { - "name": "ocamlfind", - "version": "1.8.0", - "opam": - "opam-version: \"2.0\"\nname: \"ocamlfind\"\nversion: \"1.8.0\"\nsynopsis: \"A library manager for OCaml\"\ndescription: \"\"\"\nFindlib is a library manager for OCaml. It provides a convention how\nto store libraries, and a file format (\"META\") to describe the\nproperties of libraries. There is also a tool (ocamlfind) for\ninterpreting the META files, so that it is very easy to use libraries\nin programs and scripts.\"\"\"\nmaintainer: \"Thomas Gazagnaire \"\nauthors: \"Gerd Stolpmann \"\nhomepage: \"http://projects.camlcity.org/projects/findlib.html\"\nbug-reports: \"https://gitlab.camlcity.org/gerd/lib-findlib/issues\"\ndepends: [\n \"ocaml\" {>= \"4.00.0\"}\n \"conf-m4\" {build}\n]\nbuild: [\n [\n \"./configure\"\n \"-bindir\"\n bin\n \"-sitelib\"\n lib\n \"-mandir\"\n man\n \"-config\"\n \"%{lib}%/findlib.conf\"\n \"-no-custom\"\n \"-no-topfind\" {ocaml:preinstalled}\n ]\n [make \"all\"]\n [make \"opt\"] {ocaml:native}\n]\ninstall: [\n [make \"install\"]\n [\"install\" \"-m\" \"0755\" \"ocaml-stub\" \"%{bin}%/ocaml\"] {ocaml:preinstalled}\n]\nremove: [\n [\"ocamlfind\" \"remove\" \"bytes\"]\n [\n \"./configure\"\n \"-bindir\"\n bin\n \"-sitelib\"\n lib\n \"-mandir\"\n man\n \"-config\"\n \"%{lib}%/findlib.conf\"\n \"-no-topfind\" {ocaml:preinstalled}\n ]\n [make \"uninstall\"]\n [\"rm\" \"-f\" \"%{bin}%/ocaml\"] {ocaml:preinstalled}\n]\ndev-repo: \"git+https://gitlab.camlcity.org/gerd/lib-findlib.git\"\nextra-files: [\n [\"ocamlfind.install\" \"md5=06f2c282ab52d93aa6adeeadd82a2543\"]\n [\"ocaml-stub\" \"md5=181f259c9e0bad9ef523e7d4abfdf87a\"]\n]\nurl {\n src: \"http://download.camlcity.org/download/findlib-1.8.0.tar.gz\"\n checksum: \"md5=a710c559667672077a93d34eb6a42e5b\"\n mirrors: \"http://download2.camlcity.org/download/findlib-1.8.0.tar.gz\"\n}", - "override": { - "build": [ - [ - "bash", "-c", - "#{os == 'windows' ? 'patch -p1 < findlib-1.8.0.patch' : 'true'}" - ], - [ - "./configure", "-bindir", "#{self.bin}", "-sitelib", - "#{self.lib}", "-mandir", "#{self.man}", "-config", - "#{self.lib}/findlib.conf", "-no-custom", "-no-topfind" - ], - [ "make", "all" ], - [ "make", "opt" ] - ], - "install": [ - [ "make", "install" ], - [ "install", "-m", "0755", "ocaml-stub", "#{self.bin}/ocaml" ], - [ "mkdir", "-p", "#{self.toplevel}" ], - [ - "install", "-m", "0644", "src/findlib/topfind", - "#{self.toplevel}/topfind" - ] - ], - "exportedEnv": { - "OCAML_TOPLEVEL_PATH": { - "val": "#{self.toplevel}", - "scope": "global", - "exclusive": false - } - } - } - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/conf-m4@opam:1", "ocaml@4.6.7" - ] - }, - "@opam/ocamlbuild@opam:0.12.0": { - "record": { - "name": "@opam/ocamlbuild", - "version": "opam:0.12.0", - "source": - "archive:https://github.com/ocaml/ocamlbuild/archive/0.12.0.tar.gz#md5:442baa19470bd49150f153122e22907b", - "files": [ - { - "name": "ocamlbuild-0.12.0.patch", - "content": - "--- ./Makefile\n+++ ./Makefile\n@@ -213,7 +213,7 @@\n \trm -f man/ocamlbuild.1\n \n man/options_man.byte: src/ocamlbuild_pack.cmo\n-\t$(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte\n+\t$(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte\n \n clean::\n \trm -f man/options_man.cm*\n--- ./src/command.ml\n+++ ./src/command.ml\n@@ -148,9 +148,10 @@\n let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in\n let b = Buffer.create 256 in\n (* The best way to prevent bash from switching to its windows-style\n- * quote-handling is to prepend an empty string before the command name. *)\n+ * quote-handling is to prepend an empty string before the command name.\n+ * space seems to work, too - and the ouput is nicer *)\n if Sys.os_type = \"Win32\" then\n- Buffer.add_string b \"''\";\n+ Buffer.add_char b ' ';\n let first = ref true in\n let put_space () =\n if !first then\n@@ -260,7 +261,7 @@\n \n let execute_many ?(quiet=false) ?(pretend=false) cmds =\n add_parallel_stat (List.length cmds);\n- let degraded = !*My_unix.is_degraded || Sys.os_type = \"Win32\" in\n+ let degraded = !*My_unix.is_degraded in\n let jobs = !jobs in\n if jobs < 0 then invalid_arg \"jobs < 0\";\n let max_jobs = if jobs = 0 then None else Some jobs in\n--- ./src/findlib.ml\n+++ ./src/findlib.ml\n@@ -66,9 +66,6 @@\n (fun command -> lexer & Lexing.from_string & run_and_read command)\n command\n \n-let run_and_read command =\n- Printf.ksprintf run_and_read command\n-\n let rec query name =\n try\n Hashtbl.find packages name\n@@ -135,7 +132,8 @@\n with Not_found -> s\n \n let list () =\n- List.map before_space (split_nl & run_and_read \"%s list\" ocamlfind)\n+ let cmd = Shell.quote_filename_if_needed ocamlfind ^ \" list\" in\n+ List.map before_space (split_nl & run_and_read cmd)\n \n (* The closure algorithm is easy because the dependencies are already closed\n and sorted for each package. We only have to make the union. We could also\n--- ./src/main.ml\n+++ ./src/main.ml\n@@ -162,6 +162,9 @@\n Tags.mem \"traverse\" tags\n || List.exists (Pathname.is_prefix path_name) !Options.include_dirs\n || List.exists (Pathname.is_prefix path_name) target_dirs)\n+ && ((* beware: !Options.build_dir is an absolute directory *)\n+ Pathname.normalize !Options.build_dir\n+ <> Pathname.normalize (Pathname.pwd/path_name))\n end\n end\n end\n--- ./src/my_std.ml\n+++ ./src/my_std.ml\n@@ -271,13 +271,107 @@\n try Array.iter (fun x -> if x = basename then raise Exit) a; false\n with Exit -> true\n \n+let command_plain = function\n+| [| |] -> 0\n+| margv ->\n+ let rec waitpid a b =\n+ match Unix.waitpid a b with\n+ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b\n+ | x -> x\n+ in\n+ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in\n+ let pid', process_status = waitpid [] pid in\n+ assert (pid = pid');\n+ match process_status with\n+ | Unix.WEXITED n -> n\n+ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *)\n+ | Unix.WSTOPPED _ -> 127\n+\n+(* can't use Lexers because of circular dependency *)\n+let split_path_win str =\n+ let rec aux pos =\n+ try\n+ let i = String.index_from str pos ';' in\n+ let len = i - pos in\n+ if len = 0 then\n+ aux (succ i)\n+ else\n+ String.sub str pos (i - pos) :: aux (succ i)\n+ with Not_found | Invalid_argument _ ->\n+ let len = String.length str - pos in\n+ if len = 0 then [] else [String.sub str pos len]\n+ in\n+ aux 0\n+\n+let windows_shell = lazy begin\n+ let rec iter = function\n+ | [] -> [| \"bash.exe\" ; \"--norc\" ; \"--noprofile\" |]\n+ | hd::tl ->\n+ let dash = Filename.concat hd \"dash.exe\" in\n+ if Sys.file_exists dash then [|dash|] else\n+ let bash = Filename.concat hd \"bash.exe\" in\n+ if Sys.file_exists bash = false then iter tl else\n+ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *)\n+ let sh = Filename.concat hd \"sh.exe\" in\n+ if Sys.file_exists sh then [|sh|] else [|bash ; \"--norc\" ; \"--noprofile\"|]\n+ in\n+ split_path_win (try Sys.getenv \"PATH\" with Not_found -> \"\") |> iter\n+end\n+\n+let prep_windows_cmd cmd =\n+ (* workaround known ocaml bug, remove later *)\n+ if String.contains cmd '\\t' && String.contains cmd ' ' = false then\n+ \" \" ^ cmd\n+ else\n+ cmd\n+\n+let run_with_shell = function\n+| \"\" -> 0\n+| cmd ->\n+ let cmd = prep_windows_cmd cmd in\n+ let shell = Lazy.force windows_shell in\n+ let qlen = Filename.quote cmd |> String.length in\n+ (* old versions of dash had problems with bs *)\n+ try\n+ if qlen < 7_900 then\n+ command_plain (Array.append shell [| \"-ec\" ; cmd |])\n+ else begin\n+ (* it can still work, if the called command is a cygwin tool *)\n+ let ch_closed = ref false in\n+ let file_deleted = ref false in\n+ let fln,ch =\n+ Filename.open_temp_file\n+ ~mode:[Open_binary]\n+ \"ocamlbuildtmp\"\n+ \".sh\"\n+ in\n+ try\n+ let f_slash = String.map ( fun x -> if x = '\\\\' then '/' else x ) fln in\n+ output_string ch cmd;\n+ ch_closed:= true;\n+ close_out ch;\n+ let ret = command_plain (Array.append shell [| \"-e\" ; f_slash |]) in\n+ file_deleted:= true;\n+ Sys.remove fln;\n+ ret\n+ with\n+ | x ->\n+ if !ch_closed = false then\n+ close_out_noerr ch;\n+ if !file_deleted = false then\n+ (try Sys.remove fln with _ -> ());\n+ raise x\n+ end\n+ with\n+ | (Unix.Unix_error _) as x ->\n+ (* Sys.command doesn't raise an exception, so run_with_shell also won't\n+ raise *)\n+ Printexc.to_string x ^ \":\" ^ cmd |> prerr_endline;\n+ 1\n+\n let sys_command =\n- match Sys.os_type with\n- | \"Win32\" -> fun cmd ->\n- if cmd = \"\" then 0 else\n- let cmd = \"bash --norc -c \" ^ Filename.quote cmd in\n- Sys.command cmd\n- | _ -> fun cmd -> if cmd = \"\" then 0 else Sys.command cmd\n+ if Sys.win32 then run_with_shell\n+ else fun cmd -> if cmd = \"\" then 0 else Sys.command cmd\n \n (* FIXME warning fix and use Filename.concat *)\n let filename_concat x y =\n--- ./src/my_std.mli\n+++ ./src/my_std.mli\n@@ -69,3 +69,6 @@\n \n val split_ocaml_version : (int * int * int * string) option\n (** (major, minor, patchlevel, rest) *)\n+\n+val windows_shell : string array Lazy.t\n+val prep_windows_cmd : string -> string\n--- ./src/ocamlbuild_executor.ml\n+++ ./src/ocamlbuild_executor.ml\n@@ -34,6 +34,8 @@\n job_stdin : out_channel;\n job_stderr : in_channel;\n job_buffer : Buffer.t;\n+ job_pid : int;\n+ job_tmp_file: string option;\n mutable job_dying : bool;\n };;\n \n@@ -76,6 +78,61 @@\n in\n loop 0\n ;;\n+\n+let open_process_full_win cmd env =\n+ let (in_read, in_write) = Unix.pipe () in\n+ let (out_read, out_write) = Unix.pipe () in\n+ let (err_read, err_write) = Unix.pipe () in\n+ Unix.set_close_on_exec in_read;\n+ Unix.set_close_on_exec out_write;\n+ Unix.set_close_on_exec err_read;\n+ let inchan = Unix.in_channel_of_descr in_read in\n+ let outchan = Unix.out_channel_of_descr out_write in\n+ let errchan = Unix.in_channel_of_descr err_read in\n+ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in\n+ let test_cmd =\n+ String.concat \" \" (List.map Filename.quote (Array.to_list shell)) ^\n+ \"-ec \" ^\n+ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in\n+ let argv,tmp_file =\n+ if String.length test_cmd < 7_900 then\n+ Array.append\n+ shell\n+ [| \"-ec\" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None\n+ else\n+ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] \"ocamlbuild\" \".sh\" in\n+ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd);\n+ close_out ch;\n+ let fln' = String.map (function '\\\\' -> '/' | c -> c) fln in\n+ Array.append\n+ shell\n+ [| \"-c\" ; fln' |], Some fln in\n+ let pid =\n+ Unix.create_process_env argv.(0) argv env out_read in_write err_write in\n+ Unix.close out_read;\n+ Unix.close in_write;\n+ Unix.close err_write;\n+ (pid, inchan, outchan, errchan,tmp_file)\n+\n+let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) =\n+ let delete tmp_file =\n+ match tmp_file with\n+ | None -> ()\n+ | Some x -> try Sys.remove x with Sys_error _ -> () in\n+ let tmp_file_deleted = ref false in\n+ try\n+ close_in inchan;\n+ close_out outchan;\n+ close_in errchan;\n+ let res = snd(Unix.waitpid [] pid) in\n+ tmp_file_deleted := true;\n+ delete tmp_file;\n+ res\n+ with\n+ | x when tmp_file <> None && !tmp_file_deleted = false ->\n+ delete tmp_file;\n+ raise x\n+\n (* ***)\n (*** execute *)\n (* XXX: Add test for non reentrancy *)\n@@ -130,10 +187,16 @@\n (*** add_job *)\n let add_job cmd rest result id =\n (*display begin fun oc -> fp oc \"Job %a is %s\\n%!\" print_job_id id cmd; end;*)\n- let (stdout', stdin', stderr') = open_process_full cmd env in\n+ let (pid,stdout', stdin', stderr', tmp_file) =\n+ if Sys.win32 then open_process_full_win cmd env else\n+ let a,b,c = open_process_full cmd env in\n+ -1,a,b,c,None\n+ in\n incr jobs_active;\n- set_nonblock (doi stdout');\n- set_nonblock (doi stderr');\n+ if not Sys.win32 then (\n+ set_nonblock (doi stdout');\n+ set_nonblock (doi stderr');\n+ );\n let job =\n { job_id = id;\n job_command = cmd;\n@@ -143,7 +206,9 @@\n job_stdin = stdin';\n job_stderr = stderr';\n job_buffer = Buffer.create 1024;\n- job_dying = false }\n+ job_dying = false;\n+ job_tmp_file = tmp_file;\n+ job_pid = pid }\n in\n outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs);\n jobs := JS.add job !jobs;\n@@ -199,6 +264,7 @@\n try\n read fd u 0 (Bytes.length u)\n with\n+ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0\n | Unix.Unix_error(e,_,_) ->\n let msg = error_message e in\n display (fun oc -> fp oc\n@@ -241,14 +307,19 @@\n decr jobs_active;\n \n (* PR#5371: we would get EAGAIN below otherwise *)\n- clear_nonblock (doi job.job_stdout);\n- clear_nonblock (doi job.job_stderr);\n-\n+ if not Sys.win32 then (\n+ clear_nonblock (doi job.job_stdout);\n+ clear_nonblock (doi job.job_stderr);\n+ );\n do_read ~loop:true (doi job.job_stdout) job;\n do_read ~loop:true (doi job.job_stderr) job;\n outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs);\n jobs := JS.remove job !jobs;\n- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in\n+ let status =\n+ if Sys.win32 then\n+ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file)\n+ else\n+ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in\n \n let shown = ref false in\n \n--- ./src/ocamlbuild_unix_plugin.ml\n+++ ./src/ocamlbuild_unix_plugin.ml\n@@ -48,12 +48,22 @@\n end\n \n let run_and_open s kont =\n+ let s_orig = s in\n+ let s =\n+ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and\n+ sys_command uses bash. *)\n+ if Sys.win32 = false then s else\n+ let l = match Lazy.force My_std.windows_shell |> Array.to_list with\n+ | hd::tl -> (Filename.quote hd)::tl\n+ | _ -> assert false in\n+ \"\\\"\" ^ (String.concat \" \" l) ^ \" -ec \" ^ Filename.quote (\" \" ^ s) ^ \"\\\"\"\n+ in\n let ic = Unix.open_process_in s in\n let close () =\n match Unix.close_process_in ic with\n | Unix.WEXITED 0 -> ()\n | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ ->\n- failwith (Printf.sprintf \"Error while running: %s\" s) in\n+ failwith (Printf.sprintf \"Error while running: %s\" s_orig) in\n let res = try\n kont ic\n with e -> (close (); raise e)\n--- ./src/options.ml\n+++ ./src/options.ml\n@@ -174,11 +174,24 @@\n build_dir := Filename.concat (Sys.getcwd ()) s\n else\n build_dir := s\n+\n+let slashify =\n+ if Sys.win32 then fun p -> String.map (function '\\\\' -> '/' | x -> x) p\n+ else fun p ->p\n+\n+let sb () =\n+ match Sys.os_type with\n+ | \"Win32\" ->\n+ (try set_binary_mode_out stdout true with _ -> ());\n+ | _ -> ()\n+\n+\n let spec = ref (\n let print_version () =\n+ sb ();\n Printf.printf \"ocamlbuild %s\\n%!\" Ocamlbuild_config.version; raise Exit_OK\n in\n- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in\n+ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in\n Arg.align\n [\n \"-version\", Unit print_version , \" Display the version\";\n@@ -257,8 +270,8 @@\n \"-build-dir\", String set_build_dir, \" Set build directory (implies no-links)\";\n \"-install-lib-dir\", Set_string Ocamlbuild_where.libdir, \" Set the install library directory\";\n \"-install-bin-dir\", Set_string Ocamlbuild_where.bindir, \" Set the install binary directory\";\n- \"-where\", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), \" Display the install library directory\";\n- \"-which\", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), \" Display path to the tool command\";\n+ \"-where\", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), \" Display the install library directory\";\n+ \"-which\", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), \" Display path to the tool command\";\n \"-ocamlc\", set_cmd ocamlc, \" Set the OCaml bytecode compiler\";\n \"-plugin-ocamlc\", set_cmd plugin_ocamlc, \" Set the OCaml bytecode compiler \\\n used when building myocamlbuild.ml (only)\";\n--- ./src/pathname.ml\n+++ ./src/pathname.ml\n@@ -84,6 +84,26 @@\n | x :: xs -> x :: normalize_list xs\n \n let normalize x =\n+ let x =\n+ if Sys.win32 = false then\n+ x\n+ else\n+ let len = String.length x in\n+ let b = Bytes.create len in\n+ for i = 0 to pred len do\n+ match x.[i] with\n+ | '\\\\' -> Bytes.set b i '/'\n+ | c -> Bytes.set b i c\n+ done;\n+ if len > 1 then (\n+ let c1 = Bytes.get b 0 in\n+ let c2 = Bytes.get b 1 in\n+ if c2 = ':' && c1 >= 'a' && c1 <= 'z' &&\n+ ( len = 2 || Bytes.get b 2 = '/') then\n+ Bytes.set b 0 (Char.uppercase_ascii c1)\n+ );\n+ Bytes.unsafe_to_string b\n+ in\n if Glob.eval not_normal_form_re x then\n let root, paths = split x in\n join root (normalize_list paths)\n--- ./src/shell.ml\n+++ ./src/shell.ml\n@@ -24,12 +24,26 @@\n | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1)\n | _ -> false in\n loop 0\n+\n+let generic_quote quotequote s =\n+ let l = String.length s in\n+ let b = Buffer.create (l + 20) in\n+ Buffer.add_char b '\\'';\n+ for i = 0 to l - 1 do\n+ if s.[i] = '\\''\n+ then Buffer.add_string b quotequote\n+ else Buffer.add_char b s.[i]\n+ done;\n+ Buffer.add_char b '\\'';\n+ Buffer.contents b\n+let unix_quote = generic_quote \"'\\\\''\"\n+\n let quote_filename_if_needed s =\n if is_simple_filename s then s\n (* We should probably be using [Filename.unix_quote] except that function\n * isn't exported. Users on Windows will have to live with not being able to\n * install OCaml into c:\\o'caml. Too bad. *)\n- else if Sys.os_type = \"Win32\" then Printf.sprintf \"'%s'\" s\n+ else if Sys.os_type = \"Win32\" then unix_quote s\n else Filename.quote s\n let chdir dir =\n reset_filesys_cache ();\n@@ -37,7 +51,7 @@\n let run args target =\n reset_readdir_cache ();\n let cmd = String.concat \" \" (List.map quote_filename_if_needed args) in\n- if !*My_unix.is_degraded || Sys.os_type = \"Win32\" then\n+ if !*My_unix.is_degraded then\n begin\n Log.event cmd target Tags.empty;\n let st = sys_command cmd in\n", - "perm": 438 - } - ], - "opam": { - "name": "ocamlbuild", - "version": "0.12.0", - "opam": - "opam-version: \"2.0\"\nname: \"ocamlbuild\"\nversion: \"0.12.0\"\nsynopsis:\n \"OCamlbuild is a build system with builtin rules to easily build most OCaml projects.\"\nmaintainer: \"Gabriel Scherer \"\nauthors: [\"Nicolas Pouillard\" \"Berke Durak\"]\nlicense: \"LGPL-2 with OCaml linking exception\"\nhomepage: \"https://github.com/ocaml/ocamlbuild/\"\ndoc: \"https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc\"\nbug-reports: \"https://github.com/ocaml/ocamlbuild/issues\"\ndepends: [\n \"ocaml\" {>= \"4.03\" & < \"4.08.0\"}\n]\nconflicts: [\n \"base-ocamlbuild\"\n \"ocamlfind\" {< \"1.6.2\"}\n]\nbuild: [\n [\n make\n \"-f\"\n \"configure.make\"\n \"all\"\n \"OCAMLBUILD_PREFIX=%{prefix}%\"\n \"OCAMLBUILD_BINDIR=%{bin}%\"\n \"OCAMLBUILD_LIBDIR=%{lib}%\"\n \"OCAMLBUILD_MANDIR=%{man}%\"\n \"OCAML_NATIVE=%{ocaml:native}%\"\n \"OCAML_NATIVE_TOOLS=%{ocaml:native}%\"\n ]\n [make \"check-if-preinstalled\" \"all\" \"opam-install\"]\n]\ndev-repo: \"git+https://github.com/ocaml/ocamlbuild.git\"\nurl {\n src: \"https://github.com/ocaml/ocamlbuild/archive/0.12.0.tar.gz\"\n checksum: \"md5=442baa19470bd49150f153122e22907b\"\n}", - "override": { - "build": [ - [ - "bash", "-c", - "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.12.0.patch' : 'true'}" - ], - [ - "make", "-f", "configure.make", "all", - "OCAMLBUILD_PREFIX=#{self.install}", - "OCAMLBUILD_BINDIR=#{self.bin}", - "OCAMLBUILD_LIBDIR=#{self.lib}", - "OCAMLBUILD_MANDIR=#{self.man}", "OCAMLBUILD_NATIVE=true", - "OCAMLBUILD_NATIVE_TOOLS=true" - ], - [ - "make", "check-if-preinstalled", "all", - "#{os == 'windows' ? 'install' : 'opam-install'}" - ] - ] - } - } - }, - "dependencies": [ "@esy-ocaml/substs@0.0.1", "ocaml@4.6.7" ] - }, - "@opam/ocaml-migrate-parsetree@opam:1.1.0": { - "record": { - "name": "@opam/ocaml-migrate-parsetree", - "version": "opam:1.1.0", - "source": - "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.1.0/ocaml-migrate-parsetree-1.1.0.tbz#md5:7dd4808e27af98065f63604c9658d311", - "files": [], - "opam": { - "name": "ocaml-migrate-parsetree", - "version": "1.1.0", - "opam": - "opam-version: \"2.0\"\nname: \"ocaml-migrate-parsetree\"\nversion: \"1.1.0\"\nsynopsis: \"\"\ndescription: \"\"\"\nConvert OCaml parsetrees between different versions \n\nThis library converts parsetrees, outcometree and ast mappers between different OCaml versions.\nHigh-level functions help making PPX rewriters independent of a compiler version.\"\"\"\nmaintainer: \"frederic.bour@lakaban.net\"\nauthors: [\n \"Frédéric Bour \"\n \"Jérémie Dimino \"\n]\nlicense: \"LGPL-2.1\"\ntags: [\"syntax\" \"org:ocamllabs\"]\nhomepage: \"https://github.com/ocaml-ppx/ocaml-migrate-parsetree\"\ndoc: \"https://ocaml-ppx.github.io/ocaml-migrate-parsetree/\"\nbug-reports: \"https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues\"\ndepends: [\n \"result\"\n \"dune\" {build}\n \"ocaml\" {>= \"4.02.0\"}\n]\nbuild: [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\ndev-repo: \"git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git\"\nurl {\n src:\n \"https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.1.0/ocaml-migrate-parsetree-1.1.0.tbz\"\n checksum: \"md5=7dd4808e27af98065f63604c9658d311\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/dune@opam:1.4.0", - "@opam/result@opam:1.3", "ocaml@4.6.7" - ] - }, - "@opam/merlin-extend@opam:0.3": { - "record": { - "name": "@opam/merlin-extend", - "version": "opam:0.3", - "source": - "archive:https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz#md5:9c6dfd4f53328f02f12fcc265f4e2dda", - "files": [ - { - "name": "merlin-extend-winfix.patch", - "content": - "--- ./extend_helper.ml\n+++ ./extend_helper.ml\n@@ -1,13 +1,6 @@\n-(*pp cppo -V OCAML:`ocamlc -version` *)\n open Parsetree\n open Extend_protocol\n \n-#if OCAML_VERSION < (4, 3, 0)\n-# define CONST_STRING Asttypes.Const_string\n-#else\n-# define CONST_STRING Parsetree.Pconst_string\n-#endif\n-\n (** Default implementation for [Reader_def.print_outcome] using\n [Oprint] from compiler-libs *)\n let print_outcome_using_oprint ppf = function\n@@ -28,7 +21,7 @@\n pstr_loc = Location.none;\n pstr_desc = Pstr_eval ({\n pexp_loc = Location.none;\n- pexp_desc = Pexp_constant (CONST_STRING (msg, None));\n+ pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, None));\n pexp_attributes = [];\n }, []);\n }]\n@@ -112,7 +105,7 @@\n let msg = match payload with\n | PStr [{\n pstr_desc = Pstr_eval ({\n- pexp_desc = Pexp_constant (CONST_STRING (msg, _));\n+ pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, _));\n }, _);\n }] -> msg\n | _ -> \"Warning: extension produced an incorrect syntax-error node\"\n", - "perm": 438 - } - ], - "opam": { - "name": "merlin-extend", - "version": "0.3", - "opam": - "opam-version: \"2.0\"\nname: \"merlin-extend\"\nversion: \"0.3\"\nsynopsis: \"A protocol to provide custom frontend to Merlin\"\ndescription: \"\"\"\nThis protocol allows to replace the OCaml frontend of Merlin.\nIt extends what used to be done with the `-pp' flag to handle a few more cases.\"\"\"\nmaintainer: \"Frederic Bour \"\nauthors: \"Frederic Bour \"\nlicense: \"MIT\"\nhomepage: \"https://github.com/let-def/merlin-extend\"\nbug-reports: \"https://github.com/let-def/merlin-extend\"\ndepends: [\n \"ocaml\" {>= \"4.02.3\"}\n \"ocamlfind\" {build}\n \"cppo\" {build}\n]\nflags: light-uninstall\nbuild: make\ninstall: [make \"install\"]\nremove: [\"ocamlfind\" \"remove\" \"merlin_extend\"]\ndev-repo: \"git+https://github.com/let-def/merlin-extend.git\"\nurl {\n src: \"https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz\"\n checksum: \"md5=9c6dfd4f53328f02f12fcc265f4e2dda\"\n}", - "override": { - "build": [ - [ - "bash", "-c", - "#{os == 'windows' ? 'patch -p1 < merlin-extend-winfix.patch' : 'true'}" - ], - [ "make" ] - ] - } - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/cppo@opam:1.6.5", - "@opam/ocamlfind@opam:1.8.0", "ocaml@4.6.7" - ] - }, - "@opam/menhir@opam:20171013": { - "record": { - "name": "@opam/menhir", - "version": "opam:20171013", - "source": - "archive:http://gallium.inria.fr/~fpottier/menhir/menhir-20171013.tar.gz#md5:620863edea40437390ee5e5bd82fba11", - "files": [ - { - "name": "menhir-20171013.patch", - "content": - "--- ./Makefile\n+++ ./Makefile\n@@ -59,13 +59,8 @@\n \n # If the compiler is MSVC, then object file names end in .obj instead of .o.\n \n-ifneq (,$(shell ocamlc -config | grep -E \"ccomp_type: msvc\"))\n- OBJ := obj\n-# LIBSUFFIX := lib\n-else\n- OBJ := o\n-# LIBSUFFIX := a\n-endif\n+OBJ := $(shell ocamlc -config | awk -F '[\\t \\r]+' '/^ext_obj:/ {print $$2}' | tr -d '.')\n+#LIBSUFFIX := $(shell ocamlc -config | awk -F '[\\t \\r]+' '/^ext_lib:/ {print $$2}' | tr -d '.')\n \n # If we are under Windows (regardless of whether we are using MSVC or mingw)\n # then the name of the executable file ends in .exe.\n@@ -91,8 +86,9 @@\n # performed if \"os_type\" is \"Win32\" or \"Win64\", and must not be performed if\n # \"os_type\" is \"Cygwin\" or \"Unix\".\n \n-ifneq (,$(shell ocamlc -config | grep -E \"os_type: (Win32|Win64)\"))\n-installation_libdir := $(shell cygpath -m $(libdir))\n+OS_TYPE:=\t$(shell ocamlc -config | awk -F '[\\t \\r]+' '/^os_type:/ {print $$2}')\n+ifeq ($(OS_TYPE),Win32)\n+installation_libdir := $(shell cygpath -m $(libdir) || echo $(libdir))\n else\n installation_libdir := $(libdir)\n endif\n--- ./src/cmly_write.ml\n+++ ./src/cmly_write.ml\n@@ -168,6 +168,6 @@\n output_value oc (t : grammar)\n \n let write filename =\n- let oc = open_out filename in\n+ let oc = open_out_bin filename in\n write oc (encode());\n close_out oc\n", - "perm": 438 - } - ], - "opam": { - "name": "menhir", - "version": "20171013", - "opam": - "opam-version: \"2.0\"\nname: \"menhir\"\nversion: \"20171013\"\nsynopsis: \"LR(1) parser generator\"\nmaintainer: \"francois.pottier@inria.fr\"\nauthors: [\n \"François Pottier \"\n \"Yann Régis-Gianas \"\n]\nhomepage: \"http://gallium.inria.fr/~fpottier/menhir/\"\nbug-reports: \"menhir@inria.fr\"\ndepends: [\n \"ocaml\" {>= \"4.02\"}\n \"ocamlfind\"\n \"ocamlbuild\" {build}\n]\nbuild: [\n make\n \"-f\"\n \"Makefile\"\n \"PREFIX=%{prefix}%\"\n \"USE_OCAMLFIND=true\"\n \"docdir=%{doc}%/menhir\"\n \"libdir=%{lib}%/menhir\"\n \"mandir=%{man}%/man1\"\n]\ninstall: [\n make\n \"-f\"\n \"Makefile\"\n \"install\"\n \"PREFIX=%{prefix}%\"\n \"docdir=%{doc}%/menhir\"\n \"libdir=%{lib}%/menhir\"\n \"mandir=%{man}%/man1\"\n]\nremove: [\n make\n \"-f\"\n \"Makefile\"\n \"uninstall\"\n \"PREFIX=%{prefix}%\"\n \"docdir=%{doc}%/menhir\"\n \"libdir=%{lib}%/menhir\"\n \"mandir=%{man}%/man1\"\n]\ndev-repo: \"git+https://gitlab.inria.fr/fpottier/menhir.git\"\nurl {\n src: \"http://gallium.inria.fr/~fpottier/menhir/menhir-20171013.tar.gz\"\n checksum: \"md5=620863edea40437390ee5e5bd82fba11\"\n}", - "override": { - "build": [ - [ - "bash", "-c", - "#{os == 'windows' ? 'patch -p1 < menhir-20171013.patch' : 'true'}" - ], - [ - "make", "-f", "Makefile", "PREFIX=#{self.install}", - "USE_OCAMLFIND=true", "docdir=#{self.doc}/menhir", - "libdir=#{self.lib}/menhir", "mandir=#{self.man}/man1" - ] - ] - } - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/ocamlbuild@opam:0.12.0", - "@opam/ocamlfind@opam:1.8.0", "ocaml@4.6.7" - ] - }, - "@opam/js_of_ocaml-compiler@opam:3.2.1": { - "record": { - "name": "@opam/js_of_ocaml-compiler", - "version": "opam:3.2.1", - "source": - "archive:https://github.com/ocsigen/js_of_ocaml/archive/3.2.1.tar.gz#md5:5ebfb1bf85dc90e45e0f7ca71a9053b4", - "files": [], - "opam": { - "name": "js_of_ocaml-compiler", - "version": "3.2.1", - "opam": - "opam-version: \"2.0\"\nname: \"js_of_ocaml-compiler\"\nversion: \"3.2.1\"\nsynopsis: \"Compiler from OCaml bytecode to Javascript\"\nmaintainer: \"dev@ocsigen.org\"\nauthors: \"Ocsigen team\"\nhomepage: \"http://ocsigen.org/js_of_ocaml\"\nbug-reports: \"https://github.com/ocsigen/js_of_ocaml/issues\"\ndepends: [\n \"ocaml\" {>= \"4.02.0\"}\n \"jbuilder\" {build & >= \"1.0+beta17\"}\n \"cmdliner\"\n \"cppo\" {>= \"1.1.0\"}\n \"ocamlfind\"\n \"yojson\"\n]\nconflicts: [\n \"ocamlfind\" {< \"1.5.1\"}\n \"js_of_ocaml\" {< \"3.0\"}\n]\nbuild: [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\ndev-repo: \"git+https://github.com/ocsigen/js_of_ocaml.git\"\nurl {\n src: \"https://github.com/ocsigen/js_of_ocaml/archive/3.2.1.tar.gz\"\n checksum: \"md5=5ebfb1bf85dc90e45e0f7ca71a9053b4\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/cmdliner@opam:1.0.2", - "@opam/cppo@opam:1.6.5", "@opam/jbuilder@opam:transition", - "@opam/ocamlfind@opam:1.8.0", "@opam/yojson@opam:1.4.1", - "ocaml@4.6.7" - ] - }, - "@opam/jbuilder@opam:transition": { - "record": { - "name": "@opam/jbuilder", - "version": "opam:transition", - "source": "no-source:", - "files": [], - "opam": { - "name": "jbuilder", - "version": "transition", - "opam": - "opam-version: \"2.0\"\nname: \"jbuilder\"\nversion: \"transition\"\nsynopsis:\n \"This is a transition package, jbuilder is now named dune. Use the dune\"\ndescription: \"package instead.\"\nmaintainer: \"opensource@janestreet.com\"\nauthors: \"Jane Street Group, LLC \"\nlicense: \"MIT\"\nhomepage: \"https://github.com/ocaml/dune\"\nbug-reports: \"https://github.com/ocaml/dune/issues\"\ndepends: [\"ocaml\" \"dune\"]\npost-messages:\n \"Jbuilder has been renamed and the jbuilder package is now a transition package. Use the dune package instead.\"\ndev-repo: \"git+https://github.com/ocaml/dune.git\"", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/dune@opam:1.4.0", "ocaml@4.6.7" - ] - }, - "@opam/easy-format@opam:1.3.1": { - "record": { - "name": "@opam/easy-format", - "version": "opam:1.3.1", - "source": - "archive:https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz#md5:4e163700fb88fdcd6b8976c3a216c8ea", - "files": [], - "opam": { - "name": "easy-format", - "version": "1.3.1", - "opam": - "opam-version: \"2.0\"\nname: \"easy-format\"\nversion: \"1.3.1\"\nsynopsis:\n \"High-level and functional interface to the Format module of the OCaml standard library\"\nmaintainer: \"martin@mjambon.com\"\nauthors: \"Martin Jambon\"\nhomepage: \"http://mjambon.com/easy-format.html\"\nbug-reports: \"https://github.com/mjambon/easy-format/issues\"\ndepends: [\n \"ocaml\" {>= \"4.02.3\"}\n \"jbuilder\" {build}\n]\nbuild: [\n [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\n [\"jbuilder\" \"runtest\" \"-p\" name] {with-test}\n]\ndev-repo: \"git+https://github.com/mjambon/easy-format.git\"\nurl {\n src: \"https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz\"\n checksum: \"md5=4e163700fb88fdcd6b8976c3a216c8ea\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/jbuilder@opam:transition", - "ocaml@4.6.7" - ] - }, - "@opam/dune@opam:1.4.0": { - "record": { - "name": "@opam/dune", - "version": "opam:1.4.0", - "source": - "archive:https://github.com/ocaml/dune/releases/download/1.4.0/dune-1.4.0.tbz#md5:dc862e5d821ff4d8bef16a78bd472431", - "files": [], - "opam": { - "name": "dune", - "version": "1.4.0", - "opam": - "opam-version: \"2.0\"\nname: \"dune\"\nversion: \"1.4.0\"\nsynopsis: \"Fast, portable and opinionated build system\"\ndescription: \"\"\"\ndune is a build system that was designed to simplify the release of\nJane Street packages. It reads metadata from \"dune\" files following a\nvery simple s-expression syntax.\n\ndune is fast, it has very low-overhead and support parallel builds on\nall platforms. It has no system dependencies, all you need to build\ndune and packages using dune is OCaml. You don't need or make or bash\nas long as the packages themselves don't use bash explicitly.\n\ndune supports multi-package development by simply dropping multiple\nrepositories into the same directory.\n\nIt also supports multi-context builds, such as building against\nseveral opam roots/switches simultaneously. This helps maintaining\npackages across several versions of OCaml and gives cross-compilation\nfor free.\"\"\"\nmaintainer: \"opensource@janestreet.com\"\nauthors: \"Jane Street Group, LLC \"\nlicense: \"MIT\"\nhomepage: \"https://github.com/ocaml/dune\"\nbug-reports: \"https://github.com/ocaml/dune/issues\"\ndepends: [\n \"ocaml\" {>= \"4.02\"}\n]\nconflicts: [\n \"jbuilder\" {!= \"transition\"}\n]\nbuild: [\n [\"ocaml\" \"configure.ml\" \"--libdir\" lib] {opam-version < \"2\"}\n [\"ocaml\" \"bootstrap.ml\"]\n [\"./boot.exe\" \"--release\" \"--subst\"] {pinned}\n [\"./boot.exe\" \"--release\" \"-j\" jobs]\n]\ndev-repo: \"git+https://github.com/ocaml/dune.git\"\nurl {\n src: \"https://github.com/ocaml/dune/releases/download/1.4.0/dune-1.4.0.tbz\"\n checksum: \"md5=dc862e5d821ff4d8bef16a78bd472431\"\n}", - "override": { - "build": [ - [ "ocaml", "bootstrap.ml" ], - [ "./boot.exe", "--release", "-j", "4" ] - ] - } - } - }, - "dependencies": [ "@esy-ocaml/substs@0.0.1", "ocaml@4.6.7" ] - }, - "@opam/cppo@opam:1.6.5": { - "record": { - "name": "@opam/cppo", - "version": "opam:1.6.5", - "source": - "archive:https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz#md5:1cd25741d31417995b0973fe0b6f6c82", - "files": [], - "opam": { - "name": "cppo", - "version": "1.6.5", - "opam": - "opam-version: \"2.0\"\nname: \"cppo\"\nversion: \"1.6.5\"\nsynopsis: \"Equivalent of the C preprocessor for OCaml programs\"\nmaintainer: \"martin@mjambon.com\"\nauthors: \"Martin Jambon\"\nlicense: \"BSD-3-Clause\"\nhomepage: \"https://github.com/mjambon/cppo\"\nbug-reports: \"https://github.com/mjambon/cppo/issues\"\ndepends: [\n \"ocaml\"\n \"jbuilder\" {build & >= \"1.0+beta17\"}\n \"base-unix\"\n]\nbuild: [\n [\"jbuilder\" \"subst\" \"-p\" name] {pinned}\n [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\n [\"jbuilder\" \"runtest\" \"-p\" name] {with-test}\n]\ndev-repo: \"git+https://github.com/mjambon/cppo.git\"\nurl {\n src: \"https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz\"\n checksum: \"md5=1cd25741d31417995b0973fe0b6f6c82\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/base-unix@opam:base", - "@opam/jbuilder@opam:transition", "ocaml@4.6.7" - ] - }, - "@opam/conf-which@opam:1": { - "record": { - "name": "@opam/conf-which", - "version": "opam:1", - "source": "no-source:", - "files": [], - "opam": { - "name": "conf-which", - "version": "1", - "opam": - "opam-version: \"2.0\"\nname: \"conf-which\"\nversion: \"1\"\nsynopsis: \"Virtual package relying on which\"\ndescription:\n \"This package can only install if the which program is installed on the system.\"\nmaintainer: \"unixjunkie@sdf.org\"\nauthors: \"Carlo Wood\"\nlicense: \"GPL-2+\"\nhomepage: \"http://www.gnu.org/software/which/\"\nbug-reports: \"https://github.com/ocaml/opam-repository/issues\"\nbuild: [\"which\" \"which\"]\ndepexts: [\n [\"which\"] {os-distribution = \"centos\"}\n [\"which\"] {os-distribution = \"fedora\"}\n [\"which\"] {os-distribution = \"opensuse\"}\n [\"debianutils\"] {os-distribution = \"debian\"}\n [\"debianutils\"] {os-distribution = \"ubuntu\"}\n [\"which\"] {os-distribution = \"nixos\"}\n [\"which\"] {os-distribution = \"archlinux\"}\n]", - "override": null - } - }, - "dependencies": [ "@esy-ocaml/substs@0.0.1" ] - }, - "@opam/conf-m4@opam:1": { - "record": { - "name": "@opam/conf-m4", - "version": "opam:1", - "source": "no-source:", - "files": [], - "opam": { - "name": "conf-m4", - "version": "1", - "opam": - "opam-version: \"2.0\"\nname: \"conf-m4\"\nversion: \"1\"\nsynopsis: \"Virtual package relying on m4\"\ndescription:\n \"This package can only install if the m4 binary is installed on the system.\"\nmaintainer: \"tim@gfxmonk.net\"\nauthors: \"GNU Project\"\nlicense: \"GPL-3\"\nhomepage: \"http://www.gnu.org/software/m4/m4.html\"\nbug-reports: \"https://github.com/ocaml/opam-repository/issues\"\nbuild: [\"sh\" \"-exc\" \"echo | m4\"]\ndepexts: [\n [\"m4\"] {os-distribution = \"debian\"}\n [\"m4\"] {os-distribution = \"ubuntu\"}\n [\"m4\"] {os-distribution = \"fedora\"}\n [\"m4\"] {os-distribution = \"rhel\"}\n [\"m4\"] {os-distribution = \"centos\"}\n [\"m4\"] {os-distribution = \"alpine\"}\n [\"m4\"] {os-distribution = \"nixos\"}\n [\"m4\"] {os-distribution = \"opensuse\"}\n [\"m4\"] {os-distribution = \"oraclelinux\"}\n [\"m4\"] {os-distribution = \"archlinux\"}\n]", - "override": null - } - }, - "dependencies": [ "@esy-ocaml/substs@0.0.1" ] - }, - "@opam/cmdliner@opam:1.0.2": { - "record": { - "name": "@opam/cmdliner", - "version": "opam:1.0.2", - "source": - "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.2.tbz#md5:ab2f0130e88e8dcd723ac6154c98a881", - "files": [], - "opam": { - "name": "cmdliner", - "version": "1.0.2", - "opam": - "opam-version: \"2.0\"\nname: \"cmdliner\"\nversion: \"1.0.2\"\nsynopsis: \"Declarative definition of command line interfaces for OCaml\"\ndescription: \"\"\"\nCmdliner allows the declarative definition of command line interfaces\nfor OCaml.\n\nIt provides a simple and compositional mechanism to convert command\nline arguments to OCaml values and pass them to your functions. The\nmodule automatically handles syntax errors, help messages and UNIX man\npage generation. It supports programs with single or multiple commands\nand respects most of the [POSIX][1] and [GNU][2] conventions.\n\nCmdliner has no dependencies and is distributed under the ISC license.\n\n[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html\n[2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html\"\"\"\nmaintainer: \"Daniel Bünzli \"\nauthors: \"Daniel Bünzli \"\nlicense: \"ISC\"\ntags: [\"cli\" \"system\" \"declarative\" \"org:erratique\"]\nhomepage: \"http://erratique.ch/software/cmdliner\"\ndoc: \"http://erratique.ch/software/cmdliner/doc/Cmdliner\"\nbug-reports: \"https://github.com/dbuenzli/cmdliner/issues\"\ndepends: [\n \"ocaml\" {>= \"4.01.0\"}\n \"ocamlfind\" {build}\n \"ocamlbuild\" {build}\n \"topkg\" {build}\n \"result\"\n]\nbuild: [\"ocaml\" \"pkg/pkg.ml\" \"build\" \"--pinned\" \"%{pinned}%\"]\ndev-repo: \"git+http://erratique.ch/repos/cmdliner.git\"\nurl {\n src: \"http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.2.tbz\"\n checksum: \"md5=ab2f0130e88e8dcd723ac6154c98a881\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/ocamlbuild@opam:0.12.0", - "@opam/ocamlfind@opam:1.8.0", "@opam/result@opam:1.3", - "@opam/topkg@opam:0.9.1", "ocaml@4.6.7" - ] - }, - "@opam/biniou@opam:1.2.0": { - "record": { - "name": "@opam/biniou", - "version": "opam:1.2.0", - "source": - "archive:https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz#md5:f3e92358e832ed94eaf23ce622ccc2f9", - "files": [], - "opam": { - "name": "biniou", - "version": "1.2.0", - "opam": - "opam-version: \"2.0\"\nname: \"biniou\"\nversion: \"1.2.0\"\nsynopsis:\n \"Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve\"\nmaintainer: \"martin@mjambon.com\"\nauthors: \"Martin Jambon\"\nlicense: \"BSD-3-Clause\"\nhomepage: \"https://github.com/mjambon/biniou\"\nbug-reports: \"https://github.com/mjambon/biniou/issues\"\ndepends: [\n \"ocaml\" {>= \"4.02.3\"}\n \"conf-which\" {build}\n \"jbuilder\" {build & >= \"1.0+beta7\"}\n \"easy-format\"\n]\nbuild: [\n [\"jbuilder\" \"build\" \"-p\" name \"-j\" jobs]\n [\"jbuilder\" \"runtest\" \"-p\" name] {with-test}\n]\ndev-repo: \"git+https://github.com/mjambon/biniou.git\"\nurl {\n src: \"https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz\"\n checksum: \"md5=f3e92358e832ed94eaf23ce622ccc2f9\"\n}", - "override": null - } - }, - "dependencies": [ - "@esy-ocaml/substs@0.0.1", "@opam/conf-which@opam:1", - "@opam/easy-format@opam:1.3.1", "@opam/jbuilder@opam:transition", - "ocaml@4.6.7" - ] - }, - "@opam/base-unix@opam:base": { - "record": { - "name": "@opam/base-unix", - "version": "opam:base", - "source": "no-source:", - "files": [], - "opam": { - "name": "base-unix", - "version": "base", - "opam": - "opam-version: \"2.0\"\nname: \"base-unix\"\nversion: \"base\"\nsynopsis: \"\"\ndescription: \"Unix library distributed with the OCaml compiler\"\nmaintainer: \"https://github.com/ocaml/opam-repository/issues\"", - "override": null - } - }, - "dependencies": [ "@esy-ocaml/substs@0.0.1" ] - }, - "@esy-ocaml/substs@0.0.1": { - "record": { - "name": "@esy-ocaml/substs", - "version": "0.0.1", - "source": - "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46", - "files": [], - "opam": null - }, - "dependencies": [] - }, - "@esy-ocaml/reason@3.3.3": { - "record": { - "name": "@esy-ocaml/reason", - "version": "3.3.3", - "source": - "archive:https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.3.3.tgz#sha1:cd4c673504f7217a11a77089b021b5ba9ed1f744", - "files": [], - "opam": null - }, - "dependencies": [ - "@esy-ocaml/esy-installer@0.0.1", "@esy-ocaml/substs@0.0.1", - "@opam/jbuilder@opam:transition", "@opam/menhir@opam:20171013", - "@opam/merlin-extend@opam:0.3", - "@opam/ocaml-migrate-parsetree@opam:1.1.0", - "@opam/ocamlfind@opam:1.8.0", "@opam/result@opam:1.3" - ] - }, - "@esy-ocaml/merlin@3.0.5005": { - "record": { - "name": "@esy-ocaml/merlin", - "version": "3.0.5005", - "source": - "archive:https://registry.npmjs.org/@esy-ocaml/merlin/-/merlin-3.0.5005.tgz#sha1:4a9e2b4df20672524603b7b1797b7761d5d0d9ad", - "files": [], - "opam": null - }, - "dependencies": [ - "@esy-ocaml/esy-installer@0.0.1", "@esy-ocaml/substs@0.0.1", - "@opam/ocamlfind@opam:1.8.0", "@opam/yojson@opam:1.4.1" - ] - }, - "@esy-ocaml/esy-installer@0.0.1": { - "record": { - "name": "@esy-ocaml/esy-installer", - "version": "0.0.1", - "source": - "archive:https://registry.npmjs.org/@esy-ocaml/esy-installer/-/esy-installer-0.0.1.tgz#sha1:420c65f7e5f9bafa3da578532c352acdf00837aa", - "files": [], - "opam": null - }, - "dependencies": [] - } - } -} \ No newline at end of file diff --git a/esy.lock/.gitattributes b/esy.lock/.gitattributes new file mode 100644 index 0000000..25366ae --- /dev/null +++ b/esy.lock/.gitattributes @@ -0,0 +1,3 @@ + +# Set eol to LF so files aren't converted to CRLF-eol on Windows. +* text eol=lf diff --git a/esy.lock/.gitignore b/esy.lock/.gitignore new file mode 100644 index 0000000..a221be2 --- /dev/null +++ b/esy.lock/.gitignore @@ -0,0 +1,3 @@ + +# Reset any possible .gitignore, we want all esy.lock to be un-ignored. +!* diff --git a/esy.lock/index.json b/esy.lock/index.json new file mode 100644 index 0000000..1be2bfe --- /dev/null +++ b/esy.lock/index.json @@ -0,0 +1,936 @@ +{ + "checksum": "8e06d636acfcfe0ad3d483ff13f54899", + "root": "reason-gl-matrix@link-dev:./package.json", + "node": { + "refmterr@3.2.2@d41d8cd9": { + "id": "refmterr@3.2.2@d41d8cd9", + "name": "refmterr", + "version": "3.2.2", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/refmterr/-/refmterr-3.2.2.tgz#sha1:b7d6c5df6a37633ec82d339dc609b1867e54e55e" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@reason-native/pastel@0.2.2@d41d8cd9", + "@reason-native/console@0.1.0@d41d8cd9", + "@opam/re@opam:1.9.0@d4d5e13d", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/atdgen@opam:2.0.0@46af0360", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "reason-gl-matrix@link-dev:./package.json": { + "id": "reason-gl-matrix@link-dev:./package.json", + "name": "reason-gl-matrix", + "version": "link-dev:./package.json", + "source": { + "type": "link-dev", + "path": ".", + "manifest": "package.json" + }, + "overrides": [], + "dependencies": [ + "@opam/js_of_ocaml-compiler@opam:3.5.0@9b63f33c", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [ + "refmterr@3.2.2@d41d8cd9", "@reason-native/rely@3.1.0@d41d8cd9", + "@opam/merlin@opam:3.3.2@7a364181" + ] + }, + "ocaml@4.8.1000@d41d8cd9": { + "id": "ocaml@4.8.1000@d41d8cd9", + "name": "ocaml", + "version": "4.8.1000", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.8.1000.tgz#sha1:abc435b5d4ddea2acba8b2df7efb81e2d1690db1" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@reason-native/rely@3.1.0@d41d8cd9": { + "id": "@reason-native/rely@3.1.0@d41d8cd9", + "name": "@reason-native/rely", + "version": "3.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/rely/-/rely-3.1.0.tgz#sha1:4f59906dc7c18ba86c998e44d6463b6be866dfc6" + ] + }, + "overrides": [], + "dependencies": [ + "refmterr@3.2.2@d41d8cd9", "ocaml@4.8.1000@d41d8cd9", + "@reason-native/pastel@0.2.2@d41d8cd9", + "@reason-native/file-context-printer@0.0.3@d41d8cd9", + "@opam/re@opam:1.9.0@d4d5e13d", "@opam/junit@opam:2.0.1@1b4d302c", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@reason-native/pastel@0.2.2@d41d8cd9": { + "id": "@reason-native/pastel@0.2.2@d41d8cd9", + "name": "@reason-native/pastel", + "version": "0.2.2", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/pastel/-/pastel-0.2.2.tgz#sha1:a1f7fe266223aaf7915a71f5c8b9ee58e065c62a" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/re@opam:1.9.0@d4d5e13d", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@reason-native/file-context-printer@0.0.3@d41d8cd9": { + "id": "@reason-native/file-context-printer@0.0.3@d41d8cd9", + "name": "@reason-native/file-context-printer", + "version": "0.0.3", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/file-context-printer/-/file-context-printer-0.0.3.tgz#sha1:b92eec7b10107ccb27528f9eea9bb51252bca491" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@reason-native/pastel@0.2.2@d41d8cd9", + "@opam/re@opam:1.9.0@d4d5e13d", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@reason-native/console@0.1.0@d41d8cd9": { + "id": "@reason-native/console@0.1.0@d41d8cd9", + "name": "@reason-native/console", + "version": "0.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@reason-native/console/-/console-0.1.0.tgz#sha1:3b56f0e9e1be8464329793df29020aa90e71c22c" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/reason@3.5.2@d41d8cd9" + ], + "devDependencies": [] + }, + "@opam/yojson@opam:1.7.0@7056d985": { + "id": "@opam/yojson@opam:1.7.0@7056d985", + "name": "@opam/yojson", + "version": "opam:1.7.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/b8/b89d39ca3f8c532abe5f547ad3b8f84d#md5:b89d39ca3f8c532abe5f547ad3b8f84d", + "archive:https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz#md5:b89d39ca3f8c532abe5f547ad3b8f84d" + ], + "opam": { + "name": "yojson", + "version": "1.7.0", + "path": "esy.lock/opam/yojson.1.7.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd", "@opam/cppo@opam:1.6.6@f4f83858", + "@opam/biniou@opam:1.2.1@d7570399", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd", "@opam/biniou@opam:1.2.1@d7570399" + ] + }, + "@opam/uutf@opam:1.0.2@4440868f": { + "id": "@opam/uutf@opam:1.0.2@4440868f", + "name": "@opam/uutf", + "version": "opam:1.0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/a7/a7c542405a39630c689a82bd7ef2292c#md5:a7c542405a39630c689a82bd7ef2292c", + "archive:http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz#md5:a7c542405a39630c689a82bd7ef2292c" + ], + "opam": { + "name": "uutf", + "version": "1.0.2", + "path": "esy.lock/opam/uutf.1.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", + "@opam/topkg@opam:1.0.1@a42c631e", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea" + ] + }, + "@opam/uchar@opam:0.0.2@c8218eea": { + "id": "@opam/uchar@opam:0.0.2@c8218eea", + "name": "@opam/uchar", + "version": "opam:0.0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", + "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" + ], + "opam": { + "name": "uchar", + "version": "0.0.2", + "path": "esy.lock/opam/uchar.0.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/tyxml@opam:4.3.0@c1da25f1": { + "id": "@opam/tyxml@opam:4.3.0@c1da25f1", + "name": "@opam/tyxml", + "version": "opam:4.3.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/fd/fd834a567f813bf447cab5f4c3a723e2#md5:fd834a567f813bf447cab5f4c3a723e2", + "archive:https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz#md5:fd834a567f813bf447cab5f4c3a723e2" + ], + "opam": { + "name": "tyxml", + "version": "4.3.0", + "path": "esy.lock/opam/tyxml.4.3.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@d4d5e13d", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@d4d5e13d", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/topkg@opam:1.0.1@a42c631e": { + "id": "@opam/topkg@opam:1.0.1@a42c631e", + "name": "@opam/topkg", + "version": "opam:1.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/16/16b90e066d8972a5ef59655e7c28b3e9#md5:16b90e066d8972a5ef59655e7c28b3e9", + "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz#md5:16b90e066d8972a5ef59655e7c28b3e9" + ], + "opam": { + "name": "topkg", + "version": "1.0.1", + "path": "esy.lock/opam/topkg.1.0.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03" + ] + }, + "@opam/seq@opam:base@d8d7de1d": { + "id": "@opam/seq@opam:base@d8d7de1d", + "name": "@opam/seq", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "seq", + "version": "base", + "path": "esy.lock/opam/seq.base" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/result@opam:1.4@dc720aef": { + "id": "@opam/result@opam:1.4@dc720aef", + "name": "@opam/result", + "version": "opam:1.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/d3/d3162dbc501a2af65c8c71e0866541da#md5:d3162dbc501a2af65c8c71e0866541da", + "archive:https://github.com/janestreet/result/archive/1.4.tar.gz#md5:d3162dbc501a2af65c8c71e0866541da" + ], + "opam": { + "name": "result", + "version": "1.4", + "path": "esy.lock/opam/result.1.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/re@opam:1.9.0@d4d5e13d": { + "id": "@opam/re@opam:1.9.0@d4d5e13d", + "name": "@opam/re", + "version": "opam:1.9.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/bd/bddaed4f386a22cace7850c9c7dac296#md5:bddaed4f386a22cace7850c9c7dac296", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz#md5:bddaed4f386a22cace7850c9c7dac296" + ], + "opam": { + "name": "re", + "version": "1.9.0", + "path": "esy.lock/opam/re.1.9.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/ptime@opam:0.8.5@0051d642": { + "id": "@opam/ptime@opam:0.8.5@0051d642", + "name": "@opam/ptime", + "version": "opam:0.8.5", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/4d/4d48055d623ecf2db792439b3e96a520#md5:4d48055d623ecf2db792439b3e96a520", + "archive:https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz#md5:4d48055d623ecf2db792439b3e96a520" + ], + "opam": { + "name": "ptime", + "version": "0.8.5", + "path": "esy.lock/opam/ptime.0.8.5" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", + "@opam/result@opam:1.4@dc720aef", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef" + ] + }, + "@opam/ppx_derivers@opam:1.2.1@ecf0aa45": { + "id": "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "name": "@opam/ppx_derivers", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/5d/5dc2bf130c1db3c731fe0fffc5648b41#md5:5dc2bf130c1db3c731fe0fffc5648b41", + "archive:https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz#md5:5dc2bf130c1db3c731fe0fffc5648b41" + ], + "opam": { + "name": "ppx_derivers", + "version": "1.2.1", + "path": "esy.lock/opam/ppx_derivers.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/ocamlfind@opam:1.8.1@ff07b0f9": { + "id": "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "name": "@opam/ocamlfind", + "version": "opam:1.8.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/18/18ca650982c15536616dea0e422cbd8c#md5:18ca650982c15536616dea0e422cbd8c", + "archive:http://download2.camlcity.org/download/findlib-1.8.1.tar.gz#md5:18ca650982c15536616dea0e422cbd8c", + "archive:http://download.camlcity.org/download/findlib-1.8.1.tar.gz#md5:18ca650982c15536616dea0e422cbd8c" + ], + "opam": { + "name": "ocamlfind", + "version": "1.8.1", + "path": "esy.lock/opam/ocamlfind.1.8.1" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override" + } + ], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/conf-m4@opam:1@3b2b148a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/ocamlbuild@opam:0.14.0@6ac75d03": { + "id": "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "name": "@opam/ocamlbuild", + "version": "opam:0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", + "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" + ], + "opam": { + "name": "ocamlbuild", + "version": "0.14.0", + "path": "esy.lock/opam/ocamlbuild.0.14.0" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d": { + "id": "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "name": "@opam/ocaml-migrate-parsetree", + "version": "opam:1.4.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/23/231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8#sha256:231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8", + "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.4.0/ocaml-migrate-parsetree-v1.4.0.tbz#sha256:231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8" + ], + "opam": { + "name": "ocaml-migrate-parsetree", + "version": "1.4.0", + "path": "esy.lock/opam/ocaml-migrate-parsetree.1.4.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef", + "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef", + "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/merlin-extend@opam:0.5@a5dd7d4b": { + "id": "@opam/merlin-extend@opam:0.5@a5dd7d4b", + "name": "@opam/merlin-extend", + "version": "opam:0.5", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/ca/ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227#sha256:ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227", + "archive:https://github.com/let-def/merlin-extend/releases/download/v0.5/merlin-extend-v0.5.tbz#sha256:ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227" + ], + "opam": { + "name": "merlin-extend", + "version": "0.5", + "path": "esy.lock/opam/merlin-extend.0.5" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/cppo@opam:1.6.6@f4f83858", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/merlin@opam:3.3.2@7a364181": { + "id": "@opam/merlin@opam:3.3.2@7a364181", + "name": "@opam/merlin", + "version": "opam:3.3.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/1d/1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801#sha256:1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801", + "archive:https://github.com/ocaml/merlin/releases/download/v3.3.2/merlin-v3.3.2.tbz#sha256:1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801" + ], + "opam": { + "name": "merlin", + "version": "3.3.2", + "path": "esy.lock/opam/merlin.3.3.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/menhir@opam:20190924@004407ff": { + "id": "@opam/menhir@opam:20190924@004407ff", + "name": "@opam/menhir", + "version": "opam:20190924", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/67/677f1997fb73177d5a00fa1b8d61c3ef#md5:677f1997fb73177d5a00fa1b8d61c3ef", + "archive:https://gitlab.inria.fr/fpottier/menhir/repository/20190924/archive.tar.gz#md5:677f1997fb73177d5a00fa1b8d61c3ef" + ], + "opam": { + "name": "menhir", + "version": "20190924", + "path": "esy.lock/opam/menhir.20190924" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/junit@opam:2.0.1@1b4d302c": { + "id": "@opam/junit@opam:2.0.1@1b4d302c", + "name": "@opam/junit", + "version": "opam:2.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/40/40224fb3d4f5e47dc5ff4605587d383b#md5:40224fb3d4f5e47dc5ff4605587d383b", + "archive:https://github.com/Khady/ocaml-junit/releases/download/2.0.1/junit-2.0.1.tbz#md5:40224fb3d4f5e47dc5ff4605587d383b" + ], + "opam": { + "name": "junit", + "version": "2.0.1", + "path": "esy.lock/opam/junit.2.0.1" + } + }, + "overrides": [], + "dependencies": [ + "@opam/tyxml@opam:4.3.0@c1da25f1", "@opam/ptime@opam:0.8.5@0051d642", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "@opam/tyxml@opam:4.3.0@c1da25f1", "@opam/ptime@opam:0.8.5@0051d642", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/js_of_ocaml-compiler@opam:3.5.0@9b63f33c": { + "id": "@opam/js_of_ocaml-compiler@opam:3.5.0@9b63f33c", + "name": "@opam/js_of_ocaml-compiler", + "version": "opam:3.5.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/c1/c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7#sha256:c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7", + "archive:https://github.com/ocsigen/js_of_ocaml/releases/download/3.5.0/js_of_ocaml-3.5.0.tbz#sha256:c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7" + ], + "opam": { + "name": "js_of_ocaml-compiler", + "version": "3.5.0", + "path": "esy.lock/opam/js_of_ocaml-compiler.3.5.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/cmdliner@opam:1.0.4@93208aac" + ] + }, + "@opam/jbuilder@opam:transition@20522f05": { + "id": "@opam/jbuilder@opam:transition@20522f05", + "name": "@opam/jbuilder", + "version": "opam:transition", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "jbuilder", + "version": "transition", + "path": "esy.lock/opam/jbuilder.transition" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/easy-format@opam:1.3.2@0484b3c4": { + "id": "@opam/easy-format@opam:1.3.2@0484b3c4", + "name": "@opam/easy-format", + "version": "opam:1.3.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/34/3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926#sha256:3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926", + "archive:https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz#sha256:3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" + ], + "opam": { + "name": "easy-format", + "version": "1.3.2", + "path": "esy.lock/opam/easy-format.1.3.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/dune@opam:1.11.4@21d66ccd": { + "id": "@opam/dune@opam:1.11.4@21d66ccd", + "name": "@opam/dune", + "version": "opam:1.11.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/77/77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6#sha256:77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6", + "archive:https://github.com/ocaml/dune/releases/download/1.11.4/dune-build-info-1.11.4.tbz#sha256:77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6" + ], + "opam": { + "name": "dune", + "version": "1.11.4", + "path": "esy.lock/opam/dune.1.11.4" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override" + } + ], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084" + ] + }, + "@opam/cppo@opam:1.6.6@f4f83858": { + "id": "@opam/cppo@opam:1.6.6@f4f83858", + "name": "@opam/cppo", + "version": "opam:1.6.6", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/e7/e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0", + "archive:https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" + ], + "opam": { + "name": "cppo", + "version": "1.6.6", + "path": "esy.lock/opam/cppo.1.6.6" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/dune@opam:1.11.4@21d66ccd", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/conf-m4@opam:1@3b2b148a": { + "id": "@opam/conf-m4@opam:1@3b2b148a", + "name": "@opam/conf-m4", + "version": "opam:1", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "conf-m4", + "version": "1", + "path": "esy.lock/opam/conf-m4.1" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/cmdliner@opam:1.0.4@93208aac": { + "id": "@opam/cmdliner@opam:1.0.4@93208aac", + "name": "@opam/cmdliner", + "version": "opam:1.0.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/fe/fe2213d0bc63b1e10a2d0aa66d2fc8d9#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9", + "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9" + ], + "opam": { + "name": "cmdliner", + "version": "1.0.4", + "path": "esy.lock/opam/cmdliner.1.0.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.8.1000@d41d8cd9" ] + }, + "@opam/biniou@opam:1.2.1@d7570399": { + "id": "@opam/biniou@opam:1.2.1@d7570399", + "name": "@opam/biniou", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/35/35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335#sha256:35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335", + "archive:https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz#sha256:35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" + ], + "opam": { + "name": "biniou", + "version": "1.2.1", + "path": "esy.lock/opam/biniou.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@0484b3c4", + "@opam/dune@opam:1.11.4@21d66ccd" + ] + }, + "@opam/base-unix@opam:base@87d0b2eb": { + "id": "@opam/base-unix@opam:base@87d0b2eb", + "name": "@opam/base-unix", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-unix", + "version": "base", + "path": "esy.lock/opam/base-unix.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base-threads@opam:base@36803084": { + "id": "@opam/base-threads@opam:base@36803084", + "name": "@opam/base-threads", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-threads", + "version": "base", + "path": "esy.lock/opam/base-threads.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/atdgen-runtime@opam:2.0.0@60f6faab": { + "id": "@opam/atdgen-runtime@opam:2.0.0@60f6faab", + "name": "@opam/atdgen-runtime", + "version": "opam:2.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", + "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" + ], + "opam": { + "name": "atdgen-runtime", + "version": "2.0.0", + "path": "esy.lock/opam/atdgen-runtime.2.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399" + ] + }, + "@opam/atdgen@opam:2.0.0@46af0360": { + "id": "@opam/atdgen@opam:2.0.0@46af0360", + "name": "@opam/atdgen", + "version": "opam:2.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", + "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" + ], + "opam": { + "name": "atdgen", + "version": "2.0.0", + "path": "esy.lock/opam/atdgen.2.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399", + "@opam/atdgen-runtime@opam:2.0.0@60f6faab", + "@opam/atd@opam:2.0.0@e0ddd12f", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/biniou@opam:1.2.1@d7570399", + "@opam/atdgen-runtime@opam:2.0.0@60f6faab", + "@opam/atd@opam:2.0.0@e0ddd12f" + ] + }, + "@opam/atd@opam:2.0.0@e0ddd12f": { + "id": "@opam/atd@opam:2.0.0@e0ddd12f", + "name": "@opam/atd", + "version": "opam:2.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", + "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" + ], + "opam": { + "name": "atd", + "version": "2.0.0", + "path": "esy.lock/opam/atd.2.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/menhir@opam:20190924@004407ff", + "@opam/jbuilder@opam:transition@20522f05", + "@opam/easy-format@opam:1.3.2@0484b3c4", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", + "@opam/easy-format@opam:1.3.2@0484b3c4" + ] + }, + "@esy-ocaml/substs@0.0.1@d41d8cd9": { + "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", + "name": "@esy-ocaml/substs", + "version": "0.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@esy-ocaml/reason@3.5.2@d41d8cd9": { + "id": "@esy-ocaml/reason@3.5.2@d41d8cd9", + "name": "@esy-ocaml/reason", + "version": "3.5.2", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.5.2.tgz#sha1:ac48b63fd66fbbc1d77ab6a2b7e3a1ba21a8f40b" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.8.1000@d41d8cd9", "@opam/result@opam:1.4@dc720aef", + "@opam/ocamlfind@opam:1.8.1@ff07b0f9", + "@opam/ocaml-migrate-parsetree@opam:1.4.0@0c4ec62d", + "@opam/merlin-extend@opam:0.5@a5dd7d4b", + "@opam/menhir@opam:20190924@004407ff", + "@opam/dune@opam:1.11.4@21d66ccd" + ], + "devDependencies": [] + } + } +} \ No newline at end of file diff --git a/esy.lock/opam/atd.2.0.0/opam b/esy.lock/opam/atd.2.0.0/opam new file mode 100644 index 0000000..2808354 --- /dev/null +++ b/esy.lock/opam/atd.2.0.0/opam @@ -0,0 +1,34 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/atd" +bug-reports: "https://github.com/mjambon/atd/issues" +dev-repo: "git://github.com/mjambon/atd.git" + +build: [ + ["jbuilder" "subst" "-p" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] +] + +# Restore when https://github.com/mjambon/atd/issues/121 is resolved. +# build-test: [ +# ["jbuilder" "runtest" "-p" name] +# ] + +depends: [ + "ocaml" {>= "4.03.0"} + "jbuilder" + "menhir" {build} + "easy-format" +] +synopsis: "Parser for the ATD data format description language" +description: """ +ATD is the OCaml library providing a parser for the ATD language and +various utilities. ATD stands for Adjustable Type Definitions in +reference to its main property of supporting annotations that allow a +good fit with a variety of data formats.""" +url { + src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" + checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" +} diff --git a/esy.lock/opam/atdgen-runtime.2.0.0/opam b/esy.lock/opam/atdgen-runtime.2.0.0/opam new file mode 100644 index 0000000..7236d93 --- /dev/null +++ b/esy.lock/opam/atdgen-runtime.2.0.0/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/atd" +bug-reports: "https://github.com/mjambon/atd/issues" +dev-repo: "git://github.com/mjambon/atd.git" + +build: [ + ["jbuilder" "subst" "-p" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] +] + +# Restore when https://github.com/mjambon/atd/issues/121 is resolved. +# build-test: [ +# ["jbuilder" "runtest" "-p" name] +# ] + +depends: [ + "ocaml" {>= "4.02.3"} + "jbuilder" + "biniou" {>= "1.0.6"} + "yojson" {>= "1.2.1"} +] +synopsis: "Runtime library for code generated by atdgen." +url { + src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" + checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" +} diff --git a/esy.lock/opam/atdgen.2.0.0/opam b/esy.lock/opam/atdgen.2.0.0/opam new file mode 100644 index 0000000..d71d304 --- /dev/null +++ b/esy.lock/opam/atdgen.2.0.0/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] + +homepage: "https://github.com/mjambon/atd" +bug-reports: "https://github.com/mjambon/atd/issues" +dev-repo: "git://github.com/mjambon/atd.git" + +build: [ + ["jbuilder" "subst" "-p" name] {pinned} + ["jbuilder" "build" "-p" name "-j" jobs] +] + +# Restore when https://github.com/mjambon/atd/issues/121 is resolved. +# build-test: [ +# ["jbuilder" "runtest" "-p" name] +# ] + +depends: [ + "ocaml" {>= "4.03.0"} + "jbuilder" + "atd" {>= "2.0.0"} + "atdgen-runtime" {>= "2.0.0"} + "biniou" {>= "1.0.6"} + "yojson" {>= "1.2.1"} +] +synopsis: + "Generates efficient JSON serializers, deserializers and validators" +description: """ +Atdgen is a command-line program that takes as input type definitions in the +ATD syntax and produces OCaml code suitable for data serialization and +deserialization. + +Two data formats are currently supported, these are biniou and JSON. +Atdgen-biniou and Atdgen-json will refer to Atdgen used in one context or the +other. + +Atdgen was designed with efficiency and durability in mind. Software authors +are encouraged to use Atdgen directly and to write tools that may reuse part of +Atdgen’s source code.""" +url { + src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" + checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" +} diff --git a/esy.lock/opam/base-threads.base/opam b/esy.lock/opam/base-threads.base/opam new file mode 100644 index 0000000..914ff50 --- /dev/null +++ b/esy.lock/opam/base-threads.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Threads library distributed with the OCaml compiler +""" + diff --git a/esy.lock/opam/base-unix.base/opam b/esy.lock/opam/base-unix.base/opam new file mode 100644 index 0000000..b973540 --- /dev/null +++ b/esy.lock/opam/base-unix.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Unix library distributed with the OCaml compiler +""" + diff --git a/esy.lock/opam/biniou.1.2.1/opam b/esy.lock/opam/biniou.1.2.1/opam new file mode 100644 index 0000000..b706b42 --- /dev/null +++ b/esy.lock/opam/biniou.1.2.1/opam @@ -0,0 +1,45 @@ +opam-version: "2.0" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "@doc"] {with-doc} +] +maintainer: ["martin@mjambon.com"] +authors: ["Martin Jambon"] +bug-reports: "https://github.com/mjambon/biniou/issues" +homepage: "https://github.com/mjambon/biniou" +doc: "https://mjambon.github.io/biniou/" +license: "BSD-3-Clause" +dev-repo: "git+https://github.com/mjambon/biniou.git" +synopsis: + "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" +description: """ + +Biniou (pronounced "be new") is a binary data format designed for speed, safety, +ease of use and backward compatibility as protocols evolve. Biniou is vastly +equivalent to JSON in terms of functionality but allows implementations several +times faster (4 times faster than yojson), with 25-35% space savings. + +Biniou data can be decoded into human-readable form without knowledge of type +definitions except for field and variant names which are represented by 31-bit +hashes. A program named bdump is provided for routine visualization of biniou +data files. + +The program atdgen is used to derive OCaml-Biniou serializers and deserializers +from type definitions. + +Biniou format specification: mjambon.github.io/atdgen-doc/biniou-format.txt""" +depends: [ + "easy-format" + "dune" {>= "1.10"} + "ocaml" {>= "4.02.3"} +] +url { + src: + "https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz" + checksum: [ + "sha256=35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" + "sha512=82670cc77bf3e869ee26e5fbe5a5affa45a22bc8b6c4bd7e85473912780e0111baca59b34a2c14feae3543ce6e239d7fddaeab24b686a65bfe642cdb91d27ebf" + ] +} diff --git a/esy.lock/opam/cmdliner.1.0.4/opam b/esy.lock/opam/cmdliner.1.0.4/opam new file mode 100644 index 0000000..b2187dc --- /dev/null +++ b/esy.lock/opam/cmdliner.1.0.4/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/cmdliner" +doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" +dev-repo: "git+http://erratique.ch/repos/cmdliner.git" +bug-reports: "https://github.com/dbuenzli/cmdliner/issues" +tags: [ "cli" "system" "declarative" "org:erratique" ] +license: "ISC" +depends:[ "ocaml" {>= "4.03.0"} ] +build: [[ make "all" "PREFIX=%{prefix}%" ]] +install: +[[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ] + [make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]] + +synopsis: """Declarative definition of command line interfaces for OCaml""" +description: """\ + +Cmdliner allows the declarative definition of command line interfaces +for OCaml. + +It provides a simple and compositional mechanism to convert command +line arguments to OCaml values and pass them to your functions. The +module automatically handles syntax errors, help messages and UNIX man +page generation. It supports programs with single or multiple commands +and respects most of the [POSIX][1] and [GNU][2] conventions. + +Cmdliner has no dependencies and is distributed under the ISC license. + +[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html +[2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html +""" +url { +archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz" +checksum: "fe2213d0bc63b1e10a2d0aa66d2fc8d9" +} diff --git a/esy.lock/opam/conf-m4.1/opam b/esy.lock/opam/conf-m4.1/opam new file mode 100644 index 0000000..c6feb2a --- /dev/null +++ b/esy.lock/opam/conf-m4.1/opam @@ -0,0 +1,22 @@ +opam-version: "2.0" +maintainer: "tim@gfxmonk.net" +homepage: "http://www.gnu.org/software/m4/m4.html" +bug-reports: "https://github.com/ocaml/opam-repository/issues" +authors: "GNU Project" +license: "GPL-3.0-only" +build: [["sh" "-exc" "echo | m4"]] +depexts: [ + ["m4"] {os-family = "debian"} + ["m4"] {os-distribution = "fedora"} + ["m4"] {os-distribution = "rhel"} + ["m4"] {os-distribution = "centos"} + ["m4"] {os-distribution = "alpine"} + ["m4"] {os-distribution = "nixos"} + ["m4"] {os-family = "suse"} + ["m4"] {os-distribution = "ol"} + ["m4"] {os-distribution = "arch"} +] +synopsis: "Virtual package relying on m4" +description: + "This package can only install if the m4 binary is installed on the system." +flags: conf diff --git a/esy.lock/opam/cppo.1.6.6/opam b/esy.lock/opam/cppo.1.6.6/opam new file mode 100644 index 0000000..f683f8b --- /dev/null +++ b/esy.lock/opam/cppo.1.6.6/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: "Martin Jambon" +license: "BSD-3-Clause" +homepage: "http://mjambon.com/cppo.html" +doc: "https://ocaml-community.github.io/cppo/" +bug-reports: "https://github.com/ocaml-community/cppo/issues" +depends: [ + "ocaml" {>= "4.03"} + "dune" {>= "1.0"} + "base-unix" +] +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +dev-repo: "git+https://github.com/ocaml-community/cppo.git" +synopsis: "Code preprocessor like cpp for OCaml" +description: """ +Cppo is an equivalent of the C preprocessor for OCaml programs. +It allows the definition of simple macros and file inclusion. + +Cppo is: + +* more OCaml-friendly than cpp +* easy to learn without consulting a manual +* reasonably fast +* simple to install and to maintain +""" +url { + src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" + checksum: [ + "sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" + "sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" + ] +} diff --git a/esy.lock/opam/dune.1.11.4/opam b/esy.lock/opam/dune.1.11.4/opam new file mode 100644 index 0000000..19e2511 --- /dev/null +++ b/esy.lock/opam/dune.1.11.4/opam @@ -0,0 +1,53 @@ +opam-version: "2.0" +synopsis: "Fast, portable and opinionated build system" +description: """ + +dune is a build system that was designed to simplify the release of +Jane Street packages. It reads metadata from "dune" files following a +very simple s-expression syntax. + +dune is fast, it has very low-overhead and support parallel builds on +all platforms. It has no system dependencies, all you need to build +dune and packages using dune is OCaml. You don't need or make or bash +as long as the packages themselves don't use bash explicitly. + +dune supports multi-package development by simply dropping multiple +repositories into the same directory. + +It also supports multi-context builds, such as building against +several opam roots/switches simultaneously. This helps maintaining +packages across several versions of OCaml and gives cross-compilation +for free. +""" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml/dune" +doc: "https://dune.readthedocs.io/" +bug-reports: "https://github.com/ocaml/dune/issues" +depends: [ + "ocaml" {>= "4.02"} + "base-unix" + "base-threads" +] +conflicts: [ + "jbuilder" {!= "transition"} + "odoc" {< "1.3.0"} + "dune-release" {< "1.3.0"} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path + ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} + ["ocaml" "bootstrap.ml"] + ["./boot.exe" "--release" "--subst"] {pinned} + ["./boot.exe" "--release" "-j" jobs] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/1.11.4/dune-build-info-1.11.4.tbz" + checksum: [ + "sha256=77cb5f483221b266ded2b85fc84173ae0089a25134a086be922e82c131456ce6" + "sha512=02f00fd872aa49b832fc8c1e928409f23c79ddf84a53009a58875f222cca36fbb92c905e12c539caec9cbad723f195a8aa24218382dca35a903b3f52b11f06f2" + ] +} diff --git a/esy.lock/opam/easy-format.1.3.2/opam b/esy.lock/opam/easy-format.1.3.2/opam new file mode 100644 index 0000000..138d0fb --- /dev/null +++ b/esy.lock/opam/easy-format.1.3.2/opam @@ -0,0 +1,46 @@ +opam-version: "2.0" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "@doc"] {with-doc} +] +maintainer: ["martin@mjambon.com" "rudi.grinberg@gmail.com"] +authors: ["Martin Jambon"] +bug-reports: "https://github.com/mjambon/easy-format/issues" +homepage: "https://github.com/mjambon/easy-format" +doc: "https://mjambon.github.io/easy-format/" +license: "BSD-3-Clause" +dev-repo: "git+https://github.com/mjambon/easy-format.git" +synopsis: + "High-level and functional interface to the Format module of the OCaml standard library" +description: """ + +This module offers a high-level and functional interface to the Format module of +the OCaml standard library. It is a pretty-printing facility, i.e. it takes as +input some code represented as a tree and formats this code into the most +visually satisfying result, breaking and indenting lines of code where +appropriate. + +Input data must be first modelled and converted into a tree using 3 kinds of +nodes: + +* atoms +* lists +* labelled nodes + +Atoms represent any text that is guaranteed to be printed as-is. Lists can model +any sequence of items such as arrays of data or lists of definitions that are +labelled with something like "int main", "let x =" or "x:".""" +depends: [ + "dune" {>= "1.10"} + "ocaml" {>= "4.02.3"} +] +url { + src: + "https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz" + checksum: [ + "sha256=3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" + "sha512=e39377a2ff020ceb9ac29e8515a89d9bdbc91dfcfa871c4e3baafa56753fac2896768e5d9822a050dc1e2ade43c8967afb69391a386c0a8ecd4e1f774e236135" + ] +} diff --git a/esy.lock/opam/jbuilder.transition/opam b/esy.lock/opam/jbuilder.transition/opam new file mode 100644 index 0000000..9280c3f --- /dev/null +++ b/esy.lock/opam/jbuilder.transition/opam @@ -0,0 +1,18 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/ocaml/dune" +bug-reports: "https://github.com/ocaml/dune/issues" +dev-repo: "git+https://github.com/ocaml/dune.git" +license: "MIT" +depends: [ + "ocaml" + "dune" {< "2.0"} +] +post-messages: [ + "Jbuilder has been renamed and the jbuilder package is now a transition \ + package. Use the dune package instead." +] +synopsis: + "This is a transition package, jbuilder is now named dune. Use the dune" +description: "package instead." diff --git a/esy.lock/opam/js_of_ocaml-compiler.3.5.0/opam b/esy.lock/opam/js_of_ocaml-compiler.3.5.0/opam new file mode 100644 index 0000000..6b2a5c3 --- /dev/null +++ b/esy.lock/opam/js_of_ocaml-compiler.3.5.0/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "dev@ocsigen.org" +authors: "Ocsigen team" +bug-reports: "https://github.com/ocsigen/js_of_ocaml/issues" +homepage: "http://ocsigen.github.io/js_of_ocaml" +dev-repo: "git+https://github.com/ocsigen/js_of_ocaml.git" +synopsis: "Compiler from OCaml bytecode to Javascript" +description: """ +Js_of_ocaml is a compiler from OCaml bytecode to JavaScript. +It makes it possible to run pure OCaml programs in JavaScript +environment like browsers and Node.js +""" + +build: [["dune" "build" "-p" name "-j" jobs]] + +depends: [ + "ocaml" {>= "4.02.0"} + "dune" {>= "1.11.1"} + "ppx_expect" {with-test & >= "0.12.0"} + "cmdliner" + "ocaml-migrate-parsetree" + "yojson" # It's optional, but we want users to be able to use source-map without pain. +] + +depopts: [ "ocamlfind" ] + +conflicts: [ + "ocamlfind" {< "1.5.1"} + "js_of_ocaml" {< "3.0"} +] +url { + src: + "https://github.com/ocsigen/js_of_ocaml/releases/download/3.5.0/js_of_ocaml-3.5.0.tbz" + checksum: [ + "sha256=c19903c11a7e7657a4bb92de9ad910e6daf5afc9da7222dcd8fe8da8867f05b7" + "sha512=3aa852552abe268504f7e26841bd1c43e95dba0a5827f70b97230e900909c3fa94f59715b45ce658f0c2e298a0e89c882a994d5fcc6bcf75250cf0b94733fa88" + ] +} diff --git a/esy.lock/opam/junit.2.0.1/opam b/esy.lock/opam/junit.2.0.1/opam new file mode 100644 index 0000000..7713299 --- /dev/null +++ b/esy.lock/opam/junit.2.0.1/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "Louis Roché " +authors: "Louis Roché " +homepage: "https://github.com/Khady/ocaml-junit" +bug-reports: "https://github.com/Khady/ocaml-junit/issues" +license: "LGPL-3.0-or-later with OCaml-LGPL-linking-exception" +dev-repo: "git+https://github.com/Khady/ocaml-junit.git" +doc: "https://khady.github.io/ocaml-junit/" +tags: ["junit" "jenkins"] +depends: [ + "dune" {>= "1.0"} + "ptime" + "tyxml" {>= "4.0.0"} + "odoc" {with-doc & >= "1.1.1"} +] +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "-j" jobs] {with-doc} +] +name: "junit" +synopsis: "JUnit XML reports generation library" +description: "JUnit XML reports generation library" +url { + src: + "https://github.com/Khady/ocaml-junit/releases/download/2.0.1/junit-2.0.1.tbz" + checksum: "md5=40224fb3d4f5e47dc5ff4605587d383b" +} diff --git a/esy.lock/opam/menhir.20190924/opam b/esy.lock/opam/menhir.20190924/opam new file mode 100644 index 0000000..348967a --- /dev/null +++ b/esy.lock/opam/menhir.20190924/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " + "Yann Régis-Gianas " +] +homepage: "http://gitlab.inria.fr/fpottier/menhir" +dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" +bug-reports: "menhir@inria.fr" +build: [ + [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] +] +install: [ + [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] +] +depends: [ + "ocaml" {>= "4.02"} + "ocamlfind" {build} + "ocamlbuild" {build} +] +synopsis: "An LR(1) parser generator" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/repository/20190924/archive.tar.gz" + checksum: [ + "md5=677f1997fb73177d5a00fa1b8d61c3ef" + "sha512=ea8a9a6d773529cf6ac05e4c6c4532770fbb8e574c9b646efcefe90d9f24544741e3e8cfd94c8afea0447e34059a8c79c2829b46764ce3a3d6dcb3e7f75980fc" + ] +} diff --git a/esy.lock/opam/merlin-extend.0.5/opam b/esy.lock/opam/merlin-extend.0.5/opam new file mode 100644 index 0000000..a3ae0d3 --- /dev/null +++ b/esy.lock/opam/merlin-extend.0.5/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "Frederic Bour " +authors: "Frederic Bour " +homepage: "https://github.com/let-def/merlin-extend" +bug-reports: "https://github.com/let-def/merlin-extend" +license: "MIT" +dev-repo: "git+https://github.com/let-def/merlin-extend.git" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "dune" {>= "1.0"} + "cppo" {build} + "ocaml" {>= "4.02.3"} +] +synopsis: "A protocol to provide custom frontend to Merlin" +description: """ +This protocol allows to replace the OCaml frontend of Merlin. +It extends what used to be done with the `-pp' flag to handle a few more cases.""" +doc: "https://let-def.github.io/merlin-extend" +url { + src: + "https://github.com/let-def/merlin-extend/releases/download/v0.5/merlin-extend-v0.5.tbz" + checksum: [ + "sha256=ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227" + "sha512=55c5a3637337abb8ca8db679128a81ca8ccce567bc214d55b2e6444dc0e905b74c64d629bdea2457d0fe4be5306414feefcdbc4d4761fdafd59aa107550936b6" + ] +} diff --git a/esy.lock/opam/merlin.3.3.2/opam b/esy.lock/opam/merlin.3.3.2/opam new file mode 100644 index 0000000..47fb8f5 --- /dev/null +++ b/esy.lock/opam/merlin.3.3.2/opam @@ -0,0 +1,70 @@ +opam-version: "2.0" +name: "merlin" +maintainer: "defree@gmail.com" +authors: "The Merlin team" +homepage: "https://github.com/ocaml/merlin" +bug-reports: "https://github.com/ocaml/merlin/issues" +dev-repo: "git+https://github.com/ocaml/merlin.git" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.02.1" & < "4.09"} + "dune" {>= "1.8.0"} + "ocamlfind" {>= "1.5.2"} + "yojson" + "mdx" {with-test & >= "1.3.0"} +] +synopsis: + "Editor helper, provides completion, typing and source browsing in Vim and Emacs" +description: + "Merlin is an assistant for editing OCaml code. It aims to provide the features available in modern IDEs: error reporting, auto completion, source browsing and much more." +post-messages: [ + "merlin installed. + +Quick setup for VIM +------------------- +Append this to your .vimrc to add merlin to vim's runtime-path: + let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') + execute \"set rtp+=\" . g:opamshare . \"/merlin/vim\" + +Also run the following line in vim to index the documentation: + :execute \"helptags \" . g:opamshare . \"/merlin/vim/doc\" + +Quick setup for EMACS +------------------- +Add opam emacs directory to your load-path by appending this to your .emacs: + (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"config\" \"var\" \"share\"))))) + (when (and opam-share (file-directory-p opam-share)) + ;; Register Merlin + (add-to-list 'load-path (expand-file-name \"emacs/site-lisp\" opam-share)) + (autoload 'merlin-mode \"merlin\" nil t nil) + ;; Automatically start it in OCaml buffers + (add-hook 'tuareg-mode-hook 'merlin-mode t) + (add-hook 'caml-mode-hook 'merlin-mode t) + ;; Use opam switch to lookup ocamlmerlin binary + (setq merlin-command 'opam))) + +Take a look at https://github.com/ocaml/merlin for more information + +Quick setup with opam-user-setup +-------------------------------- + +Opam-user-setup support Merlin. + + $ opam user-setup install + +should take care of basic setup. +See https://github.com/OCamlPro/opam-user-setup +" + {success & !user-setup:installed} +] +url { + src: + "https://github.com/ocaml/merlin/releases/download/v3.3.2/merlin-v3.3.2.tbz" + checksum: [ + "sha256=1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801" + "sha512=3ae021669808a40b4449f1cbdaca40b605ea5779a6204addd8b0ee4af9f14f528d55ca43a8dd3c7d547fb8e4cb256c09a9151d5559ef24dad83b5ab05aa146a2" + ] +} diff --git a/esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam b/esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam new file mode 100644 index 0000000..66d40ba --- /dev/null +++ b/esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "frederic.bour@lakaban.net" +authors: [ + "Frédéric Bour " + "Jérémie Dimino " +] +license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" +bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" +doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" +tags: [ "syntax" "org:ocamllabs" ] +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "result" + "ppx_derivers" + "dune" {>= "1.9.0"} + "ocaml" {>= "4.02.3"} +] +synopsis: "Convert OCaml parsetrees between different versions" +description: """ +Convert OCaml parsetrees between different versions + +This library converts parsetrees, outcometree and ast mappers between +different OCaml versions. High-level functions help making PPX +rewriters independent of a compiler version. +""" +url { + src: + "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.4.0/ocaml-migrate-parsetree-v1.4.0.tbz" + checksum: [ + "sha256=231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8" + "sha512=61ee91d2d146cc2d2ff2d5dc4ef5dea4dc4d3c8dbd8b4c9586d64b6ad7302327ab35547aa0a5b0103c3f07b66b13d416a1bee6d4d117293cd3cabe44113ec6d4" + ] +} diff --git a/esy.lock/opam/ocamlbuild.0.14.0/opam b/esy.lock/opam/ocamlbuild.0.14.0/opam new file mode 100644 index 0000000..8deabee --- /dev/null +++ b/esy.lock/opam/ocamlbuild.0.14.0/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Gabriel Scherer " +authors: ["Nicolas Pouillard" "Berke Durak"] +homepage: "https://github.com/ocaml/ocamlbuild/" +bug-reports: "https://github.com/ocaml/ocamlbuild/issues" +license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" +doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" +dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" +build: [ + [ + make + "-f" + "configure.make" + "all" + "OCAMLBUILD_PREFIX=%{prefix}%" + "OCAMLBUILD_BINDIR=%{bin}%" + "OCAMLBUILD_LIBDIR=%{lib}%" + "OCAMLBUILD_MANDIR=%{man}%" + "OCAML_NATIVE=%{ocaml:native}%" + "OCAML_NATIVE_TOOLS=%{ocaml:native}%" + ] + [make "check-if-preinstalled" "all" "opam-install"] +] +conflicts: [ + "base-ocamlbuild" + "ocamlfind" {< "1.6.2"} +] +synopsis: + "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." +depends: [ + "ocaml" {>= "4.03"} +] +url { + src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" + checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" +} diff --git a/esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub b/esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub new file mode 100644 index 0000000..e5ad990 --- /dev/null +++ b/esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub @@ -0,0 +1,4 @@ +#!/bin/sh + +BINDIR=$(dirname "$(command -v ocamlc)") +"$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" diff --git a/esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install b/esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install new file mode 100644 index 0000000..295c625 --- /dev/null +++ b/esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install @@ -0,0 +1,6 @@ +bin: [ + "src/findlib/ocamlfind" {"ocamlfind"} + "?src/findlib/ocamlfind_opt" {"ocamlfind"} + "?tools/safe_camlp4" +] +toplevel: ["src/findlib/topfind"] diff --git a/esy.lock/opam/ocamlfind.1.8.1/opam b/esy.lock/opam/ocamlfind.1.8.1/opam new file mode 100644 index 0000000..d757d66 --- /dev/null +++ b/esy.lock/opam/ocamlfind.1.8.1/opam @@ -0,0 +1,50 @@ +opam-version: "2.0" +synopsis: "A library manager for OCaml" +maintainer: "Thomas Gazagnaire " +authors: "Gerd Stolpmann " +homepage: "http://projects.camlcity.org/projects/findlib.html" +bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" +dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" +description: """ +Findlib is a library manager for OCaml. It provides a convention how +to store libraries, and a file format ("META") to describe the +properties of libraries. There is also a tool (ocamlfind) for +interpreting the META files, so that it is very easy to use libraries +in programs and scripts. +""" +build: [ + [ + "./configure" + "-bindir" + bin + "-sitelib" + lib + "-mandir" + man + "-config" + "%{lib}%/findlib.conf" + "-no-custom" + "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} + "-no-topfind" {ocaml:preinstalled} + ] + [make "all"] + [make "opt"] {ocaml:native} +] +install: [ + [make "install"] + ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} +] +depends: [ + "ocaml" {>= "4.00.0"} + "conf-m4" {build} +] +extra-files: [ + ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] + ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] +] +url { + src: "http://download.camlcity.org/download/findlib-1.8.1.tar.gz" + checksum: "md5=18ca650982c15536616dea0e422cbd8c" + mirrors: "http://download2.camlcity.org/download/findlib-1.8.1.tar.gz" +} +depopts: ["graphics"] diff --git a/esy.lock/opam/ppx_derivers.1.2.1/opam b/esy.lock/opam/ppx_derivers.1.2.1/opam new file mode 100644 index 0000000..3d10814 --- /dev/null +++ b/esy.lock/opam/ppx_derivers.1.2.1/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "jeremie@dimino.org" +authors: ["Jérémie Dimino"] +license: "BSD-3-Clause" +homepage: "https://github.com/ocaml-ppx/ppx_derivers" +bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" +dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" + "dune" +] +synopsis: "Shared [@@deriving] plugin registry" +description: """ +Ppx_derivers is a tiny package whose sole purpose is to allow +ppx_deriving and ppx_type_conv to inter-operate gracefully when linked +as part of the same ocaml-migrate-parsetree driver.""" +url { + src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz" + checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" +} diff --git a/esy.lock/opam/ptime.0.8.5/opam b/esy.lock/opam/ptime.0.8.5/opam new file mode 100644 index 0000000..ed7c8d9 --- /dev/null +++ b/esy.lock/opam/ptime.0.8.5/opam @@ -0,0 +1,49 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["The ptime programmers"] +homepage: "https://erratique.ch/software/ptime" +doc: "https://erratique.ch/software/ptime/doc" +dev-repo: "git+http://erratique.ch/repos/ptime.git" +bug-reports: "https://github.com/dbuenzli/ptime/issues" +tags: [ "time" "posix" "system" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.01.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build} + "result" +] +depopts: [ "js_of_ocaml" ] +conflicts: [ "js_of_ocaml" { < "3.3.0" } ] +build:[[ + "ocaml" "pkg/pkg.ml" "build" + "--pinned" "%{pinned}%" + "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" ]] + +synopsis: """POSIX time for OCaml""" +description: """\ + +Ptime has platform independent POSIX time support in pure OCaml. It +provides a type to represent a well-defined range of POSIX timestamps +with picosecond precision, conversion with date-time values, +conversion with [RFC 3339 timestamps][rfc3339] and pretty printing to a +human-readable, locale-independent representation. + +The additional Ptime_clock library provides access to a system POSIX +clock and to the system's current time zone offset. + +Ptime is not a calendar library. + +Ptime depends on the `result` compatibility package. Ptime_clock +depends on your system library. Ptime_clock's optional JavaScript +support depends on [js_of_ocaml][jsoo]. Ptime and its libraries are +distributed under the ISC license. + +[rfc3339]: http://tools.ietf.org/html/rfc3339 +[jsoo]: http://ocsigen.org/js_of_ocaml/ +""" +url { +archive: "https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz" +checksum: "4d48055d623ecf2db792439b3e96a520" +} diff --git a/esy.lock/opam/re.1.9.0/opam b/esy.lock/opam/re.1.9.0/opam new file mode 100644 index 0000000..f798754 --- /dev/null +++ b/esy.lock/opam/re.1.9.0/opam @@ -0,0 +1,42 @@ +opam-version: "2.0" + +maintainer: "rudi.grinberg@gmail.com" +authors: [ + "Jerome Vouillon" + "Thomas Gazagnaire" + "Anil Madhavapeddy" + "Rudi Grinberg" + "Gabriel Radanne" +] +license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml/ocaml-re" +bug-reports: "https://github.com/ocaml/ocaml-re/issues" +dev-repo: "git+https://github.com/ocaml/ocaml-re.git" + +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.02"} + "dune" + "ounit" {with-test} + "seq" +] + +synopsis: "RE is a regular expression library for OCaml" +description: """ +Pure OCaml regular expressions with: +* Perl-style regular expressions (module Re.Perl) +* Posix extended regular expressions (module Re.Posix) +* Emacs-style regular expressions (module Re.Emacs) +* Shell-style file globbing (module Re.Glob) +* Compatibility layer for OCaml's built-in Str module (module Re.Str) +""" +url { + src: + "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" + checksum: "md5=bddaed4f386a22cace7850c9c7dac296" +} diff --git a/esy.lock/opam/result.1.4/opam b/esy.lock/opam/result.1.4/opam new file mode 100644 index 0000000..b44aeea --- /dev/null +++ b/esy.lock/opam/result.1.4/opam @@ -0,0 +1,22 @@ +opam-version: "2.0" +maintainer: "opensource@janestreet.com" +authors: ["Jane Street Group, LLC "] +homepage: "https://github.com/janestreet/result" +dev-repo: "git+https://github.com/janestreet/result.git" +bug-reports: "https://github.com/janestreet/result/issues" +license: "BSD-3-Clause" +build: [["dune" "build" "-p" name "-j" jobs]] +depends: [ + "ocaml" + "dune" {>= "1.0"} +] +synopsis: "Compatibility Result module" +description: """ +Projects that want to use the new result type defined in OCaml >= 4.03 +while staying compatible with older version of OCaml should use the +Result module defined in this library.""" +url { + src: + "https://github.com/janestreet/result/archive/1.4.tar.gz" + checksum: "md5=d3162dbc501a2af65c8c71e0866541da" +} diff --git a/esy.lock/opam/seq.base/files/META.seq b/esy.lock/opam/seq.base/files/META.seq new file mode 100644 index 0000000..06b95ef --- /dev/null +++ b/esy.lock/opam/seq.base/files/META.seq @@ -0,0 +1,4 @@ +name="seq" +version="[distributed with OCaml 4.07 or above]" +description="dummy backward-compatibility package for iterators" +requires="" diff --git a/esy.lock/opam/seq.base/files/seq.install b/esy.lock/opam/seq.base/files/seq.install new file mode 100644 index 0000000..c4d7020 --- /dev/null +++ b/esy.lock/opam/seq.base/files/seq.install @@ -0,0 +1,3 @@ +lib:[ + "META.seq" {"META"} +] diff --git a/esy.lock/opam/seq.base/opam b/esy.lock/opam/seq.base/opam new file mode 100644 index 0000000..b33d8c7 --- /dev/null +++ b/esy.lock/opam/seq.base/opam @@ -0,0 +1,15 @@ +opam-version: "2.0" +maintainer: " " +authors: " " +homepage: " " +depends: [ + "ocaml" {>= "4.07.0"} +] +dev-repo: "git+https://github.com/ocaml/ocaml.git" +bug-reports: "https://caml.inria.fr/mantis/main_page.php" +synopsis: + "Compatibility package for OCaml's standard iterator type starting from 4.07." +extra-files: [ + ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] + ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] +] diff --git a/esy.lock/opam/topkg.1.0.1/opam b/esy.lock/opam/topkg.1.0.1/opam new file mode 100644 index 0000000..77ae1f4 --- /dev/null +++ b/esy.lock/opam/topkg.1.0.1/opam @@ -0,0 +1,48 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/topkg" +doc: "http://erratique.ch/software/topkg/doc" +license: "ISC" +dev-repo: "git+http://erratique.ch/repos/topkg.git" +bug-reports: "https://github.com/dbuenzli/topkg/issues" +tags: ["packaging" "ocamlbuild" "org:erratique"] +depends: [ + "ocaml" {>= "4.03.0"} + "ocamlfind" {build & >= "1.6.1"} + "ocamlbuild" ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--pkg-name" name + "--dev-pkg" "%{pinned}%" ]] +synopsis: """The transitory OCaml software packager""" +description: """\ + +Topkg is a packager for distributing OCaml software. It provides an +API to describe the files a package installs in a given build +configuration and to specify information about the package's +distribution, creation and publication procedures. + +The optional topkg-care package provides the `topkg` command line tool +which helps with various aspects of a package's life cycle: creating +and linting a distribution, releasing it on the WWW, publish its +documentation, add it to the OCaml opam repository, etc. + +Topkg is distributed under the ISC license and has **no** +dependencies. This is what your packages will need as a *build* +dependency. + +Topkg-care is distributed under the ISC license it depends on +[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], +[webbrowser][webbrowser] and `opam-format`. + +[fmt]: http://erratique.ch/software/fmt +[logs]: http://erratique.ch/software/logs +[bos]: http://erratique.ch/software/bos +[cmdliner]: http://erratique.ch/software/cmdliner +[webbrowser]: http://erratique.ch/software/webbrowser +""" +url { +archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz" +checksum: "16b90e066d8972a5ef59655e7c28b3e9" +} diff --git a/esy.lock/opam/tyxml.4.3.0/opam b/esy.lock/opam/tyxml.4.3.0/opam new file mode 100644 index 0000000..93872f8 --- /dev/null +++ b/esy.lock/opam/tyxml.4.3.0/opam @@ -0,0 +1,45 @@ +opam-version: "2.0" +maintainer: "dev@ocsigen.org" +homepage: "https://github.com/ocsigen/tyxml/" +bug-reports: "https://github.com/ocsigen/tyxml/issues" +doc: "https://ocsigen.org/tyxml/manual/" +dev-repo: "git+https://github.com/ocsigen/tyxml.git" +license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" + +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.02"} + "re" {>= "1.5.0"} + ("ocaml" {>= "4.07"} | "re" {>= "1.8.0"}) + "dune" + "alcotest" {with-test} + "seq" + "uutf" {>= "1.0.0"} +] + +synopsis:"TyXML is a library for building correct HTML and SVG documents" +description:""" +TyXML provides a set of convenient combinators that uses the OCaml +type system to ensure the validity of the generated documents. TyXML +can be used with any representation of HTML and SVG: the textual one, +provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) +virtual DOM (`virtual-dom`) and reactive or replicated trees +(`eliom`). You can also create your own representation and use it to +instantiate a new set of combinators. + +```ocaml +open Tyxml +let to_ocaml = Html.(a ~a:[a_href "ocaml.org"] [txt "OCaml!"]) +``` +""" +authors: "The ocsigen team" +url { + src: + "https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz" + checksum: "md5=fd834a567f813bf447cab5f4c3a723e2" +} diff --git a/esy.lock/opam/uchar.0.0.2/opam b/esy.lock/opam/uchar.0.0.2/opam new file mode 100644 index 0000000..428d7aa --- /dev/null +++ b/esy.lock/opam/uchar.0.0.2/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://ocaml.org" +doc: "https://ocaml.github.io/uchar/" +dev-repo: "git+https://github.com/ocaml/uchar.git" +bug-reports: "https://github.com/ocaml/uchar/issues" +tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] +license: "typeof OCaml system" +depends: [ + "ocaml" {>= "3.12.0"} + "ocamlbuild" {build} +] +build: [ + ["ocaml" "pkg/git.ml"] + [ + "ocaml" + "pkg/build.ml" + "native=%{ocaml:native}%" + "native-dynlink=%{ocaml:native-dynlink}%" + ] +] +synopsis: "Compatibility library for OCaml's Uchar module" +description: """ +The `uchar` package provides a compatibility library for the +[`Uchar`][1] module introduced in OCaml 4.03. + +The `uchar` package is distributed under the license of the OCaml +compiler. See [LICENSE](LICENSE) for details. + +[1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" +url { + src: + "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" + checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" +} diff --git a/esy.lock/opam/uutf.1.0.2/opam b/esy.lock/opam/uutf.1.0.2/opam new file mode 100644 index 0000000..3a9f567 --- /dev/null +++ b/esy.lock/opam/uutf.1.0.2/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/uutf" +doc: "http://erratique.ch/software/uutf/doc/Uutf" +dev-repo: "git+http://erratique.ch/repos/uutf.git" +bug-reports: "https://github.com/dbuenzli/uutf/issues" +tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.01.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build} + "uchar" +] +depopts: ["cmdliner"] +conflicts: ["cmdliner" { < "0.9.6"} ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--pinned" "%{pinned}%" + "--with-cmdliner" "%{cmdliner:installed}%" ]] +synopsis: """Non-blocking streaming Unicode codec for OCaml""" +description: """\ + +Uutf is a non-blocking streaming codec to decode and encode the UTF-8, +UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently +work character by character without blocking on IO. Decoders perform +character position tracking and support newline normalization. + +Functions are also provided to fold over the characters of UTF encoded +OCaml string values and to directly encode characters in OCaml +Buffer.t values. + +Uutf has no dependency and is distributed under the ISC license. +""" +url { +archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" +checksum: "a7c542405a39630c689a82bd7ef2292c" +} diff --git a/esy.lock/opam/yojson.1.7.0/opam b/esy.lock/opam/yojson.1.7.0/opam new file mode 100644 index 0000000..ffef068 --- /dev/null +++ b/esy.lock/opam/yojson.1.7.0/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] +homepage: "https://github.com/ocaml-community/yojson" +bug-reports: "https://github.com/ocaml-community/yojson/issues" +dev-repo: "git+https://github.com/ocaml-community/yojson.git" +doc: "https://ocaml-community.github.io/yojson/" +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] +] +run-test: [["dune" "runtest" "-p" name "-j" jobs]] +depends: [ + "ocaml" {>= "4.02.3"} + "dune" + "cppo" {build} + "easy-format" + "biniou" {>= "1.2.0"} + "alcotest" {with-test & >= "0.8.5"} +] +synopsis: + "Yojson is an optimized parsing and printing library for the JSON format" +description: """ +Yojson is an optimized parsing and printing library for the JSON format. + +It addresses a few shortcomings of json-wheel including 2x speedup, +polymorphic variants and optional syntax for tuples and variants. + +ydump is a pretty-printing command-line program provided with the +yojson package. + +The program atdgen can be used to derive OCaml-JSON serializers and +deserializers from type definitions.""" +url { + src: + "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" + checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" +} diff --git a/esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override/package.json b/esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override/package.json new file mode 100644 index 0000000..064c7e3 --- /dev/null +++ b/esy.lock/overrides/opam__s__dune_opam__c__1.11.4_opam_override/package.json @@ -0,0 +1,14 @@ +{ + "build": [ + [ + "ocaml", + "bootstrap.ml" + ], + [ + "./boot.exe", + "--release", + "-j", + "4" + ] + ] +} diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch new file mode 100644 index 0000000..4d5bea0 --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch @@ -0,0 +1,463 @@ +--- ./Makefile ++++ ./Makefile +@@ -213,7 +213,7 @@ + rm -f man/ocamlbuild.1 + + man/options_man.byte: src/ocamlbuild_pack.cmo +- $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte ++ $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte + + clean:: + rm -f man/options_man.cm* +--- ./src/command.ml ++++ ./src/command.ml +@@ -148,9 +148,10 @@ + let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in + let b = Buffer.create 256 in + (* The best way to prevent bash from switching to its windows-style +- * quote-handling is to prepend an empty string before the command name. *) ++ * quote-handling is to prepend an empty string before the command name. ++ * space seems to work, too - and the ouput is nicer *) + if Sys.os_type = "Win32" then +- Buffer.add_string b "''"; ++ Buffer.add_char b ' '; + let first = ref true in + let put_space () = + if !first then +@@ -260,7 +261,7 @@ + + let execute_many ?(quiet=false) ?(pretend=false) cmds = + add_parallel_stat (List.length cmds); +- let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in ++ let degraded = !*My_unix.is_degraded in + let jobs = !jobs in + if jobs < 0 then invalid_arg "jobs < 0"; + let max_jobs = if jobs = 0 then None else Some jobs in +--- ./src/findlib.ml ++++ ./src/findlib.ml +@@ -66,9 +66,6 @@ + (fun command -> lexer & Lexing.from_string & run_and_read command) + command + +-let run_and_read command = +- Printf.ksprintf run_and_read command +- + let rec query name = + try + Hashtbl.find packages name +@@ -135,7 +132,8 @@ + with Not_found -> s + + let list () = +- List.map before_space (split_nl & run_and_read "%s list" ocamlfind) ++ let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in ++ List.map before_space (split_nl & run_and_read cmd) + + (* The closure algorithm is easy because the dependencies are already closed + and sorted for each package. We only have to make the union. We could also +--- ./src/main.ml ++++ ./src/main.ml +@@ -162,6 +162,9 @@ + Tags.mem "traverse" tags + || List.exists (Pathname.is_prefix path_name) !Options.include_dirs + || List.exists (Pathname.is_prefix path_name) target_dirs) ++ && ((* beware: !Options.build_dir is an absolute directory *) ++ Pathname.normalize !Options.build_dir ++ <> Pathname.normalize (Pathname.pwd/path_name)) + end + end + end +--- ./src/my_std.ml ++++ ./src/my_std.ml +@@ -271,13 +271,107 @@ + try Array.iter (fun x -> if x = basename then raise Exit) a; false + with Exit -> true + ++let command_plain = function ++| [| |] -> 0 ++| margv -> ++ let rec waitpid a b = ++ match Unix.waitpid a b with ++ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b ++ | x -> x ++ in ++ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in ++ let pid', process_status = waitpid [] pid in ++ assert (pid = pid'); ++ match process_status with ++ | Unix.WEXITED n -> n ++ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) ++ | Unix.WSTOPPED _ -> 127 ++ ++(* can't use Lexers because of circular dependency *) ++let split_path_win str = ++ let rec aux pos = ++ try ++ let i = String.index_from str pos ';' in ++ let len = i - pos in ++ if len = 0 then ++ aux (succ i) ++ else ++ String.sub str pos (i - pos) :: aux (succ i) ++ with Not_found | Invalid_argument _ -> ++ let len = String.length str - pos in ++ if len = 0 then [] else [String.sub str pos len] ++ in ++ aux 0 ++ ++let windows_shell = lazy begin ++ let rec iter = function ++ | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] ++ | hd::tl -> ++ let dash = Filename.concat hd "dash.exe" in ++ if Sys.file_exists dash then [|dash|] else ++ let bash = Filename.concat hd "bash.exe" in ++ if Sys.file_exists bash = false then iter tl else ++ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) ++ let sh = Filename.concat hd "sh.exe" in ++ if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] ++ in ++ split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter ++end ++ ++let prep_windows_cmd cmd = ++ (* workaround known ocaml bug, remove later *) ++ if String.contains cmd '\t' && String.contains cmd ' ' = false then ++ " " ^ cmd ++ else ++ cmd ++ ++let run_with_shell = function ++| "" -> 0 ++| cmd -> ++ let cmd = prep_windows_cmd cmd in ++ let shell = Lazy.force windows_shell in ++ let qlen = Filename.quote cmd |> String.length in ++ (* old versions of dash had problems with bs *) ++ try ++ if qlen < 7_900 then ++ command_plain (Array.append shell [| "-ec" ; cmd |]) ++ else begin ++ (* it can still work, if the called command is a cygwin tool *) ++ let ch_closed = ref false in ++ let file_deleted = ref false in ++ let fln,ch = ++ Filename.open_temp_file ++ ~mode:[Open_binary] ++ "ocamlbuildtmp" ++ ".sh" ++ in ++ try ++ let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in ++ output_string ch cmd; ++ ch_closed:= true; ++ close_out ch; ++ let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in ++ file_deleted:= true; ++ Sys.remove fln; ++ ret ++ with ++ | x -> ++ if !ch_closed = false then ++ close_out_noerr ch; ++ if !file_deleted = false then ++ (try Sys.remove fln with _ -> ()); ++ raise x ++ end ++ with ++ | (Unix.Unix_error _) as x -> ++ (* Sys.command doesn't raise an exception, so run_with_shell also won't ++ raise *) ++ Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; ++ 1 ++ + let sys_command = +- match Sys.os_type with +- | "Win32" -> fun cmd -> +- if cmd = "" then 0 else +- let cmd = "bash --norc -c " ^ Filename.quote cmd in +- Sys.command cmd +- | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd ++ if Sys.win32 then run_with_shell ++ else fun cmd -> if cmd = "" then 0 else Sys.command cmd + + (* FIXME warning fix and use Filename.concat *) + let filename_concat x y = +--- ./src/my_std.mli ++++ ./src/my_std.mli +@@ -69,3 +69,6 @@ + + val split_ocaml_version : (int * int * int * string) option + (** (major, minor, patchlevel, rest) *) ++ ++val windows_shell : string array Lazy.t ++val prep_windows_cmd : string -> string +--- ./src/ocamlbuild_executor.ml ++++ ./src/ocamlbuild_executor.ml +@@ -34,6 +34,8 @@ + job_stdin : out_channel; + job_stderr : in_channel; + job_buffer : Buffer.t; ++ job_pid : int; ++ job_tmp_file: string option; + mutable job_dying : bool; + };; + +@@ -76,6 +78,61 @@ + in + loop 0 + ;; ++ ++let open_process_full_win cmd env = ++ let (in_read, in_write) = Unix.pipe () in ++ let (out_read, out_write) = Unix.pipe () in ++ let (err_read, err_write) = Unix.pipe () in ++ Unix.set_close_on_exec in_read; ++ Unix.set_close_on_exec out_write; ++ Unix.set_close_on_exec err_read; ++ let inchan = Unix.in_channel_of_descr in_read in ++ let outchan = Unix.out_channel_of_descr out_write in ++ let errchan = Unix.in_channel_of_descr err_read in ++ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in ++ let test_cmd = ++ String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ ++ "-ec " ^ ++ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in ++ let argv,tmp_file = ++ if String.length test_cmd < 7_900 then ++ Array.append ++ shell ++ [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None ++ else ++ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in ++ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); ++ close_out ch; ++ let fln' = String.map (function '\\' -> '/' | c -> c) fln in ++ Array.append ++ shell ++ [| "-c" ; fln' |], Some fln in ++ let pid = ++ Unix.create_process_env argv.(0) argv env out_read in_write err_write in ++ Unix.close out_read; ++ Unix.close in_write; ++ Unix.close err_write; ++ (pid, inchan, outchan, errchan,tmp_file) ++ ++let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = ++ let delete tmp_file = ++ match tmp_file with ++ | None -> () ++ | Some x -> try Sys.remove x with Sys_error _ -> () in ++ let tmp_file_deleted = ref false in ++ try ++ close_in inchan; ++ close_out outchan; ++ close_in errchan; ++ let res = snd(Unix.waitpid [] pid) in ++ tmp_file_deleted := true; ++ delete tmp_file; ++ res ++ with ++ | x when tmp_file <> None && !tmp_file_deleted = false -> ++ delete tmp_file; ++ raise x ++ + (* ***) + (*** execute *) + (* XXX: Add test for non reentrancy *) +@@ -130,10 +187,16 @@ + (*** add_job *) + let add_job cmd rest result id = + (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) +- let (stdout', stdin', stderr') = open_process_full cmd env in ++ let (pid,stdout', stdin', stderr', tmp_file) = ++ if Sys.win32 then open_process_full_win cmd env else ++ let a,b,c = open_process_full cmd env in ++ -1,a,b,c,None ++ in + incr jobs_active; +- set_nonblock (doi stdout'); +- set_nonblock (doi stderr'); ++ if not Sys.win32 then ( ++ set_nonblock (doi stdout'); ++ set_nonblock (doi stderr'); ++ ); + let job = + { job_id = id; + job_command = cmd; +@@ -143,7 +206,9 @@ + job_stdin = stdin'; + job_stderr = stderr'; + job_buffer = Buffer.create 1024; +- job_dying = false } ++ job_dying = false; ++ job_tmp_file = tmp_file; ++ job_pid = pid } + in + outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); + jobs := JS.add job !jobs; +@@ -199,6 +264,7 @@ + try + read fd u 0 (Bytes.length u) + with ++ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 + | Unix.Unix_error(e,_,_) -> + let msg = error_message e in + display (fun oc -> fp oc +@@ -241,14 +307,19 @@ + decr jobs_active; + + (* PR#5371: we would get EAGAIN below otherwise *) +- clear_nonblock (doi job.job_stdout); +- clear_nonblock (doi job.job_stderr); +- ++ if not Sys.win32 then ( ++ clear_nonblock (doi job.job_stdout); ++ clear_nonblock (doi job.job_stderr); ++ ); + do_read ~loop:true (doi job.job_stdout) job; + do_read ~loop:true (doi job.job_stderr) job; + outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); + jobs := JS.remove job !jobs; +- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in ++ let status = ++ if Sys.win32 then ++ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) ++ else ++ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in + + let shown = ref false in + +--- ./src/ocamlbuild_unix_plugin.ml ++++ ./src/ocamlbuild_unix_plugin.ml +@@ -48,12 +48,22 @@ + end + + let run_and_open s kont = ++ let s_orig = s in ++ let s = ++ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and ++ sys_command uses bash. *) ++ if Sys.win32 = false then s else ++ let l = match Lazy.force My_std.windows_shell |> Array.to_list with ++ | hd::tl -> (Filename.quote hd)::tl ++ | _ -> assert false in ++ "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" ++ in + let ic = Unix.open_process_in s in + let close () = + match Unix.close_process_in ic with + | Unix.WEXITED 0 -> () + | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> +- failwith (Printf.sprintf "Error while running: %s" s) in ++ failwith (Printf.sprintf "Error while running: %s" s_orig) in + let res = try + kont ic + with e -> (close (); raise e) +--- ./src/options.ml ++++ ./src/options.ml +@@ -174,11 +174,24 @@ + build_dir := Filename.concat (Sys.getcwd ()) s + else + build_dir := s ++ ++let slashify = ++ if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p ++ else fun p ->p ++ ++let sb () = ++ match Sys.os_type with ++ | "Win32" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ | _ -> () ++ ++ + let spec = ref ( + let print_version () = ++ sb (); + Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK + in +- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in ++ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in + Arg.align + [ + "-version", Unit print_version , " Display the version"; +@@ -257,8 +270,8 @@ + "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; + "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; + "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; +- "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; +- "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; ++ "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; ++ "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; + "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; + "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ + used when building myocamlbuild.ml (only)"; +--- ./src/pathname.ml ++++ ./src/pathname.ml +@@ -84,6 +84,26 @@ + | x :: xs -> x :: normalize_list xs + + let normalize x = ++ let x = ++ if Sys.win32 = false then ++ x ++ else ++ let len = String.length x in ++ let b = Bytes.create len in ++ for i = 0 to pred len do ++ match x.[i] with ++ | '\\' -> Bytes.set b i '/' ++ | c -> Bytes.set b i c ++ done; ++ if len > 1 then ( ++ let c1 = Bytes.get b 0 in ++ let c2 = Bytes.get b 1 in ++ if c2 = ':' && c1 >= 'a' && c1 <= 'z' && ++ ( len = 2 || Bytes.get b 2 = '/') then ++ Bytes.set b 0 (Char.uppercase_ascii c1) ++ ); ++ Bytes.unsafe_to_string b ++ in + if Glob.eval not_normal_form_re x then + let root, paths = split x in + join root (normalize_list paths) +--- ./src/shell.ml ++++ ./src/shell.ml +@@ -24,12 +24,26 @@ + | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) + | _ -> false in + loop 0 ++ ++let generic_quote quotequote s = ++ let l = String.length s in ++ let b = Buffer.create (l + 20) in ++ Buffer.add_char b '\''; ++ for i = 0 to l - 1 do ++ if s.[i] = '\'' ++ then Buffer.add_string b quotequote ++ else Buffer.add_char b s.[i] ++ done; ++ Buffer.add_char b '\''; ++ Buffer.contents b ++let unix_quote = generic_quote "'\\''" ++ + let quote_filename_if_needed s = + if is_simple_filename s then s + (* We should probably be using [Filename.unix_quote] except that function + * isn't exported. Users on Windows will have to live with not being able to + * install OCaml into c:\o'caml. Too bad. *) +- else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s ++ else if Sys.os_type = "Win32" then unix_quote s + else Filename.quote s + let chdir dir = + reset_filesys_cache (); +@@ -37,7 +51,7 @@ + let run args target = + reset_readdir_cache (); + let cmd = String.concat " " (List.map quote_filename_if_needed args) in +- if !*My_unix.is_degraded || Sys.os_type = "Win32" then ++ if !*My_unix.is_degraded then + begin + Log.event cmd target Tags.empty; + let st = sys_command cmd in diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json new file mode 100644 index 0000000..b24be7b --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json @@ -0,0 +1,27 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" + ], + [ + "make", + "-f", + "configure.make", + "all", + "OCAMLBUILD_PREFIX=#{self.install}", + "OCAMLBUILD_BINDIR=#{self.bin}", + "OCAMLBUILD_LIBDIR=#{self.lib}", + "OCAMLBUILD_MANDIR=#{self.man}", + "OCAMLBUILD_NATIVE=true", + "OCAMLBUILD_NATIVE_TOOLS=true" + ], + [ + "make", + "check-if-preinstalled", + "all", + "#{os == 'windows' ? 'install' : 'opam-install'}" + ] + ] +} diff --git a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch new file mode 100644 index 0000000..3e3ee5a --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch @@ -0,0 +1,471 @@ +--- ./Makefile ++++ ./Makefile +@@ -57,16 +57,16 @@ + cat findlib.conf.in | \ + $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf + if ./tools/cmd_from_same_dir ocamlc; then \ +- echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ ++ echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamlopt; then \ +- echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ ++ echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldep; then \ +- echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ ++ echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldoc; then \ +- echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ ++ echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + + .PHONY: install-doc +--- ./src/findlib/findlib_config.mlp ++++ ./src/findlib/findlib_config.mlp +@@ -24,3 +24,5 @@ + | "MacOS" -> "" (* don't know *) + | _ -> failwith "Unknown Sys.os_type" + ;; ++ ++let exec_suffix = "@EXEC_SUFFIX@";; +--- ./src/findlib/findlib.ml ++++ ./src/findlib/findlib.ml +@@ -28,15 +28,20 @@ + let conf_ldconf = ref "";; + let conf_ignore_dups_in = ref ([] : string list);; + +-let ocamlc_default = "ocamlc";; +-let ocamlopt_default = "ocamlopt";; +-let ocamlcp_default = "ocamlcp";; +-let ocamloptp_default = "ocamloptp";; +-let ocamlmklib_default = "ocamlmklib";; +-let ocamlmktop_default = "ocamlmktop";; +-let ocamldep_default = "ocamldep";; +-let ocamlbrowser_default = "ocamlbrowser";; +-let ocamldoc_default = "ocamldoc";; ++let add_exec str = ++ match Findlib_config.exec_suffix with ++ | "" -> str ++ | a -> str ^ a ;; ++let ocamlc_default = add_exec "ocamlc";; ++let ocamlopt_default = add_exec "ocamlopt";; ++let ocamlcp_default = add_exec "ocamlcp";; ++let ocamloptp_default = add_exec "ocamloptp";; ++let ocamlmklib_default = add_exec "ocamlmklib";; ++let ocamlmktop_default = add_exec "ocamlmktop";; ++let ocamldep_default = add_exec "ocamldep";; ++let ocamlbrowser_default = add_exec "ocamlbrowser";; ++let ocamldoc_default = add_exec "ocamldoc";; ++ + + + let init_manually +--- ./src/findlib/fl_package_base.ml ++++ ./src/findlib/fl_package_base.ml +@@ -133,7 +133,15 @@ + List.find (fun def -> def.def_var = "exists_if") p.package_defs in + let files = Fl_split.in_words def.def_value in + List.exists +- (fun file -> Sys.file_exists (Filename.concat d' file)) ++ (fun file -> ++ let fln = Filename.concat d' file in ++ let e = Sys.file_exists fln in ++ (* necessary for ppx executables *) ++ if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then ++ e ++ else ++ Sys.file_exists (fln ^ ".exe") ++ ) + files + with Not_found -> true in + +--- ./src/findlib/fl_split.ml ++++ ./src/findlib/fl_split.ml +@@ -126,10 +126,17 @@ + | '/' | '\\' -> true + | _ -> false in + let norm_dir_win() = +- if l >= 1 && s.[0] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[0]; +- if l >= 2 && s.[1] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[1]; ++ if l >= 1 then ( ++ if s.[0] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[0] ; ++ if l >= 2 then ++ if s.[1] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[1]; ++ ); + for k = 2 to l - 1 do + let c = s.[k] in + if is_slash c then ( +--- ./src/findlib/frontend.ml ++++ ./src/findlib/frontend.ml +@@ -31,10 +31,18 @@ + else + Sys_error (arg ^ ": " ^ Unix.error_message code) + ++let is_win = Sys.os_type = "Win32" ++ ++let () = ++ match Findlib_config.system with ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ (try set_binary_mode_out stderr true with _ -> ()); ++ | _ -> () + + let slashify s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> + let b = Buffer.create 80 in + String.iter + (function +@@ -49,7 +57,7 @@ + + let out_path ?(prefix="") s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> + let u = slashify s in + prefix ^ + (if String.contains u ' ' then +@@ -273,11 +281,9 @@ + + + let identify_dir d = +- match Sys.os_type with +- | "Win32" -> +- failwith "identify_dir" (* not available *) +- | _ -> +- let s = Unix.stat d in ++ if is_win then ++ failwith "identify_dir"; (* not available *) ++ let s = Unix.stat d in + (s.Unix.st_dev, s.Unix.st_ino) + ;; + +@@ -459,6 +465,96 @@ + ) + packages + ++let rewrite_cmd s = ++ if s = "" || not is_win then ++ s ++ else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_cmd s = ++ if s = "" || not is_win then s else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_pp cmd = ++ if not is_win then cmd else ++ let module T = struct exception Keep end in ++ let is_whitespace = function ++ | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true ++ | _ -> false in ++ (* characters that triggers special behaviour (cmd.exe, not unix shell) *) ++ let is_unsafe_char = function ++ | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true ++ | _ -> false in ++ let len = String.length cmd in ++ let buf = Buffer.create (len + 4) in ++ let buf_cmd = Buffer.create len in ++ let rec iter_ws i = ++ if i >= len then () else ++ let cur = cmd.[i] in ++ if is_whitespace cur then ( ++ Buffer.add_char buf cur; ++ iter_ws (succ i) ++ ) ++ else ++ iter_cmd i ++ and iter_cmd i = ++ if i >= len then add_buf_cmd () else ++ let cur = cmd.[i] in ++ if is_unsafe_char cur || cur = '"' || cur = '\'' then ++ raise T.Keep; ++ if is_whitespace cur then ( ++ add_buf_cmd (); ++ Buffer.add_substring buf cmd i (len - i) ++ ) ++ else ( ++ Buffer.add_char buf_cmd cur; ++ iter_cmd (succ i) ++ ) ++ and add_buf_cmd () = ++ if Buffer.length buf_cmd > 0 then ++ Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) ++ in ++ try ++ iter_ws 0; ++ Buffer.contents buf ++ with ++ | T.Keep -> cmd + + let process_pp_spec syntax_preds packages pp_opts = + (* Returns: pp_command *) +@@ -549,7 +645,7 @@ + None -> [] + | Some cmd -> + ["-pp"; +- cmd ^ " " ^ ++ (rewrite_cmd cmd) ^ " " ^ + String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ + String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ + String.concat " " (List.map Filename.quote pp_opts)] +@@ -625,9 +721,11 @@ + in + try + let preprocessor = ++ rewrite_cmd ( + resolve_path + ~base ~explicit:true +- (package_property predicates pname "ppx") in ++ (package_property predicates pname "ppx") ) ++ in + ["-ppx"; String.concat " " (preprocessor :: options)] + with Not_found -> [] + ) +@@ -895,6 +993,14 @@ + switch (e.g. -L instead of -L ) + *) + ++(* We may need to remove files on which we do not have complete control. ++ On Windows, removing a read-only file fails so try to change the ++ mode of the file first. *) ++let remove_file fname = ++ try Sys.remove fname ++ with Sys_error _ when is_win -> ++ (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); ++ Sys.remove fname + + let ocamlc which () = + +@@ -1022,9 +1128,12 @@ + + "-intf", + Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); +- ++ + "-pp", +- Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); ++ Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); ++ ++ "-ppx", ++ Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); + + "-thread", + Arg.Unit (fun _ -> threads := threads_default); +@@ -1237,7 +1346,7 @@ + with + any -> + close_out initl; +- Sys.remove initl_file_name; ++ remove_file initl_file_name; + raise any + end; + +@@ -1245,9 +1354,9 @@ + at_exit + (fun () -> + let tr f x = try f x with _ -> () in +- tr Sys.remove initl_file_name; +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); ++ tr remove_file initl_file_name; ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); + ); + + let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in +@@ -1493,7 +1602,9 @@ + [ "-v", Arg.Unit (fun () -> verbose := Verbose); + "-pp", Arg.String (fun s -> + pp_specified := true; +- options := !options @ ["-pp"; s]); ++ options := !options @ ["-pp"; rewrite_pp s]); ++ "-ppx", Arg.String (fun s -> ++ options := !options @ ["-ppx"; rewrite_pp s]); + ] + ) + ) +@@ -1672,7 +1783,9 @@ + Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); + + "-pp", Arg.String (fun s -> pp_specified := true; +- add_spec_fn "-pp" s); ++ add_spec_fn "-pp" (rewrite_pp s)); ++ "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); ++ + ] + ) + ) +@@ -1830,7 +1943,10 @@ + output_string ch_out append; + close_out ch_out; + close_in ch_in; +- Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; ++ (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime ++ with Unix.Unix_error(e,_,_) -> ++ prerr_endline("Warning: setting utimes for " ^ outpath ++ ^ ": " ^ Unix.error_message e)); + + prerr_endline("Installed " ^ outpath); + with +@@ -1882,6 +1998,8 @@ + Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in + let f = + Unix.in_channel_of_descr fd in ++ if is_win then ++ set_binary_mode_in f false; + try + let line = input_line f in + let is_my_file = (line = pkg) in +@@ -2208,7 +2326,7 @@ + let lines = read_ldconf !ldconf in + let dlldir_norm = Fl_split.norm_dir dlldir in + let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in +- let ci_filesys = (Sys.os_type = "Win32") in ++ let ci_filesys = is_win in + let check_dir d = + let d' = Fl_split.norm_dir d in + (d' = dlldir_norm) || +@@ -2356,7 +2474,7 @@ + List.iter + (fun file -> + let absfile = Filename.concat dlldir file in +- Sys.remove absfile; ++ remove_file absfile; + prerr_endline ("Removed " ^ absfile) + ) + dll_files +@@ -2365,7 +2483,7 @@ + (* Remove the files from the package directory: *) + if Sys.file_exists pkgdir then begin + let files = Sys.readdir pkgdir in +- Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; ++ Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; + Unix.rmdir pkgdir; + prerr_endline ("Removed " ^ pkgdir) + end +@@ -2415,7 +2533,9 @@ + + + let print_configuration() = ++ let sl = slashify in + let dir s = ++ let s = sl s in + if Sys.file_exists s then + s + else +@@ -2453,27 +2573,27 @@ + if md = "" then "the corresponding package directories" else dir md + ); + Printf.printf "The standard library is assumed to reside in:\n %s\n" +- (Findlib.ocaml_stdlib()); ++ (sl (Findlib.ocaml_stdlib())); + Printf.printf "The ld.conf file can be found here:\n %s\n" +- (Findlib.ocaml_ldconf()); ++ (sl (Findlib.ocaml_ldconf())); + flush stdout + | Some "conf" -> +- print_endline (Findlib.config_file()) ++ print_endline (sl (Findlib.config_file())) + | Some "path" -> +- List.iter print_endline (Findlib.search_path()) ++ List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) + | Some "destdir" -> +- print_endline (Findlib.default_location()) ++ print_endline ( sl (Findlib.default_location())) + | Some "metadir" -> +- print_endline (Findlib.meta_directory()) ++ print_endline ( sl (Findlib.meta_directory())) + | Some "metapath" -> + let mdir = Findlib.meta_directory() in + let ddir = Findlib.default_location() in +- print_endline +- (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") ++ print_endline ( sl ++ (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) + | Some "stdlib" -> +- print_endline (Findlib.ocaml_stdlib()) ++ print_endline ( sl (Findlib.ocaml_stdlib())) + | Some "ldconf" -> +- print_endline (Findlib.ocaml_ldconf()) ++ print_endline ( sl (Findlib.ocaml_ldconf())) + | _ -> + assert false + ;; +@@ -2481,7 +2601,7 @@ + + let ocamlcall pkg cmd = + let dir = package_directory pkg in +- let path = Filename.concat dir cmd in ++ let path = rewrite_cmd (Filename.concat dir cmd) in + begin + try Unix.access path [ Unix.X_OK ] + with +@@ -2647,6 +2767,10 @@ + | Sys_error f -> + prerr_endline ("ocamlfind: " ^ f); + exit 2 ++ | Unix.Unix_error (e, fn, f) -> ++ prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f ++ ^ ": " ^ Unix.error_message e); ++ exit 2 + | Findlib.No_such_package(pkg,info) -> + prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ + (if info <> "" then " - " ^ info else "")); +--- ./src/findlib/Makefile ++++ ./src/findlib/Makefile +@@ -90,6 +90,7 @@ + cat findlib_config.mlp | \ + $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ + $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ ++ $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ + sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ + -e 's;@SYSTEM@;$(SYSTEM);g' \ + >findlib_config.ml diff --git a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json new file mode 100644 index 0000000..9314f87 --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json @@ -0,0 +1,61 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < findlib-1.8.1.patch' : 'true'}" + ], + [ + "./configure", + "-bindir", + "#{self.bin}", + "-sitelib", + "#{self.lib}", + "-mandir", + "#{self.man}", + "-config", + "#{self.lib}/findlib.conf", + "-no-custom", + "-no-topfind" + ], + [ + "make", + "all" + ], + [ + "make", + "opt" + ] + ], + "install": [ + [ + "make", + "install" + ], + [ + "install", + "-m", + "0755", + "ocaml-stub", + "#{self.bin}/ocaml" + ], + [ + "mkdir", + "-p", + "#{self.toplevel}" + ], + [ + "install", + "-m", + "0644", + "src/findlib/topfind", + "#{self.toplevel}/topfind" + ] + ], + "exportedEnv": { + "OCAML_TOPLEVEL_PATH": { + "val": "#{self.toplevel}", + "scope": "global" + } + } +} diff --git a/package.json b/package.json index 5e55e6e..cfc9343 100644 --- a/package.json +++ b/package.json @@ -5,30 +5,28 @@ "url": "https://github.com/bryphe/reason-gl-matrix", "license": "MIT", "scripts": { - "build:js": "esy b dune build ./test/bin/test_runner.bc.js", + "build:js": "esy b dune build --profile=release ./test/bin/test_runner.bc.js", "test:js": "node bin/test-jsoo.js", - "test:native": "esy b dune runtest", - "test": "npm run build:js && npm run test:js && npm run test:native" + "test:native": "esy b dune exec test/bin/test_runner.exe", + "test": "esy build:js && esy test:native && esy test:js" }, "esy": { - "build": ["refmterr dune build -p reglm"], + "build": [ + "dune build -p reglm" + ], + "buildDev": [ + "refmterr dune build -p reglm" + ], "buildsInSource": "_build" }, - "resolutions": { - "@esy-ocaml/esy-installer": "0.0.1", - "@opam/cmdliner": "1.0.4", - "@opam/camomile": "1.0.1" - }, "dependencies": { - "@opam/dune": "*", - "@esy-ocaml/reason": "*", - "refmterr": "*", - "@opam/js_of_ocaml-compiler": "*", - "ocaml": ">=4.4.0", - "rejest": "^1.3.0" + "@esy-ocaml/reason": "^3.5.2", + "@opam/dune": "1.11.4", + "@opam/js_of_ocaml-compiler": "3.5.0" }, "devDependencies": { - "@opam/merlin": "*", - "ocaml": ">=4.4.0" + "@opam/merlin": "3.3.2", + "@reason-native/rely": "^3.1.0", + "refmterr": "^3.2.2" } } diff --git a/src/gl-matrix_stubs.js b/src/gl-matrix_stubs.js index 7079983..638a298 100644 --- a/src/gl-matrix_stubs.js +++ b/src/gl-matrix_stubs.js @@ -1,3 +1,10 @@ +// Add our stub while waiting https://github.com/ocsigen/js_of_ocaml/issues/913 + +//Provides: unix_isatty +function unix_isatty (f) { + return false; +}; + // Provides: caml_mat4_create function caml_mat4_create() { return joo_global_object.mat4.create(); diff --git a/test/Angle.re b/test/Angle.re index bbfa5a4..6f9d939 100644 --- a/test/Angle.re +++ b/test/Angle.re @@ -1,19 +1,19 @@ module Angle = Reglm.Angle; -open Rejest; +open TestFramework; -test("Angle", () => { - test("Degree -> radians", () => { +describe("Angle", ({test, _}) => { + test("Degree -> radians", ({expect, _}) => { let degree = Angle.from_degrees(1.0); let radians = Angle.to_radians(degree); - Helpers.assertFloatsEqual(radians, 0.0174532925); + expect.float(radians).toBeCloseTo(0.0174532925); }); - test("Radians -> degrees", () => { + test("Radians -> degrees", ({expect, _}) => { let radians = Angle.from_radians(0.0174532925); let degrees = Angle.to_degrees(radians); - Helpers.assertFloatsEqual(degrees, 1.); + expect.float(degrees).toBeCloseTo(1.); }); }); diff --git a/test/Helpers.re b/test/Helpers.re deleted file mode 100644 index 3ece93b..0000000 --- a/test/Helpers.re +++ /dev/null @@ -1,11 +0,0 @@ -let assertFloatsEqual = (expected, actual) => { - let equal = abs_float(expected -. actual) < 0.00001; - - print_endline( - "[assertFloatsEqual] Expected: " - ++ string_of_float(expected) - ++ " Actual: " - ++ string_of_float(actual), - ); - assert(equal); -}; diff --git a/test/Mat4.re b/test/Mat4.re index f450a22..cdebf2f 100644 --- a/test/Mat4.re +++ b/test/Mat4.re @@ -1,18 +1,18 @@ open Reglm; -open Rejest; +open TestFramework; module Angle = Reglm.Angle; let pi = Angle.pi; /*MAT4*/ -let assertMat4 = (expected, actual) => +let assertMat4 = (expect, expected, actual) => for (i in 0 to 15) { let expectedValue = expected[i]; let actualValue = Mat4.get(actual, i); - Helpers.assertFloatsEqual(expectedValue, actualValue); + expect.float(expectedValue).toBeCloseTo(actualValue); }; -let assertVec3 = (expected, actual) => { +let assertVec3 = (expect, expected, actual) => { let expectedX = Vec3.get_x(expected); let expectedY = Vec3.get_y(expected); let expectedZ = Vec3.get_z(expected); @@ -21,14 +21,14 @@ let assertVec3 = (expected, actual) => { let actualY = Vec3.get_y(actual); let actualZ = Vec3.get_z(actual); - Helpers.assertFloatsEqual(expectedX, actualX); - Helpers.assertFloatsEqual(expectedY, actualY); - Helpers.assertFloatsEqual(expectedZ, actualZ); + expect.float(expectedX).toBeCloseTo(actualX); + expect.float(expectedY).toBeCloseTo(actualY); + expect.float(expectedZ).toBeCloseTo(actualZ); }; -test("Mat4", () => { +describe("Mat4", ({test, _}) => { /* simple test for identity matrix */ - test("identity", () => { + test("identity", ({expect, _}) => { let expectedMatrix = [| 1., 0., @@ -48,10 +48,10 @@ test("Mat4", () => { 1.0, |]; - assertMat4(expectedMatrix, Mat4.create()); + assertMat4(expect, expectedMatrix, Mat4.create()); }); - test("multiply", () => { + test("multiply", ({expect, _}) => { let vTranslation = Vec3.create(2., 2., 2.); let mTranslation = Mat4.create(); Mat4.fromTranslation(mTranslation, vTranslation); @@ -67,13 +67,13 @@ test("Mat4", () => { let m13 = Mat4.get(mResult, 13); let m14 = Mat4.get(mResult, 14); let m15 = Mat4.get(mResult, 15); - assert(m03 == 6.); - assert(m13 == 8.); - assert(m14 == 10.); - assert(m15 == 1.); + expect.float(m03).toBeCloseTo(6.); + expect.float(m13).toBeCloseTo(8.); + expect.float(m14).toBeCloseTo(10.); + expect.float(m15).toBeCloseTo(1.); }); - test("rotate", () => { + test("rotate", ({expect, _}) => { let m = Mat4.create(); let rad = Angle.from_radians(pi *. 0.5); let axis = Vec3.create(1., 0., 0.); @@ -99,11 +99,11 @@ test("Mat4", () => { 1., |]; - assertMat4(expectedResult, m); + assertMat4(expect, expectedResult, m); }); /* transformVec3 */ - test("transformVec3", () => { + test("transformVec3", ({expect, _}) => { let m = Mat4.create(); Mat4.fromRotation(m, Angle.from_radians(pi *. 0.5), Vec3.forward()); let v = Vec3.up(); @@ -114,11 +114,11 @@ test("Mat4", () => { print_endline("Z: " ++ string_of_float(Vec3.get_z(v))); let expected = Vec3.left(); - assertVec3(expected, v); + assertVec3(expect, expected, v); }); /* lookAt */ - test("lookAt", () => { + test("lookAt", ({expect, _}) => { let vEye = Vec3.create(0., 0., 1.); let vCenter = Vec3.create(0., 0., -1.); let vUp = Vec3.create(0., 1., 0.); @@ -145,12 +145,12 @@ test("Mat4", () => { 1.0, |]; - assertMat4(expectedMatrix, mResult); + assertMat4(expect, expectedMatrix, mResult); }); /* perspective */ /* Test case from: https://github.com/toji/gl-matrix/blob/master/spec/gl-matrix/mat4-spec.js */ - test("perspective", () => { + test("perspective", ({expect, _}) => { let mResult = Mat4.create(); Mat4.perspective(mResult, 45. *. pi /. 180., 640. /. 480., 0.1, 200.); @@ -173,12 +173,12 @@ test("Mat4", () => { 0., |]; - assertMat4(expectedMatrix, mResult); + assertMat4(expect, expectedMatrix, mResult); }); /* ortho */ /* Test case from: https://github.com/toji/gl-matrix/blob/master/spec/gl-matrix/mat4-spec.js */ - test("ortho", () => { + test("ortho", ({expect, _}) => { let mResult = Mat4.create(); Mat4.ortho(mResult, -1., 1., -1., 1., -1., 1.); @@ -201,6 +201,6 @@ test("Mat4", () => { 1., |]; - assertMat4(expectedMatrix, mResult); + assertMat4(expect, expectedMatrix, mResult); }); }); diff --git a/test/TestFramework.re b/test/TestFramework.re new file mode 100644 index 0000000..53c3d3a --- /dev/null +++ b/test/TestFramework.re @@ -0,0 +1,32 @@ +module MockSnapshotIO = { + let readSnapshotNames = _ => []; + let readFile: string => string = s => s; + let removeFile: string => unit = _ => (); + let writeFile: (string, string) => unit = (_, _) => (); + let existsFile: string => bool = _ => false; + let mkdirp = _ => (); +}; +/* Snapshots will be virtual-modulified at some point, until then we need to inject + * something custom with RelyInternal to make JSOO happy because the default snapshot + * implementation uses the Unix module */ +include RelyInternal.TestFramework.MakeInternal( + MockSnapshotIO, + { + let config = + RelyInternal.TestFrameworkConfig.TestFrameworkConfig.initialize({ + snapshotDir: "test/__snapshots__", + projectDir: "", + }); + }, + ); + +// When https://github.com/facebookexperimental/reason-native/issues/207 is closed we can use the code below +/* +include Rely.Make({ + let config = + Rely.TestFrameworkConfig.initialize({ + snapshotDir: "test/__snapshots__", + projectDir: "", + }); +}); +*/ diff --git a/test/Vec3.re b/test/Vec3.re index cc76208..34fa867 100644 --- a/test/Vec3.re +++ b/test/Vec3.re @@ -1,27 +1,28 @@ open Reglm; +open TestFramework; -open Rejest; - -open Helpers; - -test("vec3", () => { - test("zero()", () => { +describe("Vec3", ({test, _}) => { + test("zero()", ({expect, _}) => { let v = Vec3.zero(); + let x = Vec3.get_x(v); let y = Vec3.get_y(v); let z = Vec3.get_z(v); - assertFloatsEqual(x, 0.0); - assertFloatsEqual(y, 0.0); - assertFloatsEqual(z, 0.0); + + expect.float(x).toBeCloseTo(0.0); + expect.float(y).toBeCloseTo(0.0); + expect.float(z).toBeCloseTo(0.0); }); - test("create()", () => { + test("create()", ({expect, _}) => { let v = Vec3.create(10., 11., 12.); + let x = Vec3.get_x(v); let y = Vec3.get_y(v); let z = Vec3.get_z(v); - assertFloatsEqual(x, 10.0); - assertFloatsEqual(y, 11.0); - assertFloatsEqual(z, 12.0); + + expect.float(x).toBeCloseTo(10.0); + expect.float(y).toBeCloseTo(11.0); + expect.float(z).toBeCloseTo(12.0); }); }); diff --git a/test/bin/dune b/test/bin/dune index fafa042..f54fabf 100644 --- a/test/bin/dune +++ b/test/bin/dune @@ -1,3 +1,5 @@ (executable (name test_runner) - (libraries Test rejest)) +; Remove warning + (js_of_ocaml (flags (--disable genprim))) + (libraries Test)) diff --git a/test/bin/test_runner.re b/test/bin/test_runner.re index b737cf5..338aef2 100644 --- a/test/bin/test_runner.re +++ b/test/bin/test_runner.re @@ -1,3 +1 @@ -print_endline ("Running tests..."); - -Rejest.run(); +Test.TestFramework.cli(); diff --git a/test/dune b/test/dune index 80bbcdc..4020dbc 100644 --- a/test/dune +++ b/test/dune @@ -1,8 +1,5 @@ (library (name Test) - (library_flags (-linkall)) + (library_flags (-linkall -g)) (modules (:standard)) - (libraries - reglm - rejest - )) + (libraries reglm rely.lib)) diff --git a/test/quat.re b/test/quat.re index c8f7eb1..4634612 100644 --- a/test/quat.re +++ b/test/quat.re @@ -1,9 +1,9 @@ open Reglm; -open Rejest; +open TestFramework; -test("Quat", () => - test("create", () => { +describe("Quat", ({test, _}) => + test("create", ({expect, _}) => { let q = Quat.create(0., 1., 2., 3.); let x = Quat.get_x(q); @@ -11,9 +11,9 @@ test("Quat", () => let z = Quat.get_z(q); let w = Quat.get_w(q); - expect(x).toEqual(0.); - expect(y).toEqual(1.); - expect(z).toEqual(2.); - expect(w).toEqual(3.); + expect.float(x).toBeCloseTo(0.); + expect.float(y).toBeCloseTo(1.); + expect.float(z).toBeCloseTo(2.); + expect.float(w).toBeCloseTo(3.); }) ); diff --git a/test/vec2.re b/test/vec2.re index 9d255c9..b668415 100644 --- a/test/vec2.re +++ b/test/vec2.re @@ -1,20 +1,24 @@ open Reglm; +open TestFramework; -let () = { - let v = Vec2.zero(); +describe("Vec2", ({test, _}) => { + test("zero()", ({expect, _}) => { + let v = Vec2.zero(); - let x = Vec2.get_x(v); - let y = Vec2.get_y(v); + let x = Vec2.get_x(v); + let y = Vec2.get_y(v); - Helpers.assertFloatsEqual(0., x); - Helpers.assertFloatsEqual(0., y); -}; + expect.float(x).toBeCloseTo(0.); + expect.float(y).toBeCloseTo(0.); + }); -let () = { - let v = Vec2.create(1., 2.); - let x = Vec2.get_x(v); - let y = Vec2.get_y(v); + test("create()", ({expect, _}) => { + let v = Vec2.create(1., 2.); - Helpers.assertFloatsEqual(1., x); - Helpers.assertFloatsEqual(2., y); -}; + let x = Vec2.get_x(v); + let y = Vec2.get_y(v); + + expect.float(x).toBeCloseTo(1.); + expect.float(y).toBeCloseTo(2.); + }); +}); diff --git a/test/vec4.re b/test/vec4.re index c6013ed..b4f2fba 100644 --- a/test/vec4.re +++ b/test/vec4.re @@ -1,10 +1,8 @@ open Reglm; -open Rejest; +open TestFramework; -open Helpers; - -test("Vec4", () => { - test("zero()", () => { +describe("Vec4", ({test, _}) => { + test("zero()", ({expect, _}) => { let v = Vec4.zero(); let x = Vec4.get_x(v); @@ -12,22 +10,23 @@ test("Vec4", () => { let z = Vec4.get_z(v); let w = Vec4.get_w(v); - assertFloatsEqual(x, 0.); - assertFloatsEqual(y, 0.); - assertFloatsEqual(z, 0.); - assertFloatsEqual(w, 0.); + expect.float(x).toBeCloseTo(0.); + expect.float(y).toBeCloseTo(0.); + expect.float(z).toBeCloseTo(0.); + expect.float(w).toBeCloseTo(0.); }); - test("create()", () => { + test("create()", ({expect, _}) => { let v = Vec4.create(1., 2., 3., 4.); + let x = Vec4.get_x(v); let y = Vec4.get_y(v); let z = Vec4.get_z(v); let w = Vec4.get_w(v); - assertFloatsEqual(x, 1.); - assertFloatsEqual(y, 2.); - assertFloatsEqual(z, 3.); - assertFloatsEqual(w, 4.); + expect.float(x).toBeCloseTo(1.); + expect.float(y).toBeCloseTo(2.); + expect.float(z).toBeCloseTo(3.); + expect.float(w).toBeCloseTo(4.); }); });