Browse Source

Move from base to core (#101)

Vendored the Path library from reason-native for cross-platform realpath
remotes/origin/add-simple-redirecting-site
Ulrik Strid 6 years ago committed by Gal Schlezinger
parent
commit
cc2f3bd915
  1. 2681
      esy.lock/index.json
  2. 21
      esy.lock/opam/base.v0.12.0/opam
  3. 36
      esy.lock/opam/bin_prot.v0.11.0/opam
  4. 33
      esy.lock/opam/configurator.v0.11.0/opam
  5. 35
      esy.lock/opam/core.v0.11.3/opam
  6. 47
      esy.lock/opam/core_kernel.v0.11.1/opam
  7. 30
      esy.lock/opam/fieldslib.v0.11.0/opam
  8. 27
      esy.lock/opam/fieldslib.v0.12.0/opam
  9. 21
      esy.lock/opam/jane-street-headers.v0.11.0/opam
  10. 24
      esy.lock/opam/octavius.1.2.1/opam
  11. 22
      esy.lock/opam/parsexp.v0.12.0/opam
  12. 28
      esy.lock/opam/ppx_assert.v0.11.0/opam
  13. 33
      esy.lock/opam/ppx_base.v0.11.0/opam
  14. 25
      esy.lock/opam/ppx_bench.v0.11.0/opam
  15. 26
      esy.lock/opam/ppx_bin_prot.v0.11.1/opam
  16. 24
      esy.lock/opam/ppx_compare.v0.11.1/opam
  17. 25
      esy.lock/opam/ppx_custom_printf.v0.11.0/opam
  18. 24
      esy.lock/opam/ppx_enumerate.v0.11.1/opam
  19. 35
      esy.lock/opam/ppx_expect.v0.11.1/opam
  20. 26
      esy.lock/opam/ppx_fail.v0.11.0/opam
  21. 25
      esy.lock/opam/ppx_fields_conv.v0.11.0/opam
  22. 26
      esy.lock/opam/ppx_fields_conv.v0.12.0/opam
  23. 27
      esy.lock/opam/ppx_hash.v0.11.1/opam
  24. 25
      esy.lock/opam/ppx_here.v0.11.0/opam
  25. 24
      esy.lock/opam/ppx_inline_test.v0.11.0/opam
  26. 44
      esy.lock/opam/ppx_jane.v0.11.0/opam
  27. 29
      esy.lock/opam/ppx_js_style.v0.11.0/opam
  28. 25
      esy.lock/opam/ppx_let.v0.11.0/opam
  29. 25
      esy.lock/opam/ppx_let.v0.12.0/opam
  30. 25
      esy.lock/opam/ppx_optcomp.v0.11.0/opam
  31. 27
      esy.lock/opam/ppx_optional.v0.11.0/opam
  32. 25
      esy.lock/opam/ppx_pipebang.v0.11.0/opam
  33. 25
      esy.lock/opam/ppx_sexp_conv.v0.11.2/opam
  34. 26
      esy.lock/opam/ppx_sexp_conv.v0.12.0/opam
  35. 26
      esy.lock/opam/ppx_sexp_message.v0.11.0/opam
  36. 27
      esy.lock/opam/ppx_sexp_value.v0.11.0/opam
  37. 25
      esy.lock/opam/ppx_typerep_conv.v0.11.1/opam
  38. 26
      esy.lock/opam/ppx_variants_conv.v0.11.1/opam
  39. 23
      esy.lock/opam/sexplib.v0.12.0/opam
  40. 25
      esy.lock/opam/sexplib0.v0.12.0/opam
  41. 43
      esy.lock/opam/spawn.v0.13.0/opam
  42. 32
      esy.lock/opam/splittable_random.v0.11.0/opam
  43. 21
      esy.lock/opam/stdio.v0.12.0/opam
  44. 22
      esy.lock/opam/typerep.v0.11.0/opam
  45. 28
      esy.lock/opam/variantslib.v0.11.0/opam
  46. 56
      esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/files/base-v0.11.1.patch
  47. 17
      esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/package.json
  48. 41
      esy.lock/overrides/opam__s__base_opam__c__v0.12.0_opam_override/files/base-v0.12.0.patch
  49. 18
      esy.lock/overrides/opam__s__base_opam__c__v0.12.0_opam_override/package.json
  50. 201
      esy.lock/overrides/opam__s__core__kernel_opam__c__v0.11.1_opam_override/files/core_kernel-0.11.1.patch
  51. 17
      esy.lock/overrides/opam__s__core__kernel_opam__c__v0.11.1_opam_override/package.json
  52. 2
      executable/dune
  53. 503
      library/Path.re
  54. 276
      library/Path.rei
  55. 2
      library/Semver.re
  56. 18
      library/Versions.re
  57. 2
      library/dune
  58. 6
      package.json

2681
esy.lock/index.json

File diff suppressed because it is too large Load Diff

21
esy.lock/opam/base.v0.11.1/opam → esy.lock/opam/base.v0.12.0/opam

@ -4,20 +4,21 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] @@ -4,20 +4,21 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/base"
bug-reports: "https://github.com/janestreet/base/issues"
dev-repo: "git+https://github.com/janestreet/base.git"
license: "Apache-2.0"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/base/index.html"
license: "MIT"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1" & < "4.08.0"}
"sexplib0" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml" {>= "4.04.2" & < "4.08.0"}
"sexplib0" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
]
depopts: [
"base-native-int63"
]
synopsis: "Full standard library replacement for OCaml"
description: """
description: "
Full standard library replacement for OCaml
Base is a complete and portable alternative to the OCaml standard
@ -29,9 +30,9 @@ Base aims to be usable in any context. As a result system dependent @@ -29,9 +30,9 @@ Base aims to be usable in any context. As a result system dependent
features such as I/O are not offered by Base. They are instead
provided by companion libraries such as stdio:
https://github.com/janestreet/stdio"""
https://github.com/janestreet/stdio
"
url {
src:
"https://github.com/janestreet/base/releases/download/v0.11.1/base-v0.11.1.tbz"
checksum: "md5=e7e7dc5db3f1fea19d74a31bbd4ac621"
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/base-v0.12.0.tar.gz"
checksum: "md5=e522176bc2cca7c12745539fa72356ad"
}

36
esy.lock/opam/bin_prot.v0.11.0/opam

@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/bin_prot"
bug-reports: "https://github.com/janestreet/bin_prot/issues"
dev-repo: "git+https://github.com/janestreet/bin_prot.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_compare" {>= "v0.11" & < "v0.12"}
"ppx_custom_printf" {>= "v0.11" & < "v0.12"}
"ppx_fields_conv" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"ppx_variants_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
]
depopts: [
"mirage-xen-ocaml"
]
synopsis: "A binary protocol generator"
description: """
Part of Jane Street's Core library
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/bin_prot-v0.11.0.tar.gz"
checksum: "md5=64495e0e88fe7cccba6e66b0deaef283"
}

33
esy.lock/opam/configurator.v0.11.0/opam

@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/configurator"
bug-reports: "https://github.com/janestreet/configurator/issues"
dev-repo: "git+https://github.com/janestreet/configurator.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11"}
"stdio" {>= "v0.11"}
"jbuilder" {build & >= "1.0+beta18.1"}
]
synopsis: "Helper library for gathering system configuration"
description: """
Configurator is a small library that helps writing OCaml scripts that
test features available on the system, in order to generate config.h
files for instance.
Configurator allows one to:
- test if a C program compiles
- query pkg-config
- import #define from OCaml header files
- generate config.h file"""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/configurator-v0.11.0.tar.gz"
checksum: "md5=55511f3ea8e3d66439910b3324701218"
}

35
esy.lock/opam/core.v0.11.3/opam

@ -1,35 +0,0 @@ @@ -1,35 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/core"
bug-reports: "https://github.com/janestreet/core/issues"
dev-repo: "git+https://github.com/janestreet/core.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"configurator" {>= "v0.11" & < "v0.12"}
"core_kernel" {>= "v0.11" & < "v0.12"}
"ppx_assert" {>= "v0.11" & < "v0.12"}
"ppx_jane" {>= "v0.11" & < "v0.12"}
"sexplib" {>= "v0.11" & < "v0.12"}
"spawn" {>= "v0.12"}
"stdio" {>= "v0.11" & < "v0.12"}
"base-threads"
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Industrial strength alternative to OCaml's standard library"
description: """
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml."""
url {
src:
"https://github.com/janestreet/core/releases/download/v0.11.3/core-v0.11.3.tbz"
checksum: "md5=89ca9e9aa9f1742790efb5016cc5d69b"
}

47
esy.lock/opam/core_kernel.v0.11.1/opam

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/core_kernel"
bug-reports: "https://github.com/janestreet/core_kernel/issues"
dev-repo: "git+https://github.com/janestreet/core_kernel.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"bin_prot" {>= "v0.11" & < "v0.12"}
"configurator" {>= "v0.11" & < "v0.12"}
"fieldslib" {>= "v0.11" & < "v0.12"}
"jane-street-headers" {>= "v0.11" & < "v0.12"}
"ppx_assert" {>= "v0.11" & < "v0.12"}
"ppx_base" {>= "v0.11" & < "v0.12"}
"ppx_hash" {>= "v0.11" & < "v0.12"}
"ppx_inline_test" {>= "v0.11" & < "v0.12"}
"ppx_jane" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"ppx_sexp_message" {>= "v0.11" & < "v0.12"}
"sexplib" {>= "v0.11" & < "v0.12"}
"splittable_random" {>= "v0.11" & < "v0.12"}
"stdio" {>= "v0.11" & < "v0.12"}
"typerep" {>= "v0.11" & < "v0.12"}
"variantslib" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
]
depopts: [
"base-native-int63"
]
synopsis: "Industrial strength alternative to OCaml's standard library"
description: """
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml.
Core_kernel is the system-independent part of Core."""
url {
src: "https://github.com/janestreet/core_kernel/archive/v0.11.1.tar.gz"
checksum: "md5=2946775ce7660e026996d55da9c10b83"
}

30
esy.lock/opam/fieldslib.v0.11.0/opam

@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/fieldslib"
bug-reports: "https://github.com/janestreet/fieldslib/issues"
dev-repo: "git+https://github.com/janestreet/fieldslib.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis:
"Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values"
description: """
Part of Jane Street's Core library
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/fieldslib-v0.11.0.tar.gz"
checksum: "md5=a42506b460a1dc47fb65a37d875211ae"
}

27
esy.lock/opam/fieldslib.v0.12.0/opam

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/fieldslib"
bug-reports: "https://github.com/janestreet/fieldslib/issues"
dev-repo: "git+https://github.com/janestreet/fieldslib.git"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/fieldslib/index.html"
license: "MIT"
build: [
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.2"}
"base" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
]
synopsis: "Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values"
description: "
Part of Jane Street's Core library
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml.
"
url {
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/fieldslib-v0.12.0.tar.gz"
checksum: "md5=7cb44f0fb396b6645fc9965ebb8e6741"
}

21
esy.lock/opam/jane-street-headers.v0.11.0/opam

@ -1,21 +0,0 @@ @@ -1,21 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/jane-street-headers"
bug-reports: "https://github.com/janestreet/jane-street-headers/issues"
dev-repo: "git+https://github.com/janestreet/jane-street-headers.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"jbuilder" {build & >= "1.0+beta18.1"}
]
synopsis: "Jane Street C header files"
description: "C header files shared between the various Jane Street packages"
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/jane-street-headers-v0.11.0.tar.gz"
checksum: "md5=13299bfe41f66f6a3f42cfaa015f4869"
}

24
esy.lock/opam/octavius.1.2.1/opam

@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
opam-version: "2.0"
maintainer: "leo@lpw25.net"
authors: [ "Leo White <leo@lpw25.net>" ]
homepage: "https://github.com/ocaml-doc/octavius"
doc: "http://ocaml-doc.github.io/octavius/"
license: "ISC"
dev-repo: "git+http://github.com/ocaml-doc/octavius.git"
bug-reports: "https://github.com/ocaml-doc/octavius/issues"
tags: ["doc" "ocamldoc" "org:ocaml-doc"]
depends: [
"ocaml" {>= "4.03.0"}
"jbuilder" {build & >= "1.0+beta7"}
]
build: [
["jbuilder" "subst" "-p" name] {pinned}
["jbuilder" "build" "-p" name "-j" jobs]
]
synopsis: "Ocamldoc comment syntax parser"
description: "Octavius is a library to parse the `ocamldoc` comment syntax."
url {
src: "https://github.com/ocaml-doc/octavius/archive/v1.2.1.tar.gz"
checksum: "md5=fe5f2e1ea8eba9f8c618580a34942bf1"
}

22
esy.lock/opam/parsexp.v0.11.0/opam → esy.lock/opam/parsexp.v0.12.0/opam

@ -4,17 +4,19 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] @@ -4,17 +4,19 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/parsexp"
bug-reports: "https://github.com/janestreet/parsexp/issues"
dev-repo: "git+https://github.com/janestreet/parsexp.git"
license: "Apache-2.0"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/parsexp/index.html"
license: "MIT"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"sexplib0" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml" {>= "4.04.2"}
"base" {>= "v0.12" & < "v0.13"}
"sexplib0" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
]
synopsis: "S-expression parsing library"
description: """
description: "
This library provides generic parsers for parsing S-expressions from
strings or other medium.
@ -33,9 +35,9 @@ It provides three different class of parsers: @@ -33,9 +35,9 @@ It provides three different class of parsers:
This library is portable and doesn't provide IO functions. To read
s-expressions from files or other external sources, you should use
parsexp_io."""
parsexp_io.
"
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/parsexp-v0.11.0.tar.gz"
checksum: "md5=816fce8d14b71a379296577c803bdbca"
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/parsexp-v0.12.0.tar.gz"
checksum: "md5=741b2c6f59b9618e3affabaa34d468a2"
}

28
esy.lock/opam/ppx_assert.v0.11.0/opam

@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_assert"
bug-reports: "https://github.com/janestreet/ppx_assert/issues"
dev-repo: "git+https://github.com/janestreet/ppx_assert.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_compare" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Assert-like extension nodes that raise useful errors on failure"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_assert-v0.11.0.tar.gz"
checksum: "md5=0b3aed19391e9a23217a5abf022dfe10"
}

33
esy.lock/opam/ppx_base.v0.11.0/opam

@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_base"
bug-reports: "https://github.com/janestreet/ppx_base/issues"
dev-repo: "git+https://github.com/janestreet/ppx_base.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"ppx_compare" {>= "v0.11" & < "v0.12"}
"ppx_enumerate" {>= "v0.11" & < "v0.12"}
"ppx_hash" {>= "v0.11" & < "v0.12"}
"ppx_js_style" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Base set of ppx rewriters"
description: """
ppx_base is the set of ppx rewriters used for Base.
Note that Base doesn't need ppx to build, it is only used as a
verification tool."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_base-v0.11.0.tar.gz"
checksum: "md5=a0020fbf308592aa71932bea8135fac5"
}

25
esy.lock/opam/ppx_bench.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_bench"
bug-reports: "https://github.com/janestreet/ppx_bench/issues"
dev-repo: "git+https://github.com/janestreet/ppx_bench.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"ppx_inline_test" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Syntax extension for writing in-line benchmarks in ocaml code"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_bench-v0.11.0.tar.gz"
checksum: "md5=a1565e9aa8e341f33e2e3dd712c889c8"
}

26
esy.lock/opam/ppx_bin_prot.v0.11.1/opam

@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_bin_prot"
bug-reports: "https://github.com/janestreet/ppx_bin_prot/issues"
dev-repo: "git+https://github.com/janestreet/ppx_bin_prot.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"bin_prot" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis: "Generation of bin_prot readers and writers from types"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src: "https://github.com/janestreet/ppx_bin_prot/archive/v0.11.1.tar.gz"
checksum: "md5=fae0a476df94eb1dc7fccb293adffe1f"
}

24
esy.lock/opam/ppx_compare.v0.11.1/opam

@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_compare"
bug-reports: "https://github.com/janestreet/ppx_compare/issues"
dev-repo: "git+https://github.com/janestreet/ppx_compare.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis: "Generation of comparison functions from types"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src: "https://github.com/janestreet/ppx_compare/archive/v0.11.1.tar.gz"
checksum: "md5=3df1a90fc90d180b1f96cdd30e64145d"
}

25
esy.lock/opam/ppx_custom_printf.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_custom_printf"
bug-reports: "https://github.com/janestreet/ppx_custom_printf/issues"
dev-repo: "git+https://github.com/janestreet/ppx_custom_printf.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Printf-style format-strings for user-defined string conversion"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_custom_printf-v0.11.0.tar.gz"
checksum: "md5=b7cf49585319576dd77f6ddd6db95b21"
}

24
esy.lock/opam/ppx_enumerate.v0.11.1/opam

@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_enumerate"
bug-reports: "https://github.com/janestreet/ppx_enumerate/issues"
dev-repo: "git+https://github.com/janestreet/ppx_enumerate.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis: "Generate a list containing all values of a finite type"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src: "https://github.com/janestreet/ppx_enumerate/archive/v0.11.1.tar.gz"
checksum: "md5=25107fc78678dc46058aa5d3a7f3ab84"
}

35
esy.lock/opam/ppx_expect.v0.11.1/opam

@ -1,35 +0,0 @@ @@ -1,35 +0,0 @@
opam-version: "2.0"
version: "v0.11.1"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_expect"
bug-reports: "https://github.com/janestreet/ppx_expect/issues"
dev-repo: "git+https://github.com/janestreet/ppx_expect.git"
license: "MIT"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"base" {>= "v0.11" & < "v0.12"}
"ppx_assert" {>= "v0.11" & < "v0.12"}
"ppx_compare" {>= "v0.11" & < "v0.12"}
"ppx_custom_printf" {>= "v0.11" & < "v0.12"}
"ppx_fields_conv" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"ppx_inline_test" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"ppx_variants_conv" {>= "v0.11" & < "v0.12"}
"stdio" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
"re" {>= "1.5.0"}
"ocaml" {>= "4.04.1"}
]
synopsis: "Cram like framework for OCaml"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://github.com/janestreet/ppx_expect/releases/download/v0.11.1/ppx_expect-v0.11.1.tbz"
checksum: "md5=ee5e03094674de295aadc10efe6bb7b7"
}

26
esy.lock/opam/ppx_fail.v0.11.0/opam

@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_fail"
bug-reports: "https://github.com/janestreet/ppx_fail/issues"
dev-repo: "git+https://github.com/janestreet/ppx_fail.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Add location to calls to failwiths"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_fail-v0.11.0.tar.gz"
checksum: "md5=b153a48e619b819a89924857586e76ac"
}

25
esy.lock/opam/ppx_fields_conv.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_fields_conv"
bug-reports: "https://github.com/janestreet/ppx_fields_conv/issues"
dev-repo: "git+https://github.com/janestreet/ppx_fields_conv.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"fieldslib" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Generation of accessor and iteration functions for ocaml records"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_fields_conv-v0.11.0.tar.gz"
checksum: "md5=72f207c23d65f7f3eaabcc92e33ccdab"
}

26
esy.lock/opam/ppx_fields_conv.v0.12.0/opam

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_fields_conv"
bug-reports: "https://github.com/janestreet/ppx_fields_conv/issues"
dev-repo: "git+https://github.com/janestreet/ppx_fields_conv.git"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/ppx_fields_conv/index.html"
license: "MIT"
build: [
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.2"}
"base" {>= "v0.12" & < "v0.13"}
"fieldslib" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
"ppxlib" {>= "0.5.0"}
]
synopsis: "Generation of accessor and iteration functions for ocaml records"
description: "
Part of the Jane Street's PPX rewriters collection.
"
url {
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/ppx_fields_conv-v0.12.0.tar.gz"
checksum: "md5=5bdf701197abc0dd4145a489912e49aa"
}

27
esy.lock/opam/ppx_hash.v0.11.1/opam

@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_hash"
bug-reports: "https://github.com/janestreet/ppx_hash/issues"
dev-repo: "git+https://github.com/janestreet/ppx_hash.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_compare" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis:
"A ppx rewriter that generates hash functions from type expressions and definitions"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src: "https://github.com/janestreet/ppx_hash/archive/v0.11.1.tar.gz"
checksum: "md5=48dfe890e195808ccdae0a7261bbb17d"
}

25
esy.lock/opam/ppx_here.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_here"
bug-reports: "https://github.com/janestreet/ppx_here/issues"
dev-repo: "git+https://github.com/janestreet/ppx_here.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Expands [%here] into its location"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_here-v0.11.0.tar.gz"
checksum: "md5=479c9cd5f6ef90c2df9f01eab9d6c91d"
}

24
esy.lock/opam/ppx_inline_test.v0.11.0/opam

@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_inline_test"
bug-reports: "https://github.com/janestreet/ppx_inline_test/issues"
dev-repo: "git+https://github.com/janestreet/ppx_inline_test.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Syntax extension for writing in-line tests in ocaml code"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_inline_test-v0.11.0.tar.gz"
checksum: "md5=1f2e014332373638696d8893d87f4682"
}

44
esy.lock/opam/ppx_jane.v0.11.0/opam

@ -1,44 +0,0 @@ @@ -1,44 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_jane"
bug-reports: "https://github.com/janestreet/ppx_jane/issues"
dev-repo: "git+https://github.com/janestreet/ppx_jane.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"ppx_assert" {>= "v0.11" & < "v0.12"}
"ppx_base" {>= "v0.11" & < "v0.12"}
"ppx_bench" {>= "v0.11" & < "v0.12"}
"ppx_bin_prot" {>= "v0.11" & < "v0.12"}
"ppx_custom_printf" {>= "v0.11" & < "v0.12"}
"ppx_expect" {>= "v0.11" & < "v0.12"}
"ppx_fail" {>= "v0.11" & < "v0.12"}
"ppx_fields_conv" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"ppx_inline_test" {>= "v0.11" & < "v0.12"}
"ppx_let" {>= "v0.11" & < "v0.12"}
"ppx_optcomp" {>= "v0.11" & < "v0.12"}
"ppx_optional" {>= "v0.11" & < "v0.12"}
"ppx_pipebang" {>= "v0.11" & < "v0.12"}
"ppx_sexp_message" {>= "v0.11" & < "v0.12"}
"ppx_sexp_value" {>= "v0.11" & < "v0.12"}
"ppx_typerep_conv" {>= "v0.11" & < "v0.12"}
"ppx_variants_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Standard Jane Street ppx rewriters"
description: """
This package installs a ppx-jane executable, which is a ppx driver
including all standard Jane Street ppx rewriters."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_jane-v0.11.0.tar.gz"
checksum: "md5=11da0871ae3841fb6710ec6471ce6b92"
}

29
esy.lock/opam/ppx_js_style.v0.11.0/opam

@ -1,29 +0,0 @@ @@ -1,29 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_js_style"
bug-reports: "https://github.com/janestreet/ppx_js_style/issues"
dev-repo: "git+https://github.com/janestreet/ppx_js_style.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"octavius"
"ppxlib" {>= "0.1.0"}
]
synopsis: "Code style checker for Jane Street Packages"
description: """
Part of the Jane Street's PPX rewriters collection.
This packages is a no-op ppx rewriter. It is used as a 'lint' tool to
enforce some coding conventions across all Jane Street packages."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_js_style-v0.11.0.tar.gz"
checksum: "md5=0994a7ecf0468f13fcac660413afafad"
}

25
esy.lock/opam/ppx_let.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_let"
bug-reports: "https://github.com/janestreet/ppx_let/issues"
dev-repo: "git+https://github.com/janestreet/ppx_let.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Monadic let-bindings"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_let-v0.11.0.tar.gz"
checksum: "md5=40d1798d7724816c65eb5cdabd20f150"
}

25
esy.lock/opam/ppx_let.v0.12.0/opam

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_let"
bug-reports: "https://github.com/janestreet/ppx_let/issues"
dev-repo: "git+https://github.com/janestreet/ppx_let.git"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/ppx_let/index.html"
license: "MIT"
build: [
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.2"}
"base" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
"ppxlib" {>= "0.5.0"}
]
synopsis: "Monadic let-bindings"
description: "
Part of the Jane Street's PPX rewriters collection.
"
url {
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/ppx_let-v0.12.0.tar.gz"
checksum: "md5=8ebaa03cb252e29c3152cf32e5769e83"
}

25
esy.lock/opam/ppx_optcomp.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_optcomp"
bug-reports: "https://github.com/janestreet/ppx_optcomp/issues"
dev-repo: "git+https://github.com/janestreet/ppx_optcomp.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"stdio" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Optional compilation for OCaml"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_optcomp-v0.11.0.tar.gz"
checksum: "md5=396d6bac4ed5652d7be146756613c67e"
}

27
esy.lock/opam/ppx_optional.v0.11.0/opam

@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_optional"
bug-reports: "https://github.com/janestreet/ppx_optional/issues"
dev-repo: "git+https://github.com/janestreet/ppx_optional.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Pattern matching on flat options"
description: """
A ppx rewriter that rewrites simple match statements with an if then
else expression."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_optional-v0.11.0.tar.gz"
checksum: "md5=27bcae8445af584299876bdab0288152"
}

25
esy.lock/opam/ppx_pipebang.v0.11.0/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_pipebang"
bug-reports: "https://github.com/janestreet/ppx_pipebang/issues"
dev-repo: "git+https://github.com/janestreet/ppx_pipebang.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis:
"A ppx rewriter that inlines reverse application operators `|>` and `|!`"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_pipebang-v0.11.0.tar.gz"
checksum: "md5=8f41bb8e67167d04b82223d024008683"
}

25
esy.lock/opam/ppx_sexp_conv.v0.11.2/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_sexp_conv"
bug-reports: "https://github.com/janestreet/ppx_sexp_conv/issues"
dev-repo: "git+https://github.com/janestreet/ppx_sexp_conv.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis:
"Generation of S-expression conversion functions from type definitions"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src: "https://github.com/janestreet/ppx_sexp_conv/archive/v0.11.2.tar.gz"
checksum: "md5=77d3b30b3d9c5810552bde2027656b8d"
}

26
esy.lock/opam/ppx_sexp_conv.v0.12.0/opam

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_sexp_conv"
bug-reports: "https://github.com/janestreet/ppx_sexp_conv/issues"
dev-repo: "git+https://github.com/janestreet/ppx_sexp_conv.git"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/ppx_sexp_conv/index.html"
license: "MIT"
build: [
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.2"}
"base" {>= "v0.12" & < "v0.13"}
"sexplib0" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
"ppxlib" {>= "0.5.0"}
]
synopsis: "[@@deriving] plugin to generate S-expression conversion functions"
description: "
Part of the Jane Street's PPX rewriters collection.
"
url {
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/ppx_sexp_conv-v0.12.0.tar.gz"
checksum: "md5=648ac430b4a74c2297705d260b66778f"
}

26
esy.lock/opam/ppx_sexp_message.v0.11.0/opam

@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_sexp_message"
bug-reports: "https://github.com/janestreet/ppx_sexp_message/issues"
dev-repo: "git+https://github.com/janestreet/ppx_sexp_message.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "A ppx rewriter for easy construction of s-expressions"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_sexp_message-v0.11.0.tar.gz"
checksum: "md5=2cec96bcf6f7c54ba79fe39fc9fc4d98"
}

27
esy.lock/opam/ppx_sexp_value.v0.11.0/opam

@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_sexp_value"
bug-reports: "https://github.com/janestreet/ppx_sexp_value/issues"
dev-repo: "git+https://github.com/janestreet/ppx_sexp_value.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_here" {>= "v0.11" & < "v0.12"}
"ppx_sexp_conv" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis:
"A ppx rewriter that simplifies building s-expressions from ocaml values"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_sexp_value-v0.11.0.tar.gz"
checksum: "md5=28375d3b4bf5cda71b9260d20e5c3d34"
}

25
esy.lock/opam/ppx_typerep_conv.v0.11.1/opam

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_typerep_conv"
bug-reports: "https://github.com/janestreet/ppx_typerep_conv/issues"
dev-repo: "git+https://github.com/janestreet/ppx_typerep_conv.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"typerep" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis: "Generation of runtime types from type declarations"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://github.com/janestreet/ppx_typerep_conv/archive/v0.11.1.tar.gz"
checksum: "md5=826e9daf00258184e3392c970fa7d616"
}

26
esy.lock/opam/ppx_variants_conv.v0.11.1/opam

@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/ppx_variants_conv"
bug-reports: "https://github.com/janestreet/ppx_variants_conv/issues"
dev-repo: "git+https://github.com/janestreet/ppx_variants_conv.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"variantslib" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.3.0"}
]
synopsis:
"Generation of accessor and iteration functions for ocaml variant types"
description: "Part of the Jane Street's PPX rewriters collection."
url {
src:
"https://github.com/janestreet/ppx_variants_conv/archive/v0.11.1.tar.gz"
checksum: "md5=146b49b84315b7d67c1ca758fcbf2fb2"
}

23
esy.lock/opam/sexplib.v0.11.0/opam → esy.lock/opam/sexplib.v0.12.0/opam

@ -4,25 +4,26 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] @@ -4,25 +4,26 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/sexplib"
bug-reports: "https://github.com/janestreet/sexplib/issues"
dev-repo: "git+https://github.com/janestreet/sexplib.git"
license: "Apache-2.0"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/sexplib/index.html"
license: "MIT"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"parsexp" {>= "v0.11" & < "v0.12"}
"sexplib0" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml" {>= "4.04.2"}
"parsexp" {>= "v0.12" & < "v0.13"}
"sexplib0" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
"num"
]
synopsis: "Library for serializing OCaml values to and from S-expressions"
description: """
description: "
Part of Jane Street's Core library
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml."""
largest industrial user of OCaml.
"
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib-v0.11.0.tar.gz"
checksum: "md5=1d53d945914b6b9a380dc8923f19e9ae"
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/sexplib-v0.12.0.tar.gz"
checksum: "md5=a7f9f8a414aed6cc56901199cda020f6"
}

25
esy.lock/opam/sexplib0.v0.11.0/opam → esy.lock/opam/sexplib0.v0.12.0/opam

@ -4,26 +4,23 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] @@ -4,26 +4,23 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/sexplib0"
bug-reports: "https://github.com/janestreet/sexplib0/issues"
dev-repo: "git+https://github.com/janestreet/sexplib0.git"
license: "Apache-2.0"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/sexplib0/index.html"
license: "MIT"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml" {>= "4.04.2"}
"dune" {build & >= "1.5.1"}
]
conflicts: [
"sexplib" { < "v0.11"}
]
synopsis:
"Library containing the definition of S-expressions and some base converters"
description: """
synopsis: "Library containing the definition of S-expressions and some base converters"
description: "
Part of Jane Street's Core library
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml."""
largest industrial user of OCaml.
"
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib0-v0.11.0.tar.gz"
checksum: "md5=1c14ba30b471e49f1b23fea5ff99ea6b"
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/sexplib0-v0.12.0.tar.gz"
checksum: "md5=2486a25d3a94da9a94acc018b5f09061"
}

43
esy.lock/opam/spawn.v0.13.0/opam

@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/spawn"
bug-reports: "https://github.com/janestreet/spawn/issues"
dev-repo: "git+https://github.com/janestreet/spawn.git"
doc: "https://janestreet.github.io/spawn/"
license: "Apache-2.0"
build: [
["dune" "build" "-p" name "-j" jobs]
# We don't test with OCaml < 4.04 as older versions of ppx_expect
# don't work with dune
["dune" "runtest" "-p" name "-j" jobs] {with-test & ocaml >= "4.04" }
]
depends: [
"dune" {build}
"ppx_expect" {with-test}
"ocaml" {>= "4.02.3"}
]
synopsis: "Spawning sub-processes"
description: """
Spawn is a small library exposing only one functionality: spawning sub-process.
It has three main goals:
1. provide missing features of Unix.create_process such as providing a
working directory
2. provide better errors when a system call fails in the
sub-process. For instance if a command is not found, you get a proper
[Unix.Unix_error] exception
3. improve performances by using vfork when available. It is often
claimed that nowadays fork is as fast as vfork, however in practice
fork takes time proportional to the process memory while vfork is
constant time. In application using a lot of memory, vfork can be
thousands of times faster than fork.
"""
url {
src:
"https://github.com/janestreet/spawn/releases/download/v0.13.0/spawn-v0.13.0.tbz"
checksum: "md5=6eaadbf8f9231415b51658da6b8b090f"
}

32
esy.lock/opam/splittable_random.v0.11.0/opam

@ -1,32 +0,0 @@ @@ -1,32 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/splittable_random"
bug-reports: "https://github.com/janestreet/splittable_random/issues"
dev-repo: "git+https://github.com/janestreet/splittable_random.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"ppx_jane" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
]
synopsis: "PRNG that can be split into independent streams"
description: """
PRNG that can be split into independent streams
A splittable pseudo-random number generator (SPRNG) functions like a PRNG in that it can
be used as a stream of random values; it can also be \\"split\\" to produce a second,
independent stream of random values.
This library implements a splittable pseudo-random number generator that sacrifices
cryptographic-quality randomness in favor of performance."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/splittable_random-v0.11.0.tar.gz"
checksum: "md5=9caf5111500c790f44967b6ee648bfe9"
}

21
esy.lock/opam/stdio.v0.11.0/opam → esy.lock/opam/stdio.v0.12.0/opam

@ -4,23 +4,24 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] @@ -4,23 +4,24 @@ authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/stdio"
bug-reports: "https://github.com/janestreet/stdio/issues"
dev-repo: "git+https://github.com/janestreet/stdio.git"
license: "Apache-2.0"
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/stdio/index.html"
license: "MIT"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
["dune" "build" "-p" name "-j" jobs]
]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml" {>= "4.04.2"}
"base" {>= "v0.12" & < "v0.13"}
"dune" {build & >= "1.5.1"}
]
synopsis: "Standard IO library for OCaml"
description: """
description: "
Stdio implements simple input/output functionalities for OCaml.
It re-exports the input/output functions of the OCaml standard
libraries using a more consistent API."""
libraries using a more consistent API.
"
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/stdio-v0.11.0.tar.gz"
checksum: "md5=2db42ee38c91b3ff7126c2634c407b99"
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/stdio-v0.12.0.tar.gz"
checksum: "md5=b261ff2d5667fde960c95e50cff668da"
}

22
esy.lock/opam/typerep.v0.11.0/opam

@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/typerep"
bug-reports: "https://github.com/janestreet/typerep/issues"
dev-repo: "git+https://github.com/janestreet/typerep.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
]
synopsis: "typerep is a library for runtime types."
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/typerep-v0.11.0.tar.gz"
checksum: "md5=9d7500376ac660c1427137310fabe9da"
}

28
esy.lock/opam/variantslib.v0.11.0/opam

@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
opam-version: "2.0"
maintainer: "opensource@janestreet.com"
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
homepage: "https://github.com/janestreet/variantslib"
bug-reports: "https://github.com/janestreet/variantslib/issues"
dev-repo: "git+https://github.com/janestreet/variantslib.git"
license: "Apache-2.0"
build: [
["jbuilder" "build" "-p" name "-j" jobs]
]
conflicts: [ "jbuilder" { = "1.0+beta19" } ]
depends: [
"ocaml" {>= "4.04.1"}
"base" {>= "v0.11" & < "v0.12"}
"jbuilder" {build & >= "1.0+beta18.1"}
"ocaml-migrate-parsetree" {>= "1.0"}
"ppxlib" {>= "0.1.0"}
]
synopsis: "Part of Jane Street's Core library"
description: """
The Core suite of libraries is an industrial strength alternative to
OCaml's standard library that was developed by Jane Street, the
largest industrial user of OCaml."""
url {
src:
"https://ocaml.janestreet.com/ocaml-core/v0.11/files/variantslib-v0.11.0.tar.gz"
checksum: "md5=3031317975df165cc3154578680eddfb"
}

56
esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/files/base-v0.11.1.patch

@ -1,56 +0,0 @@ @@ -1,56 +0,0 @@
--- ./src/exn_stubs.c
+++ ./src/exn_stubs.c
@@ -1,8 +1,13 @@
#include <caml/mlvalues.h>
extern int caml_backtrace_pos;
+#ifndef _MSC_VER
+#define UNUSED __attribute__((unused))
+#else
+#define UNUSED
+#endif
-CAMLprim value Base_clear_caml_backtrace_pos (value __attribute__((unused)) unit) {
+CAMLprim value Base_clear_caml_backtrace_pos (value UNUSED unit) {
caml_backtrace_pos = 0;
return Val_unit;
}
--- ./src/int_math_stubs.c
+++ ./src/int_math_stubs.c
@@ -5,6 +5,25 @@
#include <caml/mlvalues.h>
#include <caml/memory.h>
+#if defined(_MSC_VER)
+#include <intrin.h>
+#ifdef ARCH_SIXTYFOUR
+#define __builtin_popcountll(x) __popcnt64((uint64_t)(x))
+static __inline uint32_t __builtin_clzll(uint64_t value) {
+ uint32_t leading_zero = 0;
+ _BitScanReverse64(&leading_zero, value);
+ return (63 - leading_zero);
+}
+#else
+#define __builtin_popcount(x) __popcnt((unsigned int)(x))
+static __inline uint32_t __builtin_clz(uint32_t value) {
+ uint32_t leading_zero = 0;
+ _BitScanReverse(&leading_zero, value);
+ return (31 - leading_zero);
+}
+#endif /* ARCH_SIXTYFOUR */
+#endif /* defined(_MSC_VER) */
+
static int64_t int_pow(int64_t base, int64_t exponent) {
int64_t ret = 1;
int64_t mul[4];
--- ./src/jbuild
+++ ./src/jbuild
@@ -65,7 +65,7 @@
(progn
(with-stdout-to popcnt_test.c
(echo "int main(int argc, char ** argv) { return __builtin_popcount(argc); }"))
- (system "${CC} -mpopcnt -c popcnt_test.c 2> ${null} && \
+ (bash "${CC} -mpopcnt -c popcnt_test.c 2> ${null} && \
echo '(-mpopcnt)' > ${@} || echo '()' > ${@}"))))))
(ocamllex (hex_lexer))

17
esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/package.json

@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
{
"build": [
[
"bash",
"-c",
"#{os == 'windows' ? 'patch -p1 < base-v0.11.1.patch' : 'true'}"
],
[
"jbuilder",
"build",
"-p",
"base",
"-j",
"4"
]
]
}

41
esy.lock/overrides/opam__s__base_opam__c__v0.12.0_opam_override/files/base-v0.12.0.patch

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
--- ./src/dune
+++ ./src/dune
@@ -30,7 +30,7 @@
(with-stdout-to popcnt_test.c
(echo
"int main(int argc, char ** argv) { return __builtin_popcount(argc); }"))
- (system
- "%{cc} -mpopcnt -c popcnt_test.c 2> ${null} && echo '(-mpopcnt)' > %{targets} || echo '()' > %{targets}"))))
+ (bash
+ "%{cc} -mpopcnt -c popcnt_test.c 2> /dev/null && echo '(-mpopcnt)' > %{targets} || echo '()' > %{targets}"))))
(ocamllex hex_lexer)
--- ./src/int_math_stubs.c
+++ ./src/int_math_stubs.c
@@ -12,17 +12,24 @@
#define __builtin_popcountll __popcnt64
#define __builtin_popcount __popcnt
-static uint32_t __inline __builtin_clz(uint32_t x)
+static int __inline __builtin_clz(uint32_t x)
{
int r = 0;
_BitScanForward(&r, x);
return r;
}
-static uint64_t __inline __builtin_clzll(uint64_t x)
+static int __inline __builtin_clzll(uint64_t x)
{
int r = 0;
+#ifdef _WIN64
_BitScanForward64(&r, x);
+#else
+ if (!_BitScanForward(&r, (uint32_t)x) &&
+ _BitScanForward(&r, (uint32_t)(x>>32))) {
+ r += 32;
+ }
+#endif
return r;
}

18
esy.lock/overrides/opam__s__base_opam__c__v0.12.0_opam_override/package.json

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
{
"build": [
[
"bash",
"-c",
"#{os == 'windows' ? 'patch -p1 < base-v0.12.0.patch' : 'true'}"
],
[
"jbuilder",
"build",
"-p",
"base",
"-j",
"4"
]
]
}

201
esy.lock/overrides/opam__s__core__kernel_opam__c__v0.11.1_opam_override/files/core_kernel-0.11.1.patch

@ -1,201 +0,0 @@ @@ -1,201 +0,0 @@
--- ./config/detect.sh
+++ ./config/detect.sh
@@ -4,14 +4,27 @@
set -e
-if ld -lm -shared --wrap caml_modify -o /dev/null 2>/dev/null; then
+
+system="$( ocamlfind ocamlc -config | awk '/^system:/ {print $2}')"
+case "$system" in
+ win*)
+ ld_wrap_possible=false
+ posix_timers_possible=false
+ ;;
+ mingw*)
+ ld_wrap_possible=false
+ posix_timers_possible=false
+ ;;
+ *)
+
+ if ld -lm -shared --wrap caml_modify -o /dev/null 2>/dev/null; then
ld_wrap_possible=true
-else
+ else
ld_wrap_possible=false
-fi
+ fi
-ptimer=`getconf _POSIX_TIMERS || echo undefined`
-case $ptimer in
+ ptimer=`getconf _POSIX_TIMERS || echo undefined`
+ case $ptimer in
undefined)
posix_timers_possible=false
;;
@@ -22,6 +35,8 @@
posix_timers_possible=false
fi
;;
+ esac
+ ;;
esac
if [ -e setup.data ]; then
--- ./src/bigstring_marshal_stubs.c
+++ ./src/bigstring_marshal_stubs.c
@@ -1,5 +1,7 @@
#include <string.h>
+#ifndef _MSC_VER
#include <unistd.h>
+#endif
#include <errno.h>
#include <caml/alloc.h>
--- ./src/bigstring_stubs.c
+++ ./src/bigstring_stubs.c
@@ -11,16 +11,37 @@
#endif
#include <string.h>
+#ifndef _MSC_VER
#include <unistd.h>
+#include <stdint.h>
+#else
+#include <stdlib.h>
+#endif
+
#include <errno.h>
#include <assert.h>
-#include <stdint.h>
+
#ifdef __APPLE__
#include <libkern/OSByteOrder.h>
#define bswap_16 OSSwapInt16
#define bswap_32 OSSwapInt32
#define bswap_64 OSSwapInt64
+#elif __MINGW32__
+#if defined(__GNUC__) && __GNUC__ > 4
+#define bswap_16 __builtin_bswap16
+#else
+static inline uint16_t bswap_16 (uint16_t x)
+{
+ return (x << 8) | (x >> 8);
+}
+#endif
+#define bswap_32 __builtin_bswap32
+#define bswap_64 __builtin_bswap64
+#elif _MSC_VER
+#define bswap_16 _byteswap_ushort
+#define bswap_32 _byteswap_ulong
+#define bswap_64 _byteswap_uint64
#elif __GLIBC__
#include <byteswap.h>
#include <malloc.h>
--- ./src/time_ns_stubs.c
+++ ./src/time_ns_stubs.c
@@ -12,7 +12,9 @@
#include <caml/unixsupport.h>
#include <time.h>
+#ifndef _MSC_VER
#include <stdint.h>
+#endif
#include "ocaml_utils.h"
#include "config.h"
@@ -22,7 +24,59 @@
#define NANOS_PER_SECOND 1000000000
#if defined(JSC_POSIX_TIMERS)
+#ifdef _WIN32
+#include <windows.h>
+#ifndef CLOCK_REALTIME
+#define CLOCK_REALTIME 1
+#endif
+
+#define POW10_7 10000000
+#define DELTA_EPOCH_IN_100NS INT64_C(116444736000000000)
+
+typedef void (WINAPI *GetSystemTimeAsFileTime_t)(LPFILETIME lpSystemTimeAsFileTime);
+static GetSystemTimeAsFileTime_t i_GetSystemTimeAsFileTime = GetSystemTimeAsFileTime;
+static int clock_gettime_init_called = 0;
+
+static void clock_gettime_init(void) {
+ /* Use GetSystemTimePreciseAsFileTime when available */
+ HMODULE h ;
+ clock_gettime_init_called = 1;
+ h = LoadLibrary("kernel32.dll");
+ if (h != NULL) {
+ GetSystemTimeAsFileTime_t proc = (GetSystemTimeAsFileTime_t)GetProcAddress(h, "GetSystemTimePreciseAsFileTime");
+ if (proc != NULL) {
+ i_GetSystemTimeAsFileTime = proc;
+ }
+ else {
+ FreeLibrary(h);
+ }
+ }
+}
+
+#define clock_gettime my_clock_gettime
+static int my_clock_gettime(int clock_id, struct timespec *tp)
+{
+ uint64_t t;
+ FILETIME ft;
+ ULARGE_INTEGER lft;
+ (void) clock_id;
+ if ( clock_gettime_init_called == 0 ){
+ clock_gettime_init();
+ }
+
+ i_GetSystemTimeAsFileTime(&ft);
+
+ lft.LowPart = ft.dwLowDateTime;
+ lft.HighPart = ft.dwHighDateTime;
+
+ t = lft.QuadPart - DELTA_EPOCH_IN_100NS;
+ tp->tv_sec = t / POW10_7;
+ tp->tv_nsec = ((int) (t % POW10_7)) * 100;
+
+ return 0;
+}
+#endif /* _WIN32 */
/* Note: this is imported noalloc if (and only if) ARCH_SIXTYFOUR is defined.
* This is OK because caml_alloc_int63 doesn't actually allocate in that case. */
CAMLprim value core_kernel_time_ns_gettime_or_zero()
@@ -38,7 +92,33 @@
#else
#include <sys/types.h>
+#ifndef _MSC_VER
#include <sys/time.h>
+#endif
+#ifdef _MSC_VER
+#include <time.h>
+
+#define DELTA_EPOCH_IN_MICROSECS 116444736000000000Ui64
+
+static int gettimeofday(struct timeval *tp, void *tz)
+{
+ FILETIME file_time;
+ SYSTEMTIME system_time;
+ ULARGE_INTEGER ularge;
+ (void)tz;
+
+ GetSystemTime(&system_time);
+ SystemTimeToFileTime(&system_time, &file_time);
+ ularge.LowPart = file_time.dwLowDateTime;
+ ularge.HighPart = file_time.dwHighDateTime;
+
+ tp->tv_sec = (long) ((ularge.QuadPart - DELTA_EPOCH_IN_MICROSECS) / 10000000L);
+ tp->tv_usec = (long) (system_time.wMilliseconds * 1000);
+
+ return 0;
+}
+
+#endif
CAMLprim value core_kernel_time_ns_gettime_or_zero()
{

17
esy.lock/overrides/opam__s__core__kernel_opam__c__v0.11.1_opam_override/package.json

@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
{
"build": [
[
"bash",
"-c",
"#{os == 'windows' ? 'patch -p1 < core_kernel-0.11.1.patch' : 'true'}"
],
[
"jbuilder",
"build",
"-p",
"core_kernel",
"-j",
"4"
]
]
}

2
executable/dune

@ -7,6 +7,6 @@ @@ -7,6 +7,6 @@
(name FnmApp) ; From package.json main field
; The name of the executable (runnable via esy x fnm.exe)
(public_name fnm.exe) ; From package.json name field
(libraries core cmdliner lwt lambdasoup console.lib pastel.lib fnm.lib ) ; From package.json require field (array of strings)
(libraries base cmdliner lwt lambdasoup console.lib pastel.lib fnm.lib ) ; From package.json require field (array of strings)
(preprocess ( pps lwt_ppx ppx_let )) ; From package.json preprocess field
)

503
library/Path.re

@ -0,0 +1,503 @@ @@ -0,0 +1,503 @@
/**
* Copyright 2004-present Facebook. All Rights Reserved.
*
* @emails oncall+ads_front_end_infra
*/;
let sep = "/";
let homeChar = "~";
type absolute;
type relative;
type upDirs = int; /* int 0 implies ./ and 1 implies ../ etc */
/**
* We might eventually want to allow extending this with many
* reference points.
*/
type relFrom =
| Home
| Any;
type base('kind) =
/* Optional drive name */
| Abs(option(string)): base(absolute)
| Rel(relFrom, upDirs): base(relative);
/**
* Internal representation of paths. The list of strings represents all
* subdirectories after the base (in reverse order - head of the list is the
* rightmost segment of the path).
*/
type t('kind) = (base('kind), list(string));
type firstClass =
| Absolute(t(absolute))
| Relative(t(relative));
type opaqueBase =
| Base(base('exists)): opaqueBase;
type opaqueT = (opaqueBase, list(string));
let drive = name => (Abs(Some(name)), []);
let root = (Abs(None), []);
let home = (Rel(Home, 0), []);
let dot = (Rel(Any, 0), []);
let hasParentDir = ((Abs(_), lst): t(absolute)) => lst !== [];
let rec revSegmentsAreInside = (~ofSegments, l) =>
switch (ofSegments, l) {
| ([], [_, ..._]) => true
| ([], []) => true
| ([_, ..._], []) => false
| ([hd, ...tl], [hd2, ...tl2]) =>
String.equal(hd, hd2) && revSegmentsAreInside(~ofSegments=tl, tl2)
};
let segmentsAreInside = (~ofSegments, l) =>
revSegmentsAreInside(~ofSegments=List.rev(ofSegments), List.rev(l));
let isDescendent: type kind. (~ofPath: t(kind), t(kind)) => bool =
(~ofPath, p) =>
switch (ofPath, p) {
| ((Abs(dr1), l1), (Abs(dr2), l2)) =>
switch (dr1, dr2) {
| (None, None) => segmentsAreInside(~ofSegments=l1, l2)
| (Some(d1), Some(d2)) =>
String.equal(d1, d2) && segmentsAreInside(~ofSegments=l1, l2)
| (Some(_), None)
| (None, Some(_)) => false
}
| ((Rel(Any, d1), l1), (Rel(Any, d2), l2)) =>
d1 === d1 && segmentsAreInside(~ofSegments=l1, l2)
| ((Rel(Home, d1), l1), (Rel(Home, d2), l2)) =>
d1 === d1 && segmentsAreInside(~ofSegments=l1, l2)
| ((Rel(Any, _), _), (Rel(Home, _), _)) => false
| ((Rel(Home, _), _), (Rel(Any, _), _)) => false
};
let toString: type kind. t(kind) => string =
path =>
switch (path) {
| (Abs(l), lst) =>
let lbl =
switch (l) {
| None => ""
| Some(txt) => txt
};
lbl ++ "/" ++ (lst |> List.rev |> String.concat(sep));
| (Rel(w, i), lst) =>
let init =
switch (w) {
| Any => "." ++ sep
| Home => "~" ++ sep
};
let rest =
lst
|> List.rev
|> List.append(Array.to_list(Array.init(i, i => "..")))
|> String.concat(sep);
init ++ rest;
};
/**
* Expose this under the name `toDebugString` and accept any kind of path.
* The name is to warn people about using this for relative paths. This may
* print paths like `"."` and `"~"`, which is not very meaningful.
*/
let toDebugString = toString;
type token =
| SLASH
| DOT
| TILDE
| DOTDOT
| DRIVE(string)
| TXT(string);
let makeToken = s =>
switch (s) {
| "~" => TILDE
| "." => DOT
| ".." => DOTDOT
| s when String.length(s) >= 2 && s.[String.length(s) - 1] === ':' =>
DRIVE(s)
| s => TXT(s)
};
/*
* Splits on slashes, but being intelligent about escaped slashes.
*/
let lex = s => {
let s = String.trim(s);
let len = String.length(s);
let revTokens = {contents: []};
/* j is what you are all caught up to */
let j = {contents: (-1)};
let prevEsc = {contents: false};
for (i in 0 to len - 1) {
let ch = String.unsafe_get(s, i);
if (ch === '/' && !prevEsc.contents) {
if (j.contents !== i - 1) {
let tok =
makeToken(String.sub(s, j.contents + 1, i - j.contents - 1));
revTokens.contents = [tok, ...revTokens.contents];
};
revTokens.contents = [SLASH, ...revTokens.contents];
j.contents = i;
};
prevEsc.contents = ch === '\\' && !prevEsc.contents;
};
let rev =
j.contents === len - 1
? revTokens.contents
: [
makeToken(String.sub(s, j.contents + 1, len - 1 - j.contents)),
...revTokens.contents,
];
List.rev(rev);
};
let parseFirstToken = token =>
switch (token) {
| SLASH => (Base(Abs(None)), [])
| DOT => (Base(Rel(Any, 0)), [])
| TILDE => (Base(Rel(Home, 0)), [])
| DOTDOT => (Base(Rel(Any, 1)), [])
| DRIVE(l) => (Base(Abs(Some(l))), [])
| TXT(s) => (Base(Rel(Any, 0)), [s])
};
let rec parseNextToken: type kind. (t(kind), token) => t(kind) =
(path, nextToken) =>
switch (path, nextToken) {
| (path, SLASH) => path
| (path, DOT) => path
| ((base, subs), TILDE) => (base, [homeChar, ...subs])
| ((base, subs), DRIVE(l)) => (base, [l, ...subs])
| ((base, subs), TXT(s)) => (base, [s, ...subs])
| ((base, [hd, ...tl]), DOTDOT) => (base, tl)
| ((Rel(Any, r), []), DOTDOT) => (Rel(Any, r + 1), [])
| ((Rel(Home, r), []), DOTDOT) => (Rel(Home, r + 1), [])
| ((Abs(_), []), DOTDOT) => path
};
let parseFirstTokenAbsolute = token =>
switch (token) {
| SLASH => Some((Abs(None), []))
| DRIVE(l) => Some((Abs(Some(l)), []))
| TXT(_)
| DOT
| TILDE
| DOTDOT => None
};
let parseFirstTokenRelative = token =>
switch (token) {
| DOT => Some((Rel(Any, 0), []))
| TILDE => Some((Rel(Home, 0), []))
| DOTDOT => Some((Rel(Any, 1), []))
| TXT(s) => Some((Rel(Any, 0), [s]))
| SLASH => None
| DRIVE(l) => None
};
let absolute = s =>
switch (lex(s)) {
/* Cannot pass empty string for absolute path */
| [] => None
| [hd, ...tl] =>
switch (parseFirstTokenAbsolute(hd)) {
| None => None
| Some(initAbsPath) =>
Some(List.fold_left(parseNextToken, initAbsPath, tl))
}
};
let absoluteExn = s =>
switch (lex(s)) {
/* Cannot pass empty string for absolute path */
| [] => raise(Invalid_argument("Empty path is not a valid absolute path."))
| [hd, ...tl] =>
switch (parseFirstTokenAbsolute(hd)) {
| None =>
raise(
Invalid_argument("First token in path " ++ s ++ " is not absolute."),
)
| Some(initAbsPath) => List.fold_left(parseNextToken, initAbsPath, tl)
}
};
let relative = s => {
let (tok, tl) =
switch (lex(s)) {
| [] => (DOT, [])
| [hd, ...tl] => (hd, tl)
};
switch (parseFirstTokenRelative(tok)) {
| None => None
| Some(initRelPath) =>
Some(List.fold_left(parseNextToken, initRelPath, tl))
};
};
let relativeExn = s =>
switch (lex(s)) {
/* Cannot pass empty string for absolute path */
| [] => dot
| [hd, ...tl] =>
switch (parseFirstTokenRelative(hd)) {
| None =>
raise(
Invalid_argument("First token in path " ++ s ++ " not relative."),
)
| Some(initRelPath) => List.fold_left(parseNextToken, initRelPath, tl)
}
};
/**
* Relates two positive integers to zero and eachother.
*/
type ord =
| /** 0 === i === j */
Zeros
| /** 0 === i < j */
ZeroPositive
| /** i > 0 === j */
PositiveZero
| /** 0 < i && 0 < j */
Positives;
/**
* Using `ord` allows us to retain exhaustiveness pattern matching checks that
* would normally be lost when adding `when i < j` guards to matches. It's
* very likely inlined so there's no performance hit. Annotate as int so that
* it isn't inferred to be polymorphic.
*/
let ord = (i: int, j: int) =>
i === 0 && j === 0
? Zeros : i === 0 ? ZeroPositive : j === 0 ? PositiveZero : Positives;
let rec repeat = (soFar, i, s) =>
i === 0 ? soFar : repeat(soFar ++ s, i - 1, s);
/*
* relativize(a/rest1..., a/rest2...) == relativize(rest1..., rest2...)
* relativize(../rest1..., ../rest2...) == relativize(rest1..., res2...)
* relativize(a/rest1..., b/rest2...) == [...len(1)]/b/rest2
* relativize(../a/rest1..., b/rest2...) == raise
* relativize(a/rest1..., ../b/rest2...) == [...len(1)]../b/rest2
*
* "upDirs" is the number of ../ the path is assumed to have. The segments
* `s1`/`s2`, are in the path order from left to right, unlike `Path.t` which
* usually stores them in reverse order. Relativizing paths is one place where
* it's more convenient to have them in the left to right segment order.
*/
let rec relativizeDepth = ((upDirs1, s1), (upDirs2, s2)) =>
switch (ord(upDirs1, upDirs2), s1, s2) {
| (Zeros, [hd1, ...tl1], [hd2, ...tl2]) =>
if (String.compare(hd1, hd2) === 0) {
relativizeDepth((0, tl1), (0, tl2));
} else {
(List.length(s1), s2);
}
| (Zeros, [], []) => (0, [])
| (Zeros, [], [hd2, ...tl2] as s2) => (upDirs2, s2)
| (Zeros, [hd1, ...tl1] as s1, []) => (List.length(s1), [])
| (Positives, _, _) =>
relativizeDepth((upDirs1 - 1, s1), (upDirs2 - 1, s2))
| (ZeroPositive, _, _) => (List.length(s1) + upDirs2, s2)
| (PositiveZero, _, _) =>
raise(
Invalid_argument(
"Cannot relativize paths source='"
++ repeat("", upDirs1, "../")
++ String.concat(sep, s1)
++ "' dest='"
++ repeat("", upDirs2, "../")
++ String.concat(sep, s2),
),
)
};
let raiseDriveMismatch = (p1, p2) =>
raise(
Invalid_argument(
"Cannot relativize paths with different drives or relative roots "
++ toString(p1)
++ " and "
++ toString(p2),
),
);
let relativizeExn: type k. (~source: t(k), ~dest: t(k)) => t(relative) =
(~source, ~dest) => {
let (depth, segs) =
switch (source, dest) {
| ((Abs(d1), s1), (Abs(d2), s2)) =>
switch (d1, d2) {
| (None, None) =>
relativizeDepth((0, List.rev(s1)), (0, List.rev(s2)))
| (Some(_), None) => raiseDriveMismatch(source, dest)
| (None, Some(_)) => raiseDriveMismatch(source, dest)
| (Some(d1), Some(d2)) =>
String.compare(d1, d2) !== 0
? raiseDriveMismatch(source, dest)
: relativizeDepth((0, List.rev(s1)), (0, List.rev(s2)))
}
| ((Rel(w1, r1), s1), (Rel(w2, r2), s2)) =>
w1 === w2
? relativizeDepth((r1, List.rev(s1)), (r2, List.rev(s2)))
: raiseDriveMismatch(source, dest)
};
(Rel(Any, depth), List.rev(segs));
};
let relativize:
type k. (~source: t(k), ~dest: t(k)) => result(t(relative), exn) =
(~source, ~dest) =>
try (Ok(relativizeExn(~source, ~dest))) {
| Invalid_argument(_) as e => Error(e)
};
let rec segEq = (l1, l2) =>
switch (l1, l2) {
| ([], []) => true
| ([], [_, ..._]) => false
| ([_, ..._], []) => false
| ([hd1, ...tl1], [hd2, ...tl2]) =>
String.compare(hd1, hd2) === 0 && segEq(tl1, tl2)
};
let eq: type k1 k2. (t(k1), t(k2)) => bool =
(p1, p2) =>
switch (p1, p2) {
| ((Abs(_), s1), (Rel(_), s2)) => false
| ((Rel(_), s1), (Abs(_), s2)) => false
| ((Abs(d1), s1), (Abs(d2), s2)) =>
switch (d1, d2) {
| (Some(_), None)
| (None, Some(_)) => false
| (None, None) => segEq(s1, s2)
| (Some(d1), Some(d2)) =>
String.compare(d1, d2) === 0 && segEq(s1, s2)
}
| ((Rel(w1, r1), s1), (Rel(w2, r2), s2)) =>
w1 === w2 && r1 === r2 && segEq(s1, s2)
};
let absoluteEq = eq;
let relativeEq = eq;
let testForPath = s =>
switch (absolute(s)) {
| Some(abs) => Some(Absolute(abs))
| None =>
switch (relative(s)) {
| Some(r) => Some(Relative(r))
| None => None
}
};
let firstClass: type k. t(k) => firstClass =
p =>
switch (p) {
| (Abs(d), s) => Absolute((Abs(d), s))
| (Rel(w, r), s) => Relative((Rel(w, r), s))
};
let testForPathExn = s =>
switch (testForPath(s)) {
| Some(res) => res
| None => raise(Invalid_argument("Path neither absolute nor relative."))
};
let continue = (s, path) => List.fold_left(parseNextToken, path, lex(s));
let rec join: type k1 k2. (t(k1), t(k2)) => t(k1) =
(p1, p2) =>
switch (p1, p2) {
| ((Rel(w, r1), []), (Rel(Any, r2), s2)) => (Rel(w, r1 + r2), s2)
| ((Rel(w, r1), [s1hd, ...s1tl] as s1), (Rel(Any, r2), s2)) =>
r2 > 0
? join((Rel(w, r1), s1tl), (Rel(Any, r2 - 1), s2))
: (Rel(w, r1), List.append(s2, s1))
| ((b1, s1), (Rel(Home, r2), s2)) =>
join((b1, [homeChar, ...List.append(s2, s1)]), (Rel(Any, r2), s2))
| ((b1, s1), (Abs(Some(ll)), s2)) => (
b1,
[ll, ...List.append(s2, s1)],
)
| ((b1, s1), (Abs(None), s2)) => (b1, List.append(s2, s1))
| ((Abs(_) as d, []), (Rel(Any, r2), s2)) => (d, s2)
| ((Abs(_) as d, [s1hd, ...s1tl] as s1), (Rel(Any, r2), s2)) =>
r2 > 0
? join((d, s1tl), (Rel(Any, r2 - 1), s2))
: (d, List.append(s2, s1))
};
let rec dirName: type k1. t(k1) => t(k1) =
p1 =>
switch (p1) {
| (Rel(w, r1), []) => (Rel(w, r1 + 1), [])
| (Rel(w, r1), [s1hd, ...s1tl]) => (Rel(w, r1), s1tl)
| (Abs(_) as d, []) => (d, [])
| (Abs(_) as d, [s1hd, ...s1tl]) => (d, s1tl)
};
let rec baseName: type k1. t(k1) => option(string) =
p1 =>
switch (p1) {
| (Rel(w, r1), []) => None
| (Rel(w, r1), [s1hd, ...s1tl]) => Some(s1hd)
| (Abs(_), []) => None
| (Abs(_), [s1hd, ...s1tl]) => Some(s1hd)
};
let sub: type k1. (string, t(k1)) => t(k1) =
(name, path) => continue(name, path);
/**
* Append functions always follow their "natural" left/right ordering,
* regardless of t-first/last.
*
* The following pairs are equivalent but note that `append` is always safe.
*
* Path.append(Path.root, "foo");
* Option.getUnsafe(Path.absolute("/foo"));
*
* Path.append(Path.root, "foo/bar");
* Option.getUnsafe(Path.absolute("/foo/bar"));
*
* Path.append(Path.drive("C"), "foo/bar");
* Option.getUnsafe(Path.absolute("C:/foo/bar"));
*
* Path.append(Path.dot, "foo");
* Option.getUnsafe(Path.relative("./foo"));
*/
let append: type k1. (t(k1), string) => t(k1) =
(path, name) => continue(name, path);
module At = {
let (/) = append;
/**
* Applies `dirName` to the first argument, then passes the result to
* `append` with the second.
*
* let result = root / "foo" / "bar" /../ "baz";
*
* Would result in
*
* "/foo/baz"
*/
let (/../) = (dir, s) => append(dirName(dir), s);
let (/../../) = (dir, s) => append(dirName(dirName(dir)), s);
let (/../../../) = (dir, s) =>
append(dirName(dirName(dirName(dir))), s);
let (/../../../../) = (dir, s) =>
append(dirName(dirName(dirName(dirName(dir)))), s);
let (/../../../../../) = (dir, s) =>
append(dirName(dirName(dirName(dirName(dirName(dir))))), s);
let (/../../../../../../) = (dir, s) =>
append(
dirName(dirName(dirName(dirName(dirName(dirName(dir)))))),
s,
);
};

276
library/Path.rei

@ -0,0 +1,276 @@ @@ -0,0 +1,276 @@
/**
`Path` is a library for creating and operating on file paths consistently on
all platforms.
`Path` works exactly the same on Windows, Linux, and OSX, instead of adjusting
behavior based on your current OS
The `Path` API uses the following conventions:
- Accepts/returns only `t(absolute))` for values that must be absolute paths.
- Accepts/returns only `t(relative))` for values that must be absolute paths.
- Accepts `t('any)` for values that may be either absolute or relative paths.
- Returns `firstClass = Absolute(t(absolute)) | Relative(t(relative)` for
return values that could be either. Consumers must pattern match on it.
- Wraps return values in `Some(..)` / `None` when it is possible that no
value may be computed even when the caller supplies valid data.
- Wraps return values in `Ok(..)` / `Error(exn)` when it is possible that no
value may be computed due to an error occuring in either user input or system
failure.
- For every `functionName` that wraps return values in `Ok`/`Error`, an
alternative form `functionNameExn` is also supplied which does not wrap
the return value, and instead raises an exception.
TODO: Consider the following universal convention instead:
type specificUsageError = UserNameInvalid | LoggedOut;
type blame('usage) = | Caller('usage) | Implementation(exn);
// Returns Error only for system blame:
result(x, exn)
// Returns Error for caller/system blame
result(x, blame(usage))
// Returns Error only for caller blame
result(x, usage)
// Returns Error for caller/system blame, but no value expected.
result(option(x), blame(usage))
// Returns Error for system blame, but no value expected.
result(option(x), exn)
*/
type relative;
type absolute;
/**
A file system path, parameterized on the kind of file system path,
`Path.t(relative)` or `Path.t(absolute)`.
*/
type t('kind);
/**
Used to allow dynamically checking whether or not a path is absolute or
relative. Use seldomly.
*/
type firstClass =
| Absolute(t(absolute))
| Relative(t(relative));
let drive: string => t(absolute);
let root: t(absolute);
let home: t(relative);
let dot: t(relative);
/**
Queries whether a path is absolute or relative. Use seldomly, and typically
only on end-user input. Once queried, use the wrapped `t(absolute)/t(relative)`
as the primary path passed around.
*/
let testForPath: string => option(firstClass);
/**
Same as `testForPath`, but raises `Invalid_argument` if no path could be
detected.
*/
let testForPathExn: string => firstClass;
/**
Creates a "first class" path could be _either_ a relative path or an absolute
one.
This allows you to return values from functions that might be absolute or might
be relative. It also allows relative and absolute paths to coexist inside of a
list together.
For example, if you create a polymorphic function that accepts any kind of
path, and then you want to do something differently based on whether or not the
path is relative or absolute, you would first use `firstClass(path)` and then
pattern match on the result `Absolute(p) => .. | Relative(p) => ...`.
*/
let firstClass: t('any) => firstClass;
/**
Prints absolute `Path.t` as strings, always removes the final `/` separator.
*/
let toString: t(absolute) => string;
/**
Prints any `Path.t` for debugging, always removes the final `/` separator
except in the case of the empty relative paths `./`, `~/`.
*/
let toDebugString: t('kind) => string;
/**
Parses an absolute path into a `Path.t(absolute)` or returns `None` if the path
is not a absolute, yet still valid. Raises Invalid_argument if the path is
invalid.
*/
let absolute: string => option(t(absolute));
/**
Parses a relative path into a `Path.t(relative)` or returns `None` if the path
is not a valid.
*/
let relative: string => option(t(relative));
/**
Same as `Path.absolute` but raises a Invalid_argument if argument is not a
valid absolute path.
*/
let absoluteExn: string => t(absolute);
/**
Same as `Path.relative` but raises a Invalid_argument if argument is not a
valid relative path.
*/
let relativeExn: string => t(relative);
/**
Creates a relative path from two paths, which is the relative path that is
required to arive at the `dest`, if starting from `source` directory. The
`source` and `dest` must both be `t(absolute)` or `t(relative)`, but the
returned path is always of type `t(relative)`.
If `source` and `dest` are relative, it is assumed that the two relative paths
are relative to the same yet-to-be-specified absolute path.
relativize(~source=/a, ~dest=/a) == ./
relativize(~source=/a/b/c/d /a/b/qqq == ../c/d
relativize(~source=/a/b/c/d, ~dest=/f/f/zzz) == ../../../../f/f/zz
relativize(~source=/a/b/c/d, ~dest=/a/b/c/d/q) == ../q
relativize(~source=./x/y/z, ~dest=./a/b/c) == ../../a/b/c
relativize(~source=./x/y/z, ~dest=../a/b/c) == ../../../a/b/c
Unsupported:
`relativize` only accepts `source` and `dest` of the same kind of path because
the following are meaningless:
relativize(~source=/x/y/z, ~dest=./a/b/c) == ???
relativize(~source=./x/y/z, ~dest=/a/b/c) == ???
Exceptions:
If it is impossible to create a relative path from `soure` to `dest` an
exception is raised.
If `source`/`dest` are absolute paths, the drive must match or an exception is
thrown. If `source`/`dest` are relative paths, they both must be relative to
`"~"` vs. `"."`. If both are relative, but the source has more `..` than the
dest, then it is also impossible to create a relative path and an exception is
raised.
relativize(~source=./foo/bar, ~dest=~/foo/bar) == raise(Invalid_argument)
relativize(~source=~/foo/bar, ~dest=./foo/) == raise(Invalid_argument)
relativize(~source=C:/foo/bar, ~dest=/foo/bar) == raise(Invalid_argument)
relativize(~source=C:/foo/bar, ~dest=F:/foo/bar) == raise(Invalid_argument)
relativize(~source=/foo/bar, ~dest=C:/foo/) == raise(Invalid_argument)
relativize(~source=../x/y/z, ~dest=./a/b/c) == raise(Invalid_argument)
relativize(~source=../x/y/z, ~dest=../foo/../a/b/c) == raise(Invalid_argument)
*/
let relativizeExn: (~source: t('kind), ~dest: t('kind)) => t(relative);
/**
Same as `relativizeExn` but returns `result(Path.t(Path.absolute), exn)`
instead of throwing an exception.
*/
let relativize:
(~source: t('kind), ~dest: t('kind)) => result(t(relative), exn);
/**
Accepts any `Path.t` and returns a `Path.t` of the same kind. Relative path
inputs return relative path outputs, and absolute path inputs return absolute
path outputs.
*/
let dirName: t('kind) => t('kind);
/**
Accepts any `Path.t` and returns the final segment in its path string, or
`None` if there are no segments in its path string.
Path.baseName(Path.At(Path.dot /../ ""))
None
Path.baseName(Path.At(Path.dot /../ "foo"))
Some("foo")
Path.baseName(Path.At(Path.dot /../ "foo" /../ ""))
None
Path.baseName(Path.At(Path.dot /../ "foo" / "bar" /../ ""))
Some("foo")
*/
let baseName: t('kind) => option(string);
/**
Appends one segment to a path. Preserves the relative/absoluteness of the first
arguments.
*/
let append: (t('kind), string) => t('kind);
/**
Appends one path to another. Preserves the relative/absoluteness of the first
arguments.
*/
let join: (t('kind1), t('kind2)) => t('kind1);
let eq: (t('kind1), t('kind2)) => bool;
/**
Tests for path equality of two absolute paths.
*/
let absoluteEq: (t(absolute), t(absolute)) => bool;
/**
Tests for path equality of two absolute paths.
*/
let relativeEq: (t(relative), t(relative)) => bool;
/**
Tests whether or not an absolute path has a parent path. Absolute paths such as
"C:/" and "/" have no parent dir.
*/
let hasParentDir: t(absolute) => bool;
/**
Returns `true` if a path exists inside another path `~ofPath` or is equal to
`~ofPath`.
*/
let isDescendent: (~ofPath: t('kind), t('kind)) => bool;
/**
Syntactic forms for utilities provided above. These are included in a separate
module so that it can be opened safely without causing collisions with other
identifiers in scope such as "root"/"home".
Use like this:
Path.At(Path.root / "foo" / "bar");
Path.At(Path.dot /../ "bar");
*/
module At: {
/**
Performs `append` with infix syntax.
*/
let (/): (t('kind), string) => t('kind);
/**
`dir /../ s` is equivalent to `append(dirName(dir), s)`
*/
let (/../): (t('kind), string) => t('kind);
/**
`dir /../../ s` is equivalent to `append(dirName(dirName(dir)), s)`
*/
let (/../../): (t('kind), string) => t('kind);
/**
`dir /../../../ s` is equivalent to
`append(dirName(dirName(dirName(dir))), s)`
*/
let (/../../../): (t('kind), string) => t('kind);
/**
`dir /../../../../ s` is equivalent to
`append(dirName(dirName(dirName(dirName(dir)))), s)`
*/
let (/../../../../): (t('kind), string) => t('kind);
/**
`dir /../../../../../ s` is equivalent to
`append(dirName(dirName(dirName(dirName(dirName(dir))))), s)`
*/
let (/../../../../../): (t('kind), string) => t('kind);
/**
`dir /../../../../../../ s` is equivalent to
`append(dirName(dirName(dirName(dirName(dirName(dirName(dir)))))), s)`
*/
let (/../../../../../../): (t('kind), string) => t('kind);
};

2
library/Semver.re

@ -9,7 +9,7 @@ let fromString = str => @@ -9,7 +9,7 @@ let fromString = str =>
switch (
String.split_on_char('.', str)
|> List.map(int_of_string_opt)
|> Core.Option.all
|> Base.Option.all
) {
| Some([major, minor, patch]) => Some({major, minor, patch})
| _ => None

18
library/Versions.re

@ -13,7 +13,7 @@ let compare = (v1, v2) => @@ -13,7 +13,7 @@ let compare = (v1, v2) =>
switch (parseSemver(v1), parseSemver(v2)) {
| (Some(v1), Some(v2)) => Semver.compare(v1, v2)
| (None, _)
| (_, None) => - Core.String.compare(v1, v2)
| (_, None) => - Base.String.compare(v1, v2)
};
let isVersionFitsPrefix = (prefix, version) => {
@ -138,7 +138,7 @@ module Remote = { @@ -138,7 +138,7 @@ module Remote = {
|> Soup.select("pre a")
|> Soup.to_list
|> List.map(Soup.attribute("href"))
|> Core.List.filter_map(~f=x => x)
|> Base.List.filter_map(~f=x => x)
|> List.map(x => {
let parts = String.split_on_char('/', x) |> List.rev;
switch (parts) {
@ -182,7 +182,15 @@ let getCurrentVersion = () => { @@ -182,7 +182,15 @@ let getCurrentVersion = () => {
| Exists(installationPath) =>
let fullPath = Filename.dirname(installationPath);
Lwt.return_some(
Local.{fullPath, name: Core.Filename.basename(fullPath), aliases: []},
Local.{
fullPath,
name:
fullPath
|> Path.absolute
|> Base.Option.bind(~f=Path.baseName)
|> Base.Option.value(~default=""),
aliases: [],
},
);
};
};
@ -214,10 +222,10 @@ let getRemoteVersions = () => { @@ -214,10 +222,10 @@ let getRemoteVersions = () => {
let%lwt installedVersions = Remote.getInstalledVersionSet();
versions
|> Core.List.filter(~f=x =>
|> List.filter(x =>
Str.last_chars(x, 1) == "/" && Str.first_chars(x, 1) != "."
)
|> Core.List.map(~f=x => Str.first_chars(x, String.length(x) - 1))
|> List.map(x => Str.first_chars(x, String.length(x) - 1))
|> List.sort(compare)
|> List.map(name =>
Remote.{

2
library/dune

@ -7,6 +7,6 @@ @@ -7,6 +7,6 @@
(name Fnm)
; Other libraries list this name in their package.json 'require' field to use this library.
(public_name fnm.lib)
(libraries pastel.lib str core lwt ssl lwt_ssl lambdasoup cohttp cohttp-lwt cohttp-lwt-unix console.lib )
(libraries pastel.lib str base lwt ssl lwt_ssl lambdasoup cohttp cohttp-lwt cohttp-lwt-unix console.lib )
(preprocess ( pps lwt_ppx ppx_let ppx_deriving.show ppx_deriving.eq ppx_deriving.make ppx_deriving.ord )) ; From package.json preprocess field
)

6
package.json

@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
"require": [
"pastel.lib",
"str",
"core",
"base",
"lwt",
"ssl",
"lwt_ssl",
@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
"ppx_let"
],
"require": [
"core",
"base",
"cmdliner",
"lwt",
"lambdasoup",
@ -82,7 +82,7 @@ @@ -82,7 +82,7 @@
"license": "GPL-3.0",
"dependencies": {
"@opam/dune": "*",
"@opam/core": "*",
"@opam/base": "*",
"@opam/cmdliner": "*",
"@opam/lwt": "*",
"@opam/lwt_ppx": "*",

Loading…
Cancel
Save