diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d5246cd --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +.github export-ignore +.ocamlformat export-ignore diff --git a/.github/workflows/esy.yml b/.github/workflows/esy.yml new file mode 100644 index 0000000..a049d15 --- /dev/null +++ b/.github/workflows/esy.yml @@ -0,0 +1,40 @@ +name: Esy +on: + - push + - pull_request + +jobs: + build: + name: Build and test + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - name: Setup node.js + uses: actions/setup-node@v2.1.2 + with: + node-version: '14' + check-latest: true + + # Install `esy` to build the project + - name: Setup environment + run: | + npm i -g esy + + - name: Checkout project + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Esy build + uses: esy/github-action@d859489ca96411749931bceb4d733a2bdea922f9 + with: + cache-key: ${{ hashFiles('esy.lock/index.json') }} + + - name: Run tests + run: | + esy test diff --git a/.github/workflows/opam.yml b/.github/workflows/opam.yml new file mode 100644 index 0000000..d427438 --- /dev/null +++ b/.github/workflows/opam.yml @@ -0,0 +1,36 @@ +name: Opam +on: + - push + - pull_request + +jobs: + build: + name: Build and test + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + ocaml-compiler: [4.12.0] + + steps: + - name: Checkout project + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Setup OCaml ${{ matrix.ocaml-compiler }} + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: ${{ matrix.ocaml-compiler }} + + - name: Install local dependencies + run: opam install . --deps-only --with-test + + - name: Build project + run: opam exec -- dune build + + - name: Run tests + run: | + opam exec -- dune runtest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..23e7493 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,113 @@ +name: Release +on: + push: + branches: + - master + +jobs: + release-please: + name: Create Release + runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release.outputs.release_created }} + upload_url: ${{ steps.release.outputs.upload_url }} + tag_name: ${{ steps.release.outputs.tag_name }} + body: ${{ steps.release.outputs.body }} + steps: + - uses: GoogleCloudPlatform/release-please-action@v2.34.0 + id: release + with: + token: ${{ secrets.GITHUB_TOKEN }} + release-type: ocaml + package-name: libbinaryen + + add-archive: + needs: [release-please] + if: ${{ needs.release-please.outputs.release_created }} + name: Add archive to release + runs-on: macos-latest + outputs: + browser_download_url: ${{ steps.upload.outputs.browser_download_url }} + steps: + - name: Install git-archive-all + run: | + brew install git-archive-all + + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Build archive + run: | + git-archive-all --force-submodules libbinaryen.tar.gz + + - name: Upload Release Asset + id: upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.release-please.outputs.upload_url }} + asset_path: ./libbinaryen.tar.gz + asset_name: libbinaryen-${{ needs.release-please.outputs.tag_name }}.tar.gz + asset_content_type: application/gzip + + opam-release: + needs: [release-please, add-archive] + name: Publish to opam registry + runs-on: ubuntu-latest + steps: + - name: Setup bot user + run: | + git config --global user.email "bot@grain-lang.org" + git config --global user.name "Grain Bot" + + # Some hacks to make sure opam doesn't pull the repo in a way we can't deal with + - name: Setup opam repository + run: | + mkdir -p ~/.opam/plugins/opam-publish/repos/ + git clone git://github.com/ocaml/opam-repository ~/.opam/plugins/opam-publish/repos/ocaml%opam-repository + cd ~/.opam/plugins/opam-publish/repos/ocaml%opam-repository + git remote add user https://${{ secrets.OPAM_RELEASE }}@github.com/grainbot/opam-repository + + # Set up our token because opam doesn't support env var tokens + - name: Setup token + run: | + mkdir -p ~/.opam/plugins/opam-publish/ + echo -n ${{ secrets.OPAM_RELEASE }} > ~/.opam/plugins/opam-publish/libbinaryen.token + + - name: Generate CHANGES file + env: + CHANGES: ${{ needs.release-please.outputs.body }} + run: | + echo -n "$CHANGES" > CHANGES.md + + - name: Setup OCaml + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: 4.12.0 + + - name: Install publish utils + run: | + opam install opam-publish + + - name: Publish to opam + run: | + opam publish --no-browser --msg-file=CHANGES.md ${{ needs.add-archive.outputs.browser_download_url }} + + npm-release: + needs: [add-archive] + name: Publish to npm registry + runs-on: ubuntu-latest + steps: + - name: Setup NodeJS + uses: actions/setup-node@v2 + with: + node-version: "14" + registry-url: "https://registry.npmjs.org" + + - name: Publish to npm + run: npm publish ${{ needs.add-archive.outputs.browser_download_url }} + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_RELEASE }} diff --git a/.gitignore b/.gitignore index a18e084..98b4ea8 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,15 @@ setup.log # Local OPAM switch _opam/ + +# Esy +node_modules/ +_esy/ + +# Other +META +.vscode/ +.DS_Store +*.tar.gz +*.install +*.zip diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fa04598 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "binaryen"] + path = binaryen + url = https://github.com/WebAssembly/binaryen diff --git a/.ocamlformat b/.ocamlformat new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index b745895..56c3914 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,50 @@ # libbinaryen -libbinaryen packaged for OCaml + +Libbinaryen packaged for OCaml. + +This is just the low-level C library. If you are looking for OCaml *bindings* to Binaryen, check out [Binaryen.ml](https://github.com/grain-lang/binaryen.ml)! + +## Usage + +Inside your dune file, you can depend on `libbinaryen` as such: + +``` +(library + (name binaryen) + (public_name binaryen) + (libraries libbinaryen.c) + (foreign_stubs + (language c) + (names binaryen_stubs) + (flags :standard -O2 -Wall -Wextra)) + (c_library_flags :standard -lstdc++ -lpthread)) +``` + +## Library flags + +This package attempts to smooth over configuration frustrations by providing specific `library_flags` when built. + +### MacOS + +In order to support Mac M1, this package assumes you are using `clang++` on MacOS and applies the flags `-cc clang++` to the built library. + +### Windows + +On Windows, this package assumes libbinaryen is built under MinGW and applies the flags `-ccopt -- -ccopt -static` to the built library. + +## Contributing + +You'll need Node.js and [`esy`](https://esy.sh/docs/en/getting-started.html#install-esy) to build this project. +You should be able to use Opam if you are more comfortable with it, but the core team does all development using esy. + +`dune` will take care of compiling Binaryen, so to build the project you'll only need to run: + +```bash +esy +``` + +This will take a while. Once it's done, you can run the tests: + +```bash +esy test +``` diff --git a/binaryen b/binaryen new file mode 160000 index 0000000..423cf0b --- /dev/null +++ b/binaryen @@ -0,0 +1 @@ +Subproject commit 423cf0b890e44356fbfa80c5bdfd4032fcc1da01 diff --git a/config/dune b/config/dune new file mode 100644 index 0000000..7c4e3de --- /dev/null +++ b/config/dune @@ -0,0 +1,8 @@ +(executable + (name library_flags) + (libraries dune.configurator)) + +(rule + (targets library_flags.sexp) + (action + (run ./library_flags.exe))) diff --git a/config/library_flags.ml b/config/library_flags.ml new file mode 100644 index 0000000..52c2021 --- /dev/null +++ b/config/library_flags.ml @@ -0,0 +1,17 @@ +module C = Configurator.V1 + +let () = + C.main ~name:"library_flags" (fun c -> + let default = [] in + + let library_flags = + match C.ocaml_config_var c "system" with + | Some "macosx" -> + (* These flags preserve the original C++ error behavior. Ref https://github.com/ocaml/ocaml/issues/10423 *) + [ "-cc"; "clang++" ] + | Some "mingw64" -> [ "-ccopt"; "--"; "-ccopt"; "-static" ] + | Some _ -> default + | None -> default + in + + C.Flags.write_sexp "library_flags.sexp" library_flags) diff --git a/dune b/dune new file mode 100644 index 0000000..8d0b732 --- /dev/null +++ b/dune @@ -0,0 +1,104 @@ +(library + (name libbinaryen_c) + (public_name libbinaryen.c) + (foreign_archives binaryen) + (library_flags + (:include ./config/library_flags.sexp)) + (c_library_flags :standard -lstdc++ -lpthread) + (install_c_headers binaryen-c wasm-delegations)) + +(rule + (targets libbinaryen.a binaryen-c.h wasm-delegations.h) + (deps + (source_tree binaryen)) + (action + (no-infer + (progn + (run + cmake + -S + binaryen + -B + archive_out + -G + "Unix Makefiles" + -DBUILD_STATIC_LIB=ON + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=archive_out/install) + (run cmake --build archive_out --config Release) + (run cmake --install archive_out --config Release) + (copy archive_out/install/lib/libbinaryen.a libbinaryen.a) + (copy archive_out/install/include/binaryen-c.h binaryen-c.h) + (copy archive_out/install/include/wasm-delegations.h wasm-delegations.h))))) + +(rule + (target dllbinaryen.so) + (deps + (source_tree binaryen)) + (enabled_if + (= %{system} macosx)) + (action + (no-infer + (progn + (run + cmake + -S + binaryen + -B + shared_out + -G + "Unix Makefiles" + -DBUILD_STATIC_LIB=OFF + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=shared_out/install) + (run cmake --build shared_out --config Release) + (run cmake --install shared_out --config Release) + (copy shared_out/install/lib/libbinaryen.dylib dllbinaryen.so))))) + +(rule + (target dllbinaryen.so) + (deps + (source_tree binaryen)) + (enabled_if + (= %{system} linux)) + (action + (no-infer + (progn + (run + cmake + -S + binaryen + -B + shared_out + -G + "Unix Makefiles" + -DBUILD_STATIC_LIB=OFF + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=shared_out/install) + (run cmake --build shared_out --config Release) + (run cmake --install shared_out --config Release) + (copy shared_out/install/lib/libbinaryen.so dllbinaryen.so))))) + +(rule + (target dllbinaryen.dll) + (deps + (source_tree binaryen)) + (enabled_if + (= %{system} mingw64)) + (action + (no-infer + (progn + (run + cmake + -S + binaryen + -B + shared_out + -G + "Unix Makefiles" + -DBUILD_STATIC_LIB=OFF + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=shared_out/install) + (run cmake --build shared_out --config Release) + (run cmake --install shared_out --config Release) + (copy shared_out/install/bin/libbinaryen.dll dllbinaryen.dll))))) diff --git a/dune-project b/dune-project new file mode 100644 index 0000000..30b126f --- /dev/null +++ b/dune-project @@ -0,0 +1,3 @@ +(lang dune 2.9) + +(name libbinaryen) diff --git a/dune-workspace b/dune-workspace new file mode 100644 index 0000000..dfc59bb --- /dev/null +++ b/dune-workspace @@ -0,0 +1,3 @@ +(lang dune 2.9) + +(profile release) diff --git a/esy.lock/.gitattributes b/esy.lock/.gitattributes new file mode 100644 index 0000000..e0b4e26 --- /dev/null +++ b/esy.lock/.gitattributes @@ -0,0 +1,3 @@ + +# Set eol to LF so files aren't converted to CRLF-eol on Windows. +* text eol=lf linguist-generated diff --git a/esy.lock/.gitignore b/esy.lock/.gitignore new file mode 100644 index 0000000..a221be2 --- /dev/null +++ b/esy.lock/.gitignore @@ -0,0 +1,3 @@ + +# Reset any possible .gitignore, we want all esy.lock to be un-ignored. +!* diff --git a/esy.lock/index.json b/esy.lock/index.json new file mode 100644 index 0000000..da94654 --- /dev/null +++ b/esy.lock/index.json @@ -0,0 +1,1253 @@ +{ + "checksum": "a76af2a5f90fd9d38fd5daef38abe3bf", + "root": "@grain/libbinaryen@link-dev:./package.json", + "node": { + "ocaml@4.12.0@d41d8cd9": { + "id": "ocaml@4.12.0@d41d8cd9", + "name": "ocaml", + "version": "4.12.0", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.12.0.tgz#sha1:2a979f37535faaded8aa3fdf82b6f16f2c71e284" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@opam/yojson@opam:1.7.0@69d87312": { + "id": "@opam/yojson@opam:1.7.0@69d87312", + "name": "@opam/yojson", + "version": "opam:1.7.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/b8/b89d39ca3f8c532abe5f547ad3b8f84d#md5:b89d39ca3f8c532abe5f547ad3b8f84d", + "archive:https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz#md5:b89d39ca3f8c532abe5f547ad3b8f84d" + ], + "opam": { + "name": "yojson", + "version": "1.7.0", + "path": "esy.lock/opam/yojson.1.7.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.1@1e504822", "@opam/cppo@opam:1.6.8@7e48217d", + "@opam/biniou@opam:1.2.1@420bda02", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.1@1e504822", "@opam/biniou@opam:1.2.1@420bda02" + ] + }, + "@opam/uutf@opam:1.0.2@4440868f": { + "id": "@opam/uutf@opam:1.0.2@4440868f", + "name": "@opam/uutf", + "version": "opam:1.0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/a7/a7c542405a39630c689a82bd7ef2292c#md5:a7c542405a39630c689a82bd7ef2292c", + "archive:http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz#md5:a7c542405a39630c689a82bd7ef2292c" + ], + "opam": { + "name": "uutf", + "version": "1.0.2", + "path": "esy.lock/opam/uutf.1.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", + "@opam/topkg@opam:1.0.4@52d43104", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea" + ] + }, + "@opam/uuseg@opam:14.0.0@7d21466b": { + "id": "@opam/uuseg@opam:14.0.0@7d21466b", + "name": "@opam/uuseg", + "version": "opam:14.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha512/3f/3f089baf95f010663a0c2f060b2911395d9b396f478efb10fd979815f527c9e61e0a70b3192f2e921f59287bfde0da6e25109d4a1825554e2e4a50c0535e97aa#sha512:3f089baf95f010663a0c2f060b2911395d9b396f478efb10fd979815f527c9e61e0a70b3192f2e921f59287bfde0da6e25109d4a1825554e2e4a50c0535e97aa", + "archive:https://erratique.ch/software/uuseg/releases/uuseg-14.0.0.tbz#sha512:3f089baf95f010663a0c2f060b2911395d9b396f478efb10fd979815f527c9e61e0a70b3192f2e921f59287bfde0da6e25109d4a1825554e2e4a50c0535e97aa" + ], + "opam": { + "name": "uuseg", + "version": "14.0.0", + "path": "esy.lock/opam/uuseg.14.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/uucp@opam:14.0.0@8715110e", "@opam/topkg@opam:1.0.4@52d43104", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uucp@opam:14.0.0@8715110e" + ] + }, + "@opam/uucp@opam:14.0.0@8715110e": { + "id": "@opam/uucp@opam:14.0.0@8715110e", + "name": "@opam/uucp", + "version": "opam:14.0.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha512/2d/2d0224aed5d5accbb121624898f08598e8c74a2415942f159a54221c0cdac62ed64fc70a039c833e50110cefce77754ada9ac2d58f79a6fc9331135326fe6899#sha512:2d0224aed5d5accbb121624898f08598e8c74a2415942f159a54221c0cdac62ed64fc70a039c833e50110cefce77754ada9ac2d58f79a6fc9331135326fe6899", + "archive:https://erratique.ch/software/uucp/releases/uucp-14.0.0.tbz#sha512:2d0224aed5d5accbb121624898f08598e8c74a2415942f159a54221c0cdac62ed64fc70a039c833e50110cefce77754ada9ac2d58f79a6fc9331135326fe6899" + ], + "opam": { + "name": "uucp", + "version": "14.0.0", + "path": "esy.lock/opam/uucp.14.0.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/topkg@opam:1.0.4@52d43104", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@opam/uchar@opam:0.0.2@c8218eea": { + "id": "@opam/uchar@opam:0.0.2@c8218eea", + "name": "@opam/uchar", + "version": "opam:0.0.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", + "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" + ], + "opam": { + "name": "uchar", + "version": "0.0.2", + "path": "esy.lock/opam/uchar.0.0.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@opam/tyxml@opam:4.5.0@0a609297": { + "id": "@opam/tyxml@opam:4.5.0@0a609297", + "name": "@opam/tyxml", + "version": "opam:4.5.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/c6/c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068#sha256:c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068", + "archive:https://github.com/ocsigen/tyxml/releases/download/4.5.0/tyxml-4.5.0.tbz#sha256:c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068" + ], + "opam": { + "name": "tyxml", + "version": "4.5.0", + "path": "esy.lock/opam/tyxml.4.5.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.10.3@0585c65d", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.10.3@0585c65d", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/topkg@opam:1.0.4@52d43104": { + "id": "@opam/topkg@opam:1.0.4@52d43104", + "name": "@opam/topkg", + "version": "opam:1.0.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha512/5b/5baa1bf0105397589b741acd0195069823548b2051e453dffd641e5d00536b7a5f41b38d005b2b063f9e7cfb9a3b627bec3e6ad48e56769cc35a71f97a897f1b#sha512:5baa1bf0105397589b741acd0195069823548b2051e453dffd641e5d00536b7a5f41b38d005b2b063f9e7cfb9a3b627bec3e6ad48e56769cc35a71f97a897f1b", + "archive:https://erratique.ch/software/topkg/releases/topkg-1.0.4.tbz#sha512:5baa1bf0105397589b741acd0195069823548b2051e453dffd641e5d00536b7a5f41b38d005b2b063f9e7cfb9a3b627bec3e6ad48e56769cc35a71f97a897f1b" + ], + "opam": { + "name": "topkg", + "version": "1.0.4", + "path": "esy.lock/opam/topkg.1.0.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@0dee4078" + ] + }, + "@opam/stdlib-shims@opam:0.3.0@0d088929": { + "id": "@opam/stdlib-shims@opam:0.3.0@0d088929", + "name": "@opam/stdlib-shims", + "version": "opam:0.3.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/ba/babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a#sha256:babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a", + "archive:https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz#sha256:babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a" + ], + "opam": { + "name": "stdlib-shims", + "version": "0.3.0", + "path": "esy.lock/opam/stdlib-shims.0.3.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/stdio@opam:v0.14.0@a5affb43": { + "id": "@opam/stdio@opam:v0.14.0@a5affb43", + "name": "@opam/stdio", + "version": "opam:v0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/4c/4cbdf15f0be88c3258aaeff9e04e00e9#md5:4cbdf15f0be88c3258aaeff9e04e00e9", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.14/files/stdio-v0.14.0.tar.gz#md5:4cbdf15f0be88c3258aaeff9e04e00e9" + ], + "opam": { + "name": "stdio", + "version": "v0.14.0", + "path": "esy.lock/opam/stdio.v0.14.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@opam/base@opam:v0.14.1@9b424fee", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@opam/base@opam:v0.14.1@9b424fee" + ] + }, + "@opam/sexplib0@opam:v0.14.0@155c136c": { + "id": "@opam/sexplib0@opam:v0.14.0@155c136c", + "name": "@opam/sexplib0", + "version": "opam:v0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/37/37aff0af8f8f6f759249475684aebdc4#md5:37aff0af8f8f6f759249475684aebdc4", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.14/files/sexplib0-v0.14.0.tar.gz#md5:37aff0af8f8f6f759249475684aebdc4" + ], + "opam": { + "name": "sexplib0", + "version": "v0.14.0", + "path": "esy.lock/opam/sexplib0.v0.14.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/seq@opam:base@d8d7de1d": { + "id": "@opam/seq@opam:base@d8d7de1d", + "name": "@opam/seq", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "seq", + "version": "base", + "path": "esy.lock/opam/seq.base" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@opam/result@opam:1.5@1c6a6533": { + "id": "@opam/result@opam:1.5@1c6a6533", + "name": "@opam/result", + "version": "opam:1.5", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/1b/1b82dec78849680b49ae9a8a365b831b#md5:1b82dec78849680b49ae9a8a365b831b", + "archive:https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz#md5:1b82dec78849680b49ae9a8a365b831b" + ], + "opam": { + "name": "result", + "version": "1.5", + "path": "esy.lock/opam/result.1.5" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/re@opam:1.10.3@0585c65d": { + "id": "@opam/re@opam:1.10.3@0585c65d", + "name": "@opam/re", + "version": "opam:1.10.3", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/84/846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb#sha256:846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.10.3/re-1.10.3.tbz#sha256:846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb" + ], + "opam": { + "name": "re", + "version": "1.10.3", + "path": "esy.lock/opam/re.1.10.3" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/ppxlib@opam:0.22.2@61009929": { + "id": "@opam/ppxlib@opam:0.22.2@61009929", + "name": "@opam/ppxlib", + "version": "opam:0.22.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/d0/d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a#sha256:d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a", + "archive:https://github.com/ocaml-ppx/ppxlib/releases/download/0.22.2/ppxlib-0.22.2.tbz#sha256:d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a" + ], + "opam": { + "name": "ppxlib", + "version": "0.22.2", + "path": "esy.lock/opam/ppxlib.0.22.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@0d088929", + "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocaml-migrate-parsetree@opam:2.2.0@45331a3e", + "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@0d088929", + "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocaml-migrate-parsetree@opam:2.2.0@45331a3e", + "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997": { + "id": "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", + "name": "@opam/ppx_yojson_conv_lib", + "version": "opam:v0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/e2/e23c5593a7211ad4fb09e26e9a74698a#md5:e23c5593a7211ad4fb09e26e9a74698a", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.14/files/ppx_yojson_conv_lib-v0.14.0.tar.gz#md5:e23c5593a7211ad4fb09e26e9a74698a" + ], + "opam": { + "name": "ppx_yojson_conv_lib", + "version": "v0.14.0", + "path": "esy.lock/opam/ppx_yojson_conv_lib.v0.14.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/ppx_derivers@opam:1.2.1@e2cbad12": { + "id": "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "name": "@opam/ppx_derivers", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/5d/5dc2bf130c1db3c731fe0fffc5648b41#md5:5dc2bf130c1db3c731fe0fffc5648b41", + "archive:https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz#md5:5dc2bf130c1db3c731fe0fffc5648b41" + ], + "opam": { + "name": "ppx_derivers", + "version": "1.2.1", + "path": "esy.lock/opam/ppx_derivers.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/pp@opam:1.1.2@89ad03b5": { + "id": "@opam/pp@opam:1.1.2@89ad03b5", + "name": "@opam/pp", + "version": "opam:1.1.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/e4/e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56#sha256:e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56", + "archive:https://github.com/ocaml-dune/pp/releases/download/1.1.2/pp-1.1.2.tbz#sha256:e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56" + ], + "opam": { + "name": "pp", + "version": "1.1.2", + "path": "esy.lock/opam/pp.1.1.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/odoc@opam:1.5.3@a56545ed": { + "id": "@opam/odoc@opam:1.5.3@a56545ed", + "name": "@opam/odoc", + "version": "opam:1.5.3", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/f2/f2b76f811658c4b52cb48ac4ffc2ec37cedd2a805111c7f8ec20f8f36b8bbf45#sha256:f2b76f811658c4b52cb48ac4ffc2ec37cedd2a805111c7f8ec20f8f36b8bbf45", + "archive:https://github.com/ocaml/odoc/releases/download/1.5.3/odoc-1.5.3.tbz#sha256:f2b76f811658c4b52cb48ac4ffc2ec37cedd2a805111c7f8ec20f8f36b8bbf45" + ], + "opam": { + "name": "odoc", + "version": "1.5.3", + "path": "esy.lock/opam/odoc.1.5.3" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/tyxml@opam:4.5.0@0a609297", + "@opam/result@opam:1.5@1c6a6533", "@opam/fpath@opam:0.7.3@674d8125", + "@opam/dune@opam:2.9.1@1e504822", "@opam/cppo@opam:1.6.8@7e48217d", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@opam/astring@opam:0.8.5@1300cee8", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/tyxml@opam:4.5.0@0a609297", + "@opam/result@opam:1.5@1c6a6533", "@opam/fpath@opam:0.7.3@674d8125", + "@opam/dune@opam:2.9.1@1e504822", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@opam/astring@opam:0.8.5@1300cee8" + ] + }, + "@opam/ocamlformat-rpc-lib@opam:0.18.0@4bef249f": { + "id": "@opam/ocamlformat-rpc-lib@opam:0.18.0@4bef249f", + "name": "@opam/ocamlformat-rpc-lib", + "version": "opam:0.18.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/98/981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114#sha256:981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114", + "archive:https://github.com/ocaml-ppx/ocamlformat/releases/download/0.18.0/ocamlformat-0.18.0.tbz#sha256:981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114" + ], + "opam": { + "name": "ocamlformat-rpc-lib", + "version": "0.18.0", + "path": "esy.lock/opam/ocamlformat-rpc-lib.0.18.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7" + ] + }, + "@opam/ocamlformat@opam:0.18.0@a5c80606": { + "id": "@opam/ocamlformat@opam:0.18.0@a5c80606", + "name": "@opam/ocamlformat", + "version": "opam:0.18.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/98/981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114#sha256:981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114", + "archive:https://github.com/ocaml-ppx/ocamlformat/releases/download/0.18.0/ocamlformat-0.18.0.tbz#sha256:981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114" + ], + "opam": { + "name": "ocamlformat", + "version": "0.18.0", + "path": "esy.lock/opam/ocamlformat.0.18.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/uuseg@opam:14.0.0@7d21466b", + "@opam/stdio@opam:v0.14.0@a5affb43", "@opam/re@opam:1.10.3@0585c65d", + "@opam/ppxlib@opam:0.22.2@61009929", + "@opam/odoc@opam:1.5.3@a56545ed", + "@opam/ocaml-version@opam:3.4.0@b6cd49e1", + "@opam/menhirSdk@opam:20211012@361dec19", + "@opam/menhirLib@opam:20211012@a4d7fb30", + "@opam/menhir@opam:20211012@1135eab2", + "@opam/fpath@opam:0.7.3@674d8125", + "@opam/fix@opam:20201120@0b212fb9", + "@opam/dune-build-info@opam:2.9.1@c636b56a", + "@opam/dune@opam:2.9.1@1e504822", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base@opam:v0.14.1@9b424fee", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", + "@opam/uuseg@opam:14.0.0@7d21466b", + "@opam/stdio@opam:v0.14.0@a5affb43", "@opam/re@opam:1.10.3@0585c65d", + "@opam/ppxlib@opam:0.22.2@61009929", + "@opam/odoc@opam:1.5.3@a56545ed", + "@opam/ocaml-version@opam:3.4.0@b6cd49e1", + "@opam/menhirSdk@opam:20211012@361dec19", + "@opam/menhirLib@opam:20211012@a4d7fb30", + "@opam/menhir@opam:20211012@1135eab2", + "@opam/fpath@opam:0.7.3@674d8125", + "@opam/fix@opam:20201120@0b212fb9", + "@opam/dune-build-info@opam:2.9.1@c636b56a", + "@opam/dune@opam:2.9.1@1e504822", + "@opam/cmdliner@opam:1.0.4@93208aac", + "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base@opam:v0.14.1@9b424fee" + ] + }, + "@opam/ocamlfind@opam:1.9.1@b748edf6": { + "id": "@opam/ocamlfind@opam:1.9.1@b748edf6", + "name": "@opam/ocamlfind", + "version": "opam:1.9.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/65/65e6dc9b305ccbed1267275fe180f538#md5:65e6dc9b305ccbed1267275fe180f538", + "archive:http://download.camlcity.org/download/findlib-1.9.1.tar.gz#md5:65e6dc9b305ccbed1267275fe180f538" + ], + "opam": { + "name": "ocamlfind", + "version": "1.9.1", + "path": "esy.lock/opam/ocamlfind.1.9.1" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override" + } + ], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@opam/ocamlbuild@opam:0.14.0@0dee4078": { + "id": "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "name": "@opam/ocamlbuild", + "version": "opam:0.14.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", + "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" + ], + "opam": { + "name": "ocamlbuild", + "version": "0.14.0", + "path": "esy.lock/opam/ocamlbuild.0.14.0" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@opam/ocaml-version@opam:3.4.0@b6cd49e1": { + "id": "@opam/ocaml-version@opam:3.4.0@b6cd49e1", + "name": "@opam/ocaml-version", + "version": "opam:3.4.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/d8/d8c1beb5e8d8ebb7710b5f434ce66a3ec8b752b1e4d6ba87c4fe27452bdb8a25#sha256:d8c1beb5e8d8ebb7710b5f434ce66a3ec8b752b1e4d6ba87c4fe27452bdb8a25", + "archive:https://github.com/ocurrent/ocaml-version/releases/download/v3.4.0/ocaml-version-v3.4.0.tbz#sha256:d8c1beb5e8d8ebb7710b5f434ce66a3ec8b752b1e4d6ba87c4fe27452bdb8a25" + ], + "opam": { + "name": "ocaml-version", + "version": "3.4.0", + "path": "esy.lock/opam/ocaml-version.3.4.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/ocaml-migrate-parsetree@opam:2.2.0@45331a3e": { + "id": "@opam/ocaml-migrate-parsetree@opam:2.2.0@45331a3e", + "name": "@opam/ocaml-migrate-parsetree", + "version": "opam:2.2.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/b2/b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1#sha256:b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1", + "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v2.2.0/ocaml-migrate-parsetree-v2.2.0.tbz#sha256:b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1" + ], + "opam": { + "name": "ocaml-migrate-parsetree", + "version": "2.2.0", + "path": "esy.lock/opam/ocaml-migrate-parsetree.2.2.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/ocaml-lsp-server@opam:1.8.3@b64dff17": { + "id": "@opam/ocaml-lsp-server@opam:1.8.3@b64dff17", + "name": "@opam/ocaml-lsp-server", + "version": "opam:1.8.3", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/58/58ef5aa7bf176712428b4e0b1015feaf6d677cbd9474f8822d132b25223b14e9#sha256:58ef5aa7bf176712428b4e0b1015feaf6d677cbd9474f8822d132b25223b14e9", + "archive:https://github.com/ocaml/ocaml-lsp/releases/download/1.8.3/jsonrpc-1.8.3.tbz#sha256:58ef5aa7bf176712428b4e0b1015feaf6d677cbd9474f8822d132b25223b14e9" + ], + "opam": { + "name": "ocaml-lsp-server", + "version": "1.8.3", + "path": "esy.lock/opam/ocaml-lsp-server.1.8.3" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/result@opam:1.5@1c6a6533", "@opam/re@opam:1.10.3@0585c65d", + "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", + "@opam/pp@opam:1.1.2@89ad03b5", + "@opam/ocamlformat-rpc-lib@opam:0.18.0@4bef249f", + "@opam/dune-build-info@opam:2.9.1@c636b56a", + "@opam/dune@opam:2.9.1@1e504822", + "@opam/dot-merlin-reader@opam:4.1@84436e1c", + "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/result@opam:1.5@1c6a6533", "@opam/re@opam:1.10.3@0585c65d", + "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", + "@opam/pp@opam:1.1.2@89ad03b5", + "@opam/ocamlformat-rpc-lib@opam:0.18.0@4bef249f", + "@opam/dune-build-info@opam:2.9.1@c636b56a", + "@opam/dune@opam:2.9.1@1e504822", + "@opam/dot-merlin-reader@opam:4.1@84436e1c", + "@opam/csexp@opam:1.5.1@8a8fb3a7" + ] + }, + "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882": { + "id": "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882", + "name": "@opam/ocaml-compiler-libs", + "version": "opam:v0.12.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/4e/4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760#sha256:4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760", + "archive:https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.4/ocaml-compiler-libs-v0.12.4.tbz#sha256:4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760" + ], + "opam": { + "name": "ocaml-compiler-libs", + "version": "v0.12.4", + "path": "esy.lock/opam/ocaml-compiler-libs.v0.12.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/menhirSdk@opam:20211012@361dec19": { + "id": "@opam/menhirSdk@opam:20211012@361dec19", + "name": "@opam/menhirSdk", + "version": "opam:20211012", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/f6/f631f4c03859254a7d725f054633ee44#md5:f631f4c03859254a7d725f054633ee44", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20211012/archive.tar.gz#md5:f631f4c03859254a7d725f054633ee44" + ], + "opam": { + "name": "menhirSdk", + "version": "20211012", + "path": "esy.lock/opam/menhirSdk.20211012" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/menhirLib@opam:20211012@a4d7fb30": { + "id": "@opam/menhirLib@opam:20211012@a4d7fb30", + "name": "@opam/menhirLib", + "version": "opam:20211012", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/f6/f631f4c03859254a7d725f054633ee44#md5:f631f4c03859254a7d725f054633ee44", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20211012/archive.tar.gz#md5:f631f4c03859254a7d725f054633ee44" + ], + "opam": { + "name": "menhirLib", + "version": "20211012", + "path": "esy.lock/opam/menhirLib.20211012" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/menhir@opam:20211012@1135eab2": { + "id": "@opam/menhir@opam:20211012@1135eab2", + "name": "@opam/menhir", + "version": "opam:20211012", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/f6/f631f4c03859254a7d725f054633ee44#md5:f631f4c03859254a7d725f054633ee44", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20211012/archive.tar.gz#md5:f631f4c03859254a7d725f054633ee44" + ], + "opam": { + "name": "menhir", + "version": "20211012", + "path": "esy.lock/opam/menhir.20211012" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/menhirSdk@opam:20211012@361dec19", + "@opam/menhirLib@opam:20211012@a4d7fb30", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/menhirSdk@opam:20211012@361dec19", + "@opam/menhirLib@opam:20211012@a4d7fb30", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/fpath@opam:0.7.3@674d8125": { + "id": "@opam/fpath@opam:0.7.3@674d8125", + "name": "@opam/fpath", + "version": "opam:0.7.3", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/07/0740b530e8fed5b0adc5eee8463cfc2f#md5:0740b530e8fed5b0adc5eee8463cfc2f", + "archive:https://erratique.ch/software/fpath/releases/fpath-0.7.3.tbz#md5:0740b530e8fed5b0adc5eee8463cfc2f" + ], + "opam": { + "name": "fpath", + "version": "0.7.3", + "path": "esy.lock/opam/fpath.0.7.3" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/topkg@opam:1.0.4@52d43104", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@opam/astring@opam:0.8.5@1300cee8", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/astring@opam:0.8.5@1300cee8" + ] + }, + "@opam/fix@opam:20201120@0b212fb9": { + "id": "@opam/fix@opam:20201120@0b212fb9", + "name": "@opam/fix", + "version": "opam:20201120", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/7e/7eb570b759635fe66f3556d2b1cc88e3#md5:7eb570b759635fe66f3556d2b1cc88e3", + "archive:https://gitlab.inria.fr/fpottier/fix/-/archive/20201120/archive.tar.gz#md5:7eb570b759635fe66f3556d2b1cc88e3" + ], + "opam": { + "name": "fix", + "version": "20201120", + "path": "esy.lock/opam/fix.20201120" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/easy-format@opam:1.3.2@1ea9f987": { + "id": "@opam/easy-format@opam:1.3.2@1ea9f987", + "name": "@opam/easy-format", + "version": "opam:1.3.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/34/3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926#sha256:3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926", + "archive:https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz#sha256:3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" + ], + "opam": { + "name": "easy-format", + "version": "1.3.2", + "path": "esy.lock/opam/easy-format.1.3.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/dune-configurator@opam:2.9.1@b7cf7a02": { + "id": "@opam/dune-configurator@opam:2.9.1@b7cf7a02", + "name": "@opam/dune-configurator", + "version": "opam:2.9.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/b3/b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26", + "archive:https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + ], + "opam": { + "name": "dune-configurator", + "version": "2.9.1", + "path": "esy.lock/opam/dune-configurator.2.9.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7" + ] + }, + "@opam/dune-build-info@opam:2.9.1@c636b56a": { + "id": "@opam/dune-build-info@opam:2.9.1@c636b56a", + "name": "@opam/dune-build-info", + "version": "opam:2.9.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/b3/b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26", + "archive:https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + ], + "opam": { + "name": "dune-build-info", + "version": "2.9.1", + "path": "esy.lock/opam/dune-build-info.2.9.1" + } + }, + "overrides": [], + "dependencies": [ + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "@opam/dune@opam:2.9.1@1e504822" ] + }, + "@opam/dune@opam:2.9.1@1e504822": { + "id": "@opam/dune@opam:2.9.1@1e504822", + "name": "@opam/dune", + "version": "opam:2.9.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/b3/b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26", + "archive:https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + ], + "opam": { + "name": "dune", + "version": "2.9.1", + "path": "esy.lock/opam/dune.2.9.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084" + ] + }, + "@opam/dot-merlin-reader@opam:4.1@84436e1c": { + "id": "@opam/dot-merlin-reader@opam:4.1@84436e1c", + "name": "@opam/dot-merlin-reader", + "version": "opam:4.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/14/14a36d6fb8646a5df4530420a7861722f1a4ee04753717947305e3676031e7cd#sha256:14a36d6fb8646a5df4530420a7861722f1a4ee04753717947305e3676031e7cd", + "archive:https://github.com/ocaml/merlin/releases/download/v4.1/dot-merlin-reader-v4.1.tbz#sha256:14a36d6fb8646a5df4530420a7861722f1a4ee04753717947305e3676031e7cd" + ], + "opam": { + "name": "dot-merlin-reader", + "version": "4.1", + "path": "esy.lock/opam/dot-merlin-reader.4.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/result@opam:1.5@1c6a6533", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/result@opam:1.5@1c6a6533", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7" + ] + }, + "@opam/csexp@opam:1.5.1@8a8fb3a7": { + "id": "@opam/csexp@opam:1.5.1@8a8fb3a7", + "name": "@opam/csexp", + "version": "opam:1.5.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/d6/d605e4065fa90a58800440ef2f33a2d931398bf2c22061a8acb7df845c0aac02#sha256:d605e4065fa90a58800440ef2f33a2d931398bf2c22061a8acb7df845c0aac02", + "archive:https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz#sha256:d605e4065fa90a58800440ef2f33a2d931398bf2c22061a8acb7df845c0aac02" + ], + "opam": { + "name": "csexp", + "version": "1.5.1", + "path": "esy.lock/opam/csexp.1.5.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/cppo@opam:1.6.8@7e48217d": { + "id": "@opam/cppo@opam:1.6.8@7e48217d", + "name": "@opam/cppo", + "version": "opam:1.6.8", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/fe/fed401197d86f9089e89f6cbdf1d660d#md5:fed401197d86f9089e89f6cbdf1d660d", + "archive:https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz#md5:fed401197d86f9089e89f6cbdf1d660d" + ], + "opam": { + "name": "cppo", + "version": "1.6.8", + "path": "esy.lock/opam/cppo.1.6.8" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/conf-cmake@github:grain-lang/cmake:esy.json#1cead3871bbb27a45adab2263ef2dff4a38a8869@d41d8cd9": { + "id": + "@opam/conf-cmake@github:grain-lang/cmake:esy.json#1cead3871bbb27a45adab2263ef2dff4a38a8869@d41d8cd9", + "name": "@opam/conf-cmake", + "version": + "github:grain-lang/cmake:esy.json#1cead3871bbb27a45adab2263ef2dff4a38a8869", + "source": { + "type": "install", + "source": [ + "github:grain-lang/cmake:esy.json#1cead3871bbb27a45adab2263ef2dff4a38a8869" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@opam/cmdliner@opam:1.0.4@93208aac": { + "id": "@opam/cmdliner@opam:1.0.4@93208aac", + "name": "@opam/cmdliner", + "version": "opam:1.0.4", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/fe/fe2213d0bc63b1e10a2d0aa66d2fc8d9#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9", + "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9" + ], + "opam": { + "name": "cmdliner", + "version": "1.0.4", + "path": "esy.lock/opam/cmdliner.1.0.4" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@opam/biniou@opam:1.2.1@420bda02": { + "id": "@opam/biniou@opam:1.2.1@420bda02", + "name": "@opam/biniou", + "version": "opam:1.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/35/35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335#sha256:35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335", + "archive:https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz#sha256:35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" + ], + "opam": { + "name": "biniou", + "version": "1.2.1", + "path": "esy.lock/opam/biniou.1.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/base-unix@opam:base@87d0b2eb": { + "id": "@opam/base-unix@opam:base@87d0b2eb", + "name": "@opam/base-unix", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-unix", + "version": "base", + "path": "esy.lock/opam/base-unix.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base-threads@opam:base@36803084": { + "id": "@opam/base-threads@opam:base@36803084", + "name": "@opam/base-threads", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-threads", + "version": "base", + "path": "esy.lock/opam/base-threads.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/base@opam:v0.14.1@9b424fee": { + "id": "@opam/base@opam:v0.14.1@9b424fee", + "name": "@opam/base", + "version": "opam:v0.14.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/e4/e4419eae60f57e553b154856f0cacf42#md5:e4419eae60f57e553b154856f0cacf42", + "archive:https://github.com/janestreet/base/archive/v0.14.1.tar.gz#md5:e4419eae60f57e553b154856f0cacf42" + ], + "opam": { + "name": "base", + "version": "v0.14.1", + "path": "esy.lock/opam/base.v0.14.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/dune-configurator@opam:2.9.1@b7cf7a02", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/dune-configurator@opam:2.9.1@b7cf7a02", + "@opam/dune@opam:2.9.1@1e504822" + ] + }, + "@opam/astring@opam:0.8.5@1300cee8": { + "id": "@opam/astring@opam:0.8.5@1300cee8", + "name": "@opam/astring", + "version": "opam:0.8.5", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/e1/e148907c24157d1df43bec89b58b3ec8#md5:e148907c24157d1df43bec89b58b3ec8", + "archive:https://erratique.ch/software/astring/releases/astring-0.8.5.tbz#md5:e148907c24157d1df43bec89b58b3ec8" + ], + "opam": { + "name": "astring", + "version": "0.8.5", + "path": "esy.lock/opam/astring.0.8.5" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", "@opam/topkg@opam:1.0.4@52d43104", + "@opam/ocamlfind@opam:1.9.1@b748edf6", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + }, + "@grain/libbinaryen@link-dev:./package.json": { + "id": "@grain/libbinaryen@link-dev:./package.json", + "name": "@grain/libbinaryen", + "version": "link-dev:./package.json", + "source": { + "type": "link-dev", + "path": ".", + "manifest": "package.json" + }, + "overrides": [], + "dependencies": [ + "ocaml@4.12.0@d41d8cd9", + "@opam/dune-configurator@opam:2.9.1@b7cf7a02", + "@opam/dune@opam:2.9.1@1e504822", + "@opam/conf-cmake@github:grain-lang/cmake:esy.json#1cead3871bbb27a45adab2263ef2dff4a38a8869@d41d8cd9" + ], + "devDependencies": [ + "@opam/ocamlformat@opam:0.18.0@a5c80606", + "@opam/ocaml-lsp-server@opam:1.8.3@b64dff17" + ], + "installConfig": { "pnp": false } + }, + "@esy-ocaml/substs@0.0.1@d41d8cd9": { + "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", + "name": "@esy-ocaml/substs", + "version": "0.0.1", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + } + } +} \ No newline at end of file diff --git a/esy.lock/opam/astring.0.8.5/opam b/esy.lock/opam/astring.0.8.5/opam new file mode 100644 index 0000000..338a06a --- /dev/null +++ b/esy.lock/opam/astring.0.8.5/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["The astring programmers"] +homepage: "https://erratique.ch/software/astring" +doc: "https://erratique.ch/software/astring/doc" +dev-repo: "git+http://erratique.ch/repos/astring.git" +bug-reports: "https://github.com/dbuenzli/astring/issues" +tags: [ "string" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.05.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build} ] +build: [[ "ocaml" "pkg/pkg.ml" "build" "--pinned" "%{pinned}%" ]] + +synopsis: """Alternative String module for OCaml""" +description: """\ + +Astring exposes an alternative `String` module for OCaml. This module +tries to balance minimality and expressiveness for basic, index-free, +string processing and provides types and functions for substrings, +string sets and string maps. + +Remaining compatible with the OCaml `String` module is a non-goal. The +`String` module exposed by Astring has exception safe functions, +removes deprecated and rarely used functions, alters some signatures +and names, adds a few missing functions and fully exploits OCaml's +newfound string immutability. + +Astring depends only on the OCaml standard library. It is distributed +under the ISC license. +""" +url { +archive: "https://erratique.ch/software/astring/releases/astring-0.8.5.tbz" +checksum: "e148907c24157d1df43bec89b58b3ec8" +} diff --git a/esy.lock/opam/base-threads.base/opam b/esy.lock/opam/base-threads.base/opam new file mode 100644 index 0000000..914ff50 --- /dev/null +++ b/esy.lock/opam/base-threads.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Threads library distributed with the OCaml compiler +""" + diff --git a/esy.lock/opam/base-unix.base/opam b/esy.lock/opam/base-unix.base/opam new file mode 100644 index 0000000..b973540 --- /dev/null +++ b/esy.lock/opam/base-unix.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Unix library distributed with the OCaml compiler +""" + diff --git a/esy.lock/opam/base.v0.14.1/opam b/esy.lock/opam/base.v0.14.1/opam new file mode 100644 index 0000000..eb9603e --- /dev/null +++ b/esy.lock/opam/base.v0.14.1/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Jane Street developers" +authors: ["Jane Street Group, LLC"] +homepage: "https://github.com/janestreet/base" +bug-reports: "https://github.com/janestreet/base/issues" +dev-repo: "git+https://github.com/janestreet/base.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/base/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.08.0"} + "sexplib0" {>= "v0.14" & < "v0.15"} + "dune" {>= "2.0.0"} + "dune-configurator" +] +synopsis: "Full standard library replacement for OCaml" +description: " +Full standard library replacement for OCaml + +Base is a complete and portable alternative to the OCaml standard +library. It provides all standard functionalities one would expect +from a language standard library. It uses consistent conventions +across all of its module. + +Base aims to be usable in any context. As a result system dependent +features such as I/O are not offered by Base. They are instead +provided by companion libraries such as stdio: + + https://github.com/janestreet/stdio +" +url { + src: "https://github.com/janestreet/base/archive/v0.14.1.tar.gz" + checksum: "md5=e4419eae60f57e553b154856f0cacf42" +} diff --git a/esy.lock/opam/biniou.1.2.1/opam b/esy.lock/opam/biniou.1.2.1/opam new file mode 100644 index 0000000..ec7028f --- /dev/null +++ b/esy.lock/opam/biniou.1.2.1/opam @@ -0,0 +1,45 @@ +opam-version: "2.0" +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "@doc"] {with-doc} +] +maintainer: ["martin@mjambon.com"] +authors: ["Martin Jambon"] +bug-reports: "https://github.com/mjambon/biniou/issues" +homepage: "https://github.com/mjambon/biniou" +doc: "https://mjambon.github.io/biniou/" +license: "BSD-3-Clause" +dev-repo: "git+https://github.com/mjambon/biniou.git" +synopsis: + "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" +description: """ + +Biniou (pronounced "be new") is a binary data format designed for speed, safety, +ease of use and backward compatibility as protocols evolve. Biniou is vastly +equivalent to JSON in terms of functionality but allows implementations several +times faster (4 times faster than yojson), with 25-35% space savings. + +Biniou data can be decoded into human-readable form without knowledge of type +definitions except for field and variant names which are represented by 31-bit +hashes. A program named bdump is provided for routine visualization of biniou +data files. + +The program atdgen is used to derive OCaml-Biniou serializers and deserializers +from type definitions. + +Biniou format specification: mjambon.github.io/atdgen-doc/biniou-format.txt""" +depends: [ + "easy-format" + "dune" {>= "1.10"} + "ocaml" {>= "4.02.3"} +] +url { + src: + "https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz" + checksum: [ + "sha256=35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" + "sha512=82670cc77bf3e869ee26e5fbe5a5affa45a22bc8b6c4bd7e85473912780e0111baca59b34a2c14feae3543ce6e239d7fddaeab24b686a65bfe642cdb91d27ebf" + ] +} diff --git a/esy.lock/opam/cmdliner.1.0.4/opam b/esy.lock/opam/cmdliner.1.0.4/opam new file mode 100644 index 0000000..b2187dc --- /dev/null +++ b/esy.lock/opam/cmdliner.1.0.4/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/cmdliner" +doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" +dev-repo: "git+http://erratique.ch/repos/cmdliner.git" +bug-reports: "https://github.com/dbuenzli/cmdliner/issues" +tags: [ "cli" "system" "declarative" "org:erratique" ] +license: "ISC" +depends:[ "ocaml" {>= "4.03.0"} ] +build: [[ make "all" "PREFIX=%{prefix}%" ]] +install: +[[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ] + [make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]] + +synopsis: """Declarative definition of command line interfaces for OCaml""" +description: """\ + +Cmdliner allows the declarative definition of command line interfaces +for OCaml. + +It provides a simple and compositional mechanism to convert command +line arguments to OCaml values and pass them to your functions. The +module automatically handles syntax errors, help messages and UNIX man +page generation. It supports programs with single or multiple commands +and respects most of the [POSIX][1] and [GNU][2] conventions. + +Cmdliner has no dependencies and is distributed under the ISC license. + +[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html +[2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html +""" +url { +archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz" +checksum: "fe2213d0bc63b1e10a2d0aa66d2fc8d9" +} diff --git a/esy.lock/opam/cppo.1.6.8/opam b/esy.lock/opam/cppo.1.6.8/opam new file mode 100644 index 0000000..c9d7f68 --- /dev/null +++ b/esy.lock/opam/cppo.1.6.8/opam @@ -0,0 +1,37 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: "Martin Jambon" +license: "BSD-3-Clause" +homepage: "https://github.com/ocaml-community/cppo" +doc: "https://ocaml-community.github.io/cppo/" +bug-reports: "https://github.com/ocaml-community/cppo/issues" +depends: [ + "ocaml" {>= "4.02.3"} + "dune" {>= "1.0"} + "base-unix" +] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +dev-repo: "git+https://github.com/ocaml-community/cppo.git" +synopsis: "Code preprocessor like cpp for OCaml" +description: """ +Cppo is an equivalent of the C preprocessor for OCaml programs. +It allows the definition of simple macros and file inclusion. + +Cppo is: + +* more OCaml-friendly than cpp +* easy to learn without consulting a manual +* reasonably fast +* simple to install and to maintain +""" +url { + src: "https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz" + checksum: [ + "md5=fed401197d86f9089e89f6cbdf1d660d" + "sha512=069bbe0ef09c03b0dc4b5795f909c3ef872fe99c6f1e6704a0fa97594b1570b3579226ec67fe11d696ccc349a4585055bbaf07c65eff423aa45af28abf38c858" + ] +} diff --git a/esy.lock/opam/csexp.1.5.1/opam b/esy.lock/opam/csexp.1.5.1/opam new file mode 100644 index 0000000..59324f9 --- /dev/null +++ b/esy.lock/opam/csexp.1.5.1/opam @@ -0,0 +1,60 @@ +opam-version: "2.0" +synopsis: "Parsing and printing of S-expressions in Canonical form" +description: """ + +This library provides minimal support for Canonical S-expressions +[1]. Canonical S-expressions are a binary encoding of S-expressions +that is super simple and well suited for communication between +programs. + +This library only provides a few helpers for simple applications. If +you need more advanced support, such as parsing from more fancy input +sources, you should consider copying the code of this library given +how simple parsing S-expressions in canonical form is. + +To avoid a dependency on a particular S-expression library, the only +module of this library is parameterised by the type of S-expressions. + +[1] https://en.wikipedia.org/wiki/Canonical_S-expressions +""" +maintainer: ["Jeremie Dimino "] +authors: [ + "Quentin Hocquet " + "Jane Street Group, LLC" + "Jeremie Dimino " +] +license: "MIT" +homepage: "https://github.com/ocaml-dune/csexp" +doc: "https://ocaml-dune.github.io/csexp/" +bug-reports: "https://github.com/ocaml-dune/csexp/issues" +depends: [ + "dune" {>= "1.11"} + "ocaml" {>= "4.03.0"} +# "ppx_expect" {with-test & >= "v0.14"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml-dune/csexp.git" +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" +# Tests disabled because of a cyclic dependency with csexp, dune-configurator and ppx_expect +# "@runtest" {with-test} + "@doc" {with-doc} + ] +] +x-commit-hash: "7eeb86206819d2b1782d6cde1be9d6cf8b5fc851" +url { + src: + "https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz" + checksum: [ + "sha256=d605e4065fa90a58800440ef2f33a2d931398bf2c22061a8acb7df845c0aac02" + "sha512=d785bbabaff9f6bf601399149ef0a42e5e99647b54e27f97ef1625907793dda22a45bf83e0e8a1eba2c63634c5484b54739ff0904ef556f5fc592efa38af7505" + ] +} diff --git a/esy.lock/opam/dot-merlin-reader.4.1/opam b/esy.lock/opam/dot-merlin-reader.4.1/opam new file mode 100644 index 0000000..f860cab --- /dev/null +++ b/esy.lock/opam/dot-merlin-reader.4.1/opam @@ -0,0 +1,30 @@ +opam-version: "2.0" +maintainer: "defree@gmail.com" +authors: "The Merlin team" +synopsis: "Reads config files for merlin" +homepage: "https://github.com/ocaml/merlin" +bug-reports: "https://github.com/ocaml/merlin/issues" +dev-repo: "git+https://github.com/ocaml/merlin.git" +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.06.1" } + "dune" {>= "2.7.0"} + "yojson" {>= "1.6.0"} + "ocamlfind" {>= "1.6.0"} + "csexp" {>= "1.2.3"} + "result" {>= "1.5"} +] +description: + "Helper process: reads .merlin files and gives the normalized content to merlin" +x-commit-hash: "ab02f60994c81166820791b5f465f467d752b8dc" +url { + src: + "https://github.com/ocaml/merlin/releases/download/v4.1/dot-merlin-reader-v4.1.tbz" + checksum: [ + "sha256=14a36d6fb8646a5df4530420a7861722f1a4ee04753717947305e3676031e7cd" + "sha512=65fd4ab08904c05651a7ef8971802ffaa428daa920765dbcf162e3c56e8047e4c9e4356daa45efccce7c73a586635c8f6cf8118fd3059789de9aff68579bd436" + ] +} diff --git a/esy.lock/opam/dune-build-info.2.9.1/opam b/esy.lock/opam/dune-build-info.2.9.1/opam new file mode 100644 index 0000000..59e0958 --- /dev/null +++ b/esy.lock/opam/dune-build-info.2.9.1/opam @@ -0,0 +1,42 @@ +opam-version: "2.0" +synopsis: "Embed build informations inside executable" +description: """ +The build-info library allows to access information about how the +executable was built, such as the version of the project at which it +was built or the list of statically linked libraries with their +versions. It supports reporting the version from the version control +system during development to get an precise reference of when the +executable was built. +""" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml/dune" +doc: "https://dune.readthedocs.io/" +bug-reports: "https://github.com/ocaml/dune/issues" +depends: [ + "dune" {>= "2.9"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +x-commit-hash: "e41c66259135d6d1d72b031be6684bf8826a2586" +url { + src: "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz" + checksum: [ + "sha256=b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + "sha512=fce1aa520db785c25ded75a959e9dafeb7887d4f5deeb14b044cd5b9e2d235dca24589d794d2f01513765bc4764cf72f8659bd15f3a4fc06efa61363dc5d709b" + ] +} diff --git a/esy.lock/opam/dune-configurator.2.9.1/opam b/esy.lock/opam/dune-configurator.2.9.1/opam new file mode 100644 index 0000000..9319b01 --- /dev/null +++ b/esy.lock/opam/dune-configurator.2.9.1/opam @@ -0,0 +1,47 @@ +opam-version: "2.0" +synopsis: "Helper library for gathering system configuration" +description: """ +dune-configurator is a small library that helps writing OCaml scripts that +test features available on the system, in order to generate config.h +files for instance. +Among other things, dune-configurator allows one to: +- test if a C program compiles +- query pkg-config +- import #define from OCaml header files +- generate config.h file +""" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml/dune" +doc: "https://dune.readthedocs.io/" +bug-reports: "https://github.com/ocaml/dune/issues" +depends: [ + "dune" {>= "2.9"} + "ocaml" {>= "4.03.0"} + "result" + "csexp" {>= "1.3.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +x-commit-hash: "e41c66259135d6d1d72b031be6684bf8826a2586" +url { + src: "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz" + checksum: [ + "sha256=b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + "sha512=fce1aa520db785c25ded75a959e9dafeb7887d4f5deeb14b044cd5b9e2d235dca24589d794d2f01513765bc4764cf72f8659bd15f3a4fc06efa61363dc5d709b" + ] +} diff --git a/esy.lock/opam/dune.2.9.1/opam b/esy.lock/opam/dune.2.9.1/opam new file mode 100644 index 0000000..6a57ecb --- /dev/null +++ b/esy.lock/opam/dune.2.9.1/opam @@ -0,0 +1,58 @@ +opam-version: "2.0" +synopsis: "Fast, portable, and opinionated build system" +description: """ + +dune is a build system that was designed to simplify the release of +Jane Street packages. It reads metadata from "dune" files following a +very simple s-expression syntax. + +dune is fast, has very low-overhead, and supports parallel builds on +all platforms. It has no system dependencies; all you need to build +dune or packages using dune is OCaml. You don't need make or bash +as long as the packages themselves don't use bash explicitly. + +dune supports multi-package development by simply dropping multiple +repositories into the same directory. + +It also supports multi-context builds, such as building against +several opam roots/switches simultaneously. This helps maintaining +packages across several versions of OCaml and gives cross-compilation +for free. +""" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml/dune" +doc: "https://dune.readthedocs.io/" +bug-reports: "https://github.com/ocaml/dune/issues" +conflicts: [ + "merlin" {< "3.4.0"} + "ocaml-lsp-server" {< "1.3.0"} + "dune-configurator" {< "2.3.0"} + "odoc" {< "1.3.0"} + "dune-release" {< "1.3.0"} + "js_of_ocaml-compiler" {< "3.6.0"} + "jbuilder" {= "transition"} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path + ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} + ["ocaml" "bootstrap.ml" "-j" jobs] + ["./dune.exe" "build" "-p" name "--profile" "dune-bootstrap" "-j" jobs] +] +depends: [ + # Please keep the lower bound in sync with .github/workflows/workflow.yml, + # dune-project and min_ocaml_version in bootstrap.ml + ("ocaml" {>= "4.08"} | ("ocaml" {< "4.08~~"} & "ocamlfind-secondary")) + "base-unix" + "base-threads" +] +x-commit-hash: "e41c66259135d6d1d72b031be6684bf8826a2586" +url { + src: "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz" + checksum: [ + "sha256=b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + "sha512=fce1aa520db785c25ded75a959e9dafeb7887d4f5deeb14b044cd5b9e2d235dca24589d794d2f01513765bc4764cf72f8659bd15f3a4fc06efa61363dc5d709b" + ] +} diff --git a/esy.lock/opam/easy-format.1.3.2/opam b/esy.lock/opam/easy-format.1.3.2/opam new file mode 100644 index 0000000..f55c2c8 --- /dev/null +++ b/esy.lock/opam/easy-format.1.3.2/opam @@ -0,0 +1,46 @@ +opam-version: "2.0" +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} + ["dune" "build" "-p" name "@doc"] {with-doc} +] +maintainer: ["martin@mjambon.com" "rudi.grinberg@gmail.com"] +authors: ["Martin Jambon"] +bug-reports: "https://github.com/mjambon/easy-format/issues" +homepage: "https://github.com/mjambon/easy-format" +doc: "https://mjambon.github.io/easy-format/" +license: "BSD-3-Clause" +dev-repo: "git+https://github.com/mjambon/easy-format.git" +synopsis: + "High-level and functional interface to the Format module of the OCaml standard library" +description: """ + +This module offers a high-level and functional interface to the Format module of +the OCaml standard library. It is a pretty-printing facility, i.e. it takes as +input some code represented as a tree and formats this code into the most +visually satisfying result, breaking and indenting lines of code where +appropriate. + +Input data must be first modelled and converted into a tree using 3 kinds of +nodes: + +* atoms +* lists +* labelled nodes + +Atoms represent any text that is guaranteed to be printed as-is. Lists can model +any sequence of items such as arrays of data or lists of definitions that are +labelled with something like "int main", "let x =" or "x:".""" +depends: [ + "dune" {>= "1.10"} + "ocaml" {>= "4.02.3"} +] +url { + src: + "https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz" + checksum: [ + "sha256=3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" + "sha512=e39377a2ff020ceb9ac29e8515a89d9bdbc91dfcfa871c4e3baafa56753fac2896768e5d9822a050dc1e2ade43c8967afb69391a386c0a8ecd4e1f774e236135" + ] +} diff --git a/esy.lock/opam/fix.20201120/opam b/esy.lock/opam/fix.20201120/opam new file mode 100644 index 0000000..65de74d --- /dev/null +++ b/esy.lock/opam/fix.20201120/opam @@ -0,0 +1,24 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " +] +homepage: "https://gitlab.inria.fr/fpottier/fix" +dev-repo: "git+https://gitlab.inria.fr/fpottier/fix.git" +bug-reports: "francois.pottier@inria.fr" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" { >= "4.03" } + "dune" {>= "1.3" } +] +synopsis: "Facilities for memoization and fixed points" +url { + src: + "https://gitlab.inria.fr/fpottier/fix/-/archive/20201120/archive.tar.gz" + checksum: [ + "md5=7eb570b759635fe66f3556d2b1cc88e3" + "sha512=344dcc619f9e8b8a6c998775b6d2dab2ea5253e6a67abe4797f76dc5dd30bc776568abce1e90477422e9db447821579889737e3531c42139708f813e983ea5d4" + ] +} diff --git a/esy.lock/opam/fpath.0.7.3/opam b/esy.lock/opam/fpath.0.7.3/opam new file mode 100644 index 0000000..ae3336e --- /dev/null +++ b/esy.lock/opam/fpath.0.7.3/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["The fpath programmers"] +homepage: "https://erratique.ch/software/fpath" +doc: "https://erratique.ch/software/fpath/doc" +dev-repo: "git+https://erratique.ch/repos/fpath.git" +bug-reports: "https://github.com/dbuenzli/fpath/issues" +tags: [ "file" "system" "path" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.03.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build & >= "0.9.0"} + "astring" +] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--dev-pkg=true" {dev} ]] + +synopsis: """File system paths for OCaml""" +description: """\ + +Fpath is an OCaml module for handling file system paths with POSIX or +Windows conventions. Fpath processes paths without accessing the file +system and is independent from any system library. + +Fpath depends on [Astring][astring] and is distributed under the ISC +license. + +[astring]: http://erratique.ch/software/astring +""" +url { +archive: "https://erratique.ch/software/fpath/releases/fpath-0.7.3.tbz" +checksum: "0740b530e8fed5b0adc5eee8463cfc2f" +} diff --git a/esy.lock/opam/menhir.20211012/opam b/esy.lock/opam/menhir.20211012/opam new file mode 100644 index 0000000..2849d81 --- /dev/null +++ b/esy.lock/opam/menhir.20211012/opam @@ -0,0 +1,28 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " + "Yann Régis-Gianas " +] +homepage: "http://gitlab.inria.fr/fpottier/menhir" +dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" +bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues" +license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.02.3"} + "dune" {>= "2.2.0"} + "menhirLib" {= version} + "menhirSdk" {= version} +] +synopsis: "An LR(1) parser generator" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20211012/archive.tar.gz" + checksum: [ + "md5=f631f4c03859254a7d725f054633ee44" + "sha512=13376d3c07158c36dd9b4617294a7e4d53ba90062ab09fae48c36b76f08133e2ffc4be13a1bc88980617c5d1046631844815c9ee7fd7c821699bacaf245b1ed8" + ] +} diff --git a/esy.lock/opam/menhirLib.20211012/opam b/esy.lock/opam/menhirLib.20211012/opam new file mode 100644 index 0000000..0a599d2 --- /dev/null +++ b/esy.lock/opam/menhirLib.20211012/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " + "Yann Régis-Gianas " +] +homepage: "http://gitlab.inria.fr/fpottier/menhir" +dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" +bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues" +license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" { >= "4.02.3" } + "dune" { >= "2.0.0" } +] +conflicts: [ + "menhir" { != version } +] +synopsis: "Runtime support library for parsers generated by Menhir" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20211012/archive.tar.gz" + checksum: [ + "md5=f631f4c03859254a7d725f054633ee44" + "sha512=13376d3c07158c36dd9b4617294a7e4d53ba90062ab09fae48c36b76f08133e2ffc4be13a1bc88980617c5d1046631844815c9ee7fd7c821699bacaf245b1ed8" + ] +} diff --git a/esy.lock/opam/menhirSdk.20211012/opam b/esy.lock/opam/menhirSdk.20211012/opam new file mode 100644 index 0000000..09da271 --- /dev/null +++ b/esy.lock/opam/menhirSdk.20211012/opam @@ -0,0 +1,29 @@ +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " + "Yann Régis-Gianas " +] +homepage: "http://gitlab.inria.fr/fpottier/menhir" +dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" +bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues" +license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" { >= "4.02.3" } + "dune" { >= "2.0.0" } +] +conflicts: [ + "menhir" { != version } +] +synopsis: "Compile-time library for auxiliary tools related to Menhir" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20211012/archive.tar.gz" + checksum: [ + "md5=f631f4c03859254a7d725f054633ee44" + "sha512=13376d3c07158c36dd9b4617294a7e4d53ba90062ab09fae48c36b76f08133e2ffc4be13a1bc88980617c5d1046631844815c9ee7fd7c821699bacaf245b1ed8" + ] +} diff --git a/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam b/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam new file mode 100644 index 0000000..14c9f75 --- /dev/null +++ b/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam @@ -0,0 +1,39 @@ +opam-version: "2.0" +synopsis: "OCaml compiler libraries repackaged" +description: """ +This packages exposes the OCaml compiler libraries repackages under +the toplevel names Ocaml_common, Ocaml_bytecomp, Ocaml_optcomp, ...""" +maintainer: ["Jane Street developers"] +authors: ["Jane Street Group, LLC"] +license: "MIT" +homepage: "https://github.com/janestreet/ocaml-compiler-libs" +bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues" +depends: [ + "dune" {>= "2.8"} + "ocaml" {>= "4.04.1"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git" +url { + src: + "https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.4/ocaml-compiler-libs-v0.12.4.tbz" + checksum: [ + "sha256=4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760" + "sha512=978dba8dfa61f98fa24fda7a9c26c2e837081f37d1685fe636dc19cfc3278a940cf01a10293504b185c406706bc1008bc54313d50f023bcdea6d5ac6c0788b35" + ] +} +x-commit-hash: "8cd12f18bb7171c2b67d661868c4271fae528d93" diff --git a/esy.lock/opam/ocaml-lsp-server.1.8.3/opam b/esy.lock/opam/ocaml-lsp-server.1.8.3/opam new file mode 100644 index 0000000..299e3ec --- /dev/null +++ b/esy.lock/opam/ocaml-lsp-server.1.8.3/opam @@ -0,0 +1,54 @@ +opam-version: "2.0" +synopsis: "LSP Server for OCaml" +description: "An LSP server for OCaml." +maintainer: ["Rudi Grinberg "] +authors: [ + "Andrey Popp <8mayday@gmail.com>" + "Rusty Key " + "Louis Roché " + "Oleksiy Golovko " + "Rudi Grinberg " + "Sacha Ayoun " + "cannorin " + "Ulugbek Abdullaev " + "Thibaut Mattio " + "Max Lantas " +] +license: "ISC" +homepage: "https://github.com/ocaml/ocaml-lsp" +bug-reports: "https://github.com/ocaml/ocaml-lsp/issues" +depends: [ + "dune" {>= "2.9"} + "yojson" + "re" {>= "1.5.0"} + "ppx_yojson_conv_lib" {>= "v0.14"} + "dune-build-info" + "dot-merlin-reader" + "pp" {>= "1.1.2"} + "csexp" {>= "1.5"} + "result" {>= "1.5"} + "ocamlformat-rpc-lib" {>= "0.18.0" & < "0.19.0"} + "odoc" {with-doc} + "ocaml" {>= "4.12" & < "4.13"} +] +dev-repo: "git+https://github.com/ocaml/ocaml-lsp.git" +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-j" + jobs + "ocaml-lsp-server.install" + "--release" + ] +] +url { + src: + "https://github.com/ocaml/ocaml-lsp/releases/download/1.8.3/jsonrpc-1.8.3.tbz" + checksum: [ + "sha256=58ef5aa7bf176712428b4e0b1015feaf6d677cbd9474f8822d132b25223b14e9" + "sha512=a368e3bc25eb6608110bd84b87142b6829a32182b61c336ad5faad597932e3c3db806a8043f52b234f2a05cc6ee88230267121fda81fff35c552cbb47ba895ab" + ] +} +x-commit-hash: "7bf6200c165b5959e49651c84093d61a64cf705d" diff --git a/esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam b/esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam new file mode 100644 index 0000000..6b14281 --- /dev/null +++ b/esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam @@ -0,0 +1,39 @@ +opam-version: "2.0" +maintainer: "frederic.bour@lakaban.net" +authors: [ + "Frédéric Bour " + "Jérémie Dimino " +] +license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" +bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" +doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" +tags: [ "syntax" "org:ocamllabs" ] +build: ["dune" "build" "-p" name "-j" jobs] +run-test: ["dune" "runtest" "-p" name "-j" jobs] +depends: [ + "dune" {>= "2.3"} + "ocaml" {>= "4.02.3" & < "4.14"} + "cinaps" {with-test & >= "v0.13.0"} +] +conflicts: [ + "base-effects" +] +synopsis: "Convert OCaml parsetrees between different versions" +description: """ +Convert OCaml parsetrees between different versions + +This library converts parsetrees, outcometree and ast mappers between +different OCaml versions. High-level functions help making PPX +rewriters independent of a compiler version. +""" +url { + src: + "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v2.2.0/ocaml-migrate-parsetree-v2.2.0.tbz" + checksum: [ + "sha256=b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1" + "sha512=d1a6e2a639f77d297690f9ed79318b7a403444585b062d2add9f370320f735ba54bca191a34401f15c576c7ee55b5ed232f20d9599aa67821c747d7e684fc5a7" + ] +} +x-commit-hash: "aeeb9317936937d360aa6cdb0cab953d11ff2c5d" diff --git a/esy.lock/opam/ocaml-version.3.4.0/opam b/esy.lock/opam/ocaml-version.3.4.0/opam new file mode 100644 index 0000000..248f3ac --- /dev/null +++ b/esy.lock/opam/ocaml-version.3.4.0/opam @@ -0,0 +1,49 @@ +opam-version: "2.0" +maintainer: "Anil Madhavapeddy " +authors: "Anil Madhavapeddy " +license: "ISC" +tags: "org:ocamllabs" +homepage: "https://github.com/ocurrent/ocaml-version" +doc: "https://ocurrent.github.io/ocaml-version/doc" +bug-reports: "https://github.com/ocurrent/ocaml-version/issues" +depends: [ + "ocaml" {>= "4.07.0"} + "dune" {>= "1.0"} + "alcotest" {with-test} +] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] +dev-repo: "git+https://github.com/ocurrent/ocaml-version.git" +synopsis: "Manipulate, parse and generate OCaml compiler version strings" +description: """ +This library provides facilities to parse version numbers of the OCaml +compiler, and enumerates the various official OCaml releases and configuration +variants. + +OCaml version numbers are of the form `major.minor.patch+extra`, where the +`patch` and `extra` fields are optional. This library offers the following +functionality: + +- Functions to parse and serialise OCaml compiler version numbers. +- Enumeration of official OCaml compiler version releases. +- Test compiler versions for a particular feature (e.g. the `bytes` type) +- [opam](https://opam.ocaml.org) compiler switch enumeration. + +### Further information + +- **Discussion:** Post on with the `ocaml` tag under + the Ecosystem category. +- **Bugs:** +- **Docs:** +""" +url { + src: + "https://github.com/ocurrent/ocaml-version/releases/download/v3.4.0/ocaml-version-v3.4.0.tbz" + checksum: [ + "sha256=d8c1beb5e8d8ebb7710b5f434ce66a3ec8b752b1e4d6ba87c4fe27452bdb8a25" + "sha512=215e5b0c4ea5fa5461cdc0fc81fbd84a2a319a246a19504d0a0abc8c891e252a9e41644356150a1dc25d56b3f7e084db7a0b15becab4e1339992e645fc3d8ef1" + ] +} +x-commit-hash: "c535ad2f463664b31001888fc99495dd01632747" diff --git a/esy.lock/opam/ocamlbuild.0.14.0/opam b/esy.lock/opam/ocamlbuild.0.14.0/opam new file mode 100644 index 0000000..debc52c --- /dev/null +++ b/esy.lock/opam/ocamlbuild.0.14.0/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Gabriel Scherer " +authors: ["Nicolas Pouillard" "Berke Durak"] +homepage: "https://github.com/ocaml/ocamlbuild/" +bug-reports: "https://github.com/ocaml/ocamlbuild/issues" +license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception" +doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" +dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" +build: [ + [ + make + "-f" + "configure.make" + "all" + "OCAMLBUILD_PREFIX=%{prefix}%" + "OCAMLBUILD_BINDIR=%{bin}%" + "OCAMLBUILD_LIBDIR=%{lib}%" + "OCAMLBUILD_MANDIR=%{man}%" + "OCAML_NATIVE=%{ocaml:native}%" + "OCAML_NATIVE_TOOLS=%{ocaml:native}%" + ] + [make "check-if-preinstalled" "all" "opam-install"] +] +conflicts: [ + "base-ocamlbuild" + "ocamlfind" {< "1.6.2"} +] +synopsis: + "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." +depends: [ + "ocaml" {>= "4.03"} +] +url { + src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" + checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" +} diff --git a/esy.lock/opam/ocamlfind.1.9.1/opam b/esy.lock/opam/ocamlfind.1.9.1/opam new file mode 100644 index 0000000..4b6e5c6 --- /dev/null +++ b/esy.lock/opam/ocamlfind.1.9.1/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +synopsis: "A library manager for OCaml" +description: """ +Findlib is a library manager for OCaml. It provides a convention how +to store libraries, and a file format ("META") to describe the +properties of libraries. There is also a tool (ocamlfind) for +interpreting the META files, so that it is very easy to use libraries +in programs and scripts. +""" +license: "MIT" +maintainer: "Thomas Gazagnaire " +authors: "Gerd Stolpmann " +homepage: "http://projects.camlcity.org/projects/findlib.html" +bug-reports: "https://github.com/ocaml/ocamlfind/issues" +depends: [ + "ocaml" {>= "4.00.0"} +] +depopts: ["graphics"] +build: [ + [ + "./configure" + "-bindir" bin + "-sitelib" lib + "-mandir" man + "-config" "%{lib}%/findlib.conf" + "-no-custom" + "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} + "-no-topfind" {ocaml:preinstalled} + ] + [make "all"] + [make "opt"] {ocaml:native} +] +install: [ + [make "install"] + ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} +] +dev-repo: "git+https://github.com/ocaml/ocamlfind.git" +url { + src: "http://download.camlcity.org/download/findlib-1.9.1.tar.gz" + checksum: [ + "md5=65e6dc9b305ccbed1267275fe180f538" + "sha512=83a05f3e310fa7cabb0475c5525f7a87c1b6bc2dc5e39f094cabfb5d944a826a5581844ba00ec1a48dd96184eb9de3c4d1055cdddee2b83c700a2de5a6dc6f84" + ] +} diff --git a/esy.lock/opam/ocamlformat-rpc-lib.0.18.0/opam b/esy.lock/opam/ocamlformat-rpc-lib.0.18.0/opam new file mode 100644 index 0000000..3ce7021 --- /dev/null +++ b/esy.lock/opam/ocamlformat-rpc-lib.0.18.0/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +synopsis: "Auto-formatter for OCaml code (RPC mode)" +description: + "OCamlFormat is a tool to automatically format OCaml code in a uniform style. This package defines a RPC interface to OCamlFormat" +maintainer: ["OCamlFormat Team "] +authors: ["Josh Berdine "] +license: "MIT" +homepage: "https://github.com/ocaml-ppx/ocamlformat" +bug-reports: "https://github.com/ocaml-ppx/ocamlformat/issues" +depends: [ + "dune" {>= "2.8"} + "ocaml" {>= "4.08" & < "4.13"} + "csexp" + "sexplib0" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-ppx/ocamlformat.git" +x-commit-hash: "3697f0f92854a681fd1156fe4f6fb97d060da1d8" +url { + src: + "https://github.com/ocaml-ppx/ocamlformat/releases/download/0.18.0/ocamlformat-0.18.0.tbz" + checksum: [ + "sha256=981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114" + "sha512=d1cbd63e4b82ff2e9ec0c96a9305704d3eea3e978c703ef9d1244853d8aaea912ad9f934379eeddfc1a0468b1cb1c2dc39ecf452189f2a35fa1ae53aec10b277" + ] +} diff --git a/esy.lock/opam/ocamlformat.0.18.0/opam b/esy.lock/opam/ocamlformat.0.18.0/opam new file mode 100644 index 0000000..1d9f0c3 --- /dev/null +++ b/esy.lock/opam/ocamlformat.0.18.0/opam @@ -0,0 +1,56 @@ +opam-version: "2.0" +synopsis: "Auto-formatter for OCaml code" +description: + "OCamlFormat is a tool to automatically format OCaml code in a uniform style." +maintainer: ["OCamlFormat Team "] +authors: ["Josh Berdine "] +license: "MIT" +homepage: "https://github.com/ocaml-ppx/ocamlformat" +bug-reports: "https://github.com/ocaml-ppx/ocamlformat/issues" +depends: [ + "dune" {>= "2.8"} + "ocaml" {>= "4.08" & < "4.13"} + "ocaml-version" {>= "3.1.0"} + "alcotest" {with-test} + "base" {>= "v0.12.0" & < "v0.15"} + "base-unix" + "cmdliner" + "dune-build-info" + "fix" + "fpath" + "menhir" {>= "20180528"} + "menhirLib" {>= "20200624"} + "menhirSdk" {>= "20200624"} + "ocp-indent" {with-test} + "bisect_ppx" {dev & >= "2.5.0"} + "odoc" {>= "1.4.2" & < "2.0.0"} + "ppxlib" {>= "0.22.0" & < "0.23.0"} + "re" {>= "1.7.2"} + "stdio" {< "v0.15"} + "uuseg" {>= "10.0.0"} + "uutf" {>= "1.0.1"} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-ppx/ocamlformat.git" +x-commit-hash: "3697f0f92854a681fd1156fe4f6fb97d060da1d8" +url { + src: + "https://github.com/ocaml-ppx/ocamlformat/releases/download/0.18.0/ocamlformat-0.18.0.tbz" + checksum: [ + "sha256=981a44296485da6ca29ab2cd8c711270398e5e1d1624408ec403c0b0ea9fe114" + "sha512=d1cbd63e4b82ff2e9ec0c96a9305704d3eea3e978c703ef9d1244853d8aaea912ad9f934379eeddfc1a0468b1cb1c2dc39ecf452189f2a35fa1ae53aec10b277" + ] +} diff --git a/esy.lock/opam/odoc.1.5.3/opam b/esy.lock/opam/odoc.1.5.3/opam new file mode 100644 index 0000000..eae8a5f --- /dev/null +++ b/esy.lock/opam/odoc.1.5.3/opam @@ -0,0 +1,53 @@ +opam-version: "2.0" + +homepage: "http://github.com/ocaml/odoc" +doc: "https://ocaml.github.io/odoc/" +bug-reports: "https://github.com/ocaml/odoc/issues" +license: "ISC" + +authors: [ + "Thomas Refis " + "David Sheets " + "Leo White " + "Anton Bachin " + "Jon Ludlam " +] +maintainer: "Jon Ludlam " +dev-repo: "git+https://github.com/ocaml/odoc.git" + +synopsis: "OCaml documentation generator" +description: """ +Odoc is a documentation generator for OCaml. It reads doc comments, +delimited with `(** ... *)`, and outputs HTML. +""" + +depends: [ + "astring" + "cmdliner" {>= "1.0.0"} + "cppo" {build & >= "1.1.0"} + "dune" + "fpath" + "ocaml" {>= "4.02.0"} + "result" + "tyxml" {>= "4.3.0"} + + "alcotest" {dev & >= "0.8.3" & with-test} + "markup" {dev & >= "1.0.0" & with-test} + "ocamlfind" {dev} + "sexplib" {dev & >= "113.33.00" & with-test} + + "bisect_ppx" {dev & >= "1.3.0"} +] + +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] +url { + src: "https://github.com/ocaml/odoc/releases/download/1.5.3/odoc-1.5.3.tbz" + checksum: [ + "sha256=f2b76f811658c4b52cb48ac4ffc2ec37cedd2a805111c7f8ec20f8f36b8bbf45" + "sha512=9e069590e0737c94813d25235b5cfe27feb5a0298a17ff9b9ee446c69827c3a0ea3b7da5d05b278639cd1f0202e0d83356707979edfaa2af73876fc000c23c4d" + ] +} +x-commit-hash: "8de4a36814533b25b461373fe5c0f54db55e5e7c" diff --git a/esy.lock/opam/pp.1.1.2/opam b/esy.lock/opam/pp.1.1.2/opam new file mode 100644 index 0000000..e09edbf --- /dev/null +++ b/esy.lock/opam/pp.1.1.2/opam @@ -0,0 +1,58 @@ +opam-version: "2.0" +synopsis: "Pretty-printing library" +description: """ + +This library provides a lean alternative to the Format [1] module of +the OCaml standard library. It aims to make it easy for users to do +the right thing. If you have tried Format before but find its API +complicated and difficult to use, then Pp might be a good choice for +you. + +Pp uses the same concepts of boxes and break hints, and the final +rendering is done to formatter from the Format module. However it +defines its own algebra which some might find easier to work with and +reason about. No previous knowledge is required to start using this +library, however the various guides for the Format module such as this +one [2] should be applicable to Pp as well. + +[1]: https://caml.inria.fr/pub/docs/manual-ocaml/libref/Format.html +[2]: http://caml.inria.fr/resources/doc/guides/format.en.html +""" +maintainer: ["Jeremie Dimino "] +authors: [ + "Jane Street Group, LLC" + "Jeremie Dimino " +] +license: "MIT" +homepage: "https://github.com/ocaml-dune/pp" +doc: "https://ocaml-dune.github.io/pp/" +bug-reports: "https://github.com/ocaml-dune/pp/issues" +depends: [ + "dune" {>= "2.0"} + "ocaml" {>= "4.08.0"} + "ppx_expect" {with-test} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-dune/pp.git" +x-commit-hash: "395b95c89cfe2c6d538dad9d56721b6a7278d46c" +url { + src: + "https://github.com/ocaml-dune/pp/releases/download/1.1.2/pp-1.1.2.tbz" + checksum: [ + "sha256=e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56" + "sha512=58f78b083483006b40814be9aac33c895349eb1c6427d2762b4d760192613401262478bd5deff909763517560b06af7bf013c6a6f87d549aafa77b26345303f2" + ] +} diff --git a/esy.lock/opam/ppx_derivers.1.2.1/opam b/esy.lock/opam/ppx_derivers.1.2.1/opam new file mode 100644 index 0000000..484b265 --- /dev/null +++ b/esy.lock/opam/ppx_derivers.1.2.1/opam @@ -0,0 +1,23 @@ +opam-version: "2.0" +maintainer: "jeremie@dimino.org" +authors: ["Jérémie Dimino"] +license: "BSD-3-Clause" +homepage: "https://github.com/ocaml-ppx/ppx_derivers" +bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ppx_derivers.git" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" + "dune" +] +synopsis: "Shared [@@deriving] plugin registry" +description: """ +Ppx_derivers is a tiny package whose sole purpose is to allow +ppx_deriving and ppx_type_conv to inter-operate gracefully when linked +as part of the same ocaml-migrate-parsetree driver.""" +url { + src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz" + checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" +} diff --git a/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam b/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam new file mode 100644 index 0000000..d5f369a --- /dev/null +++ b/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam @@ -0,0 +1,24 @@ +opam-version: "2.0" +maintainer: "Jane Street developers" +authors: ["Jane Street Group, LLC"] +homepage: "https://github.com/janestreet/ppx_yojson_conv_lib" +bug-reports: "https://github.com/janestreet/ppx_yojson_conv_lib/issues" +dev-repo: "git+https://github.com/janestreet/ppx_yojson_conv_lib.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/ppx_yojson_conv_lib/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.02.3"} + "dune" {>= "2.0.0"} + "yojson" {>= "1.7.0"} +] +synopsis: "Runtime lib for ppx_yojson_conv" +description: " +Part of the Jane Street's PPX rewriters collection. +" +url { + src: "https://ocaml.janestreet.com/ocaml-core/v0.14/files/ppx_yojson_conv_lib-v0.14.0.tar.gz" + checksum: "md5=e23c5593a7211ad4fb09e26e9a74698a" +} diff --git a/esy.lock/opam/ppxlib.0.22.2/opam b/esy.lock/opam/ppxlib.0.22.2/opam new file mode 100644 index 0000000..754b88c --- /dev/null +++ b/esy.lock/opam/ppxlib.0.22.2/opam @@ -0,0 +1,59 @@ +opam-version: "2.0" +synopsis: "Standard library for ppx rewriters" +description: """ +Ppxlib is the standard library for ppx rewriters and other programs +that manipulate the in-memory reprensation of OCaml programs, a.k.a +the "Parsetree". + +It also comes bundled with two ppx rewriters that are commonly used to +write tools that manipulate and/or generate Parsetree values; +`ppxlib.metaquot` which allows to construct Parsetree values using the +OCaml syntax directly and `ppxlib.traverse` which provides various +ways of automatically traversing values of a given type, in particular +allowing to inject a complex structured value into generated code. +""" +maintainer: ["opensource@janestreet.com"] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml-ppx/ppxlib" +doc: "https://ocaml-ppx.github.io/ppxlib/" +bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues" +depends: [ + "dune" {>= "2.7"} + "ocaml" {>= "4.04.1" & < "4.14"} + "ocaml-compiler-libs" {>= "v0.11.0"} + "ocaml-migrate-parsetree" {>= "2.2.0"} + "ppx_derivers" {>= "1.0"} + "sexplib0" {>= "v0.12"} + "stdlib-shims" + "ocamlfind" {with-test} + "re" {with-test & >= "1.9.0"} + "cinaps" {with-test & >= "v0.12.1"} + "base" {with-test} + "stdio" {with-test} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git" +x-commit-hash: "3cf57772fef4666a2992041cf3a670dd2be98603" +url { + src: + "https://github.com/ocaml-ppx/ppxlib/releases/download/0.22.2/ppxlib-0.22.2.tbz" + checksum: [ + "sha256=d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a" + "sha512=6010a59be6af873eaf193670f9cc8c9a7f091cfd89ec6c5b68d1f0c72d7c6015eec6371c009fc473cf2cb37d24f0934d04d0eacefa567a4945234197c3b31741" + ] +} diff --git a/esy.lock/opam/re.1.10.3/opam b/esy.lock/opam/re.1.10.3/opam new file mode 100644 index 0000000..c65d450 --- /dev/null +++ b/esy.lock/opam/re.1.10.3/opam @@ -0,0 +1,46 @@ +opam-version: "2.0" + +maintainer: "rudi.grinberg@gmail.com" +authors: [ + "Jerome Vouillon" + "Thomas Gazagnaire" + "Anil Madhavapeddy" + "Rudi Grinberg" + "Gabriel Radanne" +] +license: "LGPL-2.0 with OCaml linking exception" +homepage: "https://github.com/ocaml/ocaml-re" +bug-reports: "https://github.com/ocaml/ocaml-re/issues" +dev-repo: "git+https://github.com/ocaml/ocaml-re.git" + +build: [ + ["dune" "subst"] {pinned} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.02"} + "dune" {>= "2.0"} + "ounit" {with-test} + "seq" +] + +synopsis: "RE is a regular expression library for OCaml" +description: """ +Pure OCaml regular expressions with: +* Perl-style regular expressions (module Re.Perl) +* Posix extended regular expressions (module Re.Posix) +* Emacs-style regular expressions (module Re.Emacs) +* Shell-style file globbing (module Re.Glob) +* Compatibility layer for OCaml's built-in Str module (module Re.Str) +""" +url { + src: + "https://github.com/ocaml/ocaml-re/releases/download/1.10.3/re-1.10.3.tbz" + checksum: [ + "sha256=846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb" + "sha512=d02103b7b8b8d8bc797341dcc933554745427f3c1b51b54b4ac9ff81badfd68c94726c57548b08e00ca99f3e09741b54b6500e97c19fc0e8fcefd6dfbe71da7f" + ] +} +x-commit-hash: "c5d5df80e128c3d7646b7d8b1322012c5fcc35f3" diff --git a/esy.lock/opam/result.1.5/opam b/esy.lock/opam/result.1.5/opam new file mode 100644 index 0000000..6b7b68d --- /dev/null +++ b/esy.lock/opam/result.1.5/opam @@ -0,0 +1,22 @@ +opam-version: "2.0" +maintainer: "Jane Street developers" +authors: ["Jane Street Group, LLC"] +homepage: "https://github.com/janestreet/result" +dev-repo: "git+https://github.com/janestreet/result.git" +bug-reports: "https://github.com/janestreet/result/issues" +license: "BSD-3-Clause" +build: [["dune" "build" "-p" name "-j" jobs]] +depends: [ + "ocaml" + "dune" {>= "1.0"} +] +synopsis: "Compatibility Result module" +description: """ +Projects that want to use the new result type defined in OCaml >= 4.03 +while staying compatible with older version of OCaml should use the +Result module defined in this library.""" +url { + src: + "https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz" + checksum: "md5=1b82dec78849680b49ae9a8a365b831b" +} diff --git a/esy.lock/opam/seq.base/files/META.seq b/esy.lock/opam/seq.base/files/META.seq new file mode 100644 index 0000000..06b95ef --- /dev/null +++ b/esy.lock/opam/seq.base/files/META.seq @@ -0,0 +1,4 @@ +name="seq" +version="[distributed with OCaml 4.07 or above]" +description="dummy backward-compatibility package for iterators" +requires="" diff --git a/esy.lock/opam/seq.base/files/seq.install b/esy.lock/opam/seq.base/files/seq.install new file mode 100644 index 0000000..c4d7020 --- /dev/null +++ b/esy.lock/opam/seq.base/files/seq.install @@ -0,0 +1,3 @@ +lib:[ + "META.seq" {"META"} +] diff --git a/esy.lock/opam/seq.base/opam b/esy.lock/opam/seq.base/opam new file mode 100644 index 0000000..b33d8c7 --- /dev/null +++ b/esy.lock/opam/seq.base/opam @@ -0,0 +1,15 @@ +opam-version: "2.0" +maintainer: " " +authors: " " +homepage: " " +depends: [ + "ocaml" {>= "4.07.0"} +] +dev-repo: "git+https://github.com/ocaml/ocaml.git" +bug-reports: "https://caml.inria.fr/mantis/main_page.php" +synopsis: + "Compatibility package for OCaml's standard iterator type starting from 4.07." +extra-files: [ + ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] + ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] +] diff --git a/esy.lock/opam/sexplib0.v0.14.0/opam b/esy.lock/opam/sexplib0.v0.14.0/opam new file mode 100644 index 0000000..a618b82 --- /dev/null +++ b/esy.lock/opam/sexplib0.v0.14.0/opam @@ -0,0 +1,26 @@ +opam-version: "2.0" +maintainer: "Jane Street developers" +authors: ["Jane Street Group, LLC"] +homepage: "https://github.com/janestreet/sexplib0" +bug-reports: "https://github.com/janestreet/sexplib0/issues" +dev-repo: "git+https://github.com/janestreet/sexplib0.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/sexplib0/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.04.2"} + "dune" {>= "2.0.0"} +] +synopsis: "Library containing the definition of S-expressions and some base converters" +description: " +Part of Jane Street's Core library +The Core suite of libraries is an industrial strength alternative to +OCaml's standard library that was developed by Jane Street, the +largest industrial user of OCaml. +" +url { + src: "https://ocaml.janestreet.com/ocaml-core/v0.14/files/sexplib0-v0.14.0.tar.gz" + checksum: "md5=37aff0af8f8f6f759249475684aebdc4" +} diff --git a/esy.lock/opam/stdio.v0.14.0/opam b/esy.lock/opam/stdio.v0.14.0/opam new file mode 100644 index 0000000..cbe4a1e --- /dev/null +++ b/esy.lock/opam/stdio.v0.14.0/opam @@ -0,0 +1,27 @@ +opam-version: "2.0" +maintainer: "Jane Street developers" +authors: ["Jane Street Group, LLC"] +homepage: "https://github.com/janestreet/stdio" +bug-reports: "https://github.com/janestreet/stdio/issues" +dev-repo: "git+https://github.com/janestreet/stdio.git" +doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/stdio/index.html" +license: "MIT" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.04.2"} + "base" {>= "v0.14" & < "v0.15"} + "dune" {>= "2.0.0"} +] +synopsis: "Standard IO library for OCaml" +description: " +Stdio implements simple input/output functionalities for OCaml. + +It re-exports the input/output functions of the OCaml standard +libraries using a more consistent API. +" +url { + src: "https://ocaml.janestreet.com/ocaml-core/v0.14/files/stdio-v0.14.0.tar.gz" + checksum: "md5=4cbdf15f0be88c3258aaeff9e04e00e9" +} diff --git a/esy.lock/opam/stdlib-shims.0.3.0/opam b/esy.lock/opam/stdlib-shims.0.3.0/opam new file mode 100644 index 0000000..d657e04 --- /dev/null +++ b/esy.lock/opam/stdlib-shims.0.3.0/opam @@ -0,0 +1,31 @@ +opam-version: "2.0" +maintainer: "The stdlib-shims programmers" +authors: "The stdlib-shims programmers" +homepage: "https://github.com/ocaml/stdlib-shims" +doc: "https://ocaml.github.io/stdlib-shims/" +dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" +bug-reports: "https://github.com/ocaml/stdlib-shims/issues" +tags: ["stdlib" "compatibility" "org:ocaml"] +license: ["typeof OCaml system"] +depends: [ + "dune" + "ocaml" {>= "4.02.3"} +] +build: [ "dune" "build" "-p" name "-j" jobs ] +synopsis: "Backport some of the new stdlib features to older compiler" +description: """ +Backport some of the new stdlib features to older compiler, +such as the Stdlib module. + +This allows projects that require compatibility with older compiler to +use these new features in their code. +""" +x-commit-hash: "fb6815e5d745f07fd567c11671149de6ef2e74c8" +url { + src: + "https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz" + checksum: [ + "sha256=babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a" + "sha512=1151d7edc8923516e9a36995a3f8938d323aaade759ad349ed15d6d8501db61ffbe63277e97c4d86149cf371306ac23df0f581ec7e02611f58335126e1870980" + ] +} diff --git a/esy.lock/opam/topkg.1.0.4/opam b/esy.lock/opam/topkg.1.0.4/opam new file mode 100644 index 0000000..2093676 --- /dev/null +++ b/esy.lock/opam/topkg.1.0.4/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +synopsis: """The transitory OCaml software packager""" +maintainer: ["Daniel Bünzli "] +authors: ["The topkg programmers"] +homepage: "https://erratique.ch/software/topkg" +doc: "https://erratique.ch/software/topkg/doc" +dev-repo: "git+https://erratique.ch/repos/topkg.git" +bug-reports: "https://github.com/dbuenzli/topkg/issues" +license: ["ISC"] +tags: ["packaging" "ocamlbuild" "org:erratique"] +depends: ["ocaml" {>= "4.03.0"} + "ocamlfind" {build & >= "1.6.1"} + "ocamlbuild"] +build: [["ocaml" "pkg/pkg.ml" "build" "--pkg-name" name + "--dev-pkg" "%{dev}%"]] +url { + src: "https://erratique.ch/software/topkg/releases/topkg-1.0.4.tbz" + checksum: "sha512=5baa1bf0105397589b741acd0195069823548b2051e453dffd641e5d00536b7a5f41b38d005b2b063f9e7cfb9a3b627bec3e6ad48e56769cc35a71f97a897f1b"} +description: """ +Topkg is a packager for distributing OCaml software. It provides an +API to describe the files a package installs in a given build +configuration and to specify information about the package's +distribution, creation and publication procedures. + +The optional topkg-care package provides the `topkg` command line tool +which helps with various aspects of a package's life cycle: creating +and linting a distribution, releasing it on the WWW, publish its +documentation, add it to the OCaml opam repository, etc. + +Topkg is distributed under the ISC license and has **no** +dependencies. This is what your packages will need as a *build* +dependency. + +Topkg-care is distributed under the ISC license it depends on +[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], +[webbrowser][webbrowser] and `opam-format`. + +[fmt]: http://erratique.ch/software/fmt +[logs]: http://erratique.ch/software/logs +[bos]: http://erratique.ch/software/bos +[cmdliner]: http://erratique.ch/software/cmdliner +[webbrowser]: http://erratique.ch/software/webbrowser + +Home page: http://erratique.ch/software/topkg""" \ No newline at end of file diff --git a/esy.lock/opam/tyxml.4.5.0/opam b/esy.lock/opam/tyxml.4.5.0/opam new file mode 100644 index 0000000..22c7760 --- /dev/null +++ b/esy.lock/opam/tyxml.4.5.0/opam @@ -0,0 +1,42 @@ +opam-version: "2.0" +synopsis: "A library for building correct HTML and SVG documents" +description: + "TyXML provides a set of convenient combinators that uses the OCaml type system to ensure the validity of the generated documents. TyXML can be used with any representation of HTML and SVG: the textual one, provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) virtual DOM (`virtual-dom`) and reactive or replicated trees (`eliom`). You can also create your own representation and use it to instantiate a new set of combinators." +maintainer: ["dev@ocsigen.org"] +authors: ["The ocsigen team"] +license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocsigen/tyxml" +doc: "https://ocsigen.org/tyxml/latest/manual/intro" +bug-reports: "https://github.com/ocsigen/tyxml/issues" +depends: [ + "dune" {>= "2.0"} + "ocaml" {>= "4.02"} + "alcotest" {with-test} + "re" {>= "1.5.0"} + "seq" + "uutf" {>= "1.0.0"} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocsigen/tyxml.git" +x-commit-hash: "ef431a4bceaefb2d9248e79092e6c1a1a9420095" +url { + src: + "https://github.com/ocsigen/tyxml/releases/download/4.5.0/tyxml-4.5.0.tbz" + checksum: [ + "sha256=c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068" + "sha512=772535441b09c393d53c27152e65f404a0a541aa0cea1bda899a8d751ab64d1729237e583618c3ff33d75e3865d53503d1ea413c6bbc8c68c413347efd1709b3" + ] +} diff --git a/esy.lock/opam/uchar.0.0.2/opam b/esy.lock/opam/uchar.0.0.2/opam new file mode 100644 index 0000000..428d7aa --- /dev/null +++ b/esy.lock/opam/uchar.0.0.2/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://ocaml.org" +doc: "https://ocaml.github.io/uchar/" +dev-repo: "git+https://github.com/ocaml/uchar.git" +bug-reports: "https://github.com/ocaml/uchar/issues" +tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] +license: "typeof OCaml system" +depends: [ + "ocaml" {>= "3.12.0"} + "ocamlbuild" {build} +] +build: [ + ["ocaml" "pkg/git.ml"] + [ + "ocaml" + "pkg/build.ml" + "native=%{ocaml:native}%" + "native-dynlink=%{ocaml:native-dynlink}%" + ] +] +synopsis: "Compatibility library for OCaml's Uchar module" +description: """ +The `uchar` package provides a compatibility library for the +[`Uchar`][1] module introduced in OCaml 4.03. + +The `uchar` package is distributed under the license of the OCaml +compiler. See [LICENSE](LICENSE) for details. + +[1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" +url { + src: + "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" + checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" +} diff --git a/esy.lock/opam/uucp.14.0.0/opam b/esy.lock/opam/uucp.14.0.0/opam new file mode 100644 index 0000000..812dd47 --- /dev/null +++ b/esy.lock/opam/uucp.14.0.0/opam @@ -0,0 +1,41 @@ +opam-version: "2.0" +synopsis: """Unicode character properties for OCaml""" +maintainer: ["Daniel Bünzli "] +authors: ["The uucp programmers"] +homepage: "https://erratique.ch/software/uucp" +doc: "https://erratique.ch/software/uucp/doc/" +dev-repo: "git+https://erratique.ch/repos/uucp.git" +bug-reports: "https://github.com/dbuenzli/uucp/issues" +license: ["ISC"] +tags: ["unicode" "text" "character" "org:erratique"] +depends: ["ocaml" {>= "4.03.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build & >= "1.0.3"} + "uucd" {with-test} + "uunf" {with-test} + "uutf" {with-test}] +depopts: ["uutf" + "uunf" + "cmdliner"] +conflicts: ["uutf" {< "1.0.1"} + "cmdliner" {< "1.0.0"}] +build: [["ocaml" "pkg/pkg.ml" "build" "--dev-pkg" "%{dev}%" + "--with-uutf" "%{uutf:installed}%" + "--with-uunf" "%{uunf:installed}%" + "--with-cmdliner" "%{cmdliner:installed}%" ]] +description: """ +Uucp is an OCaml library providing efficient access to a selection of +character properties of the [Unicode character database][1]. + +Uucp is independent from any Unicode text data structure and has no +dependencies. It is distributed under the ISC license. + +[1]: http://www.unicode.org/reports/tr44/ + +Home page: http://erratique.ch/software/uucp""" +url { + src: "https://erratique.ch/software/uucp/releases/uucp-14.0.0.tbz" + checksum: "sha512=2d0224aed5d5accbb121624898f08598e8c74a2415942f159a54221c0cdac62ed64fc70a039c833e50110cefce77754ada9ac2d58f79a6fc9331135326fe6899"} +post-messages: ["If the build fails with \"ocamlopt.opt got signal and exited\", issue 'ulimit -s unlimited' and retry." + {failure & (arch = "ppc64" | arch = "arm64")}] \ No newline at end of file diff --git a/esy.lock/opam/uuseg.14.0.0/opam b/esy.lock/opam/uuseg.14.0.0/opam new file mode 100644 index 0000000..79fb208 --- /dev/null +++ b/esy.lock/opam/uuseg.14.0.0/opam @@ -0,0 +1,43 @@ +opam-version: "2.0" +synopsis: """Unicode text segmentation for OCaml""" +maintainer: ["Daniel Bünzli "] +authors: ["The uuseg programmers"] +homepage: "https://erratique.ch/software/uuseg" +doc: "https://erratique.ch/software/uuseg/doc/" +dev-repo: "git+https://erratique.ch/repos/uuseg.git" +bug-reports: "https://github.com/dbuenzli/uuseg/issues" +license: ["ISC"] +tags: ["unicode" "text" "segmentation" "org:erratique"] +depends: ["ocaml" {>= "4.03.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build & >= "1.0.3"} + "uucp" {>= "14.0.0" & < "15.0.0"}] +depopts: ["uutf" + "cmdliner"] +conflicts: ["uutf" {< "1.0.0"}] +build: [["ocaml" "pkg/pkg.ml" "build" "--dev-pkg" "%{dev}%" + "--with-uutf" "%{uutf:installed}%" + "--with-cmdliner" "%{cmdliner:installed}%" ]] +url { + src: "https://erratique.ch/software/uuseg/releases/uuseg-14.0.0.tbz" + checksum: "sha512=3f089baf95f010663a0c2f060b2911395d9b396f478efb10fd979815f527c9e61e0a70b3192f2e921f59287bfde0da6e25109d4a1825554e2e4a50c0535e97aa"} +description: """ +Uuseg is an OCaml library for segmenting Unicode text. It implements +the locale independent [Unicode text segmentation algorithms][1] to +detect grapheme cluster, word and sentence boundaries and the +[Unicode line breaking algorithm][2] to detect line break +opportunities. + +The library is independent from any IO mechanism or Unicode text data +structure and it can process text without a complete in-memory +representation. + +Uuseg depends on [Uucp](http://erratique.ch/software/uucp) and +optionally on [Uutf](http://erratique.ch/software/uutf) for support on +OCaml UTF-X encoded strings. It is distributed under the ISC license. + +[1]: http://www.unicode.org/reports/tr29/ +[2]: http://www.unicode.org/reports/tr14/ + +Homepage: http://erratique.ch/software/uuseg""" \ No newline at end of file diff --git a/esy.lock/opam/uutf.1.0.2/opam b/esy.lock/opam/uutf.1.0.2/opam new file mode 100644 index 0000000..3a9f567 --- /dev/null +++ b/esy.lock/opam/uutf.1.0.2/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +maintainer: "Daniel Bünzli " +authors: ["Daniel Bünzli "] +homepage: "http://erratique.ch/software/uutf" +doc: "http://erratique.ch/software/uutf/doc/Uutf" +dev-repo: "git+http://erratique.ch/repos/uutf.git" +bug-reports: "https://github.com/dbuenzli/uutf/issues" +tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] +license: "ISC" +depends: [ + "ocaml" {>= "4.01.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build} + "uchar" +] +depopts: ["cmdliner"] +conflicts: ["cmdliner" { < "0.9.6"} ] +build: [[ + "ocaml" "pkg/pkg.ml" "build" + "--pinned" "%{pinned}%" + "--with-cmdliner" "%{cmdliner:installed}%" ]] +synopsis: """Non-blocking streaming Unicode codec for OCaml""" +description: """\ + +Uutf is a non-blocking streaming codec to decode and encode the UTF-8, +UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently +work character by character without blocking on IO. Decoders perform +character position tracking and support newline normalization. + +Functions are also provided to fold over the characters of UTF encoded +OCaml string values and to directly encode characters in OCaml +Buffer.t values. + +Uutf has no dependency and is distributed under the ISC license. +""" +url { +archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" +checksum: "a7c542405a39630c689a82bd7ef2292c" +} diff --git a/esy.lock/opam/yojson.1.7.0/opam b/esy.lock/opam/yojson.1.7.0/opam new file mode 100644 index 0000000..f543805 --- /dev/null +++ b/esy.lock/opam/yojson.1.7.0/opam @@ -0,0 +1,38 @@ +opam-version: "2.0" +maintainer: "martin@mjambon.com" +authors: ["Martin Jambon"] +homepage: "https://github.com/ocaml-community/yojson" +bug-reports: "https://github.com/ocaml-community/yojson/issues" +dev-repo: "git+https://github.com/ocaml-community/yojson.git" +doc: "https://ocaml-community.github.io/yojson/" +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] +run-test: [["dune" "runtest" "-p" name "-j" jobs]] +depends: [ + "ocaml" {>= "4.02.3"} + "dune" + "cppo" {build} + "easy-format" + "biniou" {>= "1.2.0"} + "alcotest" {with-test & >= "0.8.5"} +] +synopsis: + "Yojson is an optimized parsing and printing library for the JSON format" +description: """ +Yojson is an optimized parsing and printing library for the JSON format. + +It addresses a few shortcomings of json-wheel including 2x speedup, +polymorphic variants and optional syntax for tuples and variants. + +ydump is a pretty-printing command-line program provided with the +yojson package. + +The program atdgen can be used to derive OCaml-JSON serializers and +deserializers from type definitions.""" +url { + src: + "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" + checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" +} diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch new file mode 100644 index 0000000..4d5bea0 --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch @@ -0,0 +1,463 @@ +--- ./Makefile ++++ ./Makefile +@@ -213,7 +213,7 @@ + rm -f man/ocamlbuild.1 + + man/options_man.byte: src/ocamlbuild_pack.cmo +- $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte ++ $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte + + clean:: + rm -f man/options_man.cm* +--- ./src/command.ml ++++ ./src/command.ml +@@ -148,9 +148,10 @@ + let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in + let b = Buffer.create 256 in + (* The best way to prevent bash from switching to its windows-style +- * quote-handling is to prepend an empty string before the command name. *) ++ * quote-handling is to prepend an empty string before the command name. ++ * space seems to work, too - and the ouput is nicer *) + if Sys.os_type = "Win32" then +- Buffer.add_string b "''"; ++ Buffer.add_char b ' '; + let first = ref true in + let put_space () = + if !first then +@@ -260,7 +261,7 @@ + + let execute_many ?(quiet=false) ?(pretend=false) cmds = + add_parallel_stat (List.length cmds); +- let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in ++ let degraded = !*My_unix.is_degraded in + let jobs = !jobs in + if jobs < 0 then invalid_arg "jobs < 0"; + let max_jobs = if jobs = 0 then None else Some jobs in +--- ./src/findlib.ml ++++ ./src/findlib.ml +@@ -66,9 +66,6 @@ + (fun command -> lexer & Lexing.from_string & run_and_read command) + command + +-let run_and_read command = +- Printf.ksprintf run_and_read command +- + let rec query name = + try + Hashtbl.find packages name +@@ -135,7 +132,8 @@ + with Not_found -> s + + let list () = +- List.map before_space (split_nl & run_and_read "%s list" ocamlfind) ++ let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in ++ List.map before_space (split_nl & run_and_read cmd) + + (* The closure algorithm is easy because the dependencies are already closed + and sorted for each package. We only have to make the union. We could also +--- ./src/main.ml ++++ ./src/main.ml +@@ -162,6 +162,9 @@ + Tags.mem "traverse" tags + || List.exists (Pathname.is_prefix path_name) !Options.include_dirs + || List.exists (Pathname.is_prefix path_name) target_dirs) ++ && ((* beware: !Options.build_dir is an absolute directory *) ++ Pathname.normalize !Options.build_dir ++ <> Pathname.normalize (Pathname.pwd/path_name)) + end + end + end +--- ./src/my_std.ml ++++ ./src/my_std.ml +@@ -271,13 +271,107 @@ + try Array.iter (fun x -> if x = basename then raise Exit) a; false + with Exit -> true + ++let command_plain = function ++| [| |] -> 0 ++| margv -> ++ let rec waitpid a b = ++ match Unix.waitpid a b with ++ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b ++ | x -> x ++ in ++ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in ++ let pid', process_status = waitpid [] pid in ++ assert (pid = pid'); ++ match process_status with ++ | Unix.WEXITED n -> n ++ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) ++ | Unix.WSTOPPED _ -> 127 ++ ++(* can't use Lexers because of circular dependency *) ++let split_path_win str = ++ let rec aux pos = ++ try ++ let i = String.index_from str pos ';' in ++ let len = i - pos in ++ if len = 0 then ++ aux (succ i) ++ else ++ String.sub str pos (i - pos) :: aux (succ i) ++ with Not_found | Invalid_argument _ -> ++ let len = String.length str - pos in ++ if len = 0 then [] else [String.sub str pos len] ++ in ++ aux 0 ++ ++let windows_shell = lazy begin ++ let rec iter = function ++ | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] ++ | hd::tl -> ++ let dash = Filename.concat hd "dash.exe" in ++ if Sys.file_exists dash then [|dash|] else ++ let bash = Filename.concat hd "bash.exe" in ++ if Sys.file_exists bash = false then iter tl else ++ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) ++ let sh = Filename.concat hd "sh.exe" in ++ if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] ++ in ++ split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter ++end ++ ++let prep_windows_cmd cmd = ++ (* workaround known ocaml bug, remove later *) ++ if String.contains cmd '\t' && String.contains cmd ' ' = false then ++ " " ^ cmd ++ else ++ cmd ++ ++let run_with_shell = function ++| "" -> 0 ++| cmd -> ++ let cmd = prep_windows_cmd cmd in ++ let shell = Lazy.force windows_shell in ++ let qlen = Filename.quote cmd |> String.length in ++ (* old versions of dash had problems with bs *) ++ try ++ if qlen < 7_900 then ++ command_plain (Array.append shell [| "-ec" ; cmd |]) ++ else begin ++ (* it can still work, if the called command is a cygwin tool *) ++ let ch_closed = ref false in ++ let file_deleted = ref false in ++ let fln,ch = ++ Filename.open_temp_file ++ ~mode:[Open_binary] ++ "ocamlbuildtmp" ++ ".sh" ++ in ++ try ++ let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in ++ output_string ch cmd; ++ ch_closed:= true; ++ close_out ch; ++ let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in ++ file_deleted:= true; ++ Sys.remove fln; ++ ret ++ with ++ | x -> ++ if !ch_closed = false then ++ close_out_noerr ch; ++ if !file_deleted = false then ++ (try Sys.remove fln with _ -> ()); ++ raise x ++ end ++ with ++ | (Unix.Unix_error _) as x -> ++ (* Sys.command doesn't raise an exception, so run_with_shell also won't ++ raise *) ++ Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; ++ 1 ++ + let sys_command = +- match Sys.os_type with +- | "Win32" -> fun cmd -> +- if cmd = "" then 0 else +- let cmd = "bash --norc -c " ^ Filename.quote cmd in +- Sys.command cmd +- | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd ++ if Sys.win32 then run_with_shell ++ else fun cmd -> if cmd = "" then 0 else Sys.command cmd + + (* FIXME warning fix and use Filename.concat *) + let filename_concat x y = +--- ./src/my_std.mli ++++ ./src/my_std.mli +@@ -69,3 +69,6 @@ + + val split_ocaml_version : (int * int * int * string) option + (** (major, minor, patchlevel, rest) *) ++ ++val windows_shell : string array Lazy.t ++val prep_windows_cmd : string -> string +--- ./src/ocamlbuild_executor.ml ++++ ./src/ocamlbuild_executor.ml +@@ -34,6 +34,8 @@ + job_stdin : out_channel; + job_stderr : in_channel; + job_buffer : Buffer.t; ++ job_pid : int; ++ job_tmp_file: string option; + mutable job_dying : bool; + };; + +@@ -76,6 +78,61 @@ + in + loop 0 + ;; ++ ++let open_process_full_win cmd env = ++ let (in_read, in_write) = Unix.pipe () in ++ let (out_read, out_write) = Unix.pipe () in ++ let (err_read, err_write) = Unix.pipe () in ++ Unix.set_close_on_exec in_read; ++ Unix.set_close_on_exec out_write; ++ Unix.set_close_on_exec err_read; ++ let inchan = Unix.in_channel_of_descr in_read in ++ let outchan = Unix.out_channel_of_descr out_write in ++ let errchan = Unix.in_channel_of_descr err_read in ++ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in ++ let test_cmd = ++ String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ ++ "-ec " ^ ++ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in ++ let argv,tmp_file = ++ if String.length test_cmd < 7_900 then ++ Array.append ++ shell ++ [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None ++ else ++ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in ++ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); ++ close_out ch; ++ let fln' = String.map (function '\\' -> '/' | c -> c) fln in ++ Array.append ++ shell ++ [| "-c" ; fln' |], Some fln in ++ let pid = ++ Unix.create_process_env argv.(0) argv env out_read in_write err_write in ++ Unix.close out_read; ++ Unix.close in_write; ++ Unix.close err_write; ++ (pid, inchan, outchan, errchan,tmp_file) ++ ++let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = ++ let delete tmp_file = ++ match tmp_file with ++ | None -> () ++ | Some x -> try Sys.remove x with Sys_error _ -> () in ++ let tmp_file_deleted = ref false in ++ try ++ close_in inchan; ++ close_out outchan; ++ close_in errchan; ++ let res = snd(Unix.waitpid [] pid) in ++ tmp_file_deleted := true; ++ delete tmp_file; ++ res ++ with ++ | x when tmp_file <> None && !tmp_file_deleted = false -> ++ delete tmp_file; ++ raise x ++ + (* ***) + (*** execute *) + (* XXX: Add test for non reentrancy *) +@@ -130,10 +187,16 @@ + (*** add_job *) + let add_job cmd rest result id = + (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) +- let (stdout', stdin', stderr') = open_process_full cmd env in ++ let (pid,stdout', stdin', stderr', tmp_file) = ++ if Sys.win32 then open_process_full_win cmd env else ++ let a,b,c = open_process_full cmd env in ++ -1,a,b,c,None ++ in + incr jobs_active; +- set_nonblock (doi stdout'); +- set_nonblock (doi stderr'); ++ if not Sys.win32 then ( ++ set_nonblock (doi stdout'); ++ set_nonblock (doi stderr'); ++ ); + let job = + { job_id = id; + job_command = cmd; +@@ -143,7 +206,9 @@ + job_stdin = stdin'; + job_stderr = stderr'; + job_buffer = Buffer.create 1024; +- job_dying = false } ++ job_dying = false; ++ job_tmp_file = tmp_file; ++ job_pid = pid } + in + outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); + jobs := JS.add job !jobs; +@@ -199,6 +264,7 @@ + try + read fd u 0 (Bytes.length u) + with ++ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 + | Unix.Unix_error(e,_,_) -> + let msg = error_message e in + display (fun oc -> fp oc +@@ -241,14 +307,19 @@ + decr jobs_active; + + (* PR#5371: we would get EAGAIN below otherwise *) +- clear_nonblock (doi job.job_stdout); +- clear_nonblock (doi job.job_stderr); +- ++ if not Sys.win32 then ( ++ clear_nonblock (doi job.job_stdout); ++ clear_nonblock (doi job.job_stderr); ++ ); + do_read ~loop:true (doi job.job_stdout) job; + do_read ~loop:true (doi job.job_stderr) job; + outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); + jobs := JS.remove job !jobs; +- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in ++ let status = ++ if Sys.win32 then ++ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) ++ else ++ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in + + let shown = ref false in + +--- ./src/ocamlbuild_unix_plugin.ml ++++ ./src/ocamlbuild_unix_plugin.ml +@@ -48,12 +48,22 @@ + end + + let run_and_open s kont = ++ let s_orig = s in ++ let s = ++ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and ++ sys_command uses bash. *) ++ if Sys.win32 = false then s else ++ let l = match Lazy.force My_std.windows_shell |> Array.to_list with ++ | hd::tl -> (Filename.quote hd)::tl ++ | _ -> assert false in ++ "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" ++ in + let ic = Unix.open_process_in s in + let close () = + match Unix.close_process_in ic with + | Unix.WEXITED 0 -> () + | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> +- failwith (Printf.sprintf "Error while running: %s" s) in ++ failwith (Printf.sprintf "Error while running: %s" s_orig) in + let res = try + kont ic + with e -> (close (); raise e) +--- ./src/options.ml ++++ ./src/options.ml +@@ -174,11 +174,24 @@ + build_dir := Filename.concat (Sys.getcwd ()) s + else + build_dir := s ++ ++let slashify = ++ if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p ++ else fun p ->p ++ ++let sb () = ++ match Sys.os_type with ++ | "Win32" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ | _ -> () ++ ++ + let spec = ref ( + let print_version () = ++ sb (); + Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK + in +- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in ++ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in + Arg.align + [ + "-version", Unit print_version , " Display the version"; +@@ -257,8 +270,8 @@ + "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; + "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; + "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; +- "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; +- "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; ++ "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; ++ "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; + "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; + "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ + used when building myocamlbuild.ml (only)"; +--- ./src/pathname.ml ++++ ./src/pathname.ml +@@ -84,6 +84,26 @@ + | x :: xs -> x :: normalize_list xs + + let normalize x = ++ let x = ++ if Sys.win32 = false then ++ x ++ else ++ let len = String.length x in ++ let b = Bytes.create len in ++ for i = 0 to pred len do ++ match x.[i] with ++ | '\\' -> Bytes.set b i '/' ++ | c -> Bytes.set b i c ++ done; ++ if len > 1 then ( ++ let c1 = Bytes.get b 0 in ++ let c2 = Bytes.get b 1 in ++ if c2 = ':' && c1 >= 'a' && c1 <= 'z' && ++ ( len = 2 || Bytes.get b 2 = '/') then ++ Bytes.set b 0 (Char.uppercase_ascii c1) ++ ); ++ Bytes.unsafe_to_string b ++ in + if Glob.eval not_normal_form_re x then + let root, paths = split x in + join root (normalize_list paths) +--- ./src/shell.ml ++++ ./src/shell.ml +@@ -24,12 +24,26 @@ + | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) + | _ -> false in + loop 0 ++ ++let generic_quote quotequote s = ++ let l = String.length s in ++ let b = Buffer.create (l + 20) in ++ Buffer.add_char b '\''; ++ for i = 0 to l - 1 do ++ if s.[i] = '\'' ++ then Buffer.add_string b quotequote ++ else Buffer.add_char b s.[i] ++ done; ++ Buffer.add_char b '\''; ++ Buffer.contents b ++let unix_quote = generic_quote "'\\''" ++ + let quote_filename_if_needed s = + if is_simple_filename s then s + (* We should probably be using [Filename.unix_quote] except that function + * isn't exported. Users on Windows will have to live with not being able to + * install OCaml into c:\o'caml. Too bad. *) +- else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s ++ else if Sys.os_type = "Win32" then unix_quote s + else Filename.quote s + let chdir dir = + reset_filesys_cache (); +@@ -37,7 +51,7 @@ + let run args target = + reset_readdir_cache (); + let cmd = String.concat " " (List.map quote_filename_if_needed args) in +- if !*My_unix.is_degraded || Sys.os_type = "Win32" then ++ if !*My_unix.is_degraded then + begin + Log.event cmd target Tags.empty; + let st = sys_command cmd in diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json new file mode 100644 index 0000000..b24be7b --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json @@ -0,0 +1,27 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" + ], + [ + "make", + "-f", + "configure.make", + "all", + "OCAMLBUILD_PREFIX=#{self.install}", + "OCAMLBUILD_BINDIR=#{self.bin}", + "OCAMLBUILD_LIBDIR=#{self.lib}", + "OCAMLBUILD_MANDIR=#{self.man}", + "OCAMLBUILD_NATIVE=true", + "OCAMLBUILD_NATIVE_TOOLS=true" + ], + [ + "make", + "check-if-preinstalled", + "all", + "#{os == 'windows' ? 'install' : 'opam-install'}" + ] + ] +} diff --git a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch new file mode 100644 index 0000000..3e3ee5a --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch @@ -0,0 +1,471 @@ +--- ./Makefile ++++ ./Makefile +@@ -57,16 +57,16 @@ + cat findlib.conf.in | \ + $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf + if ./tools/cmd_from_same_dir ocamlc; then \ +- echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ ++ echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamlopt; then \ +- echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ ++ echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldep; then \ +- echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ ++ echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + if ./tools/cmd_from_same_dir ocamldoc; then \ +- echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ ++ echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ + fi + + .PHONY: install-doc +--- ./src/findlib/findlib_config.mlp ++++ ./src/findlib/findlib_config.mlp +@@ -24,3 +24,5 @@ + | "MacOS" -> "" (* don't know *) + | _ -> failwith "Unknown Sys.os_type" + ;; ++ ++let exec_suffix = "@EXEC_SUFFIX@";; +--- ./src/findlib/findlib.ml ++++ ./src/findlib/findlib.ml +@@ -28,15 +28,20 @@ + let conf_ldconf = ref "";; + let conf_ignore_dups_in = ref ([] : string list);; + +-let ocamlc_default = "ocamlc";; +-let ocamlopt_default = "ocamlopt";; +-let ocamlcp_default = "ocamlcp";; +-let ocamloptp_default = "ocamloptp";; +-let ocamlmklib_default = "ocamlmklib";; +-let ocamlmktop_default = "ocamlmktop";; +-let ocamldep_default = "ocamldep";; +-let ocamlbrowser_default = "ocamlbrowser";; +-let ocamldoc_default = "ocamldoc";; ++let add_exec str = ++ match Findlib_config.exec_suffix with ++ | "" -> str ++ | a -> str ^ a ;; ++let ocamlc_default = add_exec "ocamlc";; ++let ocamlopt_default = add_exec "ocamlopt";; ++let ocamlcp_default = add_exec "ocamlcp";; ++let ocamloptp_default = add_exec "ocamloptp";; ++let ocamlmklib_default = add_exec "ocamlmklib";; ++let ocamlmktop_default = add_exec "ocamlmktop";; ++let ocamldep_default = add_exec "ocamldep";; ++let ocamlbrowser_default = add_exec "ocamlbrowser";; ++let ocamldoc_default = add_exec "ocamldoc";; ++ + + + let init_manually +--- ./src/findlib/fl_package_base.ml ++++ ./src/findlib/fl_package_base.ml +@@ -133,7 +133,15 @@ + List.find (fun def -> def.def_var = "exists_if") p.package_defs in + let files = Fl_split.in_words def.def_value in + List.exists +- (fun file -> Sys.file_exists (Filename.concat d' file)) ++ (fun file -> ++ let fln = Filename.concat d' file in ++ let e = Sys.file_exists fln in ++ (* necessary for ppx executables *) ++ if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then ++ e ++ else ++ Sys.file_exists (fln ^ ".exe") ++ ) + files + with Not_found -> true in + +--- ./src/findlib/fl_split.ml ++++ ./src/findlib/fl_split.ml +@@ -126,10 +126,17 @@ + | '/' | '\\' -> true + | _ -> false in + let norm_dir_win() = +- if l >= 1 && s.[0] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[0]; +- if l >= 2 && s.[1] = '/' then +- Buffer.add_char b '\\' else Buffer.add_char b s.[1]; ++ if l >= 1 then ( ++ if s.[0] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[0] ; ++ if l >= 2 then ++ if s.[1] = '/' then ++ Buffer.add_char b '\\' ++ else ++ Buffer.add_char b s.[1]; ++ ); + for k = 2 to l - 1 do + let c = s.[k] in + if is_slash c then ( +--- ./src/findlib/frontend.ml ++++ ./src/findlib/frontend.ml +@@ -31,10 +31,18 @@ + else + Sys_error (arg ^ ": " ^ Unix.error_message code) + ++let is_win = Sys.os_type = "Win32" ++ ++let () = ++ match Findlib_config.system with ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> ++ (try set_binary_mode_out stdout true with _ -> ()); ++ (try set_binary_mode_out stderr true with _ -> ()); ++ | _ -> () + + let slashify s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> + let b = Buffer.create 80 in + String.iter + (function +@@ -49,7 +57,7 @@ + + let out_path ?(prefix="") s = + match Findlib_config.system with +- | "mingw" | "mingw64" | "cygwin" -> ++ | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> + let u = slashify s in + prefix ^ + (if String.contains u ' ' then +@@ -273,11 +281,9 @@ + + + let identify_dir d = +- match Sys.os_type with +- | "Win32" -> +- failwith "identify_dir" (* not available *) +- | _ -> +- let s = Unix.stat d in ++ if is_win then ++ failwith "identify_dir"; (* not available *) ++ let s = Unix.stat d in + (s.Unix.st_dev, s.Unix.st_ino) + ;; + +@@ -459,6 +465,96 @@ + ) + packages + ++let rewrite_cmd s = ++ if s = "" || not is_win then ++ s ++ else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_cmd s = ++ if s = "" || not is_win then s else ++ let s = ++ let l = String.length s in ++ let b = Buffer.create l in ++ for i = 0 to pred l do ++ match s.[i] with ++ | '/' -> Buffer.add_char b '\\' ++ | x -> Buffer.add_char b x ++ done; ++ Buffer.contents b ++ in ++ if (Filename.is_implicit s && String.contains s '\\' = false) || ++ Filename.check_suffix (String.lowercase s) ".exe" then ++ s ++ else ++ let s' = s ^ ".exe" in ++ if Sys.file_exists s' then ++ s' ++ else ++ s ++ ++let rewrite_pp cmd = ++ if not is_win then cmd else ++ let module T = struct exception Keep end in ++ let is_whitespace = function ++ | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true ++ | _ -> false in ++ (* characters that triggers special behaviour (cmd.exe, not unix shell) *) ++ let is_unsafe_char = function ++ | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true ++ | _ -> false in ++ let len = String.length cmd in ++ let buf = Buffer.create (len + 4) in ++ let buf_cmd = Buffer.create len in ++ let rec iter_ws i = ++ if i >= len then () else ++ let cur = cmd.[i] in ++ if is_whitespace cur then ( ++ Buffer.add_char buf cur; ++ iter_ws (succ i) ++ ) ++ else ++ iter_cmd i ++ and iter_cmd i = ++ if i >= len then add_buf_cmd () else ++ let cur = cmd.[i] in ++ if is_unsafe_char cur || cur = '"' || cur = '\'' then ++ raise T.Keep; ++ if is_whitespace cur then ( ++ add_buf_cmd (); ++ Buffer.add_substring buf cmd i (len - i) ++ ) ++ else ( ++ Buffer.add_char buf_cmd cur; ++ iter_cmd (succ i) ++ ) ++ and add_buf_cmd () = ++ if Buffer.length buf_cmd > 0 then ++ Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) ++ in ++ try ++ iter_ws 0; ++ Buffer.contents buf ++ with ++ | T.Keep -> cmd + + let process_pp_spec syntax_preds packages pp_opts = + (* Returns: pp_command *) +@@ -549,7 +645,7 @@ + None -> [] + | Some cmd -> + ["-pp"; +- cmd ^ " " ^ ++ (rewrite_cmd cmd) ^ " " ^ + String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ + String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ + String.concat " " (List.map Filename.quote pp_opts)] +@@ -625,9 +721,11 @@ + in + try + let preprocessor = ++ rewrite_cmd ( + resolve_path + ~base ~explicit:true +- (package_property predicates pname "ppx") in ++ (package_property predicates pname "ppx") ) ++ in + ["-ppx"; String.concat " " (preprocessor :: options)] + with Not_found -> [] + ) +@@ -895,6 +993,14 @@ + switch (e.g. -L instead of -L ) + *) + ++(* We may need to remove files on which we do not have complete control. ++ On Windows, removing a read-only file fails so try to change the ++ mode of the file first. *) ++let remove_file fname = ++ try Sys.remove fname ++ with Sys_error _ when is_win -> ++ (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); ++ Sys.remove fname + + let ocamlc which () = + +@@ -1022,9 +1128,12 @@ + + "-intf", + Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); +- ++ + "-pp", +- Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); ++ Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); ++ ++ "-ppx", ++ Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); + + "-thread", + Arg.Unit (fun _ -> threads := threads_default); +@@ -1237,7 +1346,7 @@ + with + any -> + close_out initl; +- Sys.remove initl_file_name; ++ remove_file initl_file_name; + raise any + end; + +@@ -1245,9 +1354,9 @@ + at_exit + (fun () -> + let tr f x = try f x with _ -> () in +- tr Sys.remove initl_file_name; +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); +- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); ++ tr remove_file initl_file_name; ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); ++ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); + ); + + let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in +@@ -1493,7 +1602,9 @@ + [ "-v", Arg.Unit (fun () -> verbose := Verbose); + "-pp", Arg.String (fun s -> + pp_specified := true; +- options := !options @ ["-pp"; s]); ++ options := !options @ ["-pp"; rewrite_pp s]); ++ "-ppx", Arg.String (fun s -> ++ options := !options @ ["-ppx"; rewrite_pp s]); + ] + ) + ) +@@ -1672,7 +1783,9 @@ + Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); + + "-pp", Arg.String (fun s -> pp_specified := true; +- add_spec_fn "-pp" s); ++ add_spec_fn "-pp" (rewrite_pp s)); ++ "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); ++ + ] + ) + ) +@@ -1830,7 +1943,10 @@ + output_string ch_out append; + close_out ch_out; + close_in ch_in; +- Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; ++ (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime ++ with Unix.Unix_error(e,_,_) -> ++ prerr_endline("Warning: setting utimes for " ^ outpath ++ ^ ": " ^ Unix.error_message e)); + + prerr_endline("Installed " ^ outpath); + with +@@ -1882,6 +1998,8 @@ + Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in + let f = + Unix.in_channel_of_descr fd in ++ if is_win then ++ set_binary_mode_in f false; + try + let line = input_line f in + let is_my_file = (line = pkg) in +@@ -2208,7 +2326,7 @@ + let lines = read_ldconf !ldconf in + let dlldir_norm = Fl_split.norm_dir dlldir in + let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in +- let ci_filesys = (Sys.os_type = "Win32") in ++ let ci_filesys = is_win in + let check_dir d = + let d' = Fl_split.norm_dir d in + (d' = dlldir_norm) || +@@ -2356,7 +2474,7 @@ + List.iter + (fun file -> + let absfile = Filename.concat dlldir file in +- Sys.remove absfile; ++ remove_file absfile; + prerr_endline ("Removed " ^ absfile) + ) + dll_files +@@ -2365,7 +2483,7 @@ + (* Remove the files from the package directory: *) + if Sys.file_exists pkgdir then begin + let files = Sys.readdir pkgdir in +- Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; ++ Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; + Unix.rmdir pkgdir; + prerr_endline ("Removed " ^ pkgdir) + end +@@ -2415,7 +2533,9 @@ + + + let print_configuration() = ++ let sl = slashify in + let dir s = ++ let s = sl s in + if Sys.file_exists s then + s + else +@@ -2453,27 +2573,27 @@ + if md = "" then "the corresponding package directories" else dir md + ); + Printf.printf "The standard library is assumed to reside in:\n %s\n" +- (Findlib.ocaml_stdlib()); ++ (sl (Findlib.ocaml_stdlib())); + Printf.printf "The ld.conf file can be found here:\n %s\n" +- (Findlib.ocaml_ldconf()); ++ (sl (Findlib.ocaml_ldconf())); + flush stdout + | Some "conf" -> +- print_endline (Findlib.config_file()) ++ print_endline (sl (Findlib.config_file())) + | Some "path" -> +- List.iter print_endline (Findlib.search_path()) ++ List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) + | Some "destdir" -> +- print_endline (Findlib.default_location()) ++ print_endline ( sl (Findlib.default_location())) + | Some "metadir" -> +- print_endline (Findlib.meta_directory()) ++ print_endline ( sl (Findlib.meta_directory())) + | Some "metapath" -> + let mdir = Findlib.meta_directory() in + let ddir = Findlib.default_location() in +- print_endline +- (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") ++ print_endline ( sl ++ (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) + | Some "stdlib" -> +- print_endline (Findlib.ocaml_stdlib()) ++ print_endline ( sl (Findlib.ocaml_stdlib())) + | Some "ldconf" -> +- print_endline (Findlib.ocaml_ldconf()) ++ print_endline ( sl (Findlib.ocaml_ldconf())) + | _ -> + assert false + ;; +@@ -2481,7 +2601,7 @@ + + let ocamlcall pkg cmd = + let dir = package_directory pkg in +- let path = Filename.concat dir cmd in ++ let path = rewrite_cmd (Filename.concat dir cmd) in + begin + try Unix.access path [ Unix.X_OK ] + with +@@ -2647,6 +2767,10 @@ + | Sys_error f -> + prerr_endline ("ocamlfind: " ^ f); + exit 2 ++ | Unix.Unix_error (e, fn, f) -> ++ prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f ++ ^ ": " ^ Unix.error_message e); ++ exit 2 + | Findlib.No_such_package(pkg,info) -> + prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ + (if info <> "" then " - " ^ info else "")); +--- ./src/findlib/Makefile ++++ ./src/findlib/Makefile +@@ -90,6 +90,7 @@ + cat findlib_config.mlp | \ + $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ + $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ ++ $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ + sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ + -e 's;@SYSTEM@;$(SYSTEM);g' \ + >findlib_config.ml diff --git a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json new file mode 100644 index 0000000..741211a --- /dev/null +++ b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json @@ -0,0 +1,61 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < findlib-1.9.1.patch' : 'true'}" + ], + [ + "./configure", + "-bindir", + "#{self.bin}", + "-sitelib", + "#{self.lib}", + "-mandir", + "#{self.man}", + "-config", + "#{self.lib}/findlib.conf", + "-no-custom", + "-no-topfind" + ], + [ + "make", + "all" + ], + [ + "make", + "opt" + ] + ], + "install": [ + [ + "make", + "install" + ], + [ + "install", + "-m", + "0755", + "ocaml-stub", + "#{self.bin}/ocaml" + ], + [ + "mkdir", + "-p", + "#{self.toplevel}" + ], + [ + "install", + "-m", + "0644", + "src/findlib/topfind", + "#{self.toplevel}/topfind" + ] + ], + "exportedEnv": { + "OCAML_TOPLEVEL_PATH": { + "val": "#{self.toplevel}", + "scope": "global" + } + } +} diff --git a/libbinaryen.opam b/libbinaryen.opam new file mode 100644 index 0000000..b6c7b97 --- /dev/null +++ b/libbinaryen.opam @@ -0,0 +1,18 @@ +opam-version: "2.0" +version: "101.0.0" +synopsis: "Libbinaryen packaged for OCaml" +maintainer: "blaine@grain-lang.org" +author: "Blaine Bublitz" +license: "Apache-2.0" +homepage: "https://github.com/grain-lang/libbinaryen" +dev-repo: "git+https://github.com/grain-lang/libbinaryen.git" +bug-reports: "https://github.com/grain-lang/libbinaryen/issues" +build: [ + [ "dune" "subst" ] {dev} + [ "dune" "build" "-p" name "-j" jobs ] +] +depends: [ + "conf-cmake" {= "1"} + "dune" {>= "2.9.1"} + "dune-configurator" {>= "2.9.1"} +] diff --git a/package.json b/package.json new file mode 100644 index 0000000..f1d323b --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "@grain/libbinaryen", + "version": "101.0.0", + "description": "Libbinaryen packaged for OCaml.", + "author": "Blaine Bublitz ", + "license": "Apache-2.0", + "dependencies": { + "ocaml": "4.12.0", + "@opam/conf-cmake": "grain-lang/cmake:esy.json#1cead3871bbb27a45adab2263ef2dff4a38a8869", + "@opam/dune": "^2.9.1", + "@opam/dune-configurator": "^2.9.1" + }, + "devDependencies": { + "@opam/ocamlformat": "0.18.0", + "@opam/ocaml-lsp-server": "^1.8.2" + }, + "esy": { + "build": [ + "dune build -p libbinaryen" + ], + "buildEnv": { + "CC": "#{os == 'windows' ? 'x86_64-w64-mingw32-gcc' : ''}", + "CXX": "#{os == 'windows' ? 'x86_64-w64-mingw32-g++' : ''}" + } + }, + "scripts": { + "test": "esy b dune runtest", + "format": "dune build @fmt --auto-promote" + }, + "installConfig": { + "pnp": false + }, + "keywords": [ + "binaryen", + "ocaml" + ] +} diff --git a/test/binaryen_stubs_types.c b/test/binaryen_stubs_types.c new file mode 100644 index 0000000..c055225 --- /dev/null +++ b/test/binaryen_stubs_types.c @@ -0,0 +1,36 @@ +#define CAML_NAME_SPACE +#include +#include +#include +#include +#include + +#include "binaryen-c.h" + +static struct custom_operations binaryen_ops = { + "com.binaryen.caml", + custom_finalize_default, + custom_compare_default, + custom_hash_default, + custom_serialize_default, + custom_deserialize_default, + custom_compare_ext_default, + custom_fixed_length_default +}; + +#define BinaryenType_val(v) (*((BinaryenType*) Data_custom_val(v))) + +/* Allocating an OCaml custom block to hold the given BinaryenType */ +static value alloc_BinaryenType(BinaryenType typ) +{ + value v = caml_alloc_custom(&binaryen_ops, sizeof(BinaryenType), 0, 1); + BinaryenType_val(v) = typ; + return v; +} + +CAMLprim value +caml_binaryen_type_none(value unit) { + CAMLparam1(unit); + BinaryenType ty = BinaryenTypeNone(); + CAMLreturn(alloc_BinaryenType(ty)); +} diff --git a/test/dune b/test/dune new file mode 100644 index 0000000..4128cc3 --- /dev/null +++ b/test/dune @@ -0,0 +1,16 @@ +(library + (name binaryen) + (libraries libbinaryen_c) + (modules types) + (foreign_stubs + (language c) + (names binaryen_stubs_types) + (flags :standard -O2 -Wall -Wextra)) + (c_library_flags :standard -lstdc++ -lpthread)) + +(test + (name test) + (modules test) + (libraries binaryen) + (action + (run %{test}))) diff --git a/test/test.ml b/test/test.ml new file mode 100644 index 0000000..59fbdd4 --- /dev/null +++ b/test/test.ml @@ -0,0 +1 @@ +let _ = Binaryen.Types.none diff --git a/test/types.ml b/test/types.ml new file mode 100644 index 0000000..6294271 --- /dev/null +++ b/test/types.ml @@ -0,0 +1,5 @@ +type t + +external none : unit -> t = "caml_binaryen_type_none" + +let none = none ()