From cdcfec4f81ad0113baf7a9a574b5bee96d0a996f Mon Sep 17 00:00:00 2001 From: Oscar Spencer Date: Thu, 18 Apr 2024 14:22:17 -0400 Subject: [PATCH] feat(silo): Initial Silo scaffolding --- .github/workflows/build-js.yml | 9 +- .github/workflows/build-native.yml | 22 +- .github/workflows/dependencies.yml | 11 +- .github/workflows/silo.yml | 92 ++ .gitignore | 1 + compiler/package.json | 2 +- package-lock.json | 90 +- package.json | 4 +- silo/.gitignore | 3 + silo/.vscode/settings.json | 10 + silo/README.md | 166 ++ silo/config/dune | 8 + silo/config/flags.re | 21 + silo/dune | 10 + silo/dune-project | 32 + silo/dune-workspace | 8 + silo/esy.json | 49 + silo/esy.lock/.gitattributes | 3 + silo/esy.lock/.gitignore | 3 + silo/esy.lock/index.json | 1440 +++++++++++++++++ silo/esy.lock/opam/ISO8601.0.2.6/opam | 26 + silo/esy.lock/opam/base-bigarray.base/opam | 6 + silo/esy.lock/opam/base-bytes.base/opam | 9 + silo/esy.lock/opam/base-threads.base/opam | 6 + silo/esy.lock/opam/base-unix.base/opam | 6 + silo/esy.lock/opam/chrome-trace.3.13.1/opam | 40 + silo/esy.lock/opam/cppo.1.6.9/opam | 39 + silo/esy.lock/opam/csexp.1.5.2/opam | 58 + .../esy.lock/opam/dune-build-info.3.11.1/opam | 46 + .../opam/dune-configurator.3.11.1/opam | 50 + silo/esy.lock/opam/dune-rpc.3.13.1/opam | 44 + silo/esy.lock/opam/dune.3.11.1/opam | 57 + silo/esy.lock/opam/dyn.3.13.1/opam | 41 + silo/esy.lock/opam/fiber.3.7.0/opam | 39 + silo/esy.lock/opam/fix.20230505/opam | 26 + silo/esy.lock/opam/menhir.20231231/opam | 30 + silo/esy.lock/opam/menhirCST.20231231/opam | 29 + silo/esy.lock/opam/menhirLib.20231231/opam | 30 + silo/esy.lock/opam/menhirSdk.20231231/opam | 30 + silo/esy.lock/opam/merlin-extend.0.6.1/opam | 30 + .../opam/ocaml-compiler-libs.v0.12.4/opam | 39 + .../opam/ocaml-lsp-server.1.14.1/opam | 63 + silo/esy.lock/opam/ocamlbuild.0.14.3/opam | 40 + .../files/0001-Harden-test-for-OCaml-5.patch | 12 + silo/esy.lock/opam/ocamlfind.1.9.6/opam | 48 + .../opam/ocamlformat-rpc-lib.0.26.1/opam | 49 + silo/esy.lock/opam/octavius.1.2.2/opam | 33 + silo/esy.lock/opam/omd.1.3.2/opam | 50 + silo/esy.lock/opam/ordering.3.13.1/opam | 39 + silo/esy.lock/opam/pp.1.2.0/opam | 59 + silo/esy.lock/opam/ppx_derivers.1.2.1/opam | 23 + silo/esy.lock/opam/ppx_deriving.5.2.1/opam | 40 + .../opam/ppx_yojson_conv_lib.v0.16.0/opam | 24 + .../opam/ppxlib.0.32.1~5.2preview/opam | 63 + silo/esy.lock/opam/re.1.11.0/opam | 46 + silo/esy.lock/opam/reason.3.9.0/opam | 51 + silo/esy.lock/opam/result.1.5/opam | 22 + silo/esy.lock/opam/seq.base/files/META.seq | 4 + silo/esy.lock/opam/seq.base/files/seq.install | 3 + silo/esy.lock/opam/seq.base/opam | 15 + silo/esy.lock/opam/sexplib0.v0.16.0/opam | 26 + silo/esy.lock/opam/spawn.v0.15.1/opam | 56 + silo/esy.lock/opam/stdlib-shims.0.3.0/opam | 31 + silo/esy.lock/opam/stdune.3.13.1/opam | 45 + silo/esy.lock/opam/toml.7.1.0/opam | 52 + silo/esy.lock/opam/topkg.1.0.7/opam | 47 + silo/esy.lock/opam/uutf.1.0.3/opam | 36 + silo/esy.lock/opam/xdg.3.13.1/opam | 40 + silo/esy.lock/opam/yojson.2.1.2/opam | 48 + .../files/ocamlbuild-0.14.2.patch | 0 .../files/winpatch.patch | 11 + .../package.json | 29 + .../files/findlib.patch | 11 + .../package.json | 61 + .../package.json | 3 + silo/package-lock.json | 239 +++ silo/package.json | 30 + silo/silo.re | 10 + silo/src/ansi.re | 31 + silo/src/build.re | 130 ++ silo/src/cli.re | 79 + silo/src/cmd.re | 280 ++++ silo/src/cmd.rei | 49 + silo/src/config.re | 123 ++ silo/src/dune | 9 + silo/src/new.re | 68 + silo/test/BinaryFileExtensions.re | 71 + silo/test/TestFramework.re | 47 + silo/test/config/dune | 8 + silo/test/config/flags.re | 21 + silo/test/dune | 21 + silo/test/input/minimal/silo.toml | 5 + silo/test/input/minimal/src/main.gr | 3 + silo/test/input/path/code/path.gr | 3 + silo/test/input/path/silo.toml | 8 + silo/test/runner.re | 50 + silo/test/suites/build.re | 45 + silo/test/suites/dune | 5 + silo/test/suites/new.re | 68 + silo/test/test.re | 2 + 100 files changed, 5216 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/silo.yml create mode 100644 silo/.gitignore create mode 100644 silo/.vscode/settings.json create mode 100644 silo/README.md create mode 100644 silo/config/dune create mode 100644 silo/config/flags.re create mode 100644 silo/dune create mode 100644 silo/dune-project create mode 100644 silo/dune-workspace create mode 100644 silo/esy.json create mode 100644 silo/esy.lock/.gitattributes create mode 100644 silo/esy.lock/.gitignore create mode 100644 silo/esy.lock/index.json create mode 100644 silo/esy.lock/opam/ISO8601.0.2.6/opam create mode 100644 silo/esy.lock/opam/base-bigarray.base/opam create mode 100644 silo/esy.lock/opam/base-bytes.base/opam create mode 100644 silo/esy.lock/opam/base-threads.base/opam create mode 100644 silo/esy.lock/opam/base-unix.base/opam create mode 100644 silo/esy.lock/opam/chrome-trace.3.13.1/opam create mode 100644 silo/esy.lock/opam/cppo.1.6.9/opam create mode 100644 silo/esy.lock/opam/csexp.1.5.2/opam create mode 100644 silo/esy.lock/opam/dune-build-info.3.11.1/opam create mode 100644 silo/esy.lock/opam/dune-configurator.3.11.1/opam create mode 100644 silo/esy.lock/opam/dune-rpc.3.13.1/opam create mode 100644 silo/esy.lock/opam/dune.3.11.1/opam create mode 100644 silo/esy.lock/opam/dyn.3.13.1/opam create mode 100644 silo/esy.lock/opam/fiber.3.7.0/opam create mode 100644 silo/esy.lock/opam/fix.20230505/opam create mode 100644 silo/esy.lock/opam/menhir.20231231/opam create mode 100644 silo/esy.lock/opam/menhirCST.20231231/opam create mode 100644 silo/esy.lock/opam/menhirLib.20231231/opam create mode 100644 silo/esy.lock/opam/menhirSdk.20231231/opam create mode 100644 silo/esy.lock/opam/merlin-extend.0.6.1/opam create mode 100644 silo/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam create mode 100644 silo/esy.lock/opam/ocaml-lsp-server.1.14.1/opam create mode 100644 silo/esy.lock/opam/ocamlbuild.0.14.3/opam create mode 100644 silo/esy.lock/opam/ocamlfind.1.9.6/files/0001-Harden-test-for-OCaml-5.patch create mode 100644 silo/esy.lock/opam/ocamlfind.1.9.6/opam create mode 100644 silo/esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam create mode 100644 silo/esy.lock/opam/octavius.1.2.2/opam create mode 100644 silo/esy.lock/opam/omd.1.3.2/opam create mode 100644 silo/esy.lock/opam/ordering.3.13.1/opam create mode 100644 silo/esy.lock/opam/pp.1.2.0/opam create mode 100644 silo/esy.lock/opam/ppx_derivers.1.2.1/opam create mode 100644 silo/esy.lock/opam/ppx_deriving.5.2.1/opam create mode 100644 silo/esy.lock/opam/ppx_yojson_conv_lib.v0.16.0/opam create mode 100644 silo/esy.lock/opam/ppxlib.0.32.1~5.2preview/opam create mode 100644 silo/esy.lock/opam/re.1.11.0/opam create mode 100644 silo/esy.lock/opam/reason.3.9.0/opam create mode 100644 silo/esy.lock/opam/result.1.5/opam create mode 100644 silo/esy.lock/opam/seq.base/files/META.seq create mode 100644 silo/esy.lock/opam/seq.base/files/seq.install create mode 100644 silo/esy.lock/opam/seq.base/opam create mode 100644 silo/esy.lock/opam/sexplib0.v0.16.0/opam create mode 100644 silo/esy.lock/opam/spawn.v0.15.1/opam create mode 100644 silo/esy.lock/opam/stdlib-shims.0.3.0/opam create mode 100644 silo/esy.lock/opam/stdune.3.13.1/opam create mode 100644 silo/esy.lock/opam/toml.7.1.0/opam create mode 100644 silo/esy.lock/opam/topkg.1.0.7/opam create mode 100644 silo/esy.lock/opam/uutf.1.0.3/opam create mode 100644 silo/esy.lock/opam/xdg.3.13.1/opam create mode 100644 silo/esy.lock/opam/yojson.2.1.2/opam create mode 100644 silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/ocamlbuild-0.14.2.patch create mode 100644 silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/winpatch.patch create mode 100644 silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/package.json create mode 100644 silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/files/findlib.patch create mode 100644 silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/package.json create mode 100644 silo/esy.lock/overrides/opam__s__reason_opam__c__3.9.0_opam_override/package.json create mode 100644 silo/package-lock.json create mode 100644 silo/package.json create mode 100644 silo/silo.re create mode 100644 silo/src/ansi.re create mode 100644 silo/src/build.re create mode 100644 silo/src/cli.re create mode 100644 silo/src/cmd.re create mode 100644 silo/src/cmd.rei create mode 100644 silo/src/config.re create mode 100644 silo/src/dune create mode 100644 silo/src/new.re create mode 100644 silo/test/BinaryFileExtensions.re create mode 100644 silo/test/TestFramework.re create mode 100644 silo/test/config/dune create mode 100644 silo/test/config/flags.re create mode 100644 silo/test/dune create mode 100644 silo/test/input/minimal/silo.toml create mode 100644 silo/test/input/minimal/src/main.gr create mode 100644 silo/test/input/path/code/path.gr create mode 100644 silo/test/input/path/silo.toml create mode 100644 silo/test/runner.re create mode 100644 silo/test/suites/build.re create mode 100644 silo/test/suites/dune create mode 100644 silo/test/suites/new.re create mode 100644 silo/test/test.re diff --git a/.github/workflows/build-js.yml b/.github/workflows/build-js.yml index 5a76d512d6..ce4a26fa85 100644 --- a/.github/workflows/build-js.yml +++ b/.github/workflows/build-js.yml @@ -56,14 +56,17 @@ jobs: id: esy-cache uses: actions/cache/restore@v3 with: - path: compiler/_export - key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json') }} + # Not including all paths appears to cause cache misses, so we include silo cache as well + path: | + compiler/_export + silo/_export + key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json', 'silo/esy.lock/index.json') }} - name: Esy setup # Don't crash the run if esy cache import fails - mostly happens on Windows continue-on-error: true run: | - npm run compiler prepare + npm run compiler install-dependencies npm run compiler import-dependencies # Don't build native executables, only the JS builds diff --git a/.github/workflows/build-native.yml b/.github/workflows/build-native.yml index f6a34c17d3..e463aa898d 100644 --- a/.github/workflows/build-native.yml +++ b/.github/workflows/build-native.yml @@ -56,14 +56,17 @@ jobs: id: esy-cache uses: actions/cache/restore@v3 with: - path: compiler/_export - key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json') }} + # Not including all paths appears to cause cache misses, so we include silo cache as well + path: | + compiler/_export + silo/_export + key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json', 'silo/esy.lock/index.json') }} - name: Esy setup # Don't crash the run if esy cache import fails - mostly happens on Windows continue-on-error: true run: | - npm run compiler prepare + npm run compiler install-dependencies npm run compiler import-dependencies - name: Build compiler @@ -72,11 +75,15 @@ jobs: # Upload the artifacts before we run the tests so we # can download to debug if tests fail in a weird way + - name: Tar native compiler artifacts + working-directory: ./cli/bin + run: tar -cvf ../../native_artifacts.tar *.exe + - name: Upload native compiler artifacts uses: actions/upload-artifact@v3 with: name: native-build-artifacts-${{ runner.os }}-${{ runner.arch }} - path: cli/bin/*.exe + path: ./native_artifacts.tar - name: Run tests run: | @@ -120,3 +127,10 @@ jobs: grain format stdlib -o stdlib grain format compiler/test/stdlib -o compiler/test/stdlib git diff --exit-code --name-only + + silo: + name: Silo + uses: ./.github/workflows/silo.yml + needs: build + with: + os: ${{ inputs.os }} diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 2be041da26..9cd84b46a2 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -20,8 +20,10 @@ jobs: id: esy-cache uses: actions/cache@v3 with: - path: compiler/_export - key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json') }} + path: | + compiler/_export + silo/_export + key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json', 'silo/esy.lock/index.json') }} lookup-only: true # We only need to setup node & npm dependencies if we don't have an esy cache because @@ -42,6 +44,9 @@ jobs: - name: Build esy dependencies if: steps.esy-cache.outputs.cache-hit != 'true' run: | - npm run compiler prepare + npm run compiler install-dependencies npm run compiler build-dependencies npm run compiler export-dependencies + npm run silo install-dependencies + npm run silo build-dependencies + npm run silo export-dependencies diff --git a/.github/workflows/silo.yml b/.github/workflows/silo.yml new file mode 100644 index 0000000000..d5278df090 --- /dev/null +++ b/.github/workflows/silo.yml @@ -0,0 +1,92 @@ +name: (native) Silo build and test + +on: + workflow_call: + inputs: + os: + description: Operating system to run CI on + type: string + required: true + +jobs: + build: + name: (native) Silo build and test + runs-on: ${{ inputs.os }} + + steps: + - name: Checkout project + uses: actions/checkout@v3 + + - name: Setup node.js + uses: actions/setup-node@v3.6.0 + with: + node-version: ">=18.15 <19" + check-latest: true + cache: "npm" + + - name: Install npm dependencies + run: | + npm ci + + - name: Esy cache + id: esy-cache + uses: actions/cache/restore@v3 + with: + # Not including all paths appears to cause cache misses, so we include the compiler cache as well + path: | + compiler/_export + silo/_export + key: ${{ runner.os }}-esy-${{ hashFiles('compiler/esy.lock/index.json', 'silo/esy.lock/index.json') }} + + - name: Esy setup + # Don't crash the run if esy cache import fails - mostly happens on Windows + continue-on-error: true + run: | + npm run silo install-dependencies + npm run silo import-dependencies + + - name: Build silo + run: | + npm run silo build + + - name: Download grainc artifacts + uses: actions/download-artifact@v3 + with: + name: native-build-artifacts-${{ runner.os }}-${{ runner.arch }} + path: bin + + - name: Untar download + working-directory: bin + run: | + tar -xvf native_artifacts.tar + + - name: Copy silo executable + run: | + cp cli/bin/silo.exe bin + + - name: Add artifacts to PATH (windows) + if: ${{ inputs.os == 'windows-latest' }} + working-directory: bin + run: pwd | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Add artifacts to PATH (unix) + if: ${{ inputs.os != 'windows-latest' }} + working-directory: bin + run: | + mv grainc.exe grainc + mv graindoc.exe graindoc + mv grainformat.exe grainformat + mv grainlsp.exe grainlsp + mv silo.exe silo + + echo $(pwd) >> $GITHUB_PATH + + - name: Run tests + run: | + npm run silo test + + # Check formatting last because building is more important + - name: (silo) Check formatting + if: inputs.os != 'windows-latest' + run: | + npm run silo check-format diff --git a/.gitignore b/.gitignore index a104a34492..eb98ad69bd 100644 --- a/.gitignore +++ b/.gitignore @@ -42,5 +42,6 @@ cli/bin/grainformat.exe cli/bin/grainformat.bc.js cli/bin/grainlsp.exe cli/bin/grainlsp.bc.js +cli/bin/silo.exe .DS_Store diff --git a/compiler/package.json b/compiler/package.json index c1b91774ee..68e9913d99 100644 --- a/compiler/package.json +++ b/compiler/package.json @@ -15,7 +15,7 @@ "scripts": { "link": "npm link", "clean": "esy clean", - "prepare": "esy install", + "install-dependencies": "esy install", "prebuild": "npm run clean --workspace=@grain/cli", "build": "esy", "postbuild": "esy copy:exe", diff --git a/package-lock.json b/package-lock.json index ba79265caf..29c87b3585 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "workspaces": [ "cli", "stdlib", - "compiler" + "compiler", + "silo" ], "engines": { "node": ">=18.15" @@ -18,10 +19,10 @@ }, "cli": { "name": "@grain/cli", - "version": "0.5.13", + "version": "0.6.3", "license": "MIT", "dependencies": { - "@grain/stdlib": "0.5.13", + "@grain/stdlib": "0.6.3", "commander": "^8.1.0" }, "bin": { @@ -38,7 +39,7 @@ }, "compiler": { "name": "@grain/compiler", - "version": "0.5.13", + "version": "0.6.3", "bin": { "grainc": "_esy/default/build/install/default/bin/grainc" }, @@ -50,6 +51,16 @@ "node": ">=18.15" } }, + "compiler/node_modules/esy": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/esy/-/esy-0.6.12.tgz", + "integrity": "sha512-EJAbVSOA+KRAK86ZY3tSZUpbh9cYaUxIITycXFJp9yuH+XAuLrCSdTJsH+wvQniRrzAgUBJ6B2vYC2hFB09lTQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esy": "bin/esy" + } + }, "js-runner": { "name": "@grain/js-runner", "version": "0.4.0", @@ -186,6 +197,10 @@ "resolved": "compiler", "link": true }, + "node_modules/@grain/silo": { + "resolved": "silo", + "link": true + }, "node_modules/@grain/stdlib": { "resolved": "stdlib", "link": true @@ -960,16 +975,6 @@ "node": ">=0.8.0" } }, - "node_modules/esy": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/esy/-/esy-0.6.12.tgz", - "integrity": "sha512-EJAbVSOA+KRAK86ZY3tSZUpbh9cYaUxIITycXFJp9yuH+XAuLrCSdTJsH+wvQniRrzAgUBJ6B2vYC2hFB09lTQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esy": "bin/esy" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -2580,9 +2585,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "silo": { + "name": "@grain/silo", + "version": "0.6.3", + "bin": { + "silo": "_esy/default/build/install/default/bin/silo" + }, + "devDependencies": { + "esy": "0.6.12", + "shx": "^0.3.4" + }, + "engines": { + "node": ">=18.15" + } + }, + "silo/node_modules/esy": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/esy/-/esy-0.6.12.tgz", + "integrity": "sha512-EJAbVSOA+KRAK86ZY3tSZUpbh9cYaUxIITycXFJp9yuH+XAuLrCSdTJsH+wvQniRrzAgUBJ6B2vYC2hFB09lTQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esy": "bin/esy" + } + }, "stdlib": { "name": "@grain/stdlib", - "version": "0.5.13", + "version": "0.6.3", "license": "MIT", "devDependencies": { "del-cli": "^4.0.1" @@ -2672,7 +2701,7 @@ "@grain/cli": { "version": "file:cli", "requires": { - "@grain/stdlib": "0.5.13", + "@grain/stdlib": "0.6.3", "@phated/pkg": "5.9.1-grain", "commander": "^8.1.0", "del-cli": "^4.0.1", @@ -2684,6 +2713,29 @@ "requires": { "esy": "0.6.12", "shx": "^0.3.4" + }, + "dependencies": { + "esy": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/esy/-/esy-0.6.12.tgz", + "integrity": "sha512-EJAbVSOA+KRAK86ZY3tSZUpbh9cYaUxIITycXFJp9yuH+XAuLrCSdTJsH+wvQniRrzAgUBJ6B2vYC2hFB09lTQ==", + "dev": true + } + } + }, + "@grain/silo": { + "version": "file:silo", + "requires": { + "esy": "0.6.12", + "shx": "^0.3.4" + }, + "dependencies": { + "esy": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/esy/-/esy-0.6.12.tgz", + "integrity": "sha512-EJAbVSOA+KRAK86ZY3tSZUpbh9cYaUxIITycXFJp9yuH+XAuLrCSdTJsH+wvQniRrzAgUBJ6B2vYC2hFB09lTQ==", + "dev": true + } } }, "@grain/stdlib": { @@ -3251,12 +3303,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "esy": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/esy/-/esy-0.6.12.tgz", - "integrity": "sha512-EJAbVSOA+KRAK86ZY3tSZUpbh9cYaUxIITycXFJp9yuH+XAuLrCSdTJsH+wvQniRrzAgUBJ6B2vYC2hFB09lTQ==", - "dev": true - }, "expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", diff --git a/package.json b/package.json index 2bac6161da..3495eb4c28 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "workspaces": [ "cli", "stdlib", - "compiler" + "compiler", + "silo" ], "engines": { "node": ">=18.15" @@ -17,6 +18,7 @@ "cli": "npm run --workspace=@grain/cli --", "compiler": "npm run --workspace=@grain/compiler --", "stdlib": "npm run --workspace=@grain/stdlib --", + "silo": "npm run --workspace=@grain/silo --", "postcompiler": "npm run stdlib clean" } } diff --git a/silo/.gitignore b/silo/.gitignore new file mode 100644 index 0000000000..92e2ec8118 --- /dev/null +++ b/silo/.gitignore @@ -0,0 +1,3 @@ +_esy +node_modules +test/output diff --git a/silo/.vscode/settings.json b/silo/.vscode/settings.json new file mode 100644 index 0000000000..a39a5fed70 --- /dev/null +++ b/silo/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "files.associations": { + "*.dyp": "ocaml.ocamllex", + "CODEOWNERS": "ignore" + }, + "ocaml.sandbox": { + "kind": "esy", + "root": "${workspaceFolder:silo}" + } +} diff --git a/silo/README.md b/silo/README.md new file mode 100644 index 0000000000..8574567e1e --- /dev/null +++ b/silo/README.md @@ -0,0 +1,166 @@ +# Silo + +Silo is Grain's project manager. It compiles Grain projects to WebAssembly code, and (eventually) manages dependencies, runs code, and more. + +## Config + +A project's Silo configuration lives in a file called `silo.toml`. [TOML files](https://toml.io/en/) consist of key-value pairs inside of tables. + +Below is an overview of all settings, followed by detailed descriptions. + +```toml +[package] +name = "my-package" # the name of this package + +[build] +elide-type-info = false # compiles without Grain type info +include-dirs = ["../dir1", "../dir2"] # add paths to compiler code lookup +import-memory = false # imports the wasm memory instead of exporting one +initial-memory-pages = 64 # the number of wasm memory pages to start with +maximum-memory-pages = 128 # the limit of wasm memory pages to grow to +memory-base = 4096 # the memory address to begin Grain allocations +gc = true # enable or disable Grain's garbage collector +stdlib = "../custom-stdlib" # set the location of the standard library to use +use-start-section = false # use a wasm (start) section to run code on startup +wasi-polyfill = "src/wasi-polyfill.gr" # code to polyfill wasi imports + +[build.wasm-features] +bulk-memory = true # enable or disable wasm bulk memory +tail-call = true # enable or disable wasm tail calls + +[bin] +name = "my-name.wasm" # the name of the resulting wasm file +path = "src/main.gr" # the entrypoint of compilation +source-map = false # produce a source map file +wat = false # produce a WebAssembly Text (.wat) file +``` + +## Config Sections + +### [package] + +Package configuration. + +#### package.name + +The name of the package. Unless otherwise set, also the name of the resulting wasm binary. + +### [build] + +Compiler and other build configuration. + +#### build.elide-type-info + +- Type: bool +- Default: false + +Removes Grain type info from the resulting binary. This is often done to reduce binary size, but causes `print`, `toString`, and thrown exceptions to produce dummy values for records and enums. + +#### build.include-dirs + +- Type: string array +- Default: [] + +Adds directories to the compiler's `include` search path. + +#### build.import-memory + +- Type: bool +- Default: false + +Instead of exporting a memory, the resulting module will import its memory from `env.memory`. + +#### build.initial-memory-pages + +- Type: integer +- Default: 64 + +The number of WebAssembly pages to start with. + +#### build.maximum-memory-pages + +- Type: integer +- Default: none + +The maximum number of WebAssembly pages to grow to. + +#### build.memory-base + +- Type: integer +- Default: 0 + +The memory address to begin the Grain heap. This leaves memory available for the host runtime to use freely. + +#### build.gc + +- Type: bool +- Default: true + +Enables the Grain garbage collector. If the program is short-lived, garbage collection can be turned off for additional performance. + +#### build.stdlib + +- Type: string +- Default: none + +The path to the Grain standard library to use. This could be the official Grain standard library or your own implementation. + +#### build.use-start-section + +- Type: bool +- Default: false + +Uses a WebAssembly `(start)` section for module startup code instead of exporting `_start` or `_initialize` for the host to call. + +#### build.wasi-polyfill + +- Type: string +- Default: none + +The path to a Grain implementation of the wasi-snapshot-preview1 interface. + +#### build.wasm-features.bulk-memory + +- Type: bool +- Default: true + +Enables or disables use of wasm bulk memory instructions. + +#### build.wasm-features.tail-call + +- Type: bool +- Default: true + +Enables or disables use of wasm tail call instructions. + +### [bin] + +Configuration for compiler input and output. + +#### bin.name + +- Type: string +- Default: ".wasm" + +The name of the resulting wasm artifact. + +#### bin.path + +- Type: string +- Default: "src/main.gr" + +The path to the program's entrypoint. + +#### bin.wat + +- Type: bool +- Default: false + +Produce a WebAssembly Text (.wat) file in addition to the wasm file. + +#### bin.source-map + +- Type: bool +- Default: false + +Produce a sourcemap in addition to to the wasm file. diff --git a/silo/config/dune b/silo/config/dune new file mode 100644 index 0000000000..d44eca41ec --- /dev/null +++ b/silo/config/dune @@ -0,0 +1,8 @@ +(executable + (name flags) + (libraries dune.configurator)) + +(rule + (targets flags.sexp) + (action + (run ./flags.exe))) diff --git a/silo/config/flags.re b/silo/config/flags.re new file mode 100644 index 0000000000..531d32aa4f --- /dev/null +++ b/silo/config/flags.re @@ -0,0 +1,21 @@ +module C = Configurator.V1; + +let () = { + C.main(~name="grain_exe_flags", c => { + let default = []; + + let flags = + switch (C.ocaml_config_var(c, "system")) { + | Some("macosx") => + // These flags preserve the original C++ error behavior. Ref https://github.com/ocaml/ocaml/issues/10423 + ["-cc", "clang++"] + | Some("mingw64") => + // MinGW needs these flags passed directly to flexdll, to avoid needing MinGW locations in the path + ["-ccopt", "-l:libpthread.a", "-ccopt", "-l:libstdc++.a"] + | Some(_) => default + | None => default + }; + + C.Flags.write_sexp("flags.sexp", flags); + }); +}; diff --git a/silo/dune b/silo/dune new file mode 100644 index 0000000000..4970588483 --- /dev/null +++ b/silo/dune @@ -0,0 +1,10 @@ +(executable + (name silo) + (public_name silo) + (package silo) + (modules silo) + (modes exe) + (flags + (:standard + (:include ./config/flags.sexp))) + (libraries silo)) diff --git a/silo/dune-project b/silo/dune-project new file mode 100644 index 0000000000..84f26b81e9 --- /dev/null +++ b/silo/dune-project @@ -0,0 +1,32 @@ +(lang dune 2.3) + +(name silo) + +(version 0.6.3) + +; Flip this to `true` when we want to generate opam files again + +(generate_opam_files false) + +(license LGPL-3.0) + +(authors "Oscar Spencer") + +(maintainers "oscar@grain-lang.org") + +(source + (github grain-lang/grain)) + +(homepage "https://grain-lang.org") + +(documentation "https://grain-lang.org/docs/") + +; These aren't used currently but left in for reference when we generate opam files again + +(package + (name silo) + (synopsis "The core Grain language project build system")) + +(package + (name silo-tests) + (synopsis "Tests")) diff --git a/silo/dune-workspace b/silo/dune-workspace new file mode 100644 index 0000000000..36fcfb8689 --- /dev/null +++ b/silo/dune-workspace @@ -0,0 +1,8 @@ +(lang dune 2.0) + +(profile release) + +(env + (_ + (flags + (:standard -warn-error -a+6+31)))) diff --git a/silo/esy.json b/silo/esy.json new file mode 100644 index 0000000000..2d11234e78 --- /dev/null +++ b/silo/esy.json @@ -0,0 +1,49 @@ +{ + "name": "@grain/silo", + "version": "0.6.3", + "esy": { + "build": ["dune build --no-buffer"], + "buildEnv": { + "DUNE_BUILD_DIR": "#{self.target_dir}", + "SILO_BIN_PATH": "#{self.target_dir / 'default' / 'silo.exe'}", + "CLI_BIN_DIR": "#{self.root / '..' / 'cli' / 'bin'}", + "TEST_EXEC_PATH": "#{self.target_dir / 'default' / 'test' / 'test.exe'}" + } + }, + "scripts": { + "copy:exe": "cp #{$SILO_BIN_PATH} #{$CLI_BIN_DIR}", + "clean": "rm -rf #{self.root}/_esy", + "test": "#{$TEST_EXEC_PATH}", + "format": "dune build @fmt --auto-promote", + "check-format": "dune build @fmt" + }, + "dependencies": { + "@opam/dune": ">= 3.6.1 < 3.12.0", + "@opam/dune-build-info": ">= 3.6.1 < 3.12.0", + "@opam/dune-configurator": ">= 3.6.1 < 3.12.0", + "@opam/fp": "0.0.1", + "@opam/fs": "0.0.2", + "@opam/pastel": "^4.0.0", + "@opam/ppx_deriving": ">= 5.2.1 < 6.0.0", + "@opam/reason": ">= 3.8.2 < 3.10.0", + "@opam/toml": "7.1.0", + "ocaml": "4.14.1000" + }, + "devDependencies": { + "@opam/ocaml-lsp-server": "1.14.1", + "@opam/rely": "^4.0.0" + }, + "resolutions": { + "@opam/fp": "reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "@opam/fs": "reasonml/reason-native:fs.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "@opam/ppx_deriving_cmdliner": "hammerlab/ppx_deriving_cmdliner:ppx_deriving_cmdliner.opam#1f086651fe7f8dd98e371b09c6fcc4dbc6db1c7c", + "@opam/utf8": "reasonml/reason-native:utf8.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "@opam/cli": "reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "@opam/file-context-printer": "reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "@opam/pastel": "reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "@opam/rely": "reasonml/reason-native:rely.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + }, + "installConfig": { + "pnp": false + } +} diff --git a/silo/esy.lock/.gitattributes b/silo/esy.lock/.gitattributes new file mode 100644 index 0000000000..e0b4e26c5a --- /dev/null +++ b/silo/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/silo/esy.lock/.gitignore b/silo/esy.lock/.gitignore new file mode 100644 index 0000000000..a221be227e --- /dev/null +++ b/silo/esy.lock/.gitignore @@ -0,0 +1,3 @@ + +# Reset any possible .gitignore, we want all esy.lock to be un-ignored. +!* diff --git a/silo/esy.lock/index.json b/silo/esy.lock/index.json new file mode 100644 index 0000000000..59db882d00 --- /dev/null +++ b/silo/esy.lock/index.json @@ -0,0 +1,1440 @@ +{ + "checksum": "83b2a0b80a0159c933ffb116f97282ce", + "root": "@grain/silo@link-dev:./esy.json", + "node": { + "ocaml@4.14.1000@d41d8cd9": { + "id": "ocaml@4.14.1000@d41d8cd9", + "name": "ocaml", + "version": "4.14.1000", + "source": { + "type": "install", + "source": [ + "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.14.1000.tgz#sha1:e38fabe6bcf42774bd2340e67a8803ee7cebdb9f" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, + "@opam/yojson@opam:2.1.2@9fd14300": { + "id": "@opam/yojson@opam:2.1.2@9fd14300", + "name": "@opam/yojson", + "version": "opam:2.1.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/59/59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9#sha256:59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9", + "archive:https://github.com/ocaml-community/yojson/releases/download/2.1.2/yojson-2.1.2.tbz#sha256:59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9" + ], + "opam": { + "name": "yojson", + "version": "2.1.2", + "path": "esy.lock/opam/yojson.2.1.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@opam/cppo@opam:1.6.9@db929a12", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/xdg@opam:3.13.1@c5b5e65a": { + "id": "@opam/xdg@opam:3.13.1@c5b5e65a", + "name": "@opam/xdg", + "version": "opam:3.13.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/2f/2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916", + "archive:https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + ], + "opam": { + "name": "xdg", + "version": "3.13.1", + "path": "esy.lock/opam/xdg.3.13.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/uutf@opam:1.0.3@47c95a18": { + "id": "@opam/uutf@opam:1.0.3@47c95a18", + "name": "@opam/uutf", + "version": "opam:1.0.3", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha512/50/50cc4486021da46fb08156e9daec0d57b4ca469b07309c508d5a9a41e9dbcf1f32dec2ed7be027326544453dcaf9c2534919395fd826dc7768efc6cc4bfcc9f8#sha512:50cc4486021da46fb08156e9daec0d57b4ca469b07309c508d5a9a41e9dbcf1f32dec2ed7be027326544453dcaf9c2534919395fd826dc7768efc6cc4bfcc9f8", + "archive:https://erratique.ch/software/uutf/releases/uutf-1.0.3.tbz#sha512:50cc4486021da46fb08156e9daec0d57b4ca469b07309c508d5a9a41e9dbcf1f32dec2ed7be027326544453dcaf9c2534919395fd826dc7768efc6cc4bfcc9f8" + ], + "opam": { + "name": "uutf", + "version": "1.0.3", + "path": "esy.lock/opam/uutf.1.0.3" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/topkg@opam:1.0.7@7ee47d76", + "@opam/ocamlfind@opam:1.9.6@da5169c7", + "@opam/ocamlbuild@opam:0.14.3@6ab20ab3", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ] + }, + "@opam/topkg@opam:1.0.7@7ee47d76": { + "id": "@opam/topkg@opam:1.0.7@7ee47d76", + "name": "@opam/topkg", + "version": "opam:1.0.7", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha512/09/09e59f1759bf4db8471f02d0aefd8db602b44932a291c05c312b1423796e7a15d1598d3c62a0cec7f083eff8e410fac09363533dc4bd2120914bb9664efea535#sha512:09e59f1759bf4db8471f02d0aefd8db602b44932a291c05c312b1423796e7a15d1598d3c62a0cec7f083eff8e410fac09363533dc4bd2120914bb9664efea535", + "archive:https://erratique.ch/software/topkg/releases/topkg-1.0.7.tbz#sha512:09e59f1759bf4db8471f02d0aefd8db602b44932a291c05c312b1423796e7a15d1598d3c62a0cec7f083eff8e410fac09363533dc4bd2120914bb9664efea535" + ], + "opam": { + "name": "topkg", + "version": "1.0.7", + "path": "esy.lock/opam/topkg.1.0.7" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/ocamlfind@opam:1.9.6@da5169c7", + "@opam/ocamlbuild@opam:0.14.3@6ab20ab3", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.3@6ab20ab3" + ] + }, + "@opam/toml@opam:7.1.0@82144380": { + "id": "@opam/toml@opam:7.1.0@82144380", + "name": "@opam/toml", + "version": "opam:7.1.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/1d/1d4e9c16ed9e24d46dd757ce94adc7fc8b2068eb5ff7cd2a70fce08135a752ef#sha256:1d4e9c16ed9e24d46dd757ce94adc7fc8b2068eb5ff7cd2a70fce08135a752ef", + "archive:https://github.com/ocaml-toml/to.ml/archive/7.1.0.tar.gz#sha256:1d4e9c16ed9e24d46dd757ce94adc7fc8b2068eb5ff7cd2a70fce08135a752ef" + ], + "opam": { + "name": "toml", + "version": "7.1.0", + "path": "esy.lock/opam/toml.7.1.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/menhir@opam:20231231@f35eae6a", + "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/ISO8601@opam:0.2.6@07c0838b", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/ISO8601@opam:0.2.6@07c0838b" + ] + }, + "@opam/stdune@opam:3.13.1@9ca5e277": { + "id": "@opam/stdune@opam:3.13.1@9ca5e277", + "name": "@opam/stdune", + "version": "opam:3.13.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/2f/2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916", + "archive:https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + ], + "opam": { + "name": "stdune", + "version": "3.13.1", + "path": "esy.lock/opam/stdune.3.13.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/dyn@opam:3.13.1@26239713", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/dyn@opam:3.13.1@26239713", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/stdlib-shims@opam:0.3.0@72c7bc98": { + "id": "@opam/stdlib-shims@opam:0.3.0@72c7bc98", + "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.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/spawn@opam:v0.15.1@85e9d6f1": { + "id": "@opam/spawn@opam:v0.15.1@85e9d6f1", + "name": "@opam/spawn", + "version": "opam:v0.15.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/9a/9afdee314fab6c3fcd689ab6eb5608d6b78078e6dede3953a47debde06c19d50#sha256:9afdee314fab6c3fcd689ab6eb5608d6b78078e6dede3953a47debde06c19d50", + "archive:https://github.com/janestreet/spawn/archive/v0.15.1.tar.gz#sha256:9afdee314fab6c3fcd689ab6eb5608d6b78078e6dede3953a47debde06c19d50" + ], + "opam": { + "name": "spawn", + "version": "v0.15.1", + "path": "esy.lock/opam/spawn.v0.15.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/sexplib0@opam:v0.16.0@c0ffad0c": { + "id": "@opam/sexplib0@opam:v0.16.0@c0ffad0c", + "name": "@opam/sexplib0", + "version": "opam:v0.16.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/86/86dba26468194512f789f2fb709063515a9cb4e5c4461c021c239a369590701d#sha256:86dba26468194512f789f2fb709063515a9cb4e5c4461c021c239a369590701d", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.16/files/sexplib0-v0.16.0.tar.gz#sha256:86dba26468194512f789f2fb709063515a9cb4e5c4461c021c239a369590701d" + ], + "opam": { + "name": "sexplib0", + "version": "v0.16.0", + "path": "esy.lock/opam/sexplib0.v0.16.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@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.14.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.14.1000@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.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/rely@github:reasonml/reason-native:rely.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9": { + "id": + "@opam/rely@github:reasonml/reason-native:rely.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "name": "@opam/rely", + "version": + "github:reasonml/reason-native:rely.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "source": { + "type": "install", + "source": [ + "github:reasonml/reason-native:rely.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/file-context-printer@github:reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/cli@github:reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/file-context-printer@github:reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/cli@github:reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9" + ] + }, + "@opam/reason@opam:3.9.0@2a7c0e6f": { + "id": "@opam/reason@opam:3.9.0@2a7c0e6f", + "name": "@opam/reason", + "version": "opam:3.9.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/bc/bcf0081ecf3d05ce68e82876a1bc2a48497c78225b8b310f2cf24b33f3568416#sha256:bcf0081ecf3d05ce68e82876a1bc2a48497c78225b8b310f2cf24b33f3568416", + "archive:https://github.com/reasonml/reason/releases/download/3.9.0/reason-3.9.0.tbz#sha256:bcf0081ecf3d05ce68e82876a1bc2a48497c78225b8b310f2cf24b33f3568416" + ], + "opam": { + "name": "reason", + "version": "3.9.0", + "path": "esy.lock/opam/reason.3.9.0" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__reason_opam__c__3.9.0_opam_override" + } + ], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", + "@opam/ppxlib@opam:0.32.1~5.2preview@34932981", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocamlfind@opam:1.9.6@da5169c7", + "@opam/merlin-extend@opam:0.6.1@7d979feb", + "@opam/menhir@opam:20231231@f35eae6a", + "@opam/fix@opam:20230505@941a65ff", + "@opam/dune-build-info@opam:3.11.1@0dfbdab2", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", + "@opam/ppxlib@opam:0.32.1~5.2preview@34932981", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/merlin-extend@opam:0.6.1@7d979feb", + "@opam/menhir@opam:20231231@f35eae6a", + "@opam/fix@opam:20230505@941a65ff", + "@opam/dune-build-info@opam:3.11.1@0dfbdab2", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/re@opam:1.11.0@87deb463": { + "id": "@opam/re@opam:1.11.0@87deb463", + "name": "@opam/re", + "version": "opam:1.11.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/01/01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f#sha256:01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.11.0/re-1.11.0.tbz#sha256:01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f" + ], + "opam": { + "name": "re", + "version": "1.11.0", + "path": "esy.lock/opam/re.1.11.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/ppxlib@opam:0.32.1~5.2preview@34932981": { + "id": "@opam/ppxlib@opam:0.32.1~5.2preview@34932981", + "name": "@opam/ppxlib", + "version": "opam:0.32.1~5.2preview", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/f0/f0e61123b33b2acca23a388a367226674a7bccdedbaa41b0fd62fa42344dccd9#sha256:f0e61123b33b2acca23a388a367226674a7bccdedbaa41b0fd62fa42344dccd9", + "archive:https://github.com/ocaml-ppx/ppxlib/archive/04e050cbe2cf3e5cdb4441c480e4f472a5033941.tar.gz#sha256:f0e61123b33b2acca23a388a367226674a7bccdedbaa41b0fd62fa42344dccd9" + ], + "opam": { + "name": "ppxlib", + "version": "0.32.1~5.2preview", + "path": "esy.lock/opam/ppxlib.0.32.1~5.2preview" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@72c7bc98", + "@opam/sexplib0@opam:v0.16.0@c0ffad0c", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@72c7bc98", + "@opam/sexplib0@opam:v0.16.0@c0ffad0c", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c": { + "id": "@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c", + "name": "@opam/ppx_yojson_conv_lib", + "version": "opam:v0.16.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/55/557c43c88d365b4cbb514d809f1eecc54d7b9976b0669bc55b02169e6c86ec7d#sha256:557c43c88d365b4cbb514d809f1eecc54d7b9976b0669bc55b02169e6c86ec7d", + "archive:https://ocaml.janestreet.com/ocaml-core/v0.16/files/ppx_yojson_conv_lib-v0.16.0.tar.gz#sha256:557c43c88d365b4cbb514d809f1eecc54d7b9976b0669bc55b02169e6c86ec7d" + ], + "opam": { + "name": "ppx_yojson_conv_lib", + "version": "v0.16.0", + "path": "esy.lock/opam/ppx_yojson_conv_lib.v0.16.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/ppx_deriving@opam:5.2.1@2315fdd0": { + "id": "@opam/ppx_deriving@opam:5.2.1@2315fdd0", + "name": "@opam/ppx_deriving", + "version": "opam:5.2.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/e9/e96b5fb25b7632570e4b329e22e097fcd4b8e8680d1e43ef003a8fbd742b0786#sha256:e96b5fb25b7632570e4b329e22e097fcd4b8e8680d1e43ef003a8fbd742b0786", + "archive:https://github.com/ocaml-ppx/ppx_deriving/releases/download/v5.2.1/ppx_deriving-v5.2.1.tbz#sha256:e96b5fb25b7632570e4b329e22e097fcd4b8e8680d1e43ef003a8fbd742b0786" + ], + "opam": { + "name": "ppx_deriving", + "version": "5.2.1", + "path": "esy.lock/opam/ppx_deriving.5.2.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", + "@opam/ppxlib@opam:0.32.1~5.2preview@34932981", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocamlfind@opam:1.9.6@da5169c7", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@opam/cppo@opam:1.6.9@db929a12", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", + "@opam/ppxlib@opam:0.32.1~5.2preview@34932981", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocamlfind@opam:1.9.6@da5169c7", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@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.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/pp@opam:1.2.0@16430027": { + "id": "@opam/pp@opam:1.2.0@16430027", + "name": "@opam/pp", + "version": "opam:1.2.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/a5/a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c#sha256:a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c", + "archive:https://github.com/ocaml-dune/pp/releases/download/1.2.0/pp-1.2.0.tbz#sha256:a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c" + ], + "opam": { + "name": "pp", + "version": "1.2.0", + "path": "esy.lock/opam/pp.1.2.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9": { + "id": + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "name": "@opam/pastel", + "version": + "github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "source": { + "type": "install", + "source": [ + "github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/ordering@opam:3.13.1@af68547e": { + "id": "@opam/ordering@opam:3.13.1@af68547e", + "name": "@opam/ordering", + "version": "opam:3.13.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/2f/2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916", + "archive:https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + ], + "opam": { + "name": "ordering", + "version": "3.13.1", + "path": "esy.lock/opam/ordering.3.13.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/omd@opam:1.3.2@f6edb8b8": { + "id": "@opam/omd@opam:1.3.2@f6edb8b8", + "name": "@opam/omd", + "version": "opam:1.3.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/60/6023e1642631f08f678eb5725820879ed7bb5a3ffee777cdedebc28c1f85fadb#sha256:6023e1642631f08f678eb5725820879ed7bb5a3ffee777cdedebc28c1f85fadb", + "archive:https://github.com/ocaml/opam-source-archives/raw/main/omd-1.3.2.tbz#sha256:6023e1642631f08f678eb5725820879ed7bb5a3ffee777cdedebc28c1f85fadb" + ], + "opam": { + "name": "omd", + "version": "1.3.2", + "path": "esy.lock/opam/omd.1.3.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/base-bytes@opam:base@19d0c2ff", + "@opam/base-bigarray@opam:base@b03491b0", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/base-bytes@opam:base@19d0c2ff", + "@opam/base-bigarray@opam:base@b03491b0" + ] + }, + "@opam/octavius@opam:1.2.2@2205cc65": { + "id": "@opam/octavius@opam:1.2.2@2205cc65", + "name": "@opam/octavius", + "version": "opam:1.2.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/72/72f9e1d996e6c5089fc513cc9218607b#md5:72f9e1d996e6c5089fc513cc9218607b", + "archive:https://github.com/ocaml-doc/octavius/archive/v1.2.2.tar.gz#md5:72f9e1d996e6c5089fc513cc9218607b" + ], + "opam": { + "name": "octavius", + "version": "1.2.2", + "path": "esy.lock/opam/octavius.1.2.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda": { + "id": "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda", + "name": "@opam/ocamlformat-rpc-lib", + "version": "opam:0.26.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/da/da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7#sha256:da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7", + "archive:https://github.com/ocaml-ppx/ocamlformat/releases/download/0.26.1/ocamlformat-0.26.1.tbz#sha256:da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7" + ], + "opam": { + "name": "ocamlformat-rpc-lib", + "version": "0.26.1", + "path": "esy.lock/opam/ocamlformat-rpc-lib.0.26.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4" + ] + }, + "@opam/ocamlfind@opam:1.9.6@da5169c7": { + "id": "@opam/ocamlfind@opam:1.9.6@da5169c7", + "name": "@opam/ocamlfind", + "version": "opam:1.9.6", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/96/96c6ee50a32cca9ca277321262dbec57#md5:96c6ee50a32cca9ca277321262dbec57", + "archive:http://download.camlcity.org/download/findlib-1.9.6.tar.gz#md5:96c6ee50a32cca9ca277321262dbec57" + ], + "opam": { + "name": "ocamlfind", + "version": "1.9.6", + "path": "esy.lock/opam/ocamlfind.1.9.6" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override" + } + ], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ] + }, + "@opam/ocamlbuild@opam:0.14.3@6ab20ab3": { + "id": "@opam/ocamlbuild@opam:0.14.3@6ab20ab3", + "name": "@opam/ocamlbuild", + "version": "opam:0.14.3", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/22/220df59060c916e8aac2eb471c870485#md5:220df59060c916e8aac2eb471c870485", + "archive:https://github.com/ocaml/ocamlbuild/archive/refs/tags/0.14.3.tar.gz#md5:220df59060c916e8aac2eb471c870485" + ], + "opam": { + "name": "ocamlbuild", + "version": "0.14.3", + "path": "esy.lock/opam/ocamlbuild.0.14.3" + } + }, + "overrides": [ + { + "opamoverride": + "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override" + } + ], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ] + }, + "@opam/ocaml-lsp-server@opam:1.14.1@ac41cc96": { + "id": "@opam/ocaml-lsp-server@opam:1.14.1@ac41cc96", + "name": "@opam/ocaml-lsp-server", + "version": "opam:1.14.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/e6/e64c4c33dd037791fcc9bedfd4d615dda6d169e3eaced150f365539dacab69d9#sha256:e64c4c33dd037791fcc9bedfd4d615dda6d169e3eaced150f365539dacab69d9", + "archive:https://github.com/ocaml/ocaml-lsp/releases/download/1.14.1/lsp-1.14.1.tbz#sha256:e64c4c33dd037791fcc9bedfd4d615dda6d169e3eaced150f365539dacab69d9" + ], + "opam": { + "name": "ocaml-lsp-server", + "version": "1.14.1", + "path": "esy.lock/opam/ocaml-lsp-server.1.14.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300", + "@opam/xdg@opam:3.13.1@c5b5e65a", "@opam/uutf@opam:1.0.3@47c95a18", + "@opam/stdune@opam:3.13.1@9ca5e277", + "@opam/spawn@opam:v0.15.1@85e9d6f1", "@opam/re@opam:1.11.0@87deb463", + "@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c", + "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/omd@opam:1.3.2@f6edb8b8", + "@opam/octavius@opam:1.2.2@2205cc65", + "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda", + "@opam/fiber@opam:3.7.0@d70e2471", "@opam/dyn@opam:3.13.1@26239713", + "@opam/dune-rpc@opam:3.13.1@341ccee7", + "@opam/dune-build-info@opam:3.11.1@0dfbdab2", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@opam/csexp@opam:1.5.2@46614bf4", + "@opam/chrome-trace@opam:3.13.1@c03eb69a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300", + "@opam/xdg@opam:3.13.1@c5b5e65a", "@opam/uutf@opam:1.0.3@47c95a18", + "@opam/stdune@opam:3.13.1@9ca5e277", + "@opam/spawn@opam:v0.15.1@85e9d6f1", "@opam/re@opam:1.11.0@87deb463", + "@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c", + "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/omd@opam:1.3.2@f6edb8b8", + "@opam/octavius@opam:1.2.2@2205cc65", + "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda", + "@opam/fiber@opam:3.7.0@d70e2471", "@opam/dyn@opam:3.13.1@26239713", + "@opam/dune-rpc@opam:3.13.1@341ccee7", + "@opam/dune-build-info@opam:3.11.1@0dfbdab2", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@opam/csexp@opam:1.5.2@46614bf4", + "@opam/chrome-trace@opam:3.13.1@c03eb69a" + ] + }, + "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1": { + "id": "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1", + "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.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/merlin-extend@opam:0.6.1@7d979feb": { + "id": "@opam/merlin-extend@opam:0.6.1@7d979feb", + "name": "@opam/merlin-extend", + "version": "opam:0.6.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/5e/5ec84b355ddb2d129a5948b132bfacc93adcbde2158c7de695f7bfc3650bead7#sha256:5ec84b355ddb2d129a5948b132bfacc93adcbde2158c7de695f7bfc3650bead7", + "archive:https://github.com/let-def/merlin-extend/releases/download/v0.6.1/merlin-extend-0.6.1.tbz#sha256:5ec84b355ddb2d129a5948b132bfacc93adcbde2158c7de695f7bfc3650bead7" + ], + "opam": { + "name": "merlin-extend", + "version": "0.6.1", + "path": "esy.lock/opam/merlin-extend.0.6.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/cppo@opam:1.6.9@db929a12", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/menhirSdk@opam:20231231@b20b8a51": { + "id": "@opam/menhirSdk@opam:20231231@b20b8a51", + "name": "@opam/menhirSdk", + "version": "opam:20231231", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865" + ], + "opam": { + "name": "menhirSdk", + "version": "20231231", + "path": "esy.lock/opam/menhirSdk.20231231" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/menhirLib@opam:20231231@14d79986": { + "id": "@opam/menhirLib@opam:20231231@14d79986", + "name": "@opam/menhirLib", + "version": "opam:20231231", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865" + ], + "opam": { + "name": "menhirLib", + "version": "20231231", + "path": "esy.lock/opam/menhirLib.20231231" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/menhirCST@opam:20231231@0f42b5d1": { + "id": "@opam/menhirCST@opam:20231231@0f42b5d1", + "name": "@opam/menhirCST", + "version": "opam:20231231", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865" + ], + "opam": { + "name": "menhirCST", + "version": "20231231", + "path": "esy.lock/opam/menhirCST.20231231" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/menhir@opam:20231231@f35eae6a": { + "id": "@opam/menhir@opam:20231231@f35eae6a", + "name": "@opam/menhir", + "version": "opam:20231231", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865", + "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865" + ], + "opam": { + "name": "menhir", + "version": "20231231", + "path": "esy.lock/opam/menhir.20231231" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/menhirSdk@opam:20231231@b20b8a51", + "@opam/menhirLib@opam:20231231@14d79986", + "@opam/menhirCST@opam:20231231@0f42b5d1", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/menhirSdk@opam:20231231@b20b8a51", + "@opam/menhirLib@opam:20231231@14d79986", + "@opam/menhirCST@opam:20231231@0f42b5d1", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/fs@github:reasonml/reason-native:fs.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9": { + "id": + "@opam/fs@github:reasonml/reason-native:fs.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "name": "@opam/fs", + "version": + "github:reasonml/reason-native:fs.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "source": { + "type": "install", + "source": [ + "github:reasonml/reason-native:fs.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/fp@github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/fp@github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/fp@github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9": { + "id": + "@opam/fp@github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "name": "@opam/fp", + "version": + "github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "source": { + "type": "install", + "source": [ + "github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/fix@opam:20230505@941a65ff": { + "id": "@opam/fix@opam:20230505@941a65ff", + "name": "@opam/fix", + "version": "opam:20230505", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/2a/2a4afa633128c5010677222f7b3c9451#md5:2a4afa633128c5010677222f7b3c9451", + "archive:https://gitlab.inria.fr/fpottier/fix/-/archive/20230505/archive.tar.gz#md5:2a4afa633128c5010677222f7b3c9451" + ], + "opam": { + "name": "fix", + "version": "20230505", + "path": "esy.lock/opam/fix.20230505" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/file-context-printer@github:reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9": { + "id": + "@opam/file-context-printer@github:reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "name": "@opam/file-context-printer", + "version": + "github:reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "source": { + "type": "install", + "source": [ + "github:reasonml/reason-native:file-context-printer.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/fiber@opam:3.7.0@d70e2471": { + "id": "@opam/fiber@opam:3.7.0@d70e2471", + "name": "@opam/fiber", + "version": "opam:3.7.0", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/86/8648a15ae93fe6942999ce36887429a3913b62829c4714e520cc0e7a1c3b9682#sha256:8648a15ae93fe6942999ce36887429a3913b62829c4714e520cc0e7a1c3b9682", + "archive:https://github.com/ocaml-dune/fiber/releases/download/3.7.0/fiber-lwt-3.7.0.tbz#sha256:8648a15ae93fe6942999ce36887429a3913b62829c4714e520cc0e7a1c3b9682" + ], + "opam": { + "name": "fiber", + "version": "3.7.0", + "path": "esy.lock/opam/fiber.3.7.0" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/stdune@opam:3.13.1@9ca5e277", + "@opam/dyn@opam:3.13.1@26239713", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/stdune@opam:3.13.1@9ca5e277", + "@opam/dyn@opam:3.13.1@26239713", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/dyn@opam:3.13.1@26239713": { + "id": "@opam/dyn@opam:3.13.1@26239713", + "name": "@opam/dyn", + "version": "opam:3.13.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/2f/2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916", + "archive:https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + ], + "opam": { + "name": "dyn", + "version": "3.13.1", + "path": "esy.lock/opam/dyn.3.13.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/dune-rpc@opam:3.13.1@341ccee7": { + "id": "@opam/dune-rpc@opam:3.13.1@341ccee7", + "name": "@opam/dune-rpc", + "version": "opam:3.13.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/2f/2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916", + "archive:https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + ], + "opam": { + "name": "dune-rpc", + "version": "3.13.1", + "path": "esy.lock/opam/dune-rpc.3.13.1" + } + }, + "overrides": [], + "dependencies": [ + "@opam/xdg@opam:3.13.1@c5b5e65a", + "@opam/stdune@opam:3.13.1@9ca5e277", "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/dyn@opam:3.13.1@26239713", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "@opam/xdg@opam:3.13.1@c5b5e65a", + "@opam/stdune@opam:3.13.1@9ca5e277", "@opam/pp@opam:1.2.0@16430027", + "@opam/ordering@opam:3.13.1@af68547e", + "@opam/dyn@opam:3.13.1@26239713", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4" + ] + }, + "@opam/dune-configurator@opam:3.11.1@24d75a5c": { + "id": "@opam/dune-configurator@opam:3.11.1@24d75a5c", + "name": "@opam/dune-configurator", + "version": "opam:3.11.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/86/866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71#sha256:866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71", + "archive:https://github.com/ocaml/dune/releases/download/3.11.1/dune-3.11.1.tbz#sha256:866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71" + ], + "opam": { + "name": "dune-configurator", + "version": "3.11.1", + "path": "esy.lock/opam/dune-configurator.3.11.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/csexp@opam:1.5.2@46614bf4", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/dune-build-info@opam:3.11.1@0dfbdab2": { + "id": "@opam/dune-build-info@opam:3.11.1@0dfbdab2", + "name": "@opam/dune-build-info", + "version": "opam:3.11.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/86/866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71#sha256:866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71", + "archive:https://github.com/ocaml/dune/releases/download/3.11.1/dune-3.11.1.tbz#sha256:866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71" + ], + "opam": { + "name": "dune-build-info", + "version": "3.11.1", + "path": "esy.lock/opam/dune-build-info.3.11.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/dune@opam:3.11.1@ba2e0e6a": { + "id": "@opam/dune@opam:3.11.1@ba2e0e6a", + "name": "@opam/dune", + "version": "opam:3.11.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/86/866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71#sha256:866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71", + "archive:https://github.com/ocaml/dune/releases/download/3.11.1/dune-3.11.1.tbz#sha256:866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71" + ], + "opam": { + "name": "dune", + "version": "3.11.1", + "path": "esy.lock/opam/dune.3.11.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "@opam/base-threads@opam:base@36803084" + ] + }, + "@opam/csexp@opam:1.5.2@46614bf4": { + "id": "@opam/csexp@opam:1.5.2@46614bf4", + "name": "@opam/csexp", + "version": "opam:1.5.2", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/1a/1a14dd04bb4379a41990248550628c77913a9c07f3c35c1370b6960e697787ff#sha256:1a14dd04bb4379a41990248550628c77913a9c07f3c35c1370b6960e697787ff", + "archive:https://github.com/ocaml-dune/csexp/releases/download/1.5.2/csexp-1.5.2.tbz#sha256:1a14dd04bb4379a41990248550628c77913a9c07f3c35c1370b6960e697787ff" + ], + "opam": { + "name": "csexp", + "version": "1.5.2", + "path": "esy.lock/opam/csexp.1.5.2" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/cppo@opam:1.6.9@db929a12": { + "id": "@opam/cppo@opam:1.6.9@db929a12", + "name": "@opam/cppo", + "version": "opam:1.6.9", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/d2/d23ffe85ac7dc8f0afd1ddf622770d09#md5:d23ffe85ac7dc8f0afd1ddf622770d09", + "archive:https://github.com/ocaml-community/cppo/archive/v1.6.9.tar.gz#md5:d23ffe85ac7dc8f0afd1ddf622770d09" + ], + "opam": { + "name": "cppo", + "version": "1.6.9", + "path": "esy.lock/opam/cppo.1.6.9" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@opam/cli@github:reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9": { + "id": + "@opam/cli@github:reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "name": "@opam/cli", + "version": + "github:reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0", + "source": { + "type": "install", + "source": [ + "github:reasonml/reason-native:cli.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0" + ] + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a", "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/re@opam:1.11.0@87deb463", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@opam/chrome-trace@opam:3.13.1@c03eb69a": { + "id": "@opam/chrome-trace@opam:3.13.1@c03eb69a", + "name": "@opam/chrome-trace", + "version": "opam:3.13.1", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/sha256/2f/2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916", + "archive:https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz#sha256:2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + ], + "opam": { + "name": "chrome-trace", + "version": "3.13.1", + "path": "esy.lock/opam/chrome-trace.3.13.1" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a" + ] + }, + "@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-bytes@opam:base@19d0c2ff": { + "id": "@opam/base-bytes@opam:base@19d0c2ff", + "name": "@opam/base-bytes", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-bytes", + "version": "base", + "path": "esy.lock/opam/base-bytes.base" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/ocamlfind@opam:1.9.6@da5169c7", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/ocamlfind@opam:1.9.6@da5169c7" + ] + }, + "@opam/base-bigarray@opam:base@b03491b0": { + "id": "@opam/base-bigarray@opam:base@b03491b0", + "name": "@opam/base-bigarray", + "version": "opam:base", + "source": { + "type": "install", + "source": [ "no-source:" ], + "opam": { + "name": "base-bigarray", + "version": "base", + "path": "esy.lock/opam/base-bigarray.base" + } + }, + "overrides": [], + "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], + "devDependencies": [] + }, + "@opam/ISO8601@opam:0.2.6@07c0838b": { + "id": "@opam/ISO8601@opam:0.2.6@07c0838b", + "name": "@opam/ISO8601", + "version": "opam:0.2.6", + "source": { + "type": "install", + "source": [ + "archive:https://opam.ocaml.org/cache/md5/a4/a460f01d409d51b7d537429881bfa276#md5:a460f01d409d51b7d537429881bfa276", + "archive:https://github.com/ocaml-community/ISO8601.ml/archive/0.2.6.tar.gz#md5:a460f01d409d51b7d537429881bfa276" + ], + "opam": { + "name": "ISO8601", + "version": "0.2.6", + "path": "esy.lock/opam/ISO8601.0.2.6" + } + }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/base-unix@opam:base@87d0b2eb", + "@esy-ocaml/substs@0.0.1@d41d8cd9" + ], + "devDependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.11.1@ba2e0e6a", + "@opam/base-unix@opam:base@87d0b2eb" + ] + }, + "@grain/silo@link-dev:./esy.json": { + "id": "@grain/silo@link-dev:./esy.json", + "name": "@grain/silo", + "version": "link-dev:./esy.json", + "source": { "type": "link-dev", "path": ".", "manifest": "esy.json" }, + "overrides": [], + "dependencies": [ + "ocaml@4.14.1000@d41d8cd9", "@opam/toml@opam:7.1.0@82144380", + "@opam/reason@opam:3.9.0@2a7c0e6f", + "@opam/ppx_deriving@opam:5.2.1@2315fdd0", + "@opam/pastel@github:reasonml/reason-native:pastel.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/fs@github:reasonml/reason-native:fs.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/fp@github:reasonml/reason-native:fp.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/dune-configurator@opam:3.11.1@24d75a5c", + "@opam/dune-build-info@opam:3.11.1@0dfbdab2", + "@opam/dune@opam:3.11.1@ba2e0e6a" + ], + "devDependencies": [ + "@opam/rely@github:reasonml/reason-native:rely.opam#fcb74949f8dcbe68f10d4daaee6b9b864b5baff0@d41d8cd9", + "@opam/ocaml-lsp-server@opam:1.14.1@ac41cc96" + ], + "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/silo/esy.lock/opam/ISO8601.0.2.6/opam b/silo/esy.lock/opam/ISO8601.0.2.6/opam new file mode 100644 index 0000000000..8d613f94ec --- /dev/null +++ b/silo/esy.lock/opam/ISO8601.0.2.6/opam @@ -0,0 +1,26 @@ +opam-version: "2.0" +synopsis: "ISO 8601 and RFC 3999 date parsing for OCaml" +maintainer: ["c-cube" "ocaml-community"] +authors: "Julien Sagot" +homepage: "http://github.com/ocaml-community/ISO8601.ml/" +doc: "http://ocaml-community.github.io/ISO8601.ml/" +bug-reports: "https://github.com/ocaml-community/ISO8601.ml/issues" +depends: [ + "dune" {>= "1.0"} + "base-unix" + "ocaml" {>= "3.12.1"} + "odoc" {with-doc} + "ounit" {with-test} +] +build: [ + ["dune" "build" "-p" name "-j" jobs] + ["dune" "build" "@doc" "-p" name "-j" jobs] {with-doc} +] +dev-repo: "git+https://github.com/ocaml-community/ISO8601.ml.git" +url { + src: "https://github.com/ocaml-community/ISO8601.ml/archive/0.2.6.tar.gz" + checksum: [ + "md5=a460f01d409d51b7d537429881bfa276" + "sha512=82b5cbbb636346e8d010ee569c0fad2f00bef31c3177cfee80fc02a081c5fcfb7880bf2670fe4f46423e3ae99370626c7efffc9d332cae5cbd6377c975517b3f" + ] +} diff --git a/silo/esy.lock/opam/base-bigarray.base/opam b/silo/esy.lock/opam/base-bigarray.base/opam new file mode 100644 index 0000000000..39e9af21a8 --- /dev/null +++ b/silo/esy.lock/opam/base-bigarray.base/opam @@ -0,0 +1,6 @@ +opam-version: "2.0" +maintainer: "https://github.com/ocaml/opam-repository/issues" +description: """ +Bigarray library distributed with the OCaml compiler +""" + diff --git a/silo/esy.lock/opam/base-bytes.base/opam b/silo/esy.lock/opam/base-bytes.base/opam new file mode 100644 index 0000000000..f1cae506c6 --- /dev/null +++ b/silo/esy.lock/opam/base-bytes.base/opam @@ -0,0 +1,9 @@ +opam-version: "2.0" +maintainer: " " +authors: " " +homepage: " " +depends: [ + "ocaml" {>= "4.02.0"} + "ocamlfind" {>= "1.5.3"} +] +synopsis: "Bytes library distributed with the OCaml compiler" diff --git a/silo/esy.lock/opam/base-threads.base/opam b/silo/esy.lock/opam/base-threads.base/opam new file mode 100644 index 0000000000..914ff50ceb --- /dev/null +++ b/silo/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/silo/esy.lock/opam/base-unix.base/opam b/silo/esy.lock/opam/base-unix.base/opam new file mode 100644 index 0000000000..b973540bcb --- /dev/null +++ b/silo/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/silo/esy.lock/opam/chrome-trace.3.13.1/opam b/silo/esy.lock/opam/chrome-trace.3.13.1/opam new file mode 100644 index 0000000000..0f30175a65 --- /dev/null +++ b/silo/esy.lock/opam/chrome-trace.3.13.1/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +synopsis: "Chrome trace event generation library" +description: + "This library offers no backwards compatibility guarantees. Use at your own risk." +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" {>= "3.5"} + "ocaml" {>= "4.08.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz" + checksum: [ + "sha256=2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + "sha512=25b95d616f5d62d065c4458caa211c20615e1bf361fd13d6fd037c216b9566034b45581b7b1dfe43f051c3cdbcf5fe8ffb9c74b5974f2fb6204a3da11ea87c28" + ] +} +x-commit-hash: "b98be5f4c2bbac6f07ad0a9fa28de177f666b509" diff --git a/silo/esy.lock/opam/cppo.1.6.9/opam b/silo/esy.lock/opam/cppo.1.6.9/opam new file mode 100644 index 0000000000..9c51ec6d81 --- /dev/null +++ b/silo/esy.lock/opam/cppo.1.6.9/opam @@ -0,0 +1,39 @@ +opam-version: "2.0" +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""" +maintainer: [ + "Martin Jambon " "Yishuai Li " +] +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.10"} + "base-unix" +] +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} +] +dev-repo: "git+https://github.com/ocaml-community/cppo.git" +url { + src: "https://github.com/ocaml-community/cppo/archive/v1.6.9.tar.gz" + checksum: [ + "md5=d23ffe85ac7dc8f0afd1ddf622770d09" + "sha512=26ff5a7b7f38c460661974b23ca190f0feae3a99f1974e0fd12ccf08745bd7d91b7bc168c70a5385b837bfff9530e0e4e41cf269f23dd8cf16ca658008244b44" + ] +} \ No newline at end of file diff --git a/silo/esy.lock/opam/csexp.1.5.2/opam b/silo/esy.lock/opam/csexp.1.5.2/opam new file mode 100644 index 0000000000..7d511ab80b --- /dev/null +++ b/silo/esy.lock/opam/csexp.1.5.2/opam @@ -0,0 +1,58 @@ +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" {>= "3.4"} + "ocaml" {>= "4.03.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml-dune/csexp.git" +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" +# "@runtest" {with-test & ocaml:version >= "4.04"} + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml-dune/csexp/releases/download/1.5.2/csexp-1.5.2.tbz" + checksum: [ + "sha256=1a14dd04bb4379a41990248550628c77913a9c07f3c35c1370b6960e697787ff" + "sha512=be281018bcfc20d4db14894ef51c4b836d6338d2fdfe22e63d46f405f8dea7349e16f1c0ecd65f73d4c85a2a80e618cdbb8c9dafcbb9f229f04f1adca5b1973c" + ] +} +x-commit-hash: "e6c4768e10c61bcb04d09748744dad55602149c6" diff --git a/silo/esy.lock/opam/dune-build-info.3.11.1/opam b/silo/esy.lock/opam/dune-build-info.3.11.1/opam new file mode 100644 index 0000000000..f0bb6ed48b --- /dev/null +++ b/silo/esy.lock/opam/dune-build-info.3.11.1/opam @@ -0,0 +1,46 @@ +opam-version: "2.0" +synopsis: "Embed build information 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" {>= "3.5"} + "ocaml" {>= "4.08"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.11.1/dune-3.11.1.tbz" + checksum: [ + "sha256=866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71" + "sha512=c888153b204a16bcfed2636de776bbd5f9ca84484e716cc1e9ef3ba3c904e9dd15a2609ae943cddb6097912623ec54618c58386d6730ff742d746850400fb3cc" + ] +} +x-commit-hash: "7cbb0e7277c6cacd1ccf7941cac5a03c25fc63cf" diff --git a/silo/esy.lock/opam/dune-configurator.3.11.1/opam b/silo/esy.lock/opam/dune-configurator.3.11.1/opam new file mode 100644 index 0000000000..8ee593d155 --- /dev/null +++ b/silo/esy.lock/opam/dune-configurator.3.11.1/opam @@ -0,0 +1,50 @@ +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" {>= "3.5"} + "ocaml" {>= "4.04.0"} + "base-unix" + "csexp" {>= "1.5.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.11.1/dune-3.11.1.tbz" + checksum: [ + "sha256=866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71" + "sha512=c888153b204a16bcfed2636de776bbd5f9ca84484e716cc1e9ef3ba3c904e9dd15a2609ae943cddb6097912623ec54618c58386d6730ff742d746850400fb3cc" + ] +} +x-commit-hash: "7cbb0e7277c6cacd1ccf7941cac5a03c25fc63cf" diff --git a/silo/esy.lock/opam/dune-rpc.3.13.1/opam b/silo/esy.lock/opam/dune-rpc.3.13.1/opam new file mode 100644 index 0000000000..22bfb3aa5f --- /dev/null +++ b/silo/esy.lock/opam/dune-rpc.3.13.1/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +synopsis: "Communicate with dune using rpc" +description: "Library to connect and control a running dune instance" +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" {>= "3.5"} + "csexp" + "ordering" + "dyn" + "xdg" + "stdune" {= version} + "pp" {>= "1.1.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz" + checksum: [ + "sha256=2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + "sha512=25b95d616f5d62d065c4458caa211c20615e1bf361fd13d6fd037c216b9566034b45581b7b1dfe43f051c3cdbcf5fe8ffb9c74b5974f2fb6204a3da11ea87c28" + ] +} +x-commit-hash: "b98be5f4c2bbac6f07ad0a9fa28de177f666b509" diff --git a/silo/esy.lock/opam/dune.3.11.1/opam b/silo/esy.lock/opam/dune.3.11.1/opam new file mode 100644 index 0000000000..e79328cef9 --- /dev/null +++ b/silo/esy.lock/opam/dune.3.11.1/opam @@ -0,0 +1,57 @@ +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" {< "2.0.1"} + "dune-release" {< "1.3.0"} + "js_of_ocaml-compiler" {< "3.6.0"} + "jbuilder" {= "transition"} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["ocaml" "boot/bootstrap.ml" "-j" jobs] + ["./_boot/dune.exe" "build" "dune.install" "--release" "--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.02" & < "4.08~~"} & "ocamlfind-secondary")) + "base-unix" + "base-threads" +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.11.1/dune-3.11.1.tbz" + checksum: [ + "sha256=866f2307adadaf7604f3bf9d98bb4098792baa046953a6726c96c40fc5ed3f71" + "sha512=c888153b204a16bcfed2636de776bbd5f9ca84484e716cc1e9ef3ba3c904e9dd15a2609ae943cddb6097912623ec54618c58386d6730ff742d746850400fb3cc" + ] +} +x-commit-hash: "7cbb0e7277c6cacd1ccf7941cac5a03c25fc63cf" diff --git a/silo/esy.lock/opam/dyn.3.13.1/opam b/silo/esy.lock/opam/dyn.3.13.1/opam new file mode 100644 index 0000000000..8aa9f3cd2a --- /dev/null +++ b/silo/esy.lock/opam/dyn.3.13.1/opam @@ -0,0 +1,41 @@ +opam-version: "2.0" +synopsis: "Dynamic type" +description: "Dynamic type" +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" {>= "3.5"} + "ocaml" {>= "4.08.0"} + "ordering" {= version} + "pp" {>= "1.1.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz" + checksum: [ + "sha256=2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + "sha512=25b95d616f5d62d065c4458caa211c20615e1bf361fd13d6fd037c216b9566034b45581b7b1dfe43f051c3cdbcf5fe8ffb9c74b5974f2fb6204a3da11ea87c28" + ] +} +x-commit-hash: "b98be5f4c2bbac6f07ad0a9fa28de177f666b509" diff --git a/silo/esy.lock/opam/fiber.3.7.0/opam b/silo/esy.lock/opam/fiber.3.7.0/opam new file mode 100644 index 0000000000..6a402766ce --- /dev/null +++ b/silo/esy.lock/opam/fiber.3.7.0/opam @@ -0,0 +1,39 @@ +opam-version: "2.0" +synopsis: "Dune's monadic structured concurrency library" +maintainer: ["Jane Street Group, LLC "] +authors: ["Jane Street Group, LLC "] +license: "MIT" +homepage: "https://github.com/ocaml-dune/fiber" +bug-reports: "https://github.com/ocaml-dune/fiber/issues" +depends: [ + "dune" {>= "3.6"} + "ocaml" {>= "4.08"} + "ppx_expect" {with-test} + "dyn" + "stdune" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test & ocaml:version >= "4.13"} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-dune/fiber.git" +url { + src: + "https://github.com/ocaml-dune/fiber/releases/download/3.7.0/fiber-lwt-3.7.0.tbz" + checksum: [ + "sha256=8648a15ae93fe6942999ce36887429a3913b62829c4714e520cc0e7a1c3b9682" + "sha512=348b28b28ffd87de035e90753f677658e8ad58421caf3ac086e4c0bbab8508fa5fe2f55d137c425afaf790ebcf45291e16d70eac5cb766b6d9786f042b58b19b" + ] +} +x-commit-hash: "dd66893a530759da26b66bd1c8939fd77f369afb" diff --git a/silo/esy.lock/opam/fix.20230505/opam b/silo/esy.lock/opam/fix.20230505/opam new file mode 100644 index 0000000000..6278f49e6d --- /dev/null +++ b/silo/esy.lock/opam/fix.20230505/opam @@ -0,0 +1,26 @@ + +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" +license: "LGPL-2.0-only" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" { >= "4.03" } + "dune" { >= "1.3" } +] +synopsis: "Algorithmic building blocks for memoization, recursion, and more" +url { + src: + "https://gitlab.inria.fr/fpottier/fix/-/archive/20230505/archive.tar.gz" + checksum: [ + "md5=2a4afa633128c5010677222f7b3c9451" + "sha512=30d446ba6c19aef78b52d9831eb26f8f6ac10e88bd1eff36d16fbbfb32278b2637e31e63a160aec4abbbfdb1e7612ed25d68c936f4cbf2073e51d713ff3a8adf" + ] +} diff --git a/silo/esy.lock/opam/menhir.20231231/opam b/silo/esy.lock/opam/menhir.20231231/opam new file mode 100644 index 0000000000..adf52bf181 --- /dev/null +++ b/silo/esy.lock/opam/menhir.20231231/opam @@ -0,0 +1,30 @@ + +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: "GPL-2.0-only" +build: [ + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "ocaml" {>= "4.03.0"} + "dune" {>= "2.8.0"} + "menhirLib" {= version} + "menhirSdk" {= version} + "menhirCST" {= version} +] +synopsis: "An LR(1) parser generator" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz" + checksum: [ + "md5=799748bc3b7a542798a85956c7863865" + "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f" + ] +} diff --git a/silo/esy.lock/opam/menhirCST.20231231/opam b/silo/esy.lock/opam/menhirCST.20231231/opam new file mode 100644 index 0000000000..9a49a8590d --- /dev/null +++ b/silo/esy.lock/opam/menhirCST.20231231/opam @@ -0,0 +1,29 @@ + +opam-version: "2.0" +maintainer: "francois.pottier@inria.fr" +authors: [ + "François Pottier " +] +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.08" } + "dune" { >= "2.8.0" } +] +conflicts: [ + "menhir" { != version } +] +synopsis: "Runtime support library for parsers generated by Menhir" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz" + checksum: [ + "md5=799748bc3b7a542798a85956c7863865" + "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f" + ] +} diff --git a/silo/esy.lock/opam/menhirLib.20231231/opam b/silo/esy.lock/opam/menhirLib.20231231/opam new file mode 100644 index 0000000000..1f321b184d --- /dev/null +++ b/silo/esy.lock/opam/menhirLib.20231231/opam @@ -0,0 +1,30 @@ + +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.03.0" } + "dune" { >= "2.8.0" } +] +conflicts: [ + "menhir" { != version } +] +synopsis: "Runtime support library for parsers generated by Menhir" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz" + checksum: [ + "md5=799748bc3b7a542798a85956c7863865" + "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f" + ] +} diff --git a/silo/esy.lock/opam/menhirSdk.20231231/opam b/silo/esy.lock/opam/menhirSdk.20231231/opam new file mode 100644 index 0000000000..0e2649fccf --- /dev/null +++ b/silo/esy.lock/opam/menhirSdk.20231231/opam @@ -0,0 +1,30 @@ + +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.03.0" } + "dune" { >= "2.8.0" } +] +conflicts: [ + "menhir" { != version } +] +synopsis: "Compile-time library for auxiliary tools related to Menhir" +url { + src: + "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz" + checksum: [ + "md5=799748bc3b7a542798a85956c7863865" + "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f" + ] +} diff --git a/silo/esy.lock/opam/merlin-extend.0.6.1/opam b/silo/esy.lock/opam/merlin-extend.0.6.1/opam new file mode 100644 index 0000000000..9f99365052 --- /dev/null +++ b/silo/esy.lock/opam/merlin-extend.0.6.1/opam @@ -0,0 +1,30 @@ +opam-version: "2.0" +maintainer: "Frederic Bour " +authors: "Frederic Bour " +homepage: "https://github.com/let-def/merlin-extend" +bug-reports: "https://github.com/let-def/merlin-extend" +license: "MIT" +dev-repo: "git+https://github.com/let-def/merlin-extend.git" +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] +] +depends: [ + "dune" {>= "1.0"} + "cppo" {build & >= "1.1.0"} + "ocaml" {>= "4.02.3"} +] +synopsis: "A protocol to provide custom frontend to Merlin" +description: """ +This protocol allows to replace the OCaml frontend of Merlin. +It extends what used to be done with the `-pp' flag to handle a few more cases.""" +doc: "https://let-def.github.io/merlin-extend" +url { + src: + "https://github.com/let-def/merlin-extend/releases/download/v0.6.1/merlin-extend-0.6.1.tbz" + checksum: [ + "sha256=5ec84b355ddb2d129a5948b132bfacc93adcbde2158c7de695f7bfc3650bead7" + "sha512=631fc96aab2f35e12a078c9b4907ca7b0db9f1e3a4026040e6c23b82e0171c256a89fb5d4c887f1d156eb9e3152783cdf7a546b2496051007a1bcf5777417396" + ] +} +x-commit-hash: "cf2707bbe8e034c6ecf5d0fecd3fd889f6ab14bf" diff --git a/silo/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam b/silo/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam new file mode 100644 index 0000000000..a2df8c6154 --- /dev/null +++ b/silo/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" & < "5.2.0"} + "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/silo/esy.lock/opam/ocaml-lsp-server.1.14.1/opam b/silo/esy.lock/opam/ocaml-lsp-server.1.14.1/opam new file mode 100644 index 0000000000..d20da99310 --- /dev/null +++ b/silo/esy.lock/opam/ocaml-lsp-server.1.14.1/opam @@ -0,0 +1,63 @@ +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" {>= "3.0"} + "yojson" + "re" {>= "1.5.0"} + "ppx_yojson_conv_lib" {>= "v0.14"} + "dune-rpc" {>= "3.4.0"} + "chrome-trace" {>= "3.3.0"} + "dyn" + "stdune" + "fiber" {>= "3.1.1"} + "xdg" + "ordering" + "dune-build-info" + "spawn" + "omd" {>= "1.3.2" & < "2.0.0~alpha1"} + "octavius" {>= "1.2.2"} + "uutf" {>= "1.0.2"} + "pp" {>= "1.1.2"} + "csexp" {>= "1.5"} + "ocamlformat-rpc-lib" {>= "0.21.0"} + "odoc" {with-doc} + "ocaml" {>= "4.14" & < "4.15"} +] +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.14.1/lsp-1.14.1.tbz" + checksum: [ + "sha256=e64c4c33dd037791fcc9bedfd4d615dda6d169e3eaced150f365539dacab69d9" + "sha512=1eeede473ab2c3481f2e6c67676451d50e005cf44e418ca209848be5ee0c6f034b08e17f8312a751d13f0194f6519b02cb82f232553fe7ec80b53e5c5a56f947" + ] +} +x-commit-hash: "5e6b3c90e368ca1650077f817f9862240a730cbc" diff --git a/silo/esy.lock/opam/ocamlbuild.0.14.3/opam b/silo/esy.lock/opam/ocamlbuild.0.14.3/opam new file mode 100644 index 0000000000..d1c725b353 --- /dev/null +++ b/silo/esy.lock/opam/ocamlbuild.0.14.3/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +synopsis: + "OCamlbuild is a build system with builtin rules to easily build most OCaml projects" +maintainer: "Gabriel Scherer " +authors: ["Nicolas Pouillard" "Berke Durak"] +license: "LGPL-2.0-or-later WITH OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml/ocamlbuild/" +doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" +bug-reports: "https://github.com/ocaml/ocamlbuild/issues" +depends: [ + "ocaml" {>= "4.03"} +] +conflicts: [ + "base-ocamlbuild" + "ocamlfind" {< "1.6.2"} +] +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"] +] +dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" +available: os != "win32" +url { + src: "https://github.com/ocaml/ocamlbuild/archive/refs/tags/0.14.3.tar.gz" + checksum: [ + "md5=220df59060c916e8aac2eb471c870485" + "sha512=def8fa1d5488905fda31f72b7f6f0ebdccefa55a8e984a6ea4a7c1e0856e8ea1f7814410202e0f7f7d5e72aca7e8ae0d6623f7f2bade78b0dd82155de76ec4e5" + ] +} \ No newline at end of file diff --git a/silo/esy.lock/opam/ocamlfind.1.9.6/files/0001-Harden-test-for-OCaml-5.patch b/silo/esy.lock/opam/ocamlfind.1.9.6/files/0001-Harden-test-for-OCaml-5.patch new file mode 100644 index 0000000000..8011238cde --- /dev/null +++ b/silo/esy.lock/opam/ocamlfind.1.9.6/files/0001-Harden-test-for-OCaml-5.patch @@ -0,0 +1,12 @@ +diff a/configure b/configure +--- a/configure ++++ b/configure +@@ -294,7 +294,7 @@ + # If findlib has been configured -sitelib $(ocamlc -where) then there's + # nothing to do, but otherwise we need to put OCaml's Standard Library + # into the path setting. +- if [ ! -e "${ocaml_sitelib}/stdlib/META" ]; then ++ if [ ! -e "${ocaml_sitelib}/stdlib.cmi" ]; then + ocamlpath="${ocaml_core_stdlib}${path_sep}${ocamlpath}" + fi + fi diff --git a/silo/esy.lock/opam/ocamlfind.1.9.6/opam b/silo/esy.lock/opam/ocamlfind.1.9.6/opam new file mode 100644 index 0000000000..a81f0c50ef --- /dev/null +++ b/silo/esy.lock/opam/ocamlfind.1.9.6/opam @@ -0,0 +1,48 @@ +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" {>= "3.08.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} +] +extra-files: ["0001-Harden-test-for-OCaml-5.patch" "md5=3cddbf72164c29d4e50e077a92a37c6c"] +# See https://github.com/ocaml/ocamlfind/pull/61 +patches: ["0001-Harden-test-for-OCaml-5.patch"] +dev-repo: "git+https://github.com/ocaml/ocamlfind.git" +url { + src: "http://download.camlcity.org/download/findlib-1.9.6.tar.gz" + checksum: [ + "md5=96c6ee50a32cca9ca277321262dbec57" + "sha512=cfaf1872d6ccda548f07d32cc6b90c3aafe136d2aa6539e03143702171ee0199add55269bba894c77115535dc46a5835901a5d7c75768999e72db503bfd83027" + ] +} +available: os != "win32" diff --git a/silo/esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam b/silo/esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam new file mode 100644 index 0000000000..e685d68abd --- /dev/null +++ b/silo/esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam @@ -0,0 +1,49 @@ +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: [ + "Guillaume Petiot " + "Jules Aguillon " + "Emile Trotignon " +] +authors: [ + "Josh Berdine " + "Hugo Heuzard " + "Etienne Millon " + "Guillaume Petiot " + "Jules Aguillon " +] +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"} + "csexp" {>= "1.4.0"} + "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" +url { + src: + "https://github.com/ocaml-ppx/ocamlformat/releases/download/0.26.1/ocamlformat-0.26.1.tbz" + checksum: [ + "sha256=da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7" + "sha512=b7413f8dc47ba3a2372e89d59cae54f9a602ab81e31cd14ed986a831111080b79a5a3cc45dac04d8ffae5054c35bf29fe9559f145c76c87a30e191ed5400942a" + ] +} +x-commit-hash: "6734dfc1992eb782f0a936ce3cd7c78b7c1d39d3" diff --git a/silo/esy.lock/opam/octavius.1.2.2/opam b/silo/esy.lock/opam/octavius.1.2.2/opam new file mode 100644 index 0000000000..0539c097d1 --- /dev/null +++ b/silo/esy.lock/opam/octavius.1.2.2/opam @@ -0,0 +1,33 @@ +opam-version: "2.0" +maintainer: ["leo@lpw25.net"] +authors: ["Leo White "] +license: "ISC" +homepage: "https://github.com/ocaml-doc/octavius" +doc: "http://ocaml-doc.github.io/octavius/" +bug-reports: "https://github.com/ocaml-doc/octavius/issues" +depends: [ + "dune" {>= "1.11"} + "ocaml" {>= "4.03.0"} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-doc/octavius.git" + +synopsis: "Ocamldoc comment syntax parser" +description: "Octavius is a library to parse the `ocamldoc` comment syntax." +url { + src: "https://github.com/ocaml-doc/octavius/archive/v1.2.2.tar.gz" + checksum: "md5=72f9e1d996e6c5089fc513cc9218607b" +} diff --git a/silo/esy.lock/opam/omd.1.3.2/opam b/silo/esy.lock/opam/omd.1.3.2/opam new file mode 100644 index 0000000000..3a805c0652 --- /dev/null +++ b/silo/esy.lock/opam/omd.1.3.2/opam @@ -0,0 +1,50 @@ +opam-version: "2.0" +synopsis: "A Markdown frontend in pure OCaml" +description: """ +This Markdown library is implemented using only pure OCaml (including +I/O operations provided by the standard OCaml compiler distribution). +OMD is meant to be as faithful as possible to the original Markdown. +Additionally, OMD implements a few Github markdown features, an +extension mechanism, and some other features. Note that the opam +package installs both the OMD library and the command line tool `omd`.""" +maintainer: [ + "Shon Feder " "Raphael Sousa Santos <@sonologico>" +] +authors: [ + "Philippe Wang " + "Nicolás Ojeda Bär " +] +license: "ISC" +tags: ["org:ocamllabs" "org:mirage"] +homepage: "https://github.com/ocaml/omd" +bug-reports: "https://github.com/ocaml/omd/issues" +depends: [ + "dune" {>= "2.7"} + "ocaml" {>= "4.04"} + "base-bigarray" + "base-bytes" + "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/omd.git" +url { + src: "https://github.com/ocaml/opam-source-archives/raw/main/omd-1.3.2.tbz" + checksum: [ + "sha256=6023e1642631f08f678eb5725820879ed7bb5a3ffee777cdedebc28c1f85fadb" + "sha512=fa2070a5f5d30b2cc422937ac4158bb087134a69d47fa15df403afb1c0c60a73dd436c949faa8d44e0b65bdee039779d86191b55085b717253f91ef20a69ef98" + ] +} +x-commit-hash: "bc6c0d568b90b61143e9863cb6ef7b3989b3313a" diff --git a/silo/esy.lock/opam/ordering.3.13.1/opam b/silo/esy.lock/opam/ordering.3.13.1/opam new file mode 100644 index 0000000000..1948915e46 --- /dev/null +++ b/silo/esy.lock/opam/ordering.3.13.1/opam @@ -0,0 +1,39 @@ +opam-version: "2.0" +synopsis: "Element ordering" +description: "Element ordering" +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" {>= "3.5"} + "ocaml" {>= "4.08.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz" + checksum: [ + "sha256=2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + "sha512=25b95d616f5d62d065c4458caa211c20615e1bf361fd13d6fd037c216b9566034b45581b7b1dfe43f051c3cdbcf5fe8ffb9c74b5974f2fb6204a3da11ea87c28" + ] +} +x-commit-hash: "b98be5f4c2bbac6f07ad0a9fa28de177f666b509" diff --git a/silo/esy.lock/opam/pp.1.2.0/opam b/silo/esy.lock/opam/pp.1.2.0/opam new file mode 100644 index 0000000000..9f4fad20dd --- /dev/null +++ b/silo/esy.lock/opam/pp.1.2.0/opam @@ -0,0 +1,59 @@ +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.8"} + "ocaml" {>= "4.08.0"} + "ppx_expect" {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-dune/pp.git" +url { + src: + "https://github.com/ocaml-dune/pp/releases/download/1.2.0/pp-1.2.0.tbz" + checksum: [ + "sha256=a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c" + "sha512=912164c2aa7241d73f735dadfbefe8ed0138d241579d2e885440e068fac78eb9f0b3d782c2420e757e313168c1725daff6ab91800dd315b1e05288456998b40a" + ] +} +x-commit-hash: "83b68c740f21acdcfe54436355ab328372871357" diff --git a/silo/esy.lock/opam/ppx_derivers.1.2.1/opam b/silo/esy.lock/opam/ppx_derivers.1.2.1/opam new file mode 100644 index 0000000000..484b2654fe --- /dev/null +++ b/silo/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/silo/esy.lock/opam/ppx_deriving.5.2.1/opam b/silo/esy.lock/opam/ppx_deriving.5.2.1/opam new file mode 100644 index 0000000000..f6197c6ffa --- /dev/null +++ b/silo/esy.lock/opam/ppx_deriving.5.2.1/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +maintainer: "whitequark " +authors: [ "whitequark " ] +license: "MIT" +homepage: "https://github.com/ocaml-ppx/ppx_deriving" +doc: "https://ocaml-ppx.github.io/ppx_deriving/" +bug-reports: "https://github.com/ocaml-ppx/ppx_deriving/issues" +dev-repo: "git+https://github.com/ocaml-ppx/ppx_deriving.git" +tags: [ "syntax" ] +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test & ocaml:version < "5.0.0"} + ["dune" "build" "@doc" "-p" name "-j" jobs] {with-doc} +] +depends: [ + "ocaml" {>= "4.05.0"} + "dune" {>= "1.6.3"} + "cppo" {build & >= "1.1.0"} + "ocamlfind" + "ppx_derivers" + "ppxlib" {>= "0.20.0"} + "result" + "ounit2" {with-test} +] +synopsis: "Type-driven code generation for OCaml" +description: """ +ppx_deriving provides common infrastructure for generating +code based on type definitions, and a set of useful plugins +for common tasks. +""" +url { + src: + "https://github.com/ocaml-ppx/ppx_deriving/releases/download/v5.2.1/ppx_deriving-v5.2.1.tbz" + checksum: [ + "sha256=e96b5fb25b7632570e4b329e22e097fcd4b8e8680d1e43ef003a8fbd742b0786" + "sha512=f28cd778a2d48ababa53f73131b25229a11b03685610d020b7b9228b1e25570891cd927b37475aeda49be72debaf5f2dda4c1518a0965db7a361c0ebe325a8d2" + ] +} +x-commit-hash: "7211546d6527bf57d3eff8174c90fc3c22250dae" diff --git a/silo/esy.lock/opam/ppx_yojson_conv_lib.v0.16.0/opam b/silo/esy.lock/opam/ppx_yojson_conv_lib.v0.16.0/opam new file mode 100644 index 0000000000..c3e72b433e --- /dev/null +++ b/silo/esy.lock/opam/ppx_yojson_conv_lib.v0.16.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.14.0"} + "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.16/files/ppx_yojson_conv_lib-v0.16.0.tar.gz" +checksum: "sha256=557c43c88d365b4cbb514d809f1eecc54d7b9976b0669bc55b02169e6c86ec7d" +} diff --git a/silo/esy.lock/opam/ppxlib.0.32.1~5.2preview/opam b/silo/esy.lock/opam/ppxlib.0.32.1~5.2preview/opam new file mode 100644 index 0000000000..7933aefa20 --- /dev/null +++ b/silo/esy.lock/opam/ppxlib.0.32.1~5.2preview/opam @@ -0,0 +1,63 @@ +opam-version: "2.0" +synopsis: "Standard infrastructure for ppx rewriters" +description: """ +Ppxlib is the standard infrastructure for ppx rewriters +and other programs that manipulate the in-memory representation 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" & < "5.3.0"} + "ocaml-compiler-libs" {>= "v0.11.0"} + "ppx_derivers" {>= "1.0"} + "sexplib0" {>= "v0.12"} + "sexplib0" {with-test & >= "v0.15"} + "stdlib-shims" + "ocamlfind" {with-test} + "re" {with-test & >= "1.9.0"} + "cinaps" {with-test & >= "v0.12.1"} + "odoc" {with-doc} +] +conflicts: [ + "ocaml-migrate-parsetree" {< "2.0.0"} + "base-effects" + "ocaml-base-compiler" {= "5.1.0~alpha1"} + "ocaml-variants" {= "5.1.0~alpha1+options"} +] +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" +flags: avoid-version +available: opam-version >= "2.1.0" +url { + src: "https://github.com/ocaml-ppx/ppxlib/archive/04e050cbe2cf3e5cdb4441c480e4f472a5033941.tar.gz" + checksum: [ + "sha256=f0e61123b33b2acca23a388a367226674a7bccdedbaa41b0fd62fa42344dccd9" + "sha512=1a192695ac3a7d587a49f3025239557a998febe72d3b469d3c69b5c32643cc91c55fb72703f8197e1395c02bfabacf17ce5f7ee2bdc367e15f9086e489082a9b" + ] +} diff --git a/silo/esy.lock/opam/re.1.11.0/opam b/silo/esy.lock/opam/re.1.11.0/opam new file mode 100644 index 0000000000..303af008c3 --- /dev/null +++ b/silo/esy.lock/opam/re.1.11.0/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.1-or-later WITH OCaml-LGPL-linking-exception" +homepage: "https://github.com/ocaml/ocaml-re" +bug-reports: "https://github.com/ocaml/ocaml-re/issues" +dev-repo: "git+https://github.com/ocaml/ocaml-re.git" + +build: [ + ["dune" "subst"] {dev} + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] + +depends: [ + "ocaml" {>= "4.03"} + "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.11.0/re-1.11.0.tbz" + checksum: [ + "sha256=01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f" + "sha512=3e3712cc1266ec1f27620f3508ea2ebba338f4083b07d8a69dccee1facfdc1971a6c39f9deea664d2a62fd7f2cfd2eae816ca4c274acfadaee992a3befc4b757" + ] +} +x-commit-hash: "2dd38515c76c40299596d39f18d9b9a20f00d788" diff --git a/silo/esy.lock/opam/reason.3.9.0/opam b/silo/esy.lock/opam/reason.3.9.0/opam new file mode 100644 index 0000000000..af958026c6 --- /dev/null +++ b/silo/esy.lock/opam/reason.3.9.0/opam @@ -0,0 +1,51 @@ +opam-version: "2.0" +synopsis: "Reason: Syntax & Toolchain for OCaml" +description: """ +Reason gives OCaml a new syntax that is remniscient of languages like +JavaScript. It's also the umbrella project for a set of tools for the OCaml & +JavaScript ecosystem.""" +maintainer: [ + "Jordan Walke " + "Antonio Nuno Monteiro " +] +authors: ["Jordan Walke "] +license: "MIT" +homepage: "https://reasonml.github.io/" +bug-reports: "https://github.com/reasonml/reason/issues" +depends: [ + "dune" {>= "2.9"} + "ocaml" {>= "4.03" & < "5.2"} + "ocamlfind" {build} + "dune-build-info" {>= "2.9.3"} + "menhir" {>= "20180523"} + "merlin-extend" {>= "0.6"} + "fix" + "ppx_derivers" + "ppxlib" {>= "0.28.0"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "--promote-install-files=false" + "@install" + "@doc" {with-doc} + ] + ["dune" "install" "-p" name "--create-install-files" name] +] +dev-repo: "git+https://github.com/reasonml/reason.git" +url { + src: + "https://github.com/reasonml/reason/releases/download/3.9.0/reason-3.9.0.tbz" + checksum: [ + "sha256=bcf0081ecf3d05ce68e82876a1bc2a48497c78225b8b310f2cf24b33f3568416" + "sha512=388a0d8970b83423bb79978e4df3a558c27e043fc216a8d288ca7aab9babd8a3db45219ba53c9db09d791c07017f26ceba3a7d714c8ce9bf369d2e8b796d6d81" + ] +} +x-commit-hash: "0da0be2a8c44a0dd492a4a6b47601cdad1da4194" diff --git a/silo/esy.lock/opam/result.1.5/opam b/silo/esy.lock/opam/result.1.5/opam new file mode 100644 index 0000000000..6b7b68d724 --- /dev/null +++ b/silo/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/silo/esy.lock/opam/seq.base/files/META.seq b/silo/esy.lock/opam/seq.base/files/META.seq new file mode 100644 index 0000000000..06b95eff3f --- /dev/null +++ b/silo/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/silo/esy.lock/opam/seq.base/files/seq.install b/silo/esy.lock/opam/seq.base/files/seq.install new file mode 100644 index 0000000000..c4d70206e1 --- /dev/null +++ b/silo/esy.lock/opam/seq.base/files/seq.install @@ -0,0 +1,3 @@ +lib:[ + "META.seq" {"META"} +] diff --git a/silo/esy.lock/opam/seq.base/opam b/silo/esy.lock/opam/seq.base/opam new file mode 100644 index 0000000000..b33d8c7da1 --- /dev/null +++ b/silo/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/silo/esy.lock/opam/sexplib0.v0.16.0/opam b/silo/esy.lock/opam/sexplib0.v0.16.0/opam new file mode 100644 index 0000000000..d9c5f049da --- /dev/null +++ b/silo/esy.lock/opam/sexplib0.v0.16.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.08.0"} + "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.16/files/sexplib0-v0.16.0.tar.gz" +checksum: "sha256=86dba26468194512f789f2fb709063515a9cb4e5c4461c021c239a369590701d" +} diff --git a/silo/esy.lock/opam/spawn.v0.15.1/opam b/silo/esy.lock/opam/spawn.v0.15.1/opam new file mode 100644 index 0000000000..5be3a9949b --- /dev/null +++ b/silo/esy.lock/opam/spawn.v0.15.1/opam @@ -0,0 +1,56 @@ +opam-version: "2.0" +synopsis: "Spawning sub-processes" +description: """ +Spawn is a small library exposing only one functionality: spawning sub-process. + +It has three main goals: + +1. provide missing features of Unix.create_process such as providing a +working directory + +2. provide better errors when a system call fails in the +sub-process. For instance if a command is not found, you get a proper +[Unix.Unix_error] exception + +3. improve performance by using vfork when available. It is often +claimed that nowadays fork is as fast as vfork, however in practice +fork takes time proportional to the process memory while vfork is +constant time. In application using a lot of memory, vfork can be +thousands of times faster than fork. +""" +maintainer: ["Jane Street developers"] +authors: ["Jane Street Group, LLC"] +license: "MIT" +homepage: "https://github.com/janestreet/spawn" +doc: "https://janestreet.github.io/spawn/" +bug-reports: "https://github.com/janestreet/spawn/issues" +depends: [ + "dune" {>= "2.8"} + "ppx_expect" {with-test} + "ocaml" {>= "4.05"} + "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/spawn.git" +x-commit-hash: "13d279ebfa8c40d4bafe18cddfdff0de54b4eaff" +url { + src: + "https://github.com/janestreet/spawn/archive/v0.15.1.tar.gz" + checksum: [ + "sha256=9afdee314fab6c3fcd689ab6eb5608d6b78078e6dede3953a47debde06c19d50" + "sha512=efdb31d5ec5ea36d0bc80224d4ee04e46ce3428d1662870e6cebece92bc313d6eebee378802c0c059dd6e0cafea515308c31b7dfaf04a098eb4566583c1e9ed4" + ] +} diff --git a/silo/esy.lock/opam/stdlib-shims.0.3.0/opam b/silo/esy.lock/opam/stdlib-shims.0.3.0/opam new file mode 100644 index 0000000000..8c96957107 --- /dev/null +++ b/silo/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: ["LGPL-2.1-only WITH OCaml-LGPL-linking-exception"] +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/silo/esy.lock/opam/stdune.3.13.1/opam b/silo/esy.lock/opam/stdune.3.13.1/opam new file mode 100644 index 0000000000..3c3736adf0 --- /dev/null +++ b/silo/esy.lock/opam/stdune.3.13.1/opam @@ -0,0 +1,45 @@ +opam-version: "2.0" +synopsis: "Dune's unstable standard library" +description: + "This library offers no backwards compatibility guarantees. Use at your own risk." +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" {>= "3.5"} + "ocaml" {>= "4.08.0"} + "base-unix" + "dyn" {= version} + "ordering" {= version} + "pp" {>= "1.2.0"} + "csexp" {>= "1.5.0"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz" + checksum: [ + "sha256=2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + "sha512=25b95d616f5d62d065c4458caa211c20615e1bf361fd13d6fd037c216b9566034b45581b7b1dfe43f051c3cdbcf5fe8ffb9c74b5974f2fb6204a3da11ea87c28" + ] +} +x-commit-hash: "b98be5f4c2bbac6f07ad0a9fa28de177f666b509" diff --git a/silo/esy.lock/opam/toml.7.1.0/opam b/silo/esy.lock/opam/toml.7.1.0/opam new file mode 100644 index 0000000000..9ac36fceb0 --- /dev/null +++ b/silo/esy.lock/opam/toml.7.1.0/opam @@ -0,0 +1,52 @@ +opam-version: "2.0" +synopsis: "Library for TOML with a parser, a serializer and a printer" +description: + "toml is an OCaml library providing a parser, a serializer and a printer for TOML, a minimal configuration file format. Helpful getters to retrieve data as OCaml primitive types are also supplied." +maintainer: ["OCamlPro "] +authors: [ + "Julien Sagot" + "Emmanuel Surleau" + "mackwic" + "Andrew Rudenko" + "orbifx" + "c-cube" +] +license: "LGPL-3.0-only" +homepage: "https://ocaml-toml.github.io/To.ml/" +doc: "https://ocaml-toml.github.io/To.ml/api/" +bug-reports: "https://github.com/ocaml-toml/To.ml/issues" +depends: [ + "dune" {>= "3.0"} + "ocaml" {>= "4.08"} + "menhir" {build & >= "20180528"} + "ounit2" {with-test} + "mdx" {with-test & >= "2.1"} + "bisect_ppx" {with-test & >= "2.5" & dev} + "ocb" {with-test & >= "0.1" & dev} + "odoc" {with-doc} + "ISO8601" {>= "0.2"} +] +# Workaround for https://github.com/ocaml-toml/To.ml/issues/74 +build-env: [TZ = ""] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-toml/To.ml.git" +url { + src: "https://github.com/ocaml-toml/to.ml/archive/7.1.0.tar.gz" + checksum: [ + "sha256=1d4e9c16ed9e24d46dd757ce94adc7fc8b2068eb5ff7cd2a70fce08135a752ef" + "sha512=9cb98e4a9c4a01acf5ceeac836fe0dc4d341662f9b3ce6803e9d14499bcb450441111247159bdbc5c25d4618b8c1f088d206da702bef12ea1ca8781607d26774" + ] +} diff --git a/silo/esy.lock/opam/topkg.1.0.7/opam b/silo/esy.lock/opam/topkg.1.0.7/opam new file mode 100644 index 0000000000..83fc06f492 --- /dev/null +++ b/silo/esy.lock/opam/topkg.1.0.7/opam @@ -0,0 +1,47 @@ +opam-version: "2.0" +synopsis: "The transitory OCaml software packager" +description: """\ +Topkg is a packager for distributing OCaml software. It provides an +API to describe the files a package installs in a given build +configuration and to specify information about the package's +distribution, creation and publication procedures. + +The optional topkg-care package provides the `topkg` command line tool +which helps with various aspects of a package's life cycle: creating +and linting a distribution, releasing it on the WWW, publish its +documentation, add it to the OCaml opam repository, etc. + +Topkg is distributed under the ISC license and has **no** +dependencies. This is what your packages will need as a *build* +dependency. + +Topkg-care is distributed under the ISC license it depends on +[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], +[webbrowser][webbrowser] and `opam-format`. + +[fmt]: http://erratique.ch/software/fmt +[logs]: http://erratique.ch/software/logs +[bos]: http://erratique.ch/software/bos +[cmdliner]: http://erratique.ch/software/cmdliner +[webbrowser]: http://erratique.ch/software/webbrowser + +Home page: http://erratique.ch/software/topkg""" +maintainer: "Daniel Bünzli " +authors: "The topkg programmers" +license: "ISC" +tags: ["packaging" "ocamlbuild" "org:erratique"] +homepage: "https://erratique.ch/software/topkg" +doc: "https://erratique.ch/software/topkg/doc" +bug-reports: "https://github.com/dbuenzli/topkg/issues" +depends: [ + "ocaml" {>= "4.05.0"} + "ocamlfind" {build & >= "1.6.1"} + "ocamlbuild" +] +build: ["ocaml" "pkg/pkg.ml" "build" "--pkg-name" name "--dev-pkg" "%{dev}%"] +dev-repo: "git+https://erratique.ch/repos/topkg.git" +url { + src: "https://erratique.ch/software/topkg/releases/topkg-1.0.7.tbz" + checksum: + "sha512=09e59f1759bf4db8471f02d0aefd8db602b44932a291c05c312b1423796e7a15d1598d3c62a0cec7f083eff8e410fac09363533dc4bd2120914bb9664efea535" +} \ No newline at end of file diff --git a/silo/esy.lock/opam/uutf.1.0.3/opam b/silo/esy.lock/opam/uutf.1.0.3/opam new file mode 100644 index 0000000000..e96cc4a4d1 --- /dev/null +++ b/silo/esy.lock/opam/uutf.1.0.3/opam @@ -0,0 +1,36 @@ +opam-version: "2.0" +synopsis: """Non-blocking streaming Unicode codec for OCaml""" +maintainer: ["Daniel Bünzli "] +authors: ["The uutf programmers"] +homepage: "https://erratique.ch/software/uutf" +doc: "https://erratique.ch/software/uutf/doc/" +dev-repo: "git+https://erratique.ch/repos/uutf.git" +bug-reports: "https://github.com/dbuenzli/uutf/issues" +license: ["ISC"] +tags: ["unicode" "text" "utf-8" "utf-16" "codec" "org:erratique"] +depends: ["ocaml" {>= "4.03.0"} + "ocamlfind" {build} + "ocamlbuild" {build} + "topkg" {build & >= "1.0.3"}] +depopts: ["cmdliner"] +conflicts: ["cmdliner" {< "0.9.8"}] +build: [["ocaml" "pkg/pkg.ml" "build" "--dev-pkg" "%{dev}%" + "--with-cmdliner" "%{cmdliner:installed}%"]] +url { + src: "https://erratique.ch/software/uutf/releases/uutf-1.0.3.tbz" + checksum: "sha512=50cc4486021da46fb08156e9daec0d57b4ca469b07309c508d5a9a41e9dbcf1f32dec2ed7be027326544453dcaf9c2534919395fd826dc7768efc6cc4bfcc9f8"} +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. **Note** that since OCaml 4.14, that functionality +can be found in the Stdlib and you are encouraged to migrate to it. + +Uutf has no dependency and is distributed under the ISC license. + +Home page: http://erratique.ch/software/uutf +Contact: Daniel Bünzli ``""" \ No newline at end of file diff --git a/silo/esy.lock/opam/xdg.3.13.1/opam b/silo/esy.lock/opam/xdg.3.13.1/opam new file mode 100644 index 0000000000..a4b1c98e5e --- /dev/null +++ b/silo/esy.lock/opam/xdg.3.13.1/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +synopsis: "XDG Base Directory Specification" +description: + "https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html" +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" {>= "3.5"} + "ocaml" {>= "4.08"} + "odoc" {with-doc} +] +dev-repo: "git+https://github.com/ocaml/dune.git" +build: [ + ["dune" "subst"] {dev} + ["rm" "-rf" "vendor/csexp"] + ["rm" "-rf" "vendor/pp"] + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@doc" {with-doc} + ] +] +url { + src: + "https://github.com/ocaml/dune/releases/download/3.13.1/dune-3.13.1.tbz" + checksum: [ + "sha256=2fe0af1b4cf98649c7555b555d9f4f81d5ded87718a89df4988e214a56c8a916" + "sha512=25b95d616f5d62d065c4458caa211c20615e1bf361fd13d6fd037c216b9566034b45581b7b1dfe43f051c3cdbcf5fe8ffb9c74b5974f2fb6204a3da11ea87c28" + ] +} +x-commit-hash: "b98be5f4c2bbac6f07ad0a9fa28de177f666b509" diff --git a/silo/esy.lock/opam/yojson.2.1.2/opam b/silo/esy.lock/opam/yojson.2.1.2/opam new file mode 100644 index 0000000000..df37a739d0 --- /dev/null +++ b/silo/esy.lock/opam/yojson.2.1.2/opam @@ -0,0 +1,48 @@ +opam-version: "2.0" +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. + +ydump is a pretty-printing command-line program provided with the +yojson package.""" +maintainer: [ + "paul-elliot@tarides.com" "nathan@tarides.com" "marek@tarides.com" +] +authors: ["Martin Jambon"] +license: "BSD-3-Clause" +homepage: "https://github.com/ocaml-community/yojson" +doc: "https://ocaml-community.github.io/yojson" +bug-reports: "https://github.com/ocaml-community/yojson/issues" +depends: [ + "dune" {>= "2.7"} + "ocaml" {>= "4.02.3"} + "cppo" {build} + "alcotest" {with-test & >= "0.8.5"} + "seq" {>= "0.2.2"} + "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-community/yojson.git" +url { + src: + "https://github.com/ocaml-community/yojson/releases/download/2.1.2/yojson-2.1.2.tbz" + checksum: [ + "sha256=59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9" + "sha512=309cba7568dec51de20c7ab8df033258c275b8d58b0a36a66b26e673a3bc050cbd7e39ff8fe4796e89263e125bcc21e04dc36a394f3cc201956887eee1fb281a" + ] +} +x-commit-hash: "e51163ee04ad79408975545ec5fc3b7dc41f68eb" diff --git a/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/ocamlbuild-0.14.2.patch b/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/ocamlbuild-0.14.2.patch new file mode 100644 index 0000000000..e69de29bb2 diff --git a/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/winpatch.patch b/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/winpatch.patch new file mode 100644 index 0000000000..bba9929fe3 --- /dev/null +++ b/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/winpatch.patch @@ -0,0 +1,11 @@ +--- ./Makefile ++++ ./Makefile +@@ -271,7 +271,7 @@ + echo ' "ocamlbuild.byte" {"ocamlbuild.byte"}' >> ocamlbuild.install + ifeq ($(OCAML_NATIVE), true) + echo ' "ocamlbuild.native" {"ocamlbuild.native"}' >> ocamlbuild.install +- echo ' "ocamlbuild.native" {"ocamlbuild"}' >> ocamlbuild.install ++ echo " \"ocamlbuild.native\" {\"ocamlbuild${EXE}\"}" >> ocamlbuild.install + else + echo ' "ocamlbuild.byte" {"ocamlbuild"}' >> ocamlbuild.install + endif diff --git a/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/package.json b/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/package.json new file mode 100644 index 0000000000..b57a42cc27 --- /dev/null +++ b/silo/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/package.json @@ -0,0 +1,29 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < winpatch.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", + "EXE=#{os == 'windows' ? '.exe': ''}" + ], + [ + "make", + "check-if-preinstalled", + "all", + "EXE=#{os == 'windows' ? '.exe': ''}", + "opam-install" + ] + ] +} diff --git a/silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/files/findlib.patch b/silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/files/findlib.patch new file mode 100644 index 0000000000..d545632af9 --- /dev/null +++ b/silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/files/findlib.patch @@ -0,0 +1,11 @@ +--- ./Makefile ++++ ./Makefile +@@ -55,7 +55,7 @@ + export USE_CYGPATH; \ + cat findlib.conf.in | \ + $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' | \ +- $(SH) tools/patch '@FINDLIB_PATH@' '$(FINDLIB_PATH)' -p >findlib.conf ++ $(SH) tools/patch '@FINDLIB_PATH@' '$(FINDLIB_PATH)' >findlib.conf + if ./tools/cmd_from_same_dir ocamlc; then \ + echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ + fi diff --git a/silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/package.json b/silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/package.json new file mode 100644 index 0000000000..bf169e50d6 --- /dev/null +++ b/silo/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.6_opam_override/package.json @@ -0,0 +1,61 @@ +{ + "build": [ + [ + "bash", + "-c", + "#{os == 'windows' ? 'patch -p1 < findlib.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/silo/esy.lock/overrides/opam__s__reason_opam__c__3.9.0_opam_override/package.json b/silo/esy.lock/overrides/opam__s__reason_opam__c__3.9.0_opam_override/package.json new file mode 100644 index 0000000000..72b2408e25 --- /dev/null +++ b/silo/esy.lock/overrides/opam__s__reason_opam__c__3.9.0_opam_override/package.json @@ -0,0 +1,3 @@ +{ + "build": "dune build -p reason" +} diff --git a/silo/package-lock.json b/silo/package-lock.json new file mode 100644 index 0000000000..7c1a8085a5 --- /dev/null +++ b/silo/package-lock.json @@ -0,0 +1,239 @@ +{ + "name": "@grain/silo", + "version": "0.6.3", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@grain/silo", + "version": "0.6.3", + "bin": { + "silo": "_esy/default/build/install/default/bin/silo.exe" + }, + "devDependencies": { + "esy": "0.6.12", + "shx": "^0.3.4" + }, + "engines": { + "node": ">=18.15" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/esy": { + "version": "0.6.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esy": "bin/esy" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/interpret": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shx": { + "version": "0.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + }, + "bin": { + "shx": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + } + } +} diff --git a/silo/package.json b/silo/package.json new file mode 100644 index 0000000000..7c4aedb308 --- /dev/null +++ b/silo/package.json @@ -0,0 +1,30 @@ +{ + "name": "@grain/silo", + "private": true, + "version": "0.6.3", + "bin": { + "silo": "_esy/default/build/install/default/bin/silo" + }, + "engines": { + "node": ">=18.15" + }, + "devDependencies": { + "esy": "0.6.12", + "shx": "^0.3.4" + }, + "scripts": { + "link": "npm link", + "clean": "esy clean", + "build": "esy", + "postbuild": "esy copy:exe", + "pretest": "npm run build", + "test": "esy test", + "format": "esy format", + "check-format": "esy check-format", + "install-dependencies": "esy install", + "import-dependencies": "esy import-dependencies _export", + "postimport-dependencies": "shx rm -rf _export", + "export-dependencies": "esy export-dependencies", + "build-dependencies": "esy build-dependencies" + } +} diff --git a/silo/silo.re b/silo/silo.re new file mode 100644 index 0000000000..c5b75a1ea7 --- /dev/null +++ b/silo/silo.re @@ -0,0 +1,10 @@ +open Silo; +open Ansi; + +let _ = + try(Cli.run()) { + | exn => + prerr_string(ansi(~color=RedBright, "Error: ")); + prerr_endline(Printexc.to_string(exn)); + exit(1); + }; diff --git a/silo/src/ansi.re b/silo/src/ansi.re new file mode 100644 index 0000000000..92b77789e3 --- /dev/null +++ b/silo/src/ansi.re @@ -0,0 +1,31 @@ +type color = Pastel.colorName; + +let ansi = + ( + ~reset=?, + ~bold=?, + ~dim=?, + ~italic=?, + ~underline=?, + ~inverse=?, + ~hidden=?, + ~strikethrough=?, + ~color=?, + ~backgroundColor=?, + text, + ) => { + Pastel.createElement( + ~reset?, + ~bold?, + ~dim?, + ~italic?, + ~underline?, + ~inverse?, + ~hidden?, + ~strikethrough?, + ~color?, + ~backgroundColor?, + ~children=[text], + (), + ); +}; diff --git a/silo/src/build.re b/silo/src/build.re new file mode 100644 index 0000000000..d96727266a --- /dev/null +++ b/silo/src/build.re @@ -0,0 +1,130 @@ +open Ansi; +open Toml; + +type profile = + | Dev + | Release; + +let grainc_command = (~profile, config) => { + open Config; + + // TODO: replace with where the binary will be + let cmd = ref(["grainc"]); + + // build flags + + switch (config.build.elide_type_info) { + | Some(true) => cmd := ["--elide-type-info", ...cmd^] + | _ => () + }; + + switch (config.build.include_dirs) { + | Some(dirs) => + cmd := List.fold_left((cmd, dir) => [dir, "-I", ...cmd], cmd^, dirs) + | _ => () + }; + + switch (config.build.import_memory) { + | Some(true) => cmd := ["--import-memory", ...cmd^] + | _ => () + }; + + switch (config.build.initial_memory_pages) { + | Some(pages) => + cmd := [string_of_int(pages), "--initial-memory-pages", ...cmd^] + | _ => () + }; + + switch (config.build.maximum_memory_pages) { + | Some(pages) => + cmd := [string_of_int(pages), "--maximum-memory-pages", ...cmd^] + | _ => () + }; + + switch (config.build.memory_base) { + | Some(pages) => cmd := [string_of_int(pages), "--memory-base", ...cmd^] + | _ => () + }; + + switch (config.build.gc) { + | Some(false) => cmd := ["--no-gc", ...cmd^] + | _ => () + }; + + switch (config.build.stdlib) { + | Some(stdlib) => cmd := [stdlib, "--stdlib", ...cmd^] + | _ => () + }; + + switch (config.build.use_start_section) { + | Some(true) => cmd := ["--use-start-section", ...cmd^] + | _ => () + }; + + switch (config.build.wasi_polyfill) { + | Some(wasi_polyfill) => cmd := [wasi_polyfill, "--wasi-polyfill", ...cmd^] + | _ => () + }; + + // bin flags + + switch (config.bin.wat) { + | Some(true) => cmd := ["--wat", ...cmd^] + | _ => () + }; + + switch (config.bin.source_map) { + | Some(true) => cmd := ["--source-map", ...cmd^] + | _ => () + }; + + // output name + switch (config.bin.name) { + | Some(name) => cmd := [name, "-o", ...cmd^] + | _ => cmd := [config.package.name ++ ".wasm", "-o", ...cmd^] + }; + + // profile + switch (profile) { + | Release => cmd := ["release", "--profile", ...cmd^] + | Dev => () + }; + + // path to entrypoint + switch (config.bin.path) { + | Some(path) => cmd := [path, ...cmd^] + | _ => cmd := ["src/main.gr", ...cmd^] + }; + + Array.of_list(List.rev(cmd^)); +}; + +let exec = args => { + let stdin = Unix.open_process_args_out(args[0], args); + let status = Unix.close_process_out(stdin); + + switch (status) { + | Unix.WEXITED(code) => code + | _ => failwith("process did not exit properly") + }; +}; + +let time = f => { + let start_time = Unix.gettimeofday(); + let status = f(); + let end_time = Unix.gettimeofday(); + if (status == 0) { + Printf.printf( + "%s build in %.2fs\n", + ansi(~bold=true, ~color=GreenBright, "Finished"), + end_time -. start_time, + ); + }; + status; +}; + +let build = profile => { + let config = Config.load(); + let status = time(() => exec(grainc_command(~profile, config))); + exit(status); +}; diff --git a/silo/src/cli.re b/silo/src/cli.re new file mode 100644 index 0000000000..aac1f60f44 --- /dev/null +++ b/silo/src/cli.re @@ -0,0 +1,79 @@ +open Printf; +open Lexing; +open Filename; +open Arg; + +let version = () => { + let version = + switch (Build_info.V1.version()) { + | None => "unknown" + | Some(v) => Build_info.V1.Version.to_string(v) + }; + print_endline(version); + exit(0); +}; + +let run = () => { + let name = ref(None); + let name_opt = + Cmd.opt( + ~names=["--name"], + ~doc="Set the package name, defaults to the directory name", + ~usage="", + ~value=name, + ~conv=name => + Some(name) + ); + let path = ref(""); + let path_arg = + Cmd.arg( + ~name="path", ~doc="Path for the new project", ~value=path, ~conv=path => + path + ); + let new_ = + Cmd.make( + ~name="new", + ~doc="Create a new Grain project", + ~usage="[options] ", + ~options=[name_opt], + ~args=[path_arg], + Cmd.Thunk(() => New.new_(~name=?name^, path^)), + ); + + let profile = ref(Build.Dev); + let release_opt = + Cmd.flag( + ~names=["--release"], + ~doc="Compile using the release profile (production mode)", + ~value=profile, + ~conv=() => + Build.Release + ); + let build = + Cmd.make( + ~name="build", + ~doc="Compile the current project", + ~usage="[options]", + ~options=[release_opt], + Cmd.Thunk(() => Build.build(profile^)), + ); + + let version = + Cmd.flag( + ~names=["-v", "--version"], + ~doc="Print version and exit", + ~value=ref(false), + ~conv=version, + ); + let silo = + Cmd.make( + ~name="silo", + ~doc="Build and manage Grain projects 🌾", + ~usage="[options] ", + ~options=[version], + ~commands=[new_, build], + Cmd.Help, + ); + + Cmd.parse(silo); +}; diff --git a/silo/src/cmd.re b/silo/src/cmd.re new file mode 100644 index 0000000000..8ea594bc24 --- /dev/null +++ b/silo/src/cmd.re @@ -0,0 +1,280 @@ +open Ansi; +open Arg; + +type spec = + | Spec({ + names: list(string), + doc: string, + usage: string, + value: ref('a), + conv: conv('a), + }) + : spec + +and conv('a) = + | UnitConv(unit => 'a) + | StringConv(string => 'a) + | SymbolConv(list(string), string => 'a); + +type opt_spec = spec; +type arg_spec = spec; + +type t = { + options: list(opt_spec), + args: list(arg_spec), + name: string, + doc: string, + usage: string, + action, + commands: list(t), + mutable parent: option(t), +} +and action = + | Help + | Thunk(unit => unit) + | NoAction; + +let opt = (~names, ~doc, ~usage, ~value: ref('a), ~conv: string => 'a) => { + Spec({names, doc, usage, value, conv: StringConv(conv)}); +}; + +let flag = (~names, ~doc, ~value: ref('a), ~conv: unit => 'a) => { + Spec({names, doc, usage: "", value, conv: UnitConv(conv)}); +}; + +let enum_opt = + (~names, ~doc, ~usage, ~value: ref('a), ~enum, ~conv: string => 'a) => { + Spec({names, doc, usage, value, conv: SymbolConv(enum, conv)}); +}; + +let arg = (~name, ~doc, ~value: ref('a), ~conv: string => 'a) => { + Spec({names: [name], doc, usage: "", value, conv: StringConv(conv)}); +}; + +let create_parse_spec = (cmd: t) => { + List.concat_map( + spec => { + switch (spec) { + | Spec({names, doc, value, conv}) => + let arg_spec = + switch (conv) { + | UnitConv(conv) => Unit(() => {value := conv()}) + | StringConv(conv) => String(v => {value := conv(v)}) + | SymbolConv(enum, conv) => Symbol(enum, v => {value := conv(v)}) + }; + List.map(name => (name, arg_spec, ""), names); + } + }, + cmd.options, + ); +}; + +let bold = text => ansi(~bold=true, text); + +let section_header = header => ansi(~bold=true, ~color=YellowBright, header); + +let usage_text = usage => ansi(~color=BlueBright, usage); + +let rec print_list = (pr, sep, ppf) => + fun + | [] => () + | [a] => pr(ppf, a) + | [a, ...l] => { + pr(ppf, a); + sep(ppf); + print_list(pr, sep, ppf, l); + }; + +let print_options = + print_list( + (ppf, name) => + Printf.bprintf(ppf, "%s", ansi(~bold=true, ~color=BlueBright, name)), + ppf => Printf.bprintf(ppf, ", "), + ); + +let print_command = (ppf, name) => + Printf.bprintf(ppf, "%s", ansi(~bold=true, ~color=BlueBright, name)); + +let rec command_name = cmd => { + switch (cmd.parent) { + | Some(parent) => Printf.sprintf("%s %s", command_name(parent), cmd.name) + | None => cmd.name + }; +}; + +let opt_width = (Spec({names, usage})) => + (List.length(names) - 1) + * 2 + + List.fold_left((acc, name) => acc + String.length(name), 0, names) + + (usage == "" ? 0 : 1 + String.length(usage)); + +let max_opt_width = + List.fold_left((acc, opt) => max(acc, opt_width(opt)), 0); + +let max_command_width = + List.fold_left((acc, {name}) => max(acc, String.length(name)), 0); + +let make_help = (~buf=Buffer.create(1024), cmd) => { + open Printf; + + bprintf(buf, "%s\n\n", cmd.doc); + bprintf( + buf, + "%s %s %s\n", + section_header("Usage:"), + usage_text(bold(command_name(cmd))), + usage_text(cmd.usage), + ); + + if (List.length(cmd.options) > 0) { + bprintf(buf, "\n%s\n", section_header("Options:")); + }; + let max_opt_width = max_opt_width(cmd.options); + List.iter( + (Spec({names, doc, usage}) as opt) => { + bprintf(buf, " %a ", print_options, names); + if (usage != "") { + bprintf(buf, "%s ", usage_text(usage)); + } else { + bprintf(buf, " "); + }; + bprintf(buf, "%s", String.make(max_opt_width - opt_width(opt), ' ')); + bprintf(buf, "%s\n", doc); + }, + cmd.options, + ); + + if (cmd.commands != []) { + bprintf(buf, "\n%s\n", section_header("Commands:")); + }; + let max_command_width = max_command_width(cmd.commands); + List.iter( + ({name, doc}) => { + bprintf(buf, " %a ", print_command, name); + bprintf( + buf, + "%s", + String.make(max_command_width - String.length(name), ' '), + ); + bprintf(buf, "%s\n", doc); + }, + cmd.commands, + ); + + bprintf( + buf, + "\nRun %s for help with individual commands.\n", + usage_text(bold("silo") ++ " --help"), + ); + + Buffer.contents(buf); +}; + +let help_on_error = cmd => { + let buf = Buffer.create(1024); + Buffer.add_string(buf, "\n"); + make_help(~buf, cmd); +}; + +let make = (~name, ~doc, ~usage, ~options=[], ~args=[], ~commands=[], action) => { + let help_action = ref(() => ()); + let help = + flag( + ~names=["-h", "-help", "--help"], + ~doc="Display help", + ~value=ref(), + ~conv=() => + help_action^() + ); + + let options = [help, ...options]; + + let cmd = {name, doc, usage, options, args, commands, action, parent: None}; + + List.iter(subcmd => subcmd.parent = Some(cmd), commands); + + help_action := + ( + () => { + print_string(make_help(cmd)); + exit(0); + } + ); + + cmd; +}; + +let parse = (cmd: t) => { + let current = ref(cmd); + let speclist = ref(create_parse_spec(cmd)); + let positional_arguments = ref(cmd.args); + + let process_positional = positional => { + switch (List.find_opt(({name}) => name == positional, cmd.commands)) { + | Some(subcommand) => + current := subcommand; + speclist := create_parse_spec(subcommand); + positional_arguments := subcommand.args; + | None => + switch (positional_arguments^) { + | [] => + raise( + Arg.Bad("unknown argument or subcommand '" ++ positional ++ "'"), + ) + | [Spec({value, conv}), ...rest] => + positional_arguments := rest; + switch (conv) { + | UnitConv(conv) => value := conv() + | StringConv(conv) => value := conv(positional) + | SymbolConv(enum, conv) => + if (List.mem(positional, enum)) { + value := conv(positional); + } else { + raise( + Arg.Bad( + Printf.sprintf( + "wrong argument '%s'; expected one of: %s.", + positional, + String.concat(" ", enum), + ), + ), + ); + } + }; + } + }; + }; + + let run = () => { + Arg.parse_argv_dynamic(Sys.argv, speclist, process_positional, ""); + switch (positional_arguments^) { + | [Spec({names}), ..._] => + raise( + Arg.Bad( + Printf.sprintf("missing required argument <%s>", List.hd(names)), + ), + ) + | [] => () + }; + }; + + switch (run()) { + | exception (Arg.Help(_)) => + prerr_string(make_help(current^)); + exit(0); + | _ => + switch (current^.action) { + | NoAction => () + | Thunk(f) => f() + | Help => print_string(make_help(current^)) + } + }; +}; + +let _ = + Printexc.register_printer(exn => { + switch (exn) { + | Arg.Bad(msg) => Some(String.trim(msg)) + | _ => None + } + }); diff --git a/silo/src/cmd.rei b/silo/src/cmd.rei new file mode 100644 index 0000000000..d0b4431cc3 --- /dev/null +++ b/silo/src/cmd.rei @@ -0,0 +1,49 @@ +type t; +type opt_spec; +type arg_spec; + +type action = + | Help + | Thunk(unit => unit) + | NoAction; + +let opt: + ( + ~names: list(string), + ~doc: string, + ~usage: string, + ~value: ref('a), + ~conv: string => 'a + ) => + opt_spec; +let flag: + (~names: list(string), ~doc: string, ~value: ref('a), ~conv: unit => 'a) => + opt_spec; +let enum_opt: + ( + ~names: list(string), + ~doc: string, + ~usage: string, + ~value: ref('a), + ~enum: list(string), + ~conv: string => 'a + ) => + opt_spec; + +let arg: + (~name: string, ~doc: string, ~value: ref('a), ~conv: string => 'a) => + arg_spec; + +let make: + ( + ~name: string, + ~doc: string, + ~usage: string, + ~options: list(opt_spec)=?, + ~args: list(arg_spec)=?, + ~commands: list(t)=?, + action + ) => + t; + +let parse: t => unit; diff --git a/silo/src/config.re b/silo/src/config.re new file mode 100644 index 0000000000..495c908d61 --- /dev/null +++ b/silo/src/config.re @@ -0,0 +1,123 @@ +open Toml; + +type config_load_error = + | ConfigNotFound + | ConfigParseError(string, Parser.location) + | ConfigMissingRequiredField(string); + +exception LoadError(config_load_error); + +type t = { + package: package_config, + build: build_config, + bin: bin_config, +} +and package_config = {name: string} +and build_config = { + elide_type_info: option(bool), + include_dirs: option(list(string)), + import_memory: option(bool), + initial_memory_pages: option(int), + maximum_memory_pages: option(int), + memory_base: option(int), + gc: option(bool), + stdlib: option(string), + use_start_section: option(bool), + wasi_polyfill: option(string), + wasm_features, +} +and wasm_features = { + bulk_memory: option(bool), + tail_call: option(bool), +} +and bin_config = { + name: option(string), + path: option(string), + wat: option(bool), + source_map: option(bool), +}; + +let load = () => { + switch (Parser.from_filename("silo.toml")) { + | `Ok(config) => + open Lenses; + + let package = + switch (get(config, field("package"))) { + | Some(package) => package + | None => raise(LoadError(ConfigMissingRequiredField("[package]"))) + }; + + let package_config = { + name: + switch (get(package, key("name") |-- string)) { + | Some(name) => name + | None => + raise(LoadError(ConfigMissingRequiredField("name of [package]"))) + }, + }; + + let build = field("build"); + + let wasm_features = build |-- field("wasm-features"); + let wasm_features = { + bulk_memory: + get(config, wasm_features |-- key("bulk-memory") |-- bool), + tail_call: get(config, wasm_features |-- key("tail-call") |-- bool), + }; + + let build_config = { + elide_type_info: + get(config, build |-- key("elide-type-info") |-- bool), + include_dirs: + get(config, build |-- key("include-dirs") |-- array |-- strings), + import_memory: get(config, build |-- key("import-memory") |-- bool), + initial_memory_pages: + get(config, build |-- key("initial-memory-pages") |-- int), + maximum_memory_pages: + get(config, build |-- key("maximum-memory-pages") |-- int), + memory_base: get(config, build |-- key("memory-base") |-- int), + gc: get(config, build |-- key("gc") |-- bool), + stdlib: get(config, build |-- key("stdlib") |-- string), + use_start_section: + get(config, build |-- key("use-start-section") |-- bool), + wasi_polyfill: get(config, build |-- key("wasi-polyfill") |-- string), + wasm_features, + }; + + let bin = field("bin"); + let bin_config = { + name: get(config, bin |-- key("name") |-- string), + path: get(config, bin |-- key("path") |-- string), + wat: get(config, bin |-- key("wat") |-- bool), + source_map: get(config, bin |-- key("source-map") |-- bool), + }; + + {package: package_config, build: build_config, bin: bin_config}; + | `Error(msg, loc) => raise(LoadError(ConfigParseError(msg, loc))) + | exception (Sys_error(_)) => raise(LoadError(ConfigNotFound)) + }; +}; + +let _ = + Printexc.register_printer(exn => { + switch (exn) { + | LoadError(error) => + switch (error) { + | ConfigNotFound => + Some("no `silo.toml` found in the current directory") + | ConfigParseError(msg, loc) => + Some( + Printf.sprintf( + "silo.toml parse error on line %d, column %d", + loc.line, + loc.column, + ), + ) + | ConfigMissingRequiredField(field) => + Some("silo.toml missing required field " ++ field) + } + + | _ => None + } + }); diff --git a/silo/src/dune b/silo/src/dune new file mode 100644 index 0000000000..7fb68a91c1 --- /dev/null +++ b/silo/src/dune @@ -0,0 +1,9 @@ +(library + (name silo) + (public_name silo) + (libraries dune-build-info toml fp fs.lib pastel.lib)) + +(install + (section lib) + (files) + (package silo)) diff --git a/silo/src/new.re b/silo/src/new.re new file mode 100644 index 0000000000..9c395d5213 --- /dev/null +++ b/silo/src/new.re @@ -0,0 +1,68 @@ +type error = + | InvalidPath(string) + | MustProvideName(string); +exception NewError(error); + +let get_cwd = () => Fp.absoluteCurrentPlatformExn(Sys.getcwd()); +let derelativize = (~base=?, fname: Fp.firstClass) => { + switch (fname) { + | Absolute(path) => path + | Relative(path) => + let b = + switch (base) { + | None => get_cwd() + | Some(path) => path + }; + Fp.join(b, path); + }; +}; + +let new_ = (~name=?, path) => { + let abs_path = + switch (Fp.testForPath(path)) { + | Some(path) => derelativize(path) + | None => raise(NewError(InvalidPath(path))) + }; + let name = + switch (name) { + | Some(name) => name + | None => + switch (Fp.baseName(abs_path)) { + | Some(name) => name + | None => raise(NewError(MustProvideName(path))) + } + }; + + Fs.mkDirPExn(abs_path); + Fs.mkDirPExn(Fp.join(abs_path, Fp.relativeExn("src"))); + + let oc = + open_out(Fp.toString(Fp.join(abs_path, Fp.relativeExn("silo.toml")))); + Printf.fprintf(oc, "[package]\nname = \"%s\"\n", name); + close_out(oc); + + let oc = + open_out( + Fp.toString(Fp.join(abs_path, Fp.relativeExn("src/main.gr"))), + ); + Printf.fprintf(oc, "module Main\n\nprint(\"Hello, world!\")\n"); + close_out(oc); +}; + +let _ = + Printexc.register_printer(exn => { + switch (exn) { + | NewError(error) => + switch (error) { + | InvalidPath(path) => Some("Invalid path " ++ path) + | MustProvideName(path) => + Some( + Printf.sprintf( + "The path at %s does not have a directory name; supply the --name flag to set the package name manually", + path, + ), + ) + } + | _ => None + } + }); diff --git a/silo/test/BinaryFileExtensions.re b/silo/test/BinaryFileExtensions.re new file mode 100644 index 0000000000..d04a379129 --- /dev/null +++ b/silo/test/BinaryFileExtensions.re @@ -0,0 +1,71 @@ +open Rely.MatcherTypes; + +let print_bytes = ((), bytes) => { + let buf = Buffer.create(Bytes.length(bytes) * 3); + Bytes.iter(c => Printf.bprintf(buf, "%02x ", Char.code(c)), bytes); + Buffer.contents(buf); +}; + +type binaryFileExtensions = { + toExist: unit => unit, + toStartWith: bytes => unit, +}; + +let binaryFileExtensions = (actual, {createMatcher}) => { + let pass = (() => "", true); + let createExistsMatcher = + createMatcher( + ({formatReceived, formatExpected}, actualThunk, expectedThunk) => { + let actual = actualThunk(); + let actualExists = Sys.file_exists(Fp.toString(actual)); + + if (!actualExists) { + let failureMessage = + String.concat( + "", + ["Expected ", formatExpected(Fp.toString(actual)), " to exist"], + ); + (() => failureMessage, false); + } else { + pass; + }; + }); + let createStartsWithMatcher = + createMatcher( + ({formatReceived, formatExpected}, actualThunk, expectedThunk) => { + let actual = actualThunk(); + let expected = expectedThunk(); + + let ic = open_in_bin(Fp.toString(actual)); + let expectedLen = Bytes.length(expected); + let buf = Bytes.make(expectedLen, '\000'); + really_input(ic, buf, 0, expectedLen); + close_in(ic); + + let actualStartsWith = buf == expected; + + if (!actualStartsWith) { + let failureMessage = + String.concat( + "", + [ + "Expected ", + Fp.toString(actual), + " to start with bytes ", + formatExpected(Printf.sprintf("%a", print_bytes, expected)), + "\nReceived ", + formatReceived(Printf.sprintf("%a", print_bytes, buf)), + ], + ); + (() => failureMessage, false); + } else { + pass; + }; + }); + + { + toExist: () => createExistsMatcher(() => actual, () => ()), + toStartWith: expected => + createStartsWithMatcher(() => actual, () => expected), + }; +}; diff --git a/silo/test/TestFramework.re b/silo/test/TestFramework.re new file mode 100644 index 0000000000..78b121e718 --- /dev/null +++ b/silo/test/TestFramework.re @@ -0,0 +1,47 @@ +let test_dir = Fp.At.(Fp.absoluteCurrentPlatformExn(Sys.getcwd()) / "test"); +let test_input_dir = Fp.At.(test_dir / "input"); +let test_output_dir = Fp.At.(test_dir / "output"); +let test_snapshots_dir = Fp.At.(test_dir / "__snapshots__"); + +let rec readdir = dir => { + Fs.readDirExn(dir) + |> List.fold_left( + (results, filepath) => { + Sys.is_directory(Fp.toString(filepath)) + ? Array.append(results, readdir(filepath)) + : Array.append(results, [|filepath|]) + }, + [||], + ); +}; + +let clean_wasm = dir => + Array.iter( + file => { + let filename = Fp.toString(file); + if (String.ends_with(~suffix=".wasm", filename) + || String.ends_with(~suffix=".wat", filename)) { + Fs.rmExn(file); + }; + }, + readdir(dir), + ); + +let clean_output = output => + if (Sys.file_exists(Fp.toString(output))) { + Array.iter(Fs.rmExn, readdir(output)); + }; + +let () = { + Printexc.record_backtrace(true); + clean_wasm(test_input_dir); + clean_output(test_output_dir); +}; + +include Rely.Make({ + let config = + Rely.TestFrameworkConfig.initialize({ + snapshotDir: Fp.toString(test_snapshots_dir), + projectDir: Fp.toString(test_dir), + }); +}); diff --git a/silo/test/config/dune b/silo/test/config/dune new file mode 100644 index 0000000000..d44eca41ec --- /dev/null +++ b/silo/test/config/dune @@ -0,0 +1,8 @@ +(executable + (name flags) + (libraries dune.configurator)) + +(rule + (targets flags.sexp) + (action + (run ./flags.exe))) diff --git a/silo/test/config/flags.re b/silo/test/config/flags.re new file mode 100644 index 0000000000..531d32aa4f --- /dev/null +++ b/silo/test/config/flags.re @@ -0,0 +1,21 @@ +module C = Configurator.V1; + +let () = { + C.main(~name="grain_exe_flags", c => { + let default = []; + + let flags = + switch (C.ocaml_config_var(c, "system")) { + | Some("macosx") => + // These flags preserve the original C++ error behavior. Ref https://github.com/ocaml/ocaml/issues/10423 + ["-cc", "clang++"] + | Some("mingw64") => + // MinGW needs these flags passed directly to flexdll, to avoid needing MinGW locations in the path + ["-ccopt", "-l:libpthread.a", "-ccopt", "-l:libstdc++.a"] + | Some(_) => default + | None => default + }; + + C.Flags.write_sexp("flags.sexp", flags); + }); +}; diff --git a/silo/test/dune b/silo/test/dune new file mode 100644 index 0000000000..735bc54548 --- /dev/null +++ b/silo/test/dune @@ -0,0 +1,21 @@ +(dirs :standard suites) + +(library + (name Silo_tests) + (public_name silo-tests.framework) + (libraries silo fp rely.lib) + (modules TestFramework BinaryFileExtensions runner)) + +(executable + (name test) + (public_name test) + (package silo-tests) + (flags + (:standard + -linkall + -g + -w + -40 + (:include ./config/flags.sexp))) + (libraries silo silo-tests.suites silo-tests.framework) + (modules test)) diff --git a/silo/test/input/minimal/silo.toml b/silo/test/input/minimal/silo.toml new file mode 100644 index 0000000000..75baebd399 --- /dev/null +++ b/silo/test/input/minimal/silo.toml @@ -0,0 +1,5 @@ +[package] +name = "minimal" + +[build] +stdlib = "../../../../stdlib" diff --git a/silo/test/input/minimal/src/main.gr b/silo/test/input/minimal/src/main.gr new file mode 100644 index 0000000000..7009fceee5 --- /dev/null +++ b/silo/test/input/minimal/src/main.gr @@ -0,0 +1,3 @@ +module Main + +print("Hello, world!") diff --git a/silo/test/input/path/code/path.gr b/silo/test/input/path/code/path.gr new file mode 100644 index 0000000000..7009fceee5 --- /dev/null +++ b/silo/test/input/path/code/path.gr @@ -0,0 +1,3 @@ +module Main + +print("Hello, world!") diff --git a/silo/test/input/path/silo.toml b/silo/test/input/path/silo.toml new file mode 100644 index 0000000000..dedf864b60 --- /dev/null +++ b/silo/test/input/path/silo.toml @@ -0,0 +1,8 @@ +[package] +name = "path" + +[build] +stdlib = "../../../../stdlib" + +[bin] +path = "code/path.gr" diff --git a/silo/test/runner.re b/silo/test/runner.re new file mode 100644 index 0000000000..629e0aa437 --- /dev/null +++ b/silo/test/runner.re @@ -0,0 +1,50 @@ +open TestFramework; + +let process_dir = Fp.absoluteCurrentPlatformExn(Unix.getcwd()); + +let open_process = (~dir=process_dir, args) => { + Fs.mkDirPExn(dir); + Unix.chdir(Fp.toString(dir)); + + let (stdout, stdin, stderr) = + Unix.open_process_args_full(args[0], args, Unix.environment()); + + let current_time = Unix.time(); + + let out_eof = ref(false); + let err_eof = ref(false); + + let out_buf = Buffer.create(1024); + let err_buf = Buffer.create(1024); + + // Windows buffers output, so read channels as the subprocess is running + while ((! out_eof^ || ! err_eof^) && Unix.time() < current_time +. 15.) { + try(Buffer.add_channel(out_buf, stdout, 1024)) { + | End_of_file => out_eof := true + }; + try(Buffer.add_channel(err_buf, stderr, 1024)) { + | End_of_file => err_eof := true + }; + }; + + let timed_out = Unix.time() > current_time +. 15.; + + let status = Unix.close_process_full((stdout, stdin, stderr)); + let out = Buffer.contents(out_buf); + let err = Buffer.contents(err_buf); + + let code = + switch (status) { + | Unix.WEXITED(code) => code + | _ => failwith("process did not exit properly") + }; + + let out = + if (timed_out) { + "Timed out!\n" ++ out; + } else { + out; + }; + + (code, out, err); +}; diff --git a/silo/test/suites/build.re b/silo/test/suites/build.re new file mode 100644 index 0000000000..e9069f62e1 --- /dev/null +++ b/silo/test/suites/build.re @@ -0,0 +1,45 @@ +open Silo_tests.TestFramework; +open Silo_tests.BinaryFileExtensions; +open Silo_tests.Runner; + +type custom_matchers = { + binaryFile: Fp.t(Fp.absolute) => binaryFileExtensions, +}; + +let customMatchers = createMatcher => { + binaryFile: file => binaryFileExtensions(file, createMatcher), +}; + +let {describe} = + describeConfig |> withCustomMatchers(customMatchers) |> build; + +describe("build", ({test}) => { + test("minimal", ({expect}) => { + let dir = Fp.At.(test_input_dir / "minimal"); + let output = Fp.At.(dir / "minimal.wasm"); + + let cmd = [|"silo", "build"|]; + + let (code, out, err) = open_process(~dir, cmd); + + expect.int(code).toBe(0); + expect.string(err).toBeEmpty(); + expect.string(out).toMatch("Finished"); + expect.ext.binaryFile(output).toExist(); + expect.ext.binaryFile(output).toStartWith(Bytes.of_string("\x00asm")); + }); + test("path", ({expect}) => { + let dir = Fp.At.(test_input_dir / "path"); + let output = Fp.At.(dir / "path.wasm"); + + let cmd = [|"silo", "build"|]; + + let (code, out, err) = open_process(~dir, cmd); + + expect.int(code).toBe(0); + expect.string(err).toBeEmpty(); + expect.string(out).toMatch("Finished"); + expect.ext.binaryFile(output).toExist(); + expect.ext.binaryFile(output).toStartWith(Bytes.of_string("\x00asm")); + }); +}); diff --git a/silo/test/suites/dune b/silo/test/suites/dune new file mode 100644 index 0000000000..851225e24e --- /dev/null +++ b/silo/test/suites/dune @@ -0,0 +1,5 @@ +(library + (name Silo_tests_suites) + (public_name silo-tests.suites) + (libraries silo silo-tests.framework) + (modules (:standard))) diff --git a/silo/test/suites/new.re b/silo/test/suites/new.re new file mode 100644 index 0000000000..441e2c6cfa --- /dev/null +++ b/silo/test/suites/new.re @@ -0,0 +1,68 @@ +open Silo_tests.TestFramework; +open Silo_tests.BinaryFileExtensions; +open Silo_tests.Runner; + +type custom_matchers = { + binaryFile: Fp.t(Fp.absolute) => binaryFileExtensions, +}; + +let customMatchers = createMatcher => { + binaryFile: file => binaryFileExtensions(file, createMatcher), +}; + +let {describe} = + describeConfig |> withCustomMatchers(customMatchers) |> build; + +describe("new", ({test}) => { + test("hello", ({expect}) => { + let dir = test_output_dir; + let hello_dir = Fp.At.(test_output_dir / "hello"); + + let cmd = [|"silo", "new", "hello"|]; + + let (code, out, err) = open_process(~dir, cmd); + + expect.int(code).toBe(0); + expect.string(err).toBeEmpty(); + expect.file(Fp.toString(Fp.At.(hello_dir / "silo.toml"))).toEqual( + "[package]\nname = \"hello\"", + ); + expect.file(Fp.toString(Fp.At.(hello_dir / "src" / "main.gr"))).toEqual( + "module Main\n\nprint(\"Hello, world!\")", + ); + }); + test("hello_nested", ({expect}) => { + let dir = test_output_dir; + let hello_dir = Fp.At.(test_output_dir / "foo" / "bar" / "hello"); + + let cmd = [|"silo", "new", "foo/bar/hello"|]; + + let (code, out, err) = open_process(~dir, cmd); + + expect.int(code).toBe(0); + expect.string(err).toBeEmpty(); + expect.file(Fp.toString(Fp.At.(hello_dir / "silo.toml"))).toEqual( + "[package]\nname = \"hello\"", + ); + expect.file(Fp.toString(Fp.At.(hello_dir / "src" / "main.gr"))).toEqual( + "module Main\n\nprint(\"Hello, world!\")", + ); + }); + test("name", ({expect}) => { + let dir = test_output_dir; + let hello_dir = Fp.At.(test_output_dir / "name"); + + let cmd = [|"silo", "new", "--name", "foo", "name"|]; + + let (code, out, err) = open_process(~dir, cmd); + + expect.int(code).toBe(0); + expect.string(err).toBeEmpty(); + expect.file(Fp.toString(Fp.At.(hello_dir / "silo.toml"))).toEqual( + "[package]\nname = \"foo\"", + ); + expect.file(Fp.toString(Fp.At.(hello_dir / "src" / "main.gr"))).toEqual( + "module Main\n\nprint(\"Hello, world!\")", + ); + }); +}); diff --git a/silo/test/test.re b/silo/test/test.re new file mode 100644 index 0000000000..4234fcafca --- /dev/null +++ b/silo/test/test.re @@ -0,0 +1,2 @@ +prerr_newline(); +Silo_tests.TestFramework.cli();