![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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1,3 @@
|
||||
|
||||
# Reset any possible .gitignore, we want all esy.lock to be un-ignored. |
||||
!* |
@ -0,0 +1,38 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh |
||||
|
||||
BINDIR=$(dirname "$(command -v ocamlc)") |
||||
"$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" |
@ -0,0 +1,6 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
test_dir |
@ -0,0 +1,15 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1,11 @@
|
||||
{ |
||||
"build": [ |
||||
[ |
||||
"pkg-config", |
||||
"--help" |
||||
] |
||||
], |
||||
"dependencies": { |
||||
"yarn-pkg-config": "esy-ocaml/yarn-pkg-config#cca65f99674ed2d954d28788edeb8c57fada5ed0" |
||||
} |
||||
} |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
{ |
||||
"build": [ |
||||
[ |
||||
"ocaml", |
||||
"bootstrap.ml" |
||||
], |
||||
[ |
||||
"./boot.exe", |
||||
"--release", |
||||
"-j", |
||||
"4" |
||||
] |
||||
] |
||||
} |
@ -0,0 +1,34 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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