├── bitty.opam ├── dune ├── executable ├── BittyApp.re └── dune ├── dune-project ├── testExe ├── RunBittyTests.re └── dune ├── library ├── Util.re └── dune ├── esy.lock ├── opam │ ├── seq.base │ │ ├── files │ │ │ ├── seq.install │ │ │ └── META.seq │ │ └── opam │ ├── ocamlfind.1.8.1 │ │ ├── files │ │ │ ├── ocaml-stub │ │ │ └── ocamlfind.install │ │ └── opam │ ├── base-unix.base │ │ └── opam │ ├── base-threads.base │ │ └── opam │ ├── base-bytes.base │ │ └── opam │ ├── jbuilder.transition │ │ └── opam │ ├── conf-which.1 │ │ └── opam │ ├── easy-format.1.3.1 │ │ └── opam │ ├── conf-m4.1 │ │ └── opam │ ├── biniou.1.2.0 │ │ └── opam │ ├── ppx_derivers.1.2.1 │ │ └── opam │ ├── result.1.4 │ │ └── opam │ ├── atdgen-runtime.2.0.0 │ │ └── opam │ ├── ocaml-compiler-libs.v0.12.0 │ │ └── opam │ ├── stdio.v0.11.0 │ │ └── opam │ ├── ppx_here.v0.11.0 │ │ └── opam │ ├── ppx_compare.v0.11.1 │ │ └── opam │ ├── ppx_inline_test.v0.11.0 │ │ └── opam │ ├── ppx_sexp_conv.v0.11.2 │ │ └── opam │ ├── ppx_fields_conv.v0.11.0 │ │ └── opam │ ├── ppx_custom_printf.v0.11.0 │ │ └── opam │ ├── ppx_variants_conv.v0.11.1 │ │ └── opam │ ├── stdlib-shims.0.1.0 │ │ └── opam │ ├── junit.2.0.1 │ │ └── opam │ ├── num.1.2 │ │ ├── opam │ │ └── files │ │ │ └── installation-warning.patch │ ├── sexplib0.v0.11.0 │ │ └── opam │ ├── sexplib.v0.11.0 │ │ └── opam │ ├── variantslib.v0.11.0 │ │ └── opam │ ├── merlin-extend.0.4 │ │ └── opam │ ├── menhir.20190626 │ │ └── opam │ ├── ppx_assert.v0.11.0 │ │ └── opam │ ├── atd.2.0.0 │ │ └── opam │ ├── ocamlbuild.0.14.0 │ │ └── opam │ ├── fpath.0.7.2 │ │ └── opam │ ├── uchar.0.0.2 │ │ └── opam │ ├── fieldslib.v0.11.0 │ │ └── opam │ ├── re.1.9.0 │ │ └── opam │ ├── rresult.0.6.0 │ │ └── opam │ ├── cppo.1.6.6 │ │ └── opam │ ├── base.v0.11.1 │ │ └── opam │ ├── yojson.1.7.0 │ │ └── opam │ ├── ocaml-migrate-parsetree.1.4.0 │ │ └── opam │ ├── atdgen.2.0.0 │ │ └── opam │ ├── astring.0.8.3 │ │ └── opam │ ├── ppx_expect.v0.11.1 │ │ └── opam │ ├── tyxml.4.3.0 │ │ └── opam │ ├── uutf.1.0.2 │ │ └── opam │ ├── fmt.0.8.7 │ │ └── opam │ ├── cmdliner.1.0.3 │ │ └── opam │ ├── parsexp.v0.11.0 │ │ └── opam │ ├── bos.0.2.0 │ │ └── opam │ ├── ptime.0.8.5 │ │ └── opam │ ├── ppxlib.0.8.1 │ │ └── opam │ ├── topkg.1.0.1 │ │ └── opam │ ├── dune.1.11.0 │ │ └── opam │ ├── logs.0.6.3 │ │ └── opam │ └── merlin.3.3.2 │ │ └── opam ├── .gitignore ├── .gitattributes ├── overrides │ ├── opam__s__dune_opam__c__1.11.0_opam_override │ │ └── package.json │ ├── opam__s__base_opam__c__v0.11.1_opam_override │ │ ├── package.json │ │ └── files │ │ │ └── base-v0.11.1.patch │ ├── opam__s__num_opam__c__1.2_opam_override │ │ └── package.json │ ├── opam__s__ocamlbuild_opam__c__0.14.0_opam_override │ │ ├── package.json │ │ └── files │ │ │ └── ocamlbuild-0.14.0.patch │ └── opam__s__ocamlfind_opam__c__1.8.1_opam_override │ │ ├── package.json │ │ └── files │ │ └── findlib-1.8.1.patch └── index.json ├── test ├── dune ├── TestBitty.re └── TestFramework.re ├── .gitignore ├── .ci ├── publish-build-cache.yml ├── esy-build-steps.yml └── restore-build-cache.yml ├── README.md ├── package.json └── azure-pipelines.yml /bitty.opam: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dune: -------------------------------------------------------------------------------- 1 | (ignored_subdirs (node_modules)) -------------------------------------------------------------------------------- /executable/BittyApp.re: -------------------------------------------------------------------------------- 1 | Library.Util.foo(); 2 | -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- 1 | (lang dune 1.2) 2 | (name bitty) 3 | -------------------------------------------------------------------------------- /testExe/RunBittyTests.re: -------------------------------------------------------------------------------- 1 | Test.TestFramework.cli(); 2 | -------------------------------------------------------------------------------- /library/Util.re: -------------------------------------------------------------------------------- 1 | let foo = () => print_endline("Hello"); 2 | -------------------------------------------------------------------------------- /library/dune: -------------------------------------------------------------------------------- 1 | (library (name Library) (public_name bitty.library)) -------------------------------------------------------------------------------- /esy.lock/opam/seq.base/files/seq.install: -------------------------------------------------------------------------------- 1 | lib:[ 2 | "META.seq" {"META"} 3 | ] 4 | -------------------------------------------------------------------------------- /esy.lock/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Reset any possible .gitignore, we want all esy.lock to be un-ignored. 3 | !* 4 | -------------------------------------------------------------------------------- /executable/dune: -------------------------------------------------------------------------------- 1 | (executable (name BittyApp) (public_name BittyApp.exe) 2 | (libraries bitty.library)) -------------------------------------------------------------------------------- /testExe/dune: -------------------------------------------------------------------------------- 1 | (executable (name RunBittyTests) (public_name RunBittyTests.exe) 2 | (libraries bitty.test)) -------------------------------------------------------------------------------- /esy.lock/.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows. 3 | * text eol=lf 4 | -------------------------------------------------------------------------------- /test/dune: -------------------------------------------------------------------------------- 1 | (library (name Test) (public_name bitty.test) 2 | (libraries bitty.library rely.lib) (flags -linkall -g)) -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BINDIR=$(dirname "$(command -v ocamlc)") 4 | "$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log 2 | .merlin 3 | yarn-error.log 4 | node_modules/ 5 | _build 6 | _release 7 | _esy 8 | bitty.install 9 | .DS_Store 10 | *.install 11 | -------------------------------------------------------------------------------- /esy.lock/opam/seq.base/files/META.seq: -------------------------------------------------------------------------------- 1 | name="seq" 2 | version="[distributed with OCaml 4.07 or above]" 3 | description="dummy backward-compatibility package for iterators" 4 | requires="" 5 | -------------------------------------------------------------------------------- /test/TestBitty.re: -------------------------------------------------------------------------------- 1 | open TestFramework; 2 | 3 | describe("my first test suite", ({test, _}) => 4 | test("1 + 1 should equal 2", ({expect}) => 5 | expect.int(1 + 1).toBe(2) 6 | ) 7 | ); 8 | -------------------------------------------------------------------------------- /test/TestFramework.re: -------------------------------------------------------------------------------- 1 | include Rely.Make({ 2 | let config = 3 | Rely.TestFrameworkConfig.initialize({ 4 | snapshotDir: "test/_snapshots", 5 | projectDir: "", 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /esy.lock/opam/base-unix.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "https://github.com/ocaml/opam-repository/issues" 3 | description: """ 4 | Unix library distributed with the OCaml compiler 5 | """ 6 | 7 | -------------------------------------------------------------------------------- /esy.lock/opam/base-threads.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "https://github.com/ocaml/opam-repository/issues" 3 | description: """ 4 | Threads library distributed with the OCaml compiler 5 | """ 6 | 7 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install: -------------------------------------------------------------------------------- 1 | bin: [ 2 | "src/findlib/ocamlfind" {"ocamlfind"} 3 | "?src/findlib/ocamlfind_opt" {"ocamlfind"} 4 | "?tools/safe_camlp4" 5 | ] 6 | toplevel: ["src/findlib/topfind"] 7 | -------------------------------------------------------------------------------- /esy.lock/opam/base-bytes.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: " " 3 | authors: " " 4 | homepage: " " 5 | depends: [ 6 | "ocaml" {>= "4.02.0"} 7 | "ocamlfind" {>= "1.5.3"} 8 | ] 9 | synopsis: "Bytes library distributed with the OCaml compiler" 10 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__dune_opam__c__1.11.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "ocaml", 5 | "bootstrap.ml" 6 | ], 7 | [ 8 | "./boot.exe", 9 | "--release", 10 | "-j", 11 | "4" 12 | ] 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < base-v0.11.1.patch' : 'true'}" 7 | ], 8 | [ 9 | "jbuilder", 10 | "build", 11 | "-p", 12 | "base", 13 | "-j", 14 | "4" 15 | ] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__num_opam__c__1.2_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "make" 5 | ] 6 | ], 7 | "install": [ 8 | [ 9 | "make", 10 | "findlib-install" 11 | ] 12 | ], 13 | "exportedEnv": { 14 | "CAML_LD_LIBRARY_PATH": { 15 | "val": "#{self.install / 'lib' / 'num' : $CAML_LD_LIBRARY_PATH}", 16 | "scope": "global" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.ci/publish-build-cache.yml: -------------------------------------------------------------------------------- 1 | # Steps for publishing project cache 2 | 3 | steps: 4 | - task: PublishBuildArtifacts@1 5 | displayName: "Cache: Upload install folder" 6 | condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) 7 | inputs: 8 | pathToPublish: "$(ESY__CACHE_INSTALL_PATH)" 9 | artifactName: "cache-$(Agent.OS)-install" 10 | parallel: true 11 | parallelCount: 8 12 | -------------------------------------------------------------------------------- /esy.lock/opam/seq.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: " " 3 | authors: " " 4 | homepage: " " 5 | depends: [ 6 | "ocaml" {>= "4.07.0"} 7 | ] 8 | dev-repo: "git+https://github.com/ocaml/ocaml.git" 9 | bug-reports: "https://caml.inria.fr/mantis/main_page.php" 10 | synopsis: 11 | "Compatibility package for OCaml's standard iterator type starting from 4.07." 12 | extra-files: [ 13 | ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] 14 | ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] 15 | ] 16 | -------------------------------------------------------------------------------- /esy.lock/opam/jbuilder.transition/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/ocaml/dune" 5 | bug-reports: "https://github.com/ocaml/dune/issues" 6 | dev-repo: "git+https://github.com/ocaml/dune.git" 7 | license: "MIT" 8 | depends: ["ocaml" "dune"] 9 | post-messages: [ 10 | "Jbuilder has been renamed and the jbuilder package is now a transition \ 11 | package. Use the dune package instead." 12 | ] 13 | synopsis: 14 | "This is a transition package, jbuilder is now named dune. Use the dune" 15 | description: "package instead." 16 | -------------------------------------------------------------------------------- /esy.lock/opam/conf-which.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "unixjunkie@sdf.org" 3 | homepage: "http://www.gnu.org/software/which/" 4 | authors: "Carlo Wood" 5 | bug-reports: "https://github.com/ocaml/opam-repository/issues" 6 | license: "GPL-2+" 7 | build: [["which" "which"]] 8 | depexts: [ 9 | ["which"] {os-distribution = "centos"} 10 | ["which"] {os-distribution = "fedora"} 11 | ["which"] {os-family = "suse"} 12 | ["debianutils"] {os-family = "debian"} 13 | ["which"] {os-distribution = "nixos"} 14 | ["which"] {os-distribution = "arch"} 15 | ] 16 | synopsis: "Virtual package relying on which" 17 | description: 18 | "This package can only install if the which program is installed on the system." 19 | flags: conf 20 | -------------------------------------------------------------------------------- /esy.lock/opam/easy-format.1.3.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "http://mjambon.com/easy-format.html" 5 | bug-reports: "https://github.com/mjambon/easy-format/issues" 6 | dev-repo: "git+https://github.com/mjambon/easy-format.git" 7 | build: [ 8 | ["jbuilder" "build" "-p" name "-j" jobs] 9 | ["jbuilder" "runtest" "-p" name] {with-test} 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.02.3"} 13 | "jbuilder" {build} 14 | ] 15 | synopsis: 16 | "High-level and functional interface to the Format module of the OCaml standard library" 17 | url { 18 | src: "https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz" 19 | checksum: "md5=4e163700fb88fdcd6b8976c3a216c8ea" 20 | } 21 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" 7 | ], 8 | [ 9 | "make", 10 | "-f", 11 | "configure.make", 12 | "all", 13 | "OCAMLBUILD_PREFIX=#{self.install}", 14 | "OCAMLBUILD_BINDIR=#{self.bin}", 15 | "OCAMLBUILD_LIBDIR=#{self.lib}", 16 | "OCAMLBUILD_MANDIR=#{self.man}", 17 | "OCAMLBUILD_NATIVE=true", 18 | "OCAMLBUILD_NATIVE_TOOLS=true" 19 | ], 20 | [ 21 | "make", 22 | "check-if-preinstalled", 23 | "all", 24 | "#{os == 'windows' ? 'install' : 'opam-install'}" 25 | ] 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/conf-m4.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "tim@gfxmonk.net" 3 | homepage: "http://www.gnu.org/software/m4/m4.html" 4 | bug-reports: "https://github.com/ocaml/opam-repository/issues" 5 | authors: "GNU Project" 6 | license: "GPL-3" 7 | build: [["sh" "-exc" "echo | m4"]] 8 | depexts: [ 9 | ["m4"] {os-family = "debian"} 10 | ["m4"] {os-distribution = "fedora"} 11 | ["m4"] {os-distribution = "rhel"} 12 | ["m4"] {os-distribution = "centos"} 13 | ["m4"] {os-distribution = "alpine"} 14 | ["m4"] {os-distribution = "nixos"} 15 | ["m4"] {os-family = "suse"} 16 | ["m4"] {os-distribution = "ol"} 17 | ["m4"] {os-distribution = "arch"} 18 | ] 19 | synopsis: "Virtual package relying on m4" 20 | description: 21 | "This package can only install if the m4 binary is installed on the system." 22 | flags: conf 23 | -------------------------------------------------------------------------------- /esy.lock/opam/biniou.1.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/biniou" 6 | bug-reports: "https://github.com/mjambon/biniou/issues" 7 | dev-repo: "git+https://github.com/mjambon/biniou.git" 8 | license: "BSD-3-Clause" 9 | 10 | build: [ 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ["jbuilder" "runtest" "-p" name] {with-test} 13 | ] 14 | depends: [ 15 | "ocaml" {>= "4.02.3"} 16 | "conf-which" {build} 17 | "jbuilder" {build & >= "1.0+beta7"} 18 | "easy-format" 19 | ] 20 | synopsis: 21 | "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" 22 | url { 23 | src: "https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz" 24 | checksum: "md5=f3e92358e832ed94eaf23ce622ccc2f9" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_derivers.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino"] 4 | license: "BSD3" 5 | homepage: "https://github.com/ocaml-ppx/ppx_derivers" 6 | bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" 7 | dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" 8 | build: [ 9 | ["dune" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" 13 | "dune" 14 | ] 15 | synopsis: "Shared [@@deriving] plugin registry" 16 | description: """ 17 | Ppx_derivers is a tiny package whose sole purpose is to allow 18 | ppx_deriving and ppx_type_conv to inter-operate gracefully when linked 19 | as part of the same ocaml-migrate-parsetree driver.""" 20 | url { 21 | src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz" 22 | checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" 23 | } 24 | -------------------------------------------------------------------------------- /esy.lock/opam/result.1.4/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/result" 5 | dev-repo: "git+https://github.com/janestreet/result.git" 6 | bug-reports: "https://github.com/janestreet/result/issues" 7 | license: "BSD3" 8 | build: [["dune" "build" "-p" name "-j" jobs]] 9 | depends: [ 10 | "ocaml" 11 | "dune" {>= "1.0"} 12 | ] 13 | synopsis: "Compatibility Result module" 14 | description: """ 15 | Projects that want to use the new result type defined in OCaml >= 4.03 16 | while staying compatible with older version of OCaml should use the 17 | Result module defined in this library.""" 18 | url { 19 | src: 20 | "https://github.com/janestreet/result/archive/1.4.tar.gz" 21 | checksum: "md5=d3162dbc501a2af65c8c71e0866541da" 22 | } 23 | -------------------------------------------------------------------------------- /.ci/esy-build-steps.yml: -------------------------------------------------------------------------------- 1 | # Cross-platform set of build steps for building esy projects 2 | 3 | steps: 4 | - task: NodeTool@0 5 | inputs: 6 | versionSpec: "10.15.3" 7 | - script: npm install -g esy 8 | displayName: "npm install -g esy" 9 | - script: npm install -g pesy@next 10 | displayName: "npm install -g pesy@next" 11 | - script: esy install 12 | displayName: "esy install" 13 | - script: esy pesy 14 | displayName: "esy pesy" 15 | - script: esy build 16 | displayName: "esy build" 17 | - script: esy test 18 | displayName: "esy test" 19 | - script: esy x BittyApp.exe 20 | displayName: "Run the main binary" 21 | - script: esy ls-libs 22 | continueOnError: true 23 | displayName: "Show all libraries including this package lib" 24 | - script: esy release 25 | displayName: "Test Creation of Prebuilt Binary Releases" 26 | continueOnError: true 27 | -------------------------------------------------------------------------------- /esy.lock/opam/atdgen-runtime.2.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/atd" 6 | bug-reports: "https://github.com/mjambon/atd/issues" 7 | dev-repo: "git://github.com/mjambon/atd.git" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | 14 | # Restore when https://github.com/mjambon/atd/issues/121 is resolved. 15 | # build-test: [ 16 | # ["jbuilder" "runtest" "-p" name] 17 | # ] 18 | 19 | depends: [ 20 | "ocaml" {>= "4.02.3"} 21 | "jbuilder" {build} 22 | "biniou" {>= "1.0.6"} 23 | "yojson" {>= "1.2.1"} 24 | ] 25 | synopsis: "Runtime library for code generated by atdgen." 26 | url { 27 | src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" 28 | checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" 29 | } 30 | -------------------------------------------------------------------------------- /esy.lock/opam/ocaml-compiler-libs.v0.12.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ocaml-compiler-libs" 5 | bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues" 6 | dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["dune" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "dune" {>= "1.0"} 14 | ] 15 | synopsis: "OCaml compiler libraries repackaged" 16 | description: """ 17 | This packages exposes the OCaml compiler libraries repackages under 18 | the toplevel names Ocaml_common, Ocaml_bytecomp, ...""" 19 | url { 20 | src: 21 | "https://github.com/janestreet/ocaml-compiler-libs/archive/v0.12.0.tar.gz" 22 | checksum: "md5=3351925ed99be59829641d2044fc80c0" 23 | } 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # bitty 2 | 3 | [![CircleCI](https://circleci.com/gh/yourgithubhandle/bitty/tree/master.svg?style=svg)](https://circleci.com/gh/yourgithubhandle/bitty/tree/master) 4 | 5 | **Contains the following libraries and executables:** 6 | 7 | ``` 8 | bitty@0.0.0 9 | │ 10 | ├─test/ 11 | │ name: TestBitty.exe 12 | │ require: bitty/library 13 | │ 14 | ├─library/ 15 | │ library name: bitty/library 16 | │ require: 17 | │ 18 | └─executable/ 19 | name: BittyApp.exe 20 | require: bitty/library 21 | ``` 22 | 23 | ## Developing: 24 | 25 | ``` 26 | npm install -g esy 27 | npm install -g pesy@next 28 | git clone 29 | esy install 30 | esy build 31 | ``` 32 | 33 | ## Running Binary: 34 | 35 | After building the project, you can run the main binary that is produced. 36 | 37 | ``` 38 | esy x BittyApp.exe 39 | ``` 40 | 41 | ## Running Tests: 42 | 43 | ``` 44 | # Runs the "test" command in `package.json`. 45 | esy test 46 | ``` 47 | -------------------------------------------------------------------------------- /.ci/restore-build-cache.yml: -------------------------------------------------------------------------------- 1 | # Steps for restoring project cache 2 | 3 | steps: 4 | - task: DownloadBuildArtifacts@0 5 | condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) 6 | displayName: "Cache: Restore install" 7 | inputs: 8 | buildType: "specific" 9 | project: "$(System.TeamProject)" 10 | pipeline: "$(Build.DefinitionName)" 11 | branchName: "refs/heads/master" 12 | buildVersionToDownload: "latestFromBranch" 13 | downloadType: "single" 14 | artifactName: "cache-$(Agent.OS)-install" 15 | downloadPath: "$(System.ArtifactsDirectory)" 16 | continueOnError: true 17 | 18 | - task: CopyFiles@2 19 | condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) 20 | inputs: 21 | sourceFolder: '$(System.ArtifactsDirectory)\cache-$(Agent.OS)-install' 22 | targetFolder: "$(ESY__CACHE_INSTALL_PATH)" 23 | continueOnError: true 24 | -------------------------------------------------------------------------------- /esy.lock/opam/stdio.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/stdio" 5 | bug-reports: "https://github.com/janestreet/stdio/issues" 6 | dev-repo: "git+https://github.com/janestreet/stdio.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "base" {>= "v0.11" & < "v0.12"} 14 | "jbuilder" {build & >= "1.0+beta18.1"} 15 | ] 16 | synopsis: "Standard IO library for OCaml" 17 | description: """ 18 | Stdio implements simple input/output functionalities for OCaml. 19 | 20 | It re-exports the input/output functions of the OCaml standard 21 | libraries using a more consistent API.""" 22 | url { 23 | src: 24 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/stdio-v0.11.0.tar.gz" 25 | checksum: "md5=2db42ee38c91b3ff7126c2634c407b99" 26 | } 27 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_here.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_here" 5 | bug-reports: "https://github.com/janestreet/ppx_here/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_here.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ] 12 | depends: [ 13 | "ocaml" {>= "4.04.1"} 14 | "base" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 18 | ] 19 | synopsis: "Expands [%here] into its location" 20 | description: "Part of the Jane Street's PPX rewriters collection." 21 | url { 22 | src: 23 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_here-v0.11.0.tar.gz" 24 | checksum: "md5=479c9cd5f6ef90c2df9f01eab9d6c91d" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_compare.v0.11.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_compare" 5 | bug-reports: "https://github.com/janestreet/ppx_compare/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_compare.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ] 12 | depends: [ 13 | "ocaml" {>= "4.04.1"} 14 | "base" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.3.0" & < "0.9.0"} 18 | ] 19 | synopsis: "Generation of comparison functions from types" 20 | description: "Part of the Jane Street's PPX rewriters collection." 21 | url { 22 | src: "https://github.com/janestreet/ppx_compare/archive/v0.11.1.tar.gz" 23 | checksum: "md5=3df1a90fc90d180b1f96cdd30e64145d" 24 | } 25 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_inline_test.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_inline_test" 5 | bug-reports: "https://github.com/janestreet/ppx_inline_test/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_inline_test.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "base" {>= "v0.11" & < "v0.12"} 14 | "jbuilder" {build & >= "1.0+beta18.1"} 15 | "ocaml-migrate-parsetree" {>= "1.0"} 16 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 17 | ] 18 | synopsis: "Syntax extension for writing in-line tests in ocaml code" 19 | description: "Part of the Jane Street's PPX rewriters collection." 20 | url { 21 | src: 22 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_inline_test-v0.11.0.tar.gz" 23 | checksum: "md5=1f2e014332373638696d8893d87f4682" 24 | } 25 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_sexp_conv.v0.11.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_sexp_conv" 5 | bug-reports: "https://github.com/janestreet/ppx_sexp_conv/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_sexp_conv.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ] 12 | depends: [ 13 | "ocaml" {>= "4.04.1"} 14 | "base" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.3.0" & < "0.9.0"} 18 | ] 19 | synopsis: 20 | "Generation of S-expression conversion functions from type definitions" 21 | description: "Part of the Jane Street's PPX rewriters collection." 22 | url { 23 | src: "https://github.com/janestreet/ppx_sexp_conv/archive/v0.11.2.tar.gz" 24 | checksum: "md5=77d3b30b3d9c5810552bde2027656b8d" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_fields_conv.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_fields_conv" 5 | bug-reports: "https://github.com/janestreet/ppx_fields_conv/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_fields_conv.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "base" {>= "v0.11" & < "v0.12"} 14 | "fieldslib" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 18 | ] 19 | synopsis: "Generation of accessor and iteration functions for ocaml records" 20 | description: "Part of the Jane Street's PPX rewriters collection." 21 | url { 22 | src: 23 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_fields_conv-v0.11.0.tar.gz" 24 | checksum: "md5=72f207c23d65f7f3eaabcc92e33ccdab" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_custom_printf.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_custom_printf" 5 | bug-reports: "https://github.com/janestreet/ppx_custom_printf/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_custom_printf.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "base" {>= "v0.11" & < "v0.12"} 14 | "ppx_sexp_conv" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 18 | ] 19 | synopsis: "Printf-style format-strings for user-defined string conversion" 20 | description: "Part of the Jane Street's PPX rewriters collection." 21 | url { 22 | src: 23 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_custom_printf-v0.11.0.tar.gz" 24 | checksum: "md5=b7cf49585319576dd77f6ddd6db95b21" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_variants_conv.v0.11.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_variants_conv" 5 | bug-reports: "https://github.com/janestreet/ppx_variants_conv/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_variants_conv.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "base" {>= "v0.11" & < "v0.12"} 14 | "variantslib" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.3.0" & < "0.9.0"} 18 | ] 19 | synopsis: 20 | "Generation of accessor and iteration functions for ocaml variant types" 21 | description: "Part of the Jane Street's PPX rewriters collection." 22 | url { 23 | src: 24 | "https://github.com/janestreet/ppx_variants_conv/archive/v0.11.1.tar.gz" 25 | checksum: "md5=146b49b84315b7d67c1ca758fcbf2fb2" 26 | } 27 | -------------------------------------------------------------------------------- /esy.lock/opam/stdlib-shims.0.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "The stdlib-shims programmers" 3 | authors: "The stdlib-shims programmers" 4 | homepage: "https://github.com/ocaml/stdlib-shims" 5 | doc: "https://ocaml.github.io/stdlib-shims/" 6 | dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" 7 | bug-reports: "https://github.com/ocaml/stdlib-shims/issues" 8 | tags: ["stdlib" "compatibility" "org:ocaml"] 9 | license: ["typeof OCaml system"] 10 | depends: [ 11 | "dune" 12 | "ocaml" {>= "4.02.3"} 13 | ] 14 | build: [ "dune" "build" "-p" name "-j" jobs ] 15 | synopsis: "Backport some of the new stdlib features to older compiler" 16 | description: """ 17 | Backport some of the new stdlib features to older compiler, 18 | such as the Stdlib module. 19 | 20 | This allows projects that require compatibility with older compiler to 21 | use these new features in their code. 22 | """ 23 | url { 24 | src: 25 | "https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz" 26 | checksum: "md5=12b5704eed70c6bff5ac39a16db1425d" 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/junit.2.0.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Louis Roché " 3 | authors: "Louis Roché " 4 | homepage: "https://github.com/Khady/ocaml-junit" 5 | bug-reports: "https://github.com/Khady/ocaml-junit/issues" 6 | license: "LGPLv3+ with OCaml linking exception" 7 | dev-repo: "git+https://github.com/Khady/ocaml-junit.git" 8 | doc: "https://khady.github.io/ocaml-junit/" 9 | tags: ["junit" "jenkins"] 10 | depends: [ 11 | "dune" {>= "1.0"} 12 | "ptime" 13 | "tyxml" {>= "4.0.0"} 14 | "odoc" {with-doc & >= "1.1.1"} 15 | ] 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ["dune" "build" "-p" name "-j" jobs] {with-doc} 21 | ] 22 | name: "junit" 23 | synopsis: "JUnit XML reports generation library" 24 | description: "JUnit XML reports generation library" 25 | url { 26 | src: 27 | "https://github.com/Khady/ocaml-junit/releases/download/2.0.1/junit-2.0.1.tbz" 28 | checksum: "md5=40224fb3d4f5e47dc5ff4605587d383b" 29 | } 30 | -------------------------------------------------------------------------------- /esy.lock/opam/num.1.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "1.2" 3 | maintainer: "Xavier Leroy " 4 | authors: [ 5 | "Valérie Ménissier-Morain" 6 | "Pierre Weis" 7 | "Xavier Leroy" 8 | ] 9 | license: "LGPL 2.1 with OCaml linking exception" 10 | 11 | homepage: "https://github.com/ocaml/num/" 12 | bug-reports: "https://github.com/ocaml/num/issues" 13 | dev-repo: "git+https://github.com/ocaml/num.git" 14 | build: [ 15 | [make] 16 | ] 17 | install: [ 18 | make 19 | "install" {!ocaml:preinstalled} 20 | "findlib-install" {ocaml:preinstalled} 21 | ] 22 | depends: [ 23 | "ocaml" {>= "4.06.0"} 24 | "ocamlfind" {build & >= "1.7.3"} 25 | ] 26 | conflicts: [ "base-num" ] 27 | patches: [ "installation-warning.patch" ] 28 | synopsis: 29 | "The legacy Num library for arbitrary-precision integer and rational arithmetic" 30 | extra-files: [ 31 | ["installation-warning.patch" "md5=93c92bf6da6bae09d068da42b1bbaaac"] 32 | ] 33 | url { 34 | src: "https://github.com/ocaml/num/archive/v1.2.tar.gz" 35 | checksum: "md5=4f43ce8e44db68692bee50f2f8ef911c" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/sexplib0.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/sexplib0" 5 | bug-reports: "https://github.com/janestreet/sexplib0/issues" 6 | dev-repo: "git+https://github.com/janestreet/sexplib0.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "jbuilder" {build & >= "1.0+beta18.1"} 14 | ] 15 | conflicts: [ 16 | "sexplib" { < "v0.11"} 17 | ] 18 | synopsis: 19 | "Library containing the definition of S-expressions and some base converters" 20 | description: """ 21 | Part of Jane Street's Core library 22 | The Core suite of libraries is an industrial strength alternative to 23 | OCaml's standard library that was developed by Jane Street, the 24 | largest industrial user of OCaml.""" 25 | url { 26 | src: 27 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib0-v0.11.0.tar.gz" 28 | checksum: "md5=1c14ba30b471e49f1b23fea5ff99ea6b" 29 | } 30 | -------------------------------------------------------------------------------- /esy.lock/opam/sexplib.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/sexplib" 5 | bug-reports: "https://github.com/janestreet/sexplib/issues" 6 | dev-repo: "git+https://github.com/janestreet/sexplib.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "parsexp" {>= "v0.11" & < "v0.12"} 14 | "sexplib0" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "num" 17 | ] 18 | synopsis: "Library for serializing OCaml values to and from S-expressions" 19 | description: """ 20 | Part of Jane Street's Core library 21 | The Core suite of libraries is an industrial strength alternative to 22 | OCaml's standard library that was developed by Jane Street, the 23 | largest industrial user of OCaml.""" 24 | url { 25 | src: 26 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib-v0.11.0.tar.gz" 27 | checksum: "md5=1d53d945914b6b9a380dc8923f19e9ae" 28 | } 29 | -------------------------------------------------------------------------------- /esy.lock/opam/variantslib.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/variantslib" 5 | bug-reports: "https://github.com/janestreet/variantslib/issues" 6 | dev-repo: "git+https://github.com/janestreet/variantslib.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ] 12 | depends: [ 13 | "ocaml" {>= "4.04.1"} 14 | "base" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 18 | ] 19 | synopsis: "Part of Jane Street's Core library" 20 | description: """ 21 | The Core suite of libraries is an industrial strength alternative to 22 | OCaml's standard library that was developed by Jane Street, the 23 | largest industrial user of OCaml.""" 24 | url { 25 | src: 26 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/variantslib-v0.11.0.tar.gz" 27 | checksum: "md5=3031317975df165cc3154578680eddfb" 28 | } 29 | -------------------------------------------------------------------------------- /esy.lock/opam/merlin-extend.0.4/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Frederic Bour " 3 | authors: "Frederic Bour " 4 | homepage: "https://github.com/let-def/merlin-extend" 5 | bug-reports: "https://github.com/let-def/merlin-extend" 6 | license: "MIT" 7 | dev-repo: "git+https://github.com/let-def/merlin-extend.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "dune" 14 | "cppo" {build} 15 | "ocaml" {>= "4.02.3"} 16 | ] 17 | synopsis: "A protocol to provide custom frontend to Merlin" 18 | description: """ 19 | This protocol allows to replace the OCaml frontend of Merlin. 20 | It extends what used to be done with the `-pp' flag to handle a few more cases.""" 21 | doc: "https://let-def.github.io/merlin-extend" 22 | url { 23 | src: "https://github.com/let-def/merlin-extend/archive/v0.4.tar.gz" 24 | checksum: [ 25 | "md5=0663a58f2c45fad71615fbf0f6dd2e51" 26 | "sha512=9c0f966f57756c06622fdb8ae1e0721bc098b8a9102fb87c22ad62cb52ece77e7447da2f200993f313273ea0b7c40cd889244407813167bd0d572293f02e0968" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /esy.lock/opam/menhir.20190626/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "francois.pottier@inria.fr" 3 | authors: [ 4 | "François Pottier " 5 | "Yann Régis-Gianas " 6 | ] 7 | homepage: "http://gitlab.inria.fr/fpottier/menhir" 8 | dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" 9 | bug-reports: "menhir@inria.fr" 10 | build: [ 11 | [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] 12 | ] 13 | install: [ 14 | [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] 15 | ] 16 | depends: [ 17 | "ocaml" {>= "4.02"} 18 | "ocamlfind" {build} 19 | "ocamlbuild" {build} 20 | ] 21 | synopsis: "An LR(1) parser generator" 22 | url { 23 | src: 24 | "https://gitlab.inria.fr/fpottier/menhir/repository/20190626/archive.tar.gz" 25 | checksum: [ 26 | "md5=783961f8d124449a1a335cc8e50f013f" 27 | "sha512=bacc5161682130d894a6476fb79363aa73e5582543265a0c23c9a1f9d974007c04853dc8f6faa2b8bd2e82b2323b8604dcc4cb74308af667698079b394dfd492" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_assert.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/ppx_assert" 5 | bug-reports: "https://github.com/janestreet/ppx_assert/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_assert.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ] 12 | depends: [ 13 | "ocaml" {>= "4.04.1"} 14 | "base" {>= "v0.11" & < "v0.12"} 15 | "ppx_compare" {>= "v0.11" & < "v0.12"} 16 | "ppx_here" {>= "v0.11" & < "v0.12"} 17 | "ppx_sexp_conv" {>= "v0.11" & < "v0.12"} 18 | "jbuilder" {build & >= "1.0+beta18.1"} 19 | "ocaml-migrate-parsetree" {>= "1.0"} 20 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 21 | ] 22 | synopsis: "Assert-like extension nodes that raise useful errors on failure" 23 | description: "Part of the Jane Street's PPX rewriters collection." 24 | url { 25 | src: 26 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_assert-v0.11.0.tar.gz" 27 | checksum: "md5=0b3aed19391e9a23217a5abf022dfe10" 28 | } 29 | -------------------------------------------------------------------------------- /esy.lock/opam/atd.2.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/atd" 6 | bug-reports: "https://github.com/mjambon/atd/issues" 7 | dev-repo: "git://github.com/mjambon/atd.git" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | 14 | # Restore when https://github.com/mjambon/atd/issues/121 is resolved. 15 | # build-test: [ 16 | # ["jbuilder" "runtest" "-p" name] 17 | # ] 18 | 19 | depends: [ 20 | "ocaml" {>= "4.03.0"} 21 | "jbuilder" {build} 22 | "menhir" {build} 23 | "easy-format" 24 | ] 25 | synopsis: "Parser for the ATD data format description language" 26 | description: """ 27 | ATD is the OCaml library providing a parser for the ATD language and 28 | various utilities. ATD stands for Adjustable Type Definitions in 29 | reference to its main property of supporting annotations that allow a 30 | good fit with a variety of data formats.""" 31 | url { 32 | src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" 33 | checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" 34 | } 35 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < findlib-1.8.1.patch' : 'true'}" 7 | ], 8 | [ 9 | "./configure", 10 | "-bindir", 11 | "#{self.bin}", 12 | "-sitelib", 13 | "#{self.lib}", 14 | "-mandir", 15 | "#{self.man}", 16 | "-config", 17 | "#{self.lib}/findlib.conf", 18 | "-no-custom", 19 | "-no-topfind" 20 | ], 21 | [ 22 | "make", 23 | "all" 24 | ], 25 | [ 26 | "make", 27 | "opt" 28 | ] 29 | ], 30 | "install": [ 31 | [ 32 | "make", 33 | "install" 34 | ], 35 | [ 36 | "install", 37 | "-m", 38 | "0755", 39 | "ocaml-stub", 40 | "#{self.bin}/ocaml" 41 | ], 42 | [ 43 | "mkdir", 44 | "-p", 45 | "#{self.toplevel}" 46 | ], 47 | [ 48 | "install", 49 | "-m", 50 | "0644", 51 | "src/findlib/topfind", 52 | "#{self.toplevel}/topfind" 53 | ] 54 | ], 55 | "exportedEnv": { 56 | "OCAML_TOPLEVEL_PATH": { 57 | "val": "#{self.toplevel}", 58 | "scope": "global" 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlbuild.0.14.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Gabriel Scherer " 3 | authors: ["Nicolas Pouillard" "Berke Durak"] 4 | homepage: "https://github.com/ocaml/ocamlbuild/" 5 | bug-reports: "https://github.com/ocaml/ocamlbuild/issues" 6 | license: "LGPL-2 with OCaml linking exception" 7 | doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" 8 | dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" 9 | build: [ 10 | [ 11 | make 12 | "-f" 13 | "configure.make" 14 | "all" 15 | "OCAMLBUILD_PREFIX=%{prefix}%" 16 | "OCAMLBUILD_BINDIR=%{bin}%" 17 | "OCAMLBUILD_LIBDIR=%{lib}%" 18 | "OCAMLBUILD_MANDIR=%{man}%" 19 | "OCAML_NATIVE=%{ocaml:native}%" 20 | "OCAML_NATIVE_TOOLS=%{ocaml:native}%" 21 | ] 22 | [make "check-if-preinstalled" "all" "opam-install"] 23 | ] 24 | conflicts: [ 25 | "base-ocamlbuild" 26 | "ocamlfind" {< "1.6.2"} 27 | ] 28 | synopsis: 29 | "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." 30 | depends: [ 31 | "ocaml" {>= "4.03"} 32 | ] 33 | url { 34 | src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" 35 | checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/fpath.0.7.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/fpath" 5 | doc: "http://erratique.ch/software/fpath/doc" 6 | dev-repo: "git+http://erratique.ch/repos/fpath.git" 7 | bug-reports: "https://github.com/dbuenzli/fpath/issues" 8 | tags: [ "file" "system" "path" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | "result" 16 | "astring" 17 | ] 18 | build: [[ 19 | "ocaml" "pkg/pkg.ml" "build" 20 | "--dev-pkg" "%{pinned}%" ]] 21 | synopsis: "File system paths for OCaml" 22 | description: """ 23 | Fpath is an OCaml module for handling file system paths with POSIX or 24 | Windows conventions. Fpath processes paths without accessing the file 25 | system and is independent from any system library. 26 | 27 | Fpath depends on [Astring][astring] and is distributed under the ISC 28 | license. 29 | 30 | [astring]: http://erratique.ch/software/astring""" 31 | url { 32 | src: "http://erratique.ch/software/fpath/releases/fpath-0.7.2.tbz" 33 | checksum: "md5=52c7ecb0bf180088336f3c645875fa41" 34 | } 35 | -------------------------------------------------------------------------------- /esy.lock/opam/uchar.0.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://ocaml.org" 5 | doc: "https://ocaml.github.io/uchar/" 6 | dev-repo: "git+https://github.com/ocaml/uchar.git" 7 | bug-reports: "https://github.com/ocaml/uchar/issues" 8 | tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] 9 | license: "typeof OCaml system" 10 | depends: [ 11 | "ocaml" {>= "3.12.0"} 12 | "ocamlbuild" {build} 13 | ] 14 | build: [ 15 | ["ocaml" "pkg/git.ml"] 16 | [ 17 | "ocaml" 18 | "pkg/build.ml" 19 | "native=%{ocaml:native}%" 20 | "native-dynlink=%{ocaml:native-dynlink}%" 21 | ] 22 | ] 23 | synopsis: "Compatibility library for OCaml's Uchar module" 24 | description: """ 25 | The `uchar` package provides a compatibility library for the 26 | [`Uchar`][1] module introduced in OCaml 4.03. 27 | 28 | The `uchar` package is distributed under the license of the OCaml 29 | compiler. See [LICENSE](LICENSE) for details. 30 | 31 | [1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" 32 | url { 33 | src: 34 | "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" 35 | checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/fieldslib.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/fieldslib" 5 | bug-reports: "https://github.com/janestreet/fieldslib/issues" 6 | dev-repo: "git+https://github.com/janestreet/fieldslib.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ] 12 | depends: [ 13 | "ocaml" {>= "4.04.1"} 14 | "base" {>= "v0.11" & < "v0.12"} 15 | "jbuilder" {build & >= "1.0+beta18.1"} 16 | "ocaml-migrate-parsetree" {>= "1.0"} 17 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 18 | ] 19 | synopsis: 20 | "Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values" 21 | description: """ 22 | Part of Jane Street's Core library 23 | The Core suite of libraries is an industrial strength alternative to 24 | OCaml's standard library that was developed by Jane Street, the 25 | largest industrial user of OCaml.""" 26 | url { 27 | src: 28 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/fieldslib-v0.11.0.tar.gz" 29 | checksum: "md5=a42506b460a1dc47fb65a37d875211ae" 30 | } 31 | -------------------------------------------------------------------------------- /esy.lock/opam/re.1.9.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | maintainer: "rudi.grinberg@gmail.com" 4 | authors: [ 5 | "Jerome Vouillon" 6 | "Thomas Gazagnaire" 7 | "Anil Madhavapeddy" 8 | "Rudi Grinberg" 9 | "Gabriel Radanne" 10 | ] 11 | license: "LGPL-2.0 with OCaml linking exception" 12 | homepage: "https://github.com/ocaml/ocaml-re" 13 | bug-reports: "https://github.com/ocaml/ocaml-re/issues" 14 | dev-repo: "git+https://github.com/ocaml/ocaml-re.git" 15 | 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ] 21 | 22 | depends: [ 23 | "ocaml" {>= "4.02"} 24 | "dune" 25 | "ounit" {with-test} 26 | "seq" 27 | ] 28 | 29 | synopsis: "RE is a regular expression library for OCaml" 30 | description: """ 31 | Pure OCaml regular expressions with: 32 | * Perl-style regular expressions (module Re.Perl) 33 | * Posix extended regular expressions (module Re.Posix) 34 | * Emacs-style regular expressions (module Re.Emacs) 35 | * Shell-style file globbing (module Re.Glob) 36 | * Compatibility layer for OCaml's built-in Str module (module Re.Str) 37 | """ 38 | url { 39 | src: 40 | "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" 41 | checksum: "md5=bddaed4f386a22cace7850c9c7dac296" 42 | } 43 | -------------------------------------------------------------------------------- /esy.lock/opam/rresult.0.6.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/rresult" 5 | doc: "http://erratique.ch/software/rresult" 6 | dev-repo: "git+http://erratique.ch/repos/rresult.git" 7 | bug-reports: "https://github.com/dbuenzli/rresult/issues" 8 | tags: [ "result" "error" "declarative" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "result" 16 | ] 17 | build:[[ 18 | "ocaml" "pkg/pkg.ml" "build" 19 | "--pinned" "%{pinned}%" ]] 20 | 21 | synopsis: """Result value combinators for OCaml""" 22 | description: """\ 23 | 24 | Rresult is an OCaml module for handling computation results and errors 25 | in an explicit and declarative manner, without resorting to 26 | exceptions. It defines combinators to operate on the `result` type 27 | available from OCaml 4.03 in the standard library. 28 | 29 | Rresult depends on the compatibility `result` package and is 30 | distributed under the ISC license. 31 | """ 32 | url { 33 | archive: "http://erratique.ch/software/rresult/releases/rresult-0.6.0.tbz" 34 | checksum: "aba88cffa29081714468c2c7bcdf7fb1" 35 | } 36 | -------------------------------------------------------------------------------- /esy.lock/opam/cppo.1.6.6/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: "Martin Jambon" 4 | license: "BSD-3-Clause" 5 | homepage: "http://mjambon.com/cppo.html" 6 | doc: "https://ocaml-community.github.io/cppo/" 7 | bug-reports: "https://github.com/ocaml-community/cppo/issues" 8 | depends: [ 9 | "ocaml" {>= "4.03"} 10 | "dune" {>= "1.0"} 11 | "base-unix" 12 | ] 13 | build: [ 14 | ["dune" "subst"] {pinned} 15 | ["dune" "build" "-p" name "-j" jobs] 16 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 17 | ] 18 | dev-repo: "git+https://github.com/ocaml-community/cppo.git" 19 | synopsis: "Code preprocessor like cpp for OCaml" 20 | description: """ 21 | Cppo is an equivalent of the C preprocessor for OCaml programs. 22 | It allows the definition of simple macros and file inclusion. 23 | 24 | Cppo is: 25 | 26 | * more OCaml-friendly than cpp 27 | * easy to learn without consulting a manual 28 | * reasonably fast 29 | * simple to install and to maintain 30 | """ 31 | url { 32 | src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" 33 | checksum: [ 34 | "sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" 35 | "sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bitty", 3 | "version": "0.0.1", 4 | "description": "My Project", 5 | "esy": { 6 | "build": "dune build -p #{self.name}", 7 | "release": { 8 | "releasedBinaries": [ 9 | "BittyApp.exe" 10 | ] 11 | } 12 | }, 13 | "buildDirs": { 14 | "test": { 15 | "require": [ 16 | "bitty/library", 17 | "rely.lib" 18 | ], 19 | "flags": [ 20 | "-linkall", 21 | "-g" 22 | ] 23 | }, 24 | "testExe": { 25 | "require": [ 26 | "bitty/test" 27 | ], 28 | "bin": { 29 | "RunBittyTests.exe": "RunBittyTests.re" 30 | } 31 | }, 32 | "library": {}, 33 | "executable": { 34 | "require": [ 35 | "bitty/library" 36 | ], 37 | "bin": { 38 | "BittyApp.exe": "BittyApp.re" 39 | } 40 | } 41 | }, 42 | "scripts": { 43 | "test": "esy x RunBittyTests.exe", 44 | "format": "bash -c 'refmt --in-place {library,executable,test}/*.re'" 45 | }, 46 | "dependencies": { 47 | "@opam/dune": "*", 48 | "@esy-ocaml/reason": "*", 49 | "refmterr": "*", 50 | "ocaml": "4.7.x", 51 | "pesy": "*", 52 | "@reason-native/rely": "*" 53 | }, 54 | "devDependencies": { 55 | "@opam/merlin": "*" 56 | }, 57 | "resolutions": { 58 | "pesy": "esy/pesy#3d8a18385e07fa11daabe811814fae3f869ad355" 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /esy.lock/opam/base.v0.11.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/base" 5 | bug-reports: "https://github.com/janestreet/base/issues" 6 | dev-repo: "git+https://github.com/janestreet/base.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1" & < "4.08.0"} 13 | "sexplib0" {>= "v0.11" & < "v0.12"} 14 | "jbuilder" {build & >= "1.0+beta18.1"} 15 | ] 16 | depopts: [ 17 | "base-native-int63" 18 | ] 19 | synopsis: "Full standard library replacement for OCaml" 20 | description: """ 21 | Full standard library replacement for OCaml 22 | 23 | Base is a complete and portable alternative to the OCaml standard 24 | library. It provides all standard functionalities one would expect 25 | from a language standard library. It uses consistent conventions 26 | across all of its module. 27 | 28 | Base aims to be usable in any context. As a result system dependent 29 | features such as I/O are not offered by Base. They are instead 30 | provided by companion libraries such as stdio: 31 | 32 | https://github.com/janestreet/stdio""" 33 | url { 34 | src: 35 | "https://github.com/janestreet/base/releases/download/v0.11.1/base-v0.11.1.tbz" 36 | checksum: "md5=e7e7dc5db3f1fea19d74a31bbd4ac621" 37 | } 38 | -------------------------------------------------------------------------------- /esy.lock/opam/yojson.1.7.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "https://github.com/ocaml-community/yojson" 5 | bug-reports: "https://github.com/ocaml-community/yojson/issues" 6 | dev-repo: "git+https://github.com/ocaml-community/yojson.git" 7 | doc: "https://ocaml-community.github.io/yojson/" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | run-test: [["dune" "runtest" "-p" name "-j" jobs]] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" 16 | "cppo" {build} 17 | "easy-format" 18 | "biniou" {>= "1.2.0"} 19 | "alcotest" {with-test & >= "0.8.5"} 20 | ] 21 | synopsis: 22 | "Yojson is an optimized parsing and printing library for the JSON format" 23 | description: """ 24 | Yojson is an optimized parsing and printing library for the JSON format. 25 | 26 | It addresses a few shortcomings of json-wheel including 2x speedup, 27 | polymorphic variants and optional syntax for tuples and variants. 28 | 29 | ydump is a pretty-printing command-line program provided with the 30 | yojson package. 31 | 32 | The program atdgen can be used to derive OCaml-JSON serializers and 33 | deserializers from type definitions.""" 34 | url { 35 | src: 36 | "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" 37 | checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" 38 | } 39 | -------------------------------------------------------------------------------- /esy.lock/opam/ocaml-migrate-parsetree.1.4.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "frederic.bour@lakaban.net" 3 | authors: [ 4 | "Frédéric Bour " 5 | "Jérémie Dimino " 6 | ] 7 | license: "LGPL-2.1 with OCaml linking exception" 8 | homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" 9 | bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" 10 | dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" 11 | doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" 12 | tags: [ "syntax" "org:ocamllabs" ] 13 | build: [ 14 | ["dune" "build" "-p" name "-j" jobs] 15 | ] 16 | depends: [ 17 | "result" 18 | "ppx_derivers" 19 | "dune" {>= "1.9.0"} 20 | "ocaml" {>= "4.02.3"} 21 | ] 22 | synopsis: "Convert OCaml parsetrees between different versions" 23 | description: """ 24 | Convert OCaml parsetrees between different versions 25 | 26 | This library converts parsetrees, outcometree and ast mappers between 27 | different OCaml versions. High-level functions help making PPX 28 | rewriters independent of a compiler version. 29 | """ 30 | url { 31 | src: 32 | "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.4.0/ocaml-migrate-parsetree-v1.4.0.tbz" 33 | checksum: [ 34 | "sha256=231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8" 35 | "sha512=61ee91d2d146cc2d2ff2d5dc4ef5dea4dc4d3c8dbd8b4c9586d64b6ad7302327ab35547aa0a5b0103c3f07b66b13d416a1bee6d4d117293cd3cabe44113ec6d4" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /esy.lock/opam/atdgen.2.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/atd" 6 | bug-reports: "https://github.com/mjambon/atd/issues" 7 | dev-repo: "git://github.com/mjambon/atd.git" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | 14 | # Restore when https://github.com/mjambon/atd/issues/121 is resolved. 15 | # build-test: [ 16 | # ["jbuilder" "runtest" "-p" name] 17 | # ] 18 | 19 | depends: [ 20 | "ocaml" {>= "4.03.0"} 21 | "jbuilder" {build} 22 | "atd" {>= "2.0.0"} 23 | "atdgen-runtime" {>= "2.0.0"} 24 | "biniou" {>= "1.0.6"} 25 | "yojson" {>= "1.2.1"} 26 | ] 27 | synopsis: 28 | "Generates efficient JSON serializers, deserializers and validators" 29 | description: """ 30 | Atdgen is a command-line program that takes as input type definitions in the 31 | ATD syntax and produces OCaml code suitable for data serialization and 32 | deserialization. 33 | 34 | Two data formats are currently supported, these are biniou and JSON. 35 | Atdgen-biniou and Atdgen-json will refer to Atdgen used in one context or the 36 | other. 37 | 38 | Atdgen was designed with efficiency and durability in mind. Software authors 39 | are encouraged to use Atdgen directly and to write tools that may reuse part of 40 | Atdgen’s source code.""" 41 | url { 42 | src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" 43 | checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" 44 | } 45 | -------------------------------------------------------------------------------- /esy.lock/opam/astring.0.8.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/astring" 5 | doc: "http://erratique.ch/software/astring/doc" 6 | dev-repo: "git+http://erratique.ch/repos/astring.git" 7 | bug-reports: "https://github.com/dbuenzli/astring/issues" 8 | tags: [ "string" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "base-bytes" 16 | ] 17 | build: [[ 18 | "ocaml" "pkg/pkg.ml" "build" 19 | "--pinned" "%{pinned}%" ]] 20 | synopsis: "Alternative String module for OCaml" 21 | description: """ 22 | Astring exposes an alternative `String` module for OCaml. This module 23 | tries to balance minimality and expressiveness for basic, index-free, 24 | string processing and provides types and functions for substrings, 25 | string sets and string maps. 26 | 27 | Remaining compatible with the OCaml `String` module is a non-goal. The 28 | `String` module exposed by Astring has exception safe functions, 29 | removes deprecated and rarely used functions, alters some signatures 30 | and names, adds a few missing functions and fully exploits OCaml's 31 | newfound string immutability. 32 | 33 | Astring depends only on the OCaml standard library. It is distributed 34 | under the ISC license.""" 35 | url { 36 | src: "http://erratique.ch/software/astring/releases/astring-0.8.3.tbz" 37 | checksum: "md5=c5bf6352b9ac27fbeab342740f4fa870" 38 | } 39 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_expect.v0.11.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "v0.11.1" 3 | maintainer: "opensource@janestreet.com" 4 | authors: ["Jane Street Group, LLC "] 5 | homepage: "https://github.com/janestreet/ppx_expect" 6 | bug-reports: "https://github.com/janestreet/ppx_expect/issues" 7 | dev-repo: "git+https://github.com/janestreet/ppx_expect.git" 8 | license: "MIT" 9 | build: [ 10 | ["jbuilder" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "base" {>= "v0.11" & < "v0.12"} 14 | "ppx_assert" {>= "v0.11" & < "v0.12"} 15 | "ppx_compare" {>= "v0.11" & < "v0.12"} 16 | "ppx_custom_printf" {>= "v0.11" & < "v0.12"} 17 | "ppx_fields_conv" {>= "v0.11" & < "v0.12"} 18 | "ppx_here" {>= "v0.11" & < "v0.12"} 19 | "ppx_inline_test" {>= "v0.11" & < "v0.12"} 20 | "ppx_sexp_conv" {>= "v0.11" & < "v0.12"} 21 | "ppx_variants_conv" {>= "v0.11" & < "v0.12"} 22 | "stdio" {>= "v0.11" & < "v0.12"} 23 | "jbuilder" {build & >= "1.0+beta18.1"} 24 | "ocaml-migrate-parsetree" {>= "1.0"} 25 | "ppxlib" {>= "0.1.0" & < "0.9.0"} 26 | "re" {>= "1.5.0"} 27 | "ocaml" {>= "4.04.1"} 28 | ] 29 | synopsis: "Cram like framework for OCaml" 30 | description: "Part of the Jane Street's PPX rewriters collection." 31 | url { 32 | src: 33 | "https://github.com/janestreet/ppx_expect/releases/download/v0.11.1/ppx_expect-v0.11.1.tbz" 34 | checksum: "md5=ee5e03094674de295aadc10efe6bb7b7" 35 | } 36 | -------------------------------------------------------------------------------- /esy.lock/opam/tyxml.4.3.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "dev@ocsigen.org" 3 | homepage: "https://github.com/ocsigen/tyxml/" 4 | bug-reports: "https://github.com/ocsigen/tyxml/issues" 5 | doc: "https://ocsigen.org/tyxml/manual/" 6 | dev-repo: "git+https://github.com/ocsigen/tyxml.git" 7 | license: "LGPL-2.1 with OCaml linking exception" 8 | 9 | build: [ 10 | ["dune" "subst"] {pinned} 11 | ["dune" "build" "-p" name "-j" jobs] 12 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 13 | ] 14 | 15 | depends: [ 16 | "ocaml" {>= "4.02"} 17 | "re" {>= "1.5.0"} 18 | ("ocaml" {>= "4.07"} | "re" {>= "1.8.0"}) 19 | "dune" 20 | "alcotest" {with-test} 21 | "seq" 22 | "uutf" {>= "1.0.0"} 23 | ] 24 | 25 | synopsis:"TyXML is a library for building correct HTML and SVG documents" 26 | description:""" 27 | TyXML provides a set of convenient combinators that uses the OCaml 28 | type system to ensure the validity of the generated documents. TyXML 29 | can be used with any representation of HTML and SVG: the textual one, 30 | provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) 31 | virtual DOM (`virtual-dom`) and reactive or replicated trees 32 | (`eliom`). You can also create your own representation and use it to 33 | instantiate a new set of combinators. 34 | 35 | ```ocaml 36 | open Tyxml 37 | let to_ocaml = Html.(a ~a:[a_href "ocaml.org"] [txt "OCaml!"]) 38 | ``` 39 | """ 40 | authors: "The ocsigen team" 41 | url { 42 | src: 43 | "https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz" 44 | checksum: "md5=fd834a567f813bf447cab5f4c3a723e2" 45 | } 46 | -------------------------------------------------------------------------------- /esy.lock/opam/uutf.1.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/uutf" 5 | doc: "http://erratique.ch/software/uutf/doc/Uutf" 6 | dev-repo: "git+http://erratique.ch/repos/uutf.git" 7 | bug-reports: "https://github.com/dbuenzli/uutf/issues" 8 | tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "uchar" 16 | ] 17 | depopts: ["cmdliner"] 18 | conflicts: ["cmdliner" { < "0.9.6"} ] 19 | build: [[ 20 | "ocaml" "pkg/pkg.ml" "build" 21 | "--pinned" "%{pinned}%" 22 | "--with-cmdliner" "%{cmdliner:installed}%" ]] 23 | synopsis: """Non-blocking streaming Unicode codec for OCaml""" 24 | description: """\ 25 | 26 | Uutf is a non-blocking streaming codec to decode and encode the UTF-8, 27 | UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently 28 | work character by character without blocking on IO. Decoders perform 29 | character position tracking and support newline normalization. 30 | 31 | Functions are also provided to fold over the characters of UTF encoded 32 | OCaml string values and to directly encode characters in OCaml 33 | Buffer.t values. 34 | 35 | Uutf has no dependency and is distributed under the ISC license. 36 | """ 37 | url { 38 | archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" 39 | checksum: "a7c542405a39630c689a82bd7ef2292c" 40 | } 41 | -------------------------------------------------------------------------------- /esy.lock/opam/fmt.0.8.7/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: [ "The fmt programmers" ] 4 | homepage: "https://erratique.ch/software/fmt" 5 | doc: "https://erratique.ch/software/fmt" 6 | dev-repo: "git+https://erratique.ch/repos/fmt.git" 7 | bug-reports: "https://github.com/dbuenzli/fmt/issues" 8 | tags: [ "string" "format" "pretty-print" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.05.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | # Can be removed once ocaml >= 4.07 16 | "seq" 17 | "stdlib-shims" 18 | ] 19 | depopts: [ "base-unix" "cmdliner" ] 20 | conflicts: [ "cmdliner" {< "0.9.8"} ] 21 | build: [[ 22 | "ocaml" "pkg/pkg.ml" "build" 23 | "--dev-pkg" "%{pinned}%" 24 | "--with-base-unix" "%{base-unix:installed}%" 25 | "--with-cmdliner" "%{cmdliner:installed}%" ]] 26 | 27 | synopsis: """OCaml Format pretty-printer combinators""" 28 | description: """\ 29 | 30 | Fmt exposes combinators to devise `Format` pretty-printing functions. 31 | 32 | Fmt depends only on the OCaml standard library. The optional `Fmt_tty` 33 | library that allows to setup formatters for terminal color output 34 | depends on the Unix library. The optional `Fmt_cli` library that 35 | provides command line support for Fmt depends on [`Cmdliner`][cmdliner]. 36 | 37 | Fmt is distributed under the ISC license. 38 | 39 | [cmdliner]: http://erratique.ch/software/cmdliner 40 | """ 41 | url { 42 | archive: "https://erratique.ch/software/fmt/releases/fmt-0.8.7.tbz" 43 | checksum: "c317aa285fe13732cd1f27674f974357" 44 | } 45 | -------------------------------------------------------------------------------- /esy.lock/opam/cmdliner.1.0.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/cmdliner" 5 | doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" 6 | dev-repo: "git+http://erratique.ch/repos/cmdliner.git" 7 | bug-reports: "https://github.com/dbuenzli/cmdliner/issues" 8 | tags: [ "cli" "system" "declarative" "org:erratique" ] 9 | license: "ISC" 10 | depends:[ "ocaml" {>= "4.03.0"} ] 11 | build: [[ make "all" "PREFIX=%{prefix}%" ]] 12 | install: 13 | [[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ] 14 | [make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]] 15 | 16 | synopsis: """Declarative definition of command line interfaces for OCaml""" 17 | description: """\ 18 | 19 | Cmdliner allows the declarative definition of command line interfaces 20 | for OCaml. 21 | 22 | It provides a simple and compositional mechanism to convert command 23 | line arguments to OCaml values and pass them to your functions. The 24 | module automatically handles syntax errors, help messages and UNIX man 25 | page generation. It supports programs with single or multiple commands 26 | and respects most of the [POSIX][1] and [GNU][2] conventions. 27 | 28 | Cmdliner has no dependencies and is distributed under the ISC license. 29 | 30 | [1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html 31 | [2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html 32 | """ 33 | url { 34 | archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.3.tbz" 35 | checksum: "3674ad01d4445424105d33818c78fba8" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "A library manager for OCaml" 3 | maintainer: "Thomas Gazagnaire " 4 | authors: "Gerd Stolpmann " 5 | homepage: "http://projects.camlcity.org/projects/findlib.html" 6 | bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" 7 | dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" 8 | description: """ 9 | Findlib is a library manager for OCaml. It provides a convention how 10 | to store libraries, and a file format ("META") to describe the 11 | properties of libraries. There is also a tool (ocamlfind) for 12 | interpreting the META files, so that it is very easy to use libraries 13 | in programs and scripts. 14 | """ 15 | build: [ 16 | [ 17 | "./configure" 18 | "-bindir" 19 | bin 20 | "-sitelib" 21 | lib 22 | "-mandir" 23 | man 24 | "-config" 25 | "%{lib}%/findlib.conf" 26 | "-no-custom" 27 | "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} 28 | "-no-topfind" {ocaml:preinstalled} 29 | ] 30 | [make "all"] 31 | [make "opt"] {ocaml:native} 32 | ] 33 | install: [ 34 | [make "install"] 35 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} 36 | ] 37 | depends: [ 38 | "ocaml" {>= "4.00.0"} 39 | "conf-m4" {build} 40 | ] 41 | extra-files: [ 42 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] 43 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] 44 | ] 45 | url { 46 | src: "http://download.camlcity.org/download/findlib-1.8.1.tar.gz" 47 | checksum: "md5=18ca650982c15536616dea0e422cbd8c" 48 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.1.tar.gz" 49 | } 50 | -------------------------------------------------------------------------------- /esy.lock/opam/parsexp.v0.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/parsexp" 5 | bug-reports: "https://github.com/janestreet/parsexp/issues" 6 | dev-repo: "git+https://github.com/janestreet/parsexp.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "sexplib0" {>= "v0.11" & < "v0.12"} 14 | "jbuilder" {build & >= "1.0+beta18.1"} 15 | ] 16 | synopsis: "S-expression parsing library" 17 | description: """ 18 | This library provides generic parsers for parsing S-expressions from 19 | strings or other medium. 20 | 21 | The library is focused on performances but still provide full generic 22 | parsers that can be used with strings, bigstrings, lexing buffers, 23 | character streams or any other sources effortlessly. 24 | 25 | It provides three different class of parsers: 26 | - the normal parsers, producing [Sexp.t] or [Sexp.t list] values 27 | - the parsers with positions, building compact position sequences so 28 | that one can recover original positions in order to report properly 29 | located errors at little cost 30 | - the Concrete Syntax Tree parsers, produce values of type 31 | [Parsexp.Cst.t] which record the concrete layout of the s-expression 32 | syntax, including comments 33 | 34 | This library is portable and doesn't provide IO functions. To read 35 | s-expressions from files or other external sources, you should use 36 | parsexp_io.""" 37 | url { 38 | src: 39 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/parsexp-v0.11.0.tar.gz" 40 | checksum: "md5=816fce8d14b71a379296577c803bdbca" 41 | } 42 | -------------------------------------------------------------------------------- /esy.lock/opam/bos.0.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/bos" 5 | doc: "http://erratique.ch/software/bos/doc" 6 | dev-repo: "git+http://erratique.ch/repos/bos.git" 7 | bug-reports: "https://github.com/dbuenzli/bos/issues" 8 | tags: [ "os" "system" "cli" "command" "file" "path" "log" "unix" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | "base-unix" 16 | "rresult" {>= "0.4.0"} 17 | "astring" 18 | "fpath" 19 | "fmt" {>= "0.8.0"} 20 | "logs" 21 | "mtime" {with-test} 22 | ] 23 | build: [[ 24 | "ocaml" "pkg/pkg.ml" "build" 25 | "--dev-pkg" "%{pinned}%" ]] 26 | synopsis: "Basic OS interaction for OCaml" 27 | description: """ 28 | Bos provides support for basic and robust interaction with the 29 | operating system in OCaml. It has functions to access the process 30 | environment, parse command line arguments, interact with the file 31 | system and run command line programs. 32 | 33 | Bos works equally well on POSIX and Windows operating systems. 34 | 35 | Bos depends on [Rresult][rresult], [Astring][astring], [Fmt][fmt], 36 | [Fpath][fpath] and [Logs][logs] and the OCaml Unix library. It is 37 | distributed under the ISC license. 38 | 39 | [rresult]: http://erratique.ch/software/rresult 40 | [astring]: http://erratique.ch/software/astring 41 | [fmt]: http://erratique.ch/software/fmt 42 | [fpath]: http://erratique.ch/software/fpath 43 | [logs]: http://erratique.ch/software/logs""" 44 | url { 45 | src: "http://erratique.ch/software/bos/releases/bos-0.2.0.tbz" 46 | checksum: "md5=aeae7447567db459c856ee41b5a66fd2" 47 | } 48 | -------------------------------------------------------------------------------- /esy.lock/opam/ptime.0.8.5/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["The ptime programmers"] 4 | homepage: "https://erratique.ch/software/ptime" 5 | doc: "https://erratique.ch/software/ptime/doc" 6 | dev-repo: "git+http://erratique.ch/repos/ptime.git" 7 | bug-reports: "https://github.com/dbuenzli/ptime/issues" 8 | tags: [ "time" "posix" "system" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "result" 16 | ] 17 | depopts: [ "js_of_ocaml" ] 18 | conflicts: [ "js_of_ocaml" { < "3.3.0" } ] 19 | build:[[ 20 | "ocaml" "pkg/pkg.ml" "build" 21 | "--pinned" "%{pinned}%" 22 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" ]] 23 | 24 | synopsis: """POSIX time for OCaml""" 25 | description: """\ 26 | 27 | Ptime has platform independent POSIX time support in pure OCaml. It 28 | provides a type to represent a well-defined range of POSIX timestamps 29 | with picosecond precision, conversion with date-time values, 30 | conversion with [RFC 3339 timestamps][rfc3339] and pretty printing to a 31 | human-readable, locale-independent representation. 32 | 33 | The additional Ptime_clock library provides access to a system POSIX 34 | clock and to the system's current time zone offset. 35 | 36 | Ptime is not a calendar library. 37 | 38 | Ptime depends on the `result` compatibility package. Ptime_clock 39 | depends on your system library. Ptime_clock's optional JavaScript 40 | support depends on [js_of_ocaml][jsoo]. Ptime and its libraries are 41 | distributed under the ISC license. 42 | 43 | [rfc3339]: http://tools.ietf.org/html/rfc3339 44 | [jsoo]: http://ocsigen.org/js_of_ocaml/ 45 | """ 46 | url { 47 | archive: "https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz" 48 | checksum: "4d48055d623ecf2db792439b3e96a520" 49 | } 50 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/files/base-v0.11.1.patch: -------------------------------------------------------------------------------- 1 | --- ./src/exn_stubs.c 2 | +++ ./src/exn_stubs.c 3 | @@ -1,8 +1,13 @@ 4 | #include 5 | 6 | extern int caml_backtrace_pos; 7 | +#ifndef _MSC_VER 8 | +#define UNUSED __attribute__((unused)) 9 | +#else 10 | +#define UNUSED 11 | +#endif 12 | 13 | -CAMLprim value Base_clear_caml_backtrace_pos (value __attribute__((unused)) unit) { 14 | +CAMLprim value Base_clear_caml_backtrace_pos (value UNUSED unit) { 15 | caml_backtrace_pos = 0; 16 | return Val_unit; 17 | } 18 | --- ./src/int_math_stubs.c 19 | +++ ./src/int_math_stubs.c 20 | @@ -5,6 +5,25 @@ 21 | #include 22 | #include 23 | 24 | +#if defined(_MSC_VER) 25 | +#include 26 | +#ifdef ARCH_SIXTYFOUR 27 | +#define __builtin_popcountll(x) __popcnt64((uint64_t)(x)) 28 | +static __inline uint32_t __builtin_clzll(uint64_t value) { 29 | + uint32_t leading_zero = 0; 30 | + _BitScanReverse64(&leading_zero, value); 31 | + return (63 - leading_zero); 32 | +} 33 | +#else 34 | +#define __builtin_popcount(x) __popcnt((unsigned int)(x)) 35 | +static __inline uint32_t __builtin_clz(uint32_t value) { 36 | + uint32_t leading_zero = 0; 37 | + _BitScanReverse(&leading_zero, value); 38 | + return (31 - leading_zero); 39 | +} 40 | +#endif /* ARCH_SIXTYFOUR */ 41 | +#endif /* defined(_MSC_VER) */ 42 | + 43 | static int64_t int_pow(int64_t base, int64_t exponent) { 44 | int64_t ret = 1; 45 | int64_t mul[4]; 46 | --- ./src/jbuild 47 | +++ ./src/jbuild 48 | @@ -65,7 +65,7 @@ 49 | (progn 50 | (with-stdout-to popcnt_test.c 51 | (echo "int main(int argc, char ** argv) { return __builtin_popcount(argc); }")) 52 | - (system "${CC} -mpopcnt -c popcnt_test.c 2> ${null} && \ 53 | + (bash "${CC} -mpopcnt -c popcnt_test.c 2> ${null} && \ 54 | echo '(-mpopcnt)' > ${@} || echo '()' > ${@}")))))) 55 | 56 | (ocamllex (hex_lexer)) 57 | -------------------------------------------------------------------------------- /esy.lock/opam/ppxlib.0.8.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/ocaml-ppx/ppxlib" 5 | bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues" 6 | dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git" 7 | doc: "https://ocaml-ppx.github.io/ppxlib/" 8 | license: "MIT" 9 | build: [ 10 | ["dune" "subst"] {pinned} 11 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | run-test: [ 14 | ["dune" "runtest" "-p" name "-j" jobs] { ocaml:version >= "4.06" & ocaml:version < "4.08" } 15 | ] 16 | depends: [ 17 | "ocaml" {>= "4.04.1"} 18 | "base" {>= "v0.11.0"} 19 | "dune" 20 | "ocaml-compiler-libs" {>= "v0.11.0"} 21 | "ocaml-migrate-parsetree" {>= "1.3.1"} 22 | "ppx_derivers" {>= "1.0"} 23 | "stdio" {>= "v0.11.0"} 24 | "ocamlfind" {with-test} 25 | ] 26 | synopsis: "Base library and tools for ppx rewriters" 27 | description: """ 28 | A comprehensive toolbox for ppx development. It features: 29 | - a OCaml AST / parser / pretty-printer snapshot,to create a full 30 | frontend independent of the version of OCaml; 31 | - a library for library for ppx rewriters in general, and type-driven 32 | code generators in particular; 33 | - a feature-full driver for OCaml AST transformers; 34 | - a quotation mechanism allowing to write values representing the 35 | OCaml AST in the OCaml syntax; 36 | - a generator of open recursion classes from type definitions. 37 | """ 38 | url { 39 | src: 40 | "https://github.com/ocaml-ppx/ppxlib/releases/download/0.8.1/ppxlib-0.8.1.tbz" 41 | checksum: [ 42 | "sha256=a5cb79ee83bba80304b65bc47f2985382bef89668b1b46f9ffb3734c2f2f7521" 43 | "sha512=74bf4a0811f4fa73969149efc7f98620bf1c1ef7322edb8de82e02e25b61e005945887ea865b462bfb638d7d0e574706da190ca9416643f4464a89262ae7ae12" 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /esy.lock/opam/topkg.1.0.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/topkg" 5 | doc: "http://erratique.ch/software/topkg/doc" 6 | license: "ISC" 7 | dev-repo: "git+http://erratique.ch/repos/topkg.git" 8 | bug-reports: "https://github.com/dbuenzli/topkg/issues" 9 | tags: ["packaging" "ocamlbuild" "org:erratique"] 10 | depends: [ 11 | "ocaml" {>= "4.03.0"} 12 | "ocamlfind" {build & >= "1.6.1"} 13 | "ocamlbuild" ] 14 | build: [[ 15 | "ocaml" "pkg/pkg.ml" "build" 16 | "--pkg-name" name 17 | "--dev-pkg" "%{pinned}%" ]] 18 | synopsis: """The transitory OCaml software packager""" 19 | description: """\ 20 | 21 | Topkg is a packager for distributing OCaml software. It provides an 22 | API to describe the files a package installs in a given build 23 | configuration and to specify information about the package's 24 | distribution, creation and publication procedures. 25 | 26 | The optional topkg-care package provides the `topkg` command line tool 27 | which helps with various aspects of a package's life cycle: creating 28 | and linting a distribution, releasing it on the WWW, publish its 29 | documentation, add it to the OCaml opam repository, etc. 30 | 31 | Topkg is distributed under the ISC license and has **no** 32 | dependencies. This is what your packages will need as a *build* 33 | dependency. 34 | 35 | Topkg-care is distributed under the ISC license it depends on 36 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], 37 | [webbrowser][webbrowser] and `opam-format`. 38 | 39 | [fmt]: http://erratique.ch/software/fmt 40 | [logs]: http://erratique.ch/software/logs 41 | [bos]: http://erratique.ch/software/bos 42 | [cmdliner]: http://erratique.ch/software/cmdliner 43 | [webbrowser]: http://erratique.ch/software/webbrowser 44 | """ 45 | url { 46 | archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz" 47 | checksum: "16b90e066d8972a5ef59655e7c28b3e9" 48 | } 49 | -------------------------------------------------------------------------------- /esy.lock/opam/dune.1.11.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Fast, portable and opinionated build system" 3 | description: """ 4 | 5 | dune is a build system that was designed to simplify the release of 6 | Jane Street packages. It reads metadata from "dune" files following a 7 | very simple s-expression syntax. 8 | 9 | dune is fast, it has very low-overhead and support parallel builds on 10 | all platforms. It has no system dependencies, all you need to build 11 | dune and packages using dune is OCaml. You don't need or make or bash 12 | as long as the packages themselves don't use bash explicitly. 13 | 14 | dune supports multi-package development by simply dropping multiple 15 | repositories into the same directory. 16 | 17 | It also supports multi-context builds, such as building against 18 | several opam roots/switches simultaneously. This helps maintaining 19 | packages across several versions of OCaml and gives cross-compilation 20 | for free. 21 | """ 22 | maintainer: ["Jane Street Group, LLC "] 23 | authors: ["Jane Street Group, LLC "] 24 | license: "MIT" 25 | homepage: "https://github.com/ocaml/dune" 26 | doc: "https://dune.readthedocs.io/" 27 | bug-reports: "https://github.com/ocaml/dune/issues" 28 | depends: [ 29 | "ocaml" {>= "4.02"} 30 | "base-unix" 31 | "base-threads" 32 | ] 33 | conflicts: [ 34 | "jbuilder" {!= "transition"} 35 | "odoc" {< "1.3.0"} 36 | "dune-release" {< "1.3.0"} 37 | ] 38 | dev-repo: "git+https://github.com/ocaml/dune.git" 39 | build: [ 40 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path 41 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} 42 | ["ocaml" "bootstrap.ml"] 43 | ["./boot.exe" "--release" "--subst"] {pinned} 44 | ["./boot.exe" "--release" "-j" jobs] 45 | ] 46 | url { 47 | src: 48 | "https://github.com/ocaml/dune/releases/download/1.11.0/dune-build-info-1.11.0.tbz" 49 | checksum: [ 50 | "sha256=bcfdf55d981d7e621a696cac34a3af26340d41c045404617df6f5dbfd5165486" 51 | "sha512=3be3b6f1a3d18c50c864322288242c4dd526ea80d0847781bd98075c548731373211fcf3c953a4d7863d663e65a33242384b79bad938078e6c70fa715090e6a9" 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Starter pipeline 2 | # Start with a minimal pipeline that you can customize to build and deploy your code. 3 | # Add steps that build, run tests, deploy, and more: 4 | # https://aka.ms/yaml 5 | 6 | name: $(Build.SourceVersion) 7 | jobs: 8 | - job: Linux 9 | timeoutInMinutes: 0 10 | pool: 11 | vmImage: "Ubuntu 16.04" 12 | 13 | variables: 14 | ESY__CACHE_INSTALL_PATH: /home/vsts/.esy/3_____________________________________________________________________/i/ 15 | ESY__CACHE_SOURCE_TARBALL_PATH: /home/vsts/.esy/source/i 16 | 17 | steps: 18 | # TODO: Uncomment both this and 'publish-build-cache' below to enable build caching for Linux. 19 | # - template: .ci/restore-build-cache.yml 20 | - template: .ci/esy-build-steps.yml 21 | 22 | # - template: .ci/publish-build-cache.yml 23 | - job: MacOS 24 | timeoutInMinutes: 0 25 | pool: 26 | vmImage: "macOS 10.13" 27 | 28 | variables: 29 | ESY__CACHE_INSTALL_PATH: /Users/vsts/.esy/3____________________________________________________________________/i/ 30 | ESY__CACHE_SOURCE_TARBALL_PATH: /Users/vsts/.esy/source/i 31 | 32 | steps: 33 | # TODO: Uncomment both this and 'publish-build-cache' below to enable build caching for Mac. 34 | # - template: .ci/restore-build-cache.yml 35 | - template: .ci/esy-build-steps.yml 36 | 37 | # - template: .ci/publish-build-cache.yml 38 | - job: Windows 39 | timeoutInMinutes: 0 40 | pool: 41 | vmImage: "vs2017-win2016" 42 | 43 | variables: 44 | ESY__CACHE_INSTALL_PATH: C:\Users\VssAdministrator\.esy\3_\i 45 | ESY__CACHE_SOURCE_TARBALL_PATH: C:\Users\VssAdministrator\.esy\source\i 46 | 47 | steps: 48 | - template: .ci/restore-build-cache.yml 49 | - template: .ci/esy-build-steps.yml 50 | - template: .ci/publish-build-cache.yml 51 | 52 | - job: Release 53 | timeoutInMinutes: 0 54 | displayName: Release 55 | dependsOn: 56 | - Linux 57 | - MacOS 58 | - Windows 59 | condition: succeeded() 60 | pool: 61 | vmImage: ubuntu-16.04 62 | steps: 63 | - task: PublishBuildArtifacts@1 64 | displayName: "Release Package" 65 | inputs: 66 | PathtoPublish: "." 67 | ArtifactName: npm-package 68 | -------------------------------------------------------------------------------- /esy.lock/opam/logs.0.6.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["The logs programmers"] 4 | homepage: "https://erratique.ch/software/logs" 5 | doc: "https://erratique.ch/software/logs/doc" 6 | dev-repo: "git+https://erratique.ch/repos/logs.git" 7 | bug-reports: "https://github.com/dbuenzli/logs/issues" 8 | tags: [ "log" "system" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.03.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "mtime" {with-test} ] 16 | depopts: [ 17 | "js_of_ocaml" 18 | "fmt" 19 | "cmdliner" 20 | "lwt" ] 21 | conflicts: [ 22 | "js_of_ocaml" { < "3.3.0" } ] 23 | 24 | build: [[ 25 | "ocaml" "pkg/pkg.ml" "build" 26 | "--pinned" "%{pinned}%" 27 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" 28 | "--with-fmt" "%{fmt:installed}%" 29 | "--with-cmdliner" "%{cmdliner:installed}%" 30 | "--with-lwt" "%{lwt:installed}%" ]] 31 | 32 | synopsis: """Logging infrastructure for OCaml""" 33 | description: """\ 34 | 35 | Logs provides a logging infrastructure for OCaml. Logging is performed 36 | on sources whose reporting level can be set independently. Log message 37 | report is decoupled from logging and is handled by a reporter. 38 | 39 | A few optional log reporters are distributed with the base library and 40 | the API easily allows to implement your own. 41 | 42 | `Logs` has no dependencies. The optional `Logs_fmt` reporter on OCaml 43 | formatters depends on [Fmt][fmt]. The optional `Logs_browser` 44 | reporter that reports to the web browser console depends on 45 | [js_of_ocaml][jsoo]. The optional `Logs_cli` library that provides 46 | command line support for controlling Logs depends on 47 | [`Cmdliner`][cmdliner]. The optional `Logs_lwt` library that provides 48 | Lwt logging functions depends on [`Lwt`][lwt] 49 | 50 | Logs and its reporters are distributed under the ISC license. 51 | 52 | [fmt]: http://erratique.ch/software/fmt 53 | [jsoo]: http://ocsigen.org/js_of_ocaml/ 54 | [cmdliner]: http://erratique.ch/software/cmdliner 55 | [lwt]: http://ocsigen.org/lwt/ 56 | """ 57 | url { 58 | archive: "https://erratique.ch/software/logs/releases/logs-0.6.3.tbz" 59 | checksum: "370e4c802588f73d0777c59bc414b57b" 60 | } 61 | -------------------------------------------------------------------------------- /esy.lock/opam/num.1.2/files/installation-warning.patch: -------------------------------------------------------------------------------- 1 | From db8d748b2cad0adc2698e9fcf28727083a711bae Mon Sep 17 00:00:00 2001 2 | From: David Allsopp 3 | Date: Wed, 24 Jan 2018 16:01:56 +0000 4 | Subject: [PATCH] Warn about installations broken by previous faulty package 5 | 6 | --- 7 | Makefile | 33 +++++++++++++++++++++++++++++++++ 8 | 1 file changed, 33 insertions(+) 9 | 10 | diff --git a/Makefile b/Makefile 11 | index b40e588..d4dcd70 100644 12 | --- a/Makefile 13 | +++ b/Makefile 14 | @@ -14,9 +14,42 @@ install: 15 | $(MAKE) -C src install 16 | $(MAKE) -C toplevel install 17 | 18 | +OCAMLFIND_DIR:=$(dir $(shell command -v ocamlfind 2>/dev/null)) 19 | +OCAMLC_DIR:=$(dir $(shell command -v ocamlc 2>/dev/null)) 20 | +NUM_INSTALLED:=$(shell ocamlfind query num 2>/dev/null) 21 | + 22 | +ifeq ($(NUM_INSTALLED),) 23 | +# The num findlib package is not already present - wohoo! 24 | +OUR_FAULT=no 25 | +else 26 | +ifeq ($(OCAMLFIND_DIR),$(OCAMLC_DIR)) 27 | +# The num findlib package is present, but ocamlc and ocamlfind are in the 28 | +# same place, which means that either we're looking at a system-installed 29 | +# ocamlfind (which isn't supported), or the user has done something else 30 | +# nefarious and doesn't deserve our sympathy (or, at least, our potentially 31 | +# unhelpful advice) 32 | +OUR_FAULT=no 33 | +else 34 | +# The num findlib package package is present, and ocamlc and ocamlfind reside 35 | +# in different directories, which means that we're almost certainly looking at 36 | +# a system switch which has been damaged by a previous num package installation 37 | +# on an OS which didn't protect the system lib directory. 38 | +OUR_FAULT=probably 39 | +endif 40 | +endif 41 | + 42 | findlib-install: 43 | +ifeq ($(OUR_FAULT),no) 44 | $(MAKE) -C src findlib-install 45 | $(MAKE) -C toplevel install 46 | +else 47 | + @echo "\033[0;31m[ERROR]\033[m It appears that the num library was previously installed to your system" 48 | + @echo " compiler's lib directory, probably by a faulty opam package." 49 | + @echo " You will need to remove arith_flags.*, arith_status.*, big_int.*," 50 | + @echo " int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and" 51 | + @echo " stublibs/dllnums.* from $(shell ocamlc -where)." 52 | + @false 53 | +endif 54 | 55 | uninstall: 56 | $(MAKE) -C src uninstall 57 | -- 58 | 2.14.1 59 | 60 | -------------------------------------------------------------------------------- /esy.lock/opam/merlin.3.3.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | name: "merlin" 3 | maintainer: "defree@gmail.com" 4 | authors: "The Merlin team" 5 | homepage: "https://github.com/ocaml/merlin" 6 | bug-reports: "https://github.com/ocaml/merlin/issues" 7 | dev-repo: "git+https://github.com/ocaml/merlin.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "ocaml" {>= "4.02.1" & < "4.09"} 14 | "dune" {>= "1.8.0"} 15 | "ocamlfind" {>= "1.5.2"} 16 | "yojson" 17 | "mdx" {with-test & >= "1.3.0"} 18 | ] 19 | synopsis: 20 | "Editor helper, provides completion, typing and source browsing in Vim and Emacs" 21 | description: 22 | "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." 23 | post-messages: [ 24 | "merlin installed. 25 | 26 | Quick setup for VIM 27 | ------------------- 28 | Append this to your .vimrc to add merlin to vim's runtime-path: 29 | let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') 30 | execute \"set rtp+=\" . g:opamshare . \"/merlin/vim\" 31 | 32 | Also run the following line in vim to index the documentation: 33 | :execute \"helptags \" . g:opamshare . \"/merlin/vim/doc\" 34 | 35 | Quick setup for EMACS 36 | ------------------- 37 | Add opam emacs directory to your load-path by appending this to your .emacs: 38 | (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"config\" \"var\" \"share\"))))) 39 | (when (and opam-share (file-directory-p opam-share)) 40 | ;; Register Merlin 41 | (add-to-list 'load-path (expand-file-name \"emacs/site-lisp\" opam-share)) 42 | (autoload 'merlin-mode \"merlin\" nil t nil) 43 | ;; Automatically start it in OCaml buffers 44 | (add-hook 'tuareg-mode-hook 'merlin-mode t) 45 | (add-hook 'caml-mode-hook 'merlin-mode t) 46 | ;; Use opam switch to lookup ocamlmerlin binary 47 | (setq merlin-command 'opam))) 48 | 49 | Take a look at https://github.com/ocaml/merlin for more information 50 | 51 | Quick setup with opam-user-setup 52 | -------------------------------- 53 | 54 | Opam-user-setup support Merlin. 55 | 56 | $ opam user-setup install 57 | 58 | should take care of basic setup. 59 | See https://github.com/OCamlPro/opam-user-setup 60 | " 61 | {success & !user-setup:installed} 62 | ] 63 | url { 64 | src: 65 | "https://github.com/ocaml/merlin/releases/download/v3.3.2/merlin-v3.3.2.tbz" 66 | checksum: [ 67 | "sha256=1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801" 68 | "sha512=3ae021669808a40b4449f1cbdaca40b605ea5779a6204addd8b0ee4af9f14f528d55ca43a8dd3c7d547fb8e4cb256c09a9151d5559ef24dad83b5ab05aa146a2" 69 | ] 70 | } 71 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -57,16 +57,16 @@ 4 | cat findlib.conf.in | \ 5 | $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf 6 | if ./tools/cmd_from_same_dir ocamlc; then \ 7 | - echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ 8 | + echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 9 | fi 10 | if ./tools/cmd_from_same_dir ocamlopt; then \ 11 | - echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ 12 | + echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 13 | fi 14 | if ./tools/cmd_from_same_dir ocamldep; then \ 15 | - echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ 16 | + echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 17 | fi 18 | if ./tools/cmd_from_same_dir ocamldoc; then \ 19 | - echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ 20 | + echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 21 | fi 22 | 23 | .PHONY: install-doc 24 | --- ./src/findlib/findlib_config.mlp 25 | +++ ./src/findlib/findlib_config.mlp 26 | @@ -24,3 +24,5 @@ 27 | | "MacOS" -> "" (* don't know *) 28 | | _ -> failwith "Unknown Sys.os_type" 29 | ;; 30 | + 31 | +let exec_suffix = "@EXEC_SUFFIX@";; 32 | --- ./src/findlib/findlib.ml 33 | +++ ./src/findlib/findlib.ml 34 | @@ -28,15 +28,20 @@ 35 | let conf_ldconf = ref "";; 36 | let conf_ignore_dups_in = ref ([] : string list);; 37 | 38 | -let ocamlc_default = "ocamlc";; 39 | -let ocamlopt_default = "ocamlopt";; 40 | -let ocamlcp_default = "ocamlcp";; 41 | -let ocamloptp_default = "ocamloptp";; 42 | -let ocamlmklib_default = "ocamlmklib";; 43 | -let ocamlmktop_default = "ocamlmktop";; 44 | -let ocamldep_default = "ocamldep";; 45 | -let ocamlbrowser_default = "ocamlbrowser";; 46 | -let ocamldoc_default = "ocamldoc";; 47 | +let add_exec str = 48 | + match Findlib_config.exec_suffix with 49 | + | "" -> str 50 | + | a -> str ^ a ;; 51 | +let ocamlc_default = add_exec "ocamlc";; 52 | +let ocamlopt_default = add_exec "ocamlopt";; 53 | +let ocamlcp_default = add_exec "ocamlcp";; 54 | +let ocamloptp_default = add_exec "ocamloptp";; 55 | +let ocamlmklib_default = add_exec "ocamlmklib";; 56 | +let ocamlmktop_default = add_exec "ocamlmktop";; 57 | +let ocamldep_default = add_exec "ocamldep";; 58 | +let ocamlbrowser_default = add_exec "ocamlbrowser";; 59 | +let ocamldoc_default = add_exec "ocamldoc";; 60 | + 61 | 62 | 63 | let init_manually 64 | --- ./src/findlib/fl_package_base.ml 65 | +++ ./src/findlib/fl_package_base.ml 66 | @@ -133,7 +133,15 @@ 67 | List.find (fun def -> def.def_var = "exists_if") p.package_defs in 68 | let files = Fl_split.in_words def.def_value in 69 | List.exists 70 | - (fun file -> Sys.file_exists (Filename.concat d' file)) 71 | + (fun file -> 72 | + let fln = Filename.concat d' file in 73 | + let e = Sys.file_exists fln in 74 | + (* necessary for ppx executables *) 75 | + if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then 76 | + e 77 | + else 78 | + Sys.file_exists (fln ^ ".exe") 79 | + ) 80 | files 81 | with Not_found -> true in 82 | 83 | --- ./src/findlib/fl_split.ml 84 | +++ ./src/findlib/fl_split.ml 85 | @@ -126,10 +126,17 @@ 86 | | '/' | '\\' -> true 87 | | _ -> false in 88 | let norm_dir_win() = 89 | - if l >= 1 && s.[0] = '/' then 90 | - Buffer.add_char b '\\' else Buffer.add_char b s.[0]; 91 | - if l >= 2 && s.[1] = '/' then 92 | - Buffer.add_char b '\\' else Buffer.add_char b s.[1]; 93 | + if l >= 1 then ( 94 | + if s.[0] = '/' then 95 | + Buffer.add_char b '\\' 96 | + else 97 | + Buffer.add_char b s.[0] ; 98 | + if l >= 2 then 99 | + if s.[1] = '/' then 100 | + Buffer.add_char b '\\' 101 | + else 102 | + Buffer.add_char b s.[1]; 103 | + ); 104 | for k = 2 to l - 1 do 105 | let c = s.[k] in 106 | if is_slash c then ( 107 | --- ./src/findlib/frontend.ml 108 | +++ ./src/findlib/frontend.ml 109 | @@ -31,10 +31,18 @@ 110 | else 111 | Sys_error (arg ^ ": " ^ Unix.error_message code) 112 | 113 | +let is_win = Sys.os_type = "Win32" 114 | + 115 | +let () = 116 | + match Findlib_config.system with 117 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 118 | + (try set_binary_mode_out stdout true with _ -> ()); 119 | + (try set_binary_mode_out stderr true with _ -> ()); 120 | + | _ -> () 121 | 122 | let slashify s = 123 | match Findlib_config.system with 124 | - | "mingw" | "mingw64" | "cygwin" -> 125 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 126 | let b = Buffer.create 80 in 127 | String.iter 128 | (function 129 | @@ -49,7 +57,7 @@ 130 | 131 | let out_path ?(prefix="") s = 132 | match Findlib_config.system with 133 | - | "mingw" | "mingw64" | "cygwin" -> 134 | + | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> 135 | let u = slashify s in 136 | prefix ^ 137 | (if String.contains u ' ' then 138 | @@ -273,11 +281,9 @@ 139 | 140 | 141 | let identify_dir d = 142 | - match Sys.os_type with 143 | - | "Win32" -> 144 | - failwith "identify_dir" (* not available *) 145 | - | _ -> 146 | - let s = Unix.stat d in 147 | + if is_win then 148 | + failwith "identify_dir"; (* not available *) 149 | + let s = Unix.stat d in 150 | (s.Unix.st_dev, s.Unix.st_ino) 151 | ;; 152 | 153 | @@ -459,6 +465,96 @@ 154 | ) 155 | packages 156 | 157 | +let rewrite_cmd s = 158 | + if s = "" || not is_win then 159 | + s 160 | + else 161 | + let s = 162 | + let l = String.length s in 163 | + let b = Buffer.create l in 164 | + for i = 0 to pred l do 165 | + match s.[i] with 166 | + | '/' -> Buffer.add_char b '\\' 167 | + | x -> Buffer.add_char b x 168 | + done; 169 | + Buffer.contents b 170 | + in 171 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 172 | + Filename.check_suffix (String.lowercase s) ".exe" then 173 | + s 174 | + else 175 | + let s' = s ^ ".exe" in 176 | + if Sys.file_exists s' then 177 | + s' 178 | + else 179 | + s 180 | + 181 | +let rewrite_cmd s = 182 | + if s = "" || not is_win then s else 183 | + let s = 184 | + let l = String.length s in 185 | + let b = Buffer.create l in 186 | + for i = 0 to pred l do 187 | + match s.[i] with 188 | + | '/' -> Buffer.add_char b '\\' 189 | + | x -> Buffer.add_char b x 190 | + done; 191 | + Buffer.contents b 192 | + in 193 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 194 | + Filename.check_suffix (String.lowercase s) ".exe" then 195 | + s 196 | + else 197 | + let s' = s ^ ".exe" in 198 | + if Sys.file_exists s' then 199 | + s' 200 | + else 201 | + s 202 | + 203 | +let rewrite_pp cmd = 204 | + if not is_win then cmd else 205 | + let module T = struct exception Keep end in 206 | + let is_whitespace = function 207 | + | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true 208 | + | _ -> false in 209 | + (* characters that triggers special behaviour (cmd.exe, not unix shell) *) 210 | + let is_unsafe_char = function 211 | + | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true 212 | + | _ -> false in 213 | + let len = String.length cmd in 214 | + let buf = Buffer.create (len + 4) in 215 | + let buf_cmd = Buffer.create len in 216 | + let rec iter_ws i = 217 | + if i >= len then () else 218 | + let cur = cmd.[i] in 219 | + if is_whitespace cur then ( 220 | + Buffer.add_char buf cur; 221 | + iter_ws (succ i) 222 | + ) 223 | + else 224 | + iter_cmd i 225 | + and iter_cmd i = 226 | + if i >= len then add_buf_cmd () else 227 | + let cur = cmd.[i] in 228 | + if is_unsafe_char cur || cur = '"' || cur = '\'' then 229 | + raise T.Keep; 230 | + if is_whitespace cur then ( 231 | + add_buf_cmd (); 232 | + Buffer.add_substring buf cmd i (len - i) 233 | + ) 234 | + else ( 235 | + Buffer.add_char buf_cmd cur; 236 | + iter_cmd (succ i) 237 | + ) 238 | + and add_buf_cmd () = 239 | + if Buffer.length buf_cmd > 0 then 240 | + Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) 241 | + in 242 | + try 243 | + iter_ws 0; 244 | + Buffer.contents buf 245 | + with 246 | + | T.Keep -> cmd 247 | 248 | let process_pp_spec syntax_preds packages pp_opts = 249 | (* Returns: pp_command *) 250 | @@ -549,7 +645,7 @@ 251 | None -> [] 252 | | Some cmd -> 253 | ["-pp"; 254 | - cmd ^ " " ^ 255 | + (rewrite_cmd cmd) ^ " " ^ 256 | String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ 257 | String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ 258 | String.concat " " (List.map Filename.quote pp_opts)] 259 | @@ -625,9 +721,11 @@ 260 | in 261 | try 262 | let preprocessor = 263 | + rewrite_cmd ( 264 | resolve_path 265 | ~base ~explicit:true 266 | - (package_property predicates pname "ppx") in 267 | + (package_property predicates pname "ppx") ) 268 | + in 269 | ["-ppx"; String.concat " " (preprocessor :: options)] 270 | with Not_found -> [] 271 | ) 272 | @@ -895,6 +993,14 @@ 273 | switch (e.g. -L instead of -L ) 274 | *) 275 | 276 | +(* We may need to remove files on which we do not have complete control. 277 | + On Windows, removing a read-only file fails so try to change the 278 | + mode of the file first. *) 279 | +let remove_file fname = 280 | + try Sys.remove fname 281 | + with Sys_error _ when is_win -> 282 | + (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); 283 | + Sys.remove fname 284 | 285 | let ocamlc which () = 286 | 287 | @@ -1022,9 +1128,12 @@ 288 | 289 | "-intf", 290 | Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); 291 | - 292 | + 293 | "-pp", 294 | - Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); 295 | + Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); 296 | + 297 | + "-ppx", 298 | + Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 299 | 300 | "-thread", 301 | Arg.Unit (fun _ -> threads := threads_default); 302 | @@ -1237,7 +1346,7 @@ 303 | with 304 | any -> 305 | close_out initl; 306 | - Sys.remove initl_file_name; 307 | + remove_file initl_file_name; 308 | raise any 309 | end; 310 | 311 | @@ -1245,9 +1354,9 @@ 312 | at_exit 313 | (fun () -> 314 | let tr f x = try f x with _ -> () in 315 | - tr Sys.remove initl_file_name; 316 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); 317 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); 318 | + tr remove_file initl_file_name; 319 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); 320 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); 321 | ); 322 | 323 | let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in 324 | @@ -1493,7 +1602,9 @@ 325 | [ "-v", Arg.Unit (fun () -> verbose := Verbose); 326 | "-pp", Arg.String (fun s -> 327 | pp_specified := true; 328 | - options := !options @ ["-pp"; s]); 329 | + options := !options @ ["-pp"; rewrite_pp s]); 330 | + "-ppx", Arg.String (fun s -> 331 | + options := !options @ ["-ppx"; rewrite_pp s]); 332 | ] 333 | ) 334 | ) 335 | @@ -1672,7 +1783,9 @@ 336 | Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); 337 | 338 | "-pp", Arg.String (fun s -> pp_specified := true; 339 | - add_spec_fn "-pp" s); 340 | + add_spec_fn "-pp" (rewrite_pp s)); 341 | + "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 342 | + 343 | ] 344 | ) 345 | ) 346 | @@ -1830,7 +1943,10 @@ 347 | output_string ch_out append; 348 | close_out ch_out; 349 | close_in ch_in; 350 | - Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; 351 | + (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime 352 | + with Unix.Unix_error(e,_,_) -> 353 | + prerr_endline("Warning: setting utimes for " ^ outpath 354 | + ^ ": " ^ Unix.error_message e)); 355 | 356 | prerr_endline("Installed " ^ outpath); 357 | with 358 | @@ -1882,6 +1998,8 @@ 359 | Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in 360 | let f = 361 | Unix.in_channel_of_descr fd in 362 | + if is_win then 363 | + set_binary_mode_in f false; 364 | try 365 | let line = input_line f in 366 | let is_my_file = (line = pkg) in 367 | @@ -2208,7 +2326,7 @@ 368 | let lines = read_ldconf !ldconf in 369 | let dlldir_norm = Fl_split.norm_dir dlldir in 370 | let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in 371 | - let ci_filesys = (Sys.os_type = "Win32") in 372 | + let ci_filesys = is_win in 373 | let check_dir d = 374 | let d' = Fl_split.norm_dir d in 375 | (d' = dlldir_norm) || 376 | @@ -2356,7 +2474,7 @@ 377 | List.iter 378 | (fun file -> 379 | let absfile = Filename.concat dlldir file in 380 | - Sys.remove absfile; 381 | + remove_file absfile; 382 | prerr_endline ("Removed " ^ absfile) 383 | ) 384 | dll_files 385 | @@ -2365,7 +2483,7 @@ 386 | (* Remove the files from the package directory: *) 387 | if Sys.file_exists pkgdir then begin 388 | let files = Sys.readdir pkgdir in 389 | - Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; 390 | + Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; 391 | Unix.rmdir pkgdir; 392 | prerr_endline ("Removed " ^ pkgdir) 393 | end 394 | @@ -2415,7 +2533,9 @@ 395 | 396 | 397 | let print_configuration() = 398 | + let sl = slashify in 399 | let dir s = 400 | + let s = sl s in 401 | if Sys.file_exists s then 402 | s 403 | else 404 | @@ -2453,27 +2573,27 @@ 405 | if md = "" then "the corresponding package directories" else dir md 406 | ); 407 | Printf.printf "The standard library is assumed to reside in:\n %s\n" 408 | - (Findlib.ocaml_stdlib()); 409 | + (sl (Findlib.ocaml_stdlib())); 410 | Printf.printf "The ld.conf file can be found here:\n %s\n" 411 | - (Findlib.ocaml_ldconf()); 412 | + (sl (Findlib.ocaml_ldconf())); 413 | flush stdout 414 | | Some "conf" -> 415 | - print_endline (Findlib.config_file()) 416 | + print_endline (sl (Findlib.config_file())) 417 | | Some "path" -> 418 | - List.iter print_endline (Findlib.search_path()) 419 | + List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) 420 | | Some "destdir" -> 421 | - print_endline (Findlib.default_location()) 422 | + print_endline ( sl (Findlib.default_location())) 423 | | Some "metadir" -> 424 | - print_endline (Findlib.meta_directory()) 425 | + print_endline ( sl (Findlib.meta_directory())) 426 | | Some "metapath" -> 427 | let mdir = Findlib.meta_directory() in 428 | let ddir = Findlib.default_location() in 429 | - print_endline 430 | - (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") 431 | + print_endline ( sl 432 | + (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) 433 | | Some "stdlib" -> 434 | - print_endline (Findlib.ocaml_stdlib()) 435 | + print_endline ( sl (Findlib.ocaml_stdlib())) 436 | | Some "ldconf" -> 437 | - print_endline (Findlib.ocaml_ldconf()) 438 | + print_endline ( sl (Findlib.ocaml_ldconf())) 439 | | _ -> 440 | assert false 441 | ;; 442 | @@ -2481,7 +2601,7 @@ 443 | 444 | let ocamlcall pkg cmd = 445 | let dir = package_directory pkg in 446 | - let path = Filename.concat dir cmd in 447 | + let path = rewrite_cmd (Filename.concat dir cmd) in 448 | begin 449 | try Unix.access path [ Unix.X_OK ] 450 | with 451 | @@ -2647,6 +2767,10 @@ 452 | | Sys_error f -> 453 | prerr_endline ("ocamlfind: " ^ f); 454 | exit 2 455 | + | Unix.Unix_error (e, fn, f) -> 456 | + prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f 457 | + ^ ": " ^ Unix.error_message e); 458 | + exit 2 459 | | Findlib.No_such_package(pkg,info) -> 460 | prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ 461 | (if info <> "" then " - " ^ info else "")); 462 | --- ./src/findlib/Makefile 463 | +++ ./src/findlib/Makefile 464 | @@ -90,6 +90,7 @@ 465 | cat findlib_config.mlp | \ 466 | $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ 467 | $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ 468 | + $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ 469 | sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ 470 | -e 's;@SYSTEM@;$(SYSTEM);g' \ 471 | >findlib_config.ml 472 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -213,7 +213,7 @@ 4 | rm -f man/ocamlbuild.1 5 | 6 | man/options_man.byte: src/ocamlbuild_pack.cmo 7 | - $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte 8 | + $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte 9 | 10 | clean:: 11 | rm -f man/options_man.cm* 12 | --- ./src/command.ml 13 | +++ ./src/command.ml 14 | @@ -148,9 +148,10 @@ 15 | let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in 16 | let b = Buffer.create 256 in 17 | (* The best way to prevent bash from switching to its windows-style 18 | - * quote-handling is to prepend an empty string before the command name. *) 19 | + * quote-handling is to prepend an empty string before the command name. 20 | + * space seems to work, too - and the ouput is nicer *) 21 | if Sys.os_type = "Win32" then 22 | - Buffer.add_string b "''"; 23 | + Buffer.add_char b ' '; 24 | let first = ref true in 25 | let put_space () = 26 | if !first then 27 | @@ -260,7 +261,7 @@ 28 | 29 | let execute_many ?(quiet=false) ?(pretend=false) cmds = 30 | add_parallel_stat (List.length cmds); 31 | - let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in 32 | + let degraded = !*My_unix.is_degraded in 33 | let jobs = !jobs in 34 | if jobs < 0 then invalid_arg "jobs < 0"; 35 | let max_jobs = if jobs = 0 then None else Some jobs in 36 | --- ./src/findlib.ml 37 | +++ ./src/findlib.ml 38 | @@ -66,9 +66,6 @@ 39 | (fun command -> lexer & Lexing.from_string & run_and_read command) 40 | command 41 | 42 | -let run_and_read command = 43 | - Printf.ksprintf run_and_read command 44 | - 45 | let rec query name = 46 | try 47 | Hashtbl.find packages name 48 | @@ -135,7 +132,8 @@ 49 | with Not_found -> s 50 | 51 | let list () = 52 | - List.map before_space (split_nl & run_and_read "%s list" ocamlfind) 53 | + let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in 54 | + List.map before_space (split_nl & run_and_read cmd) 55 | 56 | (* The closure algorithm is easy because the dependencies are already closed 57 | and sorted for each package. We only have to make the union. We could also 58 | --- ./src/main.ml 59 | +++ ./src/main.ml 60 | @@ -162,6 +162,9 @@ 61 | Tags.mem "traverse" tags 62 | || List.exists (Pathname.is_prefix path_name) !Options.include_dirs 63 | || List.exists (Pathname.is_prefix path_name) target_dirs) 64 | + && ((* beware: !Options.build_dir is an absolute directory *) 65 | + Pathname.normalize !Options.build_dir 66 | + <> Pathname.normalize (Pathname.pwd/path_name)) 67 | end 68 | end 69 | end 70 | --- ./src/my_std.ml 71 | +++ ./src/my_std.ml 72 | @@ -271,13 +271,107 @@ 73 | try Array.iter (fun x -> if x = basename then raise Exit) a; false 74 | with Exit -> true 75 | 76 | +let command_plain = function 77 | +| [| |] -> 0 78 | +| margv -> 79 | + let rec waitpid a b = 80 | + match Unix.waitpid a b with 81 | + | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b 82 | + | x -> x 83 | + in 84 | + let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in 85 | + let pid', process_status = waitpid [] pid in 86 | + assert (pid = pid'); 87 | + match process_status with 88 | + | Unix.WEXITED n -> n 89 | + | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) 90 | + | Unix.WSTOPPED _ -> 127 91 | + 92 | +(* can't use Lexers because of circular dependency *) 93 | +let split_path_win str = 94 | + let rec aux pos = 95 | + try 96 | + let i = String.index_from str pos ';' in 97 | + let len = i - pos in 98 | + if len = 0 then 99 | + aux (succ i) 100 | + else 101 | + String.sub str pos (i - pos) :: aux (succ i) 102 | + with Not_found | Invalid_argument _ -> 103 | + let len = String.length str - pos in 104 | + if len = 0 then [] else [String.sub str pos len] 105 | + in 106 | + aux 0 107 | + 108 | +let windows_shell = lazy begin 109 | + let rec iter = function 110 | + | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] 111 | + | hd::tl -> 112 | + let dash = Filename.concat hd "dash.exe" in 113 | + if Sys.file_exists dash then [|dash|] else 114 | + let bash = Filename.concat hd "bash.exe" in 115 | + if Sys.file_exists bash = false then iter tl else 116 | + (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) 117 | + let sh = Filename.concat hd "sh.exe" in 118 | + if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] 119 | + in 120 | + split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter 121 | +end 122 | + 123 | +let prep_windows_cmd cmd = 124 | + (* workaround known ocaml bug, remove later *) 125 | + if String.contains cmd '\t' && String.contains cmd ' ' = false then 126 | + " " ^ cmd 127 | + else 128 | + cmd 129 | + 130 | +let run_with_shell = function 131 | +| "" -> 0 132 | +| cmd -> 133 | + let cmd = prep_windows_cmd cmd in 134 | + let shell = Lazy.force windows_shell in 135 | + let qlen = Filename.quote cmd |> String.length in 136 | + (* old versions of dash had problems with bs *) 137 | + try 138 | + if qlen < 7_900 then 139 | + command_plain (Array.append shell [| "-ec" ; cmd |]) 140 | + else begin 141 | + (* it can still work, if the called command is a cygwin tool *) 142 | + let ch_closed = ref false in 143 | + let file_deleted = ref false in 144 | + let fln,ch = 145 | + Filename.open_temp_file 146 | + ~mode:[Open_binary] 147 | + "ocamlbuildtmp" 148 | + ".sh" 149 | + in 150 | + try 151 | + let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in 152 | + output_string ch cmd; 153 | + ch_closed:= true; 154 | + close_out ch; 155 | + let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in 156 | + file_deleted:= true; 157 | + Sys.remove fln; 158 | + ret 159 | + with 160 | + | x -> 161 | + if !ch_closed = false then 162 | + close_out_noerr ch; 163 | + if !file_deleted = false then 164 | + (try Sys.remove fln with _ -> ()); 165 | + raise x 166 | + end 167 | + with 168 | + | (Unix.Unix_error _) as x -> 169 | + (* Sys.command doesn't raise an exception, so run_with_shell also won't 170 | + raise *) 171 | + Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; 172 | + 1 173 | + 174 | let sys_command = 175 | - match Sys.os_type with 176 | - | "Win32" -> fun cmd -> 177 | - if cmd = "" then 0 else 178 | - let cmd = "bash --norc -c " ^ Filename.quote cmd in 179 | - Sys.command cmd 180 | - | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd 181 | + if Sys.win32 then run_with_shell 182 | + else fun cmd -> if cmd = "" then 0 else Sys.command cmd 183 | 184 | (* FIXME warning fix and use Filename.concat *) 185 | let filename_concat x y = 186 | --- ./src/my_std.mli 187 | +++ ./src/my_std.mli 188 | @@ -69,3 +69,6 @@ 189 | 190 | val split_ocaml_version : (int * int * int * string) option 191 | (** (major, minor, patchlevel, rest) *) 192 | + 193 | +val windows_shell : string array Lazy.t 194 | +val prep_windows_cmd : string -> string 195 | --- ./src/ocamlbuild_executor.ml 196 | +++ ./src/ocamlbuild_executor.ml 197 | @@ -34,6 +34,8 @@ 198 | job_stdin : out_channel; 199 | job_stderr : in_channel; 200 | job_buffer : Buffer.t; 201 | + job_pid : int; 202 | + job_tmp_file: string option; 203 | mutable job_dying : bool; 204 | };; 205 | 206 | @@ -76,6 +78,61 @@ 207 | in 208 | loop 0 209 | ;; 210 | + 211 | +let open_process_full_win cmd env = 212 | + let (in_read, in_write) = Unix.pipe () in 213 | + let (out_read, out_write) = Unix.pipe () in 214 | + let (err_read, err_write) = Unix.pipe () in 215 | + Unix.set_close_on_exec in_read; 216 | + Unix.set_close_on_exec out_write; 217 | + Unix.set_close_on_exec err_read; 218 | + let inchan = Unix.in_channel_of_descr in_read in 219 | + let outchan = Unix.out_channel_of_descr out_write in 220 | + let errchan = Unix.in_channel_of_descr err_read in 221 | + let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in 222 | + let test_cmd = 223 | + String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ 224 | + "-ec " ^ 225 | + Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in 226 | + let argv,tmp_file = 227 | + if String.length test_cmd < 7_900 then 228 | + Array.append 229 | + shell 230 | + [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None 231 | + else 232 | + let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in 233 | + output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); 234 | + close_out ch; 235 | + let fln' = String.map (function '\\' -> '/' | c -> c) fln in 236 | + Array.append 237 | + shell 238 | + [| "-c" ; fln' |], Some fln in 239 | + let pid = 240 | + Unix.create_process_env argv.(0) argv env out_read in_write err_write in 241 | + Unix.close out_read; 242 | + Unix.close in_write; 243 | + Unix.close err_write; 244 | + (pid, inchan, outchan, errchan,tmp_file) 245 | + 246 | +let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = 247 | + let delete tmp_file = 248 | + match tmp_file with 249 | + | None -> () 250 | + | Some x -> try Sys.remove x with Sys_error _ -> () in 251 | + let tmp_file_deleted = ref false in 252 | + try 253 | + close_in inchan; 254 | + close_out outchan; 255 | + close_in errchan; 256 | + let res = snd(Unix.waitpid [] pid) in 257 | + tmp_file_deleted := true; 258 | + delete tmp_file; 259 | + res 260 | + with 261 | + | x when tmp_file <> None && !tmp_file_deleted = false -> 262 | + delete tmp_file; 263 | + raise x 264 | + 265 | (* ***) 266 | (*** execute *) 267 | (* XXX: Add test for non reentrancy *) 268 | @@ -130,10 +187,16 @@ 269 | (*** add_job *) 270 | let add_job cmd rest result id = 271 | (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) 272 | - let (stdout', stdin', stderr') = open_process_full cmd env in 273 | + let (pid,stdout', stdin', stderr', tmp_file) = 274 | + if Sys.win32 then open_process_full_win cmd env else 275 | + let a,b,c = open_process_full cmd env in 276 | + -1,a,b,c,None 277 | + in 278 | incr jobs_active; 279 | - set_nonblock (doi stdout'); 280 | - set_nonblock (doi stderr'); 281 | + if not Sys.win32 then ( 282 | + set_nonblock (doi stdout'); 283 | + set_nonblock (doi stderr'); 284 | + ); 285 | let job = 286 | { job_id = id; 287 | job_command = cmd; 288 | @@ -143,7 +206,9 @@ 289 | job_stdin = stdin'; 290 | job_stderr = stderr'; 291 | job_buffer = Buffer.create 1024; 292 | - job_dying = false } 293 | + job_dying = false; 294 | + job_tmp_file = tmp_file; 295 | + job_pid = pid } 296 | in 297 | outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); 298 | jobs := JS.add job !jobs; 299 | @@ -199,6 +264,7 @@ 300 | try 301 | read fd u 0 (Bytes.length u) 302 | with 303 | + | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 304 | | Unix.Unix_error(e,_,_) -> 305 | let msg = error_message e in 306 | display (fun oc -> fp oc 307 | @@ -241,14 +307,19 @@ 308 | decr jobs_active; 309 | 310 | (* PR#5371: we would get EAGAIN below otherwise *) 311 | - clear_nonblock (doi job.job_stdout); 312 | - clear_nonblock (doi job.job_stderr); 313 | - 314 | + if not Sys.win32 then ( 315 | + clear_nonblock (doi job.job_stdout); 316 | + clear_nonblock (doi job.job_stderr); 317 | + ); 318 | do_read ~loop:true (doi job.job_stdout) job; 319 | do_read ~loop:true (doi job.job_stderr) job; 320 | outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); 321 | jobs := JS.remove job !jobs; 322 | - let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in 323 | + let status = 324 | + if Sys.win32 then 325 | + close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) 326 | + else 327 | + close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in 328 | 329 | let shown = ref false in 330 | 331 | --- ./src/ocamlbuild_unix_plugin.ml 332 | +++ ./src/ocamlbuild_unix_plugin.ml 333 | @@ -48,12 +48,22 @@ 334 | end 335 | 336 | let run_and_open s kont = 337 | + let s_orig = s in 338 | + let s = 339 | + (* Be consistent! My_unix.run_and_open uses My_std.sys_command and 340 | + sys_command uses bash. *) 341 | + if Sys.win32 = false then s else 342 | + let l = match Lazy.force My_std.windows_shell |> Array.to_list with 343 | + | hd::tl -> (Filename.quote hd)::tl 344 | + | _ -> assert false in 345 | + "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" 346 | + in 347 | let ic = Unix.open_process_in s in 348 | let close () = 349 | match Unix.close_process_in ic with 350 | | Unix.WEXITED 0 -> () 351 | | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> 352 | - failwith (Printf.sprintf "Error while running: %s" s) in 353 | + failwith (Printf.sprintf "Error while running: %s" s_orig) in 354 | let res = try 355 | kont ic 356 | with e -> (close (); raise e) 357 | --- ./src/options.ml 358 | +++ ./src/options.ml 359 | @@ -174,11 +174,24 @@ 360 | build_dir := Filename.concat (Sys.getcwd ()) s 361 | else 362 | build_dir := s 363 | + 364 | +let slashify = 365 | + if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p 366 | + else fun p ->p 367 | + 368 | +let sb () = 369 | + match Sys.os_type with 370 | + | "Win32" -> 371 | + (try set_binary_mode_out stdout true with _ -> ()); 372 | + | _ -> () 373 | + 374 | + 375 | let spec = ref ( 376 | let print_version () = 377 | + sb (); 378 | Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK 379 | in 380 | - let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in 381 | + let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in 382 | Arg.align 383 | [ 384 | "-version", Unit print_version , " Display the version"; 385 | @@ -257,8 +270,8 @@ 386 | "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; 387 | "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; 388 | "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; 389 | - "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; 390 | - "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; 391 | + "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; 392 | + "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; 393 | "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; 394 | "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ 395 | used when building myocamlbuild.ml (only)"; 396 | --- ./src/pathname.ml 397 | +++ ./src/pathname.ml 398 | @@ -84,6 +84,26 @@ 399 | | x :: xs -> x :: normalize_list xs 400 | 401 | let normalize x = 402 | + let x = 403 | + if Sys.win32 = false then 404 | + x 405 | + else 406 | + let len = String.length x in 407 | + let b = Bytes.create len in 408 | + for i = 0 to pred len do 409 | + match x.[i] with 410 | + | '\\' -> Bytes.set b i '/' 411 | + | c -> Bytes.set b i c 412 | + done; 413 | + if len > 1 then ( 414 | + let c1 = Bytes.get b 0 in 415 | + let c2 = Bytes.get b 1 in 416 | + if c2 = ':' && c1 >= 'a' && c1 <= 'z' && 417 | + ( len = 2 || Bytes.get b 2 = '/') then 418 | + Bytes.set b 0 (Char.uppercase_ascii c1) 419 | + ); 420 | + Bytes.unsafe_to_string b 421 | + in 422 | if Glob.eval not_normal_form_re x then 423 | let root, paths = split x in 424 | join root (normalize_list paths) 425 | --- ./src/shell.ml 426 | +++ ./src/shell.ml 427 | @@ -24,12 +24,26 @@ 428 | | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) 429 | | _ -> false in 430 | loop 0 431 | + 432 | +let generic_quote quotequote s = 433 | + let l = String.length s in 434 | + let b = Buffer.create (l + 20) in 435 | + Buffer.add_char b '\''; 436 | + for i = 0 to l - 1 do 437 | + if s.[i] = '\'' 438 | + then Buffer.add_string b quotequote 439 | + else Buffer.add_char b s.[i] 440 | + done; 441 | + Buffer.add_char b '\''; 442 | + Buffer.contents b 443 | +let unix_quote = generic_quote "'\\''" 444 | + 445 | let quote_filename_if_needed s = 446 | if is_simple_filename s then s 447 | (* We should probably be using [Filename.unix_quote] except that function 448 | * isn't exported. Users on Windows will have to live with not being able to 449 | * install OCaml into c:\o'caml. Too bad. *) 450 | - else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s 451 | + else if Sys.os_type = "Win32" then unix_quote s 452 | else Filename.quote s 453 | let chdir dir = 454 | reset_filesys_cache (); 455 | @@ -37,7 +51,7 @@ 456 | let run args target = 457 | reset_readdir_cache (); 458 | let cmd = String.concat " " (List.map quote_filename_if_needed args) in 459 | - if !*My_unix.is_degraded || Sys.os_type = "Win32" then 460 | + if !*My_unix.is_degraded then 461 | begin 462 | Log.event cmd target Tags.empty; 463 | let st = sys_command cmd in 464 | -------------------------------------------------------------------------------- /esy.lock/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "checksum": "97c1706cf7408bbc3059bcfe0224f65d", 3 | "root": "bitty@link-dev:./package.json", 4 | "node": { 5 | "refmterr@3.2.2@d41d8cd9": { 6 | "id": "refmterr@3.2.2@d41d8cd9", 7 | "name": "refmterr", 8 | "version": "3.2.2", 9 | "source": { 10 | "type": "install", 11 | "source": [ 12 | "archive:https://registry.npmjs.org/refmterr/-/refmterr-3.2.2.tgz#sha1:b7d6c5df6a37633ec82d339dc609b1867e54e55e" 13 | ] 14 | }, 15 | "overrides": [], 16 | "dependencies": [ 17 | "ocaml@4.7.1004@d41d8cd9", "@reason-native/pastel@0.2.1@d41d8cd9", 18 | "@reason-native/console@0.1.0@d41d8cd9", 19 | "@opam/re@opam:1.9.0@fc2ceb05", "@opam/dune@opam:1.11.0@9ec4211e", 20 | "@opam/atdgen@opam:2.0.0@5d912e07", 21 | "@esy-ocaml/reason@3.5.0@d41d8cd9" 22 | ], 23 | "devDependencies": [] 24 | }, 25 | "pesy@github:esy/pesy#3d8a18385e07fa11daabe811814fae3f869ad355@d41d8cd9": { 26 | "id": 27 | "pesy@github:esy/pesy#3d8a18385e07fa11daabe811814fae3f869ad355@d41d8cd9", 28 | "name": "pesy", 29 | "version": "github:esy/pesy#3d8a18385e07fa11daabe811814fae3f869ad355", 30 | "source": { 31 | "type": "install", 32 | "source": [ 33 | "github:esy/pesy#3d8a18385e07fa11daabe811814fae3f869ad355" 34 | ] 35 | }, 36 | "overrides": [], 37 | "dependencies": [ 38 | "refmterr@3.2.2@d41d8cd9", "ocaml@4.7.1004@d41d8cd9", 39 | "dune@0.2.1@d41d8cd9", "@reason-native/pastel@0.2.1@d41d8cd9", 40 | "@opam/yojson@opam:1.7.0@7056d985", 41 | "@opam/sexplib@opam:v0.11.0@bf5282c9", 42 | "@opam/ppx_inline_test@opam:v0.11.0@efdb604c", 43 | "@opam/ppx_expect@opam:v0.11.1@2ddbc82f", 44 | "@opam/fpath@opam:0.7.2@45477b93", "@opam/dune@opam:1.11.0@9ec4211e", 45 | "@opam/cmdliner@opam:1.0.3@96d31520", 46 | "@opam/bos@opam:0.2.0@df49e63f", "@esy-ocaml/reason@3.5.0@d41d8cd9" 47 | ], 48 | "devDependencies": [] 49 | }, 50 | "ocaml@4.7.1004@d41d8cd9": { 51 | "id": "ocaml@4.7.1004@d41d8cd9", 52 | "name": "ocaml", 53 | "version": "4.7.1004", 54 | "source": { 55 | "type": "install", 56 | "source": [ 57 | "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.7.1004.tgz#sha1:731ca0ddb4d845d2ed2da8af50f70c5ba9092114" 58 | ] 59 | }, 60 | "overrides": [], 61 | "dependencies": [], 62 | "devDependencies": [] 63 | }, 64 | "dune@0.2.1@d41d8cd9": { 65 | "id": "dune@0.2.1@d41d8cd9", 66 | "name": "dune", 67 | "version": "0.2.1", 68 | "source": { 69 | "type": "install", 70 | "source": [ 71 | "archive:https://registry.npmjs.org/dune/-/dune-0.2.1.tgz#sha1:e70fc7b0802f16fcd7cd2b248926a3653eef07e2" 72 | ] 73 | }, 74 | "overrides": [], 75 | "dependencies": [], 76 | "devDependencies": [] 77 | }, 78 | "bitty@link-dev:./package.json": { 79 | "id": "bitty@link-dev:./package.json", 80 | "name": "bitty", 81 | "version": "link-dev:./package.json", 82 | "source": { 83 | "type": "link-dev", 84 | "path": ".", 85 | "manifest": "package.json" 86 | }, 87 | "overrides": [], 88 | "dependencies": [ 89 | "refmterr@3.2.2@d41d8cd9", 90 | "pesy@github:esy/pesy#3d8a18385e07fa11daabe811814fae3f869ad355@d41d8cd9", 91 | "ocaml@4.7.1004@d41d8cd9", "@reason-native/rely@3.1.0@d41d8cd9", 92 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/reason@3.5.0@d41d8cd9" 93 | ], 94 | "devDependencies": [ "@opam/merlin@opam:3.3.2@7a364181" ] 95 | }, 96 | "@reason-native/rely@3.1.0@d41d8cd9": { 97 | "id": "@reason-native/rely@3.1.0@d41d8cd9", 98 | "name": "@reason-native/rely", 99 | "version": "3.1.0", 100 | "source": { 101 | "type": "install", 102 | "source": [ 103 | "archive:https://registry.npmjs.org/@reason-native/rely/-/rely-3.1.0.tgz#sha1:4f59906dc7c18ba86c998e44d6463b6be866dfc6" 104 | ] 105 | }, 106 | "overrides": [], 107 | "dependencies": [ 108 | "refmterr@3.2.2@d41d8cd9", "ocaml@4.7.1004@d41d8cd9", 109 | "@reason-native/pastel@0.2.1@d41d8cd9", 110 | "@reason-native/file-context-printer@0.0.3@d41d8cd9", 111 | "@opam/re@opam:1.9.0@fc2ceb05", "@opam/junit@opam:2.0.1@8972ddca", 112 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/reason@3.5.0@d41d8cd9" 113 | ], 114 | "devDependencies": [] 115 | }, 116 | "@reason-native/pastel@0.2.1@d41d8cd9": { 117 | "id": "@reason-native/pastel@0.2.1@d41d8cd9", 118 | "name": "@reason-native/pastel", 119 | "version": "0.2.1", 120 | "source": { 121 | "type": "install", 122 | "source": [ 123 | "archive:https://registry.npmjs.org/@reason-native/pastel/-/pastel-0.2.1.tgz#sha1:c790b51e963ac94a0de141be0a8e4d077905978b" 124 | ] 125 | }, 126 | "overrides": [], 127 | "dependencies": [ 128 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 129 | "@esy-ocaml/reason@3.5.0@d41d8cd9" 130 | ], 131 | "devDependencies": [] 132 | }, 133 | "@reason-native/file-context-printer@0.0.3@d41d8cd9": { 134 | "id": "@reason-native/file-context-printer@0.0.3@d41d8cd9", 135 | "name": "@reason-native/file-context-printer", 136 | "version": "0.0.3", 137 | "source": { 138 | "type": "install", 139 | "source": [ 140 | "archive:https://registry.npmjs.org/@reason-native/file-context-printer/-/file-context-printer-0.0.3.tgz#sha1:b92eec7b10107ccb27528f9eea9bb51252bca491" 141 | ] 142 | }, 143 | "overrides": [], 144 | "dependencies": [ 145 | "ocaml@4.7.1004@d41d8cd9", "@reason-native/pastel@0.2.1@d41d8cd9", 146 | "@opam/re@opam:1.9.0@fc2ceb05", "@opam/dune@opam:1.11.0@9ec4211e", 147 | "@esy-ocaml/reason@3.5.0@d41d8cd9" 148 | ], 149 | "devDependencies": [] 150 | }, 151 | "@reason-native/console@0.1.0@d41d8cd9": { 152 | "id": "@reason-native/console@0.1.0@d41d8cd9", 153 | "name": "@reason-native/console", 154 | "version": "0.1.0", 155 | "source": { 156 | "type": "install", 157 | "source": [ 158 | "archive:https://registry.npmjs.org/@reason-native/console/-/console-0.1.0.tgz#sha1:3b56f0e9e1be8464329793df29020aa90e71c22c" 159 | ] 160 | }, 161 | "overrides": [], 162 | "dependencies": [ 163 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 164 | "@esy-ocaml/reason@3.5.0@d41d8cd9" 165 | ], 166 | "devDependencies": [] 167 | }, 168 | "@opam/yojson@opam:1.7.0@7056d985": { 169 | "id": "@opam/yojson@opam:1.7.0@7056d985", 170 | "name": "@opam/yojson", 171 | "version": "opam:1.7.0", 172 | "source": { 173 | "type": "install", 174 | "source": [ 175 | "archive:https://opam.ocaml.org/cache/md5/b8/b89d39ca3f8c532abe5f547ad3b8f84d#md5:b89d39ca3f8c532abe5f547ad3b8f84d", 176 | "archive:https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz#md5:b89d39ca3f8c532abe5f547ad3b8f84d" 177 | ], 178 | "opam": { 179 | "name": "yojson", 180 | "version": "1.7.0", 181 | "path": "esy.lock/opam/yojson.1.7.0" 182 | } 183 | }, 184 | "overrides": [], 185 | "dependencies": [ 186 | "ocaml@4.7.1004@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed", 187 | "@opam/dune@opam:1.11.0@9ec4211e", "@opam/cppo@opam:1.6.6@f4f83858", 188 | "@opam/biniou@opam:1.2.0@c8516f18", 189 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 190 | ], 191 | "devDependencies": [ 192 | "ocaml@4.7.1004@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed", 193 | "@opam/dune@opam:1.11.0@9ec4211e", "@opam/biniou@opam:1.2.0@c8516f18" 194 | ] 195 | }, 196 | "@opam/variantslib@opam:v0.11.0@1fe3c19b": { 197 | "id": "@opam/variantslib@opam:v0.11.0@1fe3c19b", 198 | "name": "@opam/variantslib", 199 | "version": "opam:v0.11.0", 200 | "source": { 201 | "type": "install", 202 | "source": [ 203 | "archive:https://opam.ocaml.org/cache/md5/30/3031317975df165cc3154578680eddfb#md5:3031317975df165cc3154578680eddfb", 204 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/variantslib-v0.11.0.tar.gz#md5:3031317975df165cc3154578680eddfb" 205 | ], 206 | "opam": { 207 | "name": "variantslib", 208 | "version": "v0.11.0", 209 | "path": "esy.lock/opam/variantslib.v0.11.0" 210 | } 211 | }, 212 | "overrides": [], 213 | "dependencies": [ 214 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 215 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 216 | "@opam/jbuilder@opam:transition@58bdfe0a", 217 | "@opam/base@opam:v0.11.1@6ff71eb3", 218 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 219 | ], 220 | "devDependencies": [ 221 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 222 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 223 | "@opam/base@opam:v0.11.1@6ff71eb3" 224 | ] 225 | }, 226 | "@opam/uutf@opam:1.0.2@4440868f": { 227 | "id": "@opam/uutf@opam:1.0.2@4440868f", 228 | "name": "@opam/uutf", 229 | "version": "opam:1.0.2", 230 | "source": { 231 | "type": "install", 232 | "source": [ 233 | "archive:https://opam.ocaml.org/cache/md5/a7/a7c542405a39630c689a82bd7ef2292c#md5:a7c542405a39630c689a82bd7ef2292c", 234 | "archive:http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz#md5:a7c542405a39630c689a82bd7ef2292c" 235 | ], 236 | "opam": { 237 | "name": "uutf", 238 | "version": "1.0.2", 239 | "path": "esy.lock/opam/uutf.1.0.2" 240 | } 241 | }, 242 | "overrides": [], 243 | "dependencies": [ 244 | "ocaml@4.7.1004@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", 245 | "@opam/topkg@opam:1.0.1@a42c631e", 246 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 247 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 248 | "@opam/cmdliner@opam:1.0.3@96d31520", 249 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 250 | ], 251 | "devDependencies": [ 252 | "ocaml@4.7.1004@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea" 253 | ] 254 | }, 255 | "@opam/uchar@opam:0.0.2@c8218eea": { 256 | "id": "@opam/uchar@opam:0.0.2@c8218eea", 257 | "name": "@opam/uchar", 258 | "version": "opam:0.0.2", 259 | "source": { 260 | "type": "install", 261 | "source": [ 262 | "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", 263 | "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" 264 | ], 265 | "opam": { 266 | "name": "uchar", 267 | "version": "0.0.2", 268 | "path": "esy.lock/opam/uchar.0.0.2" 269 | } 270 | }, 271 | "overrides": [], 272 | "dependencies": [ 273 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@427a2331", 274 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 275 | ], 276 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 277 | }, 278 | "@opam/tyxml@opam:4.3.0@9dca4c30": { 279 | "id": "@opam/tyxml@opam:4.3.0@9dca4c30", 280 | "name": "@opam/tyxml", 281 | "version": "opam:4.3.0", 282 | "source": { 283 | "type": "install", 284 | "source": [ 285 | "archive:https://opam.ocaml.org/cache/md5/fd/fd834a567f813bf447cab5f4c3a723e2#md5:fd834a567f813bf447cab5f4c3a723e2", 286 | "archive:https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz#md5:fd834a567f813bf447cab5f4c3a723e2" 287 | ], 288 | "opam": { 289 | "name": "tyxml", 290 | "version": "4.3.0", 291 | "path": "esy.lock/opam/tyxml.4.3.0" 292 | } 293 | }, 294 | "overrides": [], 295 | "dependencies": [ 296 | "ocaml@4.7.1004@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", 297 | "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@fc2ceb05", 298 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/substs@0.0.1@d41d8cd9" 299 | ], 300 | "devDependencies": [ 301 | "ocaml@4.7.1004@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", 302 | "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@fc2ceb05", 303 | "@opam/dune@opam:1.11.0@9ec4211e" 304 | ] 305 | }, 306 | "@opam/topkg@opam:1.0.1@a42c631e": { 307 | "id": "@opam/topkg@opam:1.0.1@a42c631e", 308 | "name": "@opam/topkg", 309 | "version": "opam:1.0.1", 310 | "source": { 311 | "type": "install", 312 | "source": [ 313 | "archive:https://opam.ocaml.org/cache/md5/16/16b90e066d8972a5ef59655e7c28b3e9#md5:16b90e066d8972a5ef59655e7c28b3e9", 314 | "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz#md5:16b90e066d8972a5ef59655e7c28b3e9" 315 | ], 316 | "opam": { 317 | "name": "topkg", 318 | "version": "1.0.1", 319 | "path": "esy.lock/opam/topkg.1.0.1" 320 | } 321 | }, 322 | "overrides": [], 323 | "dependencies": [ 324 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@c65fe06a", 325 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 326 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 327 | ], 328 | "devDependencies": [ 329 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@427a2331" 330 | ] 331 | }, 332 | "@opam/stdlib-shims@opam:0.1.0@d957c903": { 333 | "id": "@opam/stdlib-shims@opam:0.1.0@d957c903", 334 | "name": "@opam/stdlib-shims", 335 | "version": "opam:0.1.0", 336 | "source": { 337 | "type": "install", 338 | "source": [ 339 | "archive:https://opam.ocaml.org/cache/md5/12/12b5704eed70c6bff5ac39a16db1425d#md5:12b5704eed70c6bff5ac39a16db1425d", 340 | "archive:https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz#md5:12b5704eed70c6bff5ac39a16db1425d" 341 | ], 342 | "opam": { 343 | "name": "stdlib-shims", 344 | "version": "0.1.0", 345 | "path": "esy.lock/opam/stdlib-shims.0.1.0" 346 | } 347 | }, 348 | "overrides": [], 349 | "dependencies": [ 350 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 351 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 352 | ], 353 | "devDependencies": [ 354 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e" 355 | ] 356 | }, 357 | "@opam/stdio@opam:v0.11.0@3b11cb88": { 358 | "id": "@opam/stdio@opam:v0.11.0@3b11cb88", 359 | "name": "@opam/stdio", 360 | "version": "opam:v0.11.0", 361 | "source": { 362 | "type": "install", 363 | "source": [ 364 | "archive:https://opam.ocaml.org/cache/md5/2d/2db42ee38c91b3ff7126c2634c407b99#md5:2db42ee38c91b3ff7126c2634c407b99", 365 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/stdio-v0.11.0.tar.gz#md5:2db42ee38c91b3ff7126c2634c407b99" 366 | ], 367 | "opam": { 368 | "name": "stdio", 369 | "version": "v0.11.0", 370 | "path": "esy.lock/opam/stdio.v0.11.0" 371 | } 372 | }, 373 | "overrides": [], 374 | "dependencies": [ 375 | "ocaml@4.7.1004@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 376 | "@opam/base@opam:v0.11.1@6ff71eb3", 377 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 378 | ], 379 | "devDependencies": [ 380 | "ocaml@4.7.1004@d41d8cd9", "@opam/base@opam:v0.11.1@6ff71eb3" 381 | ] 382 | }, 383 | "@opam/sexplib0@opam:v0.11.0@9df6bcd1": { 384 | "id": "@opam/sexplib0@opam:v0.11.0@9df6bcd1", 385 | "name": "@opam/sexplib0", 386 | "version": "opam:v0.11.0", 387 | "source": { 388 | "type": "install", 389 | "source": [ 390 | "archive:https://opam.ocaml.org/cache/md5/1c/1c14ba30b471e49f1b23fea5ff99ea6b#md5:1c14ba30b471e49f1b23fea5ff99ea6b", 391 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib0-v0.11.0.tar.gz#md5:1c14ba30b471e49f1b23fea5ff99ea6b" 392 | ], 393 | "opam": { 394 | "name": "sexplib0", 395 | "version": "v0.11.0", 396 | "path": "esy.lock/opam/sexplib0.v0.11.0" 397 | } 398 | }, 399 | "overrides": [], 400 | "dependencies": [ 401 | "ocaml@4.7.1004@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 402 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 403 | ], 404 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 405 | }, 406 | "@opam/sexplib@opam:v0.11.0@bf5282c9": { 407 | "id": "@opam/sexplib@opam:v0.11.0@bf5282c9", 408 | "name": "@opam/sexplib", 409 | "version": "opam:v0.11.0", 410 | "source": { 411 | "type": "install", 412 | "source": [ 413 | "archive:https://opam.ocaml.org/cache/md5/1d/1d53d945914b6b9a380dc8923f19e9ae#md5:1d53d945914b6b9a380dc8923f19e9ae", 414 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib-v0.11.0.tar.gz#md5:1d53d945914b6b9a380dc8923f19e9ae" 415 | ], 416 | "opam": { 417 | "name": "sexplib", 418 | "version": "v0.11.0", 419 | "path": "esy.lock/opam/sexplib.v0.11.0" 420 | } 421 | }, 422 | "overrides": [], 423 | "dependencies": [ 424 | "ocaml@4.7.1004@d41d8cd9", "@opam/sexplib0@opam:v0.11.0@9df6bcd1", 425 | "@opam/parsexp@opam:v0.11.0@7febd99d", "@opam/num@opam:1.2@3595a888", 426 | "@opam/jbuilder@opam:transition@58bdfe0a", 427 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 428 | ], 429 | "devDependencies": [ 430 | "ocaml@4.7.1004@d41d8cd9", "@opam/sexplib0@opam:v0.11.0@9df6bcd1", 431 | "@opam/parsexp@opam:v0.11.0@7febd99d", "@opam/num@opam:1.2@3595a888" 432 | ] 433 | }, 434 | "@opam/seq@opam:base@d8d7de1d": { 435 | "id": "@opam/seq@opam:base@d8d7de1d", 436 | "name": "@opam/seq", 437 | "version": "opam:base", 438 | "source": { 439 | "type": "install", 440 | "source": [ "no-source:" ], 441 | "opam": { 442 | "name": "seq", 443 | "version": "base", 444 | "path": "esy.lock/opam/seq.base" 445 | } 446 | }, 447 | "overrides": [], 448 | "dependencies": [ 449 | "ocaml@4.7.1004@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 450 | ], 451 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 452 | }, 453 | "@opam/rresult@opam:0.6.0@4b185e72": { 454 | "id": "@opam/rresult@opam:0.6.0@4b185e72", 455 | "name": "@opam/rresult", 456 | "version": "opam:0.6.0", 457 | "source": { 458 | "type": "install", 459 | "source": [ 460 | "archive:https://opam.ocaml.org/cache/md5/ab/aba88cffa29081714468c2c7bcdf7fb1#md5:aba88cffa29081714468c2c7bcdf7fb1", 461 | "archive:http://erratique.ch/software/rresult/releases/rresult-0.6.0.tbz#md5:aba88cffa29081714468c2c7bcdf7fb1" 462 | ], 463 | "opam": { 464 | "name": "rresult", 465 | "version": "0.6.0", 466 | "path": "esy.lock/opam/rresult.0.6.0" 467 | } 468 | }, 469 | "overrides": [], 470 | "dependencies": [ 471 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 472 | "@opam/result@opam:1.4@6fb665c3", 473 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 474 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 475 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 476 | ], 477 | "devDependencies": [ 478 | "ocaml@4.7.1004@d41d8cd9", "@opam/result@opam:1.4@6fb665c3" 479 | ] 480 | }, 481 | "@opam/result@opam:1.4@6fb665c3": { 482 | "id": "@opam/result@opam:1.4@6fb665c3", 483 | "name": "@opam/result", 484 | "version": "opam:1.4", 485 | "source": { 486 | "type": "install", 487 | "source": [ 488 | "archive:https://opam.ocaml.org/cache/md5/d3/d3162dbc501a2af65c8c71e0866541da#md5:d3162dbc501a2af65c8c71e0866541da", 489 | "archive:https://github.com/janestreet/result/archive/1.4.tar.gz#md5:d3162dbc501a2af65c8c71e0866541da" 490 | ], 491 | "opam": { 492 | "name": "result", 493 | "version": "1.4", 494 | "path": "esy.lock/opam/result.1.4" 495 | } 496 | }, 497 | "overrides": [], 498 | "dependencies": [ 499 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 500 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 501 | ], 502 | "devDependencies": [ 503 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e" 504 | ] 505 | }, 506 | "@opam/re@opam:1.9.0@fc2ceb05": { 507 | "id": "@opam/re@opam:1.9.0@fc2ceb05", 508 | "name": "@opam/re", 509 | "version": "opam:1.9.0", 510 | "source": { 511 | "type": "install", 512 | "source": [ 513 | "archive:https://opam.ocaml.org/cache/md5/bd/bddaed4f386a22cace7850c9c7dac296#md5:bddaed4f386a22cace7850c9c7dac296", 514 | "archive:https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz#md5:bddaed4f386a22cace7850c9c7dac296" 515 | ], 516 | "opam": { 517 | "name": "re", 518 | "version": "1.9.0", 519 | "path": "esy.lock/opam/re.1.9.0" 520 | } 521 | }, 522 | "overrides": [], 523 | "dependencies": [ 524 | "ocaml@4.7.1004@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", 525 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/substs@0.0.1@d41d8cd9" 526 | ], 527 | "devDependencies": [ 528 | "ocaml@4.7.1004@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", 529 | "@opam/dune@opam:1.11.0@9ec4211e" 530 | ] 531 | }, 532 | "@opam/ptime@opam:0.8.5@0051d642": { 533 | "id": "@opam/ptime@opam:0.8.5@0051d642", 534 | "name": "@opam/ptime", 535 | "version": "opam:0.8.5", 536 | "source": { 537 | "type": "install", 538 | "source": [ 539 | "archive:https://opam.ocaml.org/cache/md5/4d/4d48055d623ecf2db792439b3e96a520#md5:4d48055d623ecf2db792439b3e96a520", 540 | "archive:https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz#md5:4d48055d623ecf2db792439b3e96a520" 541 | ], 542 | "opam": { 543 | "name": "ptime", 544 | "version": "0.8.5", 545 | "path": "esy.lock/opam/ptime.0.8.5" 546 | } 547 | }, 548 | "overrides": [], 549 | "dependencies": [ 550 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 551 | "@opam/result@opam:1.4@6fb665c3", 552 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 553 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 554 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 555 | ], 556 | "devDependencies": [ 557 | "ocaml@4.7.1004@d41d8cd9", "@opam/result@opam:1.4@6fb665c3" 558 | ] 559 | }, 560 | "@opam/ppxlib@opam:0.8.1@67aec471": { 561 | "id": "@opam/ppxlib@opam:0.8.1@67aec471", 562 | "name": "@opam/ppxlib", 563 | "version": "opam:0.8.1", 564 | "source": { 565 | "type": "install", 566 | "source": [ 567 | "archive:https://opam.ocaml.org/cache/sha256/a5/a5cb79ee83bba80304b65bc47f2985382bef89668b1b46f9ffb3734c2f2f7521#sha256:a5cb79ee83bba80304b65bc47f2985382bef89668b1b46f9ffb3734c2f2f7521", 568 | "archive:https://github.com/ocaml-ppx/ppxlib/releases/download/0.8.1/ppxlib-0.8.1.tbz#sha256:a5cb79ee83bba80304b65bc47f2985382bef89668b1b46f9ffb3734c2f2f7521" 569 | ], 570 | "opam": { 571 | "name": "ppxlib", 572 | "version": "0.8.1", 573 | "path": "esy.lock/opam/ppxlib.0.8.1" 574 | } 575 | }, 576 | "overrides": [], 577 | "dependencies": [ 578 | "ocaml@4.7.1004@d41d8cd9", "@opam/stdio@opam:v0.11.0@3b11cb88", 579 | "@opam/ppx_derivers@opam:1.2.1@aee9c3db", 580 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 581 | "@opam/ocaml-compiler-libs@opam:v0.12.0@692d9405", 582 | "@opam/dune@opam:1.11.0@9ec4211e", 583 | "@opam/base@opam:v0.11.1@6ff71eb3", 584 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 585 | ], 586 | "devDependencies": [ 587 | "ocaml@4.7.1004@d41d8cd9", "@opam/stdio@opam:v0.11.0@3b11cb88", 588 | "@opam/ppx_derivers@opam:1.2.1@aee9c3db", 589 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 590 | "@opam/ocaml-compiler-libs@opam:v0.12.0@692d9405", 591 | "@opam/dune@opam:1.11.0@9ec4211e", "@opam/base@opam:v0.11.1@6ff71eb3" 592 | ] 593 | }, 594 | "@opam/ppx_variants_conv@opam:v0.11.1@1994e4eb": { 595 | "id": "@opam/ppx_variants_conv@opam:v0.11.1@1994e4eb", 596 | "name": "@opam/ppx_variants_conv", 597 | "version": "opam:v0.11.1", 598 | "source": { 599 | "type": "install", 600 | "source": [ 601 | "archive:https://opam.ocaml.org/cache/md5/14/146b49b84315b7d67c1ca758fcbf2fb2#md5:146b49b84315b7d67c1ca758fcbf2fb2", 602 | "archive:https://github.com/janestreet/ppx_variants_conv/archive/v0.11.1.tar.gz#md5:146b49b84315b7d67c1ca758fcbf2fb2" 603 | ], 604 | "opam": { 605 | "name": "ppx_variants_conv", 606 | "version": "v0.11.1", 607 | "path": "esy.lock/opam/ppx_variants_conv.v0.11.1" 608 | } 609 | }, 610 | "overrides": [], 611 | "dependencies": [ 612 | "ocaml@4.7.1004@d41d8cd9", "@opam/variantslib@opam:v0.11.0@1fe3c19b", 613 | "@opam/ppxlib@opam:0.8.1@67aec471", 614 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 615 | "@opam/jbuilder@opam:transition@58bdfe0a", 616 | "@opam/base@opam:v0.11.1@6ff71eb3", 617 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 618 | ], 619 | "devDependencies": [ 620 | "ocaml@4.7.1004@d41d8cd9", "@opam/variantslib@opam:v0.11.0@1fe3c19b", 621 | "@opam/ppxlib@opam:0.8.1@67aec471", 622 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 623 | "@opam/base@opam:v0.11.1@6ff71eb3" 624 | ] 625 | }, 626 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e": { 627 | "id": "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 628 | "name": "@opam/ppx_sexp_conv", 629 | "version": "opam:v0.11.2", 630 | "source": { 631 | "type": "install", 632 | "source": [ 633 | "archive:https://opam.ocaml.org/cache/md5/77/77d3b30b3d9c5810552bde2027656b8d#md5:77d3b30b3d9c5810552bde2027656b8d", 634 | "archive:https://github.com/janestreet/ppx_sexp_conv/archive/v0.11.2.tar.gz#md5:77d3b30b3d9c5810552bde2027656b8d" 635 | ], 636 | "opam": { 637 | "name": "ppx_sexp_conv", 638 | "version": "v0.11.2", 639 | "path": "esy.lock/opam/ppx_sexp_conv.v0.11.2" 640 | } 641 | }, 642 | "overrides": [], 643 | "dependencies": [ 644 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 645 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 646 | "@opam/jbuilder@opam:transition@58bdfe0a", 647 | "@opam/base@opam:v0.11.1@6ff71eb3", 648 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 649 | ], 650 | "devDependencies": [ 651 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 652 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 653 | "@opam/base@opam:v0.11.1@6ff71eb3" 654 | ] 655 | }, 656 | "@opam/ppx_inline_test@opam:v0.11.0@efdb604c": { 657 | "id": "@opam/ppx_inline_test@opam:v0.11.0@efdb604c", 658 | "name": "@opam/ppx_inline_test", 659 | "version": "opam:v0.11.0", 660 | "source": { 661 | "type": "install", 662 | "source": [ 663 | "archive:https://opam.ocaml.org/cache/md5/1f/1f2e014332373638696d8893d87f4682#md5:1f2e014332373638696d8893d87f4682", 664 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_inline_test-v0.11.0.tar.gz#md5:1f2e014332373638696d8893d87f4682" 665 | ], 666 | "opam": { 667 | "name": "ppx_inline_test", 668 | "version": "v0.11.0", 669 | "path": "esy.lock/opam/ppx_inline_test.v0.11.0" 670 | } 671 | }, 672 | "overrides": [], 673 | "dependencies": [ 674 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 675 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 676 | "@opam/jbuilder@opam:transition@58bdfe0a", 677 | "@opam/base@opam:v0.11.1@6ff71eb3", 678 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 679 | ], 680 | "devDependencies": [ 681 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 682 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 683 | "@opam/base@opam:v0.11.1@6ff71eb3" 684 | ] 685 | }, 686 | "@opam/ppx_here@opam:v0.11.0@bb70738c": { 687 | "id": "@opam/ppx_here@opam:v0.11.0@bb70738c", 688 | "name": "@opam/ppx_here", 689 | "version": "opam:v0.11.0", 690 | "source": { 691 | "type": "install", 692 | "source": [ 693 | "archive:https://opam.ocaml.org/cache/md5/47/479c9cd5f6ef90c2df9f01eab9d6c91d#md5:479c9cd5f6ef90c2df9f01eab9d6c91d", 694 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_here-v0.11.0.tar.gz#md5:479c9cd5f6ef90c2df9f01eab9d6c91d" 695 | ], 696 | "opam": { 697 | "name": "ppx_here", 698 | "version": "v0.11.0", 699 | "path": "esy.lock/opam/ppx_here.v0.11.0" 700 | } 701 | }, 702 | "overrides": [], 703 | "dependencies": [ 704 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 705 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 706 | "@opam/jbuilder@opam:transition@58bdfe0a", 707 | "@opam/base@opam:v0.11.1@6ff71eb3", 708 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 709 | ], 710 | "devDependencies": [ 711 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 712 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 713 | "@opam/base@opam:v0.11.1@6ff71eb3" 714 | ] 715 | }, 716 | "@opam/ppx_fields_conv@opam:v0.11.0@61f44627": { 717 | "id": "@opam/ppx_fields_conv@opam:v0.11.0@61f44627", 718 | "name": "@opam/ppx_fields_conv", 719 | "version": "opam:v0.11.0", 720 | "source": { 721 | "type": "install", 722 | "source": [ 723 | "archive:https://opam.ocaml.org/cache/md5/72/72f207c23d65f7f3eaabcc92e33ccdab#md5:72f207c23d65f7f3eaabcc92e33ccdab", 724 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_fields_conv-v0.11.0.tar.gz#md5:72f207c23d65f7f3eaabcc92e33ccdab" 725 | ], 726 | "opam": { 727 | "name": "ppx_fields_conv", 728 | "version": "v0.11.0", 729 | "path": "esy.lock/opam/ppx_fields_conv.v0.11.0" 730 | } 731 | }, 732 | "overrides": [], 733 | "dependencies": [ 734 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 735 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 736 | "@opam/jbuilder@opam:transition@58bdfe0a", 737 | "@opam/fieldslib@opam:v0.11.0@1f5a1a0a", 738 | "@opam/base@opam:v0.11.1@6ff71eb3", 739 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 740 | ], 741 | "devDependencies": [ 742 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 743 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 744 | "@opam/fieldslib@opam:v0.11.0@1f5a1a0a", 745 | "@opam/base@opam:v0.11.1@6ff71eb3" 746 | ] 747 | }, 748 | "@opam/ppx_expect@opam:v0.11.1@2ddbc82f": { 749 | "id": "@opam/ppx_expect@opam:v0.11.1@2ddbc82f", 750 | "name": "@opam/ppx_expect", 751 | "version": "opam:v0.11.1", 752 | "source": { 753 | "type": "install", 754 | "source": [ 755 | "archive:https://opam.ocaml.org/cache/md5/ee/ee5e03094674de295aadc10efe6bb7b7#md5:ee5e03094674de295aadc10efe6bb7b7", 756 | "archive:https://github.com/janestreet/ppx_expect/releases/download/v0.11.1/ppx_expect-v0.11.1.tbz#md5:ee5e03094674de295aadc10efe6bb7b7" 757 | ], 758 | "opam": { 759 | "name": "ppx_expect", 760 | "version": "v0.11.1", 761 | "path": "esy.lock/opam/ppx_expect.v0.11.1" 762 | } 763 | }, 764 | "overrides": [], 765 | "dependencies": [ 766 | "ocaml@4.7.1004@d41d8cd9", "@opam/stdio@opam:v0.11.0@3b11cb88", 767 | "@opam/re@opam:1.9.0@fc2ceb05", "@opam/ppxlib@opam:0.8.1@67aec471", 768 | "@opam/ppx_variants_conv@opam:v0.11.1@1994e4eb", 769 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 770 | "@opam/ppx_inline_test@opam:v0.11.0@efdb604c", 771 | "@opam/ppx_here@opam:v0.11.0@bb70738c", 772 | "@opam/ppx_fields_conv@opam:v0.11.0@61f44627", 773 | "@opam/ppx_custom_printf@opam:v0.11.0@5617e854", 774 | "@opam/ppx_compare@opam:v0.11.1@e35644c8", 775 | "@opam/ppx_assert@opam:v0.11.0@9492a20b", 776 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 777 | "@opam/jbuilder@opam:transition@58bdfe0a", 778 | "@opam/base@opam:v0.11.1@6ff71eb3", 779 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 780 | ], 781 | "devDependencies": [ 782 | "ocaml@4.7.1004@d41d8cd9", "@opam/stdio@opam:v0.11.0@3b11cb88", 783 | "@opam/re@opam:1.9.0@fc2ceb05", "@opam/ppxlib@opam:0.8.1@67aec471", 784 | "@opam/ppx_variants_conv@opam:v0.11.1@1994e4eb", 785 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 786 | "@opam/ppx_inline_test@opam:v0.11.0@efdb604c", 787 | "@opam/ppx_here@opam:v0.11.0@bb70738c", 788 | "@opam/ppx_fields_conv@opam:v0.11.0@61f44627", 789 | "@opam/ppx_custom_printf@opam:v0.11.0@5617e854", 790 | "@opam/ppx_compare@opam:v0.11.1@e35644c8", 791 | "@opam/ppx_assert@opam:v0.11.0@9492a20b", 792 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 793 | "@opam/base@opam:v0.11.1@6ff71eb3" 794 | ] 795 | }, 796 | "@opam/ppx_derivers@opam:1.2.1@aee9c3db": { 797 | "id": "@opam/ppx_derivers@opam:1.2.1@aee9c3db", 798 | "name": "@opam/ppx_derivers", 799 | "version": "opam:1.2.1", 800 | "source": { 801 | "type": "install", 802 | "source": [ 803 | "archive:https://opam.ocaml.org/cache/md5/5d/5dc2bf130c1db3c731fe0fffc5648b41#md5:5dc2bf130c1db3c731fe0fffc5648b41", 804 | "archive:https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz#md5:5dc2bf130c1db3c731fe0fffc5648b41" 805 | ], 806 | "opam": { 807 | "name": "ppx_derivers", 808 | "version": "1.2.1", 809 | "path": "esy.lock/opam/ppx_derivers.1.2.1" 810 | } 811 | }, 812 | "overrides": [], 813 | "dependencies": [ 814 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 815 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 816 | ], 817 | "devDependencies": [ 818 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e" 819 | ] 820 | }, 821 | "@opam/ppx_custom_printf@opam:v0.11.0@5617e854": { 822 | "id": "@opam/ppx_custom_printf@opam:v0.11.0@5617e854", 823 | "name": "@opam/ppx_custom_printf", 824 | "version": "opam:v0.11.0", 825 | "source": { 826 | "type": "install", 827 | "source": [ 828 | "archive:https://opam.ocaml.org/cache/md5/b7/b7cf49585319576dd77f6ddd6db95b21#md5:b7cf49585319576dd77f6ddd6db95b21", 829 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_custom_printf-v0.11.0.tar.gz#md5:b7cf49585319576dd77f6ddd6db95b21" 830 | ], 831 | "opam": { 832 | "name": "ppx_custom_printf", 833 | "version": "v0.11.0", 834 | "path": "esy.lock/opam/ppx_custom_printf.v0.11.0" 835 | } 836 | }, 837 | "overrides": [], 838 | "dependencies": [ 839 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 840 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 841 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 842 | "@opam/jbuilder@opam:transition@58bdfe0a", 843 | "@opam/base@opam:v0.11.1@6ff71eb3", 844 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 845 | ], 846 | "devDependencies": [ 847 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 848 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 849 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 850 | "@opam/base@opam:v0.11.1@6ff71eb3" 851 | ] 852 | }, 853 | "@opam/ppx_compare@opam:v0.11.1@e35644c8": { 854 | "id": "@opam/ppx_compare@opam:v0.11.1@e35644c8", 855 | "name": "@opam/ppx_compare", 856 | "version": "opam:v0.11.1", 857 | "source": { 858 | "type": "install", 859 | "source": [ 860 | "archive:https://opam.ocaml.org/cache/md5/3d/3df1a90fc90d180b1f96cdd30e64145d#md5:3df1a90fc90d180b1f96cdd30e64145d", 861 | "archive:https://github.com/janestreet/ppx_compare/archive/v0.11.1.tar.gz#md5:3df1a90fc90d180b1f96cdd30e64145d" 862 | ], 863 | "opam": { 864 | "name": "ppx_compare", 865 | "version": "v0.11.1", 866 | "path": "esy.lock/opam/ppx_compare.v0.11.1" 867 | } 868 | }, 869 | "overrides": [], 870 | "dependencies": [ 871 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 872 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 873 | "@opam/jbuilder@opam:transition@58bdfe0a", 874 | "@opam/base@opam:v0.11.1@6ff71eb3", 875 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 876 | ], 877 | "devDependencies": [ 878 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 879 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 880 | "@opam/base@opam:v0.11.1@6ff71eb3" 881 | ] 882 | }, 883 | "@opam/ppx_assert@opam:v0.11.0@9492a20b": { 884 | "id": "@opam/ppx_assert@opam:v0.11.0@9492a20b", 885 | "name": "@opam/ppx_assert", 886 | "version": "opam:v0.11.0", 887 | "source": { 888 | "type": "install", 889 | "source": [ 890 | "archive:https://opam.ocaml.org/cache/md5/0b/0b3aed19391e9a23217a5abf022dfe10#md5:0b3aed19391e9a23217a5abf022dfe10", 891 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_assert-v0.11.0.tar.gz#md5:0b3aed19391e9a23217a5abf022dfe10" 892 | ], 893 | "opam": { 894 | "name": "ppx_assert", 895 | "version": "v0.11.0", 896 | "path": "esy.lock/opam/ppx_assert.v0.11.0" 897 | } 898 | }, 899 | "overrides": [], 900 | "dependencies": [ 901 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 902 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 903 | "@opam/ppx_here@opam:v0.11.0@bb70738c", 904 | "@opam/ppx_compare@opam:v0.11.1@e35644c8", 905 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 906 | "@opam/jbuilder@opam:transition@58bdfe0a", 907 | "@opam/base@opam:v0.11.1@6ff71eb3", 908 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 909 | ], 910 | "devDependencies": [ 911 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 912 | "@opam/ppx_sexp_conv@opam:v0.11.2@5b83886e", 913 | "@opam/ppx_here@opam:v0.11.0@bb70738c", 914 | "@opam/ppx_compare@opam:v0.11.1@e35644c8", 915 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 916 | "@opam/base@opam:v0.11.1@6ff71eb3" 917 | ] 918 | }, 919 | "@opam/parsexp@opam:v0.11.0@7febd99d": { 920 | "id": "@opam/parsexp@opam:v0.11.0@7febd99d", 921 | "name": "@opam/parsexp", 922 | "version": "opam:v0.11.0", 923 | "source": { 924 | "type": "install", 925 | "source": [ 926 | "archive:https://opam.ocaml.org/cache/md5/81/816fce8d14b71a379296577c803bdbca#md5:816fce8d14b71a379296577c803bdbca", 927 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/parsexp-v0.11.0.tar.gz#md5:816fce8d14b71a379296577c803bdbca" 928 | ], 929 | "opam": { 930 | "name": "parsexp", 931 | "version": "v0.11.0", 932 | "path": "esy.lock/opam/parsexp.v0.11.0" 933 | } 934 | }, 935 | "overrides": [], 936 | "dependencies": [ 937 | "ocaml@4.7.1004@d41d8cd9", "@opam/sexplib0@opam:v0.11.0@9df6bcd1", 938 | "@opam/jbuilder@opam:transition@58bdfe0a", 939 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 940 | ], 941 | "devDependencies": [ 942 | "ocaml@4.7.1004@d41d8cd9", "@opam/sexplib0@opam:v0.11.0@9df6bcd1" 943 | ] 944 | }, 945 | "@opam/ocamlfind@opam:1.8.1@c65fe06a": { 946 | "id": "@opam/ocamlfind@opam:1.8.1@c65fe06a", 947 | "name": "@opam/ocamlfind", 948 | "version": "opam:1.8.1", 949 | "source": { 950 | "type": "install", 951 | "source": [ 952 | "archive:https://opam.ocaml.org/cache/md5/18/18ca650982c15536616dea0e422cbd8c#md5:18ca650982c15536616dea0e422cbd8c", 953 | "archive:http://download2.camlcity.org/download/findlib-1.8.1.tar.gz#md5:18ca650982c15536616dea0e422cbd8c", 954 | "archive:http://download.camlcity.org/download/findlib-1.8.1.tar.gz#md5:18ca650982c15536616dea0e422cbd8c" 955 | ], 956 | "opam": { 957 | "name": "ocamlfind", 958 | "version": "1.8.1", 959 | "path": "esy.lock/opam/ocamlfind.1.8.1" 960 | } 961 | }, 962 | "overrides": [ 963 | { 964 | "opamoverride": 965 | "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override" 966 | } 967 | ], 968 | "dependencies": [ 969 | "ocaml@4.7.1004@d41d8cd9", "@opam/conf-m4@opam:1@da6f4f44", 970 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 971 | ], 972 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 973 | }, 974 | "@opam/ocamlbuild@opam:0.14.0@427a2331": { 975 | "id": "@opam/ocamlbuild@opam:0.14.0@427a2331", 976 | "name": "@opam/ocamlbuild", 977 | "version": "opam:0.14.0", 978 | "source": { 979 | "type": "install", 980 | "source": [ 981 | "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", 982 | "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" 983 | ], 984 | "opam": { 985 | "name": "ocamlbuild", 986 | "version": "0.14.0", 987 | "path": "esy.lock/opam/ocamlbuild.0.14.0" 988 | } 989 | }, 990 | "overrides": [ 991 | { 992 | "opamoverride": 993 | "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" 994 | } 995 | ], 996 | "dependencies": [ 997 | "ocaml@4.7.1004@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 998 | ], 999 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 1000 | }, 1001 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334": { 1002 | "id": "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 1003 | "name": "@opam/ocaml-migrate-parsetree", 1004 | "version": "opam:1.4.0", 1005 | "source": { 1006 | "type": "install", 1007 | "source": [ 1008 | "archive:https://opam.ocaml.org/cache/sha256/23/231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8#sha256:231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8", 1009 | "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.4.0/ocaml-migrate-parsetree-v1.4.0.tbz#sha256:231fbdc205187b3ee266b535d9cfe44b599067b2f6e97883c782ea7bb577d3b8" 1010 | ], 1011 | "opam": { 1012 | "name": "ocaml-migrate-parsetree", 1013 | "version": "1.4.0", 1014 | "path": "esy.lock/opam/ocaml-migrate-parsetree.1.4.0" 1015 | } 1016 | }, 1017 | "overrides": [], 1018 | "dependencies": [ 1019 | "ocaml@4.7.1004@d41d8cd9", "@opam/result@opam:1.4@6fb665c3", 1020 | "@opam/ppx_derivers@opam:1.2.1@aee9c3db", 1021 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1022 | ], 1023 | "devDependencies": [ 1024 | "ocaml@4.7.1004@d41d8cd9", "@opam/result@opam:1.4@6fb665c3", 1025 | "@opam/ppx_derivers@opam:1.2.1@aee9c3db", 1026 | "@opam/dune@opam:1.11.0@9ec4211e" 1027 | ] 1028 | }, 1029 | "@opam/ocaml-compiler-libs@opam:v0.12.0@692d9405": { 1030 | "id": "@opam/ocaml-compiler-libs@opam:v0.12.0@692d9405", 1031 | "name": "@opam/ocaml-compiler-libs", 1032 | "version": "opam:v0.12.0", 1033 | "source": { 1034 | "type": "install", 1035 | "source": [ 1036 | "archive:https://opam.ocaml.org/cache/md5/33/3351925ed99be59829641d2044fc80c0#md5:3351925ed99be59829641d2044fc80c0", 1037 | "archive:https://github.com/janestreet/ocaml-compiler-libs/archive/v0.12.0.tar.gz#md5:3351925ed99be59829641d2044fc80c0" 1038 | ], 1039 | "opam": { 1040 | "name": "ocaml-compiler-libs", 1041 | "version": "v0.12.0", 1042 | "path": "esy.lock/opam/ocaml-compiler-libs.v0.12.0" 1043 | } 1044 | }, 1045 | "overrides": [], 1046 | "dependencies": [ 1047 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 1048 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1049 | ], 1050 | "devDependencies": [ 1051 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e" 1052 | ] 1053 | }, 1054 | "@opam/num@opam:1.2@3595a888": { 1055 | "id": "@opam/num@opam:1.2@3595a888", 1056 | "name": "@opam/num", 1057 | "version": "opam:1.2", 1058 | "source": { 1059 | "type": "install", 1060 | "source": [ 1061 | "archive:https://opam.ocaml.org/cache/md5/4f/4f43ce8e44db68692bee50f2f8ef911c#md5:4f43ce8e44db68692bee50f2f8ef911c", 1062 | "archive:https://github.com/ocaml/num/archive/v1.2.tar.gz#md5:4f43ce8e44db68692bee50f2f8ef911c" 1063 | ], 1064 | "opam": { 1065 | "name": "num", 1066 | "version": "1.2", 1067 | "path": "esy.lock/opam/num.1.2" 1068 | } 1069 | }, 1070 | "overrides": [ 1071 | { 1072 | "opamoverride": 1073 | "esy.lock/overrides/opam__s__num_opam__c__1.2_opam_override" 1074 | } 1075 | ], 1076 | "dependencies": [ 1077 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1078 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1079 | ], 1080 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 1081 | }, 1082 | "@opam/merlin-extend@opam:0.4@64c45329": { 1083 | "id": "@opam/merlin-extend@opam:0.4@64c45329", 1084 | "name": "@opam/merlin-extend", 1085 | "version": "opam:0.4", 1086 | "source": { 1087 | "type": "install", 1088 | "source": [ 1089 | "archive:https://opam.ocaml.org/cache/md5/06/0663a58f2c45fad71615fbf0f6dd2e51#md5:0663a58f2c45fad71615fbf0f6dd2e51", 1090 | "archive:https://github.com/let-def/merlin-extend/archive/v0.4.tar.gz#md5:0663a58f2c45fad71615fbf0f6dd2e51" 1091 | ], 1092 | "opam": { 1093 | "name": "merlin-extend", 1094 | "version": "0.4", 1095 | "path": "esy.lock/opam/merlin-extend.0.4" 1096 | } 1097 | }, 1098 | "overrides": [], 1099 | "dependencies": [ 1100 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 1101 | "@opam/cppo@opam:1.6.6@f4f83858", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1102 | ], 1103 | "devDependencies": [ 1104 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e" 1105 | ] 1106 | }, 1107 | "@opam/merlin@opam:3.3.2@7a364181": { 1108 | "id": "@opam/merlin@opam:3.3.2@7a364181", 1109 | "name": "@opam/merlin", 1110 | "version": "opam:3.3.2", 1111 | "source": { 1112 | "type": "install", 1113 | "source": [ 1114 | "archive:https://opam.ocaml.org/cache/sha256/1d/1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801#sha256:1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801", 1115 | "archive:https://github.com/ocaml/merlin/releases/download/v3.3.2/merlin-v3.3.2.tbz#sha256:1d1c71e663b1e58acf19069cebd1e8d18f7dbe513c6065347d162cdd2c2de801" 1116 | ], 1117 | "opam": { 1118 | "name": "merlin", 1119 | "version": "3.3.2", 1120 | "path": "esy.lock/opam/merlin.3.3.2" 1121 | } 1122 | }, 1123 | "overrides": [], 1124 | "dependencies": [ 1125 | "ocaml@4.7.1004@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 1126 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1127 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1128 | ], 1129 | "devDependencies": [ 1130 | "ocaml@4.7.1004@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 1131 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1132 | "@opam/dune@opam:1.11.0@9ec4211e" 1133 | ] 1134 | }, 1135 | "@opam/menhir@opam:20190626@bbeb8953": { 1136 | "id": "@opam/menhir@opam:20190626@bbeb8953", 1137 | "name": "@opam/menhir", 1138 | "version": "opam:20190626", 1139 | "source": { 1140 | "type": "install", 1141 | "source": [ 1142 | "archive:https://opam.ocaml.org/cache/md5/78/783961f8d124449a1a335cc8e50f013f#md5:783961f8d124449a1a335cc8e50f013f", 1143 | "archive:https://gitlab.inria.fr/fpottier/menhir/repository/20190626/archive.tar.gz#md5:783961f8d124449a1a335cc8e50f013f" 1144 | ], 1145 | "opam": { 1146 | "name": "menhir", 1147 | "version": "20190626", 1148 | "path": "esy.lock/opam/menhir.20190626" 1149 | } 1150 | }, 1151 | "overrides": [], 1152 | "dependencies": [ 1153 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1154 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 1155 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1156 | ], 1157 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 1158 | }, 1159 | "@opam/logs@opam:0.6.3@80c08d15": { 1160 | "id": "@opam/logs@opam:0.6.3@80c08d15", 1161 | "name": "@opam/logs", 1162 | "version": "opam:0.6.3", 1163 | "source": { 1164 | "type": "install", 1165 | "source": [ 1166 | "archive:https://opam.ocaml.org/cache/md5/37/370e4c802588f73d0777c59bc414b57b#md5:370e4c802588f73d0777c59bc414b57b", 1167 | "archive:https://erratique.ch/software/logs/releases/logs-0.6.3.tbz#md5:370e4c802588f73d0777c59bc414b57b" 1168 | ], 1169 | "opam": { 1170 | "name": "logs", 1171 | "version": "0.6.3", 1172 | "path": "esy.lock/opam/logs.0.6.3" 1173 | } 1174 | }, 1175 | "overrides": [], 1176 | "dependencies": [ 1177 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 1178 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1179 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 1180 | "@opam/fmt@opam:0.8.7@297a9515", 1181 | "@opam/cmdliner@opam:1.0.3@96d31520", 1182 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1183 | ], 1184 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 1185 | }, 1186 | "@opam/junit@opam:2.0.1@8972ddca": { 1187 | "id": "@opam/junit@opam:2.0.1@8972ddca", 1188 | "name": "@opam/junit", 1189 | "version": "opam:2.0.1", 1190 | "source": { 1191 | "type": "install", 1192 | "source": [ 1193 | "archive:https://opam.ocaml.org/cache/md5/40/40224fb3d4f5e47dc5ff4605587d383b#md5:40224fb3d4f5e47dc5ff4605587d383b", 1194 | "archive:https://github.com/Khady/ocaml-junit/releases/download/2.0.1/junit-2.0.1.tbz#md5:40224fb3d4f5e47dc5ff4605587d383b" 1195 | ], 1196 | "opam": { 1197 | "name": "junit", 1198 | "version": "2.0.1", 1199 | "path": "esy.lock/opam/junit.2.0.1" 1200 | } 1201 | }, 1202 | "overrides": [], 1203 | "dependencies": [ 1204 | "@opam/tyxml@opam:4.3.0@9dca4c30", "@opam/ptime@opam:0.8.5@0051d642", 1205 | "@opam/dune@opam:1.11.0@9ec4211e", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1206 | ], 1207 | "devDependencies": [ 1208 | "@opam/tyxml@opam:4.3.0@9dca4c30", "@opam/ptime@opam:0.8.5@0051d642", 1209 | "@opam/dune@opam:1.11.0@9ec4211e" 1210 | ] 1211 | }, 1212 | "@opam/jbuilder@opam:transition@58bdfe0a": { 1213 | "id": "@opam/jbuilder@opam:transition@58bdfe0a", 1214 | "name": "@opam/jbuilder", 1215 | "version": "opam:transition", 1216 | "source": { 1217 | "type": "install", 1218 | "source": [ "no-source:" ], 1219 | "opam": { 1220 | "name": "jbuilder", 1221 | "version": "transition", 1222 | "path": "esy.lock/opam/jbuilder.transition" 1223 | } 1224 | }, 1225 | "overrides": [], 1226 | "dependencies": [ 1227 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 1228 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1229 | ], 1230 | "devDependencies": [ 1231 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e" 1232 | ] 1233 | }, 1234 | "@opam/fpath@opam:0.7.2@45477b93": { 1235 | "id": "@opam/fpath@opam:0.7.2@45477b93", 1236 | "name": "@opam/fpath", 1237 | "version": "opam:0.7.2", 1238 | "source": { 1239 | "type": "install", 1240 | "source": [ 1241 | "archive:https://opam.ocaml.org/cache/md5/52/52c7ecb0bf180088336f3c645875fa41#md5:52c7ecb0bf180088336f3c645875fa41", 1242 | "archive:http://erratique.ch/software/fpath/releases/fpath-0.7.2.tbz#md5:52c7ecb0bf180088336f3c645875fa41" 1243 | ], 1244 | "opam": { 1245 | "name": "fpath", 1246 | "version": "0.7.2", 1247 | "path": "esy.lock/opam/fpath.0.7.2" 1248 | } 1249 | }, 1250 | "overrides": [], 1251 | "dependencies": [ 1252 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 1253 | "@opam/result@opam:1.4@6fb665c3", 1254 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1255 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 1256 | "@opam/astring@opam:0.8.3@4e5e17d5", 1257 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1258 | ], 1259 | "devDependencies": [ 1260 | "ocaml@4.7.1004@d41d8cd9", "@opam/result@opam:1.4@6fb665c3", 1261 | "@opam/astring@opam:0.8.3@4e5e17d5" 1262 | ] 1263 | }, 1264 | "@opam/fmt@opam:0.8.7@297a9515": { 1265 | "id": "@opam/fmt@opam:0.8.7@297a9515", 1266 | "name": "@opam/fmt", 1267 | "version": "opam:0.8.7", 1268 | "source": { 1269 | "type": "install", 1270 | "source": [ 1271 | "archive:https://opam.ocaml.org/cache/md5/c3/c317aa285fe13732cd1f27674f974357#md5:c317aa285fe13732cd1f27674f974357", 1272 | "archive:https://erratique.ch/software/fmt/releases/fmt-0.8.7.tbz#md5:c317aa285fe13732cd1f27674f974357" 1273 | ], 1274 | "opam": { 1275 | "name": "fmt", 1276 | "version": "0.8.7", 1277 | "path": "esy.lock/opam/fmt.0.8.7" 1278 | } 1279 | }, 1280 | "overrides": [], 1281 | "dependencies": [ 1282 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 1283 | "@opam/stdlib-shims@opam:0.1.0@d957c903", 1284 | "@opam/seq@opam:base@d8d7de1d", 1285 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1286 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 1287 | "@opam/cmdliner@opam:1.0.3@96d31520", 1288 | "@opam/base-unix@opam:base@87d0b2eb", 1289 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1290 | ], 1291 | "devDependencies": [ 1292 | "ocaml@4.7.1004@d41d8cd9", "@opam/stdlib-shims@opam:0.1.0@d957c903", 1293 | "@opam/seq@opam:base@d8d7de1d" 1294 | ] 1295 | }, 1296 | "@opam/fieldslib@opam:v0.11.0@1f5a1a0a": { 1297 | "id": "@opam/fieldslib@opam:v0.11.0@1f5a1a0a", 1298 | "name": "@opam/fieldslib", 1299 | "version": "opam:v0.11.0", 1300 | "source": { 1301 | "type": "install", 1302 | "source": [ 1303 | "archive:https://opam.ocaml.org/cache/md5/a4/a42506b460a1dc47fb65a37d875211ae#md5:a42506b460a1dc47fb65a37d875211ae", 1304 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.11/files/fieldslib-v0.11.0.tar.gz#md5:a42506b460a1dc47fb65a37d875211ae" 1305 | ], 1306 | "opam": { 1307 | "name": "fieldslib", 1308 | "version": "v0.11.0", 1309 | "path": "esy.lock/opam/fieldslib.v0.11.0" 1310 | } 1311 | }, 1312 | "overrides": [], 1313 | "dependencies": [ 1314 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 1315 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 1316 | "@opam/jbuilder@opam:transition@58bdfe0a", 1317 | "@opam/base@opam:v0.11.1@6ff71eb3", 1318 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1319 | ], 1320 | "devDependencies": [ 1321 | "ocaml@4.7.1004@d41d8cd9", "@opam/ppxlib@opam:0.8.1@67aec471", 1322 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 1323 | "@opam/base@opam:v0.11.1@6ff71eb3" 1324 | ] 1325 | }, 1326 | "@opam/easy-format@opam:1.3.1@9abfd4ed": { 1327 | "id": "@opam/easy-format@opam:1.3.1@9abfd4ed", 1328 | "name": "@opam/easy-format", 1329 | "version": "opam:1.3.1", 1330 | "source": { 1331 | "type": "install", 1332 | "source": [ 1333 | "archive:https://opam.ocaml.org/cache/md5/4e/4e163700fb88fdcd6b8976c3a216c8ea#md5:4e163700fb88fdcd6b8976c3a216c8ea", 1334 | "archive:https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz#md5:4e163700fb88fdcd6b8976c3a216c8ea" 1335 | ], 1336 | "opam": { 1337 | "name": "easy-format", 1338 | "version": "1.3.1", 1339 | "path": "esy.lock/opam/easy-format.1.3.1" 1340 | } 1341 | }, 1342 | "overrides": [], 1343 | "dependencies": [ 1344 | "ocaml@4.7.1004@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 1345 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1346 | ], 1347 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 1348 | }, 1349 | "@opam/dune@opam:1.11.0@9ec4211e": { 1350 | "id": "@opam/dune@opam:1.11.0@9ec4211e", 1351 | "name": "@opam/dune", 1352 | "version": "opam:1.11.0", 1353 | "source": { 1354 | "type": "install", 1355 | "source": [ 1356 | "archive:https://opam.ocaml.org/cache/sha256/bc/bcfdf55d981d7e621a696cac34a3af26340d41c045404617df6f5dbfd5165486#sha256:bcfdf55d981d7e621a696cac34a3af26340d41c045404617df6f5dbfd5165486", 1357 | "archive:https://github.com/ocaml/dune/releases/download/1.11.0/dune-build-info-1.11.0.tbz#sha256:bcfdf55d981d7e621a696cac34a3af26340d41c045404617df6f5dbfd5165486" 1358 | ], 1359 | "opam": { 1360 | "name": "dune", 1361 | "version": "1.11.0", 1362 | "path": "esy.lock/opam/dune.1.11.0" 1363 | } 1364 | }, 1365 | "overrides": [ 1366 | { 1367 | "opamoverride": 1368 | "esy.lock/overrides/opam__s__dune_opam__c__1.11.0_opam_override" 1369 | } 1370 | ], 1371 | "dependencies": [ 1372 | "ocaml@4.7.1004@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", 1373 | "@opam/base-threads@opam:base@36803084", 1374 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1375 | ], 1376 | "devDependencies": [ 1377 | "ocaml@4.7.1004@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", 1378 | "@opam/base-threads@opam:base@36803084" 1379 | ] 1380 | }, 1381 | "@opam/cppo@opam:1.6.6@f4f83858": { 1382 | "id": "@opam/cppo@opam:1.6.6@f4f83858", 1383 | "name": "@opam/cppo", 1384 | "version": "opam:1.6.6", 1385 | "source": { 1386 | "type": "install", 1387 | "source": [ 1388 | "archive:https://opam.ocaml.org/cache/sha256/e7/e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0", 1389 | "archive:https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz#sha256:e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" 1390 | ], 1391 | "opam": { 1392 | "name": "cppo", 1393 | "version": "1.6.6", 1394 | "path": "esy.lock/opam/cppo.1.6.6" 1395 | } 1396 | }, 1397 | "overrides": [], 1398 | "dependencies": [ 1399 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 1400 | "@opam/base-unix@opam:base@87d0b2eb", 1401 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1402 | ], 1403 | "devDependencies": [ 1404 | "ocaml@4.7.1004@d41d8cd9", "@opam/dune@opam:1.11.0@9ec4211e", 1405 | "@opam/base-unix@opam:base@87d0b2eb" 1406 | ] 1407 | }, 1408 | "@opam/conf-which@opam:1@576f0c6d": { 1409 | "id": "@opam/conf-which@opam:1@576f0c6d", 1410 | "name": "@opam/conf-which", 1411 | "version": "opam:1", 1412 | "source": { 1413 | "type": "install", 1414 | "source": [ "no-source:" ], 1415 | "opam": { 1416 | "name": "conf-which", 1417 | "version": "1", 1418 | "path": "esy.lock/opam/conf-which.1" 1419 | } 1420 | }, 1421 | "overrides": [], 1422 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1423 | "devDependencies": [] 1424 | }, 1425 | "@opam/conf-m4@opam:1@da6f4f44": { 1426 | "id": "@opam/conf-m4@opam:1@da6f4f44", 1427 | "name": "@opam/conf-m4", 1428 | "version": "opam:1", 1429 | "source": { 1430 | "type": "install", 1431 | "source": [ "no-source:" ], 1432 | "opam": { 1433 | "name": "conf-m4", 1434 | "version": "1", 1435 | "path": "esy.lock/opam/conf-m4.1" 1436 | } 1437 | }, 1438 | "overrides": [], 1439 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1440 | "devDependencies": [] 1441 | }, 1442 | "@opam/cmdliner@opam:1.0.3@96d31520": { 1443 | "id": "@opam/cmdliner@opam:1.0.3@96d31520", 1444 | "name": "@opam/cmdliner", 1445 | "version": "opam:1.0.3", 1446 | "source": { 1447 | "type": "install", 1448 | "source": [ 1449 | "archive:https://opam.ocaml.org/cache/md5/36/3674ad01d4445424105d33818c78fba8#md5:3674ad01d4445424105d33818c78fba8", 1450 | "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.3.tbz#md5:3674ad01d4445424105d33818c78fba8" 1451 | ], 1452 | "opam": { 1453 | "name": "cmdliner", 1454 | "version": "1.0.3", 1455 | "path": "esy.lock/opam/cmdliner.1.0.3" 1456 | } 1457 | }, 1458 | "overrides": [], 1459 | "dependencies": [ 1460 | "ocaml@4.7.1004@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1461 | ], 1462 | "devDependencies": [ "ocaml@4.7.1004@d41d8cd9" ] 1463 | }, 1464 | "@opam/bos@opam:0.2.0@df49e63f": { 1465 | "id": "@opam/bos@opam:0.2.0@df49e63f", 1466 | "name": "@opam/bos", 1467 | "version": "opam:0.2.0", 1468 | "source": { 1469 | "type": "install", 1470 | "source": [ 1471 | "archive:https://opam.ocaml.org/cache/md5/ae/aeae7447567db459c856ee41b5a66fd2#md5:aeae7447567db459c856ee41b5a66fd2", 1472 | "archive:http://erratique.ch/software/bos/releases/bos-0.2.0.tbz#md5:aeae7447567db459c856ee41b5a66fd2" 1473 | ], 1474 | "opam": { 1475 | "name": "bos", 1476 | "version": "0.2.0", 1477 | "path": "esy.lock/opam/bos.0.2.0" 1478 | } 1479 | }, 1480 | "overrides": [], 1481 | "dependencies": [ 1482 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 1483 | "@opam/rresult@opam:0.6.0@4b185e72", 1484 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1485 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 1486 | "@opam/logs@opam:0.6.3@80c08d15", "@opam/fpath@opam:0.7.2@45477b93", 1487 | "@opam/fmt@opam:0.8.7@297a9515", 1488 | "@opam/base-unix@opam:base@87d0b2eb", 1489 | "@opam/astring@opam:0.8.3@4e5e17d5", 1490 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1491 | ], 1492 | "devDependencies": [ 1493 | "ocaml@4.7.1004@d41d8cd9", "@opam/rresult@opam:0.6.0@4b185e72", 1494 | "@opam/logs@opam:0.6.3@80c08d15", "@opam/fpath@opam:0.7.2@45477b93", 1495 | "@opam/fmt@opam:0.8.7@297a9515", 1496 | "@opam/base-unix@opam:base@87d0b2eb", 1497 | "@opam/astring@opam:0.8.3@4e5e17d5" 1498 | ] 1499 | }, 1500 | "@opam/biniou@opam:1.2.0@c8516f18": { 1501 | "id": "@opam/biniou@opam:1.2.0@c8516f18", 1502 | "name": "@opam/biniou", 1503 | "version": "opam:1.2.0", 1504 | "source": { 1505 | "type": "install", 1506 | "source": [ 1507 | "archive:https://opam.ocaml.org/cache/md5/f3/f3e92358e832ed94eaf23ce622ccc2f9#md5:f3e92358e832ed94eaf23ce622ccc2f9", 1508 | "archive:https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz#md5:f3e92358e832ed94eaf23ce622ccc2f9" 1509 | ], 1510 | "opam": { 1511 | "name": "biniou", 1512 | "version": "1.2.0", 1513 | "path": "esy.lock/opam/biniou.1.2.0" 1514 | } 1515 | }, 1516 | "overrides": [], 1517 | "dependencies": [ 1518 | "ocaml@4.7.1004@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 1519 | "@opam/easy-format@opam:1.3.1@9abfd4ed", 1520 | "@opam/conf-which@opam:1@576f0c6d", 1521 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1522 | ], 1523 | "devDependencies": [ 1524 | "ocaml@4.7.1004@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed" 1525 | ] 1526 | }, 1527 | "@opam/base-unix@opam:base@87d0b2eb": { 1528 | "id": "@opam/base-unix@opam:base@87d0b2eb", 1529 | "name": "@opam/base-unix", 1530 | "version": "opam:base", 1531 | "source": { 1532 | "type": "install", 1533 | "source": [ "no-source:" ], 1534 | "opam": { 1535 | "name": "base-unix", 1536 | "version": "base", 1537 | "path": "esy.lock/opam/base-unix.base" 1538 | } 1539 | }, 1540 | "overrides": [], 1541 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1542 | "devDependencies": [] 1543 | }, 1544 | "@opam/base-threads@opam:base@36803084": { 1545 | "id": "@opam/base-threads@opam:base@36803084", 1546 | "name": "@opam/base-threads", 1547 | "version": "opam:base", 1548 | "source": { 1549 | "type": "install", 1550 | "source": [ "no-source:" ], 1551 | "opam": { 1552 | "name": "base-threads", 1553 | "version": "base", 1554 | "path": "esy.lock/opam/base-threads.base" 1555 | } 1556 | }, 1557 | "overrides": [], 1558 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1559 | "devDependencies": [] 1560 | }, 1561 | "@opam/base-bytes@opam:base@19d0c2ff": { 1562 | "id": "@opam/base-bytes@opam:base@19d0c2ff", 1563 | "name": "@opam/base-bytes", 1564 | "version": "opam:base", 1565 | "source": { 1566 | "type": "install", 1567 | "source": [ "no-source:" ], 1568 | "opam": { 1569 | "name": "base-bytes", 1570 | "version": "base", 1571 | "path": "esy.lock/opam/base-bytes.base" 1572 | } 1573 | }, 1574 | "overrides": [], 1575 | "dependencies": [ 1576 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1577 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1578 | ], 1579 | "devDependencies": [ 1580 | "ocaml@4.7.1004@d41d8cd9", "@opam/ocamlfind@opam:1.8.1@c65fe06a" 1581 | ] 1582 | }, 1583 | "@opam/base@opam:v0.11.1@6ff71eb3": { 1584 | "id": "@opam/base@opam:v0.11.1@6ff71eb3", 1585 | "name": "@opam/base", 1586 | "version": "opam:v0.11.1", 1587 | "source": { 1588 | "type": "install", 1589 | "source": [ 1590 | "archive:https://opam.ocaml.org/cache/md5/e7/e7e7dc5db3f1fea19d74a31bbd4ac621#md5:e7e7dc5db3f1fea19d74a31bbd4ac621", 1591 | "archive:https://github.com/janestreet/base/releases/download/v0.11.1/base-v0.11.1.tbz#md5:e7e7dc5db3f1fea19d74a31bbd4ac621" 1592 | ], 1593 | "opam": { 1594 | "name": "base", 1595 | "version": "v0.11.1", 1596 | "path": "esy.lock/opam/base.v0.11.1" 1597 | } 1598 | }, 1599 | "overrides": [ 1600 | { 1601 | "opamoverride": 1602 | "esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override" 1603 | } 1604 | ], 1605 | "dependencies": [ 1606 | "ocaml@4.7.1004@d41d8cd9", "@opam/sexplib0@opam:v0.11.0@9df6bcd1", 1607 | "@opam/jbuilder@opam:transition@58bdfe0a", 1608 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1609 | ], 1610 | "devDependencies": [ 1611 | "ocaml@4.7.1004@d41d8cd9", "@opam/sexplib0@opam:v0.11.0@9df6bcd1" 1612 | ] 1613 | }, 1614 | "@opam/atdgen-runtime@opam:2.0.0@8a75c3bb": { 1615 | "id": "@opam/atdgen-runtime@opam:2.0.0@8a75c3bb", 1616 | "name": "@opam/atdgen-runtime", 1617 | "version": "opam:2.0.0", 1618 | "source": { 1619 | "type": "install", 1620 | "source": [ 1621 | "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", 1622 | "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" 1623 | ], 1624 | "opam": { 1625 | "name": "atdgen-runtime", 1626 | "version": "2.0.0", 1627 | "path": "esy.lock/opam/atdgen-runtime.2.0.0" 1628 | } 1629 | }, 1630 | "overrides": [], 1631 | "dependencies": [ 1632 | "ocaml@4.7.1004@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 1633 | "@opam/jbuilder@opam:transition@58bdfe0a", 1634 | "@opam/biniou@opam:1.2.0@c8516f18", 1635 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1636 | ], 1637 | "devDependencies": [ 1638 | "ocaml@4.7.1004@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 1639 | "@opam/biniou@opam:1.2.0@c8516f18" 1640 | ] 1641 | }, 1642 | "@opam/atdgen@opam:2.0.0@5d912e07": { 1643 | "id": "@opam/atdgen@opam:2.0.0@5d912e07", 1644 | "name": "@opam/atdgen", 1645 | "version": "opam:2.0.0", 1646 | "source": { 1647 | "type": "install", 1648 | "source": [ 1649 | "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", 1650 | "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" 1651 | ], 1652 | "opam": { 1653 | "name": "atdgen", 1654 | "version": "2.0.0", 1655 | "path": "esy.lock/opam/atdgen.2.0.0" 1656 | } 1657 | }, 1658 | "overrides": [], 1659 | "dependencies": [ 1660 | "ocaml@4.7.1004@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 1661 | "@opam/jbuilder@opam:transition@58bdfe0a", 1662 | "@opam/biniou@opam:1.2.0@c8516f18", 1663 | "@opam/atdgen-runtime@opam:2.0.0@8a75c3bb", 1664 | "@opam/atd@opam:2.0.0@087614b7", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1665 | ], 1666 | "devDependencies": [ 1667 | "ocaml@4.7.1004@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 1668 | "@opam/biniou@opam:1.2.0@c8516f18", 1669 | "@opam/atdgen-runtime@opam:2.0.0@8a75c3bb", 1670 | "@opam/atd@opam:2.0.0@087614b7" 1671 | ] 1672 | }, 1673 | "@opam/atd@opam:2.0.0@087614b7": { 1674 | "id": "@opam/atd@opam:2.0.0@087614b7", 1675 | "name": "@opam/atd", 1676 | "version": "opam:2.0.0", 1677 | "source": { 1678 | "type": "install", 1679 | "source": [ 1680 | "archive:https://opam.ocaml.org/cache/md5/14/14e47609397c524ea0eae7c3f14f7ccf#md5:14e47609397c524ea0eae7c3f14f7ccf", 1681 | "archive:https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz#md5:14e47609397c524ea0eae7c3f14f7ccf" 1682 | ], 1683 | "opam": { 1684 | "name": "atd", 1685 | "version": "2.0.0", 1686 | "path": "esy.lock/opam/atd.2.0.0" 1687 | } 1688 | }, 1689 | "overrides": [], 1690 | "dependencies": [ 1691 | "ocaml@4.7.1004@d41d8cd9", "@opam/menhir@opam:20190626@bbeb8953", 1692 | "@opam/jbuilder@opam:transition@58bdfe0a", 1693 | "@opam/easy-format@opam:1.3.1@9abfd4ed", 1694 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1695 | ], 1696 | "devDependencies": [ 1697 | "ocaml@4.7.1004@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed" 1698 | ] 1699 | }, 1700 | "@opam/astring@opam:0.8.3@4e5e17d5": { 1701 | "id": "@opam/astring@opam:0.8.3@4e5e17d5", 1702 | "name": "@opam/astring", 1703 | "version": "opam:0.8.3", 1704 | "source": { 1705 | "type": "install", 1706 | "source": [ 1707 | "archive:https://opam.ocaml.org/cache/md5/c5/c5bf6352b9ac27fbeab342740f4fa870#md5:c5bf6352b9ac27fbeab342740f4fa870", 1708 | "archive:http://erratique.ch/software/astring/releases/astring-0.8.3.tbz#md5:c5bf6352b9ac27fbeab342740f4fa870" 1709 | ], 1710 | "opam": { 1711 | "name": "astring", 1712 | "version": "0.8.3", 1713 | "path": "esy.lock/opam/astring.0.8.3" 1714 | } 1715 | }, 1716 | "overrides": [], 1717 | "dependencies": [ 1718 | "ocaml@4.7.1004@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 1719 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1720 | "@opam/ocamlbuild@opam:0.14.0@427a2331", 1721 | "@opam/base-bytes@opam:base@19d0c2ff", 1722 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1723 | ], 1724 | "devDependencies": [ 1725 | "ocaml@4.7.1004@d41d8cd9", "@opam/base-bytes@opam:base@19d0c2ff" 1726 | ] 1727 | }, 1728 | "@esy-ocaml/substs@0.0.1@d41d8cd9": { 1729 | "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", 1730 | "name": "@esy-ocaml/substs", 1731 | "version": "0.0.1", 1732 | "source": { 1733 | "type": "install", 1734 | "source": [ 1735 | "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" 1736 | ] 1737 | }, 1738 | "overrides": [], 1739 | "dependencies": [], 1740 | "devDependencies": [] 1741 | }, 1742 | "@esy-ocaml/reason@3.5.0@d41d8cd9": { 1743 | "id": "@esy-ocaml/reason@3.5.0@d41d8cd9", 1744 | "name": "@esy-ocaml/reason", 1745 | "version": "3.5.0", 1746 | "source": { 1747 | "type": "install", 1748 | "source": [ 1749 | "archive:https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.5.0.tgz#sha1:f276b991ef0dfe4d559b68e554661f8b2bc618bf" 1750 | ] 1751 | }, 1752 | "overrides": [], 1753 | "dependencies": [ 1754 | "ocaml@4.7.1004@d41d8cd9", "@opam/result@opam:1.4@6fb665c3", 1755 | "@opam/ocamlfind@opam:1.8.1@c65fe06a", 1756 | "@opam/ocaml-migrate-parsetree@opam:1.4.0@7f2e4334", 1757 | "@opam/merlin-extend@opam:0.4@64c45329", 1758 | "@opam/menhir@opam:20190626@bbeb8953", 1759 | "@opam/dune@opam:1.11.0@9ec4211e" 1760 | ], 1761 | "devDependencies": [] 1762 | } 1763 | } 1764 | } --------------------------------------------------------------------------------