├── .gitignore ├── LICENSE ├── README.md ├── doc-tools.opam ├── dune-project ├── esy.lock ├── .gitattributes ├── .gitignore ├── index.json ├── opam │ ├── alcotest.0.8.3 │ │ └── opam │ ├── astring.0.8.3 │ │ └── opam │ ├── base-bytes.base │ │ └── opam │ ├── base-unix.base │ │ └── opam │ ├── biniou.1.2.0 │ │ └── opam │ ├── bisect_ppx.1.3.4 │ │ └── opam │ ├── bos.0.2.0 │ │ └── opam │ ├── cmdliner.1.0.2 │ │ └── opam │ ├── conf-m4.1 │ │ └── opam │ ├── conf-which.1 │ │ └── opam │ ├── cppo.1.6.5 │ │ └── opam │ ├── dune.1.3.0 │ │ └── opam │ ├── easy-format.1.3.1 │ │ └── opam │ ├── fmt.0.8.8 │ │ └── opam │ ├── fpath.0.7.2 │ │ └── opam │ ├── jbuilder.transition │ │ └── opam │ ├── js-build-tools.113.33.04 │ │ └── opam │ ├── lambdasoup.0.6.3 │ │ └── opam │ ├── logs.0.7.0 │ │ └── opam │ ├── markup.0.8.2 │ │ └── opam │ ├── merlin.3.2.2 │ │ └── opam │ ├── num.1.3 │ │ ├── files │ │ │ └── installation-warning.patch │ │ └── opam │ ├── oasis.0.4.11 │ │ ├── files │ │ │ └── oasis.install │ │ └── opam │ ├── ocaml-migrate-parsetree.1.1.0 │ │ └── opam │ ├── ocamlbuild.0.14.0 │ │ └── opam │ ├── ocamlfind.1.8.0 │ │ ├── files │ │ │ ├── no-awk-check.patch │ │ │ ├── ocaml-stub │ │ │ └── ocamlfind.install │ │ └── opam │ ├── ocamlify.0.0.1 │ │ ├── files │ │ │ └── ocamlify.install │ │ └── opam │ ├── ocamlmod.0.0.9 │ │ ├── files │ │ │ ├── _oasis_remove_.ml │ │ │ └── ocamlmod.install │ │ └── opam │ ├── ppx_tools_versioned.5.2.2 │ │ └── opam │ ├── re.1.9.0 │ │ └── opam │ ├── result.1.3 │ │ └── opam │ ├── rresult.0.6.0 │ │ └── opam │ ├── seq.0.2.2 │ │ └── opam │ ├── sexplib.v0.10.0 │ │ └── opam │ ├── stdlib-shims.0.1.0 │ │ └── opam │ ├── topkg.1.0.1 │ │ └── opam │ ├── tyxml.4.3.0 │ │ └── opam │ ├── uchar.0.0.2 │ │ └── opam │ ├── uutf.1.0.2 │ │ └── opam │ └── yojson.1.7.0 │ │ └── opam └── overrides │ ├── opam__s__num_opam__c__1.3_opam_override │ ├── files │ │ └── num-1.3.patch │ └── package.json │ ├── opam__s__oasis_opam__c__0.4.11_opam_override │ ├── files │ │ └── oasis-0.4.11.patch │ └── package.json │ ├── opam__s__ocaml_migrate_parsetree_opam__c__1.1.0_opam_override │ ├── files │ │ └── ocaml-migrate-parsetree.1.1.0.patch │ └── package.json │ ├── opam__s__ocamlbuild_opam__c__0.14.0_opam_override │ ├── files │ │ └── ocamlbuild-0.14.0.patch │ └── package.json │ ├── opam__s__ocamlfind_opam__c__1.8.0_opam_override │ ├── files │ │ └── findlib-1.8.0.patch │ └── package.json │ ├── opam__s__ocamlify_opam__c__0.0.1_opam_override │ ├── files │ │ └── esy-fix.patch │ └── package.json │ └── opam__s__sexplib_opam__c__v0.10.0_opam_override │ ├── files │ └── winconfigure │ └── package.json ├── package.json └── src ├── Main.ml └── dune /.gitignore: -------------------------------------------------------------------------------- 1 | _esy 2 | _output 3 | node_modules 4 | .merlin 5 | doc-tools.install 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Reason Association 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # doc-tools 2 | 3 | A toolset for Reason / OCaml related documentation generation 4 | 5 | 6 | ## Requirements 7 | 8 | 1. Clone [Bucklescript](https://github.com/BuckleScript/bucklescript) somewhere on your machine (for example at `~/projects/bucklescript`). 9 | 2. Follow the build instructions in [`CONTRIBUTING.md`](https://github.com/BuckleScript/bucklescript/blob/master/CONTRIBUTING.md) in the Bucklescript repository. 10 | 3. Install [esy](https://esy.sh) with `npm install -g esy`. 11 | 12 | 13 | ## Generate documentation from Bucklescript modules 14 | 15 | Make sure you followed all the steps in the Requirements section first. Once that is done, you can build the `bs-doc` tool (this is a temporary name). 16 | 17 | ``` 18 | $ esy 19 | ``` 20 | 21 | And finally, run the tool to generate the documentation artefacts (_e.g._ JSON): 22 | 23 | ``` 24 | $ esy x -- bs-doc --output=_output --bs-project-dir=~/projects/bucklescript 25 | ``` 26 | 27 | This will generate JSON and odoc files in the `_output` folder. When regenerating the files, make sure to remove the previously created files. 28 | 29 | For additional configuration options see: 30 | 31 | ``` 32 | $ esy x -- bs-doc --help 33 | ``` 34 | 35 | 36 | ## Working on JSON generator 37 | 38 | Currently the JSON generation is implemented in a [forked version of odoc](https://github.com/odis-labs/odoc). 39 | 40 | To work with the JSON generator, clone the forked version of odoc on your machine and build it with esy `esy @ocaml-4.06`. 41 | 42 | To use the modified version of odoc, you can update the `package.json` file in this repository to link to the cloned `odoc` folder. -------------------------------------------------------------------------------- /doc-tools.opam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rescript-association/doc-tools/5dfdf4400a617c331409bb94f97f3daf930626b3/doc-tools.opam -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- 1 | (lang dune 1.3) 2 | -------------------------------------------------------------------------------- /esy.lock/.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows. 3 | * text eol=lf linguist-generated 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": "e865984542178f432dc267580af1c7d7", 3 | "root": "bs-doc@link-dev:./package.json", 4 | "node": { 5 | "ocaml@4.6.1000@d41d8cd9": { 6 | "id": "ocaml@4.6.1000@d41d8cd9", 7 | "name": "ocaml", 8 | "version": "4.6.1000", 9 | "source": { 10 | "type": "install", 11 | "source": [ 12 | "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.6.1000.tgz#sha1:99525ef559353481396454f9a072dedc96b52f44" 13 | ] 14 | }, 15 | "overrides": [], 16 | "dependencies": [], 17 | "devDependencies": [] 18 | }, 19 | "bs-doc@link-dev:./package.json": { 20 | "id": "bs-doc@link-dev:./package.json", 21 | "name": "bs-doc", 22 | "version": "link-dev:./package.json", 23 | "source": { 24 | "type": "link-dev", 25 | "path": ".", 26 | "manifest": "package.json" 27 | }, 28 | "overrides": [], 29 | "dependencies": [ 30 | "ocaml@4.6.1000@d41d8cd9", 31 | "@opam/odoc@github:odis-labs/odoc:ocaml-4.06.json#b3960b2f08ad9a0f2130110bc50dcd4e1514027f@d41d8cd9", 32 | "@opam/cmdliner@opam:1.0.2@1c17346c" 33 | ], 34 | "devDependencies": [ 35 | "ocaml@4.6.1000@d41d8cd9", "@opam/merlin@opam:3.2.2@e3edecdd", 36 | "@opam/dune@opam:1.3.0@7b4ddff4" 37 | ] 38 | }, 39 | "@opam/yojson@opam:1.7.0@7056d985": { 40 | "id": "@opam/yojson@opam:1.7.0@7056d985", 41 | "name": "@opam/yojson", 42 | "version": "opam:1.7.0", 43 | "source": { 44 | "type": "install", 45 | "source": [ 46 | "archive:https://opam.ocaml.org/cache/md5/b8/b89d39ca3f8c532abe5f547ad3b8f84d#md5:b89d39ca3f8c532abe5f547ad3b8f84d", 47 | "archive:https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz#md5:b89d39ca3f8c532abe5f547ad3b8f84d" 48 | ], 49 | "opam": { 50 | "name": "yojson", 51 | "version": "1.7.0", 52 | "path": "esy.lock/opam/yojson.1.7.0" 53 | } 54 | }, 55 | "overrides": [], 56 | "dependencies": [ 57 | "ocaml@4.6.1000@d41d8cd9", "@opam/easy-format@opam:1.3.1@54402780", 58 | "@opam/dune@opam:1.3.0@7b4ddff4", "@opam/cppo@opam:1.6.5@f8ff4f1a", 59 | "@opam/biniou@opam:1.2.0@b5796419", 60 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 61 | ], 62 | "devDependencies": [ 63 | "ocaml@4.6.1000@d41d8cd9", "@opam/easy-format@opam:1.3.1@54402780", 64 | "@opam/dune@opam:1.3.0@7b4ddff4", "@opam/biniou@opam:1.2.0@b5796419" 65 | ] 66 | }, 67 | "@opam/uutf@opam:1.0.2@4440868f": { 68 | "id": "@opam/uutf@opam:1.0.2@4440868f", 69 | "name": "@opam/uutf", 70 | "version": "opam:1.0.2", 71 | "source": { 72 | "type": "install", 73 | "source": [ 74 | "archive:https://opam.ocaml.org/cache/md5/a7/a7c542405a39630c689a82bd7ef2292c#md5:a7c542405a39630c689a82bd7ef2292c", 75 | "archive:http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz#md5:a7c542405a39630c689a82bd7ef2292c" 76 | ], 77 | "opam": { 78 | "name": "uutf", 79 | "version": "1.0.2", 80 | "path": "esy.lock/opam/uutf.1.0.2" 81 | } 82 | }, 83 | "overrides": [], 84 | "dependencies": [ 85 | "ocaml@4.6.1000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", 86 | "@opam/topkg@opam:1.0.1@a42c631e", 87 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 88 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 89 | "@opam/cmdliner@opam:1.0.2@1c17346c", 90 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 91 | ], 92 | "devDependencies": [ 93 | "ocaml@4.6.1000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea" 94 | ] 95 | }, 96 | "@opam/uchar@opam:0.0.2@c8218eea": { 97 | "id": "@opam/uchar@opam:0.0.2@c8218eea", 98 | "name": "@opam/uchar", 99 | "version": "opam:0.0.2", 100 | "source": { 101 | "type": "install", 102 | "source": [ 103 | "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", 104 | "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" 105 | ], 106 | "opam": { 107 | "name": "uchar", 108 | "version": "0.0.2", 109 | "path": "esy.lock/opam/uchar.0.0.2" 110 | } 111 | }, 112 | "overrides": [], 113 | "dependencies": [ 114 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 115 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 116 | ], 117 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 118 | }, 119 | "@opam/tyxml@opam:4.3.0@c1da25f1": { 120 | "id": "@opam/tyxml@opam:4.3.0@c1da25f1", 121 | "name": "@opam/tyxml", 122 | "version": "opam:4.3.0", 123 | "source": { 124 | "type": "install", 125 | "source": [ 126 | "archive:https://opam.ocaml.org/cache/md5/fd/fd834a567f813bf447cab5f4c3a723e2#md5:fd834a567f813bf447cab5f4c3a723e2", 127 | "archive:https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz#md5:fd834a567f813bf447cab5f4c3a723e2" 128 | ], 129 | "opam": { 130 | "name": "tyxml", 131 | "version": "4.3.0", 132 | "path": "esy.lock/opam/tyxml.4.3.0" 133 | } 134 | }, 135 | "overrides": [], 136 | "dependencies": [ 137 | "ocaml@4.6.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", 138 | "@opam/seq@opam:0.2.2@e9144e45", "@opam/re@opam:1.9.0@d4d5e13d", 139 | "@opam/dune@opam:1.3.0@7b4ddff4", "@esy-ocaml/substs@0.0.1@d41d8cd9" 140 | ], 141 | "devDependencies": [ 142 | "ocaml@4.6.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", 143 | "@opam/seq@opam:0.2.2@e9144e45", "@opam/re@opam:1.9.0@d4d5e13d", 144 | "@opam/dune@opam:1.3.0@7b4ddff4" 145 | ] 146 | }, 147 | "@opam/topkg@opam:1.0.1@a42c631e": { 148 | "id": "@opam/topkg@opam:1.0.1@a42c631e", 149 | "name": "@opam/topkg", 150 | "version": "opam:1.0.1", 151 | "source": { 152 | "type": "install", 153 | "source": [ 154 | "archive:https://opam.ocaml.org/cache/md5/16/16b90e066d8972a5ef59655e7c28b3e9#md5:16b90e066d8972a5ef59655e7c28b3e9", 155 | "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz#md5:16b90e066d8972a5ef59655e7c28b3e9" 156 | ], 157 | "opam": { 158 | "name": "topkg", 159 | "version": "1.0.1", 160 | "path": "esy.lock/opam/topkg.1.0.1" 161 | } 162 | }, 163 | "overrides": [], 164 | "dependencies": [ 165 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 166 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 167 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 168 | ], 169 | "devDependencies": [ 170 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03" 171 | ] 172 | }, 173 | "@opam/stdlib-shims@opam:0.1.0@d957c903": { 174 | "id": "@opam/stdlib-shims@opam:0.1.0@d957c903", 175 | "name": "@opam/stdlib-shims", 176 | "version": "opam:0.1.0", 177 | "source": { 178 | "type": "install", 179 | "source": [ 180 | "archive:https://opam.ocaml.org/cache/md5/12/12b5704eed70c6bff5ac39a16db1425d#md5:12b5704eed70c6bff5ac39a16db1425d", 181 | "archive:https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz#md5:12b5704eed70c6bff5ac39a16db1425d" 182 | ], 183 | "opam": { 184 | "name": "stdlib-shims", 185 | "version": "0.1.0", 186 | "path": "esy.lock/opam/stdlib-shims.0.1.0" 187 | } 188 | }, 189 | "overrides": [], 190 | "dependencies": [ 191 | "ocaml@4.6.1000@d41d8cd9", "@opam/dune@opam:1.3.0@7b4ddff4", 192 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 193 | ], 194 | "devDependencies": [ 195 | "ocaml@4.6.1000@d41d8cd9", "@opam/dune@opam:1.3.0@7b4ddff4" 196 | ] 197 | }, 198 | "@opam/sexplib@opam:v0.10.0@456c81bd": { 199 | "id": "@opam/sexplib@opam:v0.10.0@456c81bd", 200 | "name": "@opam/sexplib", 201 | "version": "opam:v0.10.0", 202 | "source": { 203 | "type": "install", 204 | "source": [ 205 | "archive:https://opam.ocaml.org/cache/md5/b8/b8f5db21a2b19aadc753c6e626019068#md5:b8f5db21a2b19aadc753c6e626019068", 206 | "archive:https://ocaml.janestreet.com/ocaml-core/v0.10/files/sexplib-v0.10.0.tar.gz#md5:b8f5db21a2b19aadc753c6e626019068" 207 | ], 208 | "opam": { 209 | "name": "sexplib", 210 | "version": "v0.10.0", 211 | "path": "esy.lock/opam/sexplib.v0.10.0" 212 | } 213 | }, 214 | "overrides": [ 215 | { 216 | "opamoverride": 217 | "esy.lock/overrides/opam__s__sexplib_opam__c__v0.10.0_opam_override" 218 | } 219 | ], 220 | "dependencies": [ 221 | "ocaml@4.6.1000@d41d8cd9", "@opam/num@opam:1.3@43fe4f7f", 222 | "@opam/jbuilder@opam:transition@20522f05", 223 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 224 | ], 225 | "devDependencies": [ 226 | "ocaml@4.6.1000@d41d8cd9", "@opam/num@opam:1.3@43fe4f7f", 227 | "@opam/jbuilder@opam:transition@20522f05" 228 | ] 229 | }, 230 | "@opam/seq@opam:0.2.2@e9144e45": { 231 | "id": "@opam/seq@opam:0.2.2@e9144e45", 232 | "name": "@opam/seq", 233 | "version": "opam:0.2.2", 234 | "source": { 235 | "type": "install", 236 | "source": [ 237 | "archive:https://opam.ocaml.org/cache/md5/90/9033e02283aa3bde9f97f24e632902e3#md5:9033e02283aa3bde9f97f24e632902e3", 238 | "archive:https://github.com/c-cube/seq/archive/0.2.2.tar.gz#md5:9033e02283aa3bde9f97f24e632902e3" 239 | ], 240 | "opam": { 241 | "name": "seq", 242 | "version": "0.2.2", 243 | "path": "esy.lock/opam/seq.0.2.2" 244 | } 245 | }, 246 | "overrides": [], 247 | "dependencies": [ 248 | "ocaml@4.6.1000@d41d8cd9", "@opam/dune@opam:1.3.0@7b4ddff4", 249 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 250 | ], 251 | "devDependencies": [ 252 | "ocaml@4.6.1000@d41d8cd9", "@opam/dune@opam:1.3.0@7b4ddff4" 253 | ] 254 | }, 255 | "@opam/rresult@opam:0.6.0@4b185e72": { 256 | "id": "@opam/rresult@opam:0.6.0@4b185e72", 257 | "name": "@opam/rresult", 258 | "version": "opam:0.6.0", 259 | "source": { 260 | "type": "install", 261 | "source": [ 262 | "archive:https://opam.ocaml.org/cache/md5/ab/aba88cffa29081714468c2c7bcdf7fb1#md5:aba88cffa29081714468c2c7bcdf7fb1", 263 | "archive:http://erratique.ch/software/rresult/releases/rresult-0.6.0.tbz#md5:aba88cffa29081714468c2c7bcdf7fb1" 264 | ], 265 | "opam": { 266 | "name": "rresult", 267 | "version": "0.6.0", 268 | "path": "esy.lock/opam/rresult.0.6.0" 269 | } 270 | }, 271 | "overrides": [], 272 | "dependencies": [ 273 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 274 | "@opam/result@opam:1.3@d2b8677f", 275 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 276 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 277 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 278 | ], 279 | "devDependencies": [ 280 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f" 281 | ] 282 | }, 283 | "@opam/result@opam:1.3@d2b8677f": { 284 | "id": "@opam/result@opam:1.3@d2b8677f", 285 | "name": "@opam/result", 286 | "version": "opam:1.3", 287 | "source": { 288 | "type": "install", 289 | "source": [ 290 | "archive:https://opam.ocaml.org/cache/md5/4b/4beebefd41f7f899b6eeba7414e7ae01#md5:4beebefd41f7f899b6eeba7414e7ae01", 291 | "archive:https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz#md5:4beebefd41f7f899b6eeba7414e7ae01" 292 | ], 293 | "opam": { 294 | "name": "result", 295 | "version": "1.3", 296 | "path": "esy.lock/opam/result.1.3" 297 | } 298 | }, 299 | "overrides": [], 300 | "dependencies": [ 301 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", 302 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 303 | ], 304 | "devDependencies": [ 305 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05" 306 | ] 307 | }, 308 | "@opam/re@opam:1.9.0@d4d5e13d": { 309 | "id": "@opam/re@opam:1.9.0@d4d5e13d", 310 | "name": "@opam/re", 311 | "version": "opam:1.9.0", 312 | "source": { 313 | "type": "install", 314 | "source": [ 315 | "archive:https://opam.ocaml.org/cache/md5/bd/bddaed4f386a22cace7850c9c7dac296#md5:bddaed4f386a22cace7850c9c7dac296", 316 | "archive:https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz#md5:bddaed4f386a22cace7850c9c7dac296" 317 | ], 318 | "opam": { 319 | "name": "re", 320 | "version": "1.9.0", 321 | "path": "esy.lock/opam/re.1.9.0" 322 | } 323 | }, 324 | "overrides": [], 325 | "dependencies": [ 326 | "ocaml@4.6.1000@d41d8cd9", "@opam/seq@opam:0.2.2@e9144e45", 327 | "@opam/dune@opam:1.3.0@7b4ddff4", "@esy-ocaml/substs@0.0.1@d41d8cd9" 328 | ], 329 | "devDependencies": [ 330 | "ocaml@4.6.1000@d41d8cd9", "@opam/seq@opam:0.2.2@e9144e45", 331 | "@opam/dune@opam:1.3.0@7b4ddff4" 332 | ] 333 | }, 334 | "@opam/ppx_tools_versioned@opam:5.2.2@8d1998c4": { 335 | "id": "@opam/ppx_tools_versioned@opam:5.2.2@8d1998c4", 336 | "name": "@opam/ppx_tools_versioned", 337 | "version": "opam:5.2.2", 338 | "source": { 339 | "type": "install", 340 | "source": [ 341 | "archive:https://opam.ocaml.org/cache/md5/f7/f78a3c2b4cc3b92702e1f7096a6125fa#md5:f78a3c2b4cc3b92702e1f7096a6125fa", 342 | "archive:https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.2.tar.gz#md5:f78a3c2b4cc3b92702e1f7096a6125fa" 343 | ], 344 | "opam": { 345 | "name": "ppx_tools_versioned", 346 | "version": "5.2.2", 347 | "path": "esy.lock/opam/ppx_tools_versioned.5.2.2" 348 | } 349 | }, 350 | "overrides": [], 351 | "dependencies": [ 352 | "ocaml@4.6.1000@d41d8cd9", 353 | "@opam/ocaml-migrate-parsetree@opam:1.1.0@db728bac", 354 | "@opam/dune@opam:1.3.0@7b4ddff4", "@esy-ocaml/substs@0.0.1@d41d8cd9" 355 | ], 356 | "devDependencies": [ 357 | "ocaml@4.6.1000@d41d8cd9", 358 | "@opam/ocaml-migrate-parsetree@opam:1.1.0@db728bac", 359 | "@opam/dune@opam:1.3.0@7b4ddff4" 360 | ] 361 | }, 362 | "@opam/odoc@github:odis-labs/odoc:ocaml-4.06.json#b3960b2f08ad9a0f2130110bc50dcd4e1514027f@d41d8cd9": { 363 | "id": 364 | "@opam/odoc@github:odis-labs/odoc:ocaml-4.06.json#b3960b2f08ad9a0f2130110bc50dcd4e1514027f@d41d8cd9", 365 | "name": "@opam/odoc", 366 | "version": 367 | "github:odis-labs/odoc:ocaml-4.06.json#b3960b2f08ad9a0f2130110bc50dcd4e1514027f", 368 | "source": { 369 | "type": "install", 370 | "source": [ 371 | "github:odis-labs/odoc:ocaml-4.06.json#b3960b2f08ad9a0f2130110bc50dcd4e1514027f" 372 | ] 373 | }, 374 | "overrides": [], 375 | "dependencies": [ 376 | "ocaml@4.6.1000@d41d8cd9", "@opam/tyxml@opam:4.3.0@c1da25f1", 377 | "@opam/sexplib@opam:v0.10.0@456c81bd", 378 | "@opam/result@opam:1.3@d2b8677f", 379 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 380 | "@opam/oasis@opam:0.4.11@7a97cdd4", "@opam/num@opam:1.3@43fe4f7f", 381 | "@opam/markup@opam:0.8.2@87975241", 382 | "@opam/lambdasoup@opam:0.6.3@259c7017", 383 | "@opam/js-build-tools@opam:113.33.04@0e3bc67c", 384 | "@opam/fpath@opam:0.7.2@45477b93", "@opam/dune@opam:1.3.0@7b4ddff4", 385 | "@opam/cppo@opam:1.6.5@f8ff4f1a", 386 | "@opam/cmdliner@opam:1.0.2@1c17346c", 387 | "@opam/bos@opam:0.2.0@df49e63f", 388 | "@opam/bisect_ppx@opam:1.3.4@e81bb392", 389 | "@opam/astring@opam:0.8.3@4e5e17d5", 390 | "@opam/alcotest@opam:0.8.3@2c62a609" 391 | ], 392 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 393 | }, 394 | "@opam/ocamlmod@opam:0.0.9@f749c842": { 395 | "id": "@opam/ocamlmod@opam:0.0.9@f749c842", 396 | "name": "@opam/ocamlmod", 397 | "version": "opam:0.0.9", 398 | "source": { 399 | "type": "install", 400 | "source": [ 401 | "archive:https://opam.ocaml.org/cache/md5/b5/b52bfbab6bb77f9736bde9c2fe81c508#md5:b52bfbab6bb77f9736bde9c2fe81c508", 402 | "archive:https://download.ocamlcore.org/ocamlmod/ocamlmod/0.0.9/ocamlmod-0.0.9.tar.gz#md5:b52bfbab6bb77f9736bde9c2fe81c508" 403 | ], 404 | "opam": { 405 | "name": "ocamlmod", 406 | "version": "0.0.9", 407 | "path": "esy.lock/opam/ocamlmod.0.0.9" 408 | } 409 | }, 410 | "overrides": [], 411 | "dependencies": [ 412 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 413 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 414 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 415 | ], 416 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 417 | }, 418 | "@opam/ocamlify@opam:0.0.1@e0998b7a": { 419 | "id": "@opam/ocamlify@opam:0.0.1@e0998b7a", 420 | "name": "@opam/ocamlify", 421 | "version": "opam:0.0.1", 422 | "source": { 423 | "type": "install", 424 | "source": [ 425 | "archive:https://opam.ocaml.org/cache/md5/bc/bcd97ad0f7203019019997197451dbf0#md5:bcd97ad0f7203019019997197451dbf0", 426 | "archive:https://download.ocamlcore.org/ocamlify/ocamlify/0.0.1/ocamlify-0.0.1.tar.gz#md5:bcd97ad0f7203019019997197451dbf0" 427 | ], 428 | "opam": { 429 | "name": "ocamlify", 430 | "version": "0.0.1", 431 | "path": "esy.lock/opam/ocamlify.0.0.1" 432 | } 433 | }, 434 | "overrides": [ 435 | { 436 | "opamoverride": 437 | "esy.lock/overrides/opam__s__ocamlify_opam__c__0.0.1_opam_override" 438 | } 439 | ], 440 | "dependencies": [ 441 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 442 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 443 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 444 | ], 445 | "devDependencies": [ 446 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a" 447 | ] 448 | }, 449 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a": { 450 | "id": "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 451 | "name": "@opam/ocamlfind", 452 | "version": "opam:1.8.0", 453 | "source": { 454 | "type": "install", 455 | "source": [ 456 | "archive:https://opam.ocaml.org/cache/md5/a7/a710c559667672077a93d34eb6a42e5b#md5:a710c559667672077a93d34eb6a42e5b", 457 | "archive:http://download2.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b", 458 | "archive:http://download.camlcity.org/download/findlib-1.8.0.tar.gz#md5:a710c559667672077a93d34eb6a42e5b" 459 | ], 460 | "opam": { 461 | "name": "ocamlfind", 462 | "version": "1.8.0", 463 | "path": "esy.lock/opam/ocamlfind.1.8.0" 464 | } 465 | }, 466 | "overrides": [ 467 | { 468 | "opamoverride": 469 | "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override" 470 | } 471 | ], 472 | "dependencies": [ 473 | "ocaml@4.6.1000@d41d8cd9", "@opam/conf-m4@opam:1@3b2b148a", 474 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 475 | ], 476 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 477 | }, 478 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03": { 479 | "id": "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 480 | "name": "@opam/ocamlbuild", 481 | "version": "opam:0.14.0", 482 | "source": { 483 | "type": "install", 484 | "source": [ 485 | "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", 486 | "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" 487 | ], 488 | "opam": { 489 | "name": "ocamlbuild", 490 | "version": "0.14.0", 491 | "path": "esy.lock/opam/ocamlbuild.0.14.0" 492 | } 493 | }, 494 | "overrides": [ 495 | { 496 | "opamoverride": 497 | "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" 498 | } 499 | ], 500 | "dependencies": [ 501 | "ocaml@4.6.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 502 | ], 503 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 504 | }, 505 | "@opam/ocaml-migrate-parsetree@opam:1.1.0@db728bac": { 506 | "id": "@opam/ocaml-migrate-parsetree@opam:1.1.0@db728bac", 507 | "name": "@opam/ocaml-migrate-parsetree", 508 | "version": "opam:1.1.0", 509 | "source": { 510 | "type": "install", 511 | "source": [ 512 | "archive:https://opam.ocaml.org/cache/md5/7d/7dd4808e27af98065f63604c9658d311#md5:7dd4808e27af98065f63604c9658d311", 513 | "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.1.0/ocaml-migrate-parsetree-1.1.0.tbz#md5:7dd4808e27af98065f63604c9658d311" 514 | ], 515 | "opam": { 516 | "name": "ocaml-migrate-parsetree", 517 | "version": "1.1.0", 518 | "path": "esy.lock/opam/ocaml-migrate-parsetree.1.1.0" 519 | } 520 | }, 521 | "overrides": [ 522 | { 523 | "opamoverride": 524 | "esy.lock/overrides/opam__s__ocaml_migrate_parsetree_opam__c__1.1.0_opam_override" 525 | } 526 | ], 527 | "dependencies": [ 528 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f", 529 | "@opam/dune@opam:1.3.0@7b4ddff4", "@esy-ocaml/substs@0.0.1@d41d8cd9" 530 | ], 531 | "devDependencies": [ 532 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f", 533 | "@opam/dune@opam:1.3.0@7b4ddff4" 534 | ] 535 | }, 536 | "@opam/oasis@opam:0.4.11@7a97cdd4": { 537 | "id": "@opam/oasis@opam:0.4.11@7a97cdd4", 538 | "name": "@opam/oasis", 539 | "version": "opam:0.4.11", 540 | "source": { 541 | "type": "install", 542 | "source": [ 543 | "archive:https://opam.ocaml.org/cache/md5/98/98492f4657c2c5b30e3b1bc945e58419#md5:98492f4657c2c5b30e3b1bc945e58419", 544 | "archive:https://download.ocamlcore.org/oasis/oasis/0.4.11/oasis-0.4.11.tar.gz#md5:98492f4657c2c5b30e3b1bc945e58419" 545 | ], 546 | "opam": { 547 | "name": "oasis", 548 | "version": "0.4.11", 549 | "path": "esy.lock/opam/oasis.0.4.11" 550 | } 551 | }, 552 | "overrides": [ 553 | { 554 | "opamoverride": 555 | "esy.lock/overrides/opam__s__oasis_opam__c__0.4.11_opam_override" 556 | } 557 | ], 558 | "dependencies": [ 559 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlmod@opam:0.0.9@f749c842", 560 | "@opam/ocamlify@opam:0.0.1@e0998b7a", 561 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 562 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 563 | "@opam/base-unix@opam:base@87d0b2eb", 564 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 565 | ], 566 | "devDependencies": [ 567 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 568 | "@opam/base-unix@opam:base@87d0b2eb" 569 | ] 570 | }, 571 | "@opam/num@opam:1.3@43fe4f7f": { 572 | "id": "@opam/num@opam:1.3@43fe4f7f", 573 | "name": "@opam/num", 574 | "version": "opam:1.3", 575 | "source": { 576 | "type": "install", 577 | "source": [ 578 | "archive:https://opam.ocaml.org/cache/md5/f0/f074e12325e84ebc883b37e5db10403d#md5:f074e12325e84ebc883b37e5db10403d", 579 | "archive:https://github.com/ocaml/num/archive/v1.3.tar.gz#md5:f074e12325e84ebc883b37e5db10403d" 580 | ], 581 | "opam": { 582 | "name": "num", 583 | "version": "1.3", 584 | "path": "esy.lock/opam/num.1.3" 585 | } 586 | }, 587 | "overrides": [ 588 | { 589 | "opamoverride": 590 | "esy.lock/overrides/opam__s__num_opam__c__1.3_opam_override" 591 | } 592 | ], 593 | "dependencies": [ 594 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 595 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 596 | ], 597 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 598 | }, 599 | "@opam/merlin@opam:3.2.2@e3edecdd": { 600 | "id": "@opam/merlin@opam:3.2.2@e3edecdd", 601 | "name": "@opam/merlin", 602 | "version": "opam:3.2.2", 603 | "source": { 604 | "type": "install", 605 | "source": [ 606 | "archive:https://opam.ocaml.org/cache/md5/ed/ede35b65f8ac9c440cfade5445662c54#md5:ede35b65f8ac9c440cfade5445662c54", 607 | "archive:https://github.com/ocaml/merlin/releases/download/v3.2.2/merlin-v3.2.2.tbz#md5:ede35b65f8ac9c440cfade5445662c54" 608 | ], 609 | "opam": { 610 | "name": "merlin", 611 | "version": "3.2.2", 612 | "path": "esy.lock/opam/merlin.3.2.2" 613 | } 614 | }, 615 | "overrides": [], 616 | "dependencies": [ 617 | "ocaml@4.6.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 618 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 619 | "@opam/dune@opam:1.3.0@7b4ddff4", "@esy-ocaml/substs@0.0.1@d41d8cd9" 620 | ], 621 | "devDependencies": [ 622 | "ocaml@4.6.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@7056d985", 623 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 624 | "@opam/dune@opam:1.3.0@7b4ddff4" 625 | ] 626 | }, 627 | "@opam/markup@opam:0.8.2@87975241": { 628 | "id": "@opam/markup@opam:0.8.2@87975241", 629 | "name": "@opam/markup", 630 | "version": "opam:0.8.2", 631 | "source": { 632 | "type": "install", 633 | "source": [ 634 | "archive:https://opam.ocaml.org/cache/md5/0f/0fe6b3a04d941ca40a5efdd082f1183d#md5:0fe6b3a04d941ca40a5efdd082f1183d", 635 | "archive:https://github.com/aantron/markup.ml/archive/0.8.2.tar.gz#md5:0fe6b3a04d941ca40a5efdd082f1183d" 636 | ], 637 | "opam": { 638 | "name": "markup", 639 | "version": "0.8.2", 640 | "path": "esy.lock/opam/markup.0.8.2" 641 | } 642 | }, 643 | "overrides": [], 644 | "dependencies": [ 645 | "ocaml@4.6.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", 646 | "@opam/uchar@opam:0.0.2@c8218eea", "@opam/dune@opam:1.3.0@7b4ddff4", 647 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 648 | ], 649 | "devDependencies": [ 650 | "ocaml@4.6.1000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", 651 | "@opam/uchar@opam:0.0.2@c8218eea", "@opam/dune@opam:1.3.0@7b4ddff4" 652 | ] 653 | }, 654 | "@opam/logs@opam:0.7.0@1d03143e": { 655 | "id": "@opam/logs@opam:0.7.0@1d03143e", 656 | "name": "@opam/logs", 657 | "version": "opam:0.7.0", 658 | "source": { 659 | "type": "install", 660 | "source": [ 661 | "archive:https://opam.ocaml.org/cache/md5/2b/2bf021ca13331775e33cf34ab60246f7#md5:2bf021ca13331775e33cf34ab60246f7", 662 | "archive:https://erratique.ch/software/logs/releases/logs-0.7.0.tbz#md5:2bf021ca13331775e33cf34ab60246f7" 663 | ], 664 | "opam": { 665 | "name": "logs", 666 | "version": "0.7.0", 667 | "path": "esy.lock/opam/logs.0.7.0" 668 | } 669 | }, 670 | "overrides": [], 671 | "dependencies": [ 672 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 673 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 674 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 675 | "@opam/fmt@opam:0.8.8@01c3a23c", 676 | "@opam/cmdliner@opam:1.0.2@1c17346c", 677 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 678 | ], 679 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 680 | }, 681 | "@opam/lambdasoup@opam:0.6.3@259c7017": { 682 | "id": "@opam/lambdasoup@opam:0.6.3@259c7017", 683 | "name": "@opam/lambdasoup", 684 | "version": "opam:0.6.3", 685 | "source": { 686 | "type": "install", 687 | "source": [ 688 | "archive:https://opam.ocaml.org/cache/md5/89/89f0596aa05a6e7a33bf9d74797905f1#md5:89f0596aa05a6e7a33bf9d74797905f1", 689 | "archive:https://github.com/aantron/lambda-soup/archive/0.6.3.tar.gz#md5:89f0596aa05a6e7a33bf9d74797905f1" 690 | ], 691 | "opam": { 692 | "name": "lambdasoup", 693 | "version": "0.6.3", 694 | "path": "esy.lock/opam/lambdasoup.0.6.3" 695 | } 696 | }, 697 | "overrides": [], 698 | "dependencies": [ 699 | "ocaml@4.6.1000@d41d8cd9", "@opam/markup@opam:0.8.2@87975241", 700 | "@opam/jbuilder@opam:transition@20522f05", 701 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 702 | ], 703 | "devDependencies": [ 704 | "ocaml@4.6.1000@d41d8cd9", "@opam/markup@opam:0.8.2@87975241", 705 | "@opam/jbuilder@opam:transition@20522f05" 706 | ] 707 | }, 708 | "@opam/js-build-tools@opam:113.33.04@0e3bc67c": { 709 | "id": "@opam/js-build-tools@opam:113.33.04@0e3bc67c", 710 | "name": "@opam/js-build-tools", 711 | "version": "opam:113.33.04", 712 | "source": { 713 | "type": "install", 714 | "source": [ 715 | "archive:https://opam.ocaml.org/cache/md5/25/25e2657622a2be4dac42adc2ea148999#md5:25e2657622a2be4dac42adc2ea148999", 716 | "archive:https://ocaml.janestreet.com/ocaml-core/113.33/files/js-build-tools-113.33.04.tar.gz#md5:25e2657622a2be4dac42adc2ea148999" 717 | ], 718 | "opam": { 719 | "name": "js-build-tools", 720 | "version": "113.33.04", 721 | "path": "esy.lock/opam/js-build-tools.113.33.04" 722 | } 723 | }, 724 | "overrides": [], 725 | "dependencies": [ 726 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 727 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 728 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 729 | ], 730 | "devDependencies": [ 731 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03" 732 | ] 733 | }, 734 | "@opam/jbuilder@opam:transition@20522f05": { 735 | "id": "@opam/jbuilder@opam:transition@20522f05", 736 | "name": "@opam/jbuilder", 737 | "version": "opam:transition", 738 | "source": { 739 | "type": "install", 740 | "source": [ "no-source:" ], 741 | "opam": { 742 | "name": "jbuilder", 743 | "version": "transition", 744 | "path": "esy.lock/opam/jbuilder.transition" 745 | } 746 | }, 747 | "overrides": [], 748 | "dependencies": [ 749 | "ocaml@4.6.1000@d41d8cd9", "@opam/dune@opam:1.3.0@7b4ddff4", 750 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 751 | ], 752 | "devDependencies": [ 753 | "ocaml@4.6.1000@d41d8cd9", "@opam/dune@opam:1.3.0@7b4ddff4" 754 | ] 755 | }, 756 | "@opam/fpath@opam:0.7.2@45477b93": { 757 | "id": "@opam/fpath@opam:0.7.2@45477b93", 758 | "name": "@opam/fpath", 759 | "version": "opam:0.7.2", 760 | "source": { 761 | "type": "install", 762 | "source": [ 763 | "archive:https://opam.ocaml.org/cache/md5/52/52c7ecb0bf180088336f3c645875fa41#md5:52c7ecb0bf180088336f3c645875fa41", 764 | "archive:http://erratique.ch/software/fpath/releases/fpath-0.7.2.tbz#md5:52c7ecb0bf180088336f3c645875fa41" 765 | ], 766 | "opam": { 767 | "name": "fpath", 768 | "version": "0.7.2", 769 | "path": "esy.lock/opam/fpath.0.7.2" 770 | } 771 | }, 772 | "overrides": [], 773 | "dependencies": [ 774 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 775 | "@opam/result@opam:1.3@d2b8677f", 776 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 777 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 778 | "@opam/astring@opam:0.8.3@4e5e17d5", 779 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 780 | ], 781 | "devDependencies": [ 782 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f", 783 | "@opam/astring@opam:0.8.3@4e5e17d5" 784 | ] 785 | }, 786 | "@opam/fmt@opam:0.8.8@01c3a23c": { 787 | "id": "@opam/fmt@opam:0.8.8@01c3a23c", 788 | "name": "@opam/fmt", 789 | "version": "opam:0.8.8", 790 | "source": { 791 | "type": "install", 792 | "source": [ 793 | "archive:https://opam.ocaml.org/cache/md5/47/473490fcfdf3ff0a8ccee226b873d4b2#md5:473490fcfdf3ff0a8ccee226b873d4b2", 794 | "archive:https://erratique.ch/software/fmt/releases/fmt-0.8.8.tbz#md5:473490fcfdf3ff0a8ccee226b873d4b2" 795 | ], 796 | "opam": { 797 | "name": "fmt", 798 | "version": "0.8.8", 799 | "path": "esy.lock/opam/fmt.0.8.8" 800 | } 801 | }, 802 | "overrides": [], 803 | "dependencies": [ 804 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 805 | "@opam/stdlib-shims@opam:0.1.0@d957c903", 806 | "@opam/seq@opam:0.2.2@e9144e45", 807 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 808 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 809 | "@opam/cmdliner@opam:1.0.2@1c17346c", 810 | "@opam/base-unix@opam:base@87d0b2eb", 811 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 812 | ], 813 | "devDependencies": [ 814 | "ocaml@4.6.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.1.0@d957c903", 815 | "@opam/seq@opam:0.2.2@e9144e45" 816 | ] 817 | }, 818 | "@opam/easy-format@opam:1.3.1@54402780": { 819 | "id": "@opam/easy-format@opam:1.3.1@54402780", 820 | "name": "@opam/easy-format", 821 | "version": "opam:1.3.1", 822 | "source": { 823 | "type": "install", 824 | "source": [ 825 | "archive:https://opam.ocaml.org/cache/md5/4e/4e163700fb88fdcd6b8976c3a216c8ea#md5:4e163700fb88fdcd6b8976c3a216c8ea", 826 | "archive:https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz#md5:4e163700fb88fdcd6b8976c3a216c8ea" 827 | ], 828 | "opam": { 829 | "name": "easy-format", 830 | "version": "1.3.1", 831 | "path": "esy.lock/opam/easy-format.1.3.1" 832 | } 833 | }, 834 | "overrides": [], 835 | "dependencies": [ 836 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", 837 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 838 | ], 839 | "devDependencies": [ 840 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05" 841 | ] 842 | }, 843 | "@opam/dune@opam:1.3.0@7b4ddff4": { 844 | "id": "@opam/dune@opam:1.3.0@7b4ddff4", 845 | "name": "@opam/dune", 846 | "version": "opam:1.3.0", 847 | "source": { 848 | "type": "install", 849 | "source": [ 850 | "archive:https://opam.ocaml.org/cache/md5/d7/d7c926bd6b7549cb54d5463aaccf0c91#md5:d7c926bd6b7549cb54d5463aaccf0c91", 851 | "archive:https://github.com/ocaml/dune/releases/download/1.3.0/dune-1.3.0.tbz#md5:d7c926bd6b7549cb54d5463aaccf0c91" 852 | ], 853 | "opam": { 854 | "name": "dune", 855 | "version": "1.3.0", 856 | "path": "esy.lock/opam/dune.1.3.0" 857 | } 858 | }, 859 | "overrides": [], 860 | "dependencies": [ 861 | "ocaml@4.6.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" 862 | ], 863 | "devDependencies": [ "ocaml@4.6.1000@d41d8cd9" ] 864 | }, 865 | "@opam/cppo@opam:1.6.5@f8ff4f1a": { 866 | "id": "@opam/cppo@opam:1.6.5@f8ff4f1a", 867 | "name": "@opam/cppo", 868 | "version": "opam:1.6.5", 869 | "source": { 870 | "type": "install", 871 | "source": [ 872 | "archive:https://opam.ocaml.org/cache/md5/1c/1cd25741d31417995b0973fe0b6f6c82#md5:1cd25741d31417995b0973fe0b6f6c82", 873 | "archive:https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz#md5:1cd25741d31417995b0973fe0b6f6c82" 874 | ], 875 | "opam": { 876 | "name": "cppo", 877 | "version": "1.6.5", 878 | "path": "esy.lock/opam/cppo.1.6.5" 879 | } 880 | }, 881 | "overrides": [], 882 | "dependencies": [ 883 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", 884 | "@opam/base-unix@opam:base@87d0b2eb", 885 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 886 | ], 887 | "devDependencies": [ 888 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", 889 | "@opam/base-unix@opam:base@87d0b2eb" 890 | ] 891 | }, 892 | "@opam/conf-which@opam:1@61ea698f": { 893 | "id": "@opam/conf-which@opam:1@61ea698f", 894 | "name": "@opam/conf-which", 895 | "version": "opam:1", 896 | "source": { 897 | "type": "install", 898 | "source": [ "no-source:" ], 899 | "opam": { 900 | "name": "conf-which", 901 | "version": "1", 902 | "path": "esy.lock/opam/conf-which.1" 903 | } 904 | }, 905 | "overrides": [], 906 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 907 | "devDependencies": [] 908 | }, 909 | "@opam/conf-m4@opam:1@3b2b148a": { 910 | "id": "@opam/conf-m4@opam:1@3b2b148a", 911 | "name": "@opam/conf-m4", 912 | "version": "opam:1", 913 | "source": { 914 | "type": "install", 915 | "source": [ "no-source:" ], 916 | "opam": { 917 | "name": "conf-m4", 918 | "version": "1", 919 | "path": "esy.lock/opam/conf-m4.1" 920 | } 921 | }, 922 | "overrides": [], 923 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 924 | "devDependencies": [] 925 | }, 926 | "@opam/cmdliner@opam:1.0.2@1c17346c": { 927 | "id": "@opam/cmdliner@opam:1.0.2@1c17346c", 928 | "name": "@opam/cmdliner", 929 | "version": "opam:1.0.2", 930 | "source": { 931 | "type": "install", 932 | "source": [ 933 | "archive:https://opam.ocaml.org/cache/md5/ab/ab2f0130e88e8dcd723ac6154c98a881#md5:ab2f0130e88e8dcd723ac6154c98a881", 934 | "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.2.tbz#md5:ab2f0130e88e8dcd723ac6154c98a881" 935 | ], 936 | "opam": { 937 | "name": "cmdliner", 938 | "version": "1.0.2", 939 | "path": "esy.lock/opam/cmdliner.1.0.2" 940 | } 941 | }, 942 | "overrides": [], 943 | "dependencies": [ 944 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 945 | "@opam/result@opam:1.3@d2b8677f", 946 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 947 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 948 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 949 | ], 950 | "devDependencies": [ 951 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f" 952 | ] 953 | }, 954 | "@opam/bos@opam:0.2.0@df49e63f": { 955 | "id": "@opam/bos@opam:0.2.0@df49e63f", 956 | "name": "@opam/bos", 957 | "version": "opam:0.2.0", 958 | "source": { 959 | "type": "install", 960 | "source": [ 961 | "archive:https://opam.ocaml.org/cache/md5/ae/aeae7447567db459c856ee41b5a66fd2#md5:aeae7447567db459c856ee41b5a66fd2", 962 | "archive:http://erratique.ch/software/bos/releases/bos-0.2.0.tbz#md5:aeae7447567db459c856ee41b5a66fd2" 963 | ], 964 | "opam": { 965 | "name": "bos", 966 | "version": "0.2.0", 967 | "path": "esy.lock/opam/bos.0.2.0" 968 | } 969 | }, 970 | "overrides": [], 971 | "dependencies": [ 972 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 973 | "@opam/rresult@opam:0.6.0@4b185e72", 974 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 975 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 976 | "@opam/logs@opam:0.7.0@1d03143e", "@opam/fpath@opam:0.7.2@45477b93", 977 | "@opam/fmt@opam:0.8.8@01c3a23c", 978 | "@opam/base-unix@opam:base@87d0b2eb", 979 | "@opam/astring@opam:0.8.3@4e5e17d5", 980 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 981 | ], 982 | "devDependencies": [ 983 | "ocaml@4.6.1000@d41d8cd9", "@opam/rresult@opam:0.6.0@4b185e72", 984 | "@opam/logs@opam:0.7.0@1d03143e", "@opam/fpath@opam:0.7.2@45477b93", 985 | "@opam/fmt@opam:0.8.8@01c3a23c", 986 | "@opam/base-unix@opam:base@87d0b2eb", 987 | "@opam/astring@opam:0.8.3@4e5e17d5" 988 | ] 989 | }, 990 | "@opam/bisect_ppx@opam:1.3.4@e81bb392": { 991 | "id": "@opam/bisect_ppx@opam:1.3.4@e81bb392", 992 | "name": "@opam/bisect_ppx", 993 | "version": "opam:1.3.4", 994 | "source": { 995 | "type": "install", 996 | "source": [ 997 | "archive:https://opam.ocaml.org/cache/md5/73/7371bd9a98c43b952bfa1ae2d374af3d#md5:7371bd9a98c43b952bfa1ae2d374af3d", 998 | "archive:https://github.com/aantron/bisect_ppx/archive/1.3.4.tar.gz#md5:7371bd9a98c43b952bfa1ae2d374af3d" 999 | ], 1000 | "opam": { 1001 | "name": "bisect_ppx", 1002 | "version": "1.3.4", 1003 | "path": "esy.lock/opam/bisect_ppx.1.3.4" 1004 | } 1005 | }, 1006 | "overrides": [], 1007 | "dependencies": [ 1008 | "ocaml@4.6.1000@d41d8cd9", 1009 | "@opam/ppx_tools_versioned@opam:5.2.2@8d1998c4", 1010 | "@opam/ocaml-migrate-parsetree@opam:1.1.0@db728bac", 1011 | "@opam/jbuilder@opam:transition@20522f05", 1012 | "@opam/base-unix@opam:base@87d0b2eb", 1013 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1014 | ], 1015 | "devDependencies": [ 1016 | "ocaml@4.6.1000@d41d8cd9", 1017 | "@opam/ppx_tools_versioned@opam:5.2.2@8d1998c4", 1018 | "@opam/ocaml-migrate-parsetree@opam:1.1.0@db728bac", 1019 | "@opam/jbuilder@opam:transition@20522f05", 1020 | "@opam/base-unix@opam:base@87d0b2eb" 1021 | ] 1022 | }, 1023 | "@opam/biniou@opam:1.2.0@b5796419": { 1024 | "id": "@opam/biniou@opam:1.2.0@b5796419", 1025 | "name": "@opam/biniou", 1026 | "version": "opam:1.2.0", 1027 | "source": { 1028 | "type": "install", 1029 | "source": [ 1030 | "archive:https://opam.ocaml.org/cache/md5/f3/f3e92358e832ed94eaf23ce622ccc2f9#md5:f3e92358e832ed94eaf23ce622ccc2f9", 1031 | "archive:https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz#md5:f3e92358e832ed94eaf23ce622ccc2f9" 1032 | ], 1033 | "opam": { 1034 | "name": "biniou", 1035 | "version": "1.2.0", 1036 | "path": "esy.lock/opam/biniou.1.2.0" 1037 | } 1038 | }, 1039 | "overrides": [], 1040 | "dependencies": [ 1041 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", 1042 | "@opam/easy-format@opam:1.3.1@54402780", 1043 | "@opam/conf-which@opam:1@61ea698f", 1044 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1045 | ], 1046 | "devDependencies": [ 1047 | "ocaml@4.6.1000@d41d8cd9", "@opam/jbuilder@opam:transition@20522f05", 1048 | "@opam/easy-format@opam:1.3.1@54402780" 1049 | ] 1050 | }, 1051 | "@opam/base-unix@opam:base@87d0b2eb": { 1052 | "id": "@opam/base-unix@opam:base@87d0b2eb", 1053 | "name": "@opam/base-unix", 1054 | "version": "opam:base", 1055 | "source": { 1056 | "type": "install", 1057 | "source": [ "no-source:" ], 1058 | "opam": { 1059 | "name": "base-unix", 1060 | "version": "base", 1061 | "path": "esy.lock/opam/base-unix.base" 1062 | } 1063 | }, 1064 | "overrides": [], 1065 | "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], 1066 | "devDependencies": [] 1067 | }, 1068 | "@opam/base-bytes@opam:base@19d0c2ff": { 1069 | "id": "@opam/base-bytes@opam:base@19d0c2ff", 1070 | "name": "@opam/base-bytes", 1071 | "version": "opam:base", 1072 | "source": { 1073 | "type": "install", 1074 | "source": [ "no-source:" ], 1075 | "opam": { 1076 | "name": "base-bytes", 1077 | "version": "base", 1078 | "path": "esy.lock/opam/base-bytes.base" 1079 | } 1080 | }, 1081 | "overrides": [], 1082 | "dependencies": [ 1083 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 1084 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1085 | ], 1086 | "devDependencies": [ 1087 | "ocaml@4.6.1000@d41d8cd9", "@opam/ocamlfind@opam:1.8.0@ad1ed40a" 1088 | ] 1089 | }, 1090 | "@opam/astring@opam:0.8.3@4e5e17d5": { 1091 | "id": "@opam/astring@opam:0.8.3@4e5e17d5", 1092 | "name": "@opam/astring", 1093 | "version": "opam:0.8.3", 1094 | "source": { 1095 | "type": "install", 1096 | "source": [ 1097 | "archive:https://opam.ocaml.org/cache/md5/c5/c5bf6352b9ac27fbeab342740f4fa870#md5:c5bf6352b9ac27fbeab342740f4fa870", 1098 | "archive:http://erratique.ch/software/astring/releases/astring-0.8.3.tbz#md5:c5bf6352b9ac27fbeab342740f4fa870" 1099 | ], 1100 | "opam": { 1101 | "name": "astring", 1102 | "version": "0.8.3", 1103 | "path": "esy.lock/opam/astring.0.8.3" 1104 | } 1105 | }, 1106 | "overrides": [], 1107 | "dependencies": [ 1108 | "ocaml@4.6.1000@d41d8cd9", "@opam/topkg@opam:1.0.1@a42c631e", 1109 | "@opam/ocamlfind@opam:1.8.0@ad1ed40a", 1110 | "@opam/ocamlbuild@opam:0.14.0@6ac75d03", 1111 | "@opam/base-bytes@opam:base@19d0c2ff", 1112 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1113 | ], 1114 | "devDependencies": [ 1115 | "ocaml@4.6.1000@d41d8cd9", "@opam/base-bytes@opam:base@19d0c2ff" 1116 | ] 1117 | }, 1118 | "@opam/alcotest@opam:0.8.3@2c62a609": { 1119 | "id": "@opam/alcotest@opam:0.8.3@2c62a609", 1120 | "name": "@opam/alcotest", 1121 | "version": "opam:0.8.3", 1122 | "source": { 1123 | "type": "install", 1124 | "source": [ 1125 | "archive:https://opam.ocaml.org/cache/md5/59/597e6bb271bd42062f95aa67afdb9185#md5:597e6bb271bd42062f95aa67afdb9185", 1126 | "archive:https://github.com/mirage/alcotest/releases/download/0.8.3/alcotest-0.8.3.tbz#md5:597e6bb271bd42062f95aa67afdb9185" 1127 | ], 1128 | "opam": { 1129 | "name": "alcotest", 1130 | "version": "0.8.3", 1131 | "path": "esy.lock/opam/alcotest.0.8.3" 1132 | } 1133 | }, 1134 | "overrides": [], 1135 | "dependencies": [ 1136 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f", 1137 | "@opam/jbuilder@opam:transition@20522f05", 1138 | "@opam/fmt@opam:0.8.8@01c3a23c", 1139 | "@opam/cmdliner@opam:1.0.2@1c17346c", 1140 | "@opam/astring@opam:0.8.3@4e5e17d5", 1141 | "@esy-ocaml/substs@0.0.1@d41d8cd9" 1142 | ], 1143 | "devDependencies": [ 1144 | "ocaml@4.6.1000@d41d8cd9", "@opam/result@opam:1.3@d2b8677f", 1145 | "@opam/jbuilder@opam:transition@20522f05", 1146 | "@opam/fmt@opam:0.8.8@01c3a23c", 1147 | "@opam/cmdliner@opam:1.0.2@1c17346c", 1148 | "@opam/astring@opam:0.8.3@4e5e17d5" 1149 | ] 1150 | }, 1151 | "@esy-ocaml/substs@0.0.1@d41d8cd9": { 1152 | "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", 1153 | "name": "@esy-ocaml/substs", 1154 | "version": "0.0.1", 1155 | "source": { 1156 | "type": "install", 1157 | "source": [ 1158 | "archive:https://registry.npmjs.org/@esy-ocaml/substs/-/substs-0.0.1.tgz#sha1:59ebdbbaedcda123fc7ed8fb2b302b7d819e9a46" 1159 | ] 1160 | }, 1161 | "overrides": [], 1162 | "dependencies": [], 1163 | "devDependencies": [] 1164 | } 1165 | } 1166 | } -------------------------------------------------------------------------------- /esy.lock/opam/alcotest.0.8.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "thomas@gazagnaire.org" 3 | authors: "Thomas Gazagnaire" 4 | homepage: "https://github.com/mirage/alcotest/" 5 | dev-repo: "git+https://github.com/mirage/alcotest.git" 6 | bug-reports: "https://github.com/mirage/alcotest/issues/" 7 | license: "ISC" 8 | doc: "https://mirage.github.io/alcotest/" 9 | 10 | build: [ 11 | ["jbuilder" "subst" "-p" name] {pinned} 12 | ["jbuilder" "build" "-p" name "-j" jobs] 13 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} 14 | ] 15 | depends: [ 16 | "ocaml" {>= "4.02.3"} 17 | "jbuilder" {>= "1.0+beta10"} 18 | "fmt" {>= "0.8.0"} 19 | "astring" 20 | "result" {< "1.5"} 21 | "cmdliner" 22 | ] 23 | synopsis: "Alcotest is a lightweight and colourful test framework." 24 | description: """ 25 | Alcotest exposes simple interface to perform unit tests. It exposes 26 | a simple TESTABLE module type, a check function to assert test 27 | predicates and a run function to perform a list of unit -> unit 28 | test callbacks. 29 | 30 | Alcotest provides a quiet and colorful output where only faulty runs 31 | are fully displayed at the end of the run (with the full logs ready to 32 | inspect), with a simple (yet expressive) query language to select the 33 | tests to run.""" 34 | url { 35 | src: 36 | "https://github.com/mirage/alcotest/releases/download/0.8.3/alcotest-0.8.3.tbz" 37 | checksum: "md5=597e6bb271bd42062f95aa67afdb9185" 38 | } 39 | -------------------------------------------------------------------------------- /esy.lock/opam/astring.0.8.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/astring" 5 | doc: "http://erratique.ch/software/astring/doc" 6 | dev-repo: "git+http://erratique.ch/repos/astring.git" 7 | bug-reports: "https://github.com/dbuenzli/astring/issues" 8 | tags: [ "string" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "base-bytes" 16 | ] 17 | build: [[ 18 | "ocaml" "pkg/pkg.ml" "build" 19 | "--pinned" "%{pinned}%" ]] 20 | synopsis: "Alternative String module for OCaml" 21 | description: """ 22 | Astring exposes an alternative `String` module for OCaml. This module 23 | tries to balance minimality and expressiveness for basic, index-free, 24 | string processing and provides types and functions for substrings, 25 | string sets and string maps. 26 | 27 | Remaining compatible with the OCaml `String` module is a non-goal. The 28 | `String` module exposed by Astring has exception safe functions, 29 | removes deprecated and rarely used functions, alters some signatures 30 | and names, adds a few missing functions and fully exploits OCaml's 31 | newfound string immutability. 32 | 33 | Astring depends only on the OCaml standard library. It is distributed 34 | under the ISC license.""" 35 | url { 36 | src: "http://erratique.ch/software/astring/releases/astring-0.8.3.tbz" 37 | checksum: "md5=c5bf6352b9ac27fbeab342740f4fa870" 38 | } 39 | -------------------------------------------------------------------------------- /esy.lock/opam/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-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" {>= "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/bisect_ppx.1.3.4/opam: -------------------------------------------------------------------------------- 1 | version: "1.3.4" 2 | opam-version: "2.0" 3 | maintainer: [ 4 | "Anton Bachin " 5 | "Leonid Rozenberg " 6 | ] 7 | authors: [ 8 | "Xavier Clerc " 9 | "Leonid Rozenberg " 10 | "Anton Bachin " 11 | ] 12 | license: "MPL-2.0" 13 | homepage: "https://github.com/aantron/bisect_ppx" 14 | bug-reports: "https://github.com/aantron/bisect_ppx/issues" 15 | dev-repo: "git+https://github.com/aantron/bisect_ppx.git" 16 | depends: [ 17 | "ocaml" {>= "4.02.0"} 18 | "base-unix" 19 | "jbuilder" {>= "1.0+beta13"} 20 | "ocamlfind" {with-test} 21 | "ocaml-migrate-parsetree" {>= "1.0.3"} 22 | "ounit" {with-test} 23 | "ppx_tools_versioned" 24 | ] 25 | conflicts: [ 26 | "ocveralls" {<= "0.3.2"} 27 | ] 28 | # Note that Bisect_ppx effectively requires 4.02.3, because Jbuilder requires 29 | # it. 4.02.0 is the natural constraint of Bisect_ppx. 30 | build: [ 31 | ["jbuilder" "build" "-p" name "-j" jobs] 32 | ] 33 | synopsis: "Code coverage for OCaml" 34 | description: """ 35 | Bisect_ppx helps you test thoroughly. It is a small preprocessor that inserts 36 | instrumentation at places in your code, such as if-then-else and match 37 | expressions. After you run tests, Bisect_ppx gives a nice HTML report showing 38 | which places were visited and which were missed. 39 | 40 | Usage is simple - add package bisect_ppx when building tests, then run the 41 | report tool on the generated visitation files. 42 | 43 | This is an advanced fork of the original Bisect coverage tool. It has many 44 | improvements and updates. 45 | 46 | - Much more thorough code instrumentation, so you can find more gaps in your 47 | testing. 48 | - Fast operation by default. 49 | - More legible and appealing HTML reports. 50 | - Various bugfixes. 51 | - No camlp4 dependency.""" 52 | url { 53 | src: "https://github.com/aantron/bisect_ppx/archive/1.3.4.tar.gz" 54 | checksum: "md5=7371bd9a98c43b952bfa1ae2d374af3d" 55 | } 56 | -------------------------------------------------------------------------------- /esy.lock/opam/bos.0.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/bos" 5 | doc: "http://erratique.ch/software/bos/doc" 6 | dev-repo: "git+http://erratique.ch/repos/bos.git" 7 | bug-reports: "https://github.com/dbuenzli/bos/issues" 8 | tags: [ "os" "system" "cli" "command" "file" "path" "log" "unix" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | "base-unix" 16 | "rresult" {>= "0.4.0"} 17 | "astring" 18 | "fpath" 19 | "fmt" {>= "0.8.0"} 20 | "logs" 21 | "mtime" {with-test} 22 | ] 23 | build: [[ 24 | "ocaml" "pkg/pkg.ml" "build" 25 | "--dev-pkg" "%{pinned}%" ]] 26 | synopsis: "Basic OS interaction for OCaml" 27 | description: """ 28 | Bos provides support for basic and robust interaction with the 29 | operating system in OCaml. It has functions to access the process 30 | environment, parse command line arguments, interact with the file 31 | system and run command line programs. 32 | 33 | Bos works equally well on POSIX and Windows operating systems. 34 | 35 | Bos depends on [Rresult][rresult], [Astring][astring], [Fmt][fmt], 36 | [Fpath][fpath] and [Logs][logs] and the OCaml Unix library. It is 37 | distributed under the ISC license. 38 | 39 | [rresult]: http://erratique.ch/software/rresult 40 | [astring]: http://erratique.ch/software/astring 41 | [fmt]: http://erratique.ch/software/fmt 42 | [fpath]: http://erratique.ch/software/fpath 43 | [logs]: http://erratique.ch/software/logs""" 44 | url { 45 | src: "http://erratique.ch/software/bos/releases/bos-0.2.0.tbz" 46 | checksum: "md5=aeae7447567db459c856ee41b5a66fd2" 47 | } 48 | -------------------------------------------------------------------------------- /esy.lock/opam/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" {>= "0.8.1" & build} 15 | "result" {< "1.5"} 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/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.0-only" 7 | build: [["sh" "-exc" "echo | m4"]] 8 | depexts: [ 9 | ["m4"] {os-family = "debian"} 10 | ["m4"] {os-distribution = "fedora"} 11 | ["m4"] {os-distribution = "rhel"} 12 | ["m4"] {os-distribution = "centos"} 13 | ["m4"] {os-distribution = "alpine"} 14 | ["m4"] {os-distribution = "nixos"} 15 | ["m4"] {os-family = "suse"} 16 | ["m4"] {os-distribution = "ol"} 17 | ["m4"] {os-distribution = "arch"} 18 | ] 19 | synopsis: "Virtual package relying on m4" 20 | description: 21 | "This package can only install if the m4 binary is installed on the system." 22 | flags: conf 23 | -------------------------------------------------------------------------------- /esy.lock/opam/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.0-or-later" 7 | build: [["which" "which"]] 8 | depexts: [ 9 | ["which"] {os-distribution = "centos"} 10 | ["which"] {os-distribution = "fedora"} 11 | ["which"] {os-family = "suse"} 12 | ["debianutils"] {os-family = "debian"} 13 | ["which"] {os-distribution = "nixos"} 14 | ["which"] {os-distribution = "arch"} 15 | ] 16 | synopsis: "Virtual package relying on which" 17 | description: 18 | "This package can only install if the which program is installed on the system." 19 | flags: conf 20 | -------------------------------------------------------------------------------- /esy.lock/opam/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" {>= "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.3.0/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" & < "4.08.0"} 10 | ] 11 | build: [ 12 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path 13 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} 14 | ["ocaml" "bootstrap.ml"] 15 | ["./boot.exe" "--release" "--subst"] {pinned} 16 | ["./boot.exe" "--release" "-j" jobs] 17 | ] 18 | conflicts: [ 19 | "jbuilder" {!= "transition"} 20 | ] 21 | 22 | synopsis: "Fast, portable and opinionated build system" 23 | description: """ 24 | dune is a build system that was designed to simplify the release of 25 | Jane Street packages. It reads metadata from "dune" files following a 26 | very simple s-expression syntax. 27 | 28 | dune is fast, it has very low-overhead and support parallel builds on 29 | all platforms. It has no system dependencies, all you need to build 30 | dune and packages using dune is OCaml. You don't need or make or bash 31 | as long as the packages themselves don't use bash explicitly. 32 | 33 | dune supports multi-package development by simply dropping multiple 34 | repositories into the same directory. 35 | 36 | It also supports multi-context builds, such as building against 37 | several opam roots/switches simultaneously. This helps maintaining 38 | packages across several versions of OCaml and gives cross-compilation 39 | for free. 40 | """ 41 | url { 42 | src: "https://github.com/ocaml/dune/releases/download/1.3.0/dune-1.3.0.tbz" 43 | checksum: "md5=d7c926bd6b7549cb54d5463aaccf0c91" 44 | } 45 | -------------------------------------------------------------------------------- /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" 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/fmt.0.8.8/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: [ "The fmt programmers" ] 4 | homepage: "https://erratique.ch/software/fmt" 5 | doc: "https://erratique.ch/software/fmt" 6 | dev-repo: "git+https://erratique.ch/repos/fmt.git" 7 | bug-reports: "https://github.com/dbuenzli/fmt/issues" 8 | tags: [ "string" "format" "pretty-print" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.05.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | # Can be removed once ocaml >= 4.07 16 | "seq" 17 | "stdlib-shims" 18 | ] 19 | depopts: [ "base-unix" "cmdliner" ] 20 | conflicts: [ "cmdliner" {< "0.9.8"} ] 21 | build: [[ 22 | "ocaml" "pkg/pkg.ml" "build" 23 | "--dev-pkg" "%{pinned}%" 24 | "--with-base-unix" "%{base-unix:installed}%" 25 | "--with-cmdliner" "%{cmdliner:installed}%" ]] 26 | 27 | synopsis: """OCaml Format pretty-printer combinators""" 28 | description: """\ 29 | 30 | Fmt exposes combinators to devise `Format` pretty-printing functions. 31 | 32 | Fmt depends only on the OCaml standard library. The optional `Fmt_tty` 33 | library that allows to setup formatters for terminal color output 34 | depends on the Unix library. The optional `Fmt_cli` library that 35 | provides command line support for Fmt depends on [`Cmdliner`][cmdliner]. 36 | 37 | Fmt is distributed under the ISC license. 38 | 39 | [cmdliner]: http://erratique.ch/software/cmdliner 40 | """ 41 | url { 42 | archive: "https://erratique.ch/software/fmt/releases/fmt-0.8.8.tbz" 43 | checksum: "473490fcfdf3ff0a8ccee226b873d4b2" 44 | } 45 | -------------------------------------------------------------------------------- /esy.lock/opam/fpath.0.7.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/fpath" 5 | doc: "http://erratique.ch/software/fpath/doc" 6 | dev-repo: "git+http://erratique.ch/repos/fpath.git" 7 | bug-reports: "https://github.com/dbuenzli/fpath/issues" 8 | tags: [ "file" "system" "path" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | "result" 16 | "astring" 17 | ] 18 | build: [[ 19 | "ocaml" "pkg/pkg.ml" "build" 20 | "--dev-pkg" "%{pinned}%" ]] 21 | synopsis: "File system paths for OCaml" 22 | description: """ 23 | Fpath is an OCaml module for handling file system paths with POSIX or 24 | Windows conventions. Fpath processes paths without accessing the file 25 | system and is independent from any system library. 26 | 27 | Fpath depends on [Astring][astring] and is distributed under the ISC 28 | license. 29 | 30 | [astring]: http://erratique.ch/software/astring""" 31 | url { 32 | src: "http://erratique.ch/software/fpath/releases/fpath-0.7.2.tbz" 33 | checksum: "md5=52c7ecb0bf180088336f3c645875fa41" 34 | } 35 | -------------------------------------------------------------------------------- /esy.lock/opam/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: [ 9 | "ocaml" 10 | "dune" {< "2.0"} 11 | ] 12 | post-messages: [ 13 | "Jbuilder has been renamed and the jbuilder package is now a transition \ 14 | package. Use the dune package instead." 15 | ] 16 | synopsis: 17 | "This is a transition package, jbuilder is now named dune. Use the dune" 18 | description: "package instead." 19 | -------------------------------------------------------------------------------- /esy.lock/opam/js-build-tools.113.33.04/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/js-build-tools" 5 | bug-reports: "https://github.com/janestreet/js-build-tools/issues" 6 | dev-repo: "git+https://github.com/janestreet/js-build-tools.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["./configure" "--prefix" prefix] 10 | [make] 11 | ] 12 | depends: [ 13 | "ocaml" {>= "4.02.3"} 14 | "ocamlbuild" {build} 15 | "ocamlfind" {build & >= "1.3.2"} 16 | "ocamlbuild" 17 | ] 18 | synopsis: "Collection of tools to help building Jane Street Packages" 19 | description: """ 20 | This packages contains tools to help building Jane Street 21 | Packages. However most of it is general purpose. 22 | It contains:: 23 | - an oasis2opam-install tool to produce a .install file from the oasis 24 | build log 25 | - an js_build_tools ocamlbuild plugin with various goodies""" 26 | url { 27 | src: 28 | "https://ocaml.janestreet.com/ocaml-core/113.33/files/js-build-tools-113.33.04.tar.gz" 29 | checksum: "md5=25e2657622a2be4dac42adc2ea148999" 30 | } 31 | -------------------------------------------------------------------------------- /esy.lock/opam/lambdasoup.0.6.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | version: "0.6.3" 3 | homepage: "https://github.com/aantron/lambda-soup" 4 | doc: "http://aantron.github.io/lambda-soup" 5 | bug-reports: "https://github.com/aantron/lambda-soup/issues" 6 | license: "BSD-3-Clause" 7 | 8 | authors: "Anton Bachin " 9 | maintainer: "Anton Bachin " 10 | dev-repo: "git+https://github.com/aantron/lambda-soup.git" 11 | depends: [ 12 | "ocaml" 13 | "jbuilder" {>= "1.0+beta10"} 14 | "markup" {>= "0.7.1"} 15 | "ounit" {with-test} 16 | ] 17 | build: [ 18 | ["jbuilder" "build" "-p" name "-j" jobs] 19 | ] 20 | synopsis: "Easy functional HTML scraping and manipulation with CSS selectors" 21 | description: """ 22 | Lambda Soup is an HTML scraping library inspired by Python's Beautiful Soup. It 23 | provides lazy traversals from HTML nodes to their parents, children, siblings, 24 | etc., and to nodes matching CSS selectors. The traversals can be manipulated 25 | using standard functional combinators such as fold, filter, and map. 26 | 27 | The DOM tree is mutable. You can use Lambda Soup for automatic HTML rewriting in 28 | scripts. Lambda Soup rewrites its own ocamldoc page this way. 29 | 30 | A major goal of Lambda Soup is to be easy to use, including in interactive 31 | sessions, and to have a minimal learning curve. It is a very simple library.""" 32 | url { 33 | src: "https://github.com/aantron/lambda-soup/archive/0.6.3.tar.gz" 34 | checksum: "md5=89f0596aa05a6e7a33bf9d74797905f1" 35 | } 36 | -------------------------------------------------------------------------------- /esy.lock/opam/logs.0.7.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["The logs programmers"] 4 | homepage: "https://erratique.ch/software/logs" 5 | doc: "https://erratique.ch/software/logs/doc" 6 | dev-repo: "git+https://erratique.ch/repos/logs.git" 7 | bug-reports: "https://github.com/dbuenzli/logs/issues" 8 | tags: [ "log" "system" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.03.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "mtime" {with-test} ] 16 | depopts: [ 17 | "js_of_ocaml" 18 | "fmt" 19 | "cmdliner" 20 | "lwt" 21 | "base-threads" 22 | ] 23 | conflicts: [ 24 | "js_of_ocaml" { < "3.3.0" } ] 25 | 26 | build: [[ 27 | "ocaml" "pkg/pkg.ml" "build" 28 | "--pinned" "%{pinned}%" 29 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" 30 | "--with-fmt" "%{fmt:installed}%" 31 | "--with-cmdliner" "%{cmdliner:installed}%" 32 | "--with-lwt" "%{lwt:installed}%" 33 | "--with-base-threads" "%{base-threads:installed}%" 34 | ]] 35 | 36 | synopsis: """Logging infrastructure for OCaml""" 37 | description: """\ 38 | 39 | Logs provides a logging infrastructure for OCaml. Logging is performed 40 | on sources whose reporting level can be set independently. Log message 41 | report is decoupled from logging and is handled by a reporter. 42 | 43 | A few optional log reporters are distributed with the base library and 44 | the API easily allows to implement your own. 45 | 46 | `Logs` has no dependencies. The optional `Logs_fmt` reporter on OCaml 47 | formatters depends on [Fmt][fmt]. The optional `Logs_browser` 48 | reporter that reports to the web browser console depends on 49 | [js_of_ocaml][jsoo]. The optional `Logs_cli` library that provides 50 | command line support for controlling Logs depends on 51 | [`Cmdliner`][cmdliner]. The optional `Logs_lwt` library that provides 52 | Lwt logging functions depends on [`Lwt`][lwt] 53 | 54 | Logs and its reporters are distributed under the ISC license. 55 | 56 | [fmt]: http://erratique.ch/software/fmt 57 | [jsoo]: http://ocsigen.org/js_of_ocaml/ 58 | [cmdliner]: http://erratique.ch/software/cmdliner 59 | [lwt]: http://ocsigen.org/lwt/ 60 | """ 61 | url { 62 | archive: "https://erratique.ch/software/logs/releases/logs-0.7.0.tbz" 63 | checksum: "2bf021ca13331775e33cf34ab60246f7" 64 | } 65 | -------------------------------------------------------------------------------- /esy.lock/opam/markup.0.8.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | synopsis: "Error-recovering functional HTML5 and XML parsers and writers" 4 | 5 | version: "0.8.2" 6 | license: "MIT" 7 | homepage: "https://github.com/aantron/markup.ml" 8 | doc: "http://aantron.github.io/markup.ml" 9 | bug-reports: "https://github.com/aantron/markup.ml/issues" 10 | 11 | authors: "Anton Bachin " 12 | maintainer: "Anton Bachin " 13 | dev-repo: "git+https://github.com/aantron/markup.ml.git" 14 | 15 | depends: [ 16 | "dune" 17 | "ocaml" {>= "4.02.0"} 18 | "uchar" 19 | "uutf" {>= "1.0.0"} 20 | 21 | "bisect_ppx" {dev & >= "2.0.0"} 22 | "ounit" {dev} 23 | ] 24 | # Markup.ml implicitly requires OCaml 4.02.3, as this is a contraint of Dune. 25 | 26 | build: [ 27 | ["dune" "build" "-p" name "-j" jobs] 28 | ] 29 | 30 | description: """ 31 | Markup.ml provides an HTML parser and an XML parser. The parsers are wrapped in 32 | a simple interface: they are functions that transform byte streams to parsing 33 | signal streams. Streams can be manipulated in various ways, such as processing 34 | by fold, filter, and map, assembly into DOM tree structures, or serialization 35 | back to HTML or XML. 36 | 37 | Both parsers are based on their respective standards. The HTML parser, in 38 | particular, is based on the state machines defined in HTML5. 39 | 40 | The parsers are error-recovering by default, and accept fragments. This makes it 41 | very easy to get a best-effort parse of some input. The parsers can, however, be 42 | easily configured to be strict, and to accept only full documents. 43 | 44 | Apart from this, the parsers are streaming (do not build up a document in 45 | memory), non-blocking (can be used with threading libraries), lazy (do not 46 | consume input unless the signal stream is being read), and process the input in 47 | a single pass. They automatically detect the character encoding of the input 48 | stream, and convert everything to UTF-8.""" 49 | 50 | url { 51 | src: "https://github.com/aantron/markup.ml/archive/0.8.2.tar.gz" 52 | checksum: "md5=0fe6b3a04d941ca40a5efdd082f1183d" 53 | } 54 | -------------------------------------------------------------------------------- /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" 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/num.1.3/files/installation-warning.patch: -------------------------------------------------------------------------------- 1 | From db8d748b2cad0adc2698e9fcf28727083a711bae Mon Sep 17 00:00:00 2001 2 | From: David Allsopp 3 | Date: Wed, 24 Jan 2018 16:01:56 +0000 4 | Subject: [PATCH] Warn about installations broken by previous faulty package 5 | 6 | --- 7 | Makefile | 33 +++++++++++++++++++++++++++++++++ 8 | 1 file changed, 33 insertions(+) 9 | 10 | diff --git a/Makefile b/Makefile 11 | index b40e588..d4dcd70 100644 12 | --- a/Makefile 13 | +++ b/Makefile 14 | @@ -14,9 +14,42 @@ install: 15 | $(MAKE) -C src install 16 | $(MAKE) -C toplevel install 17 | 18 | +OCAMLFIND_DIR:=$(dir $(shell command -v ocamlfind 2>/dev/null)) 19 | +OCAMLC_DIR:=$(dir $(shell command -v ocamlc 2>/dev/null)) 20 | +NUM_INSTALLED:=$(shell ocamlfind query num 2>/dev/null) 21 | + 22 | +ifeq ($(NUM_INSTALLED),) 23 | +# The num findlib package is not already present - wohoo! 24 | +OUR_FAULT=no 25 | +else 26 | +ifeq ($(OCAMLFIND_DIR),$(OCAMLC_DIR)) 27 | +# The num findlib package is present, but ocamlc and ocamlfind are in the 28 | +# same place, which means that either we're looking at a system-installed 29 | +# ocamlfind (which isn't supported), or the user has done something else 30 | +# nefarious and doesn't deserve our sympathy (or, at least, our potentially 31 | +# unhelpful advice) 32 | +OUR_FAULT=no 33 | +else 34 | +# The num findlib package package is present, and ocamlc and ocamlfind reside 35 | +# in different directories, which means that we're almost certainly looking at 36 | +# a system switch which has been damaged by a previous num package installation 37 | +# on an OS which didn't protect the system lib directory. 38 | +OUR_FAULT=probably 39 | +endif 40 | +endif 41 | + 42 | findlib-install: 43 | +ifeq ($(OUR_FAULT),no) 44 | $(MAKE) -C src findlib-install 45 | $(MAKE) -C toplevel install 46 | +else 47 | + @echo "\033[0;31m[ERROR]\033[m It appears that the num library was previously installed to your system" 48 | + @echo " compiler's lib directory, probably by a faulty opam package." 49 | + @echo " You will need to remove arith_flags.*, arith_status.*, big_int.*," 50 | + @echo " int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and" 51 | + @echo " stublibs/dllnums.* from $(shell ocamlc -where)." 52 | + @false 53 | +endif 54 | 55 | uninstall: 56 | $(MAKE) -C src uninstall 57 | -- 58 | 2.14.1 59 | 60 | -------------------------------------------------------------------------------- /esy.lock/opam/num.1.3/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Xavier Leroy " 3 | authors: [ 4 | "Valérie Ménissier-Morain" 5 | "Pierre Weis" 6 | "Xavier Leroy" 7 | ] 8 | license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" 9 | homepage: "https://github.com/ocaml/num/" 10 | bug-reports: "https://github.com/ocaml/num/issues" 11 | dev-repo: "git+https://github.com/ocaml/num.git" 12 | build: [ 13 | [make] 14 | ] 15 | install: [ 16 | make 17 | "install" {!ocaml:preinstalled} 18 | "findlib-install" {ocaml:preinstalled} 19 | ] 20 | depends: [ 21 | "ocaml" {>= "4.06.0"} 22 | "ocamlfind" {build & >= "1.7.3"} 23 | ] 24 | conflicts: [ "base-num" ] 25 | patches: [ "installation-warning.patch" ] 26 | synopsis: 27 | "The legacy Num library for arbitrary-precision integer and rational arithmetic" 28 | extra-files: [ 29 | ["installation-warning.patch" "md5=93c92bf6da6bae09d068da42b1bbaaac"] 30 | ] 31 | url { 32 | src: "https://github.com/ocaml/num/archive/v1.3.tar.gz" 33 | checksum: "md5=f074e12325e84ebc883b37e5db10403d" 34 | } 35 | -------------------------------------------------------------------------------- /esy.lock/opam/oasis.0.4.11/files/oasis.install: -------------------------------------------------------------------------------- 1 | etc: [ 2 | "setup.ml" 3 | "setup.data" 4 | "setup.log" 5 | ] 6 | -------------------------------------------------------------------------------- /esy.lock/opam/oasis.0.4.11/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Sylvain Le Gall " 3 | authors: [ "Sylvain Le Gall" ] 4 | license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" 5 | homepage: "http://oasis.forge.ocamlcore.org/" 6 | dev-repo: "git://github.com/ocaml/oasis.git" 7 | bug-reports: "https://github.com/ocaml/oasis/issues" 8 | build: [ 9 | ["ocaml" "setup.ml" "-configure" "--prefix" prefix] 10 | ["ocaml" "setup.ml" "-build"] 11 | ["ocaml" "setup.ml" "-doc"] {with-doc} 12 | ] 13 | install: ["ocaml" "setup.ml" "-install"] 14 | remove: [ 15 | ["ocaml" "%{etc}%/oasis/setup.ml" "-C" "%{etc}%/oasis" "-uninstall"] 16 | ] 17 | depends: [ 18 | "ocaml" {>= "3.12.1"} 19 | "base-unix" 20 | "ocamlbuild" 21 | "ocamlfind" {build & >= "1.3.1"} 22 | "ocamlify" {build} 23 | "ocamlmod" {build} 24 | ] 25 | depopts: [ 26 | "benchmark" 27 | ] 28 | conflicts: [ 29 | "benchmark" {< "1.2"} 30 | "oasis-mirage" {= "0.3.0"} 31 | "oasis-mirage" {= "0.3.0a"} 32 | ] 33 | synopsis: "Tooling for building OCaml libraries and applications" 34 | description: """ 35 | OASIS generates a full configure, build and install system for your 36 | application. It starts with a simple `_oasis` file at the toplevel of 37 | your project and creates everything required. 38 | 39 | OASIS leverages existing OCaml tooling to perform most of it's work. 40 | In fact, it might be more appropriate to think of it as simply the 41 | glue that binds these other subsystems together and coordinates the 42 | work that they do. It should support the following tools: 43 | 44 | * OCamlbuild 45 | * OMake 46 | * OCamlMakefile (todo), 47 | * ocaml-autoconf (todo) 48 | 49 | It also features a do-it-yourself command line invocation and an 50 | internal configure/install scheme. Libraries are managed through 51 | findlib. It has been tested on GNU Linux and Windows. 52 | 53 | It also allows to have standard entry points and description. It helps 54 | to integrates your libraries and software with third parties tools 55 | like OPAM.""" 56 | extra-files: ["oasis.install" "md5=ecc97c692bb2f70fe50124a88d705fde"] 57 | url { 58 | src: 59 | "https://download.ocamlcore.org/oasis/oasis/0.4.11/oasis-0.4.11.tar.gz" 60 | checksum: "md5=98492f4657c2c5b30e3b1bc945e58419" 61 | } 62 | -------------------------------------------------------------------------------- /esy.lock/opam/ocaml-migrate-parsetree.1.1.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 | ["jbuilder" "build" "-p" name "-j" jobs] 15 | ] 16 | depends: [ 17 | "result" 18 | "dune" {< "2.0"} 19 | "ocaml" {>= "4.02.0" & < "4.08.0"} 20 | ] 21 | 22 | description: """ 23 | Convert OCaml parsetrees between different versions 24 | 25 | This library converts parsetrees, outcometree and ast mappers between different OCaml versions. 26 | High-level functions help making PPX rewriters independent of a compiler version. 27 | """ 28 | 29 | url { 30 | src: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.1.0/ocaml-migrate-parsetree-1.1.0.tbz" 31 | checksum: ["md5=7dd4808e27af98065f63604c9658d311"] 32 | } 33 | 34 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlbuild.0.14.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Gabriel Scherer " 3 | authors: ["Nicolas Pouillard" "Berke Durak"] 4 | homepage: "https://github.com/ocaml/ocamlbuild/" 5 | bug-reports: "https://github.com/ocaml/ocamlbuild/issues" 6 | license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" 7 | doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" 8 | dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" 9 | build: [ 10 | [ 11 | make 12 | "-f" 13 | "configure.make" 14 | "all" 15 | "OCAMLBUILD_PREFIX=%{prefix}%" 16 | "OCAMLBUILD_BINDIR=%{bin}%" 17 | "OCAMLBUILD_LIBDIR=%{lib}%" 18 | "OCAMLBUILD_MANDIR=%{man}%" 19 | "OCAML_NATIVE=%{ocaml:native}%" 20 | "OCAML_NATIVE_TOOLS=%{ocaml:native}%" 21 | ] 22 | [make "check-if-preinstalled" "all" "opam-install"] 23 | ] 24 | conflicts: [ 25 | "base-ocamlbuild" 26 | "ocamlfind" {< "1.6.2"} 27 | ] 28 | synopsis: 29 | "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." 30 | depends: [ 31 | "ocaml" {>= "4.03"} 32 | ] 33 | url { 34 | src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" 35 | checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" 36 | } 37 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlfind.1.8.0/files/no-awk-check.patch: -------------------------------------------------------------------------------- 1 | commit 40142bc941e6e308686e86be6fc2da92f346a22f 2 | Author: Kate 3 | Date: Tue Mar 19 16:29:06 2019 +0000 4 | 5 | Remove awk from the set of checked unix tools as it's not used anywhere 6 | 7 | diff --git a/configure b/configure 8 | index d9b587c..20e8dca 100755 9 | --- a/configure 10 | +++ b/configure 11 | @@ -184,7 +184,7 @@ echo "Configuring core..." 12 | 13 | # Some standard Unix tools must be available: 14 | 15 | -for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do 16 | +for tool in sed ocaml ocamlc uname rm make cat m4 dirname basename; do 17 | if in_path $tool; then true; else 18 | echo "configure: $tool not in PATH; this is required" 1>&2 19 | exit 1 20 | -------------------------------------------------------------------------------- /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 | patches: ["no-awk-check.patch"] 7 | build: [ 8 | [ 9 | "./configure" 10 | "-bindir" 11 | bin 12 | "-sitelib" 13 | lib 14 | "-mandir" 15 | man 16 | "-config" 17 | "%{lib}%/findlib.conf" 18 | "-no-custom" 19 | "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} 20 | "-no-topfind" {ocaml:preinstalled} 21 | ] 22 | [make "all"] 23 | [make "opt"] {ocaml:native} 24 | ] 25 | install: [ 26 | [make "install"] 27 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} 28 | ] 29 | remove: [ 30 | ["ocamlfind" "remove" "bytes"] 31 | [ 32 | "./configure" 33 | "-bindir" 34 | bin 35 | "-sitelib" 36 | lib 37 | "-mandir" 38 | man 39 | "-config" 40 | "%{lib}%/findlib.conf" 41 | "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} 42 | "-no-topfind" {ocaml:preinstalled} 43 | ] 44 | [make "uninstall"] 45 | ["rm" "-f" "%{bin}%/ocaml"] {ocaml:preinstalled} 46 | ] 47 | depends: [ 48 | "ocaml" {>= "4.00.0" & < "4.09.0"} 49 | "conf-m4" {build} 50 | ] 51 | synopsis: "A library manager for OCaml" 52 | description: """ 53 | Findlib is a library manager for OCaml. It provides a convention how 54 | to store libraries, and a file format ("META") to describe the 55 | properties of libraries. There is also a tool (ocamlfind) for 56 | interpreting the META files, so that it is very easy to use libraries 57 | in programs and scripts.""" 58 | authors: "Gerd Stolpmann " 59 | extra-files: [ 60 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] 61 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] 62 | ["no-awk-check.patch" "md5=0378123bf1a45fccdea434c053ddb687"] 63 | ] 64 | url { 65 | src: "http://download.camlcity.org/download/findlib-1.8.0.tar.gz" 66 | checksum: "md5=a710c559667672077a93d34eb6a42e5b" 67 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.0.tar.gz" 68 | } 69 | depopts: ["graphics"] 70 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlify.0.0.1/files/ocamlify.install: -------------------------------------------------------------------------------- 1 | bin: ["_build/src/ocamlify"] 2 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlify.0.0.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "https://github.com/ocaml/opam-repository/issues" 3 | build: [ 4 | ["ocaml" "setup.ml" "-configure" "--prefix" prefix] 5 | ["ocaml" "setup.ml" "-build"] 6 | ] 7 | depends: [ 8 | "ocaml" 9 | "ocamlfind" 10 | "ocamlbuild" {build} 11 | ] 12 | install: ["ocaml" "setup.ml" "-install"] 13 | synopsis: "Include files in OCaml code" 14 | description: """ 15 | OCamlify allows to create OCaml source code by including whole files 16 | into OCaml string or string list. The code generated can be compiled 17 | as a standard OCaml file. It allows embedding external resources as 18 | OCaml code.""" 19 | extra-files: ["ocamlify.install" "md5=5ae3ee90457ab5a6051136a36885c67e"] 20 | url { 21 | src: 22 | "https://download.ocamlcore.org/ocamlify/ocamlify/0.0.1/ocamlify-0.0.1.tar.gz" 23 | checksum: "md5=bcd97ad0f7203019019997197451dbf0" 24 | } 25 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlmod.0.0.9/files/_oasis_remove_.ml: -------------------------------------------------------------------------------- 1 | open Printf 2 | 3 | let () = 4 | let dir = Sys.argv.(1) in 5 | (try Sys.chdir dir 6 | with _ -> eprintf "Cannot change directory to %s\n%!" dir); 7 | exit (Sys.command "ocaml setup.ml -uninstall") 8 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlmod.0.0.9/files/ocamlmod.install: -------------------------------------------------------------------------------- 1 | etc: [ 2 | "setup.ml" 3 | "setup.data" 4 | "setup.log" 5 | "_oasis_remove_.ml" 6 | ] 7 | -------------------------------------------------------------------------------- /esy.lock/opam/ocamlmod.0.0.9/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opam-devel@lists.ocaml.org" 3 | homepage: "https://forge.ocamlcore.org/projects/ocamlmod/" 4 | bug-reports: "https://forge.ocamlcore.org/tracker/?group_id=244" 5 | dev-repo: "darcs+https://forge.ocamlcore.org/anonscm/darcs/ocamlmod/ocamlmod" 6 | authors: [ "Sylvain Le Gall" ] 7 | license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" 8 | build: [ 9 | ["ocaml" "setup.ml" "-configure" "--prefix" prefix] 10 | ["ocaml" "setup.ml" "-build"] 11 | ["ocaml" "setup.ml" "-configure" "--enable-tests"] {with-test} 12 | ["ocaml" "setup.ml" "-build"] {with-test} 13 | ["ocaml" "setup.ml" "-test"] {with-test} 14 | ] 15 | install: ["ocaml" "setup.ml" "-install"] 16 | remove: [ 17 | ["ocaml" "%{etc}%/ocamlmod/_oasis_remove_.ml" "%{etc}%/ocamlmod"] 18 | ] 19 | depends: [ 20 | "ocaml" 21 | "ocamlfind" {build} 22 | "ounit" {with-test & >= "2.0.0"} 23 | "ocamlbuild" {build} 24 | ] 25 | synopsis: "Generate OCaml modules from source files" 26 | extra-files: [ 27 | ["ocamlmod.install" "md5=0d1b822c897681cf54b3e1aed52dda99"] 28 | ["_oasis_remove_.ml" "md5=6100ca146fa97d2196eb49a2631d0796"] 29 | ] 30 | url { 31 | src: 32 | "https://download.ocamlcore.org/ocamlmod/ocamlmod/0.0.9/ocamlmod-0.0.9.tar.gz" 33 | checksum: "md5=b52bfbab6bb77f9736bde9c2fe81c508" 34 | } 35 | -------------------------------------------------------------------------------- /esy.lock/opam/ppx_tools_versioned.5.2.2/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/ocaml-ppx/ppx_tools_versioned" 9 | bug-reports: "https://github.com/ocaml-ppx/ppx_tools_versioned/issues" 10 | dev-repo: "git://github.com/ocaml-ppx/ppx_tools_versioned.git" 11 | tags: [ "syntax" ] 12 | build: [ 13 | ["dune" "subst"] {pinned} 14 | ["dune" "build" "-p" name "-j" jobs] 15 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 16 | ] 17 | depends: [ 18 | "ocaml" {>= "4.02.0"} 19 | "dune" {>= "1.0"} 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.2.tar.gz" 26 | checksum: [ 27 | "md5=f78a3c2b4cc3b92702e1f7096a6125fa" 28 | "sha512=68c168ebc01af46fe8766ad7e36cc778caabb97d8eb303db284d106450cb79974c2a640ce459e197630b9e84b02caa24b59c97c9a8d39ddadc7efc7284e42a70" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /esy.lock/opam/re.1.9.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | maintainer: "rudi.grinberg@gmail.com" 4 | authors: [ 5 | "Jerome Vouillon" 6 | "Thomas Gazagnaire" 7 | "Anil Madhavapeddy" 8 | "Rudi Grinberg" 9 | "Gabriel Radanne" 10 | ] 11 | license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" 12 | homepage: "https://github.com/ocaml/ocaml-re" 13 | bug-reports: "https://github.com/ocaml/ocaml-re/issues" 14 | dev-repo: "git+https://github.com/ocaml/ocaml-re.git" 15 | 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ] 21 | 22 | depends: [ 23 | "ocaml" {>= "4.02"} 24 | "dune" 25 | "ounit" {with-test} 26 | "seq" 27 | ] 28 | 29 | synopsis: "RE is a regular expression library for OCaml" 30 | description: """ 31 | Pure OCaml regular expressions with: 32 | * Perl-style regular expressions (module Re.Perl) 33 | * Posix extended regular expressions (module Re.Posix) 34 | * Emacs-style regular expressions (module Re.Emacs) 35 | * Shell-style file globbing (module Re.Glob) 36 | * Compatibility layer for OCaml's built-in Str module (module Re.Str) 37 | """ 38 | url { 39 | src: 40 | "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" 41 | checksum: "md5=bddaed4f386a22cace7850c9c7dac296" 42 | } 43 | -------------------------------------------------------------------------------- /esy.lock/opam/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: "BSD-3-Clause" 8 | build: [["jbuilder" "build" "-p" name "-j" jobs]] 9 | depends: [ 10 | "ocaml" 11 | "jbuilder" {>= "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/rresult.0.6.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/rresult" 5 | doc: "http://erratique.ch/software/rresult" 6 | dev-repo: "git+http://erratique.ch/repos/rresult.git" 7 | bug-reports: "https://github.com/dbuenzli/rresult/issues" 8 | tags: [ "result" "error" "declarative" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "result" 16 | ] 17 | build:[[ 18 | "ocaml" "pkg/pkg.ml" "build" 19 | "--pinned" "%{pinned}%" ]] 20 | 21 | synopsis: """Result value combinators for OCaml""" 22 | description: """\ 23 | 24 | Rresult is an OCaml module for handling computation results and errors 25 | in an explicit and declarative manner, without resorting to 26 | exceptions. It defines combinators to operate on the `result` type 27 | available from OCaml 4.03 in the standard library. 28 | 29 | Rresult depends on the compatibility `result` package and is 30 | distributed under the ISC license. 31 | """ 32 | url { 33 | archive: "http://erratique.ch/software/rresult/releases/rresult-0.6.0.tbz" 34 | checksum: "aba88cffa29081714468c2c7bcdf7fb1" 35 | } 36 | -------------------------------------------------------------------------------- /esy.lock/opam/seq.0.2.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: 3 | "Compatibility package for OCaml's standard iterator type starting from 4.07" 4 | maintainer: "simon.cruanes.2007@m4x.org" 5 | license: "LGPL2.1" 6 | build: [ 7 | ["dune" "build" "-p" name "-j" jobs] 8 | ] 9 | depends: [ 10 | "dune" {>= "1.1.0"} 11 | "ocaml" 12 | ] 13 | tags: [ "iterator" "seq" "pure" "list" "compatibility" "cascade" ] 14 | homepage: "https://github.com/c-cube/seq/" 15 | bug-reports: "https://github.com/c-cube/seq/issues" 16 | dev-repo: "git+https://github.com/c-cube/seq.git" 17 | authors: "Simon Cruanes" 18 | url { 19 | src: "https://github.com/c-cube/seq/archive/0.2.2.tar.gz" 20 | checksum: [ 21 | "md5=9033e02283aa3bde9f97f24e632902e3" 22 | "sha512=cab0eb4cb6d9788b7cbd7acbefefc15689d706c97ff7f75dd97faf3c21e466af4d0ff110541a24729db587e7172b1a30a3c2967e17ec2e49cbd923360052c07c" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /esy.lock/opam/sexplib.v0.10.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "opensource@janestreet.com" 3 | authors: ["Jane Street Group, LLC "] 4 | homepage: "https://github.com/janestreet/sexplib" 5 | bug-reports: "https://github.com/janestreet/sexplib/issues" 6 | dev-repo: "git+https://github.com/janestreet/sexplib.git" 7 | license: "Apache-2.0" 8 | build: [ 9 | ["jbuilder" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" {>= "4.04.1"} 13 | "jbuilder" {>= "1.0+beta12"} 14 | "num" 15 | ] 16 | conflicts: [ 17 | "sexplib0" 18 | ] 19 | synopsis: "Library for serializing OCaml values to and from S-expressions" 20 | description: """ 21 | Part of Jane Street's Core library 22 | The Core suite of libraries is an industrial strength alternative to 23 | OCaml's standard library that was developed by Jane Street, the 24 | largest industrial user of OCaml.""" 25 | url { 26 | src: 27 | "https://ocaml.janestreet.com/ocaml-core/v0.10/files/sexplib-v0.10.0.tar.gz" 28 | checksum: "md5=b8f5db21a2b19aadc753c6e626019068" 29 | } 30 | -------------------------------------------------------------------------------- /esy.lock/opam/stdlib-shims.0.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "The stdlib-shims programmers" 3 | authors: "The stdlib-shims programmers" 4 | homepage: "https://github.com/ocaml/stdlib-shims" 5 | doc: "https://ocaml.github.io/stdlib-shims/" 6 | dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" 7 | bug-reports: "https://github.com/ocaml/stdlib-shims/issues" 8 | tags: ["stdlib" "compatibility" "org:ocaml"] 9 | license: ["typeof OCaml system"] 10 | depends: [ 11 | "dune" 12 | "ocaml" {>= "4.02.3"} 13 | ] 14 | build: [ "dune" "build" "-p" name "-j" jobs ] 15 | synopsis: "Backport some of the new stdlib features to older compiler" 16 | description: """ 17 | Backport some of the new stdlib features to older compiler, 18 | such as the Stdlib module. 19 | 20 | This allows projects that require compatibility with older compiler to 21 | use these new features in their code. 22 | """ 23 | url { 24 | src: 25 | "https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz" 26 | checksum: "md5=12b5704eed70c6bff5ac39a16db1425d" 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/opam/topkg.1.0.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/topkg" 5 | doc: "http://erratique.ch/software/topkg/doc" 6 | license: "ISC" 7 | dev-repo: "git+http://erratique.ch/repos/topkg.git" 8 | bug-reports: "https://github.com/dbuenzli/topkg/issues" 9 | tags: ["packaging" "ocamlbuild" "org:erratique"] 10 | depends: [ 11 | "ocaml" {>= "4.03.0"} 12 | "ocamlfind" {build & >= "1.6.1"} 13 | "ocamlbuild" ] 14 | build: [[ 15 | "ocaml" "pkg/pkg.ml" "build" 16 | "--pkg-name" name 17 | "--dev-pkg" "%{pinned}%" ]] 18 | synopsis: """The transitory OCaml software packager""" 19 | description: """\ 20 | 21 | Topkg is a packager for distributing OCaml software. It provides an 22 | API to describe the files a package installs in a given build 23 | configuration and to specify information about the package's 24 | distribution, creation and publication procedures. 25 | 26 | The optional topkg-care package provides the `topkg` command line tool 27 | which helps with various aspects of a package's life cycle: creating 28 | and linting a distribution, releasing it on the WWW, publish its 29 | documentation, add it to the OCaml opam repository, etc. 30 | 31 | Topkg is distributed under the ISC license and has **no** 32 | dependencies. This is what your packages will need as a *build* 33 | dependency. 34 | 35 | Topkg-care is distributed under the ISC license it depends on 36 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], 37 | [webbrowser][webbrowser] and `opam-format`. 38 | 39 | [fmt]: http://erratique.ch/software/fmt 40 | [logs]: http://erratique.ch/software/logs 41 | [bos]: http://erratique.ch/software/bos 42 | [cmdliner]: http://erratique.ch/software/cmdliner 43 | [webbrowser]: http://erratique.ch/software/webbrowser 44 | """ 45 | url { 46 | archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz" 47 | checksum: "16b90e066d8972a5ef59655e7c28b3e9" 48 | } 49 | -------------------------------------------------------------------------------- /esy.lock/opam/tyxml.4.3.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "dev@ocsigen.org" 3 | homepage: "https://github.com/ocsigen/tyxml/" 4 | bug-reports: "https://github.com/ocsigen/tyxml/issues" 5 | doc: "https://ocsigen.org/tyxml/manual/" 6 | dev-repo: "git+https://github.com/ocsigen/tyxml.git" 7 | license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" 8 | 9 | build: [ 10 | ["dune" "subst"] {pinned} 11 | ["dune" "build" "-p" name "-j" jobs] 12 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 13 | ] 14 | 15 | depends: [ 16 | "ocaml" {>= "4.02"} 17 | "re" {>= "1.5.0"} 18 | ("ocaml" {>= "4.07"} | "re" {>= "1.8.0"}) 19 | "dune" 20 | "alcotest" {with-test} 21 | "seq" 22 | "uutf" {>= "1.0.0"} 23 | ] 24 | 25 | synopsis:"TyXML is a library for building correct HTML and SVG documents" 26 | description:""" 27 | TyXML provides a set of convenient combinators that uses the OCaml 28 | type system to ensure the validity of the generated documents. TyXML 29 | can be used with any representation of HTML and SVG: the textual one, 30 | provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) 31 | virtual DOM (`virtual-dom`) and reactive or replicated trees 32 | (`eliom`). You can also create your own representation and use it to 33 | instantiate a new set of combinators. 34 | 35 | ```ocaml 36 | open Tyxml 37 | let to_ocaml = Html.(a ~a:[a_href "ocaml.org"] [txt "OCaml!"]) 38 | ``` 39 | """ 40 | authors: "The ocsigen team" 41 | url { 42 | src: 43 | "https://github.com/ocsigen/tyxml/releases/download/4.3.0/tyxml-4.3.0.tbz" 44 | checksum: "md5=fd834a567f813bf447cab5f4c3a723e2" 45 | } 46 | -------------------------------------------------------------------------------- /esy.lock/opam/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/uutf.1.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/uutf" 5 | doc: "http://erratique.ch/software/uutf/doc/Uutf" 6 | dev-repo: "git+http://erratique.ch/repos/uutf.git" 7 | bug-reports: "https://github.com/dbuenzli/uutf/issues" 8 | tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "uchar" 16 | ] 17 | depopts: ["cmdliner"] 18 | conflicts: ["cmdliner" { < "0.9.6"} ] 19 | build: [[ 20 | "ocaml" "pkg/pkg.ml" "build" 21 | "--pinned" "%{pinned}%" 22 | "--with-cmdliner" "%{cmdliner:installed}%" ]] 23 | synopsis: """Non-blocking streaming Unicode codec for OCaml""" 24 | description: """\ 25 | 26 | Uutf is a non-blocking streaming codec to decode and encode the UTF-8, 27 | UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently 28 | work character by character without blocking on IO. Decoders perform 29 | character position tracking and support newline normalization. 30 | 31 | Functions are also provided to fold over the characters of UTF encoded 32 | OCaml string values and to directly encode characters in OCaml 33 | Buffer.t values. 34 | 35 | Uutf has no dependency and is distributed under the ISC license. 36 | """ 37 | url { 38 | archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" 39 | checksum: "a7c542405a39630c689a82bd7ef2292c" 40 | } 41 | -------------------------------------------------------------------------------- /esy.lock/opam/yojson.1.7.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "https://github.com/ocaml-community/yojson" 5 | bug-reports: "https://github.com/ocaml-community/yojson/issues" 6 | dev-repo: "git+https://github.com/ocaml-community/yojson.git" 7 | doc: "https://ocaml-community.github.io/yojson/" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | run-test: [["dune" "runtest" "-p" name "-j" jobs]] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" 16 | "cppo" {build} 17 | "easy-format" 18 | "biniou" {>= "1.2.0"} 19 | "alcotest" {with-test & >= "0.8.5"} 20 | ] 21 | synopsis: 22 | "Yojson is an optimized parsing and printing library for the JSON format" 23 | description: """ 24 | Yojson is an optimized parsing and printing library for the JSON format. 25 | 26 | It addresses a few shortcomings of json-wheel including 2x speedup, 27 | polymorphic variants and optional syntax for tuples and variants. 28 | 29 | ydump is a pretty-printing command-line program provided with the 30 | yojson package. 31 | 32 | The program atdgen can be used to derive OCaml-JSON serializers and 33 | deserializers from type definitions.""" 34 | url { 35 | src: 36 | "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" 37 | checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" 38 | } 39 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__num_opam__c__1.3_opam_override/files/num-1.3.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/Makefile b/src/Makefile 2 | index 8ad0e2c..d41d63c 100644 3 | --- a/src/Makefile 4 | +++ b/src/Makefile 5 | @@ -1,16 +1,16 @@ 6 | -OCAMLC=ocamlc 7 | -OCAMLOPT=ocamlopt 8 | -OCAMLDEP=ocamldep 9 | -OCAMLMKLIB=ocamlmklib 10 | -OCAMLFIND=ocamlfind 11 | +OCAMLC=$(shell which ocamlc) 12 | +OCAMLOPT=$(shell which ocamlopt) 13 | +OCAMLDEP=$(shell which ocamldep) 14 | +OCAMLMKLIB=$(shell which ocamlmklib) 15 | +OCAMLFIND=$(shell which ocamlfind) 16 | INSTALL_DATA=install -m 644 17 | INSTALL_DLL=install 18 | INSTALL_DIR=install -d 19 | STDLIBDIR=$(shell $(OCAMLC) -where) 20 | DESTDIR ?= 21 | 22 | -include $(STDLIBDIR)/Makefile.config 23 | 24 | +include $(STDLIBDIR)/Makefile.config 25 | ifeq "$(filter i386 amd64 arm64 power,$(ARCH))" "" 26 | # Unsupported architecture 27 | BNG_ARCH=generic 28 | @@ -86,14 +86,14 @@ endif 29 | VERSION=$(shell sed -ne 's/^ *version *: *"\([^"]*\)".*$$/\1/p' ../num.opam) 30 | 31 | install: 32 | - $(INSTALL_DIR) $(DESTDIR)$(STDLIBDIR) 33 | + $(INSTALL_DIR) $(LIBDIR) 34 | sed -e 's/%%VERSION%%/$(VERSION)/g' META.in > META 35 | $(OCAMLFIND) install num META 36 | rm -f META 37 | - $(INSTALL_DATA) $(TOINSTALL) $(DESTDIR)$(STDLIBDIR) 38 | + $(INSTALL_DATA) $(TOINSTALL) $(LIBDIR) 39 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" 40 | - $(INSTALL_DIR) $(DESTDIR)$(STDLIBDIR)/stublibs 41 | - $(INSTALL_DLL) $(TOINSTALL_STUBS) $(DESTDIR)$(STDLIBDIR)/stublibs 42 | + $(INSTALL_DIR) $(LIBDIR)/stublibs 43 | + $(INSTALL_DLL) $(TOINSTALL_STUBS) $(LIBDIR)/stublibs 44 | endif 45 | 46 | findlib-install: 47 | @@ -105,9 +105,9 @@ findlib-uninstall: 48 | $(OCAMLFIND) remove num 49 | 50 | uninstall: findlib-uninstall 51 | - cd $(DESTDIR)$(STDLIBDIR) && rm -f $(TOINSTALL) 52 | + cd $(LIBDIR) && rm -f $(TOINSTALL) 53 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" 54 | - cd $(DESTDIR)$(STDLIBDIR)/stublibs && rm -f $(TOINSTALL_STUBS) 55 | + cd $(LIBDIR)/stublibs && rm -f $(TOINSTALL_STUBS) 56 | endif 57 | 58 | clean: 59 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__num_opam__c__1.3_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildsInSource": true, 3 | "build": [ 4 | [ 5 | "make" 6 | ] 7 | ], 8 | "install": [ 9 | [ 10 | "make", 11 | "LIBDIR=#{self.install / 'lib'}", 12 | "findlib-install" 13 | ] 14 | ], 15 | "exportedEnv": { 16 | "CAML_LD_LIBRARY_PATH": { 17 | "val": "#{self.install / 'lib' / 'num' : $CAML_LD_LIBRARY_PATH}", 18 | "scope": "global" 19 | } 20 | }, 21 | "dependencies": { 22 | "ocaml": "*", 23 | "@opam/ocamlfind": "*" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__oasis_opam__c__0.4.11_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < oasis-0.4.11.patch' : 'true'}" 7 | ], 8 | [ 9 | "ocaml", 10 | "setup.ml", 11 | "-configure", 12 | "--prefix", 13 | "#{self.install}" 14 | ], 15 | [ 16 | "ocaml", 17 | "setup.ml", 18 | "-build" 19 | ] 20 | ], 21 | "install": [ 22 | [ 23 | "ocaml", 24 | "setup.ml", 25 | "-install" 26 | ] 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocaml_migrate_parsetree_opam__c__1.1.0_opam_override/files/ocaml-migrate-parsetree.1.1.0.patch: -------------------------------------------------------------------------------- 1 | --- ./src/migrate_parsetree_driver.ml 2 | +++ ./src/migrate_parsetree_driver.ml 3 | @@ -371,9 +371,14 @@ let load_file file = 4 | | Intf fn -> 5 | (fn, Intf (Parse.interface lexbuf))) 6 | 7 | -let with_output output ~f = 8 | +let with_output ?bin output ~f = 9 | match output with 10 | - | None -> f stdout 11 | + | None -> 12 | + begin match bin with 13 | + | Some bin -> set_binary_mode_out stdout bin 14 | + | None -> () 15 | + end; 16 | + f stdout 17 | | Some fn -> with_file_out fn ~f 18 | 19 | type output_mode = 20 | @@ -416,7 +421,7 @@ let process_file ~config ~output ~output_mode ~embed_errors file = 21 | in 22 | match output_mode with 23 | | Dump_ast -> 24 | - with_output output ~f:(fun oc -> 25 | + with_output ~bin:true output ~f:(fun oc -> 26 | let ast = 27 | match ast with 28 | | Intf (_, sg) -> Ast_io.Intf ((module OCaml_current), sg) 29 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocaml_migrate_parsetree_opam__c__1.1.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < ocaml-migrate-parsetree.1.1.0.patch' : 'true'}" 7 | ], 8 | [ 9 | "jbuilder", 10 | "build", 11 | "-p", 12 | "ocaml-migrate-parsetree", 13 | "-j", 14 | "4" 15 | ] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -213,7 +213,7 @@ 4 | rm -f man/ocamlbuild.1 5 | 6 | man/options_man.byte: src/ocamlbuild_pack.cmo 7 | - $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte 8 | + $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte 9 | 10 | clean:: 11 | rm -f man/options_man.cm* 12 | --- ./src/command.ml 13 | +++ ./src/command.ml 14 | @@ -148,9 +148,10 @@ 15 | let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in 16 | let b = Buffer.create 256 in 17 | (* The best way to prevent bash from switching to its windows-style 18 | - * quote-handling is to prepend an empty string before the command name. *) 19 | + * quote-handling is to prepend an empty string before the command name. 20 | + * space seems to work, too - and the ouput is nicer *) 21 | if Sys.os_type = "Win32" then 22 | - Buffer.add_string b "''"; 23 | + Buffer.add_char b ' '; 24 | let first = ref true in 25 | let put_space () = 26 | if !first then 27 | @@ -260,7 +261,7 @@ 28 | 29 | let execute_many ?(quiet=false) ?(pretend=false) cmds = 30 | add_parallel_stat (List.length cmds); 31 | - let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in 32 | + let degraded = !*My_unix.is_degraded in 33 | let jobs = !jobs in 34 | if jobs < 0 then invalid_arg "jobs < 0"; 35 | let max_jobs = if jobs = 0 then None else Some jobs in 36 | --- ./src/findlib.ml 37 | +++ ./src/findlib.ml 38 | @@ -66,9 +66,6 @@ 39 | (fun command -> lexer & Lexing.from_string & run_and_read command) 40 | command 41 | 42 | -let run_and_read command = 43 | - Printf.ksprintf run_and_read command 44 | - 45 | let rec query name = 46 | try 47 | Hashtbl.find packages name 48 | @@ -135,7 +132,8 @@ 49 | with Not_found -> s 50 | 51 | let list () = 52 | - List.map before_space (split_nl & run_and_read "%s list" ocamlfind) 53 | + let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in 54 | + List.map before_space (split_nl & run_and_read cmd) 55 | 56 | (* The closure algorithm is easy because the dependencies are already closed 57 | and sorted for each package. We only have to make the union. We could also 58 | --- ./src/main.ml 59 | +++ ./src/main.ml 60 | @@ -162,6 +162,9 @@ 61 | Tags.mem "traverse" tags 62 | || List.exists (Pathname.is_prefix path_name) !Options.include_dirs 63 | || List.exists (Pathname.is_prefix path_name) target_dirs) 64 | + && ((* beware: !Options.build_dir is an absolute directory *) 65 | + Pathname.normalize !Options.build_dir 66 | + <> Pathname.normalize (Pathname.pwd/path_name)) 67 | end 68 | end 69 | end 70 | --- ./src/my_std.ml 71 | +++ ./src/my_std.ml 72 | @@ -271,13 +271,107 @@ 73 | try Array.iter (fun x -> if x = basename then raise Exit) a; false 74 | with Exit -> true 75 | 76 | +let command_plain = function 77 | +| [| |] -> 0 78 | +| margv -> 79 | + let rec waitpid a b = 80 | + match Unix.waitpid a b with 81 | + | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b 82 | + | x -> x 83 | + in 84 | + let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in 85 | + let pid', process_status = waitpid [] pid in 86 | + assert (pid = pid'); 87 | + match process_status with 88 | + | Unix.WEXITED n -> n 89 | + | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) 90 | + | Unix.WSTOPPED _ -> 127 91 | + 92 | +(* can't use Lexers because of circular dependency *) 93 | +let split_path_win str = 94 | + let rec aux pos = 95 | + try 96 | + let i = String.index_from str pos ';' in 97 | + let len = i - pos in 98 | + if len = 0 then 99 | + aux (succ i) 100 | + else 101 | + String.sub str pos (i - pos) :: aux (succ i) 102 | + with Not_found | Invalid_argument _ -> 103 | + let len = String.length str - pos in 104 | + if len = 0 then [] else [String.sub str pos len] 105 | + in 106 | + aux 0 107 | + 108 | +let windows_shell = lazy begin 109 | + let rec iter = function 110 | + | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] 111 | + | hd::tl -> 112 | + let dash = Filename.concat hd "dash.exe" in 113 | + if Sys.file_exists dash then [|dash|] else 114 | + let bash = Filename.concat hd "bash.exe" in 115 | + if Sys.file_exists bash = false then iter tl else 116 | + (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) 117 | + let sh = Filename.concat hd "sh.exe" in 118 | + if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] 119 | + in 120 | + split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter 121 | +end 122 | + 123 | +let prep_windows_cmd cmd = 124 | + (* workaround known ocaml bug, remove later *) 125 | + if String.contains cmd '\t' && String.contains cmd ' ' = false then 126 | + " " ^ cmd 127 | + else 128 | + cmd 129 | + 130 | +let run_with_shell = function 131 | +| "" -> 0 132 | +| cmd -> 133 | + let cmd = prep_windows_cmd cmd in 134 | + let shell = Lazy.force windows_shell in 135 | + let qlen = Filename.quote cmd |> String.length in 136 | + (* old versions of dash had problems with bs *) 137 | + try 138 | + if qlen < 7_900 then 139 | + command_plain (Array.append shell [| "-ec" ; cmd |]) 140 | + else begin 141 | + (* it can still work, if the called command is a cygwin tool *) 142 | + let ch_closed = ref false in 143 | + let file_deleted = ref false in 144 | + let fln,ch = 145 | + Filename.open_temp_file 146 | + ~mode:[Open_binary] 147 | + "ocamlbuildtmp" 148 | + ".sh" 149 | + in 150 | + try 151 | + let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in 152 | + output_string ch cmd; 153 | + ch_closed:= true; 154 | + close_out ch; 155 | + let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in 156 | + file_deleted:= true; 157 | + Sys.remove fln; 158 | + ret 159 | + with 160 | + | x -> 161 | + if !ch_closed = false then 162 | + close_out_noerr ch; 163 | + if !file_deleted = false then 164 | + (try Sys.remove fln with _ -> ()); 165 | + raise x 166 | + end 167 | + with 168 | + | (Unix.Unix_error _) as x -> 169 | + (* Sys.command doesn't raise an exception, so run_with_shell also won't 170 | + raise *) 171 | + Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; 172 | + 1 173 | + 174 | let sys_command = 175 | - match Sys.os_type with 176 | - | "Win32" -> fun cmd -> 177 | - if cmd = "" then 0 else 178 | - let cmd = "bash --norc -c " ^ Filename.quote cmd in 179 | - Sys.command cmd 180 | - | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd 181 | + if Sys.win32 then run_with_shell 182 | + else fun cmd -> if cmd = "" then 0 else Sys.command cmd 183 | 184 | (* FIXME warning fix and use Filename.concat *) 185 | let filename_concat x y = 186 | --- ./src/my_std.mli 187 | +++ ./src/my_std.mli 188 | @@ -69,3 +69,6 @@ 189 | 190 | val split_ocaml_version : (int * int * int * string) option 191 | (** (major, minor, patchlevel, rest) *) 192 | + 193 | +val windows_shell : string array Lazy.t 194 | +val prep_windows_cmd : string -> string 195 | --- ./src/ocamlbuild_executor.ml 196 | +++ ./src/ocamlbuild_executor.ml 197 | @@ -34,6 +34,8 @@ 198 | job_stdin : out_channel; 199 | job_stderr : in_channel; 200 | job_buffer : Buffer.t; 201 | + job_pid : int; 202 | + job_tmp_file: string option; 203 | mutable job_dying : bool; 204 | };; 205 | 206 | @@ -76,6 +78,61 @@ 207 | in 208 | loop 0 209 | ;; 210 | + 211 | +let open_process_full_win cmd env = 212 | + let (in_read, in_write) = Unix.pipe () in 213 | + let (out_read, out_write) = Unix.pipe () in 214 | + let (err_read, err_write) = Unix.pipe () in 215 | + Unix.set_close_on_exec in_read; 216 | + Unix.set_close_on_exec out_write; 217 | + Unix.set_close_on_exec err_read; 218 | + let inchan = Unix.in_channel_of_descr in_read in 219 | + let outchan = Unix.out_channel_of_descr out_write in 220 | + let errchan = Unix.in_channel_of_descr err_read in 221 | + let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in 222 | + let test_cmd = 223 | + String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ 224 | + "-ec " ^ 225 | + Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in 226 | + let argv,tmp_file = 227 | + if String.length test_cmd < 7_900 then 228 | + Array.append 229 | + shell 230 | + [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None 231 | + else 232 | + let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in 233 | + output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); 234 | + close_out ch; 235 | + let fln' = String.map (function '\\' -> '/' | c -> c) fln in 236 | + Array.append 237 | + shell 238 | + [| "-c" ; fln' |], Some fln in 239 | + let pid = 240 | + Unix.create_process_env argv.(0) argv env out_read in_write err_write in 241 | + Unix.close out_read; 242 | + Unix.close in_write; 243 | + Unix.close err_write; 244 | + (pid, inchan, outchan, errchan,tmp_file) 245 | + 246 | +let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = 247 | + let delete tmp_file = 248 | + match tmp_file with 249 | + | None -> () 250 | + | Some x -> try Sys.remove x with Sys_error _ -> () in 251 | + let tmp_file_deleted = ref false in 252 | + try 253 | + close_in inchan; 254 | + close_out outchan; 255 | + close_in errchan; 256 | + let res = snd(Unix.waitpid [] pid) in 257 | + tmp_file_deleted := true; 258 | + delete tmp_file; 259 | + res 260 | + with 261 | + | x when tmp_file <> None && !tmp_file_deleted = false -> 262 | + delete tmp_file; 263 | + raise x 264 | + 265 | (* ***) 266 | (*** execute *) 267 | (* XXX: Add test for non reentrancy *) 268 | @@ -130,10 +187,16 @@ 269 | (*** add_job *) 270 | let add_job cmd rest result id = 271 | (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) 272 | - let (stdout', stdin', stderr') = open_process_full cmd env in 273 | + let (pid,stdout', stdin', stderr', tmp_file) = 274 | + if Sys.win32 then open_process_full_win cmd env else 275 | + let a,b,c = open_process_full cmd env in 276 | + -1,a,b,c,None 277 | + in 278 | incr jobs_active; 279 | - set_nonblock (doi stdout'); 280 | - set_nonblock (doi stderr'); 281 | + if not Sys.win32 then ( 282 | + set_nonblock (doi stdout'); 283 | + set_nonblock (doi stderr'); 284 | + ); 285 | let job = 286 | { job_id = id; 287 | job_command = cmd; 288 | @@ -143,7 +206,9 @@ 289 | job_stdin = stdin'; 290 | job_stderr = stderr'; 291 | job_buffer = Buffer.create 1024; 292 | - job_dying = false } 293 | + job_dying = false; 294 | + job_tmp_file = tmp_file; 295 | + job_pid = pid } 296 | in 297 | outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); 298 | jobs := JS.add job !jobs; 299 | @@ -199,6 +264,7 @@ 300 | try 301 | read fd u 0 (Bytes.length u) 302 | with 303 | + | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 304 | | Unix.Unix_error(e,_,_) -> 305 | let msg = error_message e in 306 | display (fun oc -> fp oc 307 | @@ -241,14 +307,19 @@ 308 | decr jobs_active; 309 | 310 | (* PR#5371: we would get EAGAIN below otherwise *) 311 | - clear_nonblock (doi job.job_stdout); 312 | - clear_nonblock (doi job.job_stderr); 313 | - 314 | + if not Sys.win32 then ( 315 | + clear_nonblock (doi job.job_stdout); 316 | + clear_nonblock (doi job.job_stderr); 317 | + ); 318 | do_read ~loop:true (doi job.job_stdout) job; 319 | do_read ~loop:true (doi job.job_stderr) job; 320 | outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); 321 | jobs := JS.remove job !jobs; 322 | - let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in 323 | + let status = 324 | + if Sys.win32 then 325 | + close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) 326 | + else 327 | + close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in 328 | 329 | let shown = ref false in 330 | 331 | --- ./src/ocamlbuild_unix_plugin.ml 332 | +++ ./src/ocamlbuild_unix_plugin.ml 333 | @@ -48,12 +48,22 @@ 334 | end 335 | 336 | let run_and_open s kont = 337 | + let s_orig = s in 338 | + let s = 339 | + (* Be consistent! My_unix.run_and_open uses My_std.sys_command and 340 | + sys_command uses bash. *) 341 | + if Sys.win32 = false then s else 342 | + let l = match Lazy.force My_std.windows_shell |> Array.to_list with 343 | + | hd::tl -> (Filename.quote hd)::tl 344 | + | _ -> assert false in 345 | + "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" 346 | + in 347 | let ic = Unix.open_process_in s in 348 | let close () = 349 | match Unix.close_process_in ic with 350 | | Unix.WEXITED 0 -> () 351 | | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> 352 | - failwith (Printf.sprintf "Error while running: %s" s) in 353 | + failwith (Printf.sprintf "Error while running: %s" s_orig) in 354 | let res = try 355 | kont ic 356 | with e -> (close (); raise e) 357 | --- ./src/options.ml 358 | +++ ./src/options.ml 359 | @@ -174,11 +174,24 @@ 360 | build_dir := Filename.concat (Sys.getcwd ()) s 361 | else 362 | build_dir := s 363 | + 364 | +let slashify = 365 | + if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p 366 | + else fun p ->p 367 | + 368 | +let sb () = 369 | + match Sys.os_type with 370 | + | "Win32" -> 371 | + (try set_binary_mode_out stdout true with _ -> ()); 372 | + | _ -> () 373 | + 374 | + 375 | let spec = ref ( 376 | let print_version () = 377 | + sb (); 378 | Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK 379 | in 380 | - let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in 381 | + let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in 382 | Arg.align 383 | [ 384 | "-version", Unit print_version , " Display the version"; 385 | @@ -257,8 +270,8 @@ 386 | "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; 387 | "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; 388 | "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; 389 | - "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; 390 | - "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; 391 | + "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; 392 | + "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; 393 | "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; 394 | "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ 395 | used when building myocamlbuild.ml (only)"; 396 | --- ./src/pathname.ml 397 | +++ ./src/pathname.ml 398 | @@ -84,6 +84,26 @@ 399 | | x :: xs -> x :: normalize_list xs 400 | 401 | let normalize x = 402 | + let x = 403 | + if Sys.win32 = false then 404 | + x 405 | + else 406 | + let len = String.length x in 407 | + let b = Bytes.create len in 408 | + for i = 0 to pred len do 409 | + match x.[i] with 410 | + | '\\' -> Bytes.set b i '/' 411 | + | c -> Bytes.set b i c 412 | + done; 413 | + if len > 1 then ( 414 | + let c1 = Bytes.get b 0 in 415 | + let c2 = Bytes.get b 1 in 416 | + if c2 = ':' && c1 >= 'a' && c1 <= 'z' && 417 | + ( len = 2 || Bytes.get b 2 = '/') then 418 | + Bytes.set b 0 (Char.uppercase_ascii c1) 419 | + ); 420 | + Bytes.unsafe_to_string b 421 | + in 422 | if Glob.eval not_normal_form_re x then 423 | let root, paths = split x in 424 | join root (normalize_list paths) 425 | --- ./src/shell.ml 426 | +++ ./src/shell.ml 427 | @@ -24,12 +24,26 @@ 428 | | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) 429 | | _ -> false in 430 | loop 0 431 | + 432 | +let generic_quote quotequote s = 433 | + let l = String.length s in 434 | + let b = Buffer.create (l + 20) in 435 | + Buffer.add_char b '\''; 436 | + for i = 0 to l - 1 do 437 | + if s.[i] = '\'' 438 | + then Buffer.add_string b quotequote 439 | + else Buffer.add_char b s.[i] 440 | + done; 441 | + Buffer.add_char b '\''; 442 | + Buffer.contents b 443 | +let unix_quote = generic_quote "'\\''" 444 | + 445 | let quote_filename_if_needed s = 446 | if is_simple_filename s then s 447 | (* We should probably be using [Filename.unix_quote] except that function 448 | * isn't exported. Users on Windows will have to live with not being able to 449 | * install OCaml into c:\o'caml. Too bad. *) 450 | - else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s 451 | + else if Sys.os_type = "Win32" then unix_quote s 452 | else Filename.quote s 453 | let chdir dir = 454 | reset_filesys_cache (); 455 | @@ -37,7 +51,7 @@ 456 | let run args target = 457 | reset_readdir_cache (); 458 | let cmd = String.concat " " (List.map quote_filename_if_needed args) in 459 | - if !*My_unix.is_degraded || Sys.os_type = "Win32" then 460 | + if !*My_unix.is_degraded then 461 | begin 462 | Log.event cmd target Tags.empty; 463 | let st = sys_command cmd in 464 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" 7 | ], 8 | [ 9 | "make", 10 | "-f", 11 | "configure.make", 12 | "all", 13 | "OCAMLBUILD_PREFIX=#{self.install}", 14 | "OCAMLBUILD_BINDIR=#{self.bin}", 15 | "OCAMLBUILD_LIBDIR=#{self.lib}", 16 | "OCAMLBUILD_MANDIR=#{self.man}", 17 | "OCAMLBUILD_NATIVE=true", 18 | "OCAMLBUILD_NATIVE_TOOLS=true" 19 | ], 20 | [ 21 | "make", 22 | "check-if-preinstalled", 23 | "all", 24 | "#{os == 'windows' ? 'install' : 'opam-install'}" 25 | ] 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /esy.lock/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__ocamlify_opam__c__0.0.1_opam_override/files/esy-fix.patch: -------------------------------------------------------------------------------- 1 | --- ./setup.ml 2 | +++ ./setup.ml 3 | @@ -4670,9 +4670,7 @@ 4 | [ 5 | "-classic-display"; 6 | "-no-log"; 7 | - "-no-links"; 8 | - "-install-lib-dir"; 9 | - (Filename.concat (standard_library ()) "ocamlbuild") 10 | + "-no-links" 11 | ] 12 | else 13 | []; 14 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__ocamlify_opam__c__0.0.1_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < esy-fix.patch' : 'true'}" 7 | ], 8 | [ 9 | "ocaml", 10 | "setup.ml", 11 | "-configure", 12 | "--prefix", 13 | "#{self.install}" 14 | ], 15 | [ 16 | "ocaml", 17 | "setup.ml", 18 | "-build" 19 | ] 20 | ], 21 | "install": [ 22 | [ 23 | "ocaml", 24 | "setup.ml", 25 | "-install" 26 | ] 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__sexplib_opam__c__v0.10.0_opam_override/files/winconfigure: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | OS_SYSTEM="$(ocamlc -config | awk -F '[\t\r ]+' '/^system:/ {print $2}')" 4 | 5 | case "$OS_SYSTEM" in 6 | win*) 7 | if which gcc >/dev/null 2>&1 ; then 8 | cpp="gcc -undef -traditional -x c -E" 9 | elif which x86_64-w64-mingw32-gcc >/dev/null 2>&1 ; then 10 | cpp="x86_64-w64-mingw32-gcc -undef -traditional -x c -E" 11 | elif which i686-w64-mingw32-gcc >/dev/null 2>&1 ; then 12 | cpp="i686-w64-mingw32-gcc -undef -traditional -x c -E" 13 | else 14 | cpp="cpp -undef -traditional -x c -E" 15 | fi 16 | sed -i 's|${PA_CPP}|'"$cpp"'|g' src/jbuild 17 | ;; 18 | esac -------------------------------------------------------------------------------- /esy.lock/overrides/opam__s__sexplib_opam__c__v0.10.0_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? './winconfigure' : 'true' }" 7 | ], 8 | [ 9 | "jbuilder", 10 | "build", 11 | "-p", 12 | "sexplib", 13 | "-j", 14 | "4" 15 | ] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bs-doc", 3 | "version": "0.2.0", 4 | "description": "Generate documentation for Bucklescript libraries.", 5 | "license": "MIT", 6 | "esy": { 7 | "build": "dune build --profile=release" 8 | }, 9 | "dependencies": { 10 | "@opam/odoc": "*", 11 | "@opam/cmdliner": "*", 12 | "ocaml": "~4.6.1" 13 | }, 14 | "resolutions": { 15 | "@opam/odoc": "github:odis-labs/odoc:ocaml-4.06.json#b3960b2f08ad9a0f2130110bc50dcd4e1514027f", 16 | "@opam/odoc-local": "link:../odoc/ocaml-4.06.json" 17 | }, 18 | "devDependencies": { 19 | "ocaml": "~4.6.1", 20 | "@opam/dune": "*", 21 | "@opam/merlin": "*" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Main.ml: -------------------------------------------------------------------------------- 1 | 2 | module Config = struct 3 | let runtime_path ~bs_project_dir = 4 | bs_project_dir ^ "/jscomp/runtime" 5 | 6 | let belt_path ~bs_project_dir = 7 | bs_project_dir ^ "/jscomp/others" 8 | 9 | let odoc_cache_path ~output_dir = 10 | output_dir ^ "/_odoc" 11 | 12 | let json_path ~output_dir = 13 | output_dir ^ "/_json" 14 | end 15 | 16 | 17 | let run cmd = 18 | cmd 19 | |> String.concat " " 20 | |> Unix.system 21 | |> begin function 22 | | Unix.WEXITED 0 -> () 23 | | Unix.WEXITED e -> 24 | prerr_endline ( 25 | "Error while running `" ^ String.concat " " cmd ^ "`:" ^ "\n" ^ 26 | "Exited with a non-zero code: " ^ string_of_int e 27 | ); 28 | exit (100 + e) 29 | | _ -> 30 | prerr_endline ( 31 | "Error while running `" ^ String.concat " " cmd ^ "`:" ^ "\n" ^ 32 | "Unexpected termination" 33 | ); 34 | exit 100 35 | end 36 | 37 | 38 | let odoc_compile ~odoc_exe ?odoc_cache_path ~package ~output_dir comp_unit_path = 39 | let comp_unit_name = Filename.remove_extension (Filename.basename comp_unit_path) in 40 | let odoc_file = Config.odoc_cache_path ~output_dir ^ "/" ^ comp_unit_name ^ ".odoc" in 41 | let cmd = [ 42 | odoc_exe; 43 | "compile"; 44 | "--package=" ^ package; 45 | "-o"; odoc_file; 46 | ] in 47 | let cmd = 48 | match odoc_cache_path with 49 | | Some p -> cmd @ ["-I" ^ p] 50 | | None -> cmd in 51 | let cmd = cmd @ [comp_unit_path] in 52 | run cmd; 53 | odoc_file 54 | 55 | 56 | let odoc_json ~odoc_exe ?odoc_cache_path ~output_dir odoc_file = 57 | let cmd = [ 58 | odoc_exe; "json"; 59 | "-o"; Config.json_path ~output_dir; 60 | ] in 61 | let cmd = 62 | match odoc_cache_path with 63 | | Some p -> cmd @ ["-I" ^ p] 64 | | None -> cmd in 65 | let cmd = cmd @ [odoc_file] in 66 | prerr_endline ("Will generate JSON files for " ^ Filename.basename odoc_file ^ 67 | " in " ^ Config.json_path ~output_dir); 68 | run cmd 69 | 70 | 71 | type package = { 72 | name : string; 73 | path : string; 74 | deps : package list; 75 | comp_units: string list; 76 | } 77 | 78 | let runtime ~bs_project_dir = { 79 | name = "runtime"; 80 | path = Config.runtime_path ~bs_project_dir; 81 | deps = []; 82 | comp_units = ["js.cmi"] 83 | } 84 | 85 | let belt ~bs_project_dir = { 86 | name = "belt"; 87 | path = Config.belt_path ~bs_project_dir; 88 | deps = [runtime ~bs_project_dir]; 89 | comp_units = [ 90 | "belt_Array.cmti"; 91 | "belt_Float.cmti"; 92 | "belt_HashMap.cmti"; 93 | "belt_HashMapInt.cmti"; 94 | "belt_HashMapString.cmti"; 95 | "belt_HashSet.cmti"; 96 | "belt_HashSetInt.cmti"; 97 | "belt_HashSetString.cmti"; 98 | "belt_Id.cmti"; 99 | "belt_Int.cmti"; 100 | "belt_internalAVLset.cmti"; 101 | "belt_internalAVLtree.cmti"; 102 | "belt_internalBuckets.cmti"; 103 | "belt_internalBucketsType.cmti"; 104 | "belt_internalSetBuckets.cmti"; 105 | "belt_List.cmti"; 106 | "belt_Map.cmti"; 107 | "belt_MapDict.cmti"; 108 | "belt_MapInt.cmti"; 109 | "belt_MapString.cmti"; 110 | "belt_MutableMap.cmti"; 111 | "belt_MutableMapInt.cmti"; 112 | "belt_MutableMapString.cmti"; 113 | "belt_MutableQueue.cmti"; 114 | "belt_MutableSet.cmti"; 115 | "belt_MutableSetInt.cmti"; 116 | "belt_MutableSetString.cmti"; 117 | "belt_MutableStack.cmti"; 118 | "belt_Option.cmti"; 119 | "belt_Range.cmti"; 120 | "belt_Result.cmti"; 121 | "belt_Set.cmti"; 122 | "belt_SetDict.cmti"; 123 | "belt_SetInt.cmti"; 124 | "belt_SetString.cmti"; 125 | "belt_SortArray.cmti"; 126 | "belt_SortArrayInt.cmti"; 127 | "belt_SortArrayString.cmti"; 128 | ] 129 | } 130 | 131 | (** Given a package compile it and produce JSON files with odoc. *) 132 | let rec process_package ~odoc_exe ~odoc_cache_path ~output_dir pkg : unit = 133 | List.iter (process_package ~odoc_exe ~odoc_cache_path ~output_dir) pkg.deps; 134 | pkg.comp_units 135 | |> List.map (fun comp_units -> pkg.path ^ "/" ^ comp_units) 136 | |> List.iter (fun comp_unit_path -> 137 | let odoc_file = odoc_compile ~odoc_cache_path ~odoc_exe ~package:pkg.name ~output_dir comp_unit_path in 138 | odoc_json ~odoc_exe ~odoc_cache_path ~output_dir odoc_file) 139 | 140 | 141 | let main odoc_exe bs_project_dir output_dir = 142 | prerr_endline ("Starting..."); 143 | run ["mkdir"; "-p"; output_dir]; 144 | 145 | process_package (belt ~bs_project_dir) 146 | ~odoc_exe 147 | ~odoc_cache_path:(Config.odoc_cache_path ~output_dir) 148 | ~output_dir; 149 | 150 | prerr_endline "Done." 151 | 152 | 153 | open Cmdliner 154 | 155 | 156 | let odoc_exe = 157 | Arg.( 158 | info ["odoc-exe"] ~docv:"PATH" ~doc:"The path to the odoc executable to be used for doc generation." 159 | |> opt (some string) (Some "odoc") 160 | |> required 161 | ) 162 | 163 | let bs_project_dir = 164 | Arg.( 165 | info ["bs-project-dir"] ~docv:"PATH" ~doc:"The path to the Bucklescript git repository." 166 | |> opt (some dir) None 167 | |> required 168 | ) 169 | 170 | let output_dir = 171 | Arg.( 172 | info ["o"; "output-dir"] ~docv:"PATH" 173 | ~doc:"The path to directory where generated documentation will be saved." 174 | |> opt (some string) (Some "_output") 175 | |> required 176 | ) 177 | 178 | let () = 179 | Term.( 180 | (pure(main) $ odoc_exe $ bs_project_dir $ output_dir, 181 | info "bs-doc" ~version:"0.1.0" ~doc:"Generate documentation for Bucklescript libraries") 182 | |> eval 183 | |> exit 184 | ) 185 | -------------------------------------------------------------------------------- /src/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name Main) 3 | (public_name bs-doc) 4 | (libraries cmdliner unix)) --------------------------------------------------------------------------------