├── .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 |
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 |
--------------------------------------------------------------------------------