![ulrik.strid@outlook.com](/assets/img/avatar_default.png)
![Gal Schlezinger](/assets/img/avatar_default.png)
104 changed files with 11491 additions and 194 deletions
@ -1,41 +0,0 @@ |
|||||||
--- ./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;
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@ |
|||||||
{ |
|
||||||
"build": [ |
|
||||||
[ |
|
||||||
"bash", |
|
||||||
"-c", |
|
||||||
"#{os == 'windows' ? 'patch -p1 < base-v0.12.0.patch' : 'true'}" |
|
||||||
], |
|
||||||
[ |
|
||||||
"jbuilder", |
|
||||||
"build", |
|
||||||
"-p", |
|
||||||
"base", |
|
||||||
"-j", |
|
||||||
"4" |
|
||||||
] |
|
||||||
] |
|
||||||
} |
|
||||||
|
|
@ -0,0 +1,3 @@ |
|||||||
|
|
||||||
|
# Set eol to LF so files aren't converted to CRLF-eol on Windows. |
||||||
|
* text eol=lf |
@ -0,0 +1,3 @@ |
|||||||
|
|
||||||
|
# Reset any possible .gitignore, we want all esy.lock to be un-ignored. |
||||||
|
!* |
@ -0,0 +1,38 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["Daniel Bünzli <daniel.buenzl i@erratique.ch>"] |
||||||
|
homepage: "http://erratique.ch/software/astring" |
||||||
|
doc: "http://erratique.ch/software/astring/doc" |
||||||
|
dev-repo: "git+http://erratique.ch/repos/astring.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/astring/issues" |
||||||
|
tags: [ "string" "org:erratique" ] |
||||||
|
license: "ISC" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.01.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
"topkg" {build} |
||||||
|
"base-bytes" |
||||||
|
] |
||||||
|
build: [[ |
||||||
|
"ocaml" "pkg/pkg.ml" "build" |
||||||
|
"--pinned" "%{pinned}%" ]] |
||||||
|
synopsis: "Alternative String module for OCaml" |
||||||
|
description: """ |
||||||
|
Astring exposes an alternative `String` module for OCaml. This module |
||||||
|
tries to balance minimality and expressiveness for basic, index-free, |
||||||
|
string processing and provides types and functions for substrings, |
||||||
|
string sets and string maps. |
||||||
|
|
||||||
|
Remaining compatible with the OCaml `String` module is a non-goal. The |
||||||
|
`String` module exposed by Astring has exception safe functions, |
||||||
|
removes deprecated and rarely used functions, alters some signatures |
||||||
|
and names, adds a few missing functions and fully exploits OCaml's |
||||||
|
newfound string immutability. |
||||||
|
|
||||||
|
Astring depends only on the OCaml standard library. It is distributed |
||||||
|
under the ISC license.""" |
||||||
|
url { |
||||||
|
src: "http://erratique.ch/software/astring/releases/astring-0.8.3.tbz" |
||||||
|
checksum: "md5=c5bf6352b9ac27fbeab342740f4fa870" |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: " " |
||||||
|
authors: " " |
||||||
|
homepage: " " |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.0"} |
||||||
|
"ocamlfind" {>= "1.5.3"} |
||||||
|
] |
||||||
|
synopsis: "Bytes library distributed with the OCaml compiler" |
@ -0,0 +1,6 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "https://github.com/ocaml/opam-repository/issues" |
||||||
|
description: """ |
||||||
|
Threads library distributed with the OCaml compiler |
||||||
|
""" |
||||||
|
|
@ -0,0 +1,6 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "https://github.com/ocaml/opam-repository/issues" |
||||||
|
description: """ |
||||||
|
Unix library distributed with the OCaml compiler |
||||||
|
""" |
||||||
|
|
@ -0,0 +1,38 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
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" |
||||||
|
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/base/index.html" |
||||||
|
license: "MIT" |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.2" & < "4.09.0"} |
||||||
|
"sexplib0" {>= "v0.12" & < "v0.13"} |
||||||
|
"dune" {build & >= "1.5.1"} |
||||||
|
] |
||||||
|
depopts: [ |
||||||
|
"base-native-int63" |
||||||
|
] |
||||||
|
synopsis: "Full standard library replacement for OCaml" |
||||||
|
description: " |
||||||
|
Full standard library replacement for OCaml |
||||||
|
|
||||||
|
Base is a complete and portable alternative to the OCaml standard |
||||||
|
library. It provides all standard functionalities one would expect |
||||||
|
from a language standard library. It uses consistent conventions |
||||||
|
across all of its module. |
||||||
|
|
||||||
|
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 |
||||||
|
" |
||||||
|
url { |
||||||
|
src: "https://github.com/janestreet/base/archive/v0.12.2.tar.gz" |
||||||
|
checksum: "md5=7150e848a730369a2549d01645fb6c72" |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "mirageos-devel@lists.xenproject.org" |
||||||
|
authors: [ "Thomas Gazagnaire" |
||||||
|
"Anil Madhavapeddy" "Calascibetta Romain" |
||||||
|
"Peter Zotov" ] |
||||||
|
license: "ISC" |
||||||
|
homepage: "https://github.com/mirage/ocaml-base64" |
||||||
|
doc: "http://mirage.github.io/ocaml-base64/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-base64/issues" |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-base64.git" |
||||||
|
synopsis: "Base64 encoding for OCaml" |
||||||
|
description: """ |
||||||
|
Base64 is a group of similar binary-to-text encoding schemes that represent |
||||||
|
binary data in an ASCII string format by translating it into a radix-64 |
||||||
|
representation. It is specified in RFC 4648. |
||||||
|
""" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>="4.03.0"} |
||||||
|
"base-bytes" |
||||||
|
"dune" {build & >= "1.0.1"} |
||||||
|
"bos" {with-test} |
||||||
|
"rresult" {with-test} |
||||||
|
"alcotest" {with-test} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name] {with-test} |
||||||
|
] |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-base64/releases/download/v3.2.0/base64-v3.2.0.tbz" |
||||||
|
checksum: "md5=8ac1d6145277cee57d36611d1c420f05" |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "martin@mjambon.com" |
||||||
|
authors: ["Martin Jambon"] |
||||||
|
|
||||||
|
homepage: "https://github.com/mjambon/biniou" |
||||||
|
bug-reports: "https://github.com/mjambon/biniou/issues" |
||||||
|
dev-repo: "git+https://github.com/mjambon/biniou.git" |
||||||
|
license: "BSD-3-Clause" |
||||||
|
|
||||||
|
build: [ |
||||||
|
["jbuilder" "build" "-p" name "-j" jobs] |
||||||
|
["jbuilder" "runtest" "-p" name] {with-test} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
"conf-which" {build} |
||||||
|
"jbuilder" {build & >= "1.0+beta7"} |
||||||
|
"easy-format" |
||||||
|
] |
||||||
|
synopsis: |
||||||
|
"Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" |
||||||
|
url { |
||||||
|
src: "https://github.com/mjambon/biniou/archive/v1.2.0.tar.gz" |
||||||
|
checksum: "md5=f3e92358e832ed94eaf23ce622ccc2f9" |
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["Daniel Bünzli <daniel.buenzl i@erratique.ch>"] |
||||||
|
homepage: "http://erratique.ch/software/cmdliner" |
||||||
|
doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" |
||||||
|
dev-repo: "git+http://erratique.ch/repos/cmdliner.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/cmdliner/issues" |
||||||
|
tags: [ "cli" "system" "declarative" "org:erratique" ] |
||||||
|
license: "ISC" |
||||||
|
depends:[ "ocaml" {>= "4.03.0"} ] |
||||||
|
build: [[ make "all" "PREFIX=%{prefix}%" ]] |
||||||
|
install: |
||||||
|
[[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ] |
||||||
|
[make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]] |
||||||
|
|
||||||
|
synopsis: """Declarative definition of command line interfaces for OCaml""" |
||||||
|
description: """\ |
||||||
|
|
||||||
|
Cmdliner allows the declarative definition of command line interfaces |
||||||
|
for OCaml. |
||||||
|
|
||||||
|
It provides a simple and compositional mechanism to convert command |
||||||
|
line arguments to OCaml values and pass them to your functions. The |
||||||
|
module automatically handles syntax errors, help messages and UNIX man |
||||||
|
page generation. It supports programs with single or multiple commands |
||||||
|
and respects most of the [POSIX][1] and [GNU][2] conventions. |
||||||
|
|
||||||
|
Cmdliner has no dependencies and is distributed under the ISC license. |
||||||
|
|
||||||
|
[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html |
||||||
|
[2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html |
||||||
|
""" |
||||||
|
url { |
||||||
|
archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.3.tbz" |
||||||
|
checksum: "3674ad01d4445424105d33818c78fba8" |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: [ |
||||||
|
"Anil Madhavapeddy" |
||||||
|
"Stefano Zacchiroli" |
||||||
|
"David Sheets" |
||||||
|
"Thomas Gazagnaire" |
||||||
|
"David Scott" |
||||||
|
"Rudi Grinberg" |
||||||
|
"Andy Ray" |
||||||
|
] |
||||||
|
synopsis: "CoHTTP implementation for Unix and Windows using Lwt" |
||||||
|
description: """ |
||||||
|
An implementation of an HTTP client and server using the Lwt |
||||||
|
concurrency library. See the `Cohttp_lwt_unix` module for information |
||||||
|
on how to use this. The package also installs `cohttp-curl-lwt` |
||||||
|
and a `cohttp-server-lwt` binaries for quick uses of a HTTP(S) |
||||||
|
client and server respectively. |
||||||
|
|
||||||
|
Although the name implies that this only works under Unix, it |
||||||
|
should also be fine under Windows too.""" |
||||||
|
license: "ISC" |
||||||
|
tags: ["org:mirage" "org:xapi-project"] |
||||||
|
homepage: "https://github.com/mirage/ocaml-cohttp" |
||||||
|
doc: "https://mirage.github.io/ocaml-cohttp/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-cohttp/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.1"} |
||||||
|
"dune" {build & >= "1.1.0"} |
||||||
|
"conduit-lwt-unix" {>= "1.0.3"} |
||||||
|
"cmdliner" |
||||||
|
"magic-mime" |
||||||
|
"logs" |
||||||
|
"fmt" {>= "0.8.2"} |
||||||
|
"cohttp-lwt" |
||||||
|
"lwt" {>= "3.0.0"} |
||||||
|
"base-unix" |
||||||
|
"ounit" {with-test} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-cohttp.git" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-cohttp/releases/download/v2.0.0/cohttp-v2.0.0.tbz" |
||||||
|
checksum: "md5=c354599fdb4f2625b6510182de0fc86b" |
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: [ |
||||||
|
"Anil Madhavapeddy" |
||||||
|
"Stefano Zacchiroli" |
||||||
|
"David Sheets" |
||||||
|
"Thomas Gazagnaire" |
||||||
|
"David Scott" |
||||||
|
"Rudi Grinberg" |
||||||
|
"Andy Ray" |
||||||
|
] |
||||||
|
synopsis: "CoHTTP implementation using the Lwt concurrency library" |
||||||
|
description: """ |
||||||
|
This is a portable implementation of HTTP that uses the Lwt |
||||||
|
concurrency library to multiplex IO. It implements as much of the |
||||||
|
logic in an OS-independent way as possible, so that more specialised |
||||||
|
modules can be tailored for different targets. For example, you |
||||||
|
can install `cohttp-lwt-unix` or `cohttp-lwt-jsoo` for a Unix or |
||||||
|
JavaScript backend, or `cohttp-mirage` for the MirageOS unikernel |
||||||
|
version of the library. All of these implementations share the same |
||||||
|
IO logic from this module.""" |
||||||
|
license: "ISC" |
||||||
|
tags: ["org:mirage" "org:xapi-project"] |
||||||
|
homepage: "https://github.com/mirage/ocaml-cohttp" |
||||||
|
doc: "https://mirage.github.io/ocaml-cohttp/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-cohttp/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.1"} |
||||||
|
"dune" {build & >= "1.1.0"} |
||||||
|
"cohttp" {>= "2.0.0"} |
||||||
|
"lwt" {>= "2.5.0"} |
||||||
|
"sexplib0" {< "v0.13"} |
||||||
|
"ppx_sexp_conv" {>= "v0.9.0" & < "v0.13"} |
||||||
|
"logs" |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-cohttp.git" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-cohttp/releases/download/v2.0.0/cohttp-v2.0.0.tbz" |
||||||
|
checksum: "md5=c354599fdb4f2625b6510182de0fc86b" |
||||||
|
} |
@ -0,0 +1,59 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: [ |
||||||
|
"Anil Madhavapeddy" |
||||||
|
"Stefano Zacchiroli" |
||||||
|
"David Sheets" |
||||||
|
"Thomas Gazagnaire" |
||||||
|
"David Scott" |
||||||
|
"Rudi Grinberg" |
||||||
|
"Andy Ray" |
||||||
|
] |
||||||
|
synopsis: "An OCaml library for HTTP clients and servers" |
||||||
|
description: """ |
||||||
|
Cohttp is an OCaml library for creating HTTP daemons. It has a portable |
||||||
|
HTTP parser, and implementations using various asynchronous programming |
||||||
|
libraries. |
||||||
|
|
||||||
|
See the cohttp-async, cohttp-lwt, cohttp-lwt-unix, cohttp-lwt-jsoo and |
||||||
|
cohttp-mirage libraries for concrete implementations for particular |
||||||
|
targets. |
||||||
|
|
||||||
|
You can implement other targets using the parser very easily. Look at the `IO` |
||||||
|
signature in `lib/s.mli` and implement that in the desired backend. |
||||||
|
|
||||||
|
You can activate some runtime debugging by setting `COHTTP_DEBUG` to any |
||||||
|
value, and all requests and responses will be written to stderr. Further |
||||||
|
debugging of the connection layer can be obtained by setting `CONDUIT_DEBUG` |
||||||
|
to any value.""" |
||||||
|
license: "ISC" |
||||||
|
tags: ["org:mirage" "org:xapi-project"] |
||||||
|
homepage: "https://github.com/mirage/ocaml-cohttp" |
||||||
|
doc: "https://mirage.github.io/ocaml-cohttp/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-cohttp/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.1"} |
||||||
|
"dune" {build & >= "1.1.0"} |
||||||
|
"re" {>= "1.7.2"} |
||||||
|
"uri" {>= "2.0.0"} |
||||||
|
"fieldslib" |
||||||
|
"sexplib0" |
||||||
|
"ppx_fields_conv" {>= "v0.9.0"} |
||||||
|
"ppx_sexp_conv" {>= "v0.9.0"} |
||||||
|
"stringext" |
||||||
|
"base64" {>= "3.1.0"} |
||||||
|
"fmt" {with-test} |
||||||
|
"jsonm" {build} |
||||||
|
"alcotest" {with-test} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-cohttp.git" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-cohttp/releases/download/v2.1.2/cohttp-v2.1.2.tbz" |
||||||
|
checksum: "md5=1bdde705d853175c67666b45bf3edc43" |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: [ |
||||||
|
"Anil Madhavapeddy" "Thomas Leonard" "Thomas Gazagnaire" "Rudi Grinberg" |
||||||
|
] |
||||||
|
license: "ISC" |
||||||
|
tags: "org:mirage" |
||||||
|
homepage: "https://github.com/mirage/ocaml-conduit" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-conduit/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03.0"} |
||||||
|
"dune" {build} |
||||||
|
"base-unix" |
||||||
|
"ppx_sexp_conv" {< "v0.13"} |
||||||
|
"conduit-lwt" {>="1.4.0"} |
||||||
|
"lwt" {>= "3.0.0"} |
||||||
|
"uri" {>= "1.9.4"} |
||||||
|
"ipaddr" {>= "3.0.0"} |
||||||
|
] |
||||||
|
depopts: ["tls" "lwt_ssl" "launchd"] |
||||||
|
conflicts: [ |
||||||
|
"tls" {< "0.8.0"} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-conduit.git" |
||||||
|
synopsis: "A network connection establishment library for Lwt_unix" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-conduit/releases/download/v1.4.0/conduit-v1.4.0.tbz" |
||||||
|
checksum: "md5=204222b8a61692083b79c67c8967fb28" |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: [ |
||||||
|
"Anil Madhavapeddy" "Thomas Leonard" "Thomas Gazagnaire" "Rudi Grinberg" |
||||||
|
] |
||||||
|
license: "ISC" |
||||||
|
tags: "org:mirage" |
||||||
|
homepage: "https://github.com/mirage/ocaml-conduit" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-conduit/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03.0"} |
||||||
|
"dune" {build} |
||||||
|
"base-unix" |
||||||
|
"ppx_sexp_conv" {< "v0.13"} |
||||||
|
"sexplib" {< "v0.13"} |
||||||
|
"conduit" {="1.4.0"} |
||||||
|
"lwt" {>= "3.0.0"} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-conduit.git" |
||||||
|
synopsis: "A portable network connection establishment library using Lwt" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-conduit/releases/download/v1.4.0/conduit-v1.4.0.tbz" |
||||||
|
checksum: "md5=204222b8a61692083b79c67c8967fb28" |
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: [ |
||||||
|
"Anil Madhavapeddy" "Thomas Leonard" "Thomas Gazagnaire" "Rudi Grinberg" |
||||||
|
] |
||||||
|
license: "ISC" |
||||||
|
tags: "org:mirage" |
||||||
|
homepage: "https://github.com/mirage/ocaml-conduit" |
||||||
|
doc: "https://mirage.github.io/ocaml-conduit/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-conduit/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03.0"} |
||||||
|
"dune" {build} |
||||||
|
"ppx_sexp_conv" {< "v0.13"} |
||||||
|
"sexplib" {< "v0.13"} |
||||||
|
"astring" |
||||||
|
"uri" |
||||||
|
"result" |
||||||
|
"logs" {>= "0.5.0"} |
||||||
|
"ipaddr" {>= "3.0.0"} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-conduit.git" |
||||||
|
synopsis: "A network connection establishment library" |
||||||
|
description: """ |
||||||
|
The `conduit` library takes care of establishing and listening for |
||||||
|
TCP and SSL/TLS connections for the Lwt and Async libraries. |
||||||
|
|
||||||
|
The reason this library exists is to provide a degree of abstraction |
||||||
|
from the precise SSL library used, since there are a variety of ways |
||||||
|
to bind to a library (e.g. the C FFI, or the Ctypes library), as well |
||||||
|
as well as which library is used (just OpenSSL for now). |
||||||
|
|
||||||
|
By default, OpenSSL is used as the preferred connection library, but |
||||||
|
you can force the use of the pure OCaml TLS stack by setting the |
||||||
|
environment variable `CONDUIT_TLS=native` when starting your program. |
||||||
|
|
||||||
|
The useful opam packages available that extend this library are: |
||||||
|
|
||||||
|
- `conduit`: the main `Conduit` module |
||||||
|
- `conduit-lwt`: the portable Lwt implementation |
||||||
|
- `conduit-lwt-unix`: the Lwt/Unix implementation |
||||||
|
- `conduit-async` the Jane Street Async implementation |
||||||
|
- `mirage-conduit`: the MirageOS compatible implementation |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-conduit/releases/download/v1.4.0/conduit-v1.4.0.tbz" |
||||||
|
checksum: "md5=204222b8a61692083b79c67c8967fb28" |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "tim@gfxmonk.net" |
||||||
|
homepage: "http://www.gnu.org/software/m4/m4.html" |
||||||
|
bug-reports: "https://github.com/ocaml/opam-repository/issues" |
||||||
|
authors: "GNU Project" |
||||||
|
license: "GPL-3" |
||||||
|
build: [["sh" "-exc" "echo | m4"]] |
||||||
|
depexts: [ |
||||||
|
["m4"] {os-distribution = "debian"} |
||||||
|
["m4"] {os-distribution = "ubuntu"} |
||||||
|
["m4"] {os-distribution = "fedora"} |
||||||
|
["m4"] {os-distribution = "rhel"} |
||||||
|
["m4"] {os-distribution = "centos"} |
||||||
|
["m4"] {os-distribution = "alpine"} |
||||||
|
["m4"] {os-distribution = "nixos"} |
||||||
|
["m4"] {os-family = "suse"} |
||||||
|
["m4"] {os-distribution = "ol"} |
||||||
|
["m4"] {os-distribution = "arch"} |
||||||
|
] |
||||||
|
synopsis: "Virtual package relying on m4" |
||||||
|
description: |
||||||
|
"This package can only install if the m4 binary is installed on the system." |
||||||
|
flags: conf |
@ -0,0 +1,39 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "unixjunkie@sdf.org" |
||||||
|
authors: ["Francois Berenger"] |
||||||
|
homepage: "http://www.freedesktop.org/wiki/Software/pkg-config/" |
||||||
|
bug-reports: "https://github.com/ocaml/opam-repository/issues" |
||||||
|
license: "GPL" |
||||||
|
build: [ |
||||||
|
["pkg-config" "--help"] |
||||||
|
] |
||||||
|
install: [ |
||||||
|
["ln" "-s" "/usr/local/bin/pkgconf" "%{bin}%/pkg-config"] {os = "openbsd"} |
||||||
|
] |
||||||
|
remove: [ |
||||||
|
["rm" "-f" "%{bin}%/pkg-config"] {os = "openbsd"} |
||||||
|
] |
||||||
|
post-messages: [ |
||||||
|
"conf-pkg-config: A symlink to /usr/local/bin/pkgconf has been installed in the OPAM bin directory (%{bin}%) on your PATH as 'pkg-config'. This is necessary for correct operation." {os = "openbsd"} |
||||||
|
] |
||||||
|
depexts: [ |
||||||
|
["pkg-config"] {os-distribution = "debian"} |
||||||
|
["pkg-config"] {os-distribution = "ubuntu"} |
||||||
|
["pkg-config"] {os-distribution = "arch"} |
||||||
|
["pkgconfig"] {os-distribution = "fedora"} |
||||||
|
["pkgconfig"] {os-distribution = "centos"} |
||||||
|
["pkgconfig"] {os-distribution = "mageia"} |
||||||
|
["pkgconfig"] {os-distribution = "rhel"} |
||||||
|
["pkgconfig"] {os-distribution = "ol"} |
||||||
|
["pkgconfig"] {os-distribution = "alpine"} |
||||||
|
["devel/pkgconf"] {os = "freebsd"} |
||||||
|
["devel/pkgconf"] {os = "openbsd"} |
||||||
|
["pkg-config"] {os = "macos" & os-distribution = "homebrew"} |
||||||
|
["pkgconf"] {os = "freebsd"} |
||||||
|
["pkg-config"] {os-distribution = "cygwinports"} |
||||||
|
] |
||||||
|
synopsis: "Virtual package relying on pkg-config installation" |
||||||
|
description: """ |
||||||
|
This package can only install if the pkg-config package is installed |
||||||
|
on the system.""" |
||||||
|
flags: conf |
@ -0,0 +1,20 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "unixjunkie@sdf.org" |
||||||
|
homepage: "http://www.gnu.org/software/which/" |
||||||
|
authors: "Carlo Wood" |
||||||
|
bug-reports: "https://github.com/ocaml/opam-repository/issues" |
||||||
|
license: "GPL-2+" |
||||||
|
build: [["which" "which"]] |
||||||
|
depexts: [ |
||||||
|
["which"] {os-distribution = "centos"} |
||||||
|
["which"] {os-distribution = "fedora"} |
||||||
|
["which"] {os-family = "suse"} |
||||||
|
["debianutils"] {os-distribution = "debian"} |
||||||
|
["debianutils"] {os-distribution = "ubuntu"} |
||||||
|
["which"] {os-distribution = "nixos"} |
||||||
|
["which"] {os-distribution = "arch"} |
||||||
|
] |
||||||
|
synopsis: "Virtual package relying on which" |
||||||
|
description: |
||||||
|
"This package can only install if the which program is installed on the system." |
||||||
|
flags: conf |
@ -0,0 +1,37 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "martin@mjambon.com" |
||||||
|
authors: "Martin Jambon" |
||||||
|
license: "BSD-3-Clause" |
||||||
|
homepage: "http://mjambon.com/cppo.html" |
||||||
|
doc: "https://ocaml-community.github.io/cppo/" |
||||||
|
bug-reports: "https://github.com/ocaml-community/cppo/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03"} |
||||||
|
"dune" {build & >= "1.0"} |
||||||
|
"base-unix" |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/ocaml-community/cppo.git" |
||||||
|
synopsis: "Code preprocessor like cpp for OCaml" |
||||||
|
description: """ |
||||||
|
Cppo is an equivalent of the C preprocessor for OCaml programs. |
||||||
|
It allows the definition of simple macros and file inclusion. |
||||||
|
|
||||||
|
Cppo is: |
||||||
|
|
||||||
|
* more OCaml-friendly than cpp |
||||||
|
* easy to learn without consulting a manual |
||||||
|
* reasonably fast |
||||||
|
* simple to install and to maintain |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" |
||||||
|
checksum: [ |
||||||
|
"sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" |
||||||
|
"sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "martin@mjambon.com" |
||||||
|
authors: "Martin Jambon" |
||||||
|
license: "BSD-3-Clause" |
||||||
|
homepage: "http://mjambon.com/cppo.html" |
||||||
|
doc: "https://ocaml-community.github.io/cppo/" |
||||||
|
bug-reports: "https://github.com/ocaml-community/cppo/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" |
||||||
|
"dune" {build & >= "1.0"} |
||||||
|
"ocamlbuild" |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/ocaml-community/cppo.git" |
||||||
|
synopsis: "Plugin to use cppo with ocamlbuild" |
||||||
|
description: """ |
||||||
|
This ocamlbuild plugin lets you use cppo in ocamlbuild projects. |
||||||
|
|
||||||
|
To use it, you can call ocamlbuild with the argument `-plugin-tag |
||||||
|
package(cppo_ocamlbuild)` (only since ocaml 4.01 and cppo >= 0.9.4). |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" |
||||||
|
checksum: [ |
||||||
|
"sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" |
||||||
|
"sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] |
||||||
|
homepage: "https://github.com/ocaml/dune" |
||||||
|
bug-reports: "https://github.com/ocaml/dune/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml/dune.git" |
||||||
|
license: "MIT" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02"} |
||||||
|
"base-unix" |
||||||
|
"base-threads" |
||||||
|
] |
||||||
|
build: [ |
||||||
|
# opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path |
||||||
|
["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} |
||||||
|
["ocaml" "bootstrap.ml"] |
||||||
|
["./boot.exe" "--release" "--subst"] {pinned} |
||||||
|
["./boot.exe" "--release" "-j" jobs] |
||||||
|
] |
||||||
|
conflicts: [ |
||||||
|
"jbuilder" {!= "transition"} |
||||||
|
"odoc" {< "1.3.0"} |
||||||
|
] |
||||||
|
|
||||||
|
synopsis: "Fast, portable and opinionated build system" |
||||||
|
description: """ |
||||||
|
dune is a build system that was designed to simplify the release of |
||||||
|
Jane Street packages. It reads metadata from "dune" files following a |
||||||
|
very simple s-expression syntax. |
||||||
|
|
||||||
|
dune is fast, it has very low-overhead and support parallel builds on |
||||||
|
all platforms. It has no system dependencies, all you need to build |
||||||
|
dune and packages using dune is OCaml. You don't need or make or bash |
||||||
|
as long as the packages themselves don't use bash explicitly. |
||||||
|
|
||||||
|
dune supports multi-package development by simply dropping multiple |
||||||
|
repositories into the same directory. |
||||||
|
|
||||||
|
It also supports multi-context builds, such as building against |
||||||
|
several opam roots/switches simultaneously. This helps maintaining |
||||||
|
packages across several versions of OCaml and gives cross-compilation |
||||||
|
for free. |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml/dune/releases/download/1.9.3/dune-1.9.3.tbz" |
||||||
|
checksum: [ |
||||||
|
"sha256=317bec6de4429b5dee157e9864294e1534b722a2acfc50480bd16c804ab790ca" |
||||||
|
"sha512=17450333156622d4612816f9ad5a224c741d62b247d63c1d77b5359d37517c1f9bc598dd11fa024f4e02ccf7eef474cd532eef1d9c34ed13439db6c781f9fa7a" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "martin@mjambon.com" |
||||||
|
authors: ["Martin Jambon"] |
||||||
|
homepage: "http://mjambon.com/easy-format.html" |
||||||
|
bug-reports: "https://github.com/mjambon/easy-format/issues" |
||||||
|
dev-repo: "git+https://github.com/mjambon/easy-format.git" |
||||||
|
build: [ |
||||||
|
["jbuilder" "build" "-p" name "-j" jobs] |
||||||
|
["jbuilder" "runtest" "-p" name] {with-test} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
"jbuilder" {build} |
||||||
|
] |
||||||
|
synopsis: |
||||||
|
"High-level and functional interface to the Format module of the OCaml standard library" |
||||||
|
url { |
||||||
|
src: "https://github.com/mjambon/easy-format/archive/v1.3.1.tar.gz" |
||||||
|
checksum: "md5=4e163700fb88fdcd6b8976c3a216c8ea" |
||||||
|
} |
@ -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" |
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: [ "The fmt programmers" ] |
||||||
|
homepage: "https://erratique.ch/software/fmt" |
||||||
|
doc: "https://erratique.ch/software/fmt" |
||||||
|
dev-repo: "git+https://erratique.ch/repos/fmt.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/fmt/issues" |
||||||
|
tags: [ "string" "format" "pretty-print" "org:erratique" ] |
||||||
|
license: "ISC" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
"topkg" {build & >= "0.9.0"} |
||||||
|
# Can be removed once ocaml >= 4.07 |
||||||
|
"seq" |
||||||
|
"stdlib-shims" |
||||||
|
] |
||||||
|
depopts: [ "base-unix" "cmdliner" ] |
||||||
|
conflicts: [ "cmdliner" {< "0.9.8"} ] |
||||||
|
build: [[ |
||||||
|
"ocaml" "pkg/pkg.ml" "build" |
||||||
|
"--dev-pkg" "%{pinned}%" |
||||||
|
"--with-base-unix" "%{base-unix:installed}%" |
||||||
|
"--with-cmdliner" "%{cmdliner:installed}%" ]] |
||||||
|
|
||||||
|
synopsis: """OCaml Format pretty-printer combinators""" |
||||||
|
description: """\ |
||||||
|
|
||||||
|
Fmt exposes combinators to devise `Format` pretty-printing functions. |
||||||
|
|
||||||
|
Fmt depends only on the OCaml standard library. The optional `Fmt_tty` |
||||||
|
library that allows to setup formatters for terminal color output |
||||||
|
depends on the Unix library. The optional `Fmt_cli` library that |
||||||
|
provides command line support for Fmt depends on [`Cmdliner`][cmdliner]. |
||||||
|
|
||||||
|
Fmt is distributed under the ISC license. |
||||||
|
|
||||||
|
[cmdliner]: http://erratique.ch/software/cmdliner |
||||||
|
""" |
||||||
|
url { |
||||||
|
archive: "https://erratique.ch/software/fmt/releases/fmt-0.8.6.tbz" |
||||||
|
checksum: "5407789e5f0ea42272ca19353b1abfd3" |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: ["David Sheets" "Anil Madhavapeddy" "Hugo Heuzard"] |
||||||
|
synopsis: "A library for manipulation of IP (and MAC) address representations" |
||||||
|
description: """ |
||||||
|
Features: |
||||||
|
* Depends only on sexplib (conditionalization under consideration) |
||||||
|
* oUnit-based tests |
||||||
|
* IPv4 and IPv6 support |
||||||
|
* IPv4 and IPv6 CIDR prefix support |
||||||
|
* IPv4 and IPv6 [CIDR-scoped address](http://tools.ietf.org/html/rfc4291#section-2.3) support |
||||||
|
* `Ipaddr.V4` and `Ipaddr.V4.Prefix` modules are `Map.OrderedType` |
||||||
|
* `Ipaddr.V6` and `Ipaddr.V6.Prefix` modules are `Map.OrderedType` |
||||||
|
* `Ipaddr` and `Ipaddr.Prefix` modules are `Map.OrderedType` |
||||||
|
* `Ipaddr_unix` in findlib subpackage `ipaddr.unix` provides compatibility with the standard library `Unix` module |
||||||
|
* `Ipaddr_top` in findlib subpackage `ipaddr.top` provides top-level pretty printers (requires compiler-libs default since OCaml 4.0) |
||||||
|
* IP address scope classification |
||||||
|
* IPv4-mapped addresses in IPv6 (::ffff:0:0/96) are an embedding of IPv4 |
||||||
|
* MAC-48 (Ethernet) address support |
||||||
|
* `Macaddr` is a `Map.OrderedType` |
||||||
|
* All types have sexplib serializers/deserializers |
||||||
|
""" |
||||||
|
|
||||||
|
license: "ISC" |
||||||
|
tags: ["org:mirage" "org:xapi-project"] |
||||||
|
homepage: "https://github.com/mirage/ocaml-ipaddr" |
||||||
|
doc: "https://mirage.github.io/ocaml-ipaddr/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-ipaddr/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.0"} |
||||||
|
"dune" {build} |
||||||
|
"macaddr" |
||||||
|
"sexplib0" |
||||||
|
"ounit" {with-test} |
||||||
|
"ppx_sexp_conv" {with-test} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-ipaddr.git" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-ipaddr/releases/download/v3.1.0/ipaddr-v3.1.0.tbz" |
||||||
|
checksum: "md5=471a594563bb9c3dd91ae912b5ffd6ed" |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] |
||||||
|
homepage: "https://github.com/ocaml/dune" |
||||||
|
bug-reports: "https://github.com/ocaml/dune/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml/dune.git" |
||||||
|
license: "MIT" |
||||||
|
depends: ["ocaml" "dune"] |
||||||
|
post-messages: [ |
||||||
|
"Jbuilder has been renamed and the jbuilder package is now a transition \ |
||||||
|
package. Use the dune package instead." |
||||||
|
] |
||||||
|
synopsis: |
||||||
|
"This is a transition package, jbuilder is now named dune. Use the dune" |
||||||
|
description: "package instead." |
@ -0,0 +1,37 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["Daniel Bünzli <daniel.buenzl i@erratique.ch>"] |
||||||
|
homepage: "http://erratique.ch/software/jsonm" |
||||||
|
doc: "http://erratique.ch/software/jsonm/doc/Jsonm" |
||||||
|
dev-repo: "git+http://erratique.ch/repos/jsonm.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/jsonm/issues" |
||||||
|
tags: [ "json" "codec" "org:erratique" ] |
||||||
|
license: "ISC" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.01.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
"topkg" {build} |
||||||
|
"uchar" |
||||||
|
"uutf" {>= "1.0.0"} |
||||||
|
] |
||||||
|
build:[[ |
||||||
|
"ocaml" "pkg/pkg.ml" "build" |
||||||
|
"--pinned" "%{pinned}%" ]] |
||||||
|
synopsis: "Non-blocking streaming JSON codec for OCaml" |
||||||
|
description: """ |
||||||
|
Jsonm is a non-blocking streaming codec to decode and encode the JSON |
||||||
|
data format. It can process JSON text without blocking on IO and |
||||||
|
without a complete in-memory representation of the data. |
||||||
|
|
||||||
|
The alternative "uncut" codec also processes whitespace and |
||||||
|
(non-standard) JSON with JavaScript comments. |
||||||
|
|
||||||
|
Jsonm is made of a single module and depends on [Uutf][uutf]. It is distributed |
||||||
|
under the ISC license. |
||||||
|
|
||||||
|
[uutf]: http://erratique.ch/software/uutf""" |
||||||
|
url { |
||||||
|
src: "http://erratique.ch/software/jsonm/releases/jsonm-1.0.1.tbz" |
||||||
|
checksum: "md5=e2ca39eaefd55b8d155c4f1ec5885311" |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
version: "0.6.3" |
||||||
|
homepage: "https://github.com/aantron/lambda-soup" |
||||||
|
doc: "http://aantron.github.io/lambda-soup" |
||||||
|
bug-reports: "https://github.com/aantron/lambda-soup/issues" |
||||||
|
license: "BSD" |
||||||
|
|
||||||
|
authors: "Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
maintainer: "Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
dev-repo: "git+https://github.com/aantron/lambda-soup.git" |
||||||
|
depends: [ |
||||||
|
"ocaml" |
||||||
|
"jbuilder" {build & >= "1.0+beta10"} |
||||||
|
"markup" {>= "0.7.1"} |
||||||
|
"ounit" {with-test} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["jbuilder" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
synopsis: "Easy functional HTML scraping and manipulation with CSS selectors" |
||||||
|
description: """ |
||||||
|
Lambda Soup is an HTML scraping library inspired by Python's Beautiful Soup. It |
||||||
|
provides lazy traversals from HTML nodes to their parents, children, siblings, |
||||||
|
etc., and to nodes matching CSS selectors. The traversals can be manipulated |
||||||
|
using standard functional combinators such as fold, filter, and map. |
||||||
|
|
||||||
|
The DOM tree is mutable. You can use Lambda Soup for automatic HTML rewriting in |
||||||
|
scripts. Lambda Soup rewrites its own ocamldoc page this way. |
||||||
|
|
||||||
|
A major goal of Lambda Soup is to be easy to use, including in interactive |
||||||
|
sessions, and to have a minimal learning curve. It is a very simple library.""" |
||||||
|
url { |
||||||
|
src: "https://github.com/aantron/lambda-soup/archive/0.6.3.tar.gz" |
||||||
|
checksum: "md5=89f0596aa05a6e7a33bf9d74797905f1" |
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["The logs programmers"] |
||||||
|
homepage: "https://erratique.ch/software/logs" |
||||||
|
doc: "https://erratique.ch/software/logs/doc" |
||||||
|
dev-repo: "git+https://erratique.ch/repos/logs.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/logs/issues" |
||||||
|
tags: [ "log" "system" "org:erratique" ] |
||||||
|
license: "ISC" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
"topkg" {build} |
||||||
|
"mtime" {with-test} ] |
||||||
|
depopts: [ |
||||||
|
"js_of_ocaml" |
||||||
|
"fmt" |
||||||
|
"cmdliner" |
||||||
|
"lwt" ] |
||||||
|
conflicts: [ |
||||||
|
"js_of_ocaml" { < "3.3.0" } ] |
||||||
|
|
||||||
|
build: [[ |
||||||
|
"ocaml" "pkg/pkg.ml" "build" |
||||||
|
"--pinned" "%{pinned}%" |
||||||
|
"--with-js_of_ocaml" "%{js_of_ocaml:installed}%" |
||||||
|
"--with-fmt" "%{fmt:installed}%" |
||||||
|
"--with-cmdliner" "%{cmdliner:installed}%" |
||||||
|
"--with-lwt" "%{lwt:installed}%" ]] |
||||||
|
|
||||||
|
synopsis: """Logging infrastructure for OCaml""" |
||||||
|
description: """\ |
||||||
|
|
||||||
|
Logs provides a logging infrastructure for OCaml. Logging is performed |
||||||
|
on sources whose reporting level can be set independently. Log message |
||||||
|
report is decoupled from logging and is handled by a reporter. |
||||||
|
|
||||||
|
A few optional log reporters are distributed with the base library and |
||||||
|
the API easily allows to implement your own. |
||||||
|
|
||||||
|
`Logs` has no dependencies. The optional `Logs_fmt` reporter on OCaml |
||||||
|
formatters depends on [Fmt][fmt]. The optional `Logs_browser` |
||||||
|
reporter that reports to the web browser console depends on |
||||||
|
[js_of_ocaml][jsoo]. The optional `Logs_cli` library that provides |
||||||
|
command line support for controlling Logs depends on |
||||||
|
[`Cmdliner`][cmdliner]. The optional `Logs_lwt` library that provides |
||||||
|
Lwt logging functions depends on [`Lwt`][lwt] |
||||||
|
|
||||||
|
Logs and its reporters are distributed under the ISC license. |
||||||
|
|
||||||
|
[fmt]: http://erratique.ch/software/fmt |
||||||
|
[jsoo]: http://ocsigen.org/js_of_ocaml/ |
||||||
|
[cmdliner]: http://erratique.ch/software/cmdliner |
||||||
|
[lwt]: http://ocsigen.org/lwt/ |
||||||
|
""" |
||||||
|
url { |
||||||
|
archive: "https://erratique.ch/software/logs/releases/logs-0.6.3.tbz" |
||||||
|
checksum: "370e4c802588f73d0777c59bc414b57b" |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
|
||||||
|
synopsis: "Promises and event-driven I/O" |
||||||
|
|
||||||
|
license: "MIT" |
||||||
|
homepage: "https://github.com/ocsigen/lwt" |
||||||
|
doc: "https://ocsigen.org/lwt/manual/" |
||||||
|
bug-reports: "https://github.com/ocsigen/lwt/issues" |
||||||
|
|
||||||
|
authors: [ |
||||||
|
"Jérôme Vouillon" |
||||||
|
"Jérémie Dimino" |
||||||
|
] |
||||||
|
maintainer: [ |
||||||
|
"Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
"Mauricio Fernandez <mfp@acm.org>" |
||||||
|
"Simon Cruanes <simon.cruanes.2007@m4x.org>" |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/ocsigen/lwt.git" |
||||||
|
|
||||||
|
depends: [ |
||||||
|
"cppo" {build & >= "1.1.0"} |
||||||
|
"dune" {build} |
||||||
|
"mmap" # mmap is needed as long as Lwt supports OCaml < 4.06.0. |
||||||
|
"ocaml" {>= "4.02.0"} |
||||||
|
"result" # result is needed as long as Lwt supports OCaml 4.02. |
||||||
|
"seq" # seq is needed as long as Lwt supports OCaml < 4.07.0. |
||||||
|
|
||||||
|
"bisect_ppx" {dev & >= "1.3.0"} |
||||||
|
"ocamlfind" {dev & >= "1.7.3-1"} |
||||||
|
] |
||||||
|
depopts: [ |
||||||
|
"base-threads" |
||||||
|
"base-unix" |
||||||
|
"conf-libev" |
||||||
|
] |
||||||
|
|
||||||
|
conflicts: [ |
||||||
|
"ocaml-variants" {= "4.02.1+BER"} |
||||||
|
] |
||||||
|
|
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
|
||||||
|
description: "A promise is a value that may become determined in the future. |
||||||
|
|
||||||
|
Lwt provides typed, composable promises. Promises that are resolved by I/O are |
||||||
|
resolved by Lwt in parallel. |
||||||
|
|
||||||
|
Meanwhile, OCaml code, including code creating and waiting on promises, runs in |
||||||
|
a single thread by default. This reduces the need for locks or other |
||||||
|
synchronization primitives. Code can be run in parallel on an opt-in basis." |
||||||
|
|
||||||
|
url { |
||||||
|
src: "https://github.com/ocsigen/lwt/archive/4.2.1.tar.gz" |
||||||
|
checksum: "md5=9d648386ca0a9978eb9487de36b781cc" |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
|
||||||
|
synopsis: "PPX syntax for Lwt, providing something similar to async/await from JavaScript" |
||||||
|
|
||||||
|
license: "MIT" |
||||||
|
homepage: "https://github.com/ocsigen/lwt" |
||||||
|
doc: "https://ocsigen.org/lwt/api/Ppx_lwt" |
||||||
|
bug-reports: "https://github.com/ocsigen/lwt/issues" |
||||||
|
|
||||||
|
authors: [ |
||||||
|
"Gabriel Radanne" |
||||||
|
] |
||||||
|
maintainer: [ |
||||||
|
"Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/ocsigen/lwt.git" |
||||||
|
|
||||||
|
depends: [ |
||||||
|
"dune" {build} |
||||||
|
"lwt" |
||||||
|
"ocaml" {>= "4.02.0"} |
||||||
|
"ocaml-migrate-parsetree" |
||||||
|
"ppx_tools_versioned" {>= "5.0.1"} |
||||||
|
] |
||||||
|
|
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
|
||||||
|
url { |
||||||
|
src: "https://github.com/ocsigen/lwt/archive/4.2.0.tar.gz" |
||||||
|
checksum: "md5=2ce7827948adc611319f9449e4519070" |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
version: "1.1.2" |
||||||
|
homepage: "https://github.com/aantron/lwt_ssl" |
||||||
|
doc: "https://github.com/aantron/lwt_ssl/blob/master/src/lwt_ssl.mli" |
||||||
|
bug-reports: "https://github.com/aantron/lwt_ssl/issues" |
||||||
|
license: "LGPL with OpenSSL linking exception" |
||||||
|
|
||||||
|
authors: [ |
||||||
|
"Jérôme Vouillon" |
||||||
|
"Jérémie Dimino" |
||||||
|
] |
||||||
|
maintainer: "Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
dev-repo: "git+https://github.com/aantron/lwt_ssl.git" |
||||||
|
depends: [ |
||||||
|
"ocaml" |
||||||
|
"base-unix" |
||||||
|
"jbuilder" {build & >= "1.0+beta10"} |
||||||
|
"lwt" {>= "3.0.0"} |
||||||
|
"ssl" {>= "0.5.0"} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["jbuilder" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
synopsis: "OpenSSL binding with concurrent I/O" |
||||||
|
url { |
||||||
|
src: "https://github.com/aantron/lwt_ssl/archive/1.1.2.tar.gz" |
||||||
|
checksum: "md5=d239353b1e7c6e3fd4192c71a3b25ce2" |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: ["David Sheets" "Anil Madhavapeddy" "Hugo Heuzard"] |
||||||
|
synopsis: "A library for manipulation of MAC address representations" |
||||||
|
license: "ISC" |
||||||
|
tags: ["org:mirage" "org:xapi-project"] |
||||||
|
homepage: "https://github.com/mirage/ocaml-ipaddr" |
||||||
|
doc: "https://mirage.github.io/ocaml-ipaddr/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-ipaddr/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.0"} |
||||||
|
"dune" {build} |
||||||
|
"sexplib0" |
||||||
|
"ounit" {with-test} |
||||||
|
"ppx_sexp_conv" {with-test} |
||||||
|
] |
||||||
|
conflicts: [ "ipaddr" {< "3.0.0"} ] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-ipaddr.git" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-ipaddr/releases/download/v3.1.0/ipaddr-v3.1.0.tbz" |
||||||
|
checksum: "md5=471a594563bb9c3dd91ae912b5ffd6ed" |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
name: "magic-mime" |
||||||
|
synopsis: "Map filenames to common MIME types" |
||||||
|
description: """ |
||||||
|
This library contains a database of MIME types that maps filename extensions |
||||||
|
into MIME types suitable for use in many Internet protocols such as HTTP or |
||||||
|
e-mail. It is generated from the `mime.types` file found in Unix systems, but |
||||||
|
has no dependency on a filesystem since it includes the contents of the |
||||||
|
database as an ML datastructure. |
||||||
|
|
||||||
|
For example, here's how to lookup MIME types in the [utop] REPL: |
||||||
|
|
||||||
|
#require "magic-mime";; |
||||||
|
Magic_mime.lookup "/foo/bar.txt";; |
||||||
|
- : bytes = "text/plain" |
||||||
|
Magic_mime.lookup "bar.css";; |
||||||
|
- : bytes = "text/css" |
||||||
|
""" |
||||||
|
maintainer: "Anil Madhavapeddy <anil@recoil.org>" |
||||||
|
authors: ["Anil Madhavapeddy" "Maxence Guesdon"] |
||||||
|
license: "ISC" |
||||||
|
homepage: "https://github.com/mirage/ocaml-magic-mime" |
||||||
|
doc: "https://mirage.github.io/ocaml-magic-mime/" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-magic-mime/issues" |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-magic-mime.git" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03.0"} |
||||||
|
"dune" {build} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-magic-mime/releases/download/v1.1.1/magic-mime-v1.1.1.tbz" |
||||||
|
checksum: "md5=8430a2686206517f2753e47c9c038b5c" |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
version: "0.8.0" |
||||||
|
|
||||||
|
maintainer: "Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
authors: "Anton Bachin <antonbachin@yahoo.com>" |
||||||
|
homepage: "https://github.com/aantron/markup.ml" |
||||||
|
doc: "http://aantron.github.io/markup.ml" |
||||||
|
bug-reports: "https://github.com/aantron/markup.ml/issues" |
||||||
|
dev-repo: "git+https://github.com/aantron/markup.ml.git" |
||||||
|
license: "BSD" |
||||||
|
|
||||||
|
depends: [ |
||||||
|
"ocaml" |
||||||
|
"dune" {build} |
||||||
|
"ounit" {with-test} |
||||||
|
"uchar" |
||||||
|
"uutf" {>= "1.0.0"} |
||||||
|
] |
||||||
|
# Markup.ml implicitly requires OCaml 4.02.3, as this is a contraint of Dune. |
||||||
|
# Without that, Markup.ml implicitly requires OCaml 4.01.0, as this is a |
||||||
|
# constraint of Uutf. Without *that*, Markup.ml works on OCaml 3.11 or searlier. |
||||||
|
|
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
|
||||||
|
synopsis: "Error-recovering functional HTML5 and XML parsers and writers" |
||||||
|
|
||||||
|
description: """ |
||||||
|
Markup.ml provides an HTML parser and an XML parser. The parsers are wrapped in |
||||||
|
a simple interface: they are functions that transform byte streams to parsing |
||||||
|
signal streams. Streams can be manipulated in various ways, such as processing |
||||||
|
by fold, filter, and map, assembly into DOM tree structures, or serialization |
||||||
|
back to HTML or XML. |
||||||
|
|
||||||
|
Both parsers are based on their respective standards. The HTML parser, in |
||||||
|
particular, is based on the state machines defined in HTML5. |
||||||
|
|
||||||
|
The parsers are error-recovering by default, and accept fragments. This makes it |
||||||
|
very easy to get a best-effort parse of some input. The parsers can, however, be |
||||||
|
easily configured to be strict, and to accept only full documents. |
||||||
|
|
||||||
|
Apart from this, the parsers are streaming (do not build up a document in |
||||||
|
memory), non-blocking (can be used with threading libraries), lazy (do not |
||||||
|
consume input unless the signal stream is being read), and process the input in |
||||||
|
a single pass. They automatically detect the character encoding of the input |
||||||
|
stream, and convert everything to UTF-8.""" |
||||||
|
|
||||||
|
url { |
||||||
|
src: "https://github.com/aantron/markup.ml/archive/0.8.0.tar.gz" |
||||||
|
checksum: "md5=be0e44a8e8a540f633996e0e26109b4d" |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "francois.pottier@inria.fr" |
||||||
|
authors: [ |
||||||
|
"François Pottier <francois.pottier@inria.fr>" |
||||||
|
"Yann Régis-Gianas <yrg@pps.univ-paris-diderot.fr>" |
||||||
|
] |
||||||
|
homepage: "http://gitlab.inria.fr/fpottier/menhir" |
||||||
|
dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" |
||||||
|
bug-reports: "menhir@inria.fr" |
||||||
|
build: [ |
||||||
|
[make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] |
||||||
|
] |
||||||
|
install: [ |
||||||
|
[make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] |
||||||
|
] |
||||||
|
remove: [ |
||||||
|
[make "-f" "Makefile" "uninstall" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
] |
||||||
|
synopsis: "An LR(1) parser generator" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://gitlab.inria.fr/fpottier/menhir/repository/20181113/archive.tar.gz" |
||||||
|
checksum: [ |
||||||
|
"md5=69ce441a06ea131cd43e7b44c4303f3c" |
||||||
|
"sha512=4ddefcd71d305bfb933a4056da57e36c13c99ec6dfcc4695814798fbbd78b4d65828381ebcb0e58c4c0394105ac763af3d475474e05e408f7080315bc3cf6176" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Frederic Bour <frederic.bour@lakaban.net>" |
||||||
|
authors: "Frederic Bour <frederic.bour@lakaban.net>" |
||||||
|
homepage: "https://github.com/let-def/merlin-extend" |
||||||
|
bug-reports: "https://github.com/let-def/merlin-extend" |
||||||
|
license: "MIT" |
||||||
|
dev-repo: "git+https://github.com/let-def/merlin-extend.git" |
||||||
|
build: [make] |
||||||
|
install: [make "install"] |
||||||
|
remove: ["ocamlfind" "remove" "merlin_extend"] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.3" & < "4.08.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"cppo" {build} |
||||||
|
] |
||||||
|
synopsis: "A protocol to provide custom frontend to Merlin" |
||||||
|
description: """ |
||||||
|
This protocol allows to replace the OCaml frontend of Merlin. |
||||||
|
It extends what used to be done with the `-pp' flag to handle a few more cases.""" |
||||||
|
flags: light-uninstall |
||||||
|
url { |
||||||
|
src: "https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz" |
||||||
|
checksum: "md5=9c6dfd4f53328f02f12fcc265f4e2dda" |
||||||
|
} |
@ -0,0 +1,74 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
name: "merlin" |
||||||
|
synopsis: "Installation with Opam" |
||||||
|
description: """ |
||||||
|
If you have a working [Opam](https://opam.ocaml.org/) installation, Merlin is only two commands away: |
||||||
|
|
||||||
|
```shell |
||||||
|
opam install merlin |
||||||
|
opam user-setup install |
||||||
|
``` |
||||||
|
|
||||||
|
[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. |
||||||
|
|
||||||
|
You can also [configure the editor](#editor-setup) yourself, if you prefer.""" |
||||||
|
maintainer: "defree@gmail.com" |
||||||
|
authors: "The Merlin team" |
||||||
|
homepage: "https://github.com/ocaml/merlin" |
||||||
|
bug-reports: "https://github.com/ocaml/merlin/issues" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.1" & < "4.08"} |
||||||
|
"dune" {build} |
||||||
|
"ocamlfind" {>= "1.5.2"} |
||||||
|
"yojson" |
||||||
|
"craml" {with-test} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
post-messages: |
||||||
|
""" |
||||||
|
merlin installed. |
||||||
|
|
||||||
|
Quick setup for VIM |
||||||
|
------------------- |
||||||
|
Append this to your .vimrc to add merlin to vim's runtime-path: |
||||||
|
let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') |
||||||
|
execute "set rtp+=" . g:opamshare . "/merlin/vim" |
||||||
|
|
||||||
|
Also run the following line in vim to index the documentation: |
||||||
|
:execute "helptags " . g:opamshare . "/merlin/vim/doc" |
||||||
|
|
||||||
|
Quick setup for EMACS |
||||||
|
------------------- |
||||||
|
Add opam emacs directory to your load-path by appending this to your .emacs: |
||||||
|
(let ((opam-share (ignore-errors (car (process-lines "opam" "config" "var" "share"))))) |
||||||
|
(when (and opam-share (file-directory-p opam-share)) |
||||||
|
;; Register Merlin |
||||||
|
(add-to-list 'load-path (expand-file-name "emacs/site-lisp" opam-share)) |
||||||
|
(autoload 'merlin-mode "merlin" nil t nil) |
||||||
|
;; Automatically start it in OCaml buffers |
||||||
|
(add-hook 'tuareg-mode-hook 'merlin-mode t) |
||||||
|
(add-hook 'caml-mode-hook 'merlin-mode t) |
||||||
|
;; Use opam switch to lookup ocamlmerlin binary |
||||||
|
(setq merlin-command 'opam))) |
||||||
|
|
||||||
|
Take a look at https://github.com/ocaml/merlin for more information |
||||||
|
|
||||||
|
Quick setup with opam-user-setup |
||||||
|
-------------------------------- |
||||||
|
|
||||||
|
Opam-user-setup support Merlin. |
||||||
|
|
||||||
|
$ opam user-setup install |
||||||
|
|
||||||
|
should take care of basic setup. |
||||||
|
See https://github.com/OCamlPro/opam-user-setup""" |
||||||
|
{success & !user-setup:installed} |
||||||
|
dev-repo: "git+https://github.com/ocaml/merlin.git" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml/merlin/releases/download/v3.2.2/merlin-v3.2.2.tbz" |
||||||
|
checksum: "md5=ede35b65f8ac9c440cfade5445662c54" |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "jeremie@dimino.org" |
||||||
|
authors: ["Jérémie Dimino <jeremie@dimino.org>" "Anton Bachin" ] |
||||||
|
homepage: "https://github.com/mirage/mmap" |
||||||
|
bug-reports: "https://github.com/mirage/mmap/issues" |
||||||
|
doc: "https://mirage.github.io/mmap/" |
||||||
|
dev-repo: "git+https://github.com/mirage/mmap.git" |
||||||
|
license: "LGPL 2.1 with linking exception" |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
"dune" {build & >= "1.6"} |
||||||
|
] |
||||||
|
synopsis: "File mapping functionality" |
||||||
|
description: """ |
||||||
|
This project provides a Mmap.map_file functions for mapping files in memory. |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/mmap/releases/download/v1.1.0/mmap-v1.1.0.tbz" |
||||||
|
checksum: "md5=8c5d5fbc537296dc525867535fb878ba" |
||||||
|
} |
@ -0,0 +1,129 @@ |
|||||||
|
From 7688bb4fea24463c92e9c4870acc08495a4c77cb Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Allsopp <david.allsopp@metastack.com>
|
||||||
|
Date: Wed, 10 Jan 2018 15:20:46 +0000
|
||||||
|
Subject: [PATCH] Provide findlib-install target
|
||||||
|
|
||||||
|
Allows installing the entire library using ocamlfind.
|
||||||
|
---
|
||||||
|
Makefile | 10 +++++++++-
|
||||||
|
src/META | 17 -----------------
|
||||||
|
src/META.in | 19 +++++++++++++++++++
|
||||||
|
src/Makefile | 17 +++++++++++++++--
|
||||||
|
4 files changed, 43 insertions(+), 20 deletions(-)
|
||||||
|
delete mode 100644 src/META
|
||||||
|
create mode 100644 src/META.in
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 6a5d08f..b40e588 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -14,8 +14,16 @@ install:
|
||||||
|
$(MAKE) -C src install
|
||||||
|
$(MAKE) -C toplevel install
|
||||||
|
|
||||||
|
+findlib-install:
|
||||||
|
+ $(MAKE) -C src findlib-install
|
||||||
|
+ $(MAKE) -C toplevel install
|
||||||
|
+
|
||||||
|
uninstall:
|
||||||
|
$(MAKE) -C src uninstall
|
||||||
|
$(MAKE) -C toplevel uninstall
|
||||||
|
|
||||||
|
-.PHONY: all test clean install uninstall
|
||||||
|
+findlib-uninstall:
|
||||||
|
+ $(MAKE) -C src findlib-uninstall
|
||||||
|
+ $(MAKE) -C toplevel uninstall
|
||||||
|
+
|
||||||
|
+.PHONY: all test clean install uninstall findlib-install findlib-uninstall
|
||||||
|
diff --git a/src/META b/src/META
|
||||||
|
deleted file mode 100644
|
||||||
|
index 66ac170..0000000
|
||||||
|
--- a/src/META
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,17 +0,0 @@
|
||||||
|
-# This META is the one provided by findlib when the "num" library was
|
||||||
|
-# part of the core OCaml distribution. For backward compatibility,
|
||||||
|
-# it installs into OCaml's standard library directory, not in a subdirectory
|
||||||
|
-
|
||||||
|
-requires = "num.core"
|
||||||
|
-requires(toploop) = "num.core,num-top"
|
||||||
|
-version = "1.0"
|
||||||
|
-description = "Arbitrary-precision rational arithmetic"
|
||||||
|
-package "core" (
|
||||||
|
- directory = "^"
|
||||||
|
- version = "1.0"
|
||||||
|
- browse_interfaces = ""
|
||||||
|
- archive(byte) = "nums.cma"
|
||||||
|
- archive(native) = "nums.cmxa"
|
||||||
|
- plugin(byte) = "nums.cma"
|
||||||
|
- plugin(native) = "nums.cmxs"
|
||||||
|
-)
|
||||||
|
diff --git a/src/META.in b/src/META.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..b5678b7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/META.in
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+# This META is the one provided by findlib when the "num" library was
|
||||||
|
+# part of the core OCaml distribution. For backward compatibility,
|
||||||
|
+# it is installed into OCaml's standard library directory. If the
|
||||||
|
+# directory line below is removed, then it's installed in a
|
||||||
|
+# subdirectory, as normal for a findlib package.
|
||||||
|
+
|
||||||
|
+requires = "num.core"
|
||||||
|
+requires(toploop) = "num.core,num-top"
|
||||||
|
+version = "1.0"
|
||||||
|
+description = "Arbitrary-precision rational arithmetic"
|
||||||
|
+package "core" (
|
||||||
|
+ directory = "^"
|
||||||
|
+ version = "1.0"
|
||||||
|
+ browse_interfaces = ""
|
||||||
|
+ archive(byte) = "nums.cma"
|
||||||
|
+ archive(native) = "nums.cmxa"
|
||||||
|
+ plugin(byte) = "nums.cma"
|
||||||
|
+ plugin(native) = "nums.cmxs"
|
||||||
|
+)
|
||||||
|
diff --git a/src/Makefile b/src/Makefile
|
||||||
|
index 97dc074..ff271fe 100644
|
||||||
|
--- a/src/Makefile
|
||||||
|
+++ b/src/Makefile
|
||||||
|
@@ -80,21 +80,34 @@ endif
|
||||||
|
ifeq "$(NATDYNLINK)" "true"
|
||||||
|
TOINSTALL+=nums.cmxs
|
||||||
|
endif
|
||||||
|
+ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
|
||||||
|
TOINSTALL_STUBS=dllnums.$(SO)
|
||||||
|
+else
|
||||||
|
+TOINSTALL_STUBS=
|
||||||
|
+endif
|
||||||
|
|
||||||
|
install:
|
||||||
|
+ cp META.in META
|
||||||
|
$(OCAMLFIND) install num META
|
||||||
|
+ rm -f META
|
||||||
|
$(INSTALL_DATA) $(TOINSTALL) $(STDLIBDIR)
|
||||||
|
ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
|
||||||
|
$(INSTALL_DLL) $(TOINSTALL_STUBS) $(STDLIBDIR)/stublibs
|
||||||
|
endif
|
||||||
|
|
||||||
|
-uninstall:
|
||||||
|
+findlib-install:
|
||||||
|
+ grep -Fv '^' META.in > META
|
||||||
|
+ $(OCAMLFIND) install num META $(TOINSTALL) $(TOINSTALL_STUBS)
|
||||||
|
+ rm -f META
|
||||||
|
+
|
||||||
|
+findlib-uninstall:
|
||||||
|
+ $(OCAMLFIND) remove num
|
||||||
|
+
|
||||||
|
+uninstall: findlib-uninstall
|
||||||
|
cd $(STDLIBDIR) && rm -f $(TOINSTALL)
|
||||||
|
ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
|
||||||
|
cd $(STDLIBDIR)/stublibs && rm -f $(TOINSTALL_STUBS)
|
||||||
|
endif
|
||||||
|
- $(OCAMLFIND) remove num
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *.$(SO)
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
@ -0,0 +1,59 @@ |
|||||||
|
From db8d748b2cad0adc2698e9fcf28727083a711bae Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Allsopp <david.allsopp@metastack.com>
|
||||||
|
Date: Wed, 24 Jan 2018 16:01:56 +0000
|
||||||
|
Subject: [PATCH] Warn about installations broken by previous faulty package
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile | 33 +++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 33 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index b40e588..d4dcd70 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -14,9 +14,42 @@ install:
|
||||||
|
$(MAKE) -C src install
|
||||||
|
$(MAKE) -C toplevel install
|
||||||
|
|
||||||
|
+OCAMLFIND_DIR:=$(dir $(shell command -v ocamlfind 2>/dev/null))
|
||||||
|
+OCAMLC_DIR:=$(dir $(shell command -v ocamlc 2>/dev/null))
|
||||||
|
+NUM_INSTALLED:=$(shell ocamlfind query num 2>/dev/null)
|
||||||
|
+
|
||||||
|
+ifeq ($(NUM_INSTALLED),)
|
||||||
|
+# The num findlib package is not already present - wohoo!
|
||||||
|
+OUR_FAULT=no
|
||||||
|
+else
|
||||||
|
+ifeq ($(OCAMLFIND_DIR),$(OCAMLC_DIR))
|
||||||
|
+# The num findlib package is present, but ocamlc and ocamlfind are in the
|
||||||
|
+# same place, which means that either we're looking at a system-installed
|
||||||
|
+# ocamlfind (which isn't supported), or the user has done something else
|
||||||
|
+# nefarious and doesn't deserve our sympathy (or, at least, our potentially
|
||||||
|
+# unhelpful advice)
|
||||||
|
+OUR_FAULT=no
|
||||||
|
+else
|
||||||
|
+# The num findlib package package is present, and ocamlc and ocamlfind reside
|
||||||
|
+# in different directories, which means that we're almost certainly looking at
|
||||||
|
+# a system switch which has been damaged by a previous num package installation
|
||||||
|
+# on an OS which didn't protect the system lib directory.
|
||||||
|
+OUR_FAULT=probably
|
||||||
|
+endif
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
findlib-install:
|
||||||
|
+ifeq ($(OUR_FAULT),no)
|
||||||
|
$(MAKE) -C src findlib-install
|
||||||
|
$(MAKE) -C toplevel install
|
||||||
|
+else
|
||||||
|
+ @echo "\033[0;31m[ERROR]\033[m It appears that the num library was previously installed to your system"
|
||||||
|
+ @echo " compiler's lib directory, probably by a faulty opam package."
|
||||||
|
+ @echo " You will need to remove arith_flags.*, arith_status.*, big_int.*,"
|
||||||
|
+ @echo " int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and"
|
||||||
|
+ @echo " stublibs/dllnums.* from $(shell ocamlc -where)."
|
||||||
|
+ @false
|
||||||
|
+endif
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
$(MAKE) -C src uninstall
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
@ -0,0 +1,43 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
name: "num" |
||||||
|
version: "1.1" |
||||||
|
maintainer: "Xavier Leroy <xavier.leroy@inria.fr>" |
||||||
|
authors: [ |
||||||
|
"Valérie Ménissier-Morain" |
||||||
|
"Pierre Weis" |
||||||
|
"Xavier Leroy" |
||||||
|
] |
||||||
|
license: "LGPL 2.1 with OCaml linking exception" |
||||||
|
|
||||||
|
homepage: "https://github.com/ocaml/num/" |
||||||
|
bug-reports: "https://github.com/ocaml/num/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml/num.git" |
||||||
|
build: [ |
||||||
|
[make] |
||||||
|
] |
||||||
|
install: [ |
||||||
|
make |
||||||
|
"install" {!ocaml:preinstalled} |
||||||
|
"findlib-install" {ocaml:preinstalled} |
||||||
|
] |
||||||
|
remove: [ |
||||||
|
make |
||||||
|
"uninstall" {!ocaml:preinstalled} |
||||||
|
"findlib-uninstall" {ocaml:preinstalled} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.06.0"} |
||||||
|
"ocamlfind" {build & >= "1.7.3"} |
||||||
|
] |
||||||
|
conflicts: [ "base-num" ] |
||||||
|
patches: [ "findlib-install.patch" "installation-warning.patch" ] |
||||||
|
synopsis: |
||||||
|
"The legacy Num library for arbitrary-precision integer and rational arithmetic" |
||||||
|
extra-files: [ |
||||||
|
["installation-warning.patch" "md5=93c92bf6da6bae09d068da42b1bbaaac"] |
||||||
|
["findlib-install.patch" "md5=3163a4c3f8dd084653eeb64d95311a2a"] |
||||||
|
] |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml/num/archive/v1.1.tar.gz" |
||||||
|
checksum: "md5=710cbe18b144955687a03ebab439ff2b" |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] |
||||||
|
homepage: "https://github.com/janestreet/ocaml-compiler-libs" |
||||||
|
bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues" |
||||||
|
dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git" |
||||||
|
license: "Apache-2.0" |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.1"} |
||||||
|
"dune" {build & >= "1.0"} |
||||||
|
] |
||||||
|
synopsis: "OCaml compiler libraries repackaged" |
||||||
|
description: """ |
||||||
|
This packages exposes the OCaml compiler libraries repackages under |
||||||
|
the toplevel names Ocaml_common, Ocaml_bytecomp, ...""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/janestreet/ocaml-compiler-libs/archive/v0.12.0.tar.gz" |
||||||
|
checksum: "md5=3351925ed99be59829641d2044fc80c0" |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "frederic.bour@lakaban.net" |
||||||
|
authors: [ |
||||||
|
"Frédéric Bour <frederic.bour@lakaban.net>" |
||||||
|
"Jérémie Dimino <jeremie@dimino.org>" |
||||||
|
] |
||||||
|
license: "LGPL-2.1 with OCaml linking exception" |
||||||
|
homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" |
||||||
|
bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" |
||||||
|
doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" |
||||||
|
tags: [ "syntax" "org:ocamllabs" ] |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"result" |
||||||
|
"ppx_derivers" |
||||||
|
"dune" {build & >= "1.6.0"} |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
] |
||||||
|
synopsis: "Convert OCaml parsetrees between different versions" |
||||||
|
description: """ |
||||||
|
Convert OCaml parsetrees between different versions |
||||||
|
|
||||||
|
This library converts parsetrees, outcometree and ast mappers between |
||||||
|
different OCaml versions. High-level functions help making PPX |
||||||
|
rewriters independent of a compiler version. |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.3.1/ocaml-migrate-parsetree-v1.3.1.tbz" |
||||||
|
checksum: [ |
||||||
|
"sha256=83e4955a6fd6b494646ab92c476840ea96b5fb434435c287e7ad3e6efadc8338" |
||||||
|
"sha512=7da86f9596dd1439990a6f087fdeba64a0f3ce2634473be4cca92ecc02b6fcd97917956890fbe35b3cba5a126d007afec6ede1e4afd0a5218c89fd6079ad4182" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Gabriel Scherer <gabriel.scherer@gmail.com>" |
||||||
|
authors: ["Nicolas Pouillard" "Berke Durak"] |
||||||
|
homepage: "https://github.com/ocaml/ocamlbuild/" |
||||||
|
bug-reports: "https://github.com/ocaml/ocamlbuild/issues" |
||||||
|
license: "LGPL-2 with OCaml linking exception" |
||||||
|
doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" |
||||||
|
dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" |
||||||
|
build: [ |
||||||
|
[ |
||||||
|
make |
||||||
|
"-f" |
||||||
|
"configure.make" |
||||||
|
"all" |
||||||
|
"OCAMLBUILD_PREFIX=%{prefix}%" |
||||||
|
"OCAMLBUILD_BINDIR=%{bin}%" |
||||||
|
"OCAMLBUILD_LIBDIR=%{lib}%" |
||||||
|
"OCAMLBUILD_MANDIR=%{man}%" |
||||||
|
"OCAML_NATIVE=%{ocaml:native}%" |
||||||
|
"OCAML_NATIVE_TOOLS=%{ocaml:native}%" |
||||||
|
] |
||||||
|
[make "check-if-preinstalled" "all" "opam-install"] |
||||||
|
] |
||||||
|
conflicts: [ |
||||||
|
"base-ocamlbuild" |
||||||
|
"ocamlfind" {< "1.6.2"} |
||||||
|
] |
||||||
|
synopsis: |
||||||
|
"OCamlbuild is a build system with builtin rules to easily build most OCaml projects." |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.03"} |
||||||
|
] |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" |
||||||
|
checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
commit 40142bc941e6e308686e86be6fc2da92f346a22f
|
||||||
|
Author: Kate <kit.ty.kate@disroot.org>
|
||||||
|
Date: Tue Mar 19 16:29:06 2019 +0000
|
||||||
|
|
||||||
|
Remove awk from the set of checked unix tools as it's not used anywhere
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index d9b587c..20e8dca 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -184,7 +184,7 @@ echo "Configuring core..."
|
||||||
|
|
||||||
|
# Some standard Unix tools must be available:
|
||||||
|
|
||||||
|
-for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do
|
||||||
|
+for tool in sed ocaml ocamlc uname rm make cat m4 dirname basename; do
|
||||||
|
if in_path $tool; then true; else
|
||||||
|
echo "configure: $tool not in PATH; this is required" 1>&2
|
||||||
|
exit 1
|
@ -0,0 +1,4 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
BINDIR=$(dirname "$(command -v ocamlc)") |
||||||
|
"$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" |
@ -0,0 +1,6 @@ |
|||||||
|
bin: [ |
||||||
|
"src/findlib/ocamlfind" {"ocamlfind"} |
||||||
|
"?src/findlib/ocamlfind_opt" {"ocamlfind"} |
||||||
|
"?tools/safe_camlp4" |
||||||
|
] |
||||||
|
toplevel: ["src/findlib/topfind"] |
@ -0,0 +1,68 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Thomas Gazagnaire <thomas@gazagnaire.org>" |
||||||
|
homepage: "http://projects.camlcity.org/projects/findlib.html" |
||||||
|
bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" |
||||||
|
dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" |
||||||
|
patches: ["no-awk-check.patch"] |
||||||
|
build: [ |
||||||
|
[ |
||||||
|
"./configure" |
||||||
|
"-bindir" |
||||||
|
bin |
||||||
|
"-sitelib" |
||||||
|
lib |
||||||
|
"-mandir" |
||||||
|
man |
||||||
|
"-config" |
||||||
|
"%{lib}%/findlib.conf" |
||||||
|
"-no-custom" |
||||||
|
"-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} |
||||||
|
"-no-topfind" {ocaml:preinstalled} |
||||||
|
] |
||||||
|
[make "all"] |
||||||
|
[make "opt"] {ocaml:native} |
||||||
|
] |
||||||
|
install: [ |
||||||
|
[make "install"] |
||||||
|
["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} |
||||||
|
] |
||||||
|
remove: [ |
||||||
|
["ocamlfind" "remove" "bytes"] |
||||||
|
[ |
||||||
|
"./configure" |
||||||
|
"-bindir" |
||||||
|
bin |
||||||
|
"-sitelib" |
||||||
|
lib |
||||||
|
"-mandir" |
||||||
|
man |
||||||
|
"-config" |
||||||
|
"%{lib}%/findlib.conf" |
||||||
|
"-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} |
||||||
|
"-no-topfind" {ocaml:preinstalled} |
||||||
|
] |
||||||
|
[make "uninstall"] |
||||||
|
["rm" "-f" "%{bin}%/ocaml"] {ocaml:preinstalled} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.00.0"} |
||||||
|
"conf-m4" {build} |
||||||
|
] |
||||||
|
synopsis: "A library manager for OCaml" |
||||||
|
description: """ |
||||||
|
Findlib is a library manager for OCaml. It provides a convention how |
||||||
|
to store libraries, and a file format ("META") to describe the |
||||||
|
properties of libraries. There is also a tool (ocamlfind) for |
||||||
|
interpreting the META files, so that it is very easy to use libraries |
||||||
|
in programs and scripts.""" |
||||||
|
authors: "Gerd Stolpmann <gerd@gerd-stolpmann.de>" |
||||||
|
extra-files: [ |
||||||
|
["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] |
||||||
|
["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] |
||||||
|
["no-awk-check.patch" "md5=0378123bf1a45fccdea434c053ddb687"] |
||||||
|
] |
||||||
|
url { |
||||||
|
src: "http://download.camlcity.org/download/findlib-1.8.0.tar.gz" |
||||||
|
checksum: "md5=a710c559667672077a93d34eb6a42e5b" |
||||||
|
mirrors: "http://download2.camlcity.org/download/findlib-1.8.0.tar.gz" |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
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" |
||||||
|
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/parsexp/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"} |
||||||
|
] |
||||||
|
synopsis: "S-expression parsing library" |
||||||
|
description: " |
||||||
|
This library provides generic parsers for parsing S-expressions from |
||||||
|
strings or other medium. |
||||||
|
|
||||||
|
The library is focused on performances but still provide full generic |
||||||
|
parsers that can be used with strings, bigstrings, lexing buffers, |
||||||
|
character streams or any other sources effortlessly. |
||||||
|
|
||||||
|
It provides three different class of parsers: |
||||||
|
- the normal parsers, producing [Sexp.t] or [Sexp.t list] values |
||||||
|
- the parsers with positions, building compact position sequences so |
||||||
|
that one can recover original positions in order to report properly |
||||||
|
located errors at little cost |
||||||
|
- the Concrete Syntax Tree parsers, produce values of type |
||||||
|
[Parsexp.Cst.t] which record the concrete layout of the s-expression |
||||||
|
syntax, including comments |
||||||
|
|
||||||
|
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. |
||||||
|
" |
||||||
|
url { |
||||||
|
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/parsexp-v0.12.0.tar.gz" |
||||||
|
checksum: "md5=741b2c6f59b9618e3affabaa34d468a2" |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "jeremie@dimino.org" |
||||||
|
authors: ["Jérémie Dimino"] |
||||||
|
license: "BSD3" |
||||||
|
homepage: "https://github.com/ocaml-ppx/ppx_derivers" |
||||||
|
bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" |
||||||
|
dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" |
||||||
|
"dune" {build} |
||||||
|
] |
||||||
|
synopsis: "Shared [@@deriving] plugin registry" |
||||||
|
description: """ |
||||||
|
Ppx_derivers is a tiny package whose sole purpose is to allow |
||||||
|
ppx_deriving and ppx_type_conv to inter-operate gracefully when linked |
||||||
|
as part of the same ocaml-migrate-parsetree driver.""" |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz" |
||||||
|
checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "whitequark <whitequark@whitequark.org>" |
||||||
|
authors: [ "whitequark <whitequark@whitequark.org>" ] |
||||||
|
license: "MIT" |
||||||
|
homepage: "https://github.com/whitequark/ppx_deriving" |
||||||
|
doc: "https://whitequark.github.io/ppx_deriving" |
||||||
|
bug-reports: "https://github.com/whitequark/ppx_deriving/issues" |
||||||
|
dev-repo: "git+https://github.com/whitequark/ppx_deriving.git" |
||||||
|
tags: [ "syntax" ] |
||||||
|
substs: [ "pkg/META" ] |
||||||
|
build: [ |
||||||
|
[ |
||||||
|
"ocaml" |
||||||
|
"pkg/build.ml" |
||||||
|
"native=%{ocaml:native-dynlink}%" |
||||||
|
"native-dynlink=%{ocaml:native-dynlink}%" |
||||||
|
] |
||||||
|
[ |
||||||
|
"ocamlbuild" |
||||||
|
"-classic-display" |
||||||
|
"-use-ocamlfind" |
||||||
|
"src_test/test_ppx_deriving.byte" |
||||||
|
"--" |
||||||
|
] {with-test} |
||||||
|
[make "doc"] {with-doc} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {> "4.03.0"} |
||||||
|
"ocamlbuild" {build} |
||||||
|
"ocamlfind" {build & >= "1.6.0"} |
||||||
|
"cppo" {build} |
||||||
|
"cppo_ocamlbuild" {build} |
||||||
|
"ocaml-migrate-parsetree" |
||||||
|
"ppx_derivers" |
||||||
|
"ppx_tools" {>= "4.02.3"} |
||||||
|
"result" |
||||||
|
"ounit" {with-test} |
||||||
|
] |
||||||
|
available: opam-version >= "1.2" |
||||||
|
synopsis: "Type-driven code generation for OCaml >=4.02" |
||||||
|
description: """ |
||||||
|
ppx_deriving provides common infrastructure for generating |
||||||
|
code based on type definitions, and a set of useful plugins |
||||||
|
for common tasks.""" |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml-ppx/ppx_deriving/archive/v4.2.1.tar.gz" |
||||||
|
checksum: "md5=2195fccf2a527c3ff9ec5b4e36e2f0a8" |
||||||
|
} |
@ -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" |
||||||
|
} |
@ -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" |
||||||
|
} |
@ -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" |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "alain.frisch@lexifi.com" |
||||||
|
authors: [ "Alain Frisch <alain.frisch@lexifi.com>" ] |
||||||
|
license: "MIT" |
||||||
|
homepage: "https://github.com/ocaml-ppx/ppx_tools" |
||||||
|
bug-reports: "https://github.com/ocaml-ppx/ppx_tools/issues" |
||||||
|
dev-repo: "git://github.com/ocaml-ppx/ppx_tools.git" |
||||||
|
tags: [ "syntax" ] |
||||||
|
build: [[make "all"]] |
||||||
|
install: [[make "install"]] |
||||||
|
remove: [["ocamlfind" "remove" "ppx_tools"]] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.06.0" & < "4.08"} |
||||||
|
"ocamlfind" {>= "1.5.0"} |
||||||
|
] |
||||||
|
synopsis: "Tools for authors of ppx rewriters and other syntactic tools" |
||||||
|
flags: light-uninstall |
||||||
|
url { |
||||||
|
src: "https://github.com/ocaml-ppx/ppx_tools/archive/5.1+4.06.0.tar.gz" |
||||||
|
checksum: "md5=6ba2e9690b1f579ba562b86022d1c308" |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "frederic.bour@lakaban.net" |
||||||
|
authors: [ |
||||||
|
"Frédéric Bour <frederic.bour@lakaban.net>" |
||||||
|
"Alain Frisch <alain.frisch@lexifi.com>" |
||||||
|
] |
||||||
|
license: "MIT" |
||||||
|
homepage: "https://github.com/ocaml-ppx/ppx_tools_versioned" |
||||||
|
bug-reports: "https://github.com/ocaml-ppx/ppx_tools_versioned/issues" |
||||||
|
dev-repo: "git://github.com/ocaml-ppx/ppx_tools_versioned.git" |
||||||
|
tags: [ "syntax" ] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.0"} |
||||||
|
"dune" {build & >= "1.0"} |
||||||
|
"ocaml-migrate-parsetree" {>= "1.0.10"} |
||||||
|
] |
||||||
|
synopsis: "A variant of ppx_tools based on ocaml-migrate-parsetree" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.2.tar.gz" |
||||||
|
checksum: [ |
||||||
|
"md5=f78a3c2b4cc3b92702e1f7096a6125fa" |
||||||
|
"sha512=68c168ebc01af46fe8766ad7e36cc778caabb97d8eb303db284d106450cb79974c2a640ce459e197630b9e84b02caa24b59c97c9a8d39ddadc7efc7284e42a70" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] |
||||||
|
homepage: "https://github.com/ocaml-ppx/ppxlib" |
||||||
|
bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git" |
||||||
|
doc: "https://ocaml-ppx.github.io/ppxlib/" |
||||||
|
license: "MIT" |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
run-test: [ |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] { ocaml >= "4.06" } |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.1"} |
||||||
|
"base" {>= "v0.11.0" & < "v0.13"} |
||||||
|
"dune" {build} |
||||||
|
"ocaml-compiler-libs" {>= "v0.11.0"} |
||||||
|
"ocaml-migrate-parsetree" {>= "1.0.9"} |
||||||
|
"ppx_derivers" {>= "1.0"} |
||||||
|
"stdio" {>= "v0.11.0" & < "v0.13"} |
||||||
|
"ocamlfind" {with-test} |
||||||
|
] |
||||||
|
synopsis: "Base library and tools for ppx rewriters" |
||||||
|
description: """ |
||||||
|
A comprehensive toolbox for ppx development. It features: |
||||||
|
- a OCaml AST / parser / pretty-printer snapshot,to create a full |
||||||
|
frontend independent of the version of OCaml; |
||||||
|
- a library for library for ppx rewriters in general, and type-driven |
||||||
|
code generators in particular; |
||||||
|
- a feature-full driver for OCaml AST transformers; |
||||||
|
- a quotation mechanism allowing to write values representing the |
||||||
|
OCaml AST in the OCaml syntax; |
||||||
|
- a generator of open recursion classes from type definitions. |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml-ppx/ppxlib/releases/download/0.6.0/ppxlib-0.6.0.tbz" |
||||||
|
checksum: "md5=e2d129139891c135acc6d52a3fa9f731" |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
|
||||||
|
maintainer: "rudi.grinberg@gmail.com" |
||||||
|
authors: [ |
||||||
|
"Jerome Vouillon" |
||||||
|
"Thomas Gazagnaire" |
||||||
|
"Anil Madhavapeddy" |
||||||
|
"Rudi Grinberg" |
||||||
|
"Gabriel Radanne" |
||||||
|
] |
||||||
|
license: "LGPL-2.0 with OCaml linking exception" |
||||||
|
homepage: "https://github.com/ocaml/ocaml-re" |
||||||
|
bug-reports: "https://github.com/ocaml/ocaml-re/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml/ocaml-re.git" |
||||||
|
|
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
|
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02"} |
||||||
|
"dune" {build} |
||||||
|
"ounit" {with-test} |
||||||
|
"seq" |
||||||
|
] |
||||||
|
|
||||||
|
synopsis: "RE is a regular expression library for OCaml" |
||||||
|
description: """ |
||||||
|
Pure OCaml regular expressions with: |
||||||
|
* Perl-style regular expressions (module Re.Perl) |
||||||
|
* Posix extended regular expressions (module Re.Posix) |
||||||
|
* Emacs-style regular expressions (module Re.Emacs) |
||||||
|
* Shell-style file globbing (module Re.Glob) |
||||||
|
* Compatibility layer for OCaml's built-in Str module (module Re.Str) |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" |
||||||
|
checksum: "md5=bddaed4f386a22cace7850c9c7dac296" |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"] |
||||||
|
homepage: "https://github.com/janestreet/result" |
||||||
|
dev-repo: "git+https://github.com/janestreet/result.git" |
||||||
|
bug-reports: "https://github.com/janestreet/result/issues" |
||||||
|
license: "BSD3" |
||||||
|
build: [["dune" "build" "-p" name "-j" jobs]] |
||||||
|
depends: [ |
||||||
|
"ocaml" |
||||||
|
"dune" {build & >= "1.0"} |
||||||
|
] |
||||||
|
synopsis: "Compatibility Result module" |
||||||
|
description: """ |
||||||
|
Projects that want to use the new result type defined in OCaml >= 4.03 |
||||||
|
while staying compatible with older version of OCaml should use the |
||||||
|
Result module defined in this library.""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/janestreet/result/archive/1.4.tar.gz" |
||||||
|
checksum: "md5=d3162dbc501a2af65c8c71e0866541da" |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "simon.cruanes.2007@m4x.org" |
||||||
|
authors: "Simon Cruanes" |
||||||
|
homepage: "https://github.com/c-cube/seq/" |
||||||
|
bug-reports: "https://github.com/c-cube/seq/issues" |
||||||
|
license: "GPL" |
||||||
|
tags: ["iterator" "seq" "pure" "list" "compatibility" "cascade"] |
||||||
|
dev-repo: "git+https://github.com/c-cube/seq.git" |
||||||
|
build: [make "build"] |
||||||
|
install: [make "install"] |
||||||
|
remove: [ "ocamlfind" "remove" "seq" ] |
||||||
|
depends: [ |
||||||
|
"ocaml" {< "4.07.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
] |
||||||
|
synopsis: |
||||||
|
"Compatibility package for OCaml's standard iterator type starting from 4.07." |
||||||
|
flags: light-uninstall |
||||||
|
url { |
||||||
|
src: "https://github.com/c-cube/seq/archive/0.1.tar.gz" |
||||||
|
checksum: "md5=0e87f9709541ed46ecb6f414bc31458c" |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "opensource@janestreet.com" |
||||||
|
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" |
||||||
|
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/sexplib/index.html" |
||||||
|
license: "MIT" |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"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: " |
||||||
|
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/sexplib-v0.12.0.tar.gz" |
||||||
|
checksum: "md5=a7f9f8a414aed6cc56901199cda020f6" |
||||||
|
} |
@ -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/sexplib0" |
||||||
|
bug-reports: "https://github.com/janestreet/sexplib0/issues" |
||||||
|
dev-repo: "git+https://github.com/janestreet/sexplib0.git" |
||||||
|
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/sexplib0/index.html" |
||||||
|
license: "MIT" |
||||||
|
build: [ |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.2"} |
||||||
|
"dune" {build & >= "1.5.1"} |
||||||
|
] |
||||||
|
synopsis: "Library containing the definition of S-expressions and some base converters" |
||||||
|
description: " |
||||||
|
Part of Jane Street's Core library |
||||||
|
The Core suite of libraries is an industrial strength alternative to |
||||||
|
OCaml's standard library that was developed by Jane Street, the |
||||||
|
largest industrial user of OCaml. |
||||||
|
" |
||||||
|
url { |
||||||
|
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/sexplib0-v0.12.0.tar.gz" |
||||||
|
checksum: "md5=2486a25d3a94da9a94acc018b5f09061" |
||||||
|
} |
@ -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/stdio" |
||||||
|
bug-reports: "https://github.com/janestreet/stdio/issues" |
||||||
|
dev-repo: "git+https://github.com/janestreet/stdio.git" |
||||||
|
doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/stdio/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: "Standard IO library for OCaml" |
||||||
|
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. |
||||||
|
" |
||||||
|
url { |
||||||
|
src: "https://ocaml.janestreet.com/ocaml-core/v0.12/files/stdio-v0.12.0.tar.gz" |
||||||
|
checksum: "md5=b261ff2d5667fde960c95e50cff668da" |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "The stdlib-shims programmers" |
||||||
|
authors: "The stdlib-shims programmers" |
||||||
|
homepage: "https://github.com/ocaml/stdlib-shims" |
||||||
|
doc: "https://ocaml.github.io/stdlib-shims/" |
||||||
|
dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" |
||||||
|
bug-reports: "https://github.com/ocaml/stdlib-shims/issues" |
||||||
|
tags: ["stdlib" "compatibility" "org:ocaml"] |
||||||
|
license: ["typeof OCaml system"] |
||||||
|
depends: [ |
||||||
|
"dune" {build} |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
] |
||||||
|
build: [ "dune" "build" "-p" name "-j" jobs ] |
||||||
|
synopsis: "Backport some of the new stdlib features to older compiler" |
||||||
|
description: """ |
||||||
|
Backport some of the new stdlib features to older compiler, |
||||||
|
such as the Stdlib module. |
||||||
|
|
||||||
|
This allows projects that require compatibility with older compiler to |
||||||
|
use these new features in their code. |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz" |
||||||
|
checksum: "md5=12b5704eed70c6bff5ac39a16db1425d" |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "rudi.grinberg@gmail.com" |
||||||
|
authors: "Rudi Grinberg" |
||||||
|
homepage: "https://github.com/rgrinberg/stringext" |
||||||
|
bug-reports: "https://github.com/rgrinberg/stringext/issues" |
||||||
|
license: "MIT" |
||||||
|
dev-repo: "git+https://github.com/rgrinberg/stringext.git" |
||||||
|
build: [ |
||||||
|
["jbuilder" "subst" "-p" name] {pinned} |
||||||
|
["jbuilder" "build" "-p" name "-j" jobs] |
||||||
|
["jbuilder" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
"jbuilder" {build & >= "1.0+beta10"} |
||||||
|
"ounit" {with-test} |
||||||
|
"qtest" {with-test & >= "2.2"} |
||||||
|
"base-bytes" |
||||||
|
] |
||||||
|
synopsis: "Extra string functions for OCaml" |
||||||
|
description: """ |
||||||
|
Extra string functions for OCaml. Mainly splitting. All functions are in the |
||||||
|
`Stringext` module.""" |
||||||
|
url { |
||||||
|
src: "https://github.com/rgrinberg/stringext/archive/1.5.0.zip" |
||||||
|
checksum: "md5=867263ea97532f150516677fa994cdf2" |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["Daniel Bünzli <daniel.buenzl i@erratique.ch>"] |
||||||
|
homepage: "http://erratique.ch/software/topkg" |
||||||
|
doc: "http://erratique.ch/software/topkg/doc" |
||||||
|
license: "ISC" |
||||||
|
dev-repo: "git+http://erratique.ch/repos/topkg.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/topkg/issues" |
||||||
|
tags: ["packaging" "ocamlbuild" "org:erratique"] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.01.0"} |
||||||
|
"ocamlfind" {build & >= "1.6.1"} |
||||||
|
"ocamlbuild" |
||||||
|
"result" ] |
||||||
|
build: [[ |
||||||
|
"ocaml" "pkg/pkg.ml" "build" |
||||||
|
"--pkg-name" name |
||||||
|
"--dev-pkg" "%{pinned}%" ]] |
||||||
|
synopsis: """The transitory OCaml software packager""" |
||||||
|
description: """\ |
||||||
|
|
||||||
|
Topkg is a packager for distributing OCaml software. It provides an |
||||||
|
API to describe the files a package installs in a given build |
||||||
|
configuration and to specify information about the package's |
||||||
|
distribution, creation and publication procedures. |
||||||
|
|
||||||
|
The optional topkg-care package provides the `topkg` command line tool |
||||||
|
which helps with various aspects of a package's life cycle: creating |
||||||
|
and linting a distribution, releasing it on the WWW, publish its |
||||||
|
documentation, add it to the OCaml opam repository, etc. |
||||||
|
|
||||||
|
Topkg is distributed under the ISC license and has **no** |
||||||
|
dependencies. This is what your packages will need as a *build* |
||||||
|
dependency. |
||||||
|
|
||||||
|
Topkg-care is distributed under the ISC license it depends on |
||||||
|
[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], |
||||||
|
[webbrowser][webbrowser] and `opam-format`. |
||||||
|
|
||||||
|
[fmt]: http://erratique.ch/software/fmt |
||||||
|
[logs]: http://erratique.ch/software/logs |
||||||
|
[bos]: http://erratique.ch/software/bos |
||||||
|
[cmdliner]: http://erratique.ch/software/cmdliner |
||||||
|
[webbrowser]: http://erratique.ch/software/webbrowser |
||||||
|
""" |
||||||
|
url { |
||||||
|
src: "http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz" |
||||||
|
checksum: "md5=e3d76bda06bf68cb5853caf6627da603" |
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["Daniel Bünzli <daniel.buenzl i@erratique.ch>"] |
||||||
|
homepage: "http://ocaml.org" |
||||||
|
doc: "https://ocaml.github.io/uchar/" |
||||||
|
dev-repo: "git+https://github.com/ocaml/uchar.git" |
||||||
|
bug-reports: "https://github.com/ocaml/uchar/issues" |
||||||
|
tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] |
||||||
|
license: "typeof OCaml system" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "3.12.0"} |
||||||
|
"ocamlbuild" {build} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["ocaml" "pkg/git.ml"] |
||||||
|
[ |
||||||
|
"ocaml" |
||||||
|
"pkg/build.ml" |
||||||
|
"native=%{ocaml:native}%" |
||||||
|
"native-dynlink=%{ocaml:native-dynlink}%" |
||||||
|
] |
||||||
|
] |
||||||
|
synopsis: "Compatibility library for OCaml's Uchar module" |
||||||
|
description: """ |
||||||
|
The `uchar` package provides a compatibility library for the |
||||||
|
[`Uchar`][1] module introduced in OCaml 4.03. |
||||||
|
|
||||||
|
The `uchar` package is distributed under the license of the OCaml |
||||||
|
compiler. See [LICENSE](LICENSE) for details. |
||||||
|
|
||||||
|
[1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" |
||||||
|
checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "anil@recoil.org" |
||||||
|
authors: ["Anil Madhavapeddy" "David Sheets" "Rudi Grinberg"] |
||||||
|
license: "ISC" |
||||||
|
tags: ["url" "uri" "org:mirage" "org:xapi-project"] |
||||||
|
homepage: "https://github.com/mirage/ocaml-uri" |
||||||
|
bug-reports: "https://github.com/mirage/ocaml-uri/issues" |
||||||
|
dev-repo: "git+https://github.com/mirage/ocaml-uri.git" |
||||||
|
doc: "https://mirage.github.io/ocaml-uri/" |
||||||
|
synopsis: "An RFC3986 URI/URL parsing library" |
||||||
|
description: """ |
||||||
|
This is an OCaml implementation of the [RFC3986](http://tools.ietf.org/html/rfc3986) specification |
||||||
|
for parsing URI or URLs. |
||||||
|
""" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.04.0"} |
||||||
|
"dune" {build & >= "1.2.0"} |
||||||
|
"ounit" {with-test & >= "1.0.2"} |
||||||
|
"ppx_sexp_conv" {build & >= "v0.9.0" & < "v0.13"} |
||||||
|
"re" {>= "1.7.2"} |
||||||
|
"sexplib0" {< "v0.13"} |
||||||
|
"stringext" {>= "1.4.0"} |
||||||
|
] |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
["dune" "runtest" "-p" name "-j" jobs] {with-test} |
||||||
|
] |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/mirage/ocaml-uri/releases/download/v2.2.0/uri-v2.2.0.tbz" |
||||||
|
checksum: "md5=e52e17fc6cc3491ab44994e6ebc5664c" |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "Daniel Bünzli <daniel.buenzl i@erratique.ch>" |
||||||
|
authors: ["Daniel Bünzli <daniel.buenzl i@erratique.ch>"] |
||||||
|
homepage: "http://erratique.ch/software/uutf" |
||||||
|
doc: "http://erratique.ch/software/uutf/doc/Uutf" |
||||||
|
dev-repo: "git+http://erratique.ch/repos/uutf.git" |
||||||
|
bug-reports: "https://github.com/dbuenzli/uutf/issues" |
||||||
|
tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] |
||||||
|
license: "ISC" |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.01.0"} |
||||||
|
"ocamlfind" {build} |
||||||
|
"ocamlbuild" {build} |
||||||
|
"topkg" {build} |
||||||
|
"uchar" |
||||||
|
] |
||||||
|
depopts: ["cmdliner"] |
||||||
|
conflicts: ["cmdliner" { < "0.9.6"} ] |
||||||
|
build: [[ |
||||||
|
"ocaml" "pkg/pkg.ml" "build" |
||||||
|
"--pinned" "%{pinned}%" |
||||||
|
"--with-cmdliner" "%{cmdliner:installed}%" ]] |
||||||
|
synopsis: """Non-blocking streaming Unicode codec for OCaml""" |
||||||
|
description: """\ |
||||||
|
|
||||||
|
Uutf is a non-blocking streaming codec to decode and encode the UTF-8, |
||||||
|
UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently |
||||||
|
work character by character without blocking on IO. Decoders perform |
||||||
|
character position tracking and support newline normalization. |
||||||
|
|
||||||
|
Functions are also provided to fold over the characters of UTF encoded |
||||||
|
OCaml string values and to directly encode characters in OCaml |
||||||
|
Buffer.t values. |
||||||
|
|
||||||
|
Uutf has no dependency and is distributed under the ISC license. |
||||||
|
""" |
||||||
|
url { |
||||||
|
archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" |
||||||
|
checksum: "a7c542405a39630c689a82bd7ef2292c" |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
opam-version: "2.0" |
||||||
|
maintainer: "martin@mjambon.com" |
||||||
|
authors: ["Martin Jambon"] |
||||||
|
homepage: "https://github.com/ocaml-community/yojson" |
||||||
|
bug-reports: "https://github.com/ocaml-community/yojson/issues" |
||||||
|
dev-repo: "git+https://github.com/ocaml-community/yojson.git" |
||||||
|
doc: "https://ocaml-community.github.io/yojson/" |
||||||
|
build: [ |
||||||
|
["dune" "subst"] {pinned} |
||||||
|
["dune" "build" "-p" name "-j" jobs] |
||||||
|
] |
||||||
|
run-test: [["dune" "runtest" "-p" name "-j" jobs]] |
||||||
|
depends: [ |
||||||
|
"ocaml" {>= "4.02.3"} |
||||||
|
"dune" {build} |
||||||
|
"cppo" {build} |
||||||
|
"easy-format" |
||||||
|
"biniou" {>= "1.2.0"} |
||||||
|
"alcotest" {with-test & >= "0.8.5"} |
||||||
|
] |
||||||
|
synopsis: |
||||||
|
"Yojson is an optimized parsing and printing library for the JSON format" |
||||||
|
description: """ |
||||||
|
Yojson is an optimized parsing and printing library for the JSON format. |
||||||
|
|
||||||
|
It addresses a few shortcomings of json-wheel including 2x speedup, |
||||||
|
polymorphic variants and optional syntax for tuples and variants. |
||||||
|
|
||||||
|
ydump is a pretty-printing command-line program provided with the |
||||||
|
yojson package. |
||||||
|
|
||||||
|
The program atdgen can be used to derive OCaml-JSON serializers and |
||||||
|
deserializers from type definitions.""" |
||||||
|
url { |
||||||
|
src: |
||||||
|
"https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" |
||||||
|
checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
parameters: |
||||||
|
host: '' |
||||||
|
pool: '' |
||||||
|
sign: false |
||||||
|
|
||||||
|
jobs: |
||||||
|
- job: ${{ parameters.host }} |
||||||
|
pool: ${{ parameters.pool }} |
||||||
|
steps: |
||||||
|
- ${{ if eq(parameters.sign, 'true') }}: |
||||||
|
- script: 'npm install -g esy@latest --unsafe-perm' |
||||||
|
displayName: 'Installing deps' |
||||||
|
- ${{ if eq(parameters.sign, 'false') }}: |
||||||
|
- script: 'sudo npm install -g esy@latest --unsafe-perm' |
||||||
|
displayName: 'Installing deps' |
||||||
|
- script: mkdir -p test_dir |
||||||
|
displayName: 'make test dir' |
||||||
|
- bash: | |
||||||
|
cd test_dir |
||||||
|
echo '{"dependencies": {"@esy-packages/esy-openssl" : "esy-packages/esy-openssl:package.json#'$(git rev-parse --short HEAD)'"}}' > package.json |
||||||
|
displayName: 'create test package.json' |
||||||
|
- script: | |
||||||
|
cd test_dir |
||||||
|
esy install |
||||||
|
displayName: 'Install esy-deps' |
||||||
|
- script: | |
||||||
|
cd test_dir |
||||||
|
esy x which openssl |
||||||
|
esy sh ../esy/test.sh |
||||||
|
displayName: 'Building and dry run' |
@ -0,0 +1 @@ |
|||||||
|
test_dir |
@ -0,0 +1,15 @@ |
|||||||
|
language: node_js |
||||||
|
node_js: |
||||||
|
- 8 |
||||||
|
os: |
||||||
|
- linux |
||||||
|
- osx |
||||||
|
install: |
||||||
|
- npm install --global esy@0.3.0 |
||||||
|
- esy install |
||||||
|
script: |
||||||
|
- travis_wait 40 esy build |
||||||
|
cache: |
||||||
|
timeout: 360 |
||||||
|
directories: |
||||||
|
- '$HOME/.esy/' |
@ -0,0 +1,98 @@ |
|||||||
|
### `esy` build status |
||||||
|
[![Build status](https://ci.appveyor.com/api/projects/status/54y3s6ip6ti7y3vm/branch/esy?svg=true)](https://ci.appveyor.com/project/bryphe/esy-openssl/branch/esy) |
||||||
|
[![Build Status](https://travis-ci.org/bryphe/esy-openssl.svg?branch=esy)](https://travis-ci.org/bryphe/esy-openssl) |
||||||
|
|
||||||
|
----------- |
||||||
|
|
||||||
|
OpenSSL 1.1.1 11 Sep 2018 |
||||||
|
|
||||||
|
Copyright (c) 1998-2018 The OpenSSL Project |
||||||
|
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson |
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
DESCRIPTION |
||||||
|
----------- |
||||||
|
|
||||||
|
The OpenSSL Project is a collaborative effort to develop a robust, |
||||||
|
commercial-grade, fully featured, and Open Source toolkit implementing the |
||||||
|
Transport Layer Security (TLS) protocols (including SSLv3) as well as a |
||||||
|
full-strength general purpose cryptographic library. |
||||||
|
|
||||||
|
OpenSSL is descended from the SSLeay library developed by Eric A. Young |
||||||
|
and Tim J. Hudson. The OpenSSL toolkit is licensed under a dual-license (the |
||||||
|
OpenSSL license plus the SSLeay license), which means that you are free to |
||||||
|
get and use it for commercial and non-commercial purposes as long as you |
||||||
|
fulfill the conditions of both licenses. |
||||||
|
|
||||||
|
OVERVIEW |
||||||
|
-------- |
||||||
|
|
||||||
|
The OpenSSL toolkit includes: |
||||||
|
|
||||||
|
libssl (with platform specific naming): |
||||||
|
Provides the client and server-side implementations for SSLv3 and TLS. |
||||||
|
|
||||||
|
libcrypto (with platform specific naming): |
||||||
|
Provides general cryptographic and X.509 support needed by SSL/TLS but |
||||||
|
not logically part of it. |
||||||
|
|
||||||
|
openssl: |
||||||
|
A command line tool that can be used for: |
||||||
|
Creation of key parameters |
||||||
|
Creation of X.509 certificates, CSRs and CRLs |
||||||
|
Calculation of message digests |
||||||
|
Encryption and decryption |
||||||
|
SSL/TLS client and server tests |
||||||
|
Handling of S/MIME signed or encrypted mail |
||||||
|
And more... |
||||||
|
|
||||||
|
INSTALLATION |
||||||
|
------------ |
||||||
|
|
||||||
|
See the appropriate file: |
||||||
|
INSTALL Linux, Unix, Windows, OpenVMS, ... |
||||||
|
NOTES.* INSTALL addendums for different platforms |
||||||
|
|
||||||
|
SUPPORT |
||||||
|
------- |
||||||
|
|
||||||
|
See the OpenSSL website www.openssl.org for details on how to obtain |
||||||
|
commercial technical support. Free community support is available through the |
||||||
|
openssl-users email list (see |
||||||
|
https://www.openssl.org/community/mailinglists.html for further details). |
||||||
|
|
||||||
|
If you have any problems with OpenSSL then please take the following steps |
||||||
|
first: |
||||||
|
|
||||||
|
- Download the latest version from the repository |
||||||
|
to see if the problem has already been addressed |
||||||
|
- Configure with no-asm |
||||||
|
- Remove compiler optimization flags |
||||||
|
|
||||||
|
If you wish to report a bug then please include the following information |
||||||
|
and create an issue on GitHub: |
||||||
|
|
||||||
|
- OpenSSL version: output of 'openssl version -a' |
||||||
|
- Configuration data: output of 'perl configdata.pm --dump' |
||||||
|
- OS Name, Version, Hardware platform |
||||||
|
- Compiler Details (name, version) |
||||||
|
- Application Details (name, version) |
||||||
|
- Problem Description (steps that will reproduce the problem, if known) |
||||||
|
- Stack Traceback (if the application dumps core) |
||||||
|
|
||||||
|
Just because something doesn't work the way you expect does not mean it |
||||||
|
is necessarily a bug in OpenSSL. Use the openssl-users email list for this type |
||||||
|
of query. |
||||||
|
|
||||||
|
HOW TO CONTRIBUTE TO OpenSSL |
||||||
|
---------------------------- |
||||||
|
|
||||||
|
See CONTRIBUTING |
||||||
|
|
||||||
|
LEGALITIES |
||||||
|
---------- |
||||||
|
|
||||||
|
A number of nations restrict the use or export of cryptography. If you |
||||||
|
are potentially subject to such restrictions you should seek competent |
||||||
|
professional legal advice before attempting to develop or distribute |
||||||
|
cryptographic code. |
@ -0,0 +1,19 @@ |
|||||||
|
jobs: |
||||||
|
- template: .ci/build.yaml # Template reference |
||||||
|
parameters: |
||||||
|
host: macOS |
||||||
|
pool: |
||||||
|
vmImage: 'macOS-10.13' |
||||||
|
|
||||||
|
- template: .ci/build.yaml # Template reference |
||||||
|
parameters: |
||||||
|
host: Linux |
||||||
|
pool: |
||||||
|
vmImage: 'Ubuntu-16.04' |
||||||
|
|
||||||
|
- template: .ci/build.yaml # Template reference |
||||||
|
parameters: |
||||||
|
host: Windows |
||||||
|
pool: |
||||||
|
vmImage: 'vs2017-win2016' |
||||||
|
sign: true # Extra step on Windows only |
@ -0,0 +1,16 @@ |
|||||||
|
{ |
||||||
|
"hash": "d10585b707b5ab54802c6c85154328fd", |
||||||
|
"root": "root@path:./package.json", |
||||||
|
"node": { |
||||||
|
"root@path:./package.json": { |
||||||
|
"record": { |
||||||
|
"name": "root", |
||||||
|
"version": "path:./package.json", |
||||||
|
"source": "path:./package.json", |
||||||
|
"files": [], |
||||||
|
"opam": null |
||||||
|
}, |
||||||
|
"dependencies": [] |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
/* From: https://wiki.openssl.org/index.php/Libcrypto_API */ |
||||||
|
|
||||||
|
#include <openssl/conf.h> |
||||||
|
#include <openssl/evp.h> |
||||||
|
#include <openssl/err.h> |
||||||
|
|
||||||
|
int main(int arc, char *argv[]) |
||||||
|
{
|
||||||
|
/* Load the human readable error strings for libcrypto */ |
||||||
|
ERR_load_crypto_strings(); |
||||||
|
|
||||||
|
/* Load all digest and cipher algorithms */ |
||||||
|
OpenSSL_add_all_algorithms(); |
||||||
|
|
||||||
|
/* Load config file, and other important initialisation */ |
||||||
|
OPENSSL_config(NULL); |
||||||
|
|
||||||
|
printf("OpenSSL successfully initialized.\n"); |
||||||
|
|
||||||
|
/* Clean up */ |
||||||
|
|
||||||
|
/* Removes all digests and ciphers */ |
||||||
|
EVP_cleanup(); |
||||||
|
|
||||||
|
/* if you omit the next, a small leak may be left when you make use of the BIO (low level API) for e.g. base64 transformations */ |
||||||
|
CRYPTO_cleanup_all_ex_data(); |
||||||
|
|
||||||
|
/* Remove error strings */ |
||||||
|
ERR_free_strings(); |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
pwd |
||||||
|
mkdir -p _test |
||||||
|
cd _test |
||||||
|
|
||||||
|
if which x86_64-w64-mingw32-gcc; then |
||||||
|
CC=x86_64-w64-mingw32-gcc |
||||||
|
else |
||||||
|
CC=gcc |
||||||
|
fi |
||||||
|
|
||||||
|
echo "Using compiler: $CC" |
||||||
|
|
||||||
|
echo "include..." |
||||||
|
#ls -a $INCLUDE |
||||||
|
echo "lib.." |
||||||
|
#ls -a $cur__lib |
||||||
|
|
||||||
|
$CC ./../../esy/test.c -o ./test.exe -I$OPENSSL_INCLUDE_PATH -L$OPENSSL_LIB_PATH -lssl -lcrypto |
||||||
|
|
||||||
|
#export PATH=$PATH:$cur__bin:$cur__lib |
||||||
|
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$cur__lib |
||||||
|
|
||||||
|
#echo "Augmented path: $PATH" |
||||||
|
|
||||||
|
echo "Copying binaries..." |
||||||
|
#cp $cur__bin/*.dll . |
||||||
|
|
||||||
|
echo "Test executable path:" |
||||||
|
ls -a . |
||||||
|
|
||||||
|
./test.exe |
@ -0,0 +1,38 @@ |
|||||||
|
{ |
||||||
|
"name": "esy-openssl", |
||||||
|
"version": "0.1.0", |
||||||
|
"description": "Mirror of OpenSSL", |
||||||
|
"license": "Apache 2.0", |
||||||
|
"source": "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1b.tar.gz#1b09930a6099c6c8fa15dd6c6842e134e65e0a31", |
||||||
|
"override": { |
||||||
|
"build": [ |
||||||
|
["bash", "-c", "#{os == 'windows' ? './configure mingw64 --prefix=$cur__install --cross-compile-prefix=x86_64-w64-mingw32-' : './config --prefix=$cur__install'}"], |
||||||
|
["make"] |
||||||
|
], |
||||||
|
"install": [ |
||||||
|
["make", "install"] |
||||||
|
], |
||||||
|
"buildsInSource": true, |
||||||
|
"exportedEnv": { |
||||||
|
"OPENSSL_LIB_PATH": { |
||||||
|
"val": "#{self.lib}", |
||||||
|
"scope": "global" |
||||||
|
}, |
||||||
|
"OPENSSL_INCLUDE_PATH": { |
||||||
|
"val": "#{self.install / 'include'}", |
||||||
|
"scope": "global" |
||||||
|
}, |
||||||
|
"OPENSSL_BIN_PATH": { |
||||||
|
"val": "#{self.bin}", |
||||||
|
"scope": "global" |
||||||
|
}, |
||||||
|
"PKG_CONFIG_PATH": { |
||||||
|
"val": "#{self.lib / 'pkgconfig'}", |
||||||
|
"scope": "global" |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"@esy-packages/esy-autoconf": "esy-packages/esy-autoconf:package.json#71a8836" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
{ |
||||||
|
"build": [ |
||||||
|
[ |
||||||
|
"pkg-config", |
||||||
|
"--help" |
||||||
|
] |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"yarn-pkg-config": "esy-ocaml/yarn-pkg-config#cca65f99674ed2d954d28788edeb8c57fada5ed0" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"build": [ |
||||||
|
[ |
||||||
|
"ocaml", |
||||||
|
"bootstrap.ml" |
||||||
|
], |
||||||
|
[ |
||||||
|
"./boot.exe", |
||||||
|
"--release", |
||||||
|
"-j", |
||||||
|
"4" |
||||||
|
] |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
--- ./extend_helper.ml
|
||||||
|
+++ ./extend_helper.ml
|
||||||
|
@@ -1,13 +1,6 @@
|
||||||
|
-(*pp cppo -V OCAML:`ocamlc -version` *)
|
||||||
|
open Parsetree
|
||||||
|
open Extend_protocol
|
||||||
|
|
||||||
|
-#if OCAML_VERSION < (4, 3, 0)
|
||||||
|
-# define CONST_STRING Asttypes.Const_string
|
||||||
|
-#else
|
||||||
|
-# define CONST_STRING Parsetree.Pconst_string
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
(** Default implementation for [Reader_def.print_outcome] using
|
||||||
|
[Oprint] from compiler-libs *)
|
||||||
|
let print_outcome_using_oprint ppf = function
|
||||||
|
@@ -28,7 +21,7 @@
|
||||||
|
pstr_loc = Location.none;
|
||||||
|
pstr_desc = Pstr_eval ({
|
||||||
|
pexp_loc = Location.none;
|
||||||
|
- pexp_desc = Pexp_constant (CONST_STRING (msg, None));
|
||||||
|
+ pexp_desc = Pexp_constant (Asttypes.Const_string (msg, None));
|
||||||
|
pexp_attributes = [];
|
||||||
|
}, []);
|
||||||
|
}]
|
||||||
|
@@ -112,7 +105,7 @@
|
||||||
|
let msg = match payload with
|
||||||
|
| PStr [{
|
||||||
|
pstr_desc = Pstr_eval ({
|
||||||
|
- pexp_desc = Pexp_constant (CONST_STRING (msg, _));
|
||||||
|
+ pexp_desc = Pexp_constant (Asttypes.Const_string (msg, _));
|
||||||
|
}, _);
|
||||||
|
}] -> msg
|
||||||
|
| _ -> "Warning: extension produced an incorrect syntax-error node"
|
@ -0,0 +1,34 @@ |
|||||||
|
--- ./extend_helper.ml
|
||||||
|
+++ ./extend_helper.ml
|
||||||
|
@@ -1,13 +1,6 @@
|
||||||
|
-(*pp cppo -V OCAML:`ocamlc -version` *)
|
||||||
|
open Parsetree
|
||||||
|
open Extend_protocol
|
||||||
|
|
||||||
|
-#if OCAML_VERSION < (4, 3, 0)
|
||||||
|
-# define CONST_STRING Asttypes.Const_string
|
||||||
|
-#else
|
||||||
|
-# define CONST_STRING Parsetree.Pconst_string
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
(** Default implementation for [Reader_def.print_outcome] using
|
||||||
|
[Oprint] from compiler-libs *)
|
||||||
|
let print_outcome_using_oprint ppf = function
|
||||||
|
@@ -28,7 +21,7 @@
|
||||||
|
pstr_loc = Location.none;
|
||||||
|
pstr_desc = Pstr_eval ({
|
||||||
|
pexp_loc = Location.none;
|
||||||
|
- pexp_desc = Pexp_constant (CONST_STRING (msg, None));
|
||||||
|
+ pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, None));
|
||||||
|
pexp_attributes = [];
|
||||||
|
}, []);
|
||||||
|
}]
|
||||||
|
@@ -112,7 +105,7 @@
|
||||||
|
let msg = match payload with
|
||||||
|
| PStr [{
|
||||||
|
pstr_desc = Pstr_eval ({
|
||||||
|
- pexp_desc = Pexp_constant (CONST_STRING (msg, _));
|
||||||
|
+ pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, _));
|
||||||
|
}, _);
|
||||||
|
}] -> msg
|
||||||
|
| _ -> "Warning: extension produced an incorrect syntax-error node"
|
@ -0,0 +1,15 @@ |
|||||||
|
{ |
||||||
|
"buildEnv": { |
||||||
|
"PATCH_CMD": "#{ocaml.version == '4.2.3007' ? 'patch -p1 < merlin-extend-winfix-4.2.3007.patch' : 'patch -p1 < merlin-extend-winfix.patch'}" |
||||||
|
}, |
||||||
|
"build": [ |
||||||
|
[ |
||||||
|
"bash", |
||||||
|
"-c", |
||||||
|
"#{os == 'windows' ? $PATCH_CMD : 'true'}" |
||||||
|
], |
||||||
|
[ |
||||||
|
"make" |
||||||
|
] |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
--- ./src/Makefile
|
||||||
|
+++ ./src/Makefile
|
||||||
|
@@ -80,7 +80,7 @@
|
||||||
|
ifeq "$(NATDYNLINK)" "true"
|
||||||
|
TOINSTALL+=nums.cmxs
|
||||||
|
endif
|
||||||
|
ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
|
||||||
|
-TOINSTALL_STUBS=dllnums.$(SO)
|
||||||
|
+TOINSTALL_STUBS=dllnums$(EXT_DLL)
|
||||||
|
else
|
||||||
|
TOINSTALL_STUBS=
|
||||||
|
@@ -112,7 +112,7 @@
|
||||||
|
endif
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *.$(SO)
|
||||||
|
+ rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *$(EXE_DLL)
|
||||||
|
|
||||||
|
depend:
|
||||||
|
$(OCAMLDEP) -slash *.mli *.ml > .depend
|
@ -0,0 +1,24 @@ |
|||||||
|
{ |
||||||
|
"build": [ |
||||||
|
[ |
||||||
|
"bash", |
||||||
|
"-c", |
||||||
|
"#{os == 'windows' ? 'patch -p1 < num-1.1.patch' : 'true'}" |
||||||
|
], |
||||||
|
[ |
||||||
|
"make" |
||||||
|
] |
||||||
|
], |
||||||
|
"install": [ |
||||||
|
[ |
||||||
|
"make", |
||||||
|
"findlib-install" |
||||||
|
] |
||||||
|
], |
||||||
|
"exportedEnv": { |
||||||
|
"CAML_LD_LIBRARY_PATH": { |
||||||
|
"val": "#{self.install / 'lib' / 'num' : $CAML_LD_LIBRARY_PATH}", |
||||||
|
"scope": "global" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,463 @@ |
|||||||
|
--- ./Makefile
|
||||||
|
+++ ./Makefile
|
||||||
|
@@ -213,7 +213,7 @@
|
||||||
|
rm -f man/ocamlbuild.1
|
||||||
|
|
||||||
|
man/options_man.byte: src/ocamlbuild_pack.cmo
|
||||||
|
- $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte
|
||||||
|
+ $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte
|
||||||
|
|
||||||
|
clean::
|
||||||
|
rm -f man/options_man.cm*
|
||||||
|
--- ./src/command.ml
|
||||||
|
+++ ./src/command.ml
|
||||||
|
@@ -148,9 +148,10 @@
|
||||||
|
let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in
|
||||||
|
let b = Buffer.create 256 in
|
||||||
|
(* The best way to prevent bash from switching to its windows-style
|
||||||
|
- * quote-handling is to prepend an empty string before the command name. *)
|
||||||
|
+ * quote-handling is to prepend an empty string before the command name.
|
||||||
|
+ * space seems to work, too - and the ouput is nicer *)
|
||||||
|
if Sys.os_type = "Win32" then
|
||||||
|
- Buffer.add_string b "''";
|
||||||
|
+ Buffer.add_char b ' ';
|
||||||
|
let first = ref true in
|
||||||
|
let put_space () =
|
||||||
|
if !first then
|
||||||
|
@@ -260,7 +261,7 @@
|
||||||
|
|
||||||
|
let execute_many ?(quiet=false) ?(pretend=false) cmds =
|
||||||
|
add_parallel_stat (List.length cmds);
|
||||||
|
- let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in
|
||||||
|
+ let degraded = !*My_unix.is_degraded in
|
||||||
|
let jobs = !jobs in
|
||||||
|
if jobs < 0 then invalid_arg "jobs < 0";
|
||||||
|
let max_jobs = if jobs = 0 then None else Some jobs in
|
||||||
|
--- ./src/findlib.ml
|
||||||
|
+++ ./src/findlib.ml
|
||||||
|
@@ -66,9 +66,6 @@
|
||||||
|
(fun command -> lexer & Lexing.from_string & run_and_read command)
|
||||||
|
command
|
||||||
|
|
||||||
|
-let run_and_read command =
|
||||||
|
- Printf.ksprintf run_and_read command
|
||||||
|
-
|
||||||
|
let rec query name =
|
||||||
|
try
|
||||||
|
Hashtbl.find packages name
|
||||||
|
@@ -135,7 +132,8 @@
|
||||||
|
with Not_found -> s
|
||||||
|
|
||||||
|
let list () =
|
||||||
|
- List.map before_space (split_nl & run_and_read "%s list" ocamlfind)
|
||||||
|
+ let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in
|
||||||
|
+ List.map before_space (split_nl & run_and_read cmd)
|
||||||
|
|
||||||
|
(* The closure algorithm is easy because the dependencies are already closed
|
||||||
|
and sorted for each package. We only have to make the union. We could also
|
||||||
|
--- ./src/main.ml
|
||||||
|
+++ ./src/main.ml
|
||||||
|
@@ -162,6 +162,9 @@
|
||||||
|
Tags.mem "traverse" tags
|
||||||
|
|| List.exists (Pathname.is_prefix path_name) !Options.include_dirs
|
||||||
|
|| List.exists (Pathname.is_prefix path_name) target_dirs)
|
||||||
|
+ && ((* beware: !Options.build_dir is an absolute directory *)
|
||||||
|
+ Pathname.normalize !Options.build_dir
|
||||||
|
+ <> Pathname.normalize (Pathname.pwd/path_name))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
--- ./src/my_std.ml
|
||||||
|
+++ ./src/my_std.ml
|
||||||
|
@@ -271,13 +271,107 @@
|
||||||
|
try Array.iter (fun x -> if x = basename then raise Exit) a; false
|
||||||
|
with Exit -> true
|
||||||
|
|
||||||
|
+let command_plain = function
|
||||||
|
+| [| |] -> 0
|
||||||
|
+| margv ->
|
||||||
|
+ let rec waitpid a b =
|
||||||
|
+ match Unix.waitpid a b with
|
||||||
|
+ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b
|
||||||
|
+ | x -> x
|
||||||
|
+ in
|
||||||
|
+ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in
|
||||||
|
+ let pid', process_status = waitpid [] pid in
|
||||||
|
+ assert (pid = pid');
|
||||||
|
+ match process_status with
|
||||||
|
+ | Unix.WEXITED n -> n
|
||||||
|
+ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *)
|
||||||
|
+ | Unix.WSTOPPED _ -> 127
|
||||||
|
+
|
||||||
|
+(* can't use Lexers because of circular dependency *)
|
||||||
|
+let split_path_win str =
|
||||||
|
+ let rec aux pos =
|
||||||
|
+ try
|
||||||
|
+ let i = String.index_from str pos ';' in
|
||||||
|
+ let len = i - pos in
|
||||||
|
+ if len = 0 then
|
||||||
|
+ aux (succ i)
|
||||||
|
+ else
|
||||||
|
+ String.sub str pos (i - pos) :: aux (succ i)
|
||||||
|
+ with Not_found | Invalid_argument _ ->
|
||||||
|
+ let len = String.length str - pos in
|
||||||
|
+ if len = 0 then [] else [String.sub str pos len]
|
||||||
|
+ in
|
||||||
|
+ aux 0
|
||||||
|
+
|
||||||
|
+let windows_shell = lazy begin
|
||||||
|
+ let rec iter = function
|
||||||
|
+ | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |]
|
||||||
|
+ | hd::tl ->
|
||||||
|
+ let dash = Filename.concat hd "dash.exe" in
|
||||||
|
+ if Sys.file_exists dash then [|dash|] else
|
||||||
|
+ let bash = Filename.concat hd "bash.exe" in
|
||||||
|
+ if Sys.file_exists bash = false then iter tl else
|
||||||
|
+ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *)
|
||||||
|
+ let sh = Filename.concat hd "sh.exe" in
|
||||||
|
+ if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|]
|
||||||
|
+ in
|
||||||
|
+ split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter
|
||||||
|
+end
|
||||||
|
+
|
||||||
|
+let prep_windows_cmd cmd =
|
||||||
|
+ (* workaround known ocaml bug, remove later *)
|
||||||
|
+ if String.contains cmd '\t' && String.contains cmd ' ' = false then
|
||||||
|
+ " " ^ cmd
|
||||||
|
+ else
|
||||||
|
+ cmd
|
||||||
|
+
|
||||||
|
+let run_with_shell = function
|
||||||
|
+| "" -> 0
|
||||||
|
+| cmd ->
|
||||||
|
+ let cmd = prep_windows_cmd cmd in
|
||||||
|
+ let shell = Lazy.force windows_shell in
|
||||||
|
+ let qlen = Filename.quote cmd |> String.length in
|
||||||
|
+ (* old versions of dash had problems with bs *)
|
||||||
|
+ try
|
||||||
|
+ if qlen < 7_900 then
|
||||||
|
+ command_plain (Array.append shell [| "-ec" ; cmd |])
|
||||||
|
+ else begin
|
||||||
|
+ (* it can still work, if the called command is a cygwin tool *)
|
||||||
|
+ let ch_closed = ref false in
|
||||||
|
+ let file_deleted = ref false in
|
||||||
|
+ let fln,ch =
|
||||||
|
+ Filename.open_temp_file
|
||||||
|
+ ~mode:[Open_binary]
|
||||||
|
+ "ocamlbuildtmp"
|
||||||
|
+ ".sh"
|
||||||
|
+ in
|
||||||
|
+ try
|
||||||
|
+ let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in
|
||||||
|
+ output_string ch cmd;
|
||||||
|
+ ch_closed:= true;
|
||||||
|
+ close_out ch;
|
||||||
|
+ let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in
|
||||||
|
+ file_deleted:= true;
|
||||||
|
+ Sys.remove fln;
|
||||||
|
+ ret
|
||||||
|
+ with
|
||||||
|
+ | x ->
|
||||||
|
+ if !ch_closed = false then
|
||||||
|
+ close_out_noerr ch;
|
||||||
|
+ if !file_deleted = false then
|
||||||
|
+ (try Sys.remove fln with _ -> ());
|
||||||
|
+ raise x
|
||||||
|
+ end
|
||||||
|
+ with
|
||||||
|
+ | (Unix.Unix_error _) as x ->
|
||||||
|
+ (* Sys.command doesn't raise an exception, so run_with_shell also won't
|
||||||
|
+ raise *)
|
||||||
|
+ Printexc.to_string x ^ ":" ^ cmd |> prerr_endline;
|
||||||
|
+ 1
|
||||||
|
+
|
||||||
|
let sys_command =
|
||||||
|
- match Sys.os_type with
|
||||||
|
- | "Win32" -> fun cmd ->
|
||||||
|
- if cmd = "" then 0 else
|
||||||
|
- let cmd = "bash --norc -c " ^ Filename.quote cmd in
|
||||||
|
- Sys.command cmd
|
||||||
|
- | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd
|
||||||
|
+ if Sys.win32 then run_with_shell
|
||||||
|
+ else fun cmd -> if cmd = "" then 0 else Sys.command cmd
|
||||||
|
|
||||||
|
(* FIXME warning fix and use Filename.concat *)
|
||||||
|
let filename_concat x y =
|
||||||
|
--- ./src/my_std.mli
|
||||||
|
+++ ./src/my_std.mli
|
||||||
|
@@ -69,3 +69,6 @@
|
||||||
|
|
||||||
|
val split_ocaml_version : (int * int * int * string) option
|
||||||
|
(** (major, minor, patchlevel, rest) *)
|
||||||
|
+
|
||||||
|
+val windows_shell : string array Lazy.t
|
||||||
|
+val prep_windows_cmd : string -> string
|
||||||
|
--- ./src/ocamlbuild_executor.ml
|
||||||
|
+++ ./src/ocamlbuild_executor.ml
|
||||||
|
@@ -34,6 +34,8 @@
|
||||||
|
job_stdin : out_channel;
|
||||||
|
job_stderr : in_channel;
|
||||||
|
job_buffer : Buffer.t;
|
||||||
|
+ job_pid : int;
|
||||||
|
+ job_tmp_file: string option;
|
||||||
|
mutable job_dying : bool;
|
||||||
|
};;
|
||||||
|
|
||||||
|
@@ -76,6 +78,61 @@
|
||||||
|
in
|
||||||
|
loop 0
|
||||||
|
;;
|
||||||
|
+
|
||||||
|
+let open_process_full_win cmd env =
|
||||||
|
+ let (in_read, in_write) = Unix.pipe () in
|
||||||
|
+ let (out_read, out_write) = Unix.pipe () in
|
||||||
|
+ let (err_read, err_write) = Unix.pipe () in
|
||||||
|
+ Unix.set_close_on_exec in_read;
|
||||||
|
+ Unix.set_close_on_exec out_write;
|
||||||
|
+ Unix.set_close_on_exec err_read;
|
||||||
|
+ let inchan = Unix.in_channel_of_descr in_read in
|
||||||
|
+ let outchan = Unix.out_channel_of_descr out_write in
|
||||||
|
+ let errchan = Unix.in_channel_of_descr err_read in
|
||||||
|
+ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in
|
||||||
|
+ let test_cmd =
|
||||||
|
+ String.concat " " (List.map Filename.quote (Array.to_list shell)) ^
|
||||||
|
+ "-ec " ^
|
||||||
|
+ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in
|
||||||
|
+ let argv,tmp_file =
|
||||||
|
+ if String.length test_cmd < 7_900 then
|
||||||
|
+ Array.append
|
||||||
|
+ shell
|
||||||
|
+ [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None
|
||||||
|
+ else
|
||||||
|
+ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in
|
||||||
|
+ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd);
|
||||||
|
+ close_out ch;
|
||||||
|
+ let fln' = String.map (function '\\' -> '/' | c -> c) fln in
|
||||||
|
+ Array.append
|
||||||
|
+ shell
|
||||||
|
+ [| "-c" ; fln' |], Some fln in
|
||||||
|
+ let pid =
|
||||||
|
+ Unix.create_process_env argv.(0) argv env out_read in_write err_write in
|
||||||
|
+ Unix.close out_read;
|
||||||
|
+ Unix.close in_write;
|
||||||
|
+ Unix.close err_write;
|
||||||
|
+ (pid, inchan, outchan, errchan,tmp_file)
|
||||||
|
+
|
||||||
|
+let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) =
|
||||||
|
+ let delete tmp_file =
|
||||||
|
+ match tmp_file with
|
||||||
|
+ | None -> ()
|
||||||
|
+ | Some x -> try Sys.remove x with Sys_error _ -> () in
|
||||||
|
+ let tmp_file_deleted = ref false in
|
||||||
|
+ try
|
||||||
|
+ close_in inchan;
|
||||||
|
+ close_out outchan;
|
||||||
|
+ close_in errchan;
|
||||||
|
+ let res = snd(Unix.waitpid [] pid) in
|
||||||
|
+ tmp_file_deleted := true;
|
||||||
|
+ delete tmp_file;
|
||||||
|
+ res
|
||||||
|
+ with
|
||||||
|
+ | x when tmp_file <> None && !tmp_file_deleted = false ->
|
||||||
|
+ delete tmp_file;
|
||||||
|
+ raise x
|
||||||
|
+
|
||||||
|
(* ***)
|
||||||
|
(*** execute *)
|
||||||
|
(* XXX: Add test for non reentrancy *)
|
||||||
|
@@ -130,10 +187,16 @@
|
||||||
|
(*** add_job *)
|
||||||
|
let add_job cmd rest result id =
|
||||||
|
(*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*)
|
||||||
|
- let (stdout', stdin', stderr') = open_process_full cmd env in
|
||||||
|
+ let (pid,stdout', stdin', stderr', tmp_file) =
|
||||||
|
+ if Sys.win32 then open_process_full_win cmd env else
|
||||||
|
+ let a,b,c = open_process_full cmd env in
|
||||||
|
+ -1,a,b,c,None
|
||||||
|
+ in
|
||||||
|
incr jobs_active;
|
||||||
|
- set_nonblock (doi stdout');
|
||||||
|
- set_nonblock (doi stderr');
|
||||||
|
+ if not Sys.win32 then (
|
||||||
|
+ set_nonblock (doi stdout');
|
||||||
|
+ set_nonblock (doi stderr');
|
||||||
|
+ );
|
||||||
|
let job =
|
||||||
|
{ job_id = id;
|
||||||
|
job_command = cmd;
|
||||||
|
@@ -143,7 +206,9 @@
|
||||||
|
job_stdin = stdin';
|
||||||
|
job_stderr = stderr';
|
||||||
|
job_buffer = Buffer.create 1024;
|
||||||
|
- job_dying = false }
|
||||||
|
+ job_dying = false;
|
||||||
|
+ job_tmp_file = tmp_file;
|
||||||
|
+ job_pid = pid }
|
||||||
|
in
|
||||||
|
outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs);
|
||||||
|
jobs := JS.add job !jobs;
|
||||||
|
@@ -199,6 +264,7 @@
|
||||||
|
try
|
||||||
|
read fd u 0 (Bytes.length u)
|
||||||
|
with
|
||||||
|
+ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0
|
||||||
|
| Unix.Unix_error(e,_,_) ->
|
||||||
|
let msg = error_message e in
|
||||||
|
display (fun oc -> fp oc
|
||||||
|
@@ -241,14 +307,19 @@
|
||||||
|
decr jobs_active;
|
||||||
|
|
||||||
|
(* PR#5371: we would get EAGAIN below otherwise *)
|
||||||
|
- clear_nonblock (doi job.job_stdout);
|
||||||
|
- clear_nonblock (doi job.job_stderr);
|
||||||
|
-
|
||||||
|
+ if not Sys.win32 then (
|
||||||
|
+ clear_nonblock (doi job.job_stdout);
|
||||||
|
+ clear_nonblock (doi job.job_stderr);
|
||||||
|
+ );
|
||||||
|
do_read ~loop:true (doi job.job_stdout) job;
|
||||||
|
do_read ~loop:true (doi job.job_stderr) job;
|
||||||
|
outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs);
|
||||||
|
jobs := JS.remove job !jobs;
|
||||||
|
- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in
|
||||||
|
+ let status =
|
||||||
|
+ if Sys.win32 then
|
||||||
|
+ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file)
|
||||||
|
+ else
|
||||||
|
+ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in
|
||||||
|
|
||||||
|
let shown = ref false in
|
||||||
|
|
||||||
|
--- ./src/ocamlbuild_unix_plugin.ml
|
||||||
|
+++ ./src/ocamlbuild_unix_plugin.ml
|
||||||
|
@@ -48,12 +48,22 @@
|
||||||
|
end
|
||||||
|
|
||||||
|
let run_and_open s kont =
|
||||||
|
+ let s_orig = s in
|
||||||
|
+ let s =
|
||||||
|
+ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and
|
||||||
|
+ sys_command uses bash. *)
|
||||||
|
+ if Sys.win32 = false then s else
|
||||||
|
+ let l = match Lazy.force My_std.windows_shell |> Array.to_list with
|
||||||
|
+ | hd::tl -> (Filename.quote hd)::tl
|
||||||
|
+ | _ -> assert false in
|
||||||
|
+ "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\""
|
||||||
|
+ in
|
||||||
|
let ic = Unix.open_process_in s in
|
||||||
|
let close () =
|
||||||
|
match Unix.close_process_in ic with
|
||||||
|
| Unix.WEXITED 0 -> ()
|
||||||
|
| Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ ->
|
||||||
|
- failwith (Printf.sprintf "Error while running: %s" s) in
|
||||||
|
+ failwith (Printf.sprintf "Error while running: %s" s_orig) in
|
||||||
|
let res = try
|
||||||
|
kont ic
|
||||||
|
with e -> (close (); raise e)
|
||||||
|
--- ./src/options.ml
|
||||||
|
+++ ./src/options.ml
|
||||||
|
@@ -174,11 +174,24 @@
|
||||||
|
build_dir := Filename.concat (Sys.getcwd ()) s
|
||||||
|
else
|
||||||
|
build_dir := s
|
||||||
|
+
|
||||||
|
+let slashify =
|
||||||
|
+ if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p
|
||||||
|
+ else fun p ->p
|
||||||
|
+
|
||||||
|
+let sb () =
|
||||||
|
+ match Sys.os_type with
|
||||||
|
+ | "Win32" ->
|
||||||
|
+ (try set_binary_mode_out stdout true with _ -> ());
|
||||||
|
+ | _ -> ()
|
||||||
|
+
|
||||||
|
+
|
||||||
|
let spec = ref (
|
||||||
|
let print_version () =
|
||||||
|
+ sb ();
|
||||||
|
Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK
|
||||||
|
in
|
||||||
|
- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in
|
||||||
|
+ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in
|
||||||
|
Arg.align
|
||||||
|
[
|
||||||
|
"-version", Unit print_version , " Display the version";
|
||||||
|
@@ -257,8 +270,8 @@
|
||||||
|
"-build-dir", String set_build_dir, "<path> Set build directory (implies no-links)";
|
||||||
|
"-install-lib-dir", Set_string Ocamlbuild_where.libdir, "<path> Set the install library directory";
|
||||||
|
"-install-bin-dir", Set_string Ocamlbuild_where.bindir, "<path> Set the install binary directory";
|
||||||
|
- "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory";
|
||||||
|
- "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), "<command> Display path to the tool command";
|
||||||
|
+ "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory";
|
||||||
|
+ "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), "<command> Display path to the tool command";
|
||||||
|
"-ocamlc", set_cmd ocamlc, "<command> Set the OCaml bytecode compiler";
|
||||||
|
"-plugin-ocamlc", set_cmd plugin_ocamlc, "<command> Set the OCaml bytecode compiler \
|
||||||
|
used when building myocamlbuild.ml (only)";
|
||||||
|
--- ./src/pathname.ml
|
||||||
|
+++ ./src/pathname.ml
|
||||||
|
@@ -84,6 +84,26 @@
|
||||||
|
| x :: xs -> x :: normalize_list xs
|
||||||
|
|
||||||
|
let normalize x =
|
||||||
|
+ let x =
|
||||||
|
+ if Sys.win32 = false then
|
||||||
|
+ x
|
||||||
|
+ else
|
||||||
|
+ let len = String.length x in
|
||||||
|
+ let b = Bytes.create len in
|
||||||
|
+ for i = 0 to pred len do
|
||||||
|
+ match x.[i] with
|
||||||
|
+ | '\\' -> Bytes.set b i '/'
|
||||||
|
+ | c -> Bytes.set b i c
|
||||||
|
+ done;
|
||||||
|
+ if len > 1 then (
|
||||||
|
+ let c1 = Bytes.get b 0 in
|
||||||
|
+ let c2 = Bytes.get b 1 in
|
||||||
|
+ if c2 = ':' && c1 >= 'a' && c1 <= 'z' &&
|
||||||
|
+ ( len = 2 || Bytes.get b 2 = '/') then
|
||||||
|
+ Bytes.set b 0 (Char.uppercase_ascii c1)
|
||||||
|
+ );
|
||||||
|
+ Bytes.unsafe_to_string b
|
||||||
|
+ in
|
||||||
|
if Glob.eval not_normal_form_re x then
|
||||||
|
let root, paths = split x in
|
||||||
|
join root (normalize_list paths)
|
||||||
|
--- ./src/shell.ml
|
||||||
|
+++ ./src/shell.ml
|
||||||
|
@@ -24,12 +24,26 @@
|
||||||
|
| 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1)
|
||||||
|
| _ -> false in
|
||||||
|
loop 0
|
||||||
|
+
|
||||||
|
+let generic_quote quotequote s =
|
||||||
|
+ let l = String.length s in
|
||||||
|
+ let b = Buffer.create (l + 20) in
|
||||||
|
+ Buffer.add_char b '\'';
|
||||||
|
+ for i = 0 to l - 1 do
|
||||||
|
+ if s.[i] = '\''
|
||||||
|
+ then Buffer.add_string b quotequote
|
||||||
|
+ else Buffer.add_char b s.[i]
|
||||||
|
+ done;
|
||||||
|
+ Buffer.add_char b '\'';
|
||||||
|
+ Buffer.contents b
|
||||||
|
+let unix_quote = generic_quote "'\\''"
|
||||||
|
+
|
||||||
|
let quote_filename_if_needed s =
|
||||||
|
if is_simple_filename s then s
|
||||||
|
(* We should probably be using [Filename.unix_quote] except that function
|
||||||
|
* isn't exported. Users on Windows will have to live with not being able to
|
||||||
|
* install OCaml into c:\o'caml. Too bad. *)
|
||||||
|
- else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s
|
||||||
|
+ else if Sys.os_type = "Win32" then unix_quote s
|
||||||
|
else Filename.quote s
|
||||||
|
let chdir dir =
|
||||||
|
reset_filesys_cache ();
|
||||||
|
@@ -37,7 +51,7 @@
|
||||||
|
let run args target =
|
||||||
|
reset_readdir_cache ();
|
||||||
|
let cmd = String.concat " " (List.map quote_filename_if_needed args) in
|
||||||
|
- if !*My_unix.is_degraded || Sys.os_type = "Win32" then
|
||||||
|
+ if !*My_unix.is_degraded then
|
||||||
|
begin
|
||||||
|
Log.event cmd target Tags.empty;
|
||||||
|
let st = sys_command cmd in
|
@ -0,0 +1,27 @@ |
|||||||
|
{ |
||||||
|
"build": [ |
||||||
|
[ |
||||||
|
"bash", |
||||||
|
"-c", |
||||||
|
"#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" |
||||||
|
], |
||||||
|
[ |
||||||
|
"make", |
||||||
|
"-f", |
||||||
|
"configure.make", |
||||||
|
"all", |
||||||
|
"OCAMLBUILD_PREFIX=#{self.install}", |
||||||
|
"OCAMLBUILD_BINDIR=#{self.bin}", |
||||||
|
"OCAMLBUILD_LIBDIR=#{self.lib}", |
||||||
|
"OCAMLBUILD_MANDIR=#{self.man}", |
||||||
|
"OCAMLBUILD_NATIVE=true", |
||||||
|
"OCAMLBUILD_NATIVE_TOOLS=true" |
||||||
|
], |
||||||
|
[ |
||||||
|
"make", |
||||||
|
"check-if-preinstalled", |
||||||
|
"all", |
||||||
|
"#{os == 'windows' ? 'install' : 'opam-install'}" |
||||||
|
] |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,489 @@ |
|||||||
|
--- ./Makefile
|
||||||
|
+++ ./Makefile
|
||||||
|
@@ -57,16 +57,16 @@
|
||||||
|
cat findlib.conf.in | \
|
||||||
|
$(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf
|
||||||
|
if ./tools/cmd_from_same_dir ocamlc; then \
|
||||||
|
- echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \
|
||||||
|
+ echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \
|
||||||
|
fi
|
||||||
|
if ./tools/cmd_from_same_dir ocamlopt; then \
|
||||||
|
- echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \
|
||||||
|
+ echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \
|
||||||
|
fi
|
||||||
|
if ./tools/cmd_from_same_dir ocamldep; then \
|
||||||
|
- echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \
|
||||||
|
+ echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \
|
||||||
|
fi
|
||||||
|
if ./tools/cmd_from_same_dir ocamldoc; then \
|
||||||
|
- echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \
|
||||||
|
+ echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: install-doc
|
||||||
|
--- ./src/findlib/findlib_config.mlp
|
||||||
|
+++ ./src/findlib/findlib_config.mlp
|
||||||
|
@@ -24,3 +24,5 @@
|
||||||
|
| "MacOS" -> "" (* don't know *)
|
||||||
|
| _ -> failwith "Unknown Sys.os_type"
|
||||||
|
;;
|
||||||
|
+
|
||||||
|
+let exec_suffix = "@EXEC_SUFFIX@";;
|
||||||
|
--- ./src/findlib/findlib.ml
|
||||||
|
+++ ./src/findlib/findlib.ml
|
||||||
|
@@ -28,15 +28,20 @@
|
||||||
|
let conf_ldconf = ref "";;
|
||||||
|
let conf_ignore_dups_in = ref ([] : string list);;
|
||||||
|
|
||||||
|
-let ocamlc_default = "ocamlc";;
|
||||||
|
-let ocamlopt_default = "ocamlopt";;
|
||||||
|
-let ocamlcp_default = "ocamlcp";;
|
||||||
|
-let ocamloptp_default = "ocamloptp";;
|
||||||
|
-let ocamlmklib_default = "ocamlmklib";;
|
||||||
|
-let ocamlmktop_default = "ocamlmktop";;
|
||||||
|
-let ocamldep_default = "ocamldep";;
|
||||||
|
-let ocamlbrowser_default = "ocamlbrowser";;
|
||||||
|
-let ocamldoc_default = "ocamldoc";;
|
||||||
|
+let add_exec str =
|
||||||
|
+ match Findlib_config.exec_suffix with
|
||||||
|
+ | "" -> str
|
||||||
|
+ | a -> str ^ a ;;
|
||||||
|
+let ocamlc_default = add_exec "ocamlc";;
|
||||||
|
+let ocamlopt_default = add_exec "ocamlopt";;
|
||||||
|
+let ocamlcp_default = add_exec "ocamlcp";;
|
||||||
|
+let ocamloptp_default = add_exec "ocamloptp";;
|
||||||
|
+let ocamlmklib_default = add_exec "ocamlmklib";;
|
||||||
|
+let ocamlmktop_default = add_exec "ocamlmktop";;
|
||||||
|
+let ocamldep_default = add_exec "ocamldep";;
|
||||||
|
+let ocamlbrowser_default = add_exec "ocamlbrowser";;
|
||||||
|
+let ocamldoc_default = add_exec "ocamldoc";;
|
||||||
|
+
|
||||||
|
|
||||||
|
|
||||||
|
let init_manually
|
||||||
|
--- ./src/findlib/fl_package_base.ml
|
||||||
|
+++ ./src/findlib/fl_package_base.ml
|
||||||
|
@@ -133,7 +133,15 @@
|
||||||
|
List.find (fun def -> def.def_var = "exists_if") p.package_defs in
|
||||||
|
let files = Fl_split.in_words def.def_value in
|
||||||
|
List.exists
|
||||||
|
- (fun file -> Sys.file_exists (Filename.concat d' file))
|
||||||
|
+ (fun file ->
|
||||||
|
+ let fln = Filename.concat d' file in
|
||||||
|
+ let e = Sys.file_exists fln in
|
||||||
|
+ (* necessary for ppx executables *)
|
||||||
|
+ if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then
|
||||||
|
+ e
|
||||||
|
+ else
|
||||||
|
+ Sys.file_exists (fln ^ ".exe")
|
||||||
|
+ )
|
||||||
|
files
|
||||||
|
with Not_found -> true in
|
||||||
|
|
||||||
|
--- ./src/findlib/fl_split.ml
|
||||||
|
+++ ./src/findlib/fl_split.ml
|
||||||
|
@@ -126,10 +126,17 @@
|
||||||
|
| '/' | '\\' -> true
|
||||||
|
| _ -> false in
|
||||||
|
let norm_dir_win() =
|
||||||
|
- if l >= 1 && s.[0] = '/' then
|
||||||
|
- Buffer.add_char b '\\' else Buffer.add_char b s.[0];
|
||||||
|
- if l >= 2 && s.[1] = '/' then
|
||||||
|
- Buffer.add_char b '\\' else Buffer.add_char b s.[1];
|
||||||
|
+ if l >= 1 then (
|
||||||
|
+ if s.[0] = '/' then
|
||||||
|
+ Buffer.add_char b '\\'
|
||||||
|
+ else
|
||||||
|
+ Buffer.add_char b s.[0] ;
|
||||||
|
+ if l >= 2 then
|
||||||
|
+ if s.[1] = '/' then
|
||||||
|
+ Buffer.add_char b '\\'
|
||||||
|
+ else
|
||||||
|
+ Buffer.add_char b s.[1];
|
||||||
|
+ );
|
||||||
|
for k = 2 to l - 1 do
|
||||||
|
let c = s.[k] in
|
||||||
|
if is_slash c then (
|
||||||
|
--- ./src/findlib/frontend.ml
|
||||||
|
+++ ./src/findlib/frontend.ml
|
||||||
|
@@ -31,10 +31,18 @@
|
||||||
|
else
|
||||||
|
Sys_error (arg ^ ": " ^ Unix.error_message code)
|
||||||
|
|
||||||
|
+let is_win = Sys.os_type = "Win32"
|
||||||
|
+
|
||||||
|
+let () =
|
||||||
|
+ match Findlib_config.system with
|
||||||
|
+ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" ->
|
||||||
|
+ (try set_binary_mode_out stdout true with _ -> ());
|
||||||
|
+ (try set_binary_mode_out stderr true with _ -> ());
|
||||||
|
+ | _ -> ()
|
||||||
|
|
||||||
|
let slashify s =
|
||||||
|
match Findlib_config.system with
|
||||||
|
- | "mingw" | "mingw64" | "cygwin" ->
|
||||||
|
+ | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" ->
|
||||||
|
let b = Buffer.create 80 in
|
||||||
|
String.iter
|
||||||
|
(function
|
||||||
|
@@ -49,7 +57,7 @@
|
||||||
|
|
||||||
|
let out_path ?(prefix="") s =
|
||||||
|
match Findlib_config.system with
|
||||||
|
- | "mingw" | "mingw64" | "cygwin" ->
|
||||||
|
+ | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" ->
|
||||||
|
let u = slashify s in
|
||||||
|
prefix ^
|
||||||
|
(if String.contains u ' ' then
|
||||||
|
@@ -273,11 +281,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
let identify_dir d =
|
||||||
|
- match Sys.os_type with
|
||||||
|
- | "Win32" ->
|
||||||
|
- failwith "identify_dir" (* not available *)
|
||||||
|
- | _ ->
|
||||||
|
- let s = Unix.stat d in
|
||||||
|
+ if is_win then
|
||||||
|
+ failwith "identify_dir"; (* not available *)
|
||||||
|
+ let s = Unix.stat d in
|
||||||
|
(s.Unix.st_dev, s.Unix.st_ino)
|
||||||
|
;;
|
||||||
|
|
||||||
|
@@ -459,6 +465,96 @@
|
||||||
|
)
|
||||||
|
packages
|
||||||
|
|
||||||
|
+let rewrite_cmd s =
|
||||||
|
+ if s = "" || not is_win then
|
||||||
|
+ s
|
||||||
|
+ else
|
||||||
|
+ let s =
|
||||||
|
+ let l = String.length s in
|
||||||
|
+ let b = Buffer.create l in
|
||||||
|
+ for i = 0 to pred l do
|
||||||
|
+ match s.[i] with
|
||||||
|
+ | '/' -> Buffer.add_char b '\\'
|
||||||
|
+ | x -> Buffer.add_char b x
|
||||||
|
+ done;
|
||||||
|
+ Buffer.contents b
|
||||||
|
+ in
|
||||||
|
+ if (Filename.is_implicit s && String.contains s '\\' = false) ||
|
||||||
|
+ Filename.check_suffix (String.lowercase s) ".exe" then
|
||||||
|
+ s
|
||||||
|
+ else
|
||||||
|
+ let s' = s ^ ".exe" in
|
||||||
|
+ if Sys.file_exists s' then
|
||||||
|
+ s'
|
||||||
|
+ else
|
||||||
|
+ s
|
||||||
|
+
|
||||||
|
+let rewrite_cmd s =
|
||||||
|
+ if s = "" || not is_win then s else
|
||||||
|
+ let s =
|
||||||
|
+ let l = String.length s in
|
||||||
|
+ let b = Buffer.create l in
|
||||||
|
+ for i = 0 to pred l do
|
||||||
|
+ match s.[i] with
|
||||||
|
+ | '/' -> Buffer.add_char b '\\'
|
||||||
|
+ | x -> Buffer.add_char b x
|
||||||
|
+ done;
|
||||||
|
+ Buffer.contents b
|
||||||
|
+ in
|
||||||
|
+ if (Filename.is_implicit s && String.contains s '\\' = false) ||
|
||||||
|
+ Filename.check_suffix (String.lowercase s) ".exe" then
|
||||||
|
+ s
|
||||||
|
+ else
|
||||||
|
+ let s' = s ^ ".exe" in
|
||||||
|
+ if Sys.file_exists s' then
|
||||||
|
+ s'
|
||||||
|
+ else
|
||||||
|
+ s
|
||||||
|
+
|
||||||
|
+let rewrite_pp cmd =
|
||||||
|
+ if not is_win then cmd else
|
||||||
|
+ let module T = struct exception Keep end in
|
||||||
|
+ let is_whitespace = function
|
||||||
|
+ | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true
|
||||||
|
+ | _ -> false in
|
||||||
|
+ (* characters that triggers special behaviour (cmd.exe, not unix shell) *)
|
||||||
|
+ let is_unsafe_char = function
|
||||||
|
+ | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true
|
||||||
|
+ | _ -> false in
|
||||||
|
+ let len = String.length cmd in
|
||||||
|
+ let buf = Buffer.create (len + 4) in
|
||||||
|
+ let buf_cmd = Buffer.create len in
|
||||||
|
+ let rec iter_ws i =
|
||||||
|
+ if i >= len then () else
|
||||||
|
+ let cur = cmd.[i] in
|
||||||
|
+ if is_whitespace cur then (
|
||||||
|
+ Buffer.add_char buf cur;
|
||||||
|
+ iter_ws (succ i)
|
||||||
|
+ )
|
||||||
|
+ else
|
||||||
|
+ iter_cmd i
|
||||||
|
+ and iter_cmd i =
|
||||||
|
+ if i >= len then add_buf_cmd () else
|
||||||
|
+ let cur = cmd.[i] in
|
||||||
|
+ if is_unsafe_char cur || cur = '"' || cur = '\'' then
|
||||||
|
+ raise T.Keep;
|
||||||
|
+ if is_whitespace cur then (
|
||||||
|
+ add_buf_cmd ();
|
||||||
|
+ Buffer.add_substring buf cmd i (len - i)
|
||||||
|
+ )
|
||||||
|
+ else (
|
||||||
|
+ Buffer.add_char buf_cmd cur;
|
||||||
|
+ iter_cmd (succ i)
|
||||||
|
+ )
|
||||||
|
+ and add_buf_cmd () =
|
||||||
|
+ if Buffer.length buf_cmd > 0 then
|
||||||
|
+ Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd))
|
||||||
|
+ in
|
||||||
|
+ try
|
||||||
|
+ iter_ws 0;
|
||||||
|
+ Buffer.contents buf
|
||||||
|
+ with
|
||||||
|
+ | T.Keep -> cmd
|
||||||
|
|
||||||
|
let process_pp_spec syntax_preds packages pp_opts =
|
||||||
|
(* Returns: pp_command *)
|
||||||
|
@@ -549,7 +645,7 @@
|
||||||
|
None -> []
|
||||||
|
| Some cmd ->
|
||||||
|
["-pp";
|
||||||
|
- cmd ^ " " ^
|
||||||
|
+ (rewrite_cmd cmd) ^ " " ^
|
||||||
|
String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^
|
||||||
|
String.concat " " (List.map Filename.quote pp_archives) ^ " " ^
|
||||||
|
String.concat " " (List.map Filename.quote pp_opts)]
|
||||||
|
@@ -625,9 +721,11 @@
|
||||||
|
in
|
||||||
|
try
|
||||||
|
let preprocessor =
|
||||||
|
+ rewrite_cmd (
|
||||||
|
resolve_path
|
||||||
|
~base ~explicit:true
|
||||||
|
- (package_property predicates pname "ppx") in
|
||||||
|
+ (package_property predicates pname "ppx") )
|
||||||
|
+ in
|
||||||
|
["-ppx"; String.concat " " (preprocessor :: options)]
|
||||||
|
with Not_found -> []
|
||||||
|
)
|
||||||
|
@@ -895,6 +993,14 @@
|
||||||
|
switch (e.g. -L<path> instead of -L <path>)
|
||||||
|
*)
|
||||||
|
|
||||||
|
+(* We may need to remove files on which we do not have complete control.
|
||||||
|
+ On Windows, removing a read-only file fails so try to change the
|
||||||
|
+ mode of the file first. *)
|
||||||
|
+let remove_file fname =
|
||||||
|
+ try Sys.remove fname
|
||||||
|
+ with Sys_error _ when is_win ->
|
||||||
|
+ (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ());
|
||||||
|
+ Sys.remove fname
|
||||||
|
|
||||||
|
let ocamlc which () =
|
||||||
|
|
||||||
|
@@ -1022,9 +1128,12 @@
|
||||||
|
|
||||||
|
"-intf",
|
||||||
|
Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]);
|
||||||
|
-
|
||||||
|
+
|
||||||
|
"-pp",
|
||||||
|
- Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s);
|
||||||
|
+ Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s));
|
||||||
|
+
|
||||||
|
+ "-ppx",
|
||||||
|
+ Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s));
|
||||||
|
|
||||||
|
"-thread",
|
||||||
|
Arg.Unit (fun _ -> threads := threads_default);
|
||||||
|
@@ -1237,7 +1346,7 @@
|
||||||
|
with
|
||||||
|
any ->
|
||||||
|
close_out initl;
|
||||||
|
- Sys.remove initl_file_name;
|
||||||
|
+ remove_file initl_file_name;
|
||||||
|
raise any
|
||||||
|
end;
|
||||||
|
|
||||||
|
@@ -1245,9 +1354,9 @@
|
||||||
|
at_exit
|
||||||
|
(fun () ->
|
||||||
|
let tr f x = try f x with _ -> () in
|
||||||
|
- tr Sys.remove initl_file_name;
|
||||||
|
- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi");
|
||||||
|
- tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo");
|
||||||
|
+ tr remove_file initl_file_name;
|
||||||
|
+ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi");
|
||||||
|
+ tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo");
|
||||||
|
);
|
||||||
|
|
||||||
|
let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in
|
||||||
|
@@ -1493,7 +1602,9 @@
|
||||||
|
[ "-v", Arg.Unit (fun () -> verbose := Verbose);
|
||||||
|
"-pp", Arg.String (fun s ->
|
||||||
|
pp_specified := true;
|
||||||
|
- options := !options @ ["-pp"; s]);
|
||||||
|
+ options := !options @ ["-pp"; rewrite_pp s]);
|
||||||
|
+ "-ppx", Arg.String (fun s ->
|
||||||
|
+ options := !options @ ["-ppx"; rewrite_pp s]);
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
@@ -1672,7 +1783,9 @@
|
||||||
|
Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s)));
|
||||||
|
|
||||||
|
"-pp", Arg.String (fun s -> pp_specified := true;
|
||||||
|
- add_spec_fn "-pp" s);
|
||||||
|
+ add_spec_fn "-pp" (rewrite_pp s));
|
||||||
|
+ "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s));
|
||||||
|
+
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
@@ -1830,7 +1943,10 @@
|
||||||
|
output_string ch_out append;
|
||||||
|
close_out ch_out;
|
||||||
|
close_in ch_in;
|
||||||
|
- Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime;
|
||||||
|
+ (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime
|
||||||
|
+ with Unix.Unix_error(e,_,_) ->
|
||||||
|
+ prerr_endline("Warning: setting utimes for " ^ outpath
|
||||||
|
+ ^ ": " ^ Unix.error_message e));
|
||||||
|
|
||||||
|
prerr_endline("Installed " ^ outpath);
|
||||||
|
with
|
||||||
|
@@ -1882,6 +1998,8 @@
|
||||||
|
Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in
|
||||||
|
let f =
|
||||||
|
Unix.in_channel_of_descr fd in
|
||||||
|
+ if is_win then
|
||||||
|
+ set_binary_mode_in f false;
|
||||||
|
try
|
||||||
|
let line = input_line f in
|
||||||
|
let is_my_file = (line = pkg) in
|
||||||
|
@@ -2208,7 +2326,7 @@
|
||||||
|
let lines = read_ldconf !ldconf in
|
||||||
|
let dlldir_norm = Fl_split.norm_dir dlldir in
|
||||||
|
let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in
|
||||||
|
- let ci_filesys = (Sys.os_type = "Win32") in
|
||||||
|
+ let ci_filesys = is_win in
|
||||||
|
let check_dir d =
|
||||||
|
let d' = Fl_split.norm_dir d in
|
||||||
|
(d' = dlldir_norm) ||
|
||||||
|
@@ -2356,7 +2474,7 @@
|
||||||
|
List.iter
|
||||||
|
(fun file ->
|
||||||
|
let absfile = Filename.concat dlldir file in
|
||||||
|
- Sys.remove absfile;
|
||||||
|
+ remove_file absfile;
|
||||||
|
prerr_endline ("Removed " ^ absfile)
|
||||||
|
)
|
||||||
|
dll_files
|
||||||
|
@@ -2365,7 +2483,7 @@
|
||||||
|
(* Remove the files from the package directory: *)
|
||||||
|
if Sys.file_exists pkgdir then begin
|
||||||
|
let files = Sys.readdir pkgdir in
|
||||||
|
- Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files;
|
||||||
|
+ Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files;
|
||||||
|
Unix.rmdir pkgdir;
|
||||||
|
prerr_endline ("Removed " ^ pkgdir)
|
||||||
|
end
|
||||||
|
@@ -2415,7 +2533,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
let print_configuration() =
|
||||||
|
+ let sl = slashify in
|
||||||
|
let dir s =
|
||||||
|
+ let s = sl s in
|
||||||
|
if Sys.file_exists s then
|
||||||
|
s
|
||||||
|
else
|
||||||
|
@@ -2453,27 +2573,27 @@
|
||||||
|
if md = "" then "the corresponding package directories" else dir md
|
||||||
|
);
|
||||||
|
Printf.printf "The standard library is assumed to reside in:\n %s\n"
|
||||||
|
- (Findlib.ocaml_stdlib());
|
||||||
|
+ (sl (Findlib.ocaml_stdlib()));
|
||||||
|
Printf.printf "The ld.conf file can be found here:\n %s\n"
|
||||||
|
- (Findlib.ocaml_ldconf());
|
||||||
|
+ (sl (Findlib.ocaml_ldconf()));
|
||||||
|
flush stdout
|
||||||
|
| Some "conf" ->
|
||||||
|
- print_endline Findlib_config.config_file
|
||||||
|
+ print_endline (sl Findlib_config.config_file)
|
||||||
|
| Some "path" ->
|
||||||
|
- List.iter print_endline (Findlib.search_path())
|
||||||
|
+ List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path())
|
||||||
|
| Some "destdir" ->
|
||||||
|
- print_endline (Findlib.default_location())
|
||||||
|
+ print_endline ( sl (Findlib.default_location()))
|
||||||
|
| Some "metadir" ->
|
||||||
|
- print_endline (Findlib.meta_directory())
|
||||||
|
+ print_endline ( sl (Findlib.meta_directory()))
|
||||||
|
| Some "metapath" ->
|
||||||
|
let mdir = Findlib.meta_directory() in
|
||||||
|
let ddir = Findlib.default_location() in
|
||||||
|
- print_endline
|
||||||
|
- (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")
|
||||||
|
+ print_endline ( sl
|
||||||
|
+ (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META"))
|
||||||
|
| Some "stdlib" ->
|
||||||
|
- print_endline (Findlib.ocaml_stdlib())
|
||||||
|
+ print_endline ( sl (Findlib.ocaml_stdlib()))
|
||||||
|
| Some "ldconf" ->
|
||||||
|
- print_endline (Findlib.ocaml_ldconf())
|
||||||
|
+ print_endline ( sl (Findlib.ocaml_ldconf()))
|
||||||
|
| _ ->
|
||||||
|
assert false
|
||||||
|
;;
|
||||||
|
@@ -2481,7 +2601,7 @@
|
||||||
|
|
||||||
|
let ocamlcall pkg cmd =
|
||||||
|
let dir = package_directory pkg in
|
||||||
|
- let path = Filename.concat dir cmd in
|
||||||
|
+ let path = rewrite_cmd (Filename.concat dir cmd) in
|
||||||
|
begin
|
||||||
|
try Unix.access path [ Unix.X_OK ]
|
||||||
|
with
|
||||||
|
@@ -2647,6 +2767,10 @@
|
||||||
|
| Sys_error f ->
|
||||||
|
prerr_endline ("ocamlfind: " ^ f);
|
||||||
|
exit 2
|
||||||
|
+ | Unix.Unix_error (e, fn, f) ->
|
||||||
|
+ prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f
|
||||||
|
+ ^ ": " ^ Unix.error_message e);
|
||||||
|
+ exit 2
|
||||||
|
| Findlib.No_such_package(pkg,info) ->
|
||||||
|
prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^
|
||||||
|
(if info <> "" then " - " ^ info else ""));
|
||||||
|
--- ./src/findlib/Makefile
|
||||||
|
+++ ./src/findlib/Makefile
|
||||||
|
@@ -90,6 +90,7 @@
|
||||||
|
cat findlib_config.mlp | \
|
||||||
|
$(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \
|
||||||
|
$(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \
|
||||||
|
+ $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \
|
||||||
|
sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \
|
||||||
|
-e 's;@SYSTEM@;$(SYSTEM);g' \
|
||||||
|
>findlib_config.ml
|
||||||
|
@@ -113,7 +114,7 @@
|
||||||
|
$(OCAMLC) -a -o num_top.cma $(NUMTOP_OBJECTS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f *.cmi *.cmo *.cma *.cmx *.a *.o *.cmxa \
|
||||||
|
+ rm -f *.cmi *.cmo *.cma *.cmx *.lib *.a *.o *.cmxa \
|
||||||
|
fl_meta.ml findlib_config.ml findlib.mml topfind.ml topfind \
|
||||||
|
ocamlfind$(EXEC_SUFFIX) ocamlfind_opt$(EXEC_SUFFIX)
|
||||||
|
|
||||||
|
@@ -121,7 +122,7 @@
|
||||||
|
mkdir -p "$(prefix)$(OCAML_SITELIB)/$(NAME)"
|
||||||
|
mkdir -p "$(prefix)$(OCAMLFIND_BIN)"
|
||||||
|
test $(INSTALL_TOPFIND) -eq 0 || cp topfind "$(prefix)$(OCAML_CORE_STDLIB)"
|
||||||
|
- 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` && \
|
||||||
|
+ 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` && \
|
||||||
|
cp $$files "$(prefix)$(OCAML_SITELIB)/$(NAME)"
|
||||||
|
f="ocamlfind$(EXEC_SUFFIX)"; { test -f ocamlfind_opt$(EXEC_SUFFIX) && f="ocamlfind_opt$(EXEC_SUFFIX)"; }; \
|
||||||
|
cp $$f "$(prefix)$(OCAMLFIND_BIN)/ocamlfind$(EXEC_SUFFIX)"
|
@ -0,0 +1,61 @@ |
|||||||
|
{ |
||||||
|
"build": [ |
||||||
|
[ |
||||||
|
"bash", |
||||||
|
"-c", |
||||||
|
"#{os == 'windows' ? 'patch -p1 < findlib-1.8.0.patch' : 'true'}" |
||||||
|
], |
||||||
|
[ |
||||||
|
"./configure", |
||||||
|
"-bindir", |
||||||
|
"#{self.bin}", |
||||||
|
"-sitelib", |
||||||
|
"#{self.lib}", |
||||||
|
"-mandir", |
||||||
|
"#{self.man}", |
||||||
|
"-config", |
||||||
|
"#{self.lib}/findlib.conf", |
||||||
|
"-no-custom", |
||||||
|
"-no-topfind" |
||||||
|
], |
||||||
|
[ |
||||||
|
"make", |
||||||
|
"all" |
||||||
|
], |
||||||
|
[ |
||||||
|
"make", |
||||||
|
"opt" |
||||||
|
] |
||||||
|
], |
||||||
|
"install": [ |
||||||
|
[ |
||||||
|
"make", |
||||||
|
"install" |
||||||
|
], |
||||||
|
[ |
||||||
|
"install", |
||||||
|
"-m", |
||||||
|
"0755", |
||||||
|
"ocaml-stub", |
||||||
|
"#{self.bin}/ocaml" |
||||||
|
], |
||||||
|
[ |
||||||
|
"mkdir", |
||||||
|
"-p", |
||||||
|
"#{self.toplevel}" |
||||||
|
], |
||||||
|
[ |
||||||
|
"install", |
||||||
|
"-m", |
||||||
|
"0644", |
||||||
|
"src/findlib/topfind", |
||||||
|
"#{self.toplevel}/topfind" |
||||||
|
] |
||||||
|
], |
||||||
|
"exportedEnv": { |
||||||
|
"OCAML_TOPLEVEL_PATH": { |
||||||
|
"val": "#{self.toplevel}", |
||||||
|
"scope": "global" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue