├── .gitignore ├── App.opam ├── App.re ├── LICENSE ├── Memory.re ├── README.md ├── assets ├── canada1500-rg.ttf └── dune ├── dune ├── dune-project ├── esy.lock ├── .gitattributes ├── .gitignore ├── index.json ├── opam │ ├── base-bigarray.base │ │ └── opam │ ├── base-bytes.base │ │ └── opam │ ├── base-threads.base │ │ └── opam │ ├── base-unix.base │ │ └── opam │ ├── biniou.1.2.0 │ │ └── opam │ ├── camomile.1.0.1 │ │ └── opam │ ├── chalk.1.0 │ │ └── opam │ ├── cmdliner.1.0.2 │ │ └── opam │ ├── color.0.2.0 │ │ └── opam │ ├── conf-m4.1 │ │ └── opam │ ├── conf-which.1 │ │ └── opam │ ├── cppo.1.6.5 │ │ └── opam │ ├── dune.1.6.3 │ │ └── opam │ ├── easy-format.1.3.1 │ │ └── opam │ ├── gg.0.9.3 │ │ └── opam │ ├── jbuilder.transition │ │ └── opam │ ├── js_of_ocaml-lwt.3.3.0 │ │ └── opam │ ├── js_of_ocaml-ppx.3.3.0 │ │ └── opam │ ├── lambda-term.1.13 │ │ └── opam │ ├── lwt.4.1.0 │ │ └── opam │ ├── lwt_log.1.1.0 │ │ └── opam │ ├── lwt_ppx.1.2.1 │ │ └── opam │ ├── lwt_react.1.1.1 │ │ └── opam │ ├── menhir.20181113 │ │ └── opam │ ├── merlin-extend.0.3 │ │ └── opam │ ├── merlin.3.2.2 │ │ └── opam │ ├── ocaml-migrate-parsetree.1.2.0 │ │ └── opam │ ├── ocamlbuild.0.12.0 │ │ └── opam │ ├── ocamlfind.1.8.0 │ │ ├── files │ │ │ ├── ocaml-stub │ │ │ └── ocamlfind.install │ │ └── opam │ ├── ppx_derivers.1.0 │ │ └── opam │ ├── ppx_tools_versioned.5.2.1 │ │ └── opam │ ├── re.1.8.0 │ │ └── opam │ ├── react.1.2.1 │ │ └── opam │ ├── result.1.3 │ │ └── opam │ ├── seq.base │ │ ├── files │ │ │ ├── META.seq │ │ │ └── seq.install │ │ └── opam │ ├── topkg.1.0.0 │ │ └── opam │ ├── uchar.0.0.2 │ │ └── opam │ ├── utop.2.2.0 │ │ └── opam │ ├── yojson.1.5.0 │ │ └── opam │ └── zed.1.6 │ │ └── opam └── overrides │ ├── opam__s__dune_opam__c__1.6.3_opam_override │ └── package.json │ ├── opam__s__lambda_term_opam__c__1.13_opam_override │ ├── files │ │ └── lambda-term-1.13.patch │ └── package.json │ ├── opam__s__merlin_extend_opam__c__0.3_opam_override │ ├── files │ │ └── merlin-extend-winfix.patch │ └── package.json │ ├── opam__s__ocamlbuild_opam__c__0.12.0_opam_override │ ├── files │ │ └── ocamlbuild-0.12.0.patch │ └── package.json │ ├── opam__s__ocamlfind_opam__c__1.8.0_opam_override │ ├── files │ │ └── findlib-1.8.0.patch │ └── package.json │ └── opam__s__utop_opam__c__2.2.0_opam_override │ ├── files │ └── utop-2.2.0.patch │ └── package.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # no trailing slash esy is creating a symlink 2 | node_modules 3 | 4 | # esy 5 | _build/ 6 | _esy/ 7 | 8 | # reason 9 | *.install 10 | .merlin 11 | 12 | -------------------------------------------------------------------------------- /App.opam: -------------------------------------------------------------------------------- 1 | opam-version: "1.2" 2 | version: "dev" 3 | maintainer: "bryphe@outlook.com" 4 | author: ["Bryan Phelps"] 5 | build: [ 6 | 7 | ] 8 | -------------------------------------------------------------------------------- /App.re: -------------------------------------------------------------------------------- 1 | open Revery; 2 | open Revery.Core; 3 | open Revery.Math; 4 | open Revery.UI; 5 | open Revery.UI.Components; 6 | 7 | let init = app => { 8 | let win = App.createWindow(app, "Memory"); 9 | 10 | let containerStyle = 11 | Style.[ 12 | position(`Absolute), 13 | justifyContent(`Center), 14 | alignItems(`Center), 15 | bottom(0), 16 | top(0), 17 | left(0), 18 | right(0), 19 | ]; 20 | 21 | let textStyle = Style.[ 22 | color(Colors.black), 23 | fontFamily("canada1500-rg.ttf"), 24 | fontSize(24) 25 | ]; 26 | 27 | let render = () => ; 28 | 29 | UI.start(win, render); 30 | }; 31 | 32 | App.start(init); 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT 2 | 3 | Copyright (c) 2019 Nikolaus Graf 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Memory.re: -------------------------------------------------------------------------------- 1 | type card = { 2 | visible: bool, 3 | value: int, 4 | }; 5 | 6 | type t = array(card); 7 | 8 | let generateCards = () => { 9 | [ 10 | {visible: false, value: 0}, 11 | {visible: false, value: 1}, 12 | {visible: false, value: 3}, 13 | {visible: false, value: 1}, 14 | {visible: false, value: 0}, 15 | {visible: false, value: 2}, 16 | {visible: false, value: 2}, 17 | {visible: false, value: 3}, 18 | ]; 19 | }; 20 | 21 | /* let allVisible = (cards) => { 22 | cards |> List.for_all((card) => card.visible === true); 23 | } */ 24 | 25 | let flipCard = (index, cards) => { 26 | let visiblePairPositions = 27 | cards 28 | |> List.mapi((cardIndex, card) => { 29 | let valueCount = 30 | cards 31 | |> List.filter(c => 32 | card.visible === true 33 | && c.visible === true 34 | && card.value === c.value 35 | ) 36 | |> List.length; 37 | valueCount >= 2; 38 | }); 39 | 40 | let visibleCount = 41 | cards 42 | |> List.fold_left((count, card) => card.visible ? count + 1 : count, 0); 43 | 44 | cards 45 | |> List.mapi((cardIndex, card) => 46 | cardIndex === index ? {...card, visible: true} : card 47 | ) 48 | |> List.map2( 49 | (isVisiblePair, card) => 50 | visibleCount mod 2 === 0 && !isVisiblePair ? 51 | {...card, visible: false} : card, 52 | visiblePairPositions, 53 | ) 54 | |> List.mapi((cardIndex, card) => 55 | cardIndex === index ? {...card, visible: true} : card 56 | ); 57 | }; 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Revery Memory Dojo 2 | 3 | This readme includes a step by step guide on how to built a Memory app using Revery. 4 | 5 | The finished examples can be found here: [revery-memory](https://github.com/nikgraf/revery-memory) 6 | 7 | screenshot 2019-02-02 at 12 31 21 8 | 9 | ## Instructions 10 | 11 | ### Setup 12 | 13 | Install all the depedencies using 14 | 15 | ``` 16 | esy install 17 | ``` 18 | 19 | Build and run the application a first time: 20 | 21 | ``` 22 | esy run 23 | ``` 24 | 25 | > **NOTE:** The first build will take a while. Subsequent builds will be fast. 26 | 27 | The result should be the a native application starts showing "Hello World". 28 | 29 | During development you can continious build using: 30 | 31 | ``` 32 | esy dune build --watch 33 | ``` 34 | 35 | > **NOTE:** Requires [fswatch](https://github.com/emcrisostomo/fswatch) to be installed. 36 | 37 | ### Creating a Component 38 | 39 | 1. As a first step create a component `Game` inside `App.re` and extract the text "Hello World" into this component. 40 | 2. Extract the component into a separe `Game.re`. 41 | 42 | ### Initialize a Game and render the Cards 43 | 44 | 1. Use the `Memory.generateCards();` to create an initial set of cards. 45 | 2. Create a `Card` component in a separate file. 46 | 3. Map over your set of cards and render a black box for each of the cards. 47 | 48 | _HINT_ Just render them in a row using `flexDirection(`Row)` 49 | 50 | ### Improve the Card 51 | 52 | 1. Create a mapping between the `card.value` and a color set of your choice. 53 | 54 | _HINT_ Revery ships with a Colors module. 55 | 56 | 2. Allow to pass in a `color` prop and render the card in the provided color. 57 | 58 | _HINT_ Use `~color as c` as color is part of a revery module. 59 | 60 | 3. Allow to pass in a `visible` prop and render render the color only when set to visible. In case `visible` is set to `false` render a white card. 61 | 62 | _HINT_ Revery ships with a Colors module. 63 | _HINT_ Modify the `generateCards` function to have visible and non-visible card. 64 | 65 | ### Make it interactive 66 | 67 | 1. Move the initial cards into a state or reducer hook. 68 | 69 | _HINT_ For example `React.Hooks.state(initialCards, slots)` 70 | 71 | 2. Implement an `onClick` prop on the Card component. Whenever the card is flipped log it in the Terminal. 72 | 73 | 3. Instead of logging now flip the card using `Memory.flipCard` and update your cards state. 74 | 75 | ### Polishing 76 | 77 | 1. Use the `Grid` component from the solution to create 2 rows of 4 cards. 78 | 79 | ## License 80 | 81 | [MIT License](LICENSE) 82 | -------------------------------------------------------------------------------- /assets/canada1500-rg.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nikgraf/revery-memory-dojo/39d1d959746b0475280ab602f922a3ead369fd34/assets/canada1500-rg.ttf -------------------------------------------------------------------------------- /assets/dune: -------------------------------------------------------------------------------- 1 | (install 2 | (section bin) 3 | (package App) 4 | (files canada1500-rg.ttf)) 5 | -------------------------------------------------------------------------------- /dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name App) 3 | (package App) 4 | (public_name App) 5 | (libraries 6 | bigarray 7 | reglfw 8 | Revery 9 | )) 10 | -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- 1 | (lang dune 1.1) 2 | -------------------------------------------------------------------------------- /esy.lock/.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows. 3 | * text eol=lf 4 | -------------------------------------------------------------------------------- /esy.lock/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Reset any possible .gitignore, we want all esy.lock to be un-ignored. 3 | !* 4 | -------------------------------------------------------------------------------- /esy.lock/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "checksum": "7ef97b35ddcde1a6b294bdad25985806", 3 | "root": "revery-quick-start@link:./package.json", 4 | "node": { 5 | "revery-quick-start@link:./package.json": { 6 | "id": "revery-quick-start@link:./package.json", 7 | "name": "revery-quick-start", 8 | "version": "link:./package.json", 9 | "source": { "type": "link", "path": ".", "manifest": "package.json" }, 10 | "overrides": [], 11 | "dependencies": [ 12 | "revery@0.5.1@d41d8cd9", "ocaml@4.7.1003@d41d8cd9", 13 | "@opam/dune@opam:1.6.3@a7d7baed" 14 | ], 15 | "devDependencies": [ 16 | "ocaml@4.7.1003@d41d8cd9", "@opam/merlin@opam:3.2.2@829ee6dd" 17 | ] 18 | }, 19 | "revery@0.5.1@d41d8cd9": { 20 | "id": "revery@0.5.1@d41d8cd9", 21 | "name": "revery", 22 | "version": "0.5.1", 23 | "source": { 24 | "type": "install", 25 | "source": [ 26 | "archive:https://registry.npmjs.org/revery/-/revery-0.5.1.tgz#sha1:bb3801a43a328c49040882c02030d08790139ace" 27 | ] 28 | }, 29 | "overrides": [], 30 | "dependencies": [ 31 | "reason-glfw@3.2.1012@d41d8cd9", 32 | "reason-gl-matrix@0.9.9302@d41d8cd9", 33 | "reason-fontkit@2.0.6@d41d8cd9", "ocaml@4.7.1003@d41d8cd9", 34 | "flex@1.2.2@d41d8cd9", "@opam/lwt_ppx@opam:1.2.1@db1172a7", 35 | "@opam/lwt@opam:4.1.0@111fc2bf", 36 | "@opam/js_of_ocaml-lwt@opam:3.3.0@ff746e31", 37 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9", 38 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9", 39 | "@opam/color@opam:0.2.0@8ef09171", 40 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9", 41 | "@brisk/brisk-reconciler@github:briskml/brisk-reconciler#7901934@d41d8cd9" 42 | ], 43 | "devDependencies": [] 44 | }, 45 | "rejest@1.3.0@d41d8cd9": { 46 | "id": "rejest@1.3.0@d41d8cd9", 47 | "name": "rejest", 48 | "version": "1.3.0", 49 | "source": { 50 | "type": "install", 51 | "source": [ 52 | "archive:https://registry.npmjs.org/rejest/-/rejest-1.3.0.tgz#sha1:ab0b819f59da0717c2b0512f0754e2cb79cbacf0" 53 | ] 54 | }, 55 | "overrides": [], 56 | "dependencies": [ 57 | "refmterr@3.1.10@d41d8cd9", "ocaml@4.7.1003@d41d8cd9", 58 | "@opam/lwt_ppx@opam:1.2.1@db1172a7", "@opam/lwt@opam:4.1.0@111fc2bf", 59 | "@opam/lambda-term@opam:1.13@08871237", 60 | "@opam/js_of_ocaml-lwt@opam:3.3.0@ff746e31", 61 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9", 62 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9", 63 | "@opam/dune@opam:1.6.3@a7d7baed", "@opam/chalk@opam:1.0@6f5da5ff", 64 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 65 | ], 66 | "devDependencies": [] 67 | }, 68 | "refmterr@3.1.10@d41d8cd9": { 69 | "id": "refmterr@3.1.10@d41d8cd9", 70 | "name": "refmterr", 71 | "version": "3.1.10", 72 | "source": { 73 | "type": "install", 74 | "source": [ 75 | "archive:https://registry.npmjs.org/refmterr/-/refmterr-3.1.10.tgz#sha1:7c3e238022acb5de4e2254ab506d70eee13c0a46" 76 | ] 77 | }, 78 | "overrides": [], 79 | "dependencies": [ 80 | "ocaml@4.7.1003@d41d8cd9", "@opam/re@opam:1.8.0@7baac1a7", 81 | "@opam/dune@opam:1.6.3@a7d7baed", 82 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 83 | ], 84 | "devDependencies": [] 85 | }, 86 | "reason-glfw@3.2.1012@d41d8cd9": { 87 | "id": "reason-glfw@3.2.1012@d41d8cd9", 88 | "name": "reason-glfw", 89 | "version": "3.2.1012", 90 | "source": { 91 | "type": "install", 92 | "source": [ 93 | "archive:https://registry.npmjs.org/reason-glfw/-/reason-glfw-3.2.1012.tgz#sha1:c1c4383a235a29090fd2ed6f790cd1e7ffdd17ef" 94 | ] 95 | }, 96 | "overrides": [], 97 | "dependencies": [ 98 | "refmterr@3.1.10@d41d8cd9", "reason-gl-matrix@0.9.9302@d41d8cd9", 99 | "ocaml@4.7.1003@d41d8cd9", "esy-glfw@3.2.1008@d41d8cd9", 100 | "esy-cmake@0.3.5@d41d8cd9", "@opam/lwt_ppx@opam:1.2.1@db1172a7", 101 | "@opam/lwt@opam:4.1.0@111fc2bf", 102 | "@opam/js_of_ocaml-lwt@opam:3.3.0@ff746e31", 103 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9", 104 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9", 105 | "@opam/dune@opam:1.6.3@a7d7baed", 106 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 107 | ], 108 | "devDependencies": [] 109 | }, 110 | "reason-gl-matrix@0.9.9302@d41d8cd9": { 111 | "id": "reason-gl-matrix@0.9.9302@d41d8cd9", 112 | "name": "reason-gl-matrix", 113 | "version": "0.9.9302", 114 | "source": { 115 | "type": "install", 116 | "source": [ 117 | "archive:https://registry.npmjs.org/reason-gl-matrix/-/reason-gl-matrix-0.9.9302.tgz#sha1:817ca98761ddee904a56d7de14232ac4eca804c4" 118 | ] 119 | }, 120 | "overrides": [], 121 | "dependencies": [ 122 | "rejest@1.3.0@d41d8cd9", "refmterr@3.1.10@d41d8cd9", 123 | "ocaml@4.7.1003@d41d8cd9", 124 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9", 125 | "@opam/dune@opam:1.6.3@a7d7baed", 126 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 127 | ], 128 | "devDependencies": [] 129 | }, 130 | "reason-fontkit@2.0.6@d41d8cd9": { 131 | "id": "reason-fontkit@2.0.6@d41d8cd9", 132 | "name": "reason-fontkit", 133 | "version": "2.0.6", 134 | "source": { 135 | "type": "install", 136 | "source": [ 137 | "archive:https://registry.npmjs.org/reason-fontkit/-/reason-fontkit-2.0.6.tgz#sha1:5897569556ea778f9cee3f402812ce1b749a993a" 138 | ] 139 | }, 140 | "overrides": [], 141 | "dependencies": [ 142 | "refmterr@3.1.10@d41d8cd9", "reason-glfw@3.2.1012@d41d8cd9", 143 | "reason-gl-matrix@0.9.9302@d41d8cd9", 144 | "esy-harfbuzz@1.9.1005@d41d8cd9", "esy-freetype2@2.9.1006@d41d8cd9", 145 | "esy-cmake@0.3.5@d41d8cd9", "@opam/dune@opam:1.6.3@a7d7baed", 146 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 147 | ], 148 | "devDependencies": [] 149 | }, 150 | "ocaml@4.7.1003@d41d8cd9": { 151 | "id": "ocaml@4.7.1003@d41d8cd9", 152 | "name": "ocaml", 153 | "version": "4.7.1003", 154 | "source": { 155 | "type": "install", 156 | "source": [ 157 | "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.7.1003.tgz#sha1:01bb355b8af7977543c9b8be5e21d81ba5fa6ad7" 158 | ] 159 | }, 160 | "overrides": [], 161 | "dependencies": [], 162 | "devDependencies": [] 163 | }, 164 | "flex@1.2.2@d41d8cd9": { 165 | "id": "flex@1.2.2@d41d8cd9", 166 | "name": "flex", 167 | "version": "1.2.2", 168 | "source": { 169 | "type": "install", 170 | "source": [ 171 | "archive:https://registry.npmjs.org/flex/-/flex-1.2.2.tgz#sha1:6b46058d8c909f9ec1ece18ed21b28ae5e611b3e" 172 | ] 173 | }, 174 | "overrides": [], 175 | "dependencies": [ 176 | "refmterr@3.1.10@d41d8cd9", "@opam/dune@opam:1.6.3@a7d7baed", 177 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 178 | ], 179 | "devDependencies": [] 180 | }, 181 | "esy-harfbuzz@1.9.1005@d41d8cd9": { 182 | "id": "esy-harfbuzz@1.9.1005@d41d8cd9", 183 | "name": "esy-harfbuzz", 184 | "version": "1.9.1005", 185 | "source": { 186 | "type": "install", 187 | "source": [ 188 | "archive:https://registry.npmjs.org/esy-harfbuzz/-/esy-harfbuzz-1.9.1005.tgz#sha1:04651c73d33ce8004e61fde35a7549a7b9e908b6" 189 | ] 190 | }, 191 | "overrides": [], 192 | "dependencies": [ "esy-cmake@0.3.5@d41d8cd9" ], 193 | "devDependencies": [] 194 | }, 195 | "esy-glfw@3.2.1008@d41d8cd9": { 196 | "id": "esy-glfw@3.2.1008@d41d8cd9", 197 | "name": "esy-glfw", 198 | "version": "3.2.1008", 199 | "source": { 200 | "type": "install", 201 | "source": [ 202 | "archive:https://registry.npmjs.org/esy-glfw/-/esy-glfw-3.2.1008.tgz#sha1:0f161ccdc9fc9d1c66679739b710ca217708f4b4" 203 | ] 204 | }, 205 | "overrides": [], 206 | "dependencies": [ "esy-cmake@0.3.5@d41d8cd9" ], 207 | "devDependencies": [] 208 | }, 209 | "esy-freetype2@2.9.1006@d41d8cd9": { 210 | "id": "esy-freetype2@2.9.1006@d41d8cd9", 211 | "name": "esy-freetype2", 212 | "version": "2.9.1006", 213 | "source": { 214 | "type": "install", 215 | "source": [ 216 | "archive:https://registry.npmjs.org/esy-freetype2/-/esy-freetype2-2.9.1006.tgz#sha1:6c32a49543c273b427bbfb56c563e148006978bc" 217 | ] 218 | }, 219 | "overrides": [], 220 | "dependencies": [ "esy-cmake@0.3.5@d41d8cd9" ], 221 | "devDependencies": [] 222 | }, 223 | "esy-cmake@0.3.5@d41d8cd9": { 224 | "id": "esy-cmake@0.3.5@d41d8cd9", 225 | "name": "esy-cmake", 226 | "version": "0.3.5", 227 | "source": { 228 | "type": "install", 229 | "source": [ 230 | "archive:https://registry.npmjs.org/esy-cmake/-/esy-cmake-0.3.5.tgz#sha1:2df0bdfe9317fbcded5f463fca1f346464494c7a" 231 | ] 232 | }, 233 | "overrides": [], 234 | "dependencies": [], 235 | "devDependencies": [] 236 | }, 237 | "@opam/zed@opam:1.6@004ea65e": { 238 | "id": "@opam/zed@opam:1.6@004ea65e", 239 | "name": "@opam/zed", 240 | "version": "opam:1.6", 241 | "source": { 242 | "type": "install", 243 | "source": [ 244 | "archive:https://opam.ocaml.org/cache/md5/f7/f75c3094af1a22f9801d5ca5eb2d40e0#md5:f75c3094af1a22f9801d5ca5eb2d40e0", 245 | "archive:https://github.com/diml/zed/releases/download/1.6/zed-1.6.tbz#md5:f75c3094af1a22f9801d5ca5eb2d40e0" 246 | ], 247 | "opam": { 248 | "name": "zed", 249 | "version": "1.6", 250 | "path": "esy.lock/opam/zed.1.6" 251 | } 252 | }, 253 | "overrides": [], 254 | "dependencies": [ 255 | "ocaml@4.7.1003@d41d8cd9", "@opam/react@opam:1.2.1@0e11855f", 256 | "@opam/jbuilder@opam:transition@58bdfe0a", 257 | "@opam/camomile@opam:1.0.1@4a2e8bdd", 258 | "@opam/base-bytes@opam:base@19d0c2ff", 259 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 260 | ], 261 | "devDependencies": [ 262 | "ocaml@4.7.1003@d41d8cd9", "@opam/react@opam:1.2.1@0e11855f", 263 | "@opam/camomile@opam:1.0.1@4a2e8bdd", 264 | "@opam/base-bytes@opam:base@19d0c2ff" 265 | ] 266 | }, 267 | "@opam/yojson@opam:1.5.0@890db858": { 268 | "id": "@opam/yojson@opam:1.5.0@890db858", 269 | "name": "@opam/yojson", 270 | "version": "opam:1.5.0", 271 | "source": { 272 | "type": "install", 273 | "source": [ 274 | "archive:https://opam.ocaml.org/cache/md5/d8/d80de1bacdde292af42f7c78b323da7b#md5:d80de1bacdde292af42f7c78b323da7b", 275 | "archive:https://github.com/ocaml-community/yojson/releases/download/1.5.0/yojson-1.5.0.tbz#md5:d80de1bacdde292af42f7c78b323da7b" 276 | ], 277 | "opam": { 278 | "name": "yojson", 279 | "version": "1.5.0", 280 | "path": "esy.lock/opam/yojson.1.5.0" 281 | } 282 | }, 283 | "overrides": [], 284 | "dependencies": [ 285 | "ocaml@4.7.1003@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed", 286 | "@opam/dune@opam:1.6.3@a7d7baed", "@opam/cppo@opam:1.6.5@bec3dbd9", 287 | "@opam/biniou@opam:1.2.0@c8516f18", 288 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 289 | ], 290 | "devDependencies": [ 291 | "ocaml@4.7.1003@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed", 292 | "@opam/biniou@opam:1.2.0@c8516f18" 293 | ] 294 | }, 295 | "@opam/utop@opam:2.2.0@82198b0d": { 296 | "id": "@opam/utop@opam:2.2.0@82198b0d", 297 | "name": "@opam/utop", 298 | "version": "opam:2.2.0", 299 | "source": { 300 | "type": "install", 301 | "source": [ 302 | "archive:https://opam.ocaml.org/cache/md5/c8/c8e4805883ce27a2ef27b0e4322d6f04#md5:c8e4805883ce27a2ef27b0e4322d6f04", 303 | "archive:https://github.com/diml/utop/releases/download/2.2.0/utop-2.2.0.tbz#md5:c8e4805883ce27a2ef27b0e4322d6f04" 304 | ], 305 | "opam": { 306 | "name": "utop", 307 | "version": "2.2.0", 308 | "path": "esy.lock/opam/utop.2.2.0" 309 | } 310 | }, 311 | "overrides": [ 312 | { 313 | "opamoverride": 314 | "esy.lock/overrides/opam__s__utop_opam__c__2.2.0_opam_override" 315 | } 316 | ], 317 | "dependencies": [ 318 | "ocaml@4.7.1003@d41d8cd9", "@opam/react@opam:1.2.1@0e11855f", 319 | "@opam/ocamlfind@opam:1.8.0@96572762", 320 | "@opam/lwt_react@opam:1.1.1@a034a5ae", 321 | "@opam/lwt@opam:4.1.0@111fc2bf", 322 | "@opam/lambda-term@opam:1.13@08871237", 323 | "@opam/jbuilder@opam:transition@58bdfe0a", 324 | "@opam/cppo@opam:1.6.5@bec3dbd9", 325 | "@opam/camomile@opam:1.0.1@4a2e8bdd", 326 | "@opam/base-unix@opam:base@87d0b2eb", 327 | "@opam/base-threads@opam:base@36803084", 328 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 329 | ], 330 | "devDependencies": [ 331 | "ocaml@4.7.1003@d41d8cd9", "@opam/react@opam:1.2.1@0e11855f", 332 | "@opam/ocamlfind@opam:1.8.0@96572762", 333 | "@opam/lwt_react@opam:1.1.1@a034a5ae", 334 | "@opam/lwt@opam:4.1.0@111fc2bf", 335 | "@opam/lambda-term@opam:1.13@08871237", 336 | "@opam/camomile@opam:1.0.1@4a2e8bdd", 337 | "@opam/base-unix@opam:base@87d0b2eb", 338 | "@opam/base-threads@opam:base@36803084" 339 | ] 340 | }, 341 | "@opam/uchar@opam:0.0.2@c8218eea": { 342 | "id": "@opam/uchar@opam:0.0.2@c8218eea", 343 | "name": "@opam/uchar", 344 | "version": "opam:0.0.2", 345 | "source": { 346 | "type": "install", 347 | "source": [ 348 | "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", 349 | "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" 350 | ], 351 | "opam": { 352 | "name": "uchar", 353 | "version": "0.0.2", 354 | "path": "esy.lock/opam/uchar.0.0.2" 355 | } 356 | }, 357 | "overrides": [], 358 | "dependencies": [ 359 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlbuild@opam:0.12.0@6c616094", 360 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 361 | ], 362 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 363 | }, 364 | "@opam/topkg@opam:1.0.0@61f4ccf9": { 365 | "id": "@opam/topkg@opam:1.0.0@61f4ccf9", 366 | "name": "@opam/topkg", 367 | "version": "opam:1.0.0", 368 | "source": { 369 | "type": "install", 370 | "source": [ 371 | "archive:https://opam.ocaml.org/cache/md5/e3/e3d76bda06bf68cb5853caf6627da603#md5:e3d76bda06bf68cb5853caf6627da603", 372 | "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz#md5:e3d76bda06bf68cb5853caf6627da603" 373 | ], 374 | "opam": { 375 | "name": "topkg", 376 | "version": "1.0.0", 377 | "path": "esy.lock/opam/topkg.1.0.0" 378 | } 379 | }, 380 | "overrides": [], 381 | "dependencies": [ 382 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e", 383 | "@opam/ocamlfind@opam:1.8.0@96572762", 384 | "@opam/ocamlbuild@opam:0.12.0@6c616094", 385 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 386 | ], 387 | "devDependencies": [ 388 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e", 389 | "@opam/ocamlbuild@opam:0.12.0@6c616094" 390 | ] 391 | }, 392 | "@opam/seq@opam:base@d8d7de1d": { 393 | "id": "@opam/seq@opam:base@d8d7de1d", 394 | "name": "@opam/seq", 395 | "version": "opam:base", 396 | "source": { 397 | "type": "install", 398 | "source": [ "no-source:" ], 399 | "opam": { 400 | "name": "seq", 401 | "version": "base", 402 | "path": "esy.lock/opam/seq.base" 403 | } 404 | }, 405 | "overrides": [], 406 | "dependencies": [ 407 | "ocaml@4.7.1003@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 408 | ], 409 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 410 | }, 411 | "@opam/result@opam:1.3@bee8bf2e": { 412 | "id": "@opam/result@opam:1.3@bee8bf2e", 413 | "name": "@opam/result", 414 | "version": "opam:1.3", 415 | "source": { 416 | "type": "install", 417 | "source": [ 418 | "archive:https://opam.ocaml.org/cache/md5/4b/4beebefd41f7f899b6eeba7414e7ae01#md5:4beebefd41f7f899b6eeba7414e7ae01", 419 | "archive:https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz#md5:4beebefd41f7f899b6eeba7414e7ae01" 420 | ], 421 | "opam": { 422 | "name": "result", 423 | "version": "1.3", 424 | "path": "esy.lock/opam/result.1.3" 425 | } 426 | }, 427 | "overrides": [], 428 | "dependencies": [ 429 | "ocaml@4.7.1003@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 430 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 431 | ], 432 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 433 | }, 434 | "@opam/react@opam:1.2.1@0e11855f": { 435 | "id": "@opam/react@opam:1.2.1@0e11855f", 436 | "name": "@opam/react", 437 | "version": "opam:1.2.1", 438 | "source": { 439 | "type": "install", 440 | "source": [ 441 | "archive:https://opam.ocaml.org/cache/md5/ce/ce1454438ce4e9d2931248d3abba1fcc#md5:ce1454438ce4e9d2931248d3abba1fcc", 442 | "archive:http://erratique.ch/software/react/releases/react-1.2.1.tbz#md5:ce1454438ce4e9d2931248d3abba1fcc" 443 | ], 444 | "opam": { 445 | "name": "react", 446 | "version": "1.2.1", 447 | "path": "esy.lock/opam/react.1.2.1" 448 | } 449 | }, 450 | "overrides": [], 451 | "dependencies": [ 452 | "ocaml@4.7.1003@d41d8cd9", "@opam/topkg@opam:1.0.0@61f4ccf9", 453 | "@opam/ocamlfind@opam:1.8.0@96572762", 454 | "@opam/ocamlbuild@opam:0.12.0@6c616094", 455 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 456 | ], 457 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 458 | }, 459 | "@opam/re@opam:1.8.0@7baac1a7": { 460 | "id": "@opam/re@opam:1.8.0@7baac1a7", 461 | "name": "@opam/re", 462 | "version": "opam:1.8.0", 463 | "source": { 464 | "type": "install", 465 | "source": [ 466 | "archive:https://opam.ocaml.org/cache/md5/76/765f6f8d3e6ab200866e719ed7e5178d#md5:765f6f8d3e6ab200866e719ed7e5178d", 467 | "archive:https://github.com/ocaml/ocaml-re/releases/download/1.8.0/re-1.8.0.tbz#md5:765f6f8d3e6ab200866e719ed7e5178d" 468 | ], 469 | "opam": { 470 | "name": "re", 471 | "version": "1.8.0", 472 | "path": "esy.lock/opam/re.1.8.0" 473 | } 474 | }, 475 | "overrides": [], 476 | "dependencies": [ 477 | "ocaml@4.7.1003@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", 478 | "@opam/jbuilder@opam:transition@58bdfe0a", 479 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 480 | ], 481 | "devDependencies": [ 482 | "ocaml@4.7.1003@d41d8cd9", "@opam/seq@opam:base@d8d7de1d" 483 | ] 484 | }, 485 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75": { 486 | "id": "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 487 | "name": "@opam/ppx_tools_versioned", 488 | "version": "opam:5.2.1", 489 | "source": { 490 | "type": "install", 491 | "source": [ 492 | "archive:https://opam.ocaml.org/cache/md5/1a/1ae6ae43ec161fbbf12c2b4d3a7e26f5#md5:1ae6ae43ec161fbbf12c2b4d3a7e26f5", 493 | "archive:https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.1.tar.gz#md5:1ae6ae43ec161fbbf12c2b4d3a7e26f5" 494 | ], 495 | "opam": { 496 | "name": "ppx_tools_versioned", 497 | "version": "5.2.1", 498 | "path": "esy.lock/opam/ppx_tools_versioned.5.2.1" 499 | } 500 | }, 501 | "overrides": [], 502 | "dependencies": [ 503 | "ocaml@4.7.1003@d41d8cd9", 504 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 505 | "@opam/jbuilder@opam:transition@58bdfe0a", 506 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 507 | ], 508 | "devDependencies": [ 509 | "ocaml@4.7.1003@d41d8cd9", 510 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3" 511 | ] 512 | }, 513 | "@opam/ppx_derivers@opam:1.0@78655ff8": { 514 | "id": "@opam/ppx_derivers@opam:1.0@78655ff8", 515 | "name": "@opam/ppx_derivers", 516 | "version": "opam:1.0", 517 | "source": { 518 | "type": "install", 519 | "source": [ 520 | "archive:https://opam.ocaml.org/cache/md5/4d/4ddce8f43fdb9b0ef0ab6a7cbfebc3e3#md5:4ddce8f43fdb9b0ef0ab6a7cbfebc3e3", 521 | "archive:https://github.com/ocaml-ppx/ppx_derivers/archive/1.0.tar.gz#md5:4ddce8f43fdb9b0ef0ab6a7cbfebc3e3" 522 | ], 523 | "opam": { 524 | "name": "ppx_derivers", 525 | "version": "1.0", 526 | "path": "esy.lock/opam/ppx_derivers.1.0" 527 | } 528 | }, 529 | "overrides": [], 530 | "dependencies": [ 531 | "ocaml@4.7.1003@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 532 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 533 | ], 534 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 535 | }, 536 | "@opam/ocamlfind@opam:1.8.0@96572762": { 537 | "id": "@opam/ocamlfind@opam:1.8.0@96572762", 538 | "name": "@opam/ocamlfind", 539 | "version": "opam:1.8.0", 540 | "source": { 541 | "type": "install", 542 | "source": [ 543 | "archive:https://opam.ocaml.org/cache/md5/a7/a710c559667672077a93d34eb6a42e5b#md5:a710c559667672077a93d34eb6a42e5b", 544 | "archive:http://download2.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b", 545 | "archive:http://download.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b" 546 | ], 547 | "opam": { 548 | "name": "ocamlfind", 549 | "version": "1.8.0", 550 | "path": "esy.lock/opam/ocamlfind.1.8.0" 551 | } 552 | }, 553 | "overrides": [ 554 | { 555 | "opamoverride": 556 | "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override" 557 | } 558 | ], 559 | "dependencies": [ 560 | "ocaml@4.7.1003@d41d8cd9", "@opam/conf-m4@opam:1@3279850f", 561 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 562 | ], 563 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 564 | }, 565 | "@opam/ocamlbuild@opam:0.12.0@6c616094": { 566 | "id": "@opam/ocamlbuild@opam:0.12.0@6c616094", 567 | "name": "@opam/ocamlbuild", 568 | "version": "opam:0.12.0", 569 | "source": { 570 | "type": "install", 571 | "source": [ 572 | "archive:https://opam.ocaml.org/cache/md5/44/442baa19470bd49150f153122e22907b#md5:442baa19470bd49150f153122e22907b", 573 | "archive:https://github.com/ocaml/ocamlbuild/archive/0.12.0.tar.gz#md5:442baa19470bd49150f153122e22907b" 574 | ], 575 | "opam": { 576 | "name": "ocamlbuild", 577 | "version": "0.12.0", 578 | "path": "esy.lock/opam/ocamlbuild.0.12.0" 579 | } 580 | }, 581 | "overrides": [ 582 | { 583 | "opamoverride": 584 | "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.12.0_opam_override" 585 | } 586 | ], 587 | "dependencies": [ 588 | "ocaml@4.7.1003@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 589 | ], 590 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 591 | }, 592 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3": { 593 | "id": "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 594 | "name": "@opam/ocaml-migrate-parsetree", 595 | "version": "opam:1.2.0", 596 | "source": { 597 | "type": "install", 598 | "source": [ 599 | "archive:https://opam.ocaml.org/cache/md5/cc/cc6fb09ad6f99156c7dba47711c62c6f#md5:cc6fb09ad6f99156c7dba47711c62c6f", 600 | "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.2.0/ocaml-migrate-parsetree-v1.2.0.tbz#md5:cc6fb09ad6f99156c7dba47711c62c6f" 601 | ], 602 | "opam": { 603 | "name": "ocaml-migrate-parsetree", 604 | "version": "1.2.0", 605 | "path": "esy.lock/opam/ocaml-migrate-parsetree.1.2.0" 606 | } 607 | }, 608 | "overrides": [], 609 | "dependencies": [ 610 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e", 611 | "@opam/ppx_derivers@opam:1.0@78655ff8", 612 | "@opam/dune@opam:1.6.3@a7d7baed", "@esy-ocaml/substs@0.0.1@d41d8cd9" 613 | ], 614 | "devDependencies": [ 615 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e", 616 | "@opam/ppx_derivers@opam:1.0@78655ff8" 617 | ] 618 | }, 619 | "@opam/merlin-extend@opam:0.3@e1fc0d08": { 620 | "id": "@opam/merlin-extend@opam:0.3@e1fc0d08", 621 | "name": "@opam/merlin-extend", 622 | "version": "opam:0.3", 623 | "source": { 624 | "type": "install", 625 | "source": [ 626 | "archive:https://opam.ocaml.org/cache/md5/9c/9c6dfd4f53328f02f12fcc265f4e2dda#md5:9c6dfd4f53328f02f12fcc265f4e2dda", 627 | "archive:https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz#md5:9c6dfd4f53328f02f12fcc265f4e2dda" 628 | ], 629 | "opam": { 630 | "name": "merlin-extend", 631 | "version": "0.3", 632 | "path": "esy.lock/opam/merlin-extend.0.3" 633 | } 634 | }, 635 | "overrides": [ 636 | { 637 | "opamoverride": 638 | "esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override" 639 | } 640 | ], 641 | "dependencies": [ 642 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@96572762", 643 | "@opam/cppo@opam:1.6.5@bec3dbd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 644 | ], 645 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 646 | }, 647 | "@opam/merlin@opam:3.2.2@829ee6dd": { 648 | "id": "@opam/merlin@opam:3.2.2@829ee6dd", 649 | "name": "@opam/merlin", 650 | "version": "opam:3.2.2", 651 | "source": { 652 | "type": "install", 653 | "source": [ 654 | "archive:https://opam.ocaml.org/cache/md5/ed/ede35b65f8ac9c440cfade5445662c54#md5:ede35b65f8ac9c440cfade5445662c54", 655 | "archive:https://github.com/ocaml/merlin/releases/download/v3.2.2/merlin-v3.2.2.tbz#md5:ede35b65f8ac9c440cfade5445662c54" 656 | ], 657 | "opam": { 658 | "name": "merlin", 659 | "version": "3.2.2", 660 | "path": "esy.lock/opam/merlin.3.2.2" 661 | } 662 | }, 663 | "overrides": [], 664 | "dependencies": [ 665 | "ocaml@4.7.1003@d41d8cd9", "@opam/yojson@opam:1.5.0@890db858", 666 | "@opam/ocamlfind@opam:1.8.0@96572762", 667 | "@opam/dune@opam:1.6.3@a7d7baed", "@esy-ocaml/substs@0.0.1@d41d8cd9" 668 | ], 669 | "devDependencies": [ 670 | "ocaml@4.7.1003@d41d8cd9", "@opam/yojson@opam:1.5.0@890db858", 671 | "@opam/ocamlfind@opam:1.8.0@96572762" 672 | ] 673 | }, 674 | "@opam/menhir@opam:20181113@0c8257a8": { 675 | "id": "@opam/menhir@opam:20181113@0c8257a8", 676 | "name": "@opam/menhir", 677 | "version": "opam:20181113", 678 | "source": { 679 | "type": "install", 680 | "source": [ 681 | "archive:https://opam.ocaml.org/cache/md5/69/69ce441a06ea131cd43e7b44c4303f3c#md5:69ce441a06ea131cd43e7b44c4303f3c", 682 | "archive:https://gitlab.inria.fr/fpottier/menhir/repository/20181113/archive.tar.gz#md5:69ce441a06ea131cd43e7b44c4303f3c" 683 | ], 684 | "opam": { 685 | "name": "menhir", 686 | "version": "20181113", 687 | "path": "esy.lock/opam/menhir.20181113" 688 | } 689 | }, 690 | "overrides": [], 691 | "dependencies": [ 692 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@96572762", 693 | "@opam/ocamlbuild@opam:0.12.0@6c616094", 694 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 695 | ], 696 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 697 | }, 698 | "@opam/lwt_react@opam:1.1.1@a034a5ae": { 699 | "id": "@opam/lwt_react@opam:1.1.1@a034a5ae", 700 | "name": "@opam/lwt_react", 701 | "version": "opam:1.1.1", 702 | "source": { 703 | "type": "install", 704 | "source": [ 705 | "archive:https://opam.ocaml.org/cache/md5/3b/3bbde866884e32cc7a9d9cbd1e52bde3#md5:3bbde866884e32cc7a9d9cbd1e52bde3", 706 | "archive:https://github.com/ocsigen/lwt/archive/4.0.0.tar.gz#md5:3bbde866884e32cc7a9d9cbd1e52bde3" 707 | ], 708 | "opam": { 709 | "name": "lwt_react", 710 | "version": "1.1.1", 711 | "path": "esy.lock/opam/lwt_react.1.1.1" 712 | } 713 | }, 714 | "overrides": [], 715 | "dependencies": [ 716 | "ocaml@4.7.1003@d41d8cd9", "@opam/react@opam:1.2.1@0e11855f", 717 | "@opam/lwt@opam:4.1.0@111fc2bf", 718 | "@opam/jbuilder@opam:transition@58bdfe0a", 719 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 720 | ], 721 | "devDependencies": [ 722 | "ocaml@4.7.1003@d41d8cd9", "@opam/react@opam:1.2.1@0e11855f", 723 | "@opam/lwt@opam:4.1.0@111fc2bf" 724 | ] 725 | }, 726 | "@opam/lwt_ppx@opam:1.2.1@db1172a7": { 727 | "id": "@opam/lwt_ppx@opam:1.2.1@db1172a7", 728 | "name": "@opam/lwt_ppx", 729 | "version": "opam:1.2.1", 730 | "source": { 731 | "type": "install", 732 | "source": [ 733 | "archive:https://opam.ocaml.org/cache/md5/e9/e919bee206f18b3d49250ecf9584fde7#md5:e919bee206f18b3d49250ecf9584fde7", 734 | "archive:https://github.com/ocsigen/lwt/archive/4.1.0.tar.gz#md5:e919bee206f18b3d49250ecf9584fde7" 735 | ], 736 | "opam": { 737 | "name": "lwt_ppx", 738 | "version": "1.2.1", 739 | "path": "esy.lock/opam/lwt_ppx.1.2.1" 740 | } 741 | }, 742 | "overrides": [], 743 | "dependencies": [ 744 | "ocaml@4.7.1003@d41d8cd9", 745 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 746 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 747 | "@opam/lwt@opam:4.1.0@111fc2bf", 748 | "@opam/jbuilder@opam:transition@58bdfe0a", 749 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 750 | ], 751 | "devDependencies": [ 752 | "ocaml@4.7.1003@d41d8cd9", 753 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 754 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 755 | "@opam/lwt@opam:4.1.0@111fc2bf" 756 | ] 757 | }, 758 | "@opam/lwt_log@opam:1.1.0@72575e04": { 759 | "id": "@opam/lwt_log@opam:1.1.0@72575e04", 760 | "name": "@opam/lwt_log", 761 | "version": "opam:1.1.0", 762 | "source": { 763 | "type": "install", 764 | "source": [ 765 | "archive:https://opam.ocaml.org/cache/md5/92/92142135d01a4d7e805990cc98653d55#md5:92142135d01a4d7e805990cc98653d55", 766 | "archive:https://github.com/aantron/lwt_log/archive/1.1.0.tar.gz#md5:92142135d01a4d7e805990cc98653d55" 767 | ], 768 | "opam": { 769 | "name": "lwt_log", 770 | "version": "1.1.0", 771 | "path": "esy.lock/opam/lwt_log.1.1.0" 772 | } 773 | }, 774 | "overrides": [], 775 | "dependencies": [ 776 | "ocaml@4.7.1003@d41d8cd9", "@opam/lwt@opam:4.1.0@111fc2bf", 777 | "@opam/jbuilder@opam:transition@58bdfe0a", 778 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 779 | ], 780 | "devDependencies": [ 781 | "ocaml@4.7.1003@d41d8cd9", "@opam/lwt@opam:4.1.0@111fc2bf" 782 | ] 783 | }, 784 | "@opam/lwt@opam:4.1.0@111fc2bf": { 785 | "id": "@opam/lwt@opam:4.1.0@111fc2bf", 786 | "name": "@opam/lwt", 787 | "version": "opam:4.1.0", 788 | "source": { 789 | "type": "install", 790 | "source": [ 791 | "archive:https://opam.ocaml.org/cache/md5/e9/e919bee206f18b3d49250ecf9584fde7#md5:e919bee206f18b3d49250ecf9584fde7", 792 | "archive:https://github.com/ocsigen/lwt/archive/4.1.0.tar.gz#md5:e919bee206f18b3d49250ecf9584fde7" 793 | ], 794 | "opam": { 795 | "name": "lwt", 796 | "version": "4.1.0", 797 | "path": "esy.lock/opam/lwt.4.1.0" 798 | } 799 | }, 800 | "overrides": [], 801 | "dependencies": [ 802 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e", 803 | "@opam/ocamlfind@opam:1.8.0@96572762", 804 | "@opam/jbuilder@opam:transition@58bdfe0a", 805 | "@opam/cppo@opam:1.6.5@bec3dbd9", 806 | "@opam/base-unix@opam:base@87d0b2eb", 807 | "@opam/base-threads@opam:base@36803084", 808 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 809 | ], 810 | "devDependencies": [ 811 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e" 812 | ] 813 | }, 814 | "@opam/lambda-term@opam:1.13@08871237": { 815 | "id": "@opam/lambda-term@opam:1.13@08871237", 816 | "name": "@opam/lambda-term", 817 | "version": "opam:1.13", 818 | "source": { 819 | "type": "install", 820 | "source": [ 821 | "archive:https://opam.ocaml.org/cache/md5/c1/c13826a97014d4d573b927b623c7e043#md5:c13826a97014d4d573b927b623c7e043", 822 | "archive:https://github.com/diml/lambda-term/releases/download/1.13/lambda-term-1.13.tbz#md5:c13826a97014d4d573b927b623c7e043" 823 | ], 824 | "opam": { 825 | "name": "lambda-term", 826 | "version": "1.13", 827 | "path": "esy.lock/opam/lambda-term.1.13" 828 | } 829 | }, 830 | "overrides": [ 831 | { 832 | "opamoverride": 833 | "esy.lock/overrides/opam__s__lambda_term_opam__c__1.13_opam_override" 834 | } 835 | ], 836 | "dependencies": [ 837 | "ocaml@4.7.1003@d41d8cd9", "@opam/zed@opam:1.6@004ea65e", 838 | "@opam/react@opam:1.2.1@0e11855f", 839 | "@opam/lwt_react@opam:1.1.1@a034a5ae", 840 | "@opam/lwt_log@opam:1.1.0@72575e04", "@opam/lwt@opam:4.1.0@111fc2bf", 841 | "@opam/jbuilder@opam:transition@58bdfe0a", 842 | "@opam/camomile@opam:1.0.1@4a2e8bdd", 843 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 844 | ], 845 | "devDependencies": [ 846 | "ocaml@4.7.1003@d41d8cd9", "@opam/zed@opam:1.6@004ea65e", 847 | "@opam/react@opam:1.2.1@0e11855f", 848 | "@opam/lwt_react@opam:1.1.1@a034a5ae", 849 | "@opam/lwt_log@opam:1.1.0@72575e04", "@opam/lwt@opam:4.1.0@111fc2bf", 850 | "@opam/camomile@opam:1.0.1@4a2e8bdd" 851 | ] 852 | }, 853 | "@opam/js_of_ocaml-ppx@opam:3.3.0@6d90d7d2": { 854 | "id": "@opam/js_of_ocaml-ppx@opam:3.3.0@6d90d7d2", 855 | "name": "@opam/js_of_ocaml-ppx", 856 | "version": "opam:3.3.0", 857 | "source": { 858 | "type": "install", 859 | "source": [ 860 | "archive:https://opam.ocaml.org/cache/md5/43/438051f64e307edbda42f250a3d9cef1#md5:438051f64e307edbda42f250a3d9cef1", 861 | "archive:https://github.com/ocsigen/js_of_ocaml/archive/3.3.0.tar.gz#md5:438051f64e307edbda42f250a3d9cef1" 862 | ], 863 | "opam": { 864 | "name": "js_of_ocaml-ppx", 865 | "version": "3.3.0", 866 | "path": "esy.lock/opam/js_of_ocaml-ppx.3.3.0" 867 | } 868 | }, 869 | "overrides": [], 870 | "dependencies": [ 871 | "ocaml@4.7.1003@d41d8cd9", 872 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 873 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 874 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9", 875 | "@opam/dune@opam:1.6.3@a7d7baed", "@esy-ocaml/substs@0.0.1@d41d8cd9" 876 | ], 877 | "devDependencies": [ 878 | "ocaml@4.7.1003@d41d8cd9", 879 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 880 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 881 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9" 882 | ] 883 | }, 884 | "@opam/js_of_ocaml-lwt@opam:3.3.0@ff746e31": { 885 | "id": "@opam/js_of_ocaml-lwt@opam:3.3.0@ff746e31", 886 | "name": "@opam/js_of_ocaml-lwt", 887 | "version": "opam:3.3.0", 888 | "source": { 889 | "type": "install", 890 | "source": [ 891 | "archive:https://opam.ocaml.org/cache/md5/43/438051f64e307edbda42f250a3d9cef1#md5:438051f64e307edbda42f250a3d9cef1", 892 | "archive:https://github.com/ocsigen/js_of_ocaml/archive/3.3.0.tar.gz#md5:438051f64e307edbda42f250a3d9cef1" 893 | ], 894 | "opam": { 895 | "name": "js_of_ocaml-lwt", 896 | "version": "3.3.0", 897 | "path": "esy.lock/opam/js_of_ocaml-lwt.3.3.0" 898 | } 899 | }, 900 | "overrides": [], 901 | "dependencies": [ 902 | "ocaml@4.7.1003@d41d8cd9", "@opam/lwt_log@opam:1.1.0@72575e04", 903 | "@opam/lwt@opam:4.1.0@111fc2bf", 904 | "@opam/js_of_ocaml-ppx@opam:3.3.0@6d90d7d2", 905 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9", 906 | "@opam/dune@opam:1.6.3@a7d7baed", "@esy-ocaml/substs@0.0.1@d41d8cd9" 907 | ], 908 | "devDependencies": [ 909 | "ocaml@4.7.1003@d41d8cd9", "@opam/lwt@opam:4.1.0@111fc2bf", 910 | "@opam/js_of_ocaml-ppx@opam:3.3.0@6d90d7d2", 911 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9" 912 | ] 913 | }, 914 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9": { 915 | "id": 916 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9", 917 | "name": "@opam/js_of_ocaml-compiler", 918 | "version": 919 | "github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce", 920 | "source": { 921 | "type": "install", 922 | "source": [ 923 | "github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce" 924 | ] 925 | }, 926 | "overrides": [], 927 | "dependencies": [ 928 | "ocaml@4.7.1003@d41d8cd9", "@opam/yojson@opam:1.5.0@890db858", 929 | "@opam/ocamlfind@opam:1.8.0@96572762", 930 | "@opam/dune@opam:1.6.3@a7d7baed", "@opam/cppo@opam:1.6.5@bec3dbd9", 931 | "@opam/cmdliner@opam:1.0.2@b29b7491", 932 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 933 | ], 934 | "devDependencies": [ 935 | "ocaml@4.7.1003@d41d8cd9", "@opam/yojson@opam:1.5.0@890db858", 936 | "@opam/cppo@opam:1.6.5@bec3dbd9", 937 | "@opam/cmdliner@opam:1.0.2@b29b7491" 938 | ] 939 | }, 940 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9": { 941 | "id": 942 | "@opam/js_of_ocaml@github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce@d41d8cd9", 943 | "name": "@opam/js_of_ocaml", 944 | "version": "github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce", 945 | "source": { 946 | "type": "install", 947 | "source": [ "github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce" ] 948 | }, 949 | "overrides": [], 950 | "dependencies": [ 951 | "ocaml@4.7.1003@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", 952 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 953 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 954 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9", 955 | "@opam/dune@opam:1.6.3@a7d7baed", "@esy-ocaml/substs@0.0.1@d41d8cd9" 956 | ], 957 | "devDependencies": [ 958 | "ocaml@4.7.1003@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", 959 | "@opam/ppx_tools_versioned@opam:5.2.1@95275a75", 960 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 961 | "@opam/js_of_ocaml-compiler@github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce@d41d8cd9" 962 | ] 963 | }, 964 | "@opam/jbuilder@opam:transition@58bdfe0a": { 965 | "id": "@opam/jbuilder@opam:transition@58bdfe0a", 966 | "name": "@opam/jbuilder", 967 | "version": "opam:transition", 968 | "source": { 969 | "type": "install", 970 | "source": [ "no-source:" ], 971 | "opam": { 972 | "name": "jbuilder", 973 | "version": "transition", 974 | "path": "esy.lock/opam/jbuilder.transition" 975 | } 976 | }, 977 | "overrides": [], 978 | "dependencies": [ 979 | "ocaml@4.7.1003@d41d8cd9", "@opam/dune@opam:1.6.3@a7d7baed", 980 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 981 | ], 982 | "devDependencies": [ 983 | "ocaml@4.7.1003@d41d8cd9", "@opam/dune@opam:1.6.3@a7d7baed" 984 | ] 985 | }, 986 | "@opam/gg@opam:0.9.3@063e5657": { 987 | "id": "@opam/gg@opam:0.9.3@063e5657", 988 | "name": "@opam/gg", 989 | "version": "opam:0.9.3", 990 | "source": { 991 | "type": "install", 992 | "source": [ 993 | "archive:https://opam.ocaml.org/cache/md5/18/1801fc7b6af16c597ef0bfaacc12cd5b#md5:1801fc7b6af16c597ef0bfaacc12cd5b", 994 | "archive:http://erratique.ch/software/gg/releases/gg-0.9.3.tbz#md5:1801fc7b6af16c597ef0bfaacc12cd5b" 995 | ], 996 | "opam": { 997 | "name": "gg", 998 | "version": "0.9.3", 999 | "path": "esy.lock/opam/gg.0.9.3" 1000 | } 1001 | }, 1002 | "overrides": [], 1003 | "dependencies": [ 1004 | "ocaml@4.7.1003@d41d8cd9", "@opam/topkg@opam:1.0.0@61f4ccf9", 1005 | "@opam/ocamlfind@opam:1.8.0@96572762", 1006 | "@opam/ocamlbuild@opam:0.12.0@6c616094", 1007 | "@opam/base-bigarray@opam:base@b03491b0", 1008 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1009 | ], 1010 | "devDependencies": [ 1011 | "ocaml@4.7.1003@d41d8cd9", "@opam/base-bigarray@opam:base@b03491b0" 1012 | ] 1013 | }, 1014 | "@opam/easy-format@opam:1.3.1@9abfd4ed": { 1015 | "id": "@opam/easy-format@opam:1.3.1@9abfd4ed", 1016 | "name": "@opam/easy-format", 1017 | "version": "opam:1.3.1", 1018 | "source": { 1019 | "type": "install", 1020 | "source": [ 1021 | "archive:https://opam.ocaml.org/cache/md5/4e/4e163700fb88fdcd6b8976c3a216c8ea#md5:4e163700fb88fdcd6b8976c3a216c8ea", 1022 | "archive:https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz#md5:4e163700fb88fdcd6b8976c3a216c8ea" 1023 | ], 1024 | "opam": { 1025 | "name": "easy-format", 1026 | "version": "1.3.1", 1027 | "path": "esy.lock/opam/easy-format.1.3.1" 1028 | } 1029 | }, 1030 | "overrides": [], 1031 | "dependencies": [ 1032 | "ocaml@4.7.1003@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 1033 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1034 | ], 1035 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 1036 | }, 1037 | "@opam/dune@opam:1.6.3@a7d7baed": { 1038 | "id": "@opam/dune@opam:1.6.3@a7d7baed", 1039 | "name": "@opam/dune", 1040 | "version": "opam:1.6.3", 1041 | "source": { 1042 | "type": "install", 1043 | "source": [ 1044 | "archive:https://opam.ocaml.org/cache/md5/12/1212a36547d25269675d767c38fecf5f#md5:1212a36547d25269675d767c38fecf5f", 1045 | "archive:https://github.com/ocaml/dune/releases/download/1.6.3/dune-1.6.3.tbz#md5:1212a36547d25269675d767c38fecf5f" 1046 | ], 1047 | "opam": { 1048 | "name": "dune", 1049 | "version": "1.6.3", 1050 | "path": "esy.lock/opam/dune.1.6.3" 1051 | } 1052 | }, 1053 | "overrides": [ 1054 | { 1055 | "opamoverride": 1056 | "esy.lock/overrides/opam__s__dune_opam__c__1.6.3_opam_override" 1057 | } 1058 | ], 1059 | "dependencies": [ 1060 | "ocaml@4.7.1003@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", 1061 | "@opam/base-threads@opam:base@36803084", 1062 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1063 | ], 1064 | "devDependencies": [ 1065 | "ocaml@4.7.1003@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", 1066 | "@opam/base-threads@opam:base@36803084" 1067 | ] 1068 | }, 1069 | "@opam/cppo@opam:1.6.5@bec3dbd9": { 1070 | "id": "@opam/cppo@opam:1.6.5@bec3dbd9", 1071 | "name": "@opam/cppo", 1072 | "version": "opam:1.6.5", 1073 | "source": { 1074 | "type": "install", 1075 | "source": [ 1076 | "archive:https://opam.ocaml.org/cache/md5/1c/1cd25741d31417995b0973fe0b6f6c82#md5:1cd25741d31417995b0973fe0b6f6c82", 1077 | "archive:https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz#md5:1cd25741d31417995b0973fe0b6f6c82" 1078 | ], 1079 | "opam": { 1080 | "name": "cppo", 1081 | "version": "1.6.5", 1082 | "path": "esy.lock/opam/cppo.1.6.5" 1083 | } 1084 | }, 1085 | "overrides": [], 1086 | "dependencies": [ 1087 | "ocaml@4.7.1003@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 1088 | "@opam/base-unix@opam:base@87d0b2eb", 1089 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1090 | ], 1091 | "devDependencies": [ 1092 | "ocaml@4.7.1003@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb" 1093 | ] 1094 | }, 1095 | "@opam/conf-which@opam:1@1da7b8cf": { 1096 | "id": "@opam/conf-which@opam:1@1da7b8cf", 1097 | "name": "@opam/conf-which", 1098 | "version": "opam:1", 1099 | "source": { 1100 | "type": "install", 1101 | "source": [ "no-source:" ], 1102 | "opam": { 1103 | "name": "conf-which", 1104 | "version": "1", 1105 | "path": "esy.lock/opam/conf-which.1" 1106 | } 1107 | }, 1108 | "overrides": [], 1109 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1110 | "devDependencies": [] 1111 | }, 1112 | "@opam/conf-m4@opam:1@3279850f": { 1113 | "id": "@opam/conf-m4@opam:1@3279850f", 1114 | "name": "@opam/conf-m4", 1115 | "version": "opam:1", 1116 | "source": { 1117 | "type": "install", 1118 | "source": [ "no-source:" ], 1119 | "opam": { 1120 | "name": "conf-m4", 1121 | "version": "1", 1122 | "path": "esy.lock/opam/conf-m4.1" 1123 | } 1124 | }, 1125 | "overrides": [], 1126 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1127 | "devDependencies": [] 1128 | }, 1129 | "@opam/color@opam:0.2.0@8ef09171": { 1130 | "id": "@opam/color@opam:0.2.0@8ef09171", 1131 | "name": "@opam/color", 1132 | "version": "opam:0.2.0", 1133 | "source": { 1134 | "type": "install", 1135 | "source": [ 1136 | "archive:https://opam.ocaml.org/cache/md5/36/36a5d45385a02f96d07d40d1b0fbcf8a#md5:36a5d45385a02f96d07d40d1b0fbcf8a", 1137 | "archive:https://github.com/anuragsoni/color/releases/download/0.2.0/color-0.2.0.tbz#md5:36a5d45385a02f96d07d40d1b0fbcf8a" 1138 | ], 1139 | "opam": { 1140 | "name": "color", 1141 | "version": "0.2.0", 1142 | "path": "esy.lock/opam/color.0.2.0" 1143 | } 1144 | }, 1145 | "overrides": [], 1146 | "dependencies": [ 1147 | "ocaml@4.7.1003@d41d8cd9", "@opam/gg@opam:0.9.3@063e5657", 1148 | "@opam/dune@opam:1.6.3@a7d7baed", "@esy-ocaml/substs@0.0.1@d41d8cd9" 1149 | ], 1150 | "devDependencies": [ 1151 | "ocaml@4.7.1003@d41d8cd9", "@opam/gg@opam:0.9.3@063e5657" 1152 | ] 1153 | }, 1154 | "@opam/cmdliner@opam:1.0.2@b29b7491": { 1155 | "id": "@opam/cmdliner@opam:1.0.2@b29b7491", 1156 | "name": "@opam/cmdliner", 1157 | "version": "opam:1.0.2", 1158 | "source": { 1159 | "type": "install", 1160 | "source": [ 1161 | "archive:https://opam.ocaml.org/cache/md5/ab/ab2f0130e88e8dcd723ac6154c98a881#md5:ab2f0130e88e8dcd723ac6154c98a881", 1162 | "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.2.tbz#md5:ab2f0130e88e8dcd723ac6154c98a881" 1163 | ], 1164 | "opam": { 1165 | "name": "cmdliner", 1166 | "version": "1.0.2", 1167 | "path": "esy.lock/opam/cmdliner.1.0.2" 1168 | } 1169 | }, 1170 | "overrides": [], 1171 | "dependencies": [ 1172 | "ocaml@4.7.1003@d41d8cd9", "@opam/topkg@opam:1.0.0@61f4ccf9", 1173 | "@opam/result@opam:1.3@bee8bf2e", 1174 | "@opam/ocamlfind@opam:1.8.0@96572762", 1175 | "@opam/ocamlbuild@opam:0.12.0@6c616094", 1176 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1177 | ], 1178 | "devDependencies": [ 1179 | "ocaml@4.7.1003@d41d8cd9", "@opam/result@opam:1.3@bee8bf2e" 1180 | ] 1181 | }, 1182 | "@opam/chalk@opam:1.0@6f5da5ff": { 1183 | "id": "@opam/chalk@opam:1.0@6f5da5ff", 1184 | "name": "@opam/chalk", 1185 | "version": "opam:1.0", 1186 | "source": { 1187 | "type": "install", 1188 | "source": [ 1189 | "archive:https://opam.ocaml.org/cache/md5/c6/c685f3024e5a4e74c86b4d9ce67ae34f#md5:c685f3024e5a4e74c86b4d9ce67ae34f", 1190 | "archive:https://github.com/nickzuber/chalk/archive/v1.0.tar.gz#md5:c685f3024e5a4e74c86b4d9ce67ae34f" 1191 | ], 1192 | "opam": { 1193 | "name": "chalk", 1194 | "version": "1.0", 1195 | "path": "esy.lock/opam/chalk.1.0" 1196 | } 1197 | }, 1198 | "overrides": [], 1199 | "dependencies": [ 1200 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@96572762", 1201 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1202 | ], 1203 | "devDependencies": [ 1204 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@96572762" 1205 | ] 1206 | }, 1207 | "@opam/camomile@opam:1.0.1@4a2e8bdd": { 1208 | "id": "@opam/camomile@opam:1.0.1@4a2e8bdd", 1209 | "name": "@opam/camomile", 1210 | "version": "opam:1.0.1", 1211 | "source": { 1212 | "type": "install", 1213 | "source": [ 1214 | "archive:https://opam.ocaml.org/cache/md5/82/82e016653431353a07f22c259adc6e05#md5:82e016653431353a07f22c259adc6e05", 1215 | "archive:https://github.com/yoriyuki/Camomile/releases/download/1.0.1/camomile-1.0.1.tbz#md5:82e016653431353a07f22c259adc6e05" 1216 | ], 1217 | "opam": { 1218 | "name": "camomile", 1219 | "version": "1.0.1", 1220 | "path": "esy.lock/opam/camomile.1.0.1" 1221 | } 1222 | }, 1223 | "overrides": [], 1224 | "dependencies": [ 1225 | "ocaml@4.7.1003@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 1226 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1227 | ], 1228 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 1229 | }, 1230 | "@opam/biniou@opam:1.2.0@c8516f18": { 1231 | "id": "@opam/biniou@opam:1.2.0@c8516f18", 1232 | "name": "@opam/biniou", 1233 | "version": "opam:1.2.0", 1234 | "source": { 1235 | "type": "install", 1236 | "source": [ 1237 | "archive:https://opam.ocaml.org/cache/md5/f3/f3e92358e832ed94eaf23ce622ccc2f9#md5:f3e92358e832ed94eaf23ce622ccc2f9", 1238 | "archive:https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz#md5:f3e92358e832ed94eaf23ce622ccc2f9" 1239 | ], 1240 | "opam": { 1241 | "name": "biniou", 1242 | "version": "1.2.0", 1243 | "path": "esy.lock/opam/biniou.1.2.0" 1244 | } 1245 | }, 1246 | "overrides": [], 1247 | "dependencies": [ 1248 | "ocaml@4.7.1003@d41d8cd9", "@opam/jbuilder@opam:transition@58bdfe0a", 1249 | "@opam/easy-format@opam:1.3.1@9abfd4ed", 1250 | "@opam/conf-which@opam:1@1da7b8cf", 1251 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1252 | ], 1253 | "devDependencies": [ 1254 | "ocaml@4.7.1003@d41d8cd9", "@opam/easy-format@opam:1.3.1@9abfd4ed" 1255 | ] 1256 | }, 1257 | "@opam/base-unix@opam:base@87d0b2eb": { 1258 | "id": "@opam/base-unix@opam:base@87d0b2eb", 1259 | "name": "@opam/base-unix", 1260 | "version": "opam:base", 1261 | "source": { 1262 | "type": "install", 1263 | "source": [ "no-source:" ], 1264 | "opam": { 1265 | "name": "base-unix", 1266 | "version": "base", 1267 | "path": "esy.lock/opam/base-unix.base" 1268 | } 1269 | }, 1270 | "overrides": [], 1271 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1272 | "devDependencies": [] 1273 | }, 1274 | "@opam/base-threads@opam:base@36803084": { 1275 | "id": "@opam/base-threads@opam:base@36803084", 1276 | "name": "@opam/base-threads", 1277 | "version": "opam:base", 1278 | "source": { 1279 | "type": "install", 1280 | "source": [ "no-source:" ], 1281 | "opam": { 1282 | "name": "base-threads", 1283 | "version": "base", 1284 | "path": "esy.lock/opam/base-threads.base" 1285 | } 1286 | }, 1287 | "overrides": [], 1288 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1289 | "devDependencies": [] 1290 | }, 1291 | "@opam/base-bytes@opam:base@19d0c2ff": { 1292 | "id": "@opam/base-bytes@opam:base@19d0c2ff", 1293 | "name": "@opam/base-bytes", 1294 | "version": "opam:base", 1295 | "source": { 1296 | "type": "install", 1297 | "source": [ "no-source:" ], 1298 | "opam": { 1299 | "name": "base-bytes", 1300 | "version": "base", 1301 | "path": "esy.lock/opam/base-bytes.base" 1302 | } 1303 | }, 1304 | "overrides": [], 1305 | "dependencies": [ 1306 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@96572762", 1307 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1308 | ], 1309 | "devDependencies": [ 1310 | "ocaml@4.7.1003@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@96572762" 1311 | ] 1312 | }, 1313 | "@opam/base-bigarray@opam:base@b03491b0": { 1314 | "id": "@opam/base-bigarray@opam:base@b03491b0", 1315 | "name": "@opam/base-bigarray", 1316 | "version": "opam:base", 1317 | "source": { 1318 | "type": "install", 1319 | "source": [ "no-source:" ], 1320 | "opam": { 1321 | "name": "base-bigarray", 1322 | "version": "base", 1323 | "path": "esy.lock/opam/base-bigarray.base" 1324 | } 1325 | }, 1326 | "overrides": [], 1327 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1328 | "devDependencies": [] 1329 | }, 1330 | "@esy-ocaml/substs@0.0.1@d41d8cd9": { 1331 | "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", 1332 | "name": "@esy-ocaml/substs", 1333 | "version": "0.0.1", 1334 | "source": { 1335 | "type": "install", 1336 | "source": [ 1337 | "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" 1338 | ] 1339 | }, 1340 | "overrides": [], 1341 | "dependencies": [], 1342 | "devDependencies": [] 1343 | }, 1344 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9": { 1345 | "id": "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9", 1346 | "name": "@esy-ocaml/reason", 1347 | "version": "github:facebook/reason#ab49908", 1348 | "source": { 1349 | "type": "install", 1350 | "source": [ "github:facebook/reason#ab49908" ] 1351 | }, 1352 | "overrides": [], 1353 | "dependencies": [ 1354 | "ocaml@4.7.1003@d41d8cd9", "@opam/utop@opam:2.2.0@82198b0d", 1355 | "@opam/result@opam:1.3@bee8bf2e", 1356 | "@opam/ocamlfind@opam:1.8.0@96572762", 1357 | "@opam/ocaml-migrate-parsetree@opam:1.2.0@5b3aa0d3", 1358 | "@opam/merlin-extend@opam:0.3@e1fc0d08", 1359 | "@opam/menhir@opam:20181113@0c8257a8", 1360 | "@opam/dune@opam:1.6.3@a7d7baed" 1361 | ], 1362 | "devDependencies": [ "ocaml@4.7.1003@d41d8cd9" ] 1363 | }, 1364 | "@brisk/brisk-reconciler@github:briskml/brisk-reconciler#7901934@d41d8cd9": { 1365 | "id": 1366 | "@brisk/brisk-reconciler@github:briskml/brisk-reconciler#7901934@d41d8cd9", 1367 | "name": "@brisk/brisk-reconciler", 1368 | "version": "github:briskml/brisk-reconciler#7901934", 1369 | "source": { 1370 | "type": "install", 1371 | "source": [ "github:briskml/brisk-reconciler#7901934" ] 1372 | }, 1373 | "overrides": [], 1374 | "dependencies": [ 1375 | "ocaml@4.7.1003@d41d8cd9", "@opam/dune@opam:1.6.3@a7d7baed", 1376 | "@esy-ocaml/reason@github:facebook/reason#ab49908@d41d8cd9" 1377 | ], 1378 | "devDependencies": [] 1379 | } 1380 | } 1381 | } -------------------------------------------------------------------------------- /esy.lock/opam/base-bigarray.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "https://github.com/ocaml/opam-repository/issues" 3 | description: """ 4 | Bigarray library distributed with the OCaml compiler 5 | """ 6 | 7 | -------------------------------------------------------------------------------- /esy.lock/opam/base-bytes.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: " " 3 | authors: " " 4 | homepage: " " 5 | depends: [ 6 | "ocaml" {>= "4.02.0"} 7 | "ocamlfind" {>= "1.5.3"} 8 | ] 9 | synopsis: "Bytes library distributed with the OCaml compiler" 10 | -------------------------------------------------------------------------------- /esy.lock/opam/base-threads.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "https://github.com/ocaml/opam-repository/issues" 3 | description: """ 4 | Threads library distributed with the OCaml compiler 5 | """ 6 | 7 | -------------------------------------------------------------------------------- /esy.lock/opam/base-unix.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "https://github.com/ocaml/opam-repository/issues" 3 | description: """ 4 | Unix library distributed with the OCaml compiler 5 | """ 6 | 7 | -------------------------------------------------------------------------------- /esy.lock/opam/biniou.1.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/biniou" 6 | bug-reports: "https://github.com/mjambon/biniou/issues" 7 | dev-repo: "git+https://github.com/mjambon/biniou.git" 8 | license: "BSD-3-Clause" 9 | 10 | build: [ 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ["jbuilder" "runtest" "-p" name] {with-test} 13 | ] 14 | depends: [ 15 | "ocaml" {>= "4.02.3"} 16 | "conf-which" {build} 17 | "jbuilder" {build & >= "1.0+beta7"} 18 | "easy-format" 19 | ] 20 | synopsis: 21 | "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" 22 | url { 23 | src: "https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz" 24 | checksum: "md5=f3e92358e832ed94eaf23ce622ccc2f9" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/camomile.1.0.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "yoriyuki.y@gmail.com" 3 | authors: ["Yoriyuki Yamagata"] 4 | homepage: "https://github.com/yoriyuki/Camomile/wiki" 5 | bug-reports: "https://github.com/yoriyuki/Camomile/issues" 6 | license: "LGPL-2+ with OCaml linking exception" 7 | dev-repo: "git+https://github.com/yoriyuki/Camomile.git" 8 | build: [ 9 | ["ocaml" "configure.ml" "--share" "%{share}%/camomile"] 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "jbuilder" {build & >= "1.0+beta17"} 16 | ] 17 | synopsis: "A Unicode library" 18 | description: """ 19 | Camomile is a Unicode library for OCaml. Camomile provides Unicode character 20 | type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about 200 encodings, 21 | collation and locale-sensitive case mappings, and more. The library is currently 22 | designed for Unicode Standard 3.2.""" 23 | url { 24 | src: 25 | "https://github.com/yoriyuki/Camomile/releases/download/1.0.1/camomile-1.0.1.tbz" 26 | checksum: "md5=82e016653431353a07f22c259adc6e05" 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/chalk.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Nick Zuber " 3 | authors: "Nick Zuber " 4 | homepage: "https://github.com/nickzuber/chalk" 5 | bug-reports: "https://github.com/nickzuber/chalk/issues" 6 | license: "MIT" 7 | dev-repo: "git+ssh://git@github.com/nickzuber/chalk.git" 8 | build: [make "build"] 9 | install: [make "build"] 10 | remove: ["ocamlfind" "remove" "chalk"] 11 | depends: ["ocaml" "ocamlfind"] 12 | synopsis: "Composable and simple terminal highlighting package" 13 | description: """ 14 | Composable and simple terminal highlighting package. Very simple API; 15 | and example usage could be as follows: 16 | 17 | ```ocaml 18 | let some_string = "Hello world!" 19 | |> Chalk.red 20 | |> Chalk.bold 21 | |> Chalk.underline 22 | ```""" 23 | flags: light-uninstall 24 | url { 25 | src: "https://github.com/nickzuber/chalk/archive/v1.0.tar.gz" 26 | checksum: "md5=c685f3024e5a4e74c86b4d9ce67ae34f" 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/cmdliner.1.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/cmdliner" 5 | doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" 6 | dev-repo: "git+http://erratique.ch/repos/cmdliner.git" 7 | bug-reports: "https://github.com/dbuenzli/cmdliner/issues" 8 | tags: [ "cli" "system" "declarative" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "result" 16 | ] 17 | build: [[ 18 | "ocaml" "pkg/pkg.ml" "build" 19 | "--pinned" "%{pinned}%" 20 | ]] 21 | synopsis: "Declarative definition of command line interfaces for OCaml" 22 | description: """ 23 | Cmdliner allows the declarative definition of command line interfaces 24 | for OCaml. 25 | 26 | It provides a simple and compositional mechanism to convert command 27 | line arguments to OCaml values and pass them to your functions. The 28 | module automatically handles syntax errors, help messages and UNIX man 29 | page generation. It supports programs with single or multiple commands 30 | and respects most of the [POSIX][1] and [GNU][2] conventions. 31 | 32 | Cmdliner has no dependencies and is distributed under the ISC license. 33 | 34 | [1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html 35 | [2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html""" 36 | url { 37 | src: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.2.tbz" 38 | checksum: "md5=ab2f0130e88e8dcd723ac6154c98a881" 39 | } 40 | -------------------------------------------------------------------------------- /esy.lock/opam/color.0.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | name: "color" 3 | maintainer: "anuragsoni.13@gmail.com" 4 | authors: ["Anurag Soni"] 5 | homepage: "https://github.com/anuragsoni/color" 6 | dev-repo: "git+https://github.com/anuragsoni/color.git" 7 | bug-reports: "https://github.com/anuragsoni/color/issues" 8 | doc: "https://anuragsoni.github.io/color/" 9 | license: "MIT" 10 | 11 | build: [ 12 | ["dune" "subst"] {pinned} 13 | ["dune" "build" "-p" name "-j" jobs] 14 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 15 | ] 16 | 17 | depends: [ 18 | "ocaml" {>= "4.05.0"} 19 | "dune" {build} 20 | "alcotest" {with-test} 21 | "gg" 22 | ] 23 | 24 | description: """ 25 | Converts between different color formats 26 | 27 | Library that converts between different color formats. Right now it deals with 28 | HSL, HSLA, RGB and RGBA formats. 29 | 30 | The goal for this library is to provide easy handling of colors on the web, when working 31 | with `js_of_ocaml`. 32 | """ 33 | 34 | url { 35 | src: "https://github.com/anuragsoni/color/releases/download/0.2.0/color-0.2.0.tbz" 36 | checksum: ["md5=36a5d45385a02f96d07d40d1b0fbcf8a"] 37 | } 38 | 39 | -------------------------------------------------------------------------------- /esy.lock/opam/conf-m4.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "tim@gfxmonk.net" 3 | homepage: "http://www.gnu.org/software/m4/m4.html" 4 | bug-reports: "https://github.com/ocaml/opam-repository/issues" 5 | authors: "GNU Project" 6 | license: "GPL-3" 7 | build: [["sh" "-exc" "echo | m4"]] 8 | depexts: [ 9 | ["m4"] {os-distribution = "debian"} 10 | ["m4"] {os-distribution = "ubuntu"} 11 | ["m4"] {os-distribution = "fedora"} 12 | ["m4"] {os-distribution = "rhel"} 13 | ["m4"] {os-distribution = "centos"} 14 | ["m4"] {os-distribution = "alpine"} 15 | ["m4"] {os-distribution = "nixos"} 16 | ["m4"] {os-family = "suse"} 17 | ["m4"] {os-distribution = "oraclelinux"} 18 | ["m4"] {os-distribution = "archlinux"} 19 | ] 20 | synopsis: "Virtual package relying on m4" 21 | description: 22 | "This package can only install if the m4 binary is installed on the system." 23 | flags: conf 24 | -------------------------------------------------------------------------------- /esy.lock/opam/conf-which.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "unixjunkie@sdf.org" 3 | homepage: "http://www.gnu.org/software/which/" 4 | authors: "Carlo Wood" 5 | bug-reports: "https://github.com/ocaml/opam-repository/issues" 6 | license: "GPL-2+" 7 | build: [["which" "which"]] 8 | depexts: [ 9 | ["which"] {os-distribution = "centos"} 10 | ["which"] {os-distribution = "fedora"} 11 | ["which"] {os-family = "suse"} 12 | ["debianutils"] {os-distribution = "debian"} 13 | ["debianutils"] {os-distribution = "ubuntu"} 14 | ["which"] {os-distribution = "nixos"} 15 | ["which"] {os-distribution = "archlinux"} 16 | ] 17 | synopsis: "Virtual package relying on which" 18 | description: 19 | "This package can only install if the which program is installed on the system." 20 | flags: conf 21 | -------------------------------------------------------------------------------- /esy.lock/opam/cppo.1.6.5/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "https://github.com/mjambon/cppo" 5 | dev-repo: "git+https://github.com/mjambon/cppo.git" 6 | bug-reports: "https://github.com/mjambon/cppo/issues" 7 | license: "BSD-3-Clause" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ["jbuilder" "runtest" "-p" name] {with-test} 13 | ] 14 | depends: [ 15 | "ocaml" 16 | "jbuilder" {build & >= "1.0+beta17"} 17 | "base-unix" 18 | ] 19 | synopsis: "Equivalent of the C preprocessor for OCaml programs" 20 | url { 21 | src: "https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz" 22 | checksum: "md5=1cd25741d31417995b0973fe0b6f6c82" 23 | } 24 | -------------------------------------------------------------------------------- /esy.lock/opam/dune.1.6.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/ocaml/dune" 5 | bug-reports: "https://github.com/ocaml/dune/issues" 6 | dev-repo: "git+https://github.com/ocaml/dune.git" 7 | license: "MIT" 8 | depends: [ 9 | "ocaml" {>= "4.02"} 10 | "base-unix" 11 | "base-threads" 12 | ] 13 | build: [ 14 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path 15 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} 16 | ["ocaml" "bootstrap.ml"] 17 | ["./boot.exe" "--release" "--subst"] {pinned} 18 | ["./boot.exe" "--release" "-j" jobs] 19 | ] 20 | conflicts: [ 21 | "jbuilder" {!= "transition"} 22 | "odoc" {< "1.3.0"} 23 | ] 24 | 25 | synopsis: "Fast, portable and opinionated build system" 26 | description: """ 27 | dune is a build system that was designed to simplify the release of 28 | Jane Street packages. It reads metadata from "dune" files following a 29 | very simple s-expression syntax. 30 | 31 | dune is fast, it has very low-overhead and support parallel builds on 32 | all platforms. It has no system dependencies, all you need to build 33 | dune and packages using dune is OCaml. You don't need or make or bash 34 | as long as the packages themselves don't use bash explicitly. 35 | 36 | dune supports multi-package development by simply dropping multiple 37 | repositories into the same directory. 38 | 39 | It also supports multi-context builds, such as building against 40 | several opam roots/switches simultaneously. This helps maintaining 41 | packages across several versions of OCaml and gives cross-compilation 42 | for free. 43 | """ 44 | url { 45 | src: "https://github.com/ocaml/dune/releases/download/1.6.3/dune-1.6.3.tbz" 46 | checksum: "md5=1212a36547d25269675d767c38fecf5f" 47 | } 48 | -------------------------------------------------------------------------------- /esy.lock/opam/easy-format.1.3.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "http://mjambon.com/easy-format.html" 5 | bug-reports: "https://github.com/mjambon/easy-format/issues" 6 | dev-repo: "git+https://github.com/mjambon/easy-format.git" 7 | build: [ 8 | ["jbuilder" "build" "-p" name "-j" jobs] 9 | ["jbuilder" "runtest" "-p" name] {with-test} 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.02.3"} 13 | "jbuilder" {build} 14 | ] 15 | synopsis: 16 | "High-level and functional interface to the Format module of the OCaml standard library" 17 | url { 18 | src: "https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz" 19 | checksum: "md5=4e163700fb88fdcd6b8976c3a216c8ea" 20 | } 21 | -------------------------------------------------------------------------------- /esy.lock/opam/gg.0.9.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | homepage: "http://erratique.ch/software/gg" 4 | authors: [ "The gg programmers" ] 5 | doc: "http://erratique.ch/software/gg/doc/Gg" 6 | dev-repo: "git+http://erratique.ch/repos/gg.git" 7 | bug-reports: "https://github.com/dbuenzli/gg/issues" 8 | tags: [ "matrix" "vector" "color" "data-structure" "graphics" "org:erratique"] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.02.2"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "base-bigarray" 16 | # "bench" {with-test} 17 | ] 18 | build: [[ 19 | "ocaml" "pkg/pkg.ml" "build" "--pinned" "%{pinned}%" 20 | ]] 21 | synopsis: """Basic types for computer graphics in OCaml""" 22 | description: """\ 23 | 24 | Gg is an OCaml module providing basic types for computer graphics. 25 | 26 | It defines types and functions for floats, vectors, points, sizes, 27 | matrices, quaternions, axis-aligned boxes, colors, color spaces, and 28 | raster data. 29 | 30 | Gg is made of a single module, depends on bigarrays, and is 31 | distributed under the ISC license. 32 | """ 33 | url { 34 | archive: "http://erratique.ch/software/gg/releases/gg-0.9.3.tbz" 35 | checksum: "1801fc7b6af16c597ef0bfaacc12cd5b" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/jbuilder.transition/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/ocaml/dune" 5 | bug-reports: "https://github.com/ocaml/dune/issues" 6 | dev-repo: "git+https://github.com/ocaml/dune.git" 7 | license: "MIT" 8 | depends: ["ocaml" "dune"] 9 | post-messages: [ 10 | "Jbuilder has been renamed and the jbuilder package is now a transition \ 11 | package. Use the dune package instead." 12 | ] 13 | synopsis: 14 | "This is a transition package, jbuilder is now named dune. Use the dune" 15 | description: "package instead." 16 | -------------------------------------------------------------------------------- /esy.lock/opam/js_of_ocaml-lwt.3.3.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "dev@ocsigen.org" 3 | authors: "Ocsigen team" 4 | bug-reports: "https://github.com/ocsigen/js_of_ocaml/issues" 5 | homepage: "http://ocsigen.org/js_of_ocaml" 6 | dev-repo: "git+https://github.com/ocsigen/js_of_ocaml.git" 7 | 8 | name: "js_of_ocaml-lwt" 9 | 10 | build: [["dune" "build" "-p" name "-j" jobs]] 11 | 12 | depends: [ 13 | "ocaml" {>= "4.02.0"} 14 | "dune" {build & >= "1.2"} 15 | "lwt" {>= "2.4.4"} 16 | "js_of_ocaml" {>= "3.2"} 17 | "js_of_ocaml-ppx" 18 | ] 19 | depopts: [ "graphics" "lwt_log" ] 20 | 21 | synopsis: "Compiler from OCaml bytecode to Javascript" 22 | url { 23 | src: "https://github.com/ocsigen/js_of_ocaml/archive/3.3.0.tar.gz" 24 | checksum: "md5=438051f64e307edbda42f250a3d9cef1" 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/opam/js_of_ocaml-ppx.3.3.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "dev@ocsigen.org" 3 | authors: "Ocsigen team" 4 | bug-reports: "https://github.com/ocsigen/js_of_ocaml/issues" 5 | homepage: "http://ocsigen.org/js_of_ocaml" 6 | dev-repo: "git+https://github.com/ocsigen/js_of_ocaml.git" 7 | 8 | name: "js_of_ocaml-ppx" 9 | 10 | build: [["dune" "build" "-p" name "-j" jobs]] 11 | 12 | depends: [ 13 | "ocaml" {>= "4.02.0"} 14 | "dune" {build & >= "1.2"} 15 | "ocaml-migrate-parsetree" 16 | "ppx_tools_versioned" 17 | "js_of_ocaml" {>= "3.0"} 18 | ] 19 | conflicts: [ 20 | "ppx_tools_versioned" {<="5.0beta0"} 21 | ] 22 | 23 | synopsis: "Compiler from OCaml bytecode to Javascript" 24 | url { 25 | src: "https://github.com/ocsigen/js_of_ocaml/archive/3.3.0.tar.gz" 26 | checksum: "md5=438051f64e307edbda42f250a3d9cef1" 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/lambda-term.1.13/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino"] 4 | homepage: "https://github.com/diml/lambda-term" 5 | bug-reports: "https://github.com/diml/lambda-term/issues" 6 | dev-repo: "git://github.com/diml/lambda-term.git" 7 | license: "BSD3" 8 | build: [ 9 | ["jbuilder" "subst" "-p" name] {pinned} 10 | ["jbuilder" "build" "-p" name "-j" jobs] 11 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "lwt" {>= "2.7.0"} 16 | "lwt_log" 17 | "react" 18 | "zed" {>= "1.2"} 19 | "camomile" {>= "0.8.6"} 20 | "lwt_react" 21 | "jbuilder" {build & >= "1.0+beta9"} 22 | ] 23 | synopsis: "Terminal manipulation library for OCaml" 24 | description: """ 25 | Lambda-term is a cross-platform library for manipulating the terminal. It 26 | provides an abstraction for keys, mouse events, colors, as well as a set of 27 | widgets to write curses-like applications. The main objective of lambda-term is 28 | to provide a higher level functional interface to terminal manipulation than, 29 | for example, ncurses, by providing a native OCaml interface instead of bindings 30 | to a C library. Lambda-term integrates with zed to provide text edition 31 | facilities in console applications.""" 32 | url { 33 | src: 34 | "https://github.com/diml/lambda-term/releases/download/1.13/lambda-term-1.13.tbz" 35 | checksum: "md5=c13826a97014d4d573b927b623c7e043" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/lwt.4.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "4.1.0" 3 | maintainer: [ 4 | "Anton Bachin " 5 | "Mauricio Fernandez " 6 | "Simon Cruanes " 7 | ] 8 | authors: [ 9 | "Jérôme Vouillon" 10 | "Jérémie Dimino" 11 | ] 12 | homepage: "https://github.com/ocsigen/lwt" 13 | doc: "https://ocsigen.org/lwt/manual/" 14 | bug-reports: "https://github.com/ocsigen/lwt/issues" 15 | license: "LGPL with OpenSSL linking exception" 16 | dev-repo: "git+https://github.com/ocsigen/lwt.git" 17 | build: [ 18 | [ "ocaml" "src/util/configure.ml" "-use-libev" "%{conf-libev:installed}%" ] 19 | [ "jbuilder" "build" "-p" name "-j" jobs ] 20 | ] 21 | 22 | depends: [ 23 | "ocaml" {>= "4.02.0"} 24 | "cppo" {build & >= "1.1.0"} 25 | "jbuilder" {build & >= "1.0+beta14"} 26 | "ocamlfind" {build & >= "1.7.3-1"} 27 | "result" 28 | ] 29 | depopts: [ 30 | "base-threads" 31 | "base-unix" 32 | "conf-libev" 33 | ] 34 | # In practice, Lwt requires OCaml >= 4.02.3, as that is a constraint of the 35 | # dependency jbuilder. 36 | messages: [ 37 | "For the PPX, please install package lwt_ppx" 38 | {!lwt_ppx:installed} 39 | "For the Camlp4 syntax, please install package lwt_camlp4" 40 | {camlp4:installed & !lwt_camlp4:installed} 41 | "For Lwt_log and Lwt_daemon, please install package lwt_log" 42 | {!lwt_log:installed} 43 | ] 44 | synopsis: "Promises, concurrency, and parallelized I/O" 45 | description: """ 46 | A promise is a value that may become determined in the future. 47 | 48 | Lwt provides typed, composable promises. Promises that are resolved by I/O are 49 | resolved by Lwt in parallel. 50 | 51 | Meanwhile, OCaml code, including code creating and waiting on promises, runs in 52 | a single thread by default. This reduces the need for locks or other 53 | synchronization primitives. Code can be run in parallel on an opt-in basis.""" 54 | conflicts: [ 55 | "ocaml-variants" {= "4.02.1+BER"} 56 | ] 57 | url { 58 | src: "https://github.com/ocsigen/lwt/archive/4.1.0.tar.gz" 59 | checksum: "md5=e919bee206f18b3d49250ecf9584fde7" 60 | } 61 | -------------------------------------------------------------------------------- /esy.lock/opam/lwt_log.1.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "1.1.0" 3 | homepage: "https://github.com/aantron/lwt_log" 4 | doc: "https://github.com/aantron/lwt_log/blob/master/src/core/lwt_log_core.mli" 5 | bug-reports: "https://github.com/aantron/lwt_log/issues" 6 | license: "LGPL" 7 | 8 | authors: [ 9 | "Shawn Wagner" 10 | "Jérémie Dimino" 11 | ] 12 | maintainer: "Anton Bachin " 13 | dev-repo: "git+https://github.com/aantron/lwt_log.git" 14 | depends: [ 15 | "ocaml" 16 | "jbuilder" {build & >= "1.0+beta10"} 17 | "lwt" {>= "4.0.0"} 18 | ] 19 | build: [ 20 | ["jbuilder" "build" "-p" name "-j" jobs] 21 | ] 22 | synopsis: "Lwt logging library (deprecated)" 23 | url { 24 | src: "https://github.com/aantron/lwt_log/archive/1.1.0.tar.gz" 25 | checksum: "md5=92142135d01a4d7e805990cc98653d55" 26 | } 27 | -------------------------------------------------------------------------------- /esy.lock/opam/lwt_ppx.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "1.2.1" 3 | maintainer: [ 4 | "Anton Bachin " 5 | ] 6 | authors: [ 7 | "Gabriel Radanne" 8 | ] 9 | homepage: "https://github.com/ocsigen/lwt" 10 | doc: "https://ocsigen.org/lwt/api/Ppx_lwt" 11 | dev-repo: "git+https://github.com/ocsigen/lwt.git" 12 | bug-reports: "https://github.com/ocsigen/lwt/issues" 13 | license: "LGPL with OpenSSL linking exception" 14 | 15 | depends: [ 16 | "ocaml" {>= "4.02.0"} 17 | "jbuilder" {build & >= "1.0+beta14"} 18 | "lwt" 19 | "ocaml-migrate-parsetree" 20 | "ppx_tools_versioned" {>= "5.0.1"} 21 | ] 22 | build: [ 23 | ["jbuilder" "build" "-p" name "-j" jobs] 24 | ] 25 | synopsis: 26 | "PPX syntax for Lwt, providing something similar to async/await from JavaScript" 27 | url { 28 | src: "https://github.com/ocsigen/lwt/archive/4.1.0.tar.gz" 29 | checksum: "md5=e919bee206f18b3d49250ecf9584fde7" 30 | } 31 | -------------------------------------------------------------------------------- /esy.lock/opam/lwt_react.1.1.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "1.1.1" 3 | maintainer: [ 4 | "Anton Bachin " 5 | "Mauricio Fernandez " 6 | "Simon Cruanes " 7 | ] 8 | authors: [ 9 | "Jérémie Dimino" 10 | ] 11 | homepage: "https://github.com/ocsigen/lwt" 12 | doc: "https://ocsigen.org/lwt/api/Lwt_react" 13 | dev-repo: "git+https://github.com/ocsigen/lwt.git" 14 | bug-reports: "https://github.com/ocsigen/lwt/issues" 15 | license: "LGPL with OpenSSL linking exception" 16 | 17 | build: [ 18 | ["jbuilder" "build" "-p" name "-j" jobs] 19 | ["jbuilder" "runtest" "-p" name] {with-test} 20 | ] 21 | depends: [ 22 | "ocaml" 23 | "jbuilder" {build & >= "1.0+beta14"} 24 | "lwt" {>= "3.0.0"} 25 | "react" {>= "1.0.0"} 26 | ] 27 | synopsis: "Helpers for using React with Lwt" 28 | url { 29 | src: "https://github.com/ocsigen/lwt/archive/4.0.0.tar.gz" 30 | checksum: "md5=3bbde866884e32cc7a9d9cbd1e52bde3" 31 | } 32 | -------------------------------------------------------------------------------- /esy.lock/opam/menhir.20181113/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "francois.pottier@inria.fr" 3 | authors: [ 4 | "François Pottier " 5 | "Yann Régis-Gianas " 6 | ] 7 | homepage: "http://gitlab.inria.fr/fpottier/menhir" 8 | dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" 9 | bug-reports: "menhir@inria.fr" 10 | build: [ 11 | [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] 12 | ] 13 | install: [ 14 | [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] 15 | ] 16 | remove: [ 17 | [make "-f" "Makefile" "uninstall" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] 18 | ] 19 | depends: [ 20 | "ocaml" {>= "4.02"} 21 | "ocamlfind" {build} 22 | "ocamlbuild" {build} 23 | ] 24 | synopsis: "An LR(1) parser generator" 25 | url { 26 | src: 27 | "https://gitlab.inria.fr/fpottier/menhir/repository/20181113/archive.tar.gz" 28 | checksum: [ 29 | "md5=69ce441a06ea131cd43e7b44c4303f3c" 30 | "sha512=4ddefcd71d305bfb933a4056da57e36c13c99ec6dfcc4695814798fbbd78b4d65828381ebcb0e58c4c0394105ac763af3d475474e05e408f7080315bc3cf6176" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /esy.lock/opam/merlin-extend.0.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Frederic Bour " 3 | authors: "Frederic Bour " 4 | homepage: "https://github.com/let-def/merlin-extend" 5 | bug-reports: "https://github.com/let-def/merlin-extend" 6 | license: "MIT" 7 | dev-repo: "git+https://github.com/let-def/merlin-extend.git" 8 | build: [make] 9 | install: [make "install"] 10 | remove: ["ocamlfind" "remove" "merlin_extend"] 11 | depends: [ 12 | "ocaml" {>= "4.02.3"} 13 | "ocamlfind" {build} 14 | "cppo" {build} 15 | ] 16 | synopsis: "A protocol to provide custom frontend to Merlin" 17 | description: """ 18 | This protocol allows to replace the OCaml frontend of Merlin. 19 | It extends what used to be done with the `-pp' flag to handle a few more cases.""" 20 | flags: light-uninstall 21 | url { 22 | src: "https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz" 23 | checksum: "md5=9c6dfd4f53328f02f12fcc265f4e2dda" 24 | } 25 | -------------------------------------------------------------------------------- /esy.lock/opam/merlin.3.2.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | name: "merlin" 3 | synopsis: "Installation with Opam" 4 | description: """ 5 | If you have a working [Opam](https://opam.ocaml.org/) installation, Merlin is only two commands away: 6 | 7 | ```shell 8 | opam install merlin 9 | opam user-setup install 10 | ``` 11 | 12 | [opam-user-setup](https://github.com/OCamlPro/opam-user-setup) takes care of configuring Emacs and Vim to make best use of your current install. 13 | 14 | You can also [configure the editor](#editor-setup) yourself, if you prefer.""" 15 | maintainer: "defree@gmail.com" 16 | authors: "The Merlin team" 17 | homepage: "https://github.com/ocaml/merlin" 18 | bug-reports: "https://github.com/ocaml/merlin/issues" 19 | depends: [ 20 | "ocaml" {>= "4.02.1" & < "4.08"} 21 | "dune" {build} 22 | "ocamlfind" {>= "1.5.2"} 23 | "yojson" 24 | "craml" {with-test} 25 | ] 26 | build: [ 27 | ["dune" "subst"] {pinned} 28 | ["dune" "build" "-p" name "-j" jobs] 29 | ] 30 | post-messages: 31 | """ 32 | merlin installed. 33 | 34 | Quick setup for VIM 35 | ------------------- 36 | Append this to your .vimrc to add merlin to vim's runtime-path: 37 | let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') 38 | execute "set rtp+=" . g:opamshare . "/merlin/vim" 39 | 40 | Also run the following line in vim to index the documentation: 41 | :execute "helptags " . g:opamshare . "/merlin/vim/doc" 42 | 43 | Quick setup for EMACS 44 | ------------------- 45 | Add opam emacs directory to your load-path by appending this to your .emacs: 46 | (let ((opam-share (ignore-errors (car (process-lines "opam" "config" "var" "share"))))) 47 | (when (and opam-share (file-directory-p opam-share)) 48 | ;; Register Merlin 49 | (add-to-list 'load-path (expand-file-name "emacs/site-lisp" opam-share)) 50 | (autoload 'merlin-mode "merlin" nil t nil) 51 | ;; Automatically start it in OCaml buffers 52 | (add-hook 'tuareg-mode-hook 'merlin-mode t) 53 | (add-hook 'caml-mode-hook 'merlin-mode t) 54 | ;; Use opam switch to lookup ocamlmerlin binary 55 | (setq merlin-command 'opam))) 56 | 57 | Take a look at https://github.com/ocaml/merlin for more information 58 | 59 | Quick setup with opam-user-setup 60 | -------------------------------- 61 | 62 | Opam-user-setup support Merlin. 63 | 64 | $ opam user-setup install 65 | 66 | should take care of basic setup. 67 | See https://github.com/OCamlPro/opam-user-setup""" 68 | {success & !user-setup:installed} 69 | dev-repo: "git+https://github.com/ocaml/merlin.git" 70 | url { 71 | src: 72 | "https://github.com/ocaml/merlin/releases/download/v3.2.2/merlin-v3.2.2.tbz" 73 | checksum: "md5=ede35b65f8ac9c440cfade5445662c54" 74 | } 75 | -------------------------------------------------------------------------------- /esy.lock/opam/ocaml-migrate-parsetree.1.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "frederic.bour@lakaban.net" 3 | authors: [ 4 | "Frédéric Bour " 5 | "Jérémie Dimino " 6 | ] 7 | license: "LGPL-2.1" 8 | homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" 9 | bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" 10 | dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" 11 | doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" 12 | tags: [ "syntax" "org:ocamllabs" ] 13 | build: [ 14 | ["dune" "build" "-p" name "-j" jobs] 15 | ] 16 | depends: [ 17 | "result" 18 | "ppx_derivers" 19 | "dune" {build & >= "1.6.0"} 20 | "ocaml" {>= "4.02.3"} 21 | ] 22 | synopsis: "Convert OCaml parsetrees between different versions" 23 | description: """ 24 | Convert OCaml parsetrees between different versions 25 | 26 | This library converts parsetrees, outcometree and ast mappers between 27 | different OCaml versions. High-level functions help making PPX 28 | rewriters independent of a compiler version. 29 | """ 30 | url { 31 | src: 32 | "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.2.0/ocaml-migrate-parsetree-v1.2.0.tbz" 33 | checksum: "md5=cc6fb09ad6f99156c7dba47711c62c6f" 34 | } 35 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlbuild.0.12.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Gabriel Scherer " 3 | authors: ["Nicolas Pouillard" "Berke Durak"] 4 | homepage: "https://github.com/ocaml/ocamlbuild/" 5 | bug-reports: "https://github.com/ocaml/ocamlbuild/issues" 6 | license: "LGPL-2 with OCaml linking exception" 7 | doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" 8 | dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" 9 | build: [ 10 | [ 11 | make 12 | "-f" 13 | "configure.make" 14 | "all" 15 | "OCAMLBUILD_PREFIX=%{prefix}%" 16 | "OCAMLBUILD_BINDIR=%{bin}%" 17 | "OCAMLBUILD_LIBDIR=%{lib}%" 18 | "OCAMLBUILD_MANDIR=%{man}%" 19 | "OCAML_NATIVE=%{ocaml:native}%" 20 | "OCAML_NATIVE_TOOLS=%{ocaml:native}%" 21 | ] 22 | [make "check-if-preinstalled" "all" "opam-install"] 23 | ] 24 | conflicts: [ 25 | "base-ocamlbuild" 26 | "ocamlfind" {< "1.6.2"} 27 | ] 28 | synopsis: 29 | "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." 30 | depends: [ 31 | "ocaml" {>= "4.03" & < "4.08.0"} 32 | ] 33 | url { 34 | src: "https://github.com/ocaml/ocamlbuild/archive/0.12.0.tar.gz" 35 | checksum: "md5=442baa19470bd49150f153122e22907b" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.0/files/ocaml-stub: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BINDIR=$(dirname "$(command -v ocamlc)") 4 | "$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" 5 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.0/files/ocamlfind.install: -------------------------------------------------------------------------------- 1 | bin: [ 2 | "src/findlib/ocamlfind" {"ocamlfind"} 3 | "?src/findlib/ocamlfind_opt" {"ocamlfind"} 4 | "?tools/safe_camlp4" 5 | ] 6 | toplevel: ["src/findlib/topfind"] 7 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Thomas Gazagnaire " 3 | homepage: "http://projects.camlcity.org/projects/findlib.html" 4 | bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" 5 | dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" 6 | build: [ 7 | [ 8 | "./configure" 9 | "-bindir" 10 | bin 11 | "-sitelib" 12 | lib 13 | "-mandir" 14 | man 15 | "-config" 16 | "%{lib}%/findlib.conf" 17 | "-no-custom" 18 | "-no-topfind" {ocaml:preinstalled} 19 | ] 20 | [make "all"] 21 | [make "opt"] {ocaml:native} 22 | ] 23 | install: [ 24 | [make "install"] 25 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} 26 | ] 27 | remove: [ 28 | ["ocamlfind" "remove" "bytes"] 29 | [ 30 | "./configure" 31 | "-bindir" 32 | bin 33 | "-sitelib" 34 | lib 35 | "-mandir" 36 | man 37 | "-config" 38 | "%{lib}%/findlib.conf" 39 | "-no-topfind" {ocaml:preinstalled} 40 | ] 41 | [make "uninstall"] 42 | ["rm" "-f" "%{bin}%/ocaml"] {ocaml:preinstalled} 43 | ] 44 | depends: [ 45 | "ocaml" {>= "4.00.0"} 46 | "conf-m4" {build} 47 | ] 48 | synopsis: "A library manager for OCaml" 49 | description: """ 50 | Findlib is a library manager for OCaml. It provides a convention how 51 | to store libraries, and a file format ("META") to describe the 52 | properties of libraries. There is also a tool (ocamlfind) for 53 | interpreting the META files, so that it is very easy to use libraries 54 | in programs and scripts.""" 55 | authors: "Gerd Stolpmann " 56 | extra-files: [ 57 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] 58 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] 59 | ] 60 | url { 61 | src: "http://download.camlcity.org/download/findlib-1.8.0.tar.gz" 62 | checksum: "md5=a710c559667672077a93d34eb6a42e5b" 63 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.0.tar.gz" 64 | } 65 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_derivers.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino"] 4 | license: "BSD3" 5 | homepage: "https://github.com/ocaml-ppx/ppx_derivers" 6 | bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" 7 | dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" 13 | "jbuilder" {build & >= "1.0+beta7"} 14 | ] 15 | synopsis: "Shared [@@deriving] plugin registry" 16 | description: """ 17 | Ppx_derivers is a tiny package whose sole purpose is to allow 18 | ppx_deriving and ppx_type_conv to inter-operate gracefully when linked 19 | as part of the same ocaml-migrate-parsetree driver.""" 20 | url { 21 | src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.0.tar.gz" 22 | checksum: "md5=4ddce8f43fdb9b0ef0ab6a7cbfebc3e3" 23 | } 24 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_tools_versioned.5.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "frederic.bour@lakaban.net" 3 | authors: [ 4 | "Frédéric Bour " 5 | "Alain Frisch " 6 | ] 7 | license: "MIT" 8 | homepage: "https://github.com/let-def/ppx_tools_versioned" 9 | bug-reports: "https://github.com/let-def/ppx_tools_versioned/issues" 10 | dev-repo: "git://github.com/let-def/ppx_tools_versioned.git" 11 | tags: [ "syntax" ] 12 | build: [ 13 | ["jbuilder" "subst" "-p" name] {pinned} 14 | ["jbuilder" "build" "-p" name "-j" jobs] 15 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} 16 | ] 17 | depends: [ 18 | "ocaml" {>= "4.02.0"} 19 | "jbuilder" {build & >= "1.0+beta17"} 20 | "ocaml-migrate-parsetree" {>= "1.0.10"} 21 | ] 22 | synopsis: "A variant of ppx_tools based on ocaml-migrate-parsetree" 23 | url { 24 | src: 25 | "https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.1.tar.gz" 26 | checksum: "md5=1ae6ae43ec161fbbf12c2b4d3a7e26f5" 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/re.1.8.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "rudi.grinberg@gmail.com" 3 | authors: [ 4 | "Jerome Vouillon" 5 | "Thomas Gazagnaire" 6 | "Anil Madhavapeddy" 7 | "Rudi Grinberg" 8 | "Gabriel Radanne" 9 | ] 10 | license: "LGPL-2.0 with OCaml linking exception" 11 | homepage: "https://github.com/ocaml/ocaml-re" 12 | bug-reports: "https://github.com/ocaml/ocaml-re/issues" 13 | dev-repo: "git+https://github.com/ocaml/ocaml-re.git" 14 | build: [ 15 | ["jbuilder" "subst" "-n" name] {pinned} 16 | ["jbuilder" "build" "-p" name "-j" jobs] 17 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} 18 | ] 19 | depends: [ 20 | "ocaml" {>= "4.02.3"} 21 | "jbuilder" {build & >= "1.0+beta10"} 22 | "ounit" {with-test} 23 | "seq" 24 | ] 25 | synopsis: "RE is a regular expression library for OCaml" 26 | description: """ 27 | Pure OCaml regular expressions with: 28 | * Perl-style regular expressions (module Re.Perl) 29 | * Posix extended regular expressions (module Re.Posix) 30 | * Emacs-style regular expressions (module Re.Emacs) 31 | * Shell-style file globbing (module Re.Glob) 32 | * Compatibility layer for OCaml's built-in Str module (module Re.Str)""" 33 | url { 34 | src: 35 | "https://github.com/ocaml/ocaml-re/releases/download/1.8.0/re-1.8.0.tbz" 36 | checksum: "md5=765f6f8d3e6ab200866e719ed7e5178d" 37 | } 38 | -------------------------------------------------------------------------------- /esy.lock/opam/react.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | homepage: "http://erratique.ch/software/react" 4 | authors: ["Daniel Bünzli "] 5 | doc: "http://erratique.ch/software/react/doc/React" 6 | dev-repo: "git+http://erratique.ch/repos/react.git" 7 | bug-reports: "https://github.com/dbuenzli/react/issues" 8 | tags: [ "reactive" "declarative" "signal" "event" "frp" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | ] 16 | build: 17 | [[ "ocaml" "pkg/pkg.ml" "build" 18 | "--dev-pkg" "%{pinned}%" ]] 19 | synopsis: "Declarative events and signals for OCaml" 20 | description: """ 21 | Release %%VERSION%% 22 | 23 | React is an OCaml module for functional reactive programming (FRP). It 24 | provides support to program with time varying values : declarative 25 | events and signals. React doesn't define any primitive event or 26 | signal, it lets the client chooses the concrete timeline. 27 | 28 | React is made of a single, independent, module and distributed under 29 | the ISC license.""" 30 | url { 31 | src: "http://erratique.ch/software/react/releases/react-1.2.1.tbz" 32 | checksum: "md5=ce1454438ce4e9d2931248d3abba1fcc" 33 | } 34 | -------------------------------------------------------------------------------- /esy.lock/opam/result.1.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/result" 5 | dev-repo: "git+https://github.com/janestreet/result.git" 6 | bug-reports: "https://github.com/janestreet/result/issues" 7 | license: "BSD3" 8 | build: [["jbuilder" "build" "-p" name "-j" jobs]] 9 | depends: [ 10 | "ocaml" 11 | "jbuilder" {build & >= "1.0+beta11"} 12 | ] 13 | synopsis: "Compatibility Result module" 14 | description: """ 15 | Projects that want to use the new result type defined in OCaml >= 4.03 16 | while staying compatible with older version of OCaml should use the 17 | Result module defined in this library.""" 18 | url { 19 | src: 20 | "https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz" 21 | checksum: "md5=4beebefd41f7f899b6eeba7414e7ae01" 22 | } 23 | -------------------------------------------------------------------------------- /esy.lock/opam/seq.base/files/META.seq: -------------------------------------------------------------------------------- 1 | name="seq" 2 | version="[distributed with OCaml 4.07 or above]" 3 | description="dummy backward-compatibility package for iterators" 4 | requires="" 5 | -------------------------------------------------------------------------------- /esy.lock/opam/seq.base/files/seq.install: -------------------------------------------------------------------------------- 1 | lib:[ 2 | "META.seq" {"META"} 3 | ] 4 | -------------------------------------------------------------------------------- /esy.lock/opam/seq.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: " " 3 | authors: " " 4 | homepage: " " 5 | depends: [ 6 | "ocaml" {>= "4.07.0"} 7 | ] 8 | dev-repo: "git+https://github.com/ocaml/ocaml.git" 9 | bug-reports: "https://caml.inria.fr/mantis/main_page.php" 10 | synopsis: 11 | "Compatibility package for OCaml's standard iterator type starting from 4.07." 12 | extra-files: [ 13 | ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] 14 | ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] 15 | ] 16 | -------------------------------------------------------------------------------- /esy.lock/opam/topkg.1.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/topkg" 5 | doc: "http://erratique.ch/software/topkg/doc" 6 | license: "ISC" 7 | dev-repo: "git+http://erratique.ch/repos/topkg.git" 8 | bug-reports: "https://github.com/dbuenzli/topkg/issues" 9 | tags: ["packaging" "ocamlbuild" "org:erratique"] 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build & >= "1.6.1"} 13 | "ocamlbuild" 14 | "result" ] 15 | build: [[ 16 | "ocaml" "pkg/pkg.ml" "build" 17 | "--pkg-name" name 18 | "--dev-pkg" "%{pinned}%" ]] 19 | synopsis: """The transitory OCaml software packager""" 20 | description: """\ 21 | 22 | Topkg is a packager for distributing OCaml software. It provides an 23 | API to describe the files a package installs in a given build 24 | configuration and to specify information about the package's 25 | distribution, creation and publication procedures. 26 | 27 | The optional topkg-care package provides the `topkg` command line tool 28 | which helps with various aspects of a package's life cycle: creating 29 | and linting a distribution, releasing it on the WWW, publish its 30 | documentation, add it to the OCaml opam repository, etc. 31 | 32 | Topkg is distributed under the ISC license and has **no** 33 | dependencies. This is what your packages will need as a *build* 34 | dependency. 35 | 36 | Topkg-care is distributed under the ISC license it depends on 37 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], 38 | [webbrowser][webbrowser] and `opam-format`. 39 | 40 | [fmt]: http://erratique.ch/software/fmt 41 | [logs]: http://erratique.ch/software/logs 42 | [bos]: http://erratique.ch/software/bos 43 | [cmdliner]: http://erratique.ch/software/cmdliner 44 | [webbrowser]: http://erratique.ch/software/webbrowser 45 | """ 46 | url { 47 | src: "http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz" 48 | checksum: "md5=e3d76bda06bf68cb5853caf6627da603" 49 | } 50 | -------------------------------------------------------------------------------- /esy.lock/opam/uchar.0.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://ocaml.org" 5 | doc: "https://ocaml.github.io/uchar/" 6 | dev-repo: "git+https://github.com/ocaml/uchar.git" 7 | bug-reports: "https://github.com/ocaml/uchar/issues" 8 | tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] 9 | license: "typeof OCaml system" 10 | depends: [ 11 | "ocaml" {>= "3.12.0"} 12 | "ocamlbuild" {build} 13 | ] 14 | build: [ 15 | ["ocaml" "pkg/git.ml"] 16 | [ 17 | "ocaml" 18 | "pkg/build.ml" 19 | "native=%{ocaml:native}%" 20 | "native-dynlink=%{ocaml:native-dynlink}%" 21 | ] 22 | ] 23 | synopsis: "Compatibility library for OCaml's Uchar module" 24 | description: """ 25 | The `uchar` package provides a compatibility library for the 26 | [`Uchar`][1] module introduced in OCaml 4.03. 27 | 28 | The `uchar` package is distributed under the license of the OCaml 29 | compiler. See [LICENSE](LICENSE) for details. 30 | 31 | [1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" 32 | url { 33 | src: 34 | "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" 35 | checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/utop.2.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino"] 4 | license: "BSD3" 5 | homepage: "https://github.com/diml/utop" 6 | bug-reports: "https://github.com/diml/utop/issues" 7 | dev-repo: "git+https://github.com/diml/utop.git" 8 | build: [ 9 | ["jbuilder" "subst" "-p" name] {pinned} 10 | ["jbuilder" "build" "-p" name "-j" jobs] 11 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "base-unix" 16 | "base-threads" 17 | "ocamlfind" {>= "1.7.2"} 18 | "lambda-term" {>= "1.2"} 19 | "lwt" 20 | "lwt_react" 21 | "camomile" 22 | "react" {>= "1.0.0"} 23 | "cppo" {build & >= "1.1.2"} 24 | "jbuilder" {build & >= "1.0+beta9"} 25 | ] 26 | synopsis: "Universal toplevel for OCaml" 27 | description: """ 28 | utop is an improved toplevel (i.e., Read-Eval-Print Loop or REPL) for 29 | OCaml. It can run in a terminal or in Emacs. It supports line 30 | edition, history, real-time and context sensitive completion, colors, 31 | and more. It integrates with the Tuareg mode in Emacs.""" 32 | url { 33 | src: "https://github.com/diml/utop/releases/download/2.2.0/utop-2.2.0.tbz" 34 | checksum: "md5=c8e4805883ce27a2ef27b0e4322d6f04" 35 | } 36 | -------------------------------------------------------------------------------- /esy.lock/opam/yojson.1.5.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "https://github.com/ocaml-community/yojson" 5 | bug-reports: "https://github.com/ocaml-community/yojson/issues" 6 | dev-repo: "git+https://github.com/ocaml-community/yojson.git" 7 | doc: "https://ocaml-community.github.io/yojson/" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "ocaml" {>= "4.02.3"} 14 | "dune" {build} 15 | "cppo" {build} 16 | "easy-format" 17 | "biniou" {>= "1.2.0"} 18 | ] 19 | synopsis: 20 | "Yojson is an optimized parsing and printing library for the JSON format" 21 | description: """ 22 | Yojson is an optimized parsing and printing library for the JSON format. 23 | 24 | It addresses a few shortcomings of json-wheel including 2x speedup, 25 | polymorphic variants and optional syntax for tuples and variants. 26 | 27 | ydump is a pretty-printing command-line program provided with the 28 | yojson package. 29 | 30 | The program atdgen can be used to derive OCaml-JSON serializers and 31 | deserializers from type definitions.""" 32 | url { 33 | src: 34 | "https://github.com/ocaml-community/yojson/releases/download/1.5.0/yojson-1.5.0.tbz" 35 | checksum: "md5=d80de1bacdde292af42f7c78b323da7b" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/zed.1.6/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opam-devel@lists.ocaml.org" 3 | authors: ["Jérémie Dimino"] 4 | homepage: "https://github.com/diml/zed" 5 | bug-reports: "https://github.com/diml/zed/issues" 6 | dev-repo: "git://github.com/diml/zed.git" 7 | license: "BSD3" 8 | depends: [ 9 | "ocaml" {>= "4.02.3"} 10 | "jbuilder" {build & >= "1.0+beta9"} 11 | "base-bytes" 12 | "camomile" {>= "0.8"} 13 | "react" 14 | ] 15 | build: [ 16 | ["jbuilder" "subst" "-p" name] {pinned} 17 | ["jbuilder" "build" "-p" name "-j" jobs] 18 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} 19 | ] 20 | synopsis: "Abstract engine for text edition in OCaml" 21 | description: """ 22 | Zed is an abstract engine for text edition. It can be used to write text 23 | editors, edition widgets, readlines, ... Zed uses Camomile to fully support the 24 | Unicode specification, and implements an UTF-8 encoded string type with 25 | validation, and a rope datastructure to achieve efficient operations on large 26 | Unicode buffers. Zed also features a regular expression search on ropes. To 27 | support efficient text edition capabilities, Zed provides macro recording and 28 | cursor management facilities.""" 29 | url { 30 | src: "https://github.com/diml/zed/releases/download/1.6/zed-1.6.tbz" 31 | checksum: "md5=f75c3094af1a22f9801d5ca5eb2d40e0" 32 | } 33 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__dune_opam__c__1.6.3_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "ocaml", 5 | "bootstrap.ml" 6 | ], 7 | [ 8 | "./boot.exe", 9 | "--release", 10 | "-j", 11 | "4" 12 | ] 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__lambda_term_opam__c__1.13_opam_override/files/lambda-term-1.13.patch: -------------------------------------------------------------------------------- 1 | --- ./src/lTerm_windows_stubs.c 2 | +++ ./src/lTerm_windows_stubs.c 3 | @@ -16,7 +16,6 @@ 4 | 5 | #if defined(_WIN32) || defined(_WIN64) 6 | 7 | -#include 8 | #include 9 | 10 | /* +-----------------------------------------------------------------+ 11 | @@ -140,15 +139,7 @@ 12 | } 13 | } 14 | 15 | -CAMLprim value lt_windows_read_console_input_job(value val_fd) 16 | -{ 17 | - LWT_UNIX_INIT_JOB(job, read_console_input, 0); 18 | - job->handle = Handle_val(val_fd); 19 | - job->error_code = 0; 20 | - CAMLreturn(lwt_unix_alloc_job(&(job->job))); 21 | -} 22 | - 23 | -static value result_read_console_input_result(struct job_read_console_input *job) 24 | +static value result_read_console_input(struct job_read_console_input *job) 25 | { 26 | INPUT_RECORD input; 27 | DWORD cks, bs; 28 | @@ -163,23 +154,23 @@ 29 | win32_maperr(error_code); 30 | uerror("ReadConsoleInput", Nothing); 31 | } 32 | - switch (input->EventType) { 33 | + switch (input.EventType) { 34 | case KEY_EVENT: { 35 | result = caml_alloc(1, 0); 36 | x = caml_alloc_tuple(4); 37 | Field(result, 0) = x; 38 | - cks = input->Event.KeyEvent.dwControlKeyState; 39 | + cks = input.Event.KeyEvent.dwControlKeyState; 40 | Field(x, 0) = Val_bool((cks & LEFT_CTRL_PRESSED) | (cks & RIGHT_CTRL_PRESSED)); 41 | Field(x, 1) = Val_bool((cks & LEFT_ALT_PRESSED) | (cks & RIGHT_ALT_PRESSED)); 42 | Field(x, 2) = Val_bool(cks & SHIFT_PRESSED); 43 | - code = input->Event.KeyEvent.wVirtualKeyCode; 44 | + code = input.Event.KeyEvent.wVirtualKeyCode; 45 | for (i = 0; i < sizeof(code_table)/sizeof(code_table[0]); i++) 46 | if (code == code_table[i]) { 47 | Field(x, 3) = Val_int(i); 48 | CAMLreturn(result); 49 | } 50 | y = caml_alloc_tuple(1); 51 | - Field(y, 0) = Val_int(input->Event.KeyEvent.uChar.UnicodeChar); 52 | + Field(y, 0) = Val_int(input.Event.KeyEvent.uChar.UnicodeChar); 53 | Field(x, 3) = y; 54 | CAMLreturn(result); 55 | } 56 | @@ -187,13 +178,13 @@ 57 | result = caml_alloc(1, 1); 58 | x = caml_alloc_tuple(6); 59 | Field(result, 0) = x; 60 | - cks = input->Event.MouseEvent.dwControlKeyState; 61 | + cks = input.Event.MouseEvent.dwControlKeyState; 62 | Field(x, 0) = Val_bool((cks & LEFT_CTRL_PRESSED) | (cks & RIGHT_CTRL_PRESSED)); 63 | Field(x, 1) = Val_bool((cks & LEFT_ALT_PRESSED) | (cks & RIGHT_ALT_PRESSED)); 64 | Field(x, 2) = Val_bool(cks & SHIFT_PRESSED); 65 | - Field(x, 4) = Val_int(input->Event.MouseEvent.dwMousePosition.Y); 66 | - Field(x, 5) = Val_int(input->Event.MouseEvent.dwMousePosition.X); 67 | - bs = input->Event.MouseEvent.dwButtonState; 68 | + Field(x, 4) = Val_int(input.Event.MouseEvent.dwMousePosition.Y); 69 | + Field(x, 5) = Val_int(input.Event.MouseEvent.dwMousePosition.X); 70 | + bs = input.Event.MouseEvent.dwButtonState; 71 | if (bs & FROM_LEFT_1ST_BUTTON_PRESSED) 72 | Field(x, 3) = Val_int(0); 73 | else if (bs & FROM_LEFT_2ND_BUTTON_PRESSED) 74 | @@ -212,6 +203,14 @@ 75 | CAMLreturn(Val_int(0)); 76 | } 77 | 78 | +CAMLprim value lt_windows_read_console_input_job(value val_fd) 79 | +{ 80 | + LWT_UNIX_INIT_JOB(job, read_console_input, 0); 81 | + job->handle = Handle_val(val_fd); 82 | + job->error_code = 0; 83 | + return (lwt_unix_alloc_job(&(job->job))); 84 | +} 85 | + 86 | /* +-----------------------------------------------------------------+ 87 | | Console informations | 88 | +-----------------------------------------------------------------+ */ 89 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__lambda_term_opam__c__1.13_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < lambda-term-1.13.patch' : 'true'}" 7 | ], 8 | [ 9 | "jbuilder", 10 | "build", 11 | "-p", 12 | "lambda-term", 13 | "-j", 14 | "4" 15 | ] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override/files/merlin-extend-winfix.patch: -------------------------------------------------------------------------------- 1 | --- ./extend_helper.ml 2 | +++ ./extend_helper.ml 3 | @@ -1,13 +1,6 @@ 4 | -(*pp cppo -V OCAML:`ocamlc -version` *) 5 | open Parsetree 6 | open Extend_protocol 7 | 8 | -#if OCAML_VERSION < (4, 3, 0) 9 | -# define CONST_STRING Asttypes.Const_string 10 | -#else 11 | -# define CONST_STRING Parsetree.Pconst_string 12 | -#endif 13 | - 14 | (** Default implementation for [Reader_def.print_outcome] using 15 | [Oprint] from compiler-libs *) 16 | let print_outcome_using_oprint ppf = function 17 | @@ -28,7 +21,7 @@ 18 | pstr_loc = Location.none; 19 | pstr_desc = Pstr_eval ({ 20 | pexp_loc = Location.none; 21 | - pexp_desc = Pexp_constant (CONST_STRING (msg, None)); 22 | + pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, None)); 23 | pexp_attributes = []; 24 | }, []); 25 | }] 26 | @@ -112,7 +105,7 @@ 27 | let msg = match payload with 28 | | PStr [{ 29 | pstr_desc = Pstr_eval ({ 30 | - pexp_desc = Pexp_constant (CONST_STRING (msg, _)); 31 | + pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, _)); 32 | }, _); 33 | }] -> msg 34 | | _ -> "Warning: extension produced an incorrect syntax-error node" 35 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < merlin-extend-winfix.patch' : 'true'}" 7 | ], 8 | [ 9 | "make" 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.12.0_opam_override/files/ocamlbuild-0.12.0.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -213,7 +213,7 @@ 4 | rm -f man/ocamlbuild.1 5 | 6 | man/options_man.byte: src/ocamlbuild_pack.cmo 7 | - $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte 8 | + $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte 9 | 10 | clean:: 11 | rm -f man/options_man.cm* 12 | --- ./src/command.ml 13 | +++ ./src/command.ml 14 | @@ -148,9 +148,10 @@ 15 | let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in 16 | let b = Buffer.create 256 in 17 | (* The best way to prevent bash from switching to its windows-style 18 | - * quote-handling is to prepend an empty string before the command name. *) 19 | + * quote-handling is to prepend an empty string before the command name. 20 | + * space seems to work, too - and the ouput is nicer *) 21 | if Sys.os_type = "Win32" then 22 | - Buffer.add_string b "''"; 23 | + Buffer.add_char b ' '; 24 | let first = ref true in 25 | let put_space () = 26 | if !first then 27 | @@ -260,7 +261,7 @@ 28 | 29 | let execute_many ?(quiet=false) ?(pretend=false) cmds = 30 | add_parallel_stat (List.length cmds); 31 | - let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in 32 | + let degraded = !*My_unix.is_degraded in 33 | let jobs = !jobs in 34 | if jobs < 0 then invalid_arg "jobs < 0"; 35 | let max_jobs = if jobs = 0 then None else Some jobs in 36 | --- ./src/findlib.ml 37 | +++ ./src/findlib.ml 38 | @@ -66,9 +66,6 @@ 39 | (fun command -> lexer & Lexing.from_string & run_and_read command) 40 | command 41 | 42 | -let run_and_read command = 43 | - Printf.ksprintf run_and_read command 44 | - 45 | let rec query name = 46 | try 47 | Hashtbl.find packages name 48 | @@ -135,7 +132,8 @@ 49 | with Not_found -> s 50 | 51 | let list () = 52 | - List.map before_space (split_nl & run_and_read "%s list" ocamlfind) 53 | + let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in 54 | + List.map before_space (split_nl & run_and_read cmd) 55 | 56 | (* The closure algorithm is easy because the dependencies are already closed 57 | and sorted for each package. We only have to make the union. We could also 58 | --- ./src/main.ml 59 | +++ ./src/main.ml 60 | @@ -162,6 +162,9 @@ 61 | Tags.mem "traverse" tags 62 | || List.exists (Pathname.is_prefix path_name) !Options.include_dirs 63 | || List.exists (Pathname.is_prefix path_name) target_dirs) 64 | + && ((* beware: !Options.build_dir is an absolute directory *) 65 | + Pathname.normalize !Options.build_dir 66 | + <> Pathname.normalize (Pathname.pwd/path_name)) 67 | end 68 | end 69 | end 70 | --- ./src/my_std.ml 71 | +++ ./src/my_std.ml 72 | @@ -271,13 +271,107 @@ 73 | try Array.iter (fun x -> if x = basename then raise Exit) a; false 74 | with Exit -> true 75 | 76 | +let command_plain = function 77 | +| [| |] -> 0 78 | +| margv -> 79 | + let rec waitpid a b = 80 | + match Unix.waitpid a b with 81 | + | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b 82 | + | x -> x 83 | + in 84 | + let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in 85 | + let pid', process_status = waitpid [] pid in 86 | + assert (pid = pid'); 87 | + match process_status with 88 | + | Unix.WEXITED n -> n 89 | + | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) 90 | + | Unix.WSTOPPED _ -> 127 91 | + 92 | +(* can't use Lexers because of circular dependency *) 93 | +let split_path_win str = 94 | + let rec aux pos = 95 | + try 96 | + let i = String.index_from str pos ';' in 97 | + let len = i - pos in 98 | + if len = 0 then 99 | + aux (succ i) 100 | + else 101 | + String.sub str pos (i - pos) :: aux (succ i) 102 | + with Not_found | Invalid_argument _ -> 103 | + let len = String.length str - pos in 104 | + if len = 0 then [] else [String.sub str pos len] 105 | + in 106 | + aux 0 107 | + 108 | +let windows_shell = lazy begin 109 | + let rec iter = function 110 | + | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] 111 | + | hd::tl -> 112 | + let dash = Filename.concat hd "dash.exe" in 113 | + if Sys.file_exists dash then [|dash|] else 114 | + let bash = Filename.concat hd "bash.exe" in 115 | + if Sys.file_exists bash = false then iter tl else 116 | + (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) 117 | + let sh = Filename.concat hd "sh.exe" in 118 | + if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] 119 | + in 120 | + split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter 121 | +end 122 | + 123 | +let prep_windows_cmd cmd = 124 | + (* workaround known ocaml bug, remove later *) 125 | + if String.contains cmd '\t' && String.contains cmd ' ' = false then 126 | + " " ^ cmd 127 | + else 128 | + cmd 129 | + 130 | +let run_with_shell = function 131 | +| "" -> 0 132 | +| cmd -> 133 | + let cmd = prep_windows_cmd cmd in 134 | + let shell = Lazy.force windows_shell in 135 | + let qlen = Filename.quote cmd |> String.length in 136 | + (* old versions of dash had problems with bs *) 137 | + try 138 | + if qlen < 7_900 then 139 | + command_plain (Array.append shell [| "-ec" ; cmd |]) 140 | + else begin 141 | + (* it can still work, if the called command is a cygwin tool *) 142 | + let ch_closed = ref false in 143 | + let file_deleted = ref false in 144 | + let fln,ch = 145 | + Filename.open_temp_file 146 | + ~mode:[Open_binary] 147 | + "ocamlbuildtmp" 148 | + ".sh" 149 | + in 150 | + try 151 | + let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in 152 | + output_string ch cmd; 153 | + ch_closed:= true; 154 | + close_out ch; 155 | + let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in 156 | + file_deleted:= true; 157 | + Sys.remove fln; 158 | + ret 159 | + with 160 | + | x -> 161 | + if !ch_closed = false then 162 | + close_out_noerr ch; 163 | + if !file_deleted = false then 164 | + (try Sys.remove fln with _ -> ()); 165 | + raise x 166 | + end 167 | + with 168 | + | (Unix.Unix_error _) as x -> 169 | + (* Sys.command doesn't raise an exception, so run_with_shell also won't 170 | + raise *) 171 | + Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; 172 | + 1 173 | + 174 | let sys_command = 175 | - match Sys.os_type with 176 | - | "Win32" -> fun cmd -> 177 | - if cmd = "" then 0 else 178 | - let cmd = "bash --norc -c " ^ Filename.quote cmd in 179 | - Sys.command cmd 180 | - | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd 181 | + if Sys.win32 then run_with_shell 182 | + else fun cmd -> if cmd = "" then 0 else Sys.command cmd 183 | 184 | (* FIXME warning fix and use Filename.concat *) 185 | let filename_concat x y = 186 | --- ./src/my_std.mli 187 | +++ ./src/my_std.mli 188 | @@ -69,3 +69,6 @@ 189 | 190 | val split_ocaml_version : (int * int * int * string) option 191 | (** (major, minor, patchlevel, rest) *) 192 | + 193 | +val windows_shell : string array Lazy.t 194 | +val prep_windows_cmd : string -> string 195 | --- ./src/ocamlbuild_executor.ml 196 | +++ ./src/ocamlbuild_executor.ml 197 | @@ -34,6 +34,8 @@ 198 | job_stdin : out_channel; 199 | job_stderr : in_channel; 200 | job_buffer : Buffer.t; 201 | + job_pid : int; 202 | + job_tmp_file: string option; 203 | mutable job_dying : bool; 204 | };; 205 | 206 | @@ -76,6 +78,61 @@ 207 | in 208 | loop 0 209 | ;; 210 | + 211 | +let open_process_full_win cmd env = 212 | + let (in_read, in_write) = Unix.pipe () in 213 | + let (out_read, out_write) = Unix.pipe () in 214 | + let (err_read, err_write) = Unix.pipe () in 215 | + Unix.set_close_on_exec in_read; 216 | + Unix.set_close_on_exec out_write; 217 | + Unix.set_close_on_exec err_read; 218 | + let inchan = Unix.in_channel_of_descr in_read in 219 | + let outchan = Unix.out_channel_of_descr out_write in 220 | + let errchan = Unix.in_channel_of_descr err_read in 221 | + let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in 222 | + let test_cmd = 223 | + String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ 224 | + "-ec " ^ 225 | + Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in 226 | + let argv,tmp_file = 227 | + if String.length test_cmd < 7_900 then 228 | + Array.append 229 | + shell 230 | + [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None 231 | + else 232 | + let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in 233 | + output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); 234 | + close_out ch; 235 | + let fln' = String.map (function '\\' -> '/' | c -> c) fln in 236 | + Array.append 237 | + shell 238 | + [| "-c" ; fln' |], Some fln in 239 | + let pid = 240 | + Unix.create_process_env argv.(0) argv env out_read in_write err_write in 241 | + Unix.close out_read; 242 | + Unix.close in_write; 243 | + Unix.close err_write; 244 | + (pid, inchan, outchan, errchan,tmp_file) 245 | + 246 | +let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = 247 | + let delete tmp_file = 248 | + match tmp_file with 249 | + | None -> () 250 | + | Some x -> try Sys.remove x with Sys_error _ -> () in 251 | + let tmp_file_deleted = ref false in 252 | + try 253 | + close_in inchan; 254 | + close_out outchan; 255 | + close_in errchan; 256 | + let res = snd(Unix.waitpid [] pid) in 257 | + tmp_file_deleted := true; 258 | + delete tmp_file; 259 | + res 260 | + with 261 | + | x when tmp_file <> None && !tmp_file_deleted = false -> 262 | + delete tmp_file; 263 | + raise x 264 | + 265 | (* ***) 266 | (*** execute *) 267 | (* XXX: Add test for non reentrancy *) 268 | @@ -130,10 +187,16 @@ 269 | (*** add_job *) 270 | let add_job cmd rest result id = 271 | (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) 272 | - let (stdout', stdin', stderr') = open_process_full cmd env in 273 | + let (pid,stdout', stdin', stderr', tmp_file) = 274 | + if Sys.win32 then open_process_full_win cmd env else 275 | + let a,b,c = open_process_full cmd env in 276 | + -1,a,b,c,None 277 | + in 278 | incr jobs_active; 279 | - set_nonblock (doi stdout'); 280 | - set_nonblock (doi stderr'); 281 | + if not Sys.win32 then ( 282 | + set_nonblock (doi stdout'); 283 | + set_nonblock (doi stderr'); 284 | + ); 285 | let job = 286 | { job_id = id; 287 | job_command = cmd; 288 | @@ -143,7 +206,9 @@ 289 | job_stdin = stdin'; 290 | job_stderr = stderr'; 291 | job_buffer = Buffer.create 1024; 292 | - job_dying = false } 293 | + job_dying = false; 294 | + job_tmp_file = tmp_file; 295 | + job_pid = pid } 296 | in 297 | outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); 298 | jobs := JS.add job !jobs; 299 | @@ -199,6 +264,7 @@ 300 | try 301 | read fd u 0 (Bytes.length u) 302 | with 303 | + | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 304 | | Unix.Unix_error(e,_,_) -> 305 | let msg = error_message e in 306 | display (fun oc -> fp oc 307 | @@ -241,14 +307,19 @@ 308 | decr jobs_active; 309 | 310 | (* PR#5371: we would get EAGAIN below otherwise *) 311 | - clear_nonblock (doi job.job_stdout); 312 | - clear_nonblock (doi job.job_stderr); 313 | - 314 | + if not Sys.win32 then ( 315 | + clear_nonblock (doi job.job_stdout); 316 | + clear_nonblock (doi job.job_stderr); 317 | + ); 318 | do_read ~loop:true (doi job.job_stdout) job; 319 | do_read ~loop:true (doi job.job_stderr) job; 320 | outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); 321 | jobs := JS.remove job !jobs; 322 | - let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in 323 | + let status = 324 | + if Sys.win32 then 325 | + close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) 326 | + else 327 | + close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in 328 | 329 | let shown = ref false in 330 | 331 | --- ./src/ocamlbuild_unix_plugin.ml 332 | +++ ./src/ocamlbuild_unix_plugin.ml 333 | @@ -48,12 +48,22 @@ 334 | end 335 | 336 | let run_and_open s kont = 337 | + let s_orig = s in 338 | + let s = 339 | + (* Be consistent! My_unix.run_and_open uses My_std.sys_command and 340 | + sys_command uses bash. *) 341 | + if Sys.win32 = false then s else 342 | + let l = match Lazy.force My_std.windows_shell |> Array.to_list with 343 | + | hd::tl -> (Filename.quote hd)::tl 344 | + | _ -> assert false in 345 | + "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" 346 | + in 347 | let ic = Unix.open_process_in s in 348 | let close () = 349 | match Unix.close_process_in ic with 350 | | Unix.WEXITED 0 -> () 351 | | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> 352 | - failwith (Printf.sprintf "Error while running: %s" s) in 353 | + failwith (Printf.sprintf "Error while running: %s" s_orig) in 354 | let res = try 355 | kont ic 356 | with e -> (close (); raise e) 357 | --- ./src/options.ml 358 | +++ ./src/options.ml 359 | @@ -174,11 +174,24 @@ 360 | build_dir := Filename.concat (Sys.getcwd ()) s 361 | else 362 | build_dir := s 363 | + 364 | +let slashify = 365 | + if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p 366 | + else fun p ->p 367 | + 368 | +let sb () = 369 | + match Sys.os_type with 370 | + | "Win32" -> 371 | + (try set_binary_mode_out stdout true with _ -> ()); 372 | + | _ -> () 373 | + 374 | + 375 | let spec = ref ( 376 | let print_version () = 377 | + sb (); 378 | Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK 379 | in 380 | - let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in 381 | + let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in 382 | Arg.align 383 | [ 384 | "-version", Unit print_version , " Display the version"; 385 | @@ -257,8 +270,8 @@ 386 | "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; 387 | "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; 388 | "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; 389 | - "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; 390 | - "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; 391 | + "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; 392 | + "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; 393 | "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; 394 | "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ 395 | used when building myocamlbuild.ml (only)"; 396 | --- ./src/pathname.ml 397 | +++ ./src/pathname.ml 398 | @@ -84,6 +84,26 @@ 399 | | x :: xs -> x :: normalize_list xs 400 | 401 | let normalize x = 402 | + let x = 403 | + if Sys.win32 = false then 404 | + x 405 | + else 406 | + let len = String.length x in 407 | + let b = Bytes.create len in 408 | + for i = 0 to pred len do 409 | + match x.[i] with 410 | + | '\\' -> Bytes.set b i '/' 411 | + | c -> Bytes.set b i c 412 | + done; 413 | + if len > 1 then ( 414 | + let c1 = Bytes.get b 0 in 415 | + let c2 = Bytes.get b 1 in 416 | + if c2 = ':' && c1 >= 'a' && c1 <= 'z' && 417 | + ( len = 2 || Bytes.get b 2 = '/') then 418 | + Bytes.set b 0 (Char.uppercase_ascii c1) 419 | + ); 420 | + Bytes.unsafe_to_string b 421 | + in 422 | if Glob.eval not_normal_form_re x then 423 | let root, paths = split x in 424 | join root (normalize_list paths) 425 | --- ./src/shell.ml 426 | +++ ./src/shell.ml 427 | @@ -24,12 +24,26 @@ 428 | | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) 429 | | _ -> false in 430 | loop 0 431 | + 432 | +let generic_quote quotequote s = 433 | + let l = String.length s in 434 | + let b = Buffer.create (l + 20) in 435 | + Buffer.add_char b '\''; 436 | + for i = 0 to l - 1 do 437 | + if s.[i] = '\'' 438 | + then Buffer.add_string b quotequote 439 | + else Buffer.add_char b s.[i] 440 | + done; 441 | + Buffer.add_char b '\''; 442 | + Buffer.contents b 443 | +let unix_quote = generic_quote "'\\''" 444 | + 445 | let quote_filename_if_needed s = 446 | if is_simple_filename s then s 447 | (* We should probably be using [Filename.unix_quote] except that function 448 | * isn't exported. Users on Windows will have to live with not being able to 449 | * install OCaml into c:\o'caml. Too bad. *) 450 | - else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s 451 | + else if Sys.os_type = "Win32" then unix_quote s 452 | else Filename.quote s 453 | let chdir dir = 454 | reset_filesys_cache (); 455 | @@ -37,7 +51,7 @@ 456 | let run args target = 457 | reset_readdir_cache (); 458 | let cmd = String.concat " " (List.map quote_filename_if_needed args) in 459 | - if !*My_unix.is_degraded || Sys.os_type = "Win32" then 460 | + if !*My_unix.is_degraded then 461 | begin 462 | Log.event cmd target Tags.empty; 463 | let st = sys_command cmd in 464 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.12.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.12.0.patch' : 'true'}" 7 | ], 8 | [ 9 | "make", 10 | "-f", 11 | "configure.make", 12 | "all", 13 | "OCAMLBUILD_PREFIX=#{self.install}", 14 | "OCAMLBUILD_BINDIR=#{self.bin}", 15 | "OCAMLBUILD_LIBDIR=#{self.lib}", 16 | "OCAMLBUILD_MANDIR=#{self.man}", 17 | "OCAMLBUILD_NATIVE=true", 18 | "OCAMLBUILD_NATIVE_TOOLS=true" 19 | ], 20 | [ 21 | "make", 22 | "check-if-preinstalled", 23 | "all", 24 | "#{os == 'windows' ? 'install' : 'opam-install'}" 25 | ] 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/files/findlib-1.8.0.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -57,16 +57,16 @@ 4 | cat findlib.conf.in | \ 5 | $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf 6 | if ./tools/cmd_from_same_dir ocamlc; then \ 7 | - echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ 8 | + echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 9 | fi 10 | if ./tools/cmd_from_same_dir ocamlopt; then \ 11 | - echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ 12 | + echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 13 | fi 14 | if ./tools/cmd_from_same_dir ocamldep; then \ 15 | - echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ 16 | + echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 17 | fi 18 | if ./tools/cmd_from_same_dir ocamldoc; then \ 19 | - echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ 20 | + echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 21 | fi 22 | 23 | .PHONY: install-doc 24 | --- ./src/findlib/findlib_config.mlp 25 | +++ ./src/findlib/findlib_config.mlp 26 | @@ -24,3 +24,5 @@ 27 | | "MacOS" -> "" (* don't know *) 28 | | _ -> failwith "Unknown Sys.os_type" 29 | ;; 30 | + 31 | +let exec_suffix = "@EXEC_SUFFIX@";; 32 | --- ./src/findlib/findlib.ml 33 | +++ ./src/findlib/findlib.ml 34 | @@ -28,15 +28,20 @@ 35 | let conf_ldconf = ref "";; 36 | let conf_ignore_dups_in = ref ([] : string list);; 37 | 38 | -let ocamlc_default = "ocamlc";; 39 | -let ocamlopt_default = "ocamlopt";; 40 | -let ocamlcp_default = "ocamlcp";; 41 | -let ocamloptp_default = "ocamloptp";; 42 | -let ocamlmklib_default = "ocamlmklib";; 43 | -let ocamlmktop_default = "ocamlmktop";; 44 | -let ocamldep_default = "ocamldep";; 45 | -let ocamlbrowser_default = "ocamlbrowser";; 46 | -let ocamldoc_default = "ocamldoc";; 47 | +let add_exec str = 48 | + match Findlib_config.exec_suffix with 49 | + | "" -> str 50 | + | a -> str ^ a ;; 51 | +let ocamlc_default = add_exec "ocamlc";; 52 | +let ocamlopt_default = add_exec "ocamlopt";; 53 | +let ocamlcp_default = add_exec "ocamlcp";; 54 | +let ocamloptp_default = add_exec "ocamloptp";; 55 | +let ocamlmklib_default = add_exec "ocamlmklib";; 56 | +let ocamlmktop_default = add_exec "ocamlmktop";; 57 | +let ocamldep_default = add_exec "ocamldep";; 58 | +let ocamlbrowser_default = add_exec "ocamlbrowser";; 59 | +let ocamldoc_default = add_exec "ocamldoc";; 60 | + 61 | 62 | 63 | let init_manually 64 | --- ./src/findlib/fl_package_base.ml 65 | +++ ./src/findlib/fl_package_base.ml 66 | @@ -133,7 +133,15 @@ 67 | List.find (fun def -> def.def_var = "exists_if") p.package_defs in 68 | let files = Fl_split.in_words def.def_value in 69 | List.exists 70 | - (fun file -> Sys.file_exists (Filename.concat d' file)) 71 | + (fun file -> 72 | + let fln = Filename.concat d' file in 73 | + let e = Sys.file_exists fln in 74 | + (* necessary for ppx executables *) 75 | + if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then 76 | + e 77 | + else 78 | + Sys.file_exists (fln ^ ".exe") 79 | + ) 80 | files 81 | with Not_found -> true in 82 | 83 | --- ./src/findlib/fl_split.ml 84 | +++ ./src/findlib/fl_split.ml 85 | @@ -126,10 +126,17 @@ 86 | | '/' | '\\' -> true 87 | | _ -> false in 88 | let norm_dir_win() = 89 | - if l >= 1 && s.[0] = '/' then 90 | - Buffer.add_char b '\\' else Buffer.add_char b s.[0]; 91 | - if l >= 2 && s.[1] = '/' then 92 | - Buffer.add_char b '\\' else Buffer.add_char b s.[1]; 93 | + if l >= 1 then ( 94 | + if s.[0] = '/' then 95 | + Buffer.add_char b '\\' 96 | + else 97 | + Buffer.add_char b s.[0] ; 98 | + if l >= 2 then 99 | + if s.[1] = '/' then 100 | + Buffer.add_char b '\\' 101 | + else 102 | + Buffer.add_char b s.[1]; 103 | + ); 104 | for k = 2 to l - 1 do 105 | let c = s.[k] in 106 | if is_slash c then ( 107 | --- ./src/findlib/frontend.ml 108 | +++ ./src/findlib/frontend.ml 109 | @@ -31,10 +31,18 @@ 110 | else 111 | Sys_error (arg ^ ": " ^ Unix.error_message code) 112 | 113 | +let is_win = Sys.os_type = "Win32" 114 | + 115 | +let () = 116 | + match Findlib_config.system with 117 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 118 | + (try set_binary_mode_out stdout true with _ -> ()); 119 | + (try set_binary_mode_out stderr true with _ -> ()); 120 | + | _ -> () 121 | 122 | let slashify s = 123 | match Findlib_config.system with 124 | - | "mingw" | "mingw64" | "cygwin" -> 125 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 126 | let b = Buffer.create 80 in 127 | String.iter 128 | (function 129 | @@ -49,7 +57,7 @@ 130 | 131 | let out_path ?(prefix="") s = 132 | match Findlib_config.system with 133 | - | "mingw" | "mingw64" | "cygwin" -> 134 | + | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> 135 | let u = slashify s in 136 | prefix ^ 137 | (if String.contains u ' ' then 138 | @@ -273,11 +281,9 @@ 139 | 140 | 141 | let identify_dir d = 142 | - match Sys.os_type with 143 | - | "Win32" -> 144 | - failwith "identify_dir" (* not available *) 145 | - | _ -> 146 | - let s = Unix.stat d in 147 | + if is_win then 148 | + failwith "identify_dir"; (* not available *) 149 | + let s = Unix.stat d in 150 | (s.Unix.st_dev, s.Unix.st_ino) 151 | ;; 152 | 153 | @@ -459,6 +465,96 @@ 154 | ) 155 | packages 156 | 157 | +let rewrite_cmd s = 158 | + if s = "" || not is_win then 159 | + s 160 | + else 161 | + let s = 162 | + let l = String.length s in 163 | + let b = Buffer.create l in 164 | + for i = 0 to pred l do 165 | + match s.[i] with 166 | + | '/' -> Buffer.add_char b '\\' 167 | + | x -> Buffer.add_char b x 168 | + done; 169 | + Buffer.contents b 170 | + in 171 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 172 | + Filename.check_suffix (String.lowercase s) ".exe" then 173 | + s 174 | + else 175 | + let s' = s ^ ".exe" in 176 | + if Sys.file_exists s' then 177 | + s' 178 | + else 179 | + s 180 | + 181 | +let rewrite_cmd s = 182 | + if s = "" || not is_win then s else 183 | + let s = 184 | + let l = String.length s in 185 | + let b = Buffer.create l in 186 | + for i = 0 to pred l do 187 | + match s.[i] with 188 | + | '/' -> Buffer.add_char b '\\' 189 | + | x -> Buffer.add_char b x 190 | + done; 191 | + Buffer.contents b 192 | + in 193 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 194 | + Filename.check_suffix (String.lowercase s) ".exe" then 195 | + s 196 | + else 197 | + let s' = s ^ ".exe" in 198 | + if Sys.file_exists s' then 199 | + s' 200 | + else 201 | + s 202 | + 203 | +let rewrite_pp cmd = 204 | + if not is_win then cmd else 205 | + let module T = struct exception Keep end in 206 | + let is_whitespace = function 207 | + | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true 208 | + | _ -> false in 209 | + (* characters that triggers special behaviour (cmd.exe, not unix shell) *) 210 | + let is_unsafe_char = function 211 | + | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true 212 | + | _ -> false in 213 | + let len = String.length cmd in 214 | + let buf = Buffer.create (len + 4) in 215 | + let buf_cmd = Buffer.create len in 216 | + let rec iter_ws i = 217 | + if i >= len then () else 218 | + let cur = cmd.[i] in 219 | + if is_whitespace cur then ( 220 | + Buffer.add_char buf cur; 221 | + iter_ws (succ i) 222 | + ) 223 | + else 224 | + iter_cmd i 225 | + and iter_cmd i = 226 | + if i >= len then add_buf_cmd () else 227 | + let cur = cmd.[i] in 228 | + if is_unsafe_char cur || cur = '"' || cur = '\'' then 229 | + raise T.Keep; 230 | + if is_whitespace cur then ( 231 | + add_buf_cmd (); 232 | + Buffer.add_substring buf cmd i (len - i) 233 | + ) 234 | + else ( 235 | + Buffer.add_char buf_cmd cur; 236 | + iter_cmd (succ i) 237 | + ) 238 | + and add_buf_cmd () = 239 | + if Buffer.length buf_cmd > 0 then 240 | + Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) 241 | + in 242 | + try 243 | + iter_ws 0; 244 | + Buffer.contents buf 245 | + with 246 | + | T.Keep -> cmd 247 | 248 | let process_pp_spec syntax_preds packages pp_opts = 249 | (* Returns: pp_command *) 250 | @@ -549,7 +645,7 @@ 251 | None -> [] 252 | | Some cmd -> 253 | ["-pp"; 254 | - cmd ^ " " ^ 255 | + (rewrite_cmd cmd) ^ " " ^ 256 | String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ 257 | String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ 258 | String.concat " " (List.map Filename.quote pp_opts)] 259 | @@ -625,9 +721,11 @@ 260 | in 261 | try 262 | let preprocessor = 263 | + rewrite_cmd ( 264 | resolve_path 265 | ~base ~explicit:true 266 | - (package_property predicates pname "ppx") in 267 | + (package_property predicates pname "ppx") ) 268 | + in 269 | ["-ppx"; String.concat " " (preprocessor :: options)] 270 | with Not_found -> [] 271 | ) 272 | @@ -895,6 +993,14 @@ 273 | switch (e.g. -L instead of -L ) 274 | *) 275 | 276 | +(* We may need to remove files on which we do not have complete control. 277 | + On Windows, removing a read-only file fails so try to change the 278 | + mode of the file first. *) 279 | +let remove_file fname = 280 | + try Sys.remove fname 281 | + with Sys_error _ when is_win -> 282 | + (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); 283 | + Sys.remove fname 284 | 285 | let ocamlc which () = 286 | 287 | @@ -1022,9 +1128,12 @@ 288 | 289 | "-intf", 290 | Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); 291 | - 292 | + 293 | "-pp", 294 | - Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); 295 | + Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); 296 | + 297 | + "-ppx", 298 | + Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 299 | 300 | "-thread", 301 | Arg.Unit (fun _ -> threads := threads_default); 302 | @@ -1237,7 +1346,7 @@ 303 | with 304 | any -> 305 | close_out initl; 306 | - Sys.remove initl_file_name; 307 | + remove_file initl_file_name; 308 | raise any 309 | end; 310 | 311 | @@ -1245,9 +1354,9 @@ 312 | at_exit 313 | (fun () -> 314 | let tr f x = try f x with _ -> () in 315 | - tr Sys.remove initl_file_name; 316 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); 317 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); 318 | + tr remove_file initl_file_name; 319 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); 320 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); 321 | ); 322 | 323 | let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in 324 | @@ -1493,7 +1602,9 @@ 325 | [ "-v", Arg.Unit (fun () -> verbose := Verbose); 326 | "-pp", Arg.String (fun s -> 327 | pp_specified := true; 328 | - options := !options @ ["-pp"; s]); 329 | + options := !options @ ["-pp"; rewrite_pp s]); 330 | + "-ppx", Arg.String (fun s -> 331 | + options := !options @ ["-ppx"; rewrite_pp s]); 332 | ] 333 | ) 334 | ) 335 | @@ -1672,7 +1783,9 @@ 336 | Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); 337 | 338 | "-pp", Arg.String (fun s -> pp_specified := true; 339 | - add_spec_fn "-pp" s); 340 | + add_spec_fn "-pp" (rewrite_pp s)); 341 | + "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 342 | + 343 | ] 344 | ) 345 | ) 346 | @@ -1830,7 +1943,10 @@ 347 | output_string ch_out append; 348 | close_out ch_out; 349 | close_in ch_in; 350 | - Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; 351 | + (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime 352 | + with Unix.Unix_error(e,_,_) -> 353 | + prerr_endline("Warning: setting utimes for " ^ outpath 354 | + ^ ": " ^ Unix.error_message e)); 355 | 356 | prerr_endline("Installed " ^ outpath); 357 | with 358 | @@ -1882,6 +1998,8 @@ 359 | Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in 360 | let f = 361 | Unix.in_channel_of_descr fd in 362 | + if is_win then 363 | + set_binary_mode_in f false; 364 | try 365 | let line = input_line f in 366 | let is_my_file = (line = pkg) in 367 | @@ -2208,7 +2326,7 @@ 368 | let lines = read_ldconf !ldconf in 369 | let dlldir_norm = Fl_split.norm_dir dlldir in 370 | let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in 371 | - let ci_filesys = (Sys.os_type = "Win32") in 372 | + let ci_filesys = is_win in 373 | let check_dir d = 374 | let d' = Fl_split.norm_dir d in 375 | (d' = dlldir_norm) || 376 | @@ -2356,7 +2474,7 @@ 377 | List.iter 378 | (fun file -> 379 | let absfile = Filename.concat dlldir file in 380 | - Sys.remove absfile; 381 | + remove_file absfile; 382 | prerr_endline ("Removed " ^ absfile) 383 | ) 384 | dll_files 385 | @@ -2365,7 +2483,7 @@ 386 | (* Remove the files from the package directory: *) 387 | if Sys.file_exists pkgdir then begin 388 | let files = Sys.readdir pkgdir in 389 | - Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; 390 | + Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; 391 | Unix.rmdir pkgdir; 392 | prerr_endline ("Removed " ^ pkgdir) 393 | end 394 | @@ -2415,7 +2533,9 @@ 395 | 396 | 397 | let print_configuration() = 398 | + let sl = slashify in 399 | let dir s = 400 | + let s = sl s in 401 | if Sys.file_exists s then 402 | s 403 | else 404 | @@ -2453,27 +2573,27 @@ 405 | if md = "" then "the corresponding package directories" else dir md 406 | ); 407 | Printf.printf "The standard library is assumed to reside in:\n %s\n" 408 | - (Findlib.ocaml_stdlib()); 409 | + (sl (Findlib.ocaml_stdlib())); 410 | Printf.printf "The ld.conf file can be found here:\n %s\n" 411 | - (Findlib.ocaml_ldconf()); 412 | + (sl (Findlib.ocaml_ldconf())); 413 | flush stdout 414 | | Some "conf" -> 415 | - print_endline Findlib_config.config_file 416 | + print_endline (sl Findlib_config.config_file) 417 | | Some "path" -> 418 | - List.iter print_endline (Findlib.search_path()) 419 | + List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) 420 | | Some "destdir" -> 421 | - print_endline (Findlib.default_location()) 422 | + print_endline ( sl (Findlib.default_location())) 423 | | Some "metadir" -> 424 | - print_endline (Findlib.meta_directory()) 425 | + print_endline ( sl (Findlib.meta_directory())) 426 | | Some "metapath" -> 427 | let mdir = Findlib.meta_directory() in 428 | let ddir = Findlib.default_location() in 429 | - print_endline 430 | - (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") 431 | + print_endline ( sl 432 | + (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) 433 | | Some "stdlib" -> 434 | - print_endline (Findlib.ocaml_stdlib()) 435 | + print_endline ( sl (Findlib.ocaml_stdlib())) 436 | | Some "ldconf" -> 437 | - print_endline (Findlib.ocaml_ldconf()) 438 | + print_endline ( sl (Findlib.ocaml_ldconf())) 439 | | _ -> 440 | assert false 441 | ;; 442 | @@ -2481,7 +2601,7 @@ 443 | 444 | let ocamlcall pkg cmd = 445 | let dir = package_directory pkg in 446 | - let path = Filename.concat dir cmd in 447 | + let path = rewrite_cmd (Filename.concat dir cmd) in 448 | begin 449 | try Unix.access path [ Unix.X_OK ] 450 | with 451 | @@ -2647,6 +2767,10 @@ 452 | | Sys_error f -> 453 | prerr_endline ("ocamlfind: " ^ f); 454 | exit 2 455 | + | Unix.Unix_error (e, fn, f) -> 456 | + prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f 457 | + ^ ": " ^ Unix.error_message e); 458 | + exit 2 459 | | Findlib.No_such_package(pkg,info) -> 460 | prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ 461 | (if info <> "" then " - " ^ info else "")); 462 | --- ./src/findlib/Makefile 463 | +++ ./src/findlib/Makefile 464 | @@ -90,6 +90,7 @@ 465 | cat findlib_config.mlp | \ 466 | $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ 467 | $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ 468 | + $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ 469 | sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ 470 | -e 's;@SYSTEM@;$(SYSTEM);g' \ 471 | >findlib_config.ml 472 | @@ -113,7 +114,7 @@ 473 | $(OCAMLC) -a -o num_top.cma $(NUMTOP_OBJECTS) 474 | 475 | clean: 476 | - rm -f *.cmi *.cmo *.cma *.cmx *.a *.o *.cmxa \ 477 | + rm -f *.cmi *.cmo *.cma *.cmx *.lib *.a *.o *.cmxa \ 478 | fl_meta.ml findlib_config.ml findlib.mml topfind.ml topfind \ 479 | ocamlfind$(EXEC_SUFFIX) ocamlfind_opt$(EXEC_SUFFIX) 480 | 481 | @@ -121,7 +122,7 @@ 482 | mkdir -p "$(prefix)$(OCAML_SITELIB)/$(NAME)" 483 | mkdir -p "$(prefix)$(OCAMLFIND_BIN)" 484 | test $(INSTALL_TOPFIND) -eq 0 || cp topfind "$(prefix)$(OCAML_CORE_STDLIB)" 485 | - files=`$(SH) $(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma findlib.cmxa findlib.a findlib.cmxs topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib_top.cmxa findlib_top.a findlib_top.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload.a findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \ 486 | + files=`$(SH) $(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma findlib.cmxa findlib$(LIB_SUFFIX) findlib.cmxs topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib_top.cmxa findlib_top$(LIB_SUFFIX) findlib_top.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload$(LIB_SUFFIX) findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \ 487 | cp $$files "$(prefix)$(OCAML_SITELIB)/$(NAME)" 488 | f="ocamlfind$(EXEC_SUFFIX)"; { test -f ocamlfind_opt$(EXEC_SUFFIX) && f="ocamlfind_opt$(EXEC_SUFFIX)"; }; \ 489 | cp $$f "$(prefix)$(OCAMLFIND_BIN)/ocamlfind$(EXEC_SUFFIX)" 490 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < findlib-1.8.0.patch' : 'true'}" 7 | ], 8 | [ 9 | "./configure", 10 | "-bindir", 11 | "#{self.bin}", 12 | "-sitelib", 13 | "#{self.lib}", 14 | "-mandir", 15 | "#{self.man}", 16 | "-config", 17 | "#{self.lib}/findlib.conf", 18 | "-no-custom", 19 | "-no-topfind" 20 | ], 21 | [ 22 | "make", 23 | "all" 24 | ], 25 | [ 26 | "make", 27 | "opt" 28 | ] 29 | ], 30 | "install": [ 31 | [ 32 | "make", 33 | "install" 34 | ], 35 | [ 36 | "install", 37 | "-m", 38 | "0755", 39 | "ocaml-stub", 40 | "#{self.bin}/ocaml" 41 | ], 42 | [ 43 | "mkdir", 44 | "-p", 45 | "#{self.toplevel}" 46 | ], 47 | [ 48 | "install", 49 | "-m", 50 | "0644", 51 | "src/findlib/topfind", 52 | "#{self.toplevel}/topfind" 53 | ] 54 | ], 55 | "exportedEnv": { 56 | "OCAML_TOPLEVEL_PATH": { 57 | "val": "#{self.toplevel}", 58 | "scope": "global" 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__utop_opam__c__2.2.0_opam_override/files/utop-2.2.0.patch: -------------------------------------------------------------------------------- 1 | --- ./src/lib/uTop_main.ml 2 | +++ ./src/lib/uTop_main.ml 3 | @@ -1308,6 +1308,9 @@ 4 | (* We lost the terminal. *) 5 | catch Sys.sighup; 6 | (* Termination request. *) 7 | + if Sys.win32 && !emacs_mode then 8 | + Sys.set_signal Sys.sigterm Sys.Signal_ignore 9 | + else 10 | catch Sys.sigterm 11 | 12 | let load_inputrc () = 13 | --- ./src/top/expunge/expunge.ml 14 | +++ ./src/top/expunge/expunge.ml 15 | @@ -3,7 +3,9 @@ 16 | 17 | let run_and_read_lines args = 18 | let cmd = String.concat ~sep:" " (List.map args ~f:Filename.quote) in 19 | + let cmd = if Sys.win32 then "\"" ^ cmd ^ "\"" else cmd in 20 | let ic = Unix.open_process_in cmd in 21 | + set_binary_mode_in ic false; 22 | let rec loop acc = 23 | match input_line ic with 24 | | exception End_of_file -> List.rev acc 25 | @@ -60,6 +62,7 @@ 26 | (Filename.quote dst) 27 | (String.concat ~sep:" " (S.elements modules_to_keep)) 28 | in 29 | + let cmdline = if Sys.win32 then "\"" ^ cmdline ^ "\"" else cmdline in 30 | if verbose then prerr_endline cmdline; 31 | exit (Sys.command cmdline) 32 | 33 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__utop_opam__c__2.2.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < utop-2.2.0.patch' : 'true' }" 7 | ], 8 | [ 9 | "jbuilder", 10 | "build", 11 | "-p", 12 | "utop", 13 | "-j", 14 | "4" 15 | ] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "revery-quick-start", 3 | "version": "1.3.0", 4 | "description": "Revery quickstart", 5 | "license": "MIT", 6 | "esy": { 7 | "build": "refmterr dune build -p App", 8 | "buildsInSource": "_build" 9 | }, 10 | "dependencies": { 11 | "ocaml": "~4.7.0", 12 | "revery": "0.5.1", 13 | "@opam/dune": "*" 14 | }, 15 | "resolutions": { 16 | "@opam/cmdliner": "1.0.2", 17 | "@opam/js_of_ocaml": "github:ocsigen/js_of_ocaml:js_of_ocaml.opam#db257ce", 18 | "@opam/js_of_ocaml-compiler": "github:ocsigen/js_of_ocaml:js_of_ocaml-compiler.opam#db257ce", 19 | "@esy-ocaml/reason": "facebook/reason#ab49908", 20 | "@brisk/brisk-reconciler": "github:briskml/brisk-reconciler#7901934" 21 | }, 22 | "scripts": { 23 | "format": "bash -c \"refmt --in-place *.re\"", 24 | "run": "esy x App" 25 | }, 26 | "devDependencies": { 27 | "ocaml": "~4.7.0", 28 | "@opam/merlin": "*" 29 | } 30 | } 31 | --------------------------------------------------------------------------------