diff options
author | Martin Weinelt <mweinelt@users.noreply.github.com> | 2021-06-22 23:55:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-22 23:55:21 +0200 |
commit | b607aadaac36e77ff58303d199ae4f77227e41f3 (patch) | |
tree | 0ce5a76872bea27ed4a91b272b9972e97c5a2954 /doc | |
parent | 32e718341035ef748812b641d6f3e75e216b5d7f (diff) | |
parent | 465e5fc8cd73eca36e6bc4a320fdac8bd50bb160 (diff) |
Merge branch 'master' into staging-next
Diffstat (limited to 'doc')
-rw-r--r-- | doc/functions/generators.section.md | 2 | ||||
-rw-r--r-- | doc/languages-frameworks/ocaml.section.md | 73 |
2 files changed, 49 insertions, 26 deletions
diff --git a/doc/functions/generators.section.md b/doc/functions/generators.section.md index bb8426d8087bc..d54e5027c799c 100644 --- a/doc/functions/generators.section.md +++ b/doc/functions/generators.section.md @@ -49,7 +49,7 @@ str\:ange:"very::strange" merge:"diff3" ``` -::: note +::: {.note} Nix store paths can be converted to strings by enclosing a derivation attribute like so: `"${drv}"`. ::: diff --git a/doc/languages-frameworks/ocaml.section.md b/doc/languages-frameworks/ocaml.section.md index 9b92a80f47123..5ffc23173d6d1 100644 --- a/doc/languages-frameworks/ocaml.section.md +++ b/doc/languages-frameworks/ocaml.section.md @@ -4,60 +4,83 @@ OCaml libraries should be installed in `$(out)/lib/ocaml/${ocaml.version}/site-l Given that most of the OCaml ecosystem is now built with dune, nixpkgs includes a convenience build support function called `buildDunePackage` that will build an OCaml package using dune, OCaml and findlib and any additional dependencies provided as `buildInputs` or `propagatedBuildInputs`. -Here is a simple package example. It defines an (optional) attribute `minimumOCamlVersion` that will be used to throw a descriptive evaluation error if building with an older OCaml is attempted. It uses the `fetchFromGitHub` fetcher to get its source. It sets the `doCheck` (optional) attribute to `true` which means that tests will be run with `dune runtest -p angstrom` after the build (`dune build -p angstrom`) is complete. It uses `alcotest` as a build input (because it is needed to run the tests) and `bigstringaf` and `result` as propagated build inputs (thus they will also be available to libraries depending on this library). The library will be installed using the `angstrom.install` file that dune generates. +Here is a simple package example. + +- It defines an (optional) attribute `minimalOCamlVersion` that will be used to + throw a descriptive evaluation error if building with an older OCaml is + attempted. + +- It uses the `fetchFromGitHub` fetcher to get its source. + +- `useDune2 = true` ensures that the latest version of Dune is used for the + build (this may become the default value in a future release). + +- It sets the optional `doCheck` attribute such that tests will be run with + `dune runtest -p angstrom` after the build (`dune build -p angstrom`) is + complete, but only if the Ocaml version is at at least `"4.05"`. + +- It uses the package `ocaml-syntax-shims` as a build input, `alcotest` and + `ppx_let` as check inputs (because they are needed to run the tests), and + `bigstringaf` and `result` as propagated build inputs (thus they will also be + available to libraries depending on this library). + +- The library will be installed using the `angstrom.install` file that dune + generates. ```nix -{ lib -, fetchFromGitHub -, buildDunePackage -, alcotest -, result -, bigstringaf -}: +{ lib, + fetchFromGitHub, + buildDunePackage, + ocaml, + ocaml-syntax-shims, + alcotest, + result, + bigstringaf, + ppx_let }: buildDunePackage rec { pname = "angstrom"; - version = "0.10.0"; + version = "0.15.0"; + useDune2 = true; - minimumOCamlVersion = "4.03"; + minimalOCamlVersion = "4.04"; src = fetchFromGitHub { owner = "inhabitedtype"; repo = pname; rev = version; - sha256 = "0lh6024yf9ds0nh9i93r9m6p5psi8nvrqxl5x7jwl13zb0r9xfpw"; + sha256 = "1hmrkdcdlkwy7rxhngf3cv3sa61cznnd9p5lmqhx20664gx2ibrh"; }; - buildInputs = [ alcotest ]; + checkInputs = [ alcotest ppx_let ]; + buildInputs = [ ocaml-syntax-shims ]; propagatedBuildInputs = [ bigstringaf result ]; - doCheck = true; + doCheck = lib.versionAtLeast ocaml.version "4.05"; - meta = with lib; { + meta = { homepage = "https://github.com/inhabitedtype/angstrom"; description = "OCaml parser combinators built for speed and memory efficiency"; - license = licenses.bsd3; - maintainers = with maintainers; [ sternenseemann ]; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ sternenseemann ]; }; -} ``` Here is a second example, this time using a source archive generated with `dune-release`. It is a good idea to use this archive when it is available as it will usually contain substituted variables such as a `%%VERSION%%` field. This library does not depend on any other OCaml library and no tests are run after building it. ```nix -{ lib -, fetchurl -, buildDunePackage -}: +{ lib, fetchurl, buildDunePackage }: buildDunePackage rec { pname = "wtf8"; - version = "1.0.1"; + version = "1.0.2"; + + useDune2 = true; - minimumOCamlVersion = "4.01"; + minimalOCamlVersion = "4.02"; src = fetchurl { - url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-${version}.tbz"; - sha256 = "1msg3vycd3k8qqj61sc23qks541cxpb97vrnrvrhjnqxsqnh6ygq"; + url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-v${version}.tbz"; + sha256 = "09ygcxxd5warkdzz17rgpidrd0pg14cy2svvnvy1hna080lzg7vp"; }; meta = with lib; { |