From 78ed3afa3b29ae80768950593b0a030b0bc93dcc Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Mon, 10 Nov 2025 17:48:54 +1100 Subject: [PATCH 1/4] Add dune pkg binary release workflow When a tag is pushed, a github action will build the project using dune package management and release the binaries under the tag on github. Signed-off-by: Stephen Sherratt --- .github/workflows/build-and-cache-deps.yml | 40 ++ .github/workflows/release.yml | 79 +++ bin/dune | 5 + dune.lock/alcotest.1.9.1.pkg | 19 + dune.lock/angstrom.0.16.1.pkg | 17 + dune.lock/asn1-combinators.0.3.2.pkg | 19 + dune.lock/astring.0.8.5.pkg | 15 + dune.lock/base-domains.base.pkg | 4 + dune.lock/base-threads.base.pkg | 1 + dune.lock/base-unix.base.pkg | 1 + dune.lock/base.v0.17.3.pkg | 13 + dune.lock/base64.3.5.2.pkg | 19 + dune.lock/bigstringaf.0.10.0.pkg | 17 + dune.lock/bos.0.2.1.pkg | 15 + dune.lock/checkseum.0.5.2.pkg | 15 + dune.lock/cmdliner.2.0.0.pkg | 32 + dune.lock/cohttp-eio.6.1.1.pkg | 19 + dune.lock/cohttp.6.1.1.pkg | 29 + dune.lock/conf-gmp-powm-sec.4.pkg | 20 + dune.lock/conf-gmp.5.pkg | 72 +++ dune.lock/conf-pkg-config.4.pkg | 87 +++ dune.lock/cppo.1.8.0.pkg | 17 + dune.lock/csexp.1.5.2.pkg | 19 + dune.lock/cstruct.6.2.0.pkg | 19 + dune.lock/decompress.1.5.3.pkg | 15 + dune.lock/digestif.1.3.0.pkg | 15 + dune.lock/domain-local-await.1.0.1.pkg | 19 + dune.lock/domain-name.0.5.0.pkg | 19 + dune.lock/dune-build-info.3.20.2.pkg | 21 + dune.lock/dune-configurator.3.20.2.pkg | 21 + dune.lock/duration.0.2.1.pkg | 19 + dune.lock/eio.1.3.pkg | 26 + dune.lock/eio_linux.1.3.pkg | 32 + dune.lock/eio_main.1.3.pkg | 25 + dune.lock/eio_posix.1.3.pkg | 16 + dune.lock/eqaf.0.10.pkg | 18 + dune.lock/fmt.0.11.0.pkg | 25 + dune.lock/fpath.0.7.3.pkg | 20 + dune.lock/gmap.0.3.0.pkg | 19 + dune.lock/hmap.0.8.1.pkg | 15 + dune.lock/http.6.1.1.pkg | 19 + dune.lock/iomux.0.4.pkg | 19 + dune.lock/ipaddr.5.6.1.pkg | 19 + dune.lock/kdf.1.0.0.pkg | 19 + dune.lock/lock.dune | 23 + dune.lock/logs.0.10.0.pkg | 31 + dune.lock/lwt-dllist.1.1.0.pkg | 19 + dune.lock/macaddr.5.6.1.pkg | 19 + dune.lock/mirage-crypto-ec.1.2.0.pkg | 19 + dune.lock/mirage-crypto-pk.1.2.0.pkg | 26 + dune.lock/mirage-crypto-rng-eio.1.2.0.pkg | 19 + dune.lock/mirage-crypto-rng.1.2.0.pkg | 19 + dune.lock/mirage-crypto.1.2.0.pkg | 19 + dune.lock/mtime.2.1.0.pkg | 15 + dune.lock/ocaml-base-compiler.5.4.0.pkg | 4 + dune.lock/ocaml-compiler-libs.v0.17.0.pkg | 14 + dune.lock/ocaml-compiler.5.4.0.pkg | 560 ++++++++++++++++++ dune.lock/ocaml-config.3.pkg | 22 + dune.lock/ocaml-syntax-shims.1.0.0.pkg | 19 + dune.lock/ocaml.5.4.0.pkg | 24 + dune.lock/ocaml_intrinsics_kernel.v0.17.1.pkg | 14 + dune.lock/ocamlbuild.0.16.1+dune.pkg | 28 + dune.lock/ocamlfind.1.9.8+dune.pkg | 46 ++ dune.lock/ohex.0.2.0.pkg | 18 + dune.lock/optint.0.3.0.pkg | 15 + dune.lock/ppx_derivers.1.2.1.pkg | 14 + dune.lock/ppx_deriving.6.1.1.pkg | 18 + dune.lock/ppx_deriving_yojson.3.10.0.pkg | 19 + dune.lock/ppx_sexp_conv.v0.17.1.pkg | 14 + dune.lock/ppxlib.0.37.0.pkg | 19 + dune.lock/ppxlib_jane.v0.17.4.pkg | 14 + dune.lock/printbox-text.0.12.pkg | 19 + dune.lock/printbox.0.12.pkg | 19 + dune.lock/progress.0.5.0.pkg | 19 + dune.lock/psq.0.2.1.pkg | 18 + dune.lock/ptime.1.2.0.pkg | 15 + dune.lock/re.1.14.0.pkg | 17 + dune.lock/rresult.0.7.0.pkg | 15 + dune.lock/seq.base.pkg | 18 + dune.lock/sexplib0.v0.17.0.pkg | 14 + dune.lock/stdlib-shims.0.3.0.pkg | 15 + dune.lock/stringext.1.6.0.pkg | 19 + dune.lock/tar-eio.3.3.0.pkg | 34 ++ dune.lock/tar.3.3.0.pkg | 34 ++ dune.lock/terminal.0.5.0.pkg | 19 + dune.lock/thread-table.1.0.0.pkg | 19 + dune.lock/tls-eio.2.0.3.pkg | 19 + dune.lock/tls.2.0.3.pkg | 33 ++ dune.lock/topkg.1.1.1.pkg | 23 + dune.lock/uri-sexp.4.4.0.pkg | 19 + dune.lock/uri.4.4.0.pkg | 19 + dune.lock/uring.2.7.0.pkg | 40 ++ dune.lock/uucp.17.0.0.pkg | 25 + dune.lock/uutf.1.0.4.pkg | 23 + dune.lock/x509.1.0.6.pkg | 34 ++ dune.lock/xdg.3.20.2.pkg | 21 + dune.lock/yojson.3.0.0.pkg | 19 + dune.lock/zarith.1.14.pkg | 18 + scripts/build-static.dockerfile | 31 + 99 files changed, 2683 insertions(+) create mode 100644 .github/workflows/build-and-cache-deps.yml create mode 100644 .github/workflows/release.yml create mode 100644 dune.lock/alcotest.1.9.1.pkg create mode 100644 dune.lock/angstrom.0.16.1.pkg create mode 100644 dune.lock/asn1-combinators.0.3.2.pkg create mode 100644 dune.lock/astring.0.8.5.pkg create mode 100644 dune.lock/base-domains.base.pkg create mode 100644 dune.lock/base-threads.base.pkg create mode 100644 dune.lock/base-unix.base.pkg create mode 100644 dune.lock/base.v0.17.3.pkg create mode 100644 dune.lock/base64.3.5.2.pkg create mode 100644 dune.lock/bigstringaf.0.10.0.pkg create mode 100644 dune.lock/bos.0.2.1.pkg create mode 100644 dune.lock/checkseum.0.5.2.pkg create mode 100644 dune.lock/cmdliner.2.0.0.pkg create mode 100644 dune.lock/cohttp-eio.6.1.1.pkg create mode 100644 dune.lock/cohttp.6.1.1.pkg create mode 100644 dune.lock/conf-gmp-powm-sec.4.pkg create mode 100644 dune.lock/conf-gmp.5.pkg create mode 100644 dune.lock/conf-pkg-config.4.pkg create mode 100644 dune.lock/cppo.1.8.0.pkg create mode 100644 dune.lock/csexp.1.5.2.pkg create mode 100644 dune.lock/cstruct.6.2.0.pkg create mode 100644 dune.lock/decompress.1.5.3.pkg create mode 100644 dune.lock/digestif.1.3.0.pkg create mode 100644 dune.lock/domain-local-await.1.0.1.pkg create mode 100644 dune.lock/domain-name.0.5.0.pkg create mode 100644 dune.lock/dune-build-info.3.20.2.pkg create mode 100644 dune.lock/dune-configurator.3.20.2.pkg create mode 100644 dune.lock/duration.0.2.1.pkg create mode 100644 dune.lock/eio.1.3.pkg create mode 100644 dune.lock/eio_linux.1.3.pkg create mode 100644 dune.lock/eio_main.1.3.pkg create mode 100644 dune.lock/eio_posix.1.3.pkg create mode 100644 dune.lock/eqaf.0.10.pkg create mode 100644 dune.lock/fmt.0.11.0.pkg create mode 100644 dune.lock/fpath.0.7.3.pkg create mode 100644 dune.lock/gmap.0.3.0.pkg create mode 100644 dune.lock/hmap.0.8.1.pkg create mode 100644 dune.lock/http.6.1.1.pkg create mode 100644 dune.lock/iomux.0.4.pkg create mode 100644 dune.lock/ipaddr.5.6.1.pkg create mode 100644 dune.lock/kdf.1.0.0.pkg create mode 100644 dune.lock/lock.dune create mode 100644 dune.lock/logs.0.10.0.pkg create mode 100644 dune.lock/lwt-dllist.1.1.0.pkg create mode 100644 dune.lock/macaddr.5.6.1.pkg create mode 100644 dune.lock/mirage-crypto-ec.1.2.0.pkg create mode 100644 dune.lock/mirage-crypto-pk.1.2.0.pkg create mode 100644 dune.lock/mirage-crypto-rng-eio.1.2.0.pkg create mode 100644 dune.lock/mirage-crypto-rng.1.2.0.pkg create mode 100644 dune.lock/mirage-crypto.1.2.0.pkg create mode 100644 dune.lock/mtime.2.1.0.pkg create mode 100644 dune.lock/ocaml-base-compiler.5.4.0.pkg create mode 100644 dune.lock/ocaml-compiler-libs.v0.17.0.pkg create mode 100644 dune.lock/ocaml-compiler.5.4.0.pkg create mode 100644 dune.lock/ocaml-config.3.pkg create mode 100644 dune.lock/ocaml-syntax-shims.1.0.0.pkg create mode 100644 dune.lock/ocaml.5.4.0.pkg create mode 100644 dune.lock/ocaml_intrinsics_kernel.v0.17.1.pkg create mode 100644 dune.lock/ocamlbuild.0.16.1+dune.pkg create mode 100644 dune.lock/ocamlfind.1.9.8+dune.pkg create mode 100644 dune.lock/ohex.0.2.0.pkg create mode 100644 dune.lock/optint.0.3.0.pkg create mode 100644 dune.lock/ppx_derivers.1.2.1.pkg create mode 100644 dune.lock/ppx_deriving.6.1.1.pkg create mode 100644 dune.lock/ppx_deriving_yojson.3.10.0.pkg create mode 100644 dune.lock/ppx_sexp_conv.v0.17.1.pkg create mode 100644 dune.lock/ppxlib.0.37.0.pkg create mode 100644 dune.lock/ppxlib_jane.v0.17.4.pkg create mode 100644 dune.lock/printbox-text.0.12.pkg create mode 100644 dune.lock/printbox.0.12.pkg create mode 100644 dune.lock/progress.0.5.0.pkg create mode 100644 dune.lock/psq.0.2.1.pkg create mode 100644 dune.lock/ptime.1.2.0.pkg create mode 100644 dune.lock/re.1.14.0.pkg create mode 100644 dune.lock/rresult.0.7.0.pkg create mode 100644 dune.lock/seq.base.pkg create mode 100644 dune.lock/sexplib0.v0.17.0.pkg create mode 100644 dune.lock/stdlib-shims.0.3.0.pkg create mode 100644 dune.lock/stringext.1.6.0.pkg create mode 100644 dune.lock/tar-eio.3.3.0.pkg create mode 100644 dune.lock/tar.3.3.0.pkg create mode 100644 dune.lock/terminal.0.5.0.pkg create mode 100644 dune.lock/thread-table.1.0.0.pkg create mode 100644 dune.lock/tls-eio.2.0.3.pkg create mode 100644 dune.lock/tls.2.0.3.pkg create mode 100644 dune.lock/topkg.1.1.1.pkg create mode 100644 dune.lock/uri-sexp.4.4.0.pkg create mode 100644 dune.lock/uri.4.4.0.pkg create mode 100644 dune.lock/uring.2.7.0.pkg create mode 100644 dune.lock/uucp.17.0.0.pkg create mode 100644 dune.lock/uutf.1.0.4.pkg create mode 100644 dune.lock/x509.1.0.6.pkg create mode 100644 dune.lock/xdg.3.20.2.pkg create mode 100644 dune.lock/yojson.3.0.0.pkg create mode 100644 dune.lock/zarith.1.14.pkg create mode 100644 scripts/build-static.dockerfile diff --git a/.github/workflows/build-and-cache-deps.yml b/.github/workflows/build-and-cache-deps.yml new file mode 100644 index 0000000..33a6b89 --- /dev/null +++ b/.github/workflows/build-and-cache-deps.yml @@ -0,0 +1,40 @@ +# The actions/cache github action allows builds of tags to use artifacts cached +# by builds of the default branch, but doesn't allow builds of tags to use +# artifacts cached by other tags. Thus to make the dependencies of the project +# available to the "release" workflow, they are built and cached by this +# workflow. + +name: Build and Cache Dependencies + +on: + push: + branches: + - 'main' + +jobs: + release-unix: + name: Build and cache deps for ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: macos-15-intel + - os: macos-15 + - os: ubuntu-latest + steps: + + - uses: actions/checkout@v4 + + - uses: ocaml-dune/setup-dune@v0 + + - name: Cache build artifacts + id: artifact-cache + uses: actions/cache@v4 + with: + path: | + _build + ~/.cache/dune + key: ${{ matrix.os }}-artifacts-${{ hashFiles('dune.lock') }} + + - name: Build the project + run: dune build @install --release --only-packages container-image diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..5a5d72a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,79 @@ +name: release + +on: + push: + tags: + - '*' + +jobs: + release-unix: + name: Release for ${{ matrix.name }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: macos-15-intel + name: x86_64-macos + - os: macos-15 + name: aarch64-macos + - os: ubuntu-latest + name: x86_64-linux + steps: + + - uses: actions/checkout@v6 + + - uses: ocaml-dune/setup-dune@v0 + + - name: Load dependencies from the cache + id: artifact-cache + uses: actions/cache/restore@v4 + with: + path: | + _build + ~/.cache/dune + key: ${{ matrix.os }}-artifacts-${{ hashFiles('dune.lock') }} + + - name: Build the project + run: dune build @install --only-packages container-image + + - run: echo OUT_NAME=container-image-${{ github.ref_name }}-${{ matrix.name }} >> $GITHUB_ENV + + - name: Release a tarball of build outputs + run: | + mkdir -p "$OUT_NAME" + cp -rlf _build/install/default/* "$OUT_NAME" + tar czf "$OUT_NAME.tar.gz" "$OUT_NAME" + + - name: Upload assets + uses: ncipollo/release-action@v1 + with: + allowUpdates: true + artifacts: "*.tar.gz" + + + release-x86_64-linux-musl-static: + name: Build for x86_64-linux-musl-static + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v6 + + - run: echo OUT_NAME=container-image-${{ github.ref_name }}-x86_64-linux-statically-linked >> $GITHUB_ENV + + - run: mkdir -p $OUT_NAME + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - run: docker buildx build --output type=local,dest=$OUT_NAME -f scripts/build-static.dockerfile . + + - name: Test we can execute the exe on the host as a basic sanity check + run: $OUT_NAME/bin/image --help + + - name: Make a tarball of build outputs + run: tar czf "$OUT_NAME.tar.gz" "$OUT_NAME" + + - name: Upload assets + uses: ncipollo/release-action@v1 + with: + allowUpdates: true + artifacts: "*.tar.gz" diff --git a/bin/dune b/bin/dune index 0fdc52e..eb5033f 100644 --- a/bin/dune +++ b/bin/dune @@ -15,3 +15,8 @@ fmt.cli logs.fmt fmt.tty)) + +(env + (static + (link_flags + (:standard -cclib -static)))) diff --git a/dune.lock/alcotest.1.9.1.pkg b/dune.lock/alcotest.1.9.1.pkg new file mode 100644 index 0000000..fe763a9 --- /dev/null +++ b/dune.lock/alcotest.1.9.1.pkg @@ -0,0 +1,19 @@ +(version 1.9.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml fmt astring cmdliner re stdlib-shims uutf ocaml-syntax-shims))) + +(source + (fetch + (url + https://github.com/mirage/alcotest/releases/download/1.9.1/alcotest-1.9.1.tbz) + (checksum + sha256=1e29c3b41d4329062105b723dfda3aff86b8cef5e7c7500d0e491fc5fd78e482))) diff --git a/dune.lock/angstrom.0.16.1.pkg b/dune.lock/angstrom.0.16.1.pkg new file mode 100644 index 0000000..c78a852 --- /dev/null +++ b/dune.lock/angstrom.0.16.1.pkg @@ -0,0 +1,17 @@ +(version 0.16.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune bigstringaf ocaml-syntax-shims))) + +(source + (fetch + (url https://github.com/inhabitedtype/angstrom/archive/0.16.1.tar.gz) + (checksum md5=a9e096b4b2b8e4e3bb17d472bbccaad0))) diff --git a/dune.lock/asn1-combinators.0.3.2.pkg b/dune.lock/asn1-combinators.0.3.2.pkg new file mode 100644 index 0000000..dde2b03 --- /dev/null +++ b/dune.lock/asn1-combinators.0.3.2.pkg @@ -0,0 +1,19 @@ +(version 0.3.2) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune ptime))) + +(source + (fetch + (url + https://github.com/mirleft/ocaml-asn1-combinators/releases/download/v0.3.2/asn1-combinators-0.3.2.tbz) + (checksum + sha256=2b26985f6e2722073dcd9f84355bd6757e12643b5a48e30b3c07ff7cfb0d8a7f))) diff --git a/dune.lock/astring.0.8.5.pkg b/dune.lock/astring.0.8.5.pkg new file mode 100644 index 0000000..474a6fb --- /dev/null +++ b/dune.lock/astring.0.8.5.pkg @@ -0,0 +1,15 @@ +(version 0.8.5) + +(build + (all_platforms + ((action (run ocaml pkg/pkg.ml build --pinned %{pkg-self:pinned}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg))) + +(source + (fetch + (url https://erratique.ch/software/astring/releases/astring-0.8.5.tbz) + (checksum + sha256=865692630c07c3ab87c66cdfc2734c0fdfc9c34a57f8e89ffec7c7d15e7a70fa))) diff --git a/dune.lock/base-domains.base.pkg b/dune.lock/base-domains.base.pkg new file mode 100644 index 0000000..9a7dc6d --- /dev/null +++ b/dune.lock/base-domains.base.pkg @@ -0,0 +1,4 @@ +(version base) + +(depends + (all_platforms (ocaml))) diff --git a/dune.lock/base-threads.base.pkg b/dune.lock/base-threads.base.pkg new file mode 100644 index 0000000..c9c9282 --- /dev/null +++ b/dune.lock/base-threads.base.pkg @@ -0,0 +1 @@ +(version base) diff --git a/dune.lock/base-unix.base.pkg b/dune.lock/base-unix.base.pkg new file mode 100644 index 0000000..c9c9282 --- /dev/null +++ b/dune.lock/base-unix.base.pkg @@ -0,0 +1 @@ +(version base) diff --git a/dune.lock/base.v0.17.3.pkg b/dune.lock/base.v0.17.3.pkg new file mode 100644 index 0000000..82973a2 --- /dev/null +++ b/dune.lock/base.v0.17.3.pkg @@ -0,0 +1,13 @@ +(version v0.17.3) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml ocaml_intrinsics_kernel sexplib0 dune dune-configurator))) + +(source + (fetch + (url https://github.com/janestreet/base/archive/refs/tags/v0.17.3.tar.gz) + (checksum md5=2100b0ed13fecf43be86ed45c5b2cc4d))) diff --git a/dune.lock/base64.3.5.2.pkg b/dune.lock/base64.3.5.2.pkg new file mode 100644 index 0000000..62c5501 --- /dev/null +++ b/dune.lock/base64.3.5.2.pkg @@ -0,0 +1,19 @@ +(version 3.5.2) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-base64/releases/download/v3.5.2/base64-3.5.2.tbz) + (checksum + sha256=b3f5ce301aa72c7032ef90be2332d72ff3962922c00ee2aec6bcade187a2f59b))) diff --git a/dune.lock/bigstringaf.0.10.0.pkg b/dune.lock/bigstringaf.0.10.0.pkg new file mode 100644 index 0000000..5b47066 --- /dev/null +++ b/dune.lock/bigstringaf.0.10.0.pkg @@ -0,0 +1,17 @@ +(version 0.10.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune dune-configurator ocaml))) + +(source + (fetch + (url https://github.com/inhabitedtype/bigstringaf/archive/0.10.0.tar.gz) + (checksum md5=be0a44416840852777651150757a0a3b))) diff --git a/dune.lock/bos.0.2.1.pkg b/dune.lock/bos.0.2.1.pkg new file mode 100644 index 0000000..eda472b --- /dev/null +++ b/dune.lock/bos.0.2.1.pkg @@ -0,0 +1,15 @@ +(version 0.2.1) + +(build + (all_platforms + ((action (run ocaml pkg/pkg.ml build --dev-pkg %{pkg-self:dev}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg base-unix rresult astring fpath fmt logs))) + +(source + (fetch + (url https://erratique.ch/software/bos/releases/bos-0.2.1.tbz) + (checksum + sha512=8daeb8a4c2dd1f2460f6274ada19f4f1b6ebe875ff83a938c93418ce0e6bdb74b8afc5c9a7d410c1c9df2dad030e4fa276b6ed2da580639484e8b5bc92610b1d))) diff --git a/dune.lock/checkseum.0.5.2.pkg b/dune.lock/checkseum.0.5.2.pkg new file mode 100644 index 0000000..0edcdf4 --- /dev/null +++ b/dune.lock/checkseum.0.5.2.pkg @@ -0,0 +1,15 @@ +(version 0.5.2) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune dune-configurator optint))) + +(source + (fetch + (url + https://github.com/mirage/checkseum/releases/download/v0.5.2/checkseum-0.5.2.tbz) + (checksum + sha256=9e5e4fd4405cb4a8b4df00877543251833e08a6499ef42ccb8dba582df0dafc8))) diff --git a/dune.lock/cmdliner.2.0.0.pkg b/dune.lock/cmdliner.2.0.0.pkg new file mode 100644 index 0000000..92ae65b --- /dev/null +++ b/dune.lock/cmdliner.2.0.0.pkg @@ -0,0 +1,32 @@ +(version 2.0.0) + +(install + (all_platforms + (progn + (run + %{make} + install + BINDIR=%{pkg-self:bin} + LIBDIR=%{pkg-self:lib} + DOCDIR=%{pkg-self:doc} + SHAREDIR=%{share} + MANDIR=%{man}) + (run + %{make} + install-doc + LIBDIR=%{pkg-self:lib} + DOCDIR=%{pkg-self:doc} + SHAREDIR=%{share} + MANDIR=%{man})))) + +(build + (all_platforms ((action (run %{make} all PREFIX=%{prefix}))))) + +(depends + (all_platforms (ocaml))) + +(source + (fetch + (url https://erratique.ch/software/cmdliner/releases/cmdliner-2.0.0.tbz) + (checksum + sha512=a7bd4eeb0cef7c08bca73b0077a65f748c19a230544133b39fc3360feb2cf0af08416a8b84031c94a2f4a007d5920a4db1368d87b9eeca561671828e2dad2885))) diff --git a/dune.lock/cohttp-eio.6.1.1.pkg b/dune.lock/cohttp-eio.6.1.1.pkg new file mode 100644 index 0000000..a7f79eb --- /dev/null +++ b/dune.lock/cohttp-eio.6.1.1.pkg @@ -0,0 +1,19 @@ +(version 6.1.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune base-domains cohttp eio logs uri fmt ptime http))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-cohttp/releases/download/v6.1.1/cohttp-6.1.1.tbz) + (checksum + sha256=6b420c56203b3a0b515964f036bcea0fb9a362876b5791cd7ff50e12366c489c))) diff --git a/dune.lock/cohttp.6.1.1.pkg b/dune.lock/cohttp.6.1.1.pkg new file mode 100644 index 0000000..863f498 --- /dev/null +++ b/dune.lock/cohttp.6.1.1.pkg @@ -0,0 +1,29 @@ +(version 6.1.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune + http + ocaml + re + uri + uri-sexp + logs + sexplib0 + ppx_sexp_conv + stringext + base64))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-cohttp/releases/download/v6.1.1/cohttp-6.1.1.tbz) + (checksum + sha256=6b420c56203b3a0b515964f036bcea0fb9a362876b5791cd7ff50e12366c489c))) diff --git a/dune.lock/conf-gmp-powm-sec.4.pkg b/dune.lock/conf-gmp-powm-sec.4.pkg new file mode 100644 index 0000000..b00a097 --- /dev/null +++ b/dune.lock/conf-gmp-powm-sec.4.pkg @@ -0,0 +1,20 @@ +(version 4) + +(build + (all_platforms + ((action + (run + sh + -c + "pkg-config --print-errors --exists gmp || cc -c $CFLAGS -I/usr/local/include test.c"))))) + +(depends + (all_platforms (conf-gmp))) + +(extra_sources + (test.c + (fetch + (url + https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/conf-gmp-powm-sec/test.c.3) + (checksum + sha256=388b3879530257a7e6e59b68208ee2a52de7be30e40eb4d3a54419708fdad490)))) diff --git a/dune.lock/conf-gmp.5.pkg b/dune.lock/conf-gmp.5.pkg new file mode 100644 index 0000000..a44b0e1 --- /dev/null +++ b/dune.lock/conf-gmp.5.pkg @@ -0,0 +1,72 @@ +(version 5) + +(build + (all_platforms + ((action + (run + sh + -c + "pkg-config --print-errors --exists gmp || cc -c $CFLAGS -I/usr/local/include test.c"))))) + +(depends + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + ()) + ((((arch x86_64) + (os macos)) + ((arch arm64) + (os macos))) + (conf-pkg-config)))) + +(depexts + ((libgmp-dev) + (= %{os_family} debian)) + ((libgmp-dev) + (= %{os_family} ubuntu)) + ((gmp) + (and_absorb_undefined_var + (= %{os} macos) + (= %{os_distribution} homebrew))) + ((gmp) + (and_absorb_undefined_var + (= %{os_distribution} macports) + (= %{os} macos))) + ((gmp-devel gmp) + (= %{os_distribution} centos)) + ((gmp-devel gmp) + (or_absorb_undefined_var + (= %{os_family} fedora) + (= %{os_family} fedora))) + ((gmp-devel gmp) + (= %{os_distribution} ol)) + ((gmp) + (= %{os} openbsd)) + ((gmp) + (= %{os} freebsd)) + ((gmp) + (= %{os_distribution} arch)) + ((gmp-dev) + (= %{os_distribution} alpine)) + ((gmp-devel) + (or_absorb_undefined_var + (= %{os_family} suse) + (= %{os_family} opensuse))) + ((gmp) + (and_absorb_undefined_var + (= %{os} win32) + (= %{os_distribution} cygwinports))) + ((gmp) + (= %{os_distribution} nixos)) + ((libgmp-devel) + (= %{os_family} altlinux))) + +(extra_sources + (test.c + (fetch + (url + https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/conf-gmp/test.c.4) + (checksum + sha256=54a30735f1f271a2531526747e75716f4490dd7bc1546efd6498ccfe3cc4d6fb)))) diff --git a/dune.lock/conf-pkg-config.4.pkg b/dune.lock/conf-pkg-config.4.pkg new file mode 100644 index 0000000..57097cb --- /dev/null +++ b/dune.lock/conf-pkg-config.4.pkg @@ -0,0 +1,87 @@ +(version 4) + +(build + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + ((action + (run pkg-config --help)))) + ((((arch x86_64) + (os macos)) + ((arch arm64) + (os macos))) + ((action + (progn + (when + (and_absorb_undefined_var + true + (not + (and_absorb_undefined_var + true + (= %{os_distribution} homebrew)))) + (run pkg-config --help)) + (when + (or_absorb_undefined_var + false + (and_absorb_undefined_var + true + (= %{os_distribution} homebrew))) + (run pkgconf --version)))))))) + +(depexts + ((pkg-config) + (or_absorb_undefined_var + (= %{os_family} debian) + (= %{os_family} ubuntu))) + ((pkgconf) + (= %{os_distribution} arch)) + ((pkgconf-pkg-config) + (= %{os_family} fedora)) + ((pkgconfig) + (and_absorb_undefined_var + (= %{os_distribution} centos) + (<= %{os_version} 7))) + ((pkgconf-pkg-config) + (= %{os_distribution} mageia)) + ((pkgconfig) + (and_absorb_undefined_var + (= %{os_distribution} rhel) + (<= %{os_version} 7))) + ((pkgconfig) + (and_absorb_undefined_var + (= %{os_distribution} ol) + (<= %{os_version} 7))) + ((pkgconf) + (= %{os_distribution} alpine)) + ((pkg-config) + (= %{os_distribution} nixos)) + ((pkgconf) + (and_absorb_undefined_var + (= %{os} macos) + (= %{os_distribution} homebrew))) + ((pkgconfig) + (and_absorb_undefined_var + (= %{os} macos) + (= %{os_distribution} macports))) + ((pkgconf) + (= %{os} freebsd)) + ((pkgconf-pkg-config) + (and_absorb_undefined_var + (= %{os_distribution} rhel) + (>= %{os_version} 8))) + ((pkgconf-pkg-config) + (and_absorb_undefined_var + (= %{os_distribution} centos) + (>= %{os_version} 8))) + ((pkgconf-pkg-config) + (and_absorb_undefined_var + (= %{os_distribution} ol) + (>= %{os_version} 8))) + ((system:pkgconf) + (and_absorb_undefined_var + (= %{os} win32) + (= %{os_distribution} cygwinports))) + ((pkgconf) + (= %{os_distribution} cygwin))) diff --git a/dune.lock/cppo.1.8.0.pkg b/dune.lock/cppo.1.8.0.pkg new file mode 100644 index 0000000..6be6f5c --- /dev/null +++ b/dune.lock/cppo.1.8.0.pkg @@ -0,0 +1,17 @@ +(version 1.8.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (ocaml dune base-unix))) + +(source + (fetch + (url https://github.com/ocaml-community/cppo/archive/v1.8.0.tar.gz) + (checksum md5=a197cb393b84f6b30e0ff55080ac429b))) diff --git a/dune.lock/csexp.1.5.2.pkg b/dune.lock/csexp.1.5.2.pkg new file mode 100644 index 0000000..d0f544b --- /dev/null +++ b/dune.lock/csexp.1.5.2.pkg @@ -0,0 +1,19 @@ +(version 1.5.2) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml-dune/csexp/releases/download/1.5.2/csexp-1.5.2.tbz) + (checksum + sha256=1a14dd04bb4379a41990248550628c77913a9c07f3c35c1370b6960e697787ff))) diff --git a/dune.lock/cstruct.6.2.0.pkg b/dune.lock/cstruct.6.2.0.pkg new file mode 100644 index 0000000..fa88595 --- /dev/null +++ b/dune.lock/cstruct.6.2.0.pkg @@ -0,0 +1,19 @@ +(version 6.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune fmt))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-cstruct/releases/download/v6.2.0/cstruct-6.2.0.tbz) + (checksum + sha256=9a78073392580e8349148fa3ab4b1b2e989dc9d30d07401b04c96b7c60f03e62))) diff --git a/dune.lock/decompress.1.5.3.pkg b/dune.lock/decompress.1.5.3.pkg new file mode 100644 index 0000000..ff1115a --- /dev/null +++ b/dune.lock/decompress.1.5.3.pkg @@ -0,0 +1,15 @@ +(version 1.5.3) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune cmdliner optint checkseum))) + +(source + (fetch + (url + https://github.com/mirage/decompress/releases/download/v1.5.3/decompress-1.5.3.tbz) + (checksum + sha256=f91e6978beff3fcb61440d32f7c99c99f1e8654b4fb18408741d36035373ac60))) diff --git a/dune.lock/digestif.1.3.0.pkg b/dune.lock/digestif.1.3.0.pkg new file mode 100644 index 0000000..bda1e56 --- /dev/null +++ b/dune.lock/digestif.1.3.0.pkg @@ -0,0 +1,15 @@ +(version 1.3.0) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune eqaf))) + +(source + (fetch + (url + https://github.com/mirage/digestif/releases/download/v1.3.0/digestif-1.3.0.tbz) + (checksum + sha256=9a6cdcb332539c87f4723fc3bd73626b2675a7b1161fdf0fed309186ce18f427))) diff --git a/dune.lock/domain-local-await.1.0.1.pkg b/dune.lock/domain-local-await.1.0.1.pkg new file mode 100644 index 0000000..4d663dd --- /dev/null +++ b/dune.lock/domain-local-await.1.0.1.pkg @@ -0,0 +1,19 @@ +(version 1.0.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml thread-table))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/domain-local-await/releases/download/1.0.1/domain-local-await-1.0.1.tbz) + (checksum + sha256=2952113c53cb07e2b054b2dc86ce72939131dab8207c8f3139adb23e64cdfa6f))) diff --git a/dune.lock/domain-name.0.5.0.pkg b/dune.lock/domain-name.0.5.0.pkg new file mode 100644 index 0000000..397e674 --- /dev/null +++ b/dune.lock/domain-name.0.5.0.pkg @@ -0,0 +1,19 @@ +(version 0.5.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/hannesm/domain-name/releases/download/v0.5.0/domain-name-0.5.0.tbz) + (checksum + sha256=9ec7ae2c22772c150b84cfa3f21d9bf25fae14a796f31e20df52d86f46499d89))) diff --git a/dune.lock/dune-build-info.3.20.2.pkg b/dune.lock/dune-build-info.3.20.2.pkg new file mode 100644 index 0000000..0b0092a --- /dev/null +++ b/dune.lock/dune-build-info.3.20.2.pkg @@ -0,0 +1,21 @@ +(version 3.20.2) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run rm -rf vendor/csexp) + (run rm -rf vendor/pp) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml/dune/releases/download/3.20.2/dune-3.20.2.tbz) + (checksum + sha256=b1a86b2d60bdb4a8b9bb6861bdf2f9f28a6e7cb5d833ce81afecceb9ef9ca549))) diff --git a/dune.lock/dune-configurator.3.20.2.pkg b/dune.lock/dune-configurator.3.20.2.pkg new file mode 100644 index 0000000..eb4df70 --- /dev/null +++ b/dune.lock/dune-configurator.3.20.2.pkg @@ -0,0 +1,21 @@ +(version 3.20.2) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run rm -rf vendor/csexp) + (run rm -rf vendor/pp) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml base-unix csexp))) + +(source + (fetch + (url + https://github.com/ocaml/dune/releases/download/3.20.2/dune-3.20.2.tbz) + (checksum + sha256=b1a86b2d60bdb4a8b9bb6861bdf2f9f28a6e7cb5d833ce81afecceb9ef9ca549))) diff --git a/dune.lock/duration.0.2.1.pkg b/dune.lock/duration.0.2.1.pkg new file mode 100644 index 0000000..03a5c40 --- /dev/null +++ b/dune.lock/duration.0.2.1.pkg @@ -0,0 +1,19 @@ +(version 0.2.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/hannesm/duration/releases/download/v0.2.1/duration-0.2.1.tbz) + (checksum + sha256=c738c1f38cfb99820c121cd3ddf819de4b2228f0d50eacbd1cc3ce99e7c71e2b))) diff --git a/dune.lock/eio.1.3.pkg b/dune.lock/eio.1.3.pkg new file mode 100644 index 0000000..713d0ae --- /dev/null +++ b/dune.lock/eio.1.3.pkg @@ -0,0 +1,26 @@ +(version 1.3) + +(build + (all_platforms + ((action (run dune build -p %{pkg-self:name} -j %{jobs} @install))))) + +(depends + (all_platforms + (dune + ocaml + bigstringaf + cstruct + lwt-dllist + optint + psq + fmt + hmap + domain-local-await + mtime))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/eio/releases/download/v1.3/eio-1.3.tbz) + (checksum + sha256=8ed5c13e6689f31c85dca5f12762d84b8cc0042a7b07d3e464df6eb4b72b3dfc))) diff --git a/dune.lock/eio_linux.1.3.pkg b/dune.lock/eio_linux.1.3.pkg new file mode 100644 index 0000000..34cf2e3 --- /dev/null +++ b/dune.lock/eio_linux.1.3.pkg @@ -0,0 +1,32 @@ +(version 1.3) + +(build + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + ((action + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + (dune eio fmt uring)))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/eio/releases/download/v1.3/eio-1.3.tbz) + (checksum + sha256=8ed5c13e6689f31c85dca5f12762d84b8cc0042a7b07d3e464df6eb4b72b3dfc))) + +(enabled_on_platforms + (only + ((arch x86_64) + (os linux)) + ((arch arm64) + (os linux)))) diff --git a/dune.lock/eio_main.1.3.pkg b/dune.lock/eio_main.1.3.pkg new file mode 100644 index 0000000..26d6389 --- /dev/null +++ b/dune.lock/eio_main.1.3.pkg @@ -0,0 +1,25 @@ +(version 1.3) + +(build + (all_platforms + ((action (run dune build -p %{pkg-self:name} -j %{jobs} @install))))) + +(depends + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + (dune eio_linux eio_posix)) + ((((arch x86_64) + (os macos)) + ((arch arm64) + (os macos))) + (dune eio_posix)))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/eio/releases/download/v1.3/eio-1.3.tbz) + (checksum + sha256=8ed5c13e6689f31c85dca5f12762d84b8cc0042a7b07d3e464df6eb4b72b3dfc))) diff --git a/dune.lock/eio_posix.1.3.pkg b/dune.lock/eio_posix.1.3.pkg new file mode 100644 index 0000000..641c59a --- /dev/null +++ b/dune.lock/eio_posix.1.3.pkg @@ -0,0 +1,16 @@ +(version 1.3) + +(build + (all_platforms + ((action (run dune build -p %{pkg-self:name} -j %{jobs} @install))))) + +(depends + (all_platforms + (dune eio iomux fmt))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/eio/releases/download/v1.3/eio-1.3.tbz) + (checksum + sha256=8ed5c13e6689f31c85dca5f12762d84b8cc0042a7b07d3e464df6eb4b72b3dfc))) diff --git a/dune.lock/eqaf.0.10.pkg b/dune.lock/eqaf.0.10.pkg new file mode 100644 index 0000000..fae6ee2 --- /dev/null +++ b/dune.lock/eqaf.0.10.pkg @@ -0,0 +1,18 @@ +(version 0.10) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url https://github.com/mirage/eqaf/releases/download/v0.10/eqaf-0.10.tbz) + (checksum + sha256=67d1369c57c4d2d14a10d02632d45e355224abeb98aec08979c0bae5843092ee))) diff --git a/dune.lock/fmt.0.11.0.pkg b/dune.lock/fmt.0.11.0.pkg new file mode 100644 index 0000000..9f1262e --- /dev/null +++ b/dune.lock/fmt.0.11.0.pkg @@ -0,0 +1,25 @@ +(version 0.11.0) + +(build + (all_platforms + ((action + (run + ocaml + pkg/pkg.ml + build + --dev-pkg + %{pkg-self:dev} + --with-base-unix + %{pkg:base-unix:installed} + --with-cmdliner + %{pkg:cmdliner:installed}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg base-unix cmdliner))) + +(source + (fetch + (url https://erratique.ch/software/fmt/releases/fmt-0.11.0.tbz) + (checksum + sha512=3f40155fc6a7315202e410585964307d63416c8001fd243667ed9d8d1a02b67deecacb25e9c2feb409c537bbdfb7817d91168de4ddd643532ff51d6c1c696a4a))) diff --git a/dune.lock/fpath.0.7.3.pkg b/dune.lock/fpath.0.7.3.pkg new file mode 100644 index 0000000..b4eef58 --- /dev/null +++ b/dune.lock/fpath.0.7.3.pkg @@ -0,0 +1,20 @@ +(version 0.7.3) + +(build + (all_platforms + ((action + (run + ocaml + pkg/pkg.ml + build + (when (catch_undefined_var %{pkg-self:dev} false) --dev-pkg=true)))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg astring))) + +(source + (fetch + (url https://erratique.ch/software/fpath/releases/fpath-0.7.3.tbz) + (checksum + sha256=12b08ff192d037d9b6d69e9ca19d1d385184f20b3237c27231e437ac81ace70f))) diff --git a/dune.lock/gmap.0.3.0.pkg b/dune.lock/gmap.0.3.0.pkg new file mode 100644 index 0000000..e07ae35 --- /dev/null +++ b/dune.lock/gmap.0.3.0.pkg @@ -0,0 +1,19 @@ +(version 0.3.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/hannesm/gmap/releases/download/0.3.0/gmap-0.3.0.tbz) + (checksum + sha256=04dd9e6226ac8f8fb4ccb6021048702e34a482fb9c1d240d3852829529507c1c))) diff --git a/dune.lock/hmap.0.8.1.pkg b/dune.lock/hmap.0.8.1.pkg new file mode 100644 index 0000000..e66b0fb --- /dev/null +++ b/dune.lock/hmap.0.8.1.pkg @@ -0,0 +1,15 @@ +(version 0.8.1) + +(build + (all_platforms + ((action (run ocaml pkg/pkg.ml build --pinned %{pkg-self:pinned}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg))) + +(source + (fetch + (url http://erratique.ch/software/hmap/releases/hmap-0.8.1.tbz) + (checksum + sha256=6a00db1b12b6f55e1b2419f206fdfbaa669e14b51c78f8ac3cffa0a58897be83))) diff --git a/dune.lock/http.6.1.1.pkg b/dune.lock/http.6.1.1.pkg new file mode 100644 index 0000000..f3bb34d --- /dev/null +++ b/dune.lock/http.6.1.1.pkg @@ -0,0 +1,19 @@ +(version 6.1.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-cohttp/releases/download/v6.1.1/cohttp-6.1.1.tbz) + (checksum + sha256=6b420c56203b3a0b515964f036bcea0fb9a362876b5791cd7ff50e12366c489c))) diff --git a/dune.lock/iomux.0.4.pkg b/dune.lock/iomux.0.4.pkg new file mode 100644 index 0000000..62fc2a9 --- /dev/null +++ b/dune.lock/iomux.0.4.pkg @@ -0,0 +1,19 @@ +(version 0.4) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (ocaml dune dune-configurator))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/ocaml-iomux/releases/download/v0.4/iomux-0.4.tbz) + (checksum + sha256=1e393fae559476848c5c70525076b11070e806a549eebae084b046a9772bab35))) diff --git a/dune.lock/ipaddr.5.6.1.pkg b/dune.lock/ipaddr.5.6.1.pkg new file mode 100644 index 0000000..2e22a97 --- /dev/null +++ b/dune.lock/ipaddr.5.6.1.pkg @@ -0,0 +1,19 @@ +(version 5.6.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune macaddr domain-name))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-ipaddr/releases/download/v5.6.1/ipaddr-5.6.1.tbz) + (checksum + sha256=1e617df8abd45843c823e9be75267d27426cb578661cf25622d50b25ae14a319))) diff --git a/dune.lock/kdf.1.0.0.pkg b/dune.lock/kdf.1.0.0.pkg new file mode 100644 index 0000000..32096cf --- /dev/null +++ b/dune.lock/kdf.1.0.0.pkg @@ -0,0 +1,19 @@ +(version 1.0.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune digestif mirage-crypto))) + +(source + (fetch + (url + https://github.com/robur-coop/kdf/releases/download/v1.0.0/kdf-1.0.0.tbz) + (checksum + sha256=d161582b0efe66d958dd6b8c9c21068e9f6454ce218377d6cf87823dec62e0ce))) diff --git a/dune.lock/lock.dune b/dune.lock/lock.dune new file mode 100644 index 0000000..f73ed68 --- /dev/null +++ b/dune.lock/lock.dune @@ -0,0 +1,23 @@ +(lang package 0.1) + +(dependency_hash 97074b0a388a28253a8ca4b3f8e01cd7) + +(ocaml ocaml-base-compiler) + +(repositories + (complete true) + (used + ((source + https://github.com/ocaml-dune/opam-overlays.git#2a9543286ff0e0656058fee5c0da7abc16b8717d)) + ((source + https://github.com/ocaml/opam-repository.git#21f97b2e6d7c617fc0a79cc8e59b2e10690960e1)))) + +(solved_for_platforms + ((arch x86_64) + (os linux)) + ((arch arm64) + (os linux)) + ((arch x86_64) + (os macos)) + ((arch arm64) + (os macos))) diff --git a/dune.lock/logs.0.10.0.pkg b/dune.lock/logs.0.10.0.pkg new file mode 100644 index 0000000..313de5a --- /dev/null +++ b/dune.lock/logs.0.10.0.pkg @@ -0,0 +1,31 @@ +(version 0.10.0) + +(build + (all_platforms + ((action + (run + ocaml + pkg/pkg.ml + build + --dev-pkg + %{pkg-self:dev} + --with-js_of_ocaml-compiler + %{pkg:js_of_ocaml-compiler:installed} + --with-fmt + %{pkg:fmt:installed} + --with-cmdliner + %{pkg:cmdliner:installed} + --with-lwt + %{pkg:lwt:installed} + --with-base-threads + %{pkg:base-threads:installed}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg cmdliner fmt base-threads))) + +(source + (fetch + (url https://erratique.ch/software/logs/releases/logs-0.10.0.tbz) + (checksum + sha512=122b7a77bd07aee1e0cb8e07e82b195a12528cf015e72fa0dd5afaae26ce04bad9b29f32a6d3bd3547fe522b8a036608785e8adb900e31580a0d555719bbb7e7))) diff --git a/dune.lock/lwt-dllist.1.1.0.pkg b/dune.lock/lwt-dllist.1.1.0.pkg new file mode 100644 index 0000000..ecfa518 --- /dev/null +++ b/dune.lock/lwt-dllist.1.1.0.pkg @@ -0,0 +1,19 @@ +(version 1.1.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/mirage/lwt-dllist/releases/download/v1.1.0/lwt-dllist-1.1.0.tbz) + (checksum + sha256=b0200651e37eaa24f027177bc01e266db43da48aa18146973d1d18336c325d69))) diff --git a/dune.lock/macaddr.5.6.1.pkg b/dune.lock/macaddr.5.6.1.pkg new file mode 100644 index 0000000..96fc1dd --- /dev/null +++ b/dune.lock/macaddr.5.6.1.pkg @@ -0,0 +1,19 @@ +(version 5.6.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-ipaddr/releases/download/v5.6.1/ipaddr-5.6.1.tbz) + (checksum + sha256=1e617df8abd45843c823e9be75267d27426cb578661cf25622d50b25ae14a319))) diff --git a/dune.lock/mirage-crypto-ec.1.2.0.pkg b/dune.lock/mirage-crypto-ec.1.2.0.pkg new file mode 100644 index 0000000..aac7ffc --- /dev/null +++ b/dune.lock/mirage-crypto-ec.1.2.0.pkg @@ -0,0 +1,19 @@ +(version 1.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (dune ocaml dune-configurator eqaf mirage-crypto-rng digestif))) + +(source + (fetch + (url + https://github.com/mirage/mirage-crypto/releases/download/v1.2.0/mirage-crypto-1.2.0.tbz) + (checksum + sha256=09542bcd96c1d368ff9ba8853105f4c1781d8c94c2400df9f3ac0610ee07e67e))) diff --git a/dune.lock/mirage-crypto-pk.1.2.0.pkg b/dune.lock/mirage-crypto-pk.1.2.0.pkg new file mode 100644 index 0000000..3d4e408 --- /dev/null +++ b/dune.lock/mirage-crypto-pk.1.2.0.pkg @@ -0,0 +1,26 @@ +(version 1.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (conf-gmp-powm-sec + ocaml + dune + mirage-crypto + mirage-crypto-rng + digestif + zarith + eqaf))) + +(source + (fetch + (url + https://github.com/mirage/mirage-crypto/releases/download/v1.2.0/mirage-crypto-1.2.0.tbz) + (checksum + sha256=09542bcd96c1d368ff9ba8853105f4c1781d8c94c2400df9f3ac0610ee07e67e))) diff --git a/dune.lock/mirage-crypto-rng-eio.1.2.0.pkg b/dune.lock/mirage-crypto-rng-eio.1.2.0.pkg new file mode 100644 index 0000000..f077a56 --- /dev/null +++ b/dune.lock/mirage-crypto-rng-eio.1.2.0.pkg @@ -0,0 +1,19 @@ +(version 1.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune eio logs mirage-crypto-rng duration mtime cstruct))) + +(source + (fetch + (url + https://github.com/mirage/mirage-crypto/releases/download/v1.2.0/mirage-crypto-1.2.0.tbz) + (checksum + sha256=09542bcd96c1d368ff9ba8853105f4c1781d8c94c2400df9f3ac0610ee07e67e))) diff --git a/dune.lock/mirage-crypto-rng.1.2.0.pkg b/dune.lock/mirage-crypto-rng.1.2.0.pkg new file mode 100644 index 0000000..705ec92 --- /dev/null +++ b/dune.lock/mirage-crypto-rng.1.2.0.pkg @@ -0,0 +1,19 @@ +(version 1.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune dune-configurator duration logs mirage-crypto digestif))) + +(source + (fetch + (url + https://github.com/mirage/mirage-crypto/releases/download/v1.2.0/mirage-crypto-1.2.0.tbz) + (checksum + sha256=09542bcd96c1d368ff9ba8853105f4c1781d8c94c2400df9f3ac0610ee07e67e))) diff --git a/dune.lock/mirage-crypto.1.2.0.pkg b/dune.lock/mirage-crypto.1.2.0.pkg new file mode 100644 index 0000000..260b780 --- /dev/null +++ b/dune.lock/mirage-crypto.1.2.0.pkg @@ -0,0 +1,19 @@ +(version 1.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune dune-configurator eqaf))) + +(source + (fetch + (url + https://github.com/mirage/mirage-crypto/releases/download/v1.2.0/mirage-crypto-1.2.0.tbz) + (checksum + sha256=09542bcd96c1d368ff9ba8853105f4c1781d8c94c2400df9f3ac0610ee07e67e))) diff --git a/dune.lock/mtime.2.1.0.pkg b/dune.lock/mtime.2.1.0.pkg new file mode 100644 index 0000000..b37b59c --- /dev/null +++ b/dune.lock/mtime.2.1.0.pkg @@ -0,0 +1,15 @@ +(version 2.1.0) + +(build + (all_platforms + ((action (run ocaml pkg/pkg.ml build --dev-pkg %{pkg-self:dev}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg))) + +(source + (fetch + (url https://erratique.ch/software/mtime/releases/mtime-2.1.0.tbz) + (checksum + sha512=a6619f1a3f1a5b32b7a9a067b939f94e6c66244eb90762d41f2cb1c9af852dd7d270fedb20e2b9b61875d52ba46e24af6ebf5950d1284b0b75b2fd2c380d9af3))) diff --git a/dune.lock/ocaml-base-compiler.5.4.0.pkg b/dune.lock/ocaml-base-compiler.5.4.0.pkg new file mode 100644 index 0000000..7a14a0a --- /dev/null +++ b/dune.lock/ocaml-base-compiler.5.4.0.pkg @@ -0,0 +1,4 @@ +(version 5.4.0) + +(depends + (all_platforms (ocaml-compiler))) diff --git a/dune.lock/ocaml-compiler-libs.v0.17.0.pkg b/dune.lock/ocaml-compiler-libs.v0.17.0.pkg new file mode 100644 index 0000000..9c7beb3 --- /dev/null +++ b/dune.lock/ocaml-compiler-libs.v0.17.0.pkg @@ -0,0 +1,14 @@ +(version v0.17.0) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/janestreet/ocaml-compiler-libs/archive/refs/tags/v0.17.0.tar.gz) + (checksum md5=aaf66efea8752475c25a942443579b41))) diff --git a/dune.lock/ocaml-compiler.5.4.0.pkg b/dune.lock/ocaml-compiler.5.4.0.pkg new file mode 100644 index 0000000..629542c --- /dev/null +++ b/dune.lock/ocaml-compiler.5.4.0.pkg @@ -0,0 +1,560 @@ +(version 5.4.0) + +(install + (all_platforms + (withenv + ((= MSYS2_ARG_CONV_EXCL *) + (= LSAN_OPTIONS detect_leaks=0,exitcode=0) + (= ASAN_OPTIONS detect_leaks=0,exitcode=0)) + (run %{make} install)))) + +(build + (choice + ((((arch x86_64) (os linux))) + ((action + (withenv + ((= MSYS2_ARG_CONV_EXCL *) + (= LSAN_OPTIONS detect_leaks=0,exitcode=0) + (= ASAN_OPTIONS detect_leaks=0,exitcode=0)) + (progn + (run + ./configure + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-w64-mingw32) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-w64-mingw32) + --prefix=%{prefix} + --docdir=%{doc}/ocaml + (when + (catch_undefined_var %{pkg:system-msvc:installed} false) + --with-winpthreads-msvc=%{pkg:winpthreads:share}) + -C + (when + (catch_undefined_var %{pkg:ocaml-option-afl:installed} false) + --with-afl) + (when + (catch_undefined_var + %{pkg:ocaml-option-bytecode-only:installed} + false) + --disable-native-compiler) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-flat-float-array:installed} + false) + --disable-flat-float-array) + (when + (catch_undefined_var %{pkg:ocaml-option-flambda:installed} false) + --enable-flambda) + (when + (catch_undefined_var %{pkg:ocaml-option-fp:installed} false) + --enable-frame-pointers) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-compression:installed} + false) + --without-zstd) + (when + (catch_undefined_var %{pkg:ocaml-option-tsan:installed} false) + --enable-tsan) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + CC=musl-gcc) + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-musl:installed} true) + false) + CFLAGS=-Os) + (when + (catch_undefined_var + (or_absorb_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + (and_absorb_undefined_var + %{pkg:ocaml-option-address-sanitizer:installed} + true)) + false) + LDFLAGS=-Wl,--no-as-needed,-ldl) + (when + (catch_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + false) + "CC=gcc -ldl -fsanitize=leak -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-address-sanitizer:installed} + true) + false) + "CC=gcc -ldl -fsanitize=address -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + "CC=gcc -m32") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + "ASPP=musl-gcc -c") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + --host=i386-linux) + (when + (catch_undefined_var %{pkg:ocaml-option-static:installed} false) + LIBS=-static) + --disable-warn-error) + (run %{make} -j%{jobs})))))) + ((((arch arm64) (os linux))) + ((action + (withenv + ((= MSYS2_ARG_CONV_EXCL *) + (= LSAN_OPTIONS detect_leaks=0,exitcode=0) + (= ASAN_OPTIONS detect_leaks=0,exitcode=0)) + (progn + (run + ./configure + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-w64-mingw32) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-w64-mingw32) + --prefix=%{prefix} + --docdir=%{doc}/ocaml + (when + (catch_undefined_var %{pkg:system-msvc:installed} false) + --with-winpthreads-msvc=%{pkg:winpthreads:share}) + -C + (when + (catch_undefined_var %{pkg:ocaml-option-afl:installed} false) + --with-afl) + (when + (catch_undefined_var + %{pkg:ocaml-option-bytecode-only:installed} + false) + --disable-native-compiler) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-flat-float-array:installed} + false) + --disable-flat-float-array) + (when + (catch_undefined_var %{pkg:ocaml-option-flambda:installed} false) + --enable-flambda) + (when + (catch_undefined_var %{pkg:ocaml-option-fp:installed} false) + --enable-frame-pointers) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-compression:installed} + false) + --without-zstd) + (when + (catch_undefined_var %{pkg:ocaml-option-tsan:installed} false) + --enable-tsan) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + CC=musl-gcc) + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-musl:installed} true) + false) + "CFLAGS=-Os -mno-outline-atomics") + (when + (catch_undefined_var + (or_absorb_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + (and_absorb_undefined_var + %{pkg:ocaml-option-address-sanitizer:installed} + true)) + false) + LDFLAGS=-Wl,--no-as-needed,-ldl) + (when + (catch_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + false) + "CC=gcc -ldl -fsanitize=leak -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-address-sanitizer:installed} + true) + false) + "CC=gcc -ldl -fsanitize=address -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + "CC=gcc -m32") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + "ASPP=musl-gcc -c") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + --host=i386-linux) + (when + (catch_undefined_var %{pkg:ocaml-option-static:installed} false) + LIBS=-static) + --disable-warn-error) + (run %{make} -j%{jobs})))))) + ((((arch x86_64) (os macos))) + ((action + (withenv + ((= MSYS2_ARG_CONV_EXCL *) + (= LSAN_OPTIONS detect_leaks=0,exitcode=0) + (= ASAN_OPTIONS detect_leaks=0,exitcode=0)) + (progn + (run + ./configure + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-w64-mingw32) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-w64-mingw32) + --prefix=%{prefix} + --docdir=%{doc}/ocaml + (when + (catch_undefined_var %{pkg:system-msvc:installed} false) + --with-winpthreads-msvc=%{pkg:winpthreads:share}) + -C + (when + (catch_undefined_var %{pkg:ocaml-option-afl:installed} false) + --with-afl) + (when + (catch_undefined_var + %{pkg:ocaml-option-bytecode-only:installed} + false) + --disable-native-compiler) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-flat-float-array:installed} + false) + --disable-flat-float-array) + (when + (catch_undefined_var %{pkg:ocaml-option-flambda:installed} false) + --enable-flambda) + (when + (catch_undefined_var %{pkg:ocaml-option-fp:installed} false) + --enable-frame-pointers) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-compression:installed} + false) + --without-zstd) + (when + (catch_undefined_var %{pkg:ocaml-option-tsan:installed} false) + --enable-tsan) + (when + (catch_undefined_var + (and_absorb_undefined_var + (not %{pkg:ocaml-option-32bit:installed}) + (not %{pkg:ocaml-option-musl:installed}) + true) + false) + CC=cc) + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-tsan:installed} true) + false) + CC=clang) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + CC=musl-gcc) + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-musl:installed} true) + false) + CFLAGS=-Os) + (when + (catch_undefined_var + (or_absorb_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + false) + false) + LDFLAGS=-Wl,--no-as-needed,-ldl) + (when + (catch_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + false) + "CC=gcc -ldl -fsanitize=leak -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-address-sanitizer:installed} + true) + false) + "CC=clang -fsanitize=address -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + "CC=gcc -Wl,-read_only_relocs,suppress -arch i386 -m32") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + "ASPP=musl-gcc -c") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + --host=i386-apple-darwin13.2.0) + (when + (catch_undefined_var %{pkg:ocaml-option-static:installed} false) + LIBS=-static) + --disable-warn-error) + (run %{make} -j%{jobs})))))) + ((((arch arm64) (os macos))) + ((action + (withenv + ((= MSYS2_ARG_CONV_EXCL *) + (= LSAN_OPTIONS detect_leaks=0,exitcode=0) + (= ASAN_OPTIONS detect_leaks=0,exitcode=0)) + (progn + (run + ./configure + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_64:installed}) + false) + --host=x86_64-w64-mingw32) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:system-msvc:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-pc-windows) + (when + (catch_undefined_var + (and_absorb_undefined_var + (= %{os_distribution} cygwin) + %{pkg:system-mingw:installed} + %{pkg:arch-x86_32:installed}) + false) + --host=i686-w64-mingw32) + --prefix=%{prefix} + --docdir=%{doc}/ocaml + (when + (catch_undefined_var %{pkg:system-msvc:installed} false) + --with-winpthreads-msvc=%{pkg:winpthreads:share}) + -C + (when + (catch_undefined_var %{pkg:ocaml-option-afl:installed} false) + --with-afl) + (when + (catch_undefined_var + %{pkg:ocaml-option-bytecode-only:installed} + false) + --disable-native-compiler) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-flat-float-array:installed} + false) + --disable-flat-float-array) + (when + (catch_undefined_var %{pkg:ocaml-option-flambda:installed} false) + --enable-flambda) + (when + (catch_undefined_var %{pkg:ocaml-option-fp:installed} false) + --enable-frame-pointers) + (when + (catch_undefined_var + %{pkg:ocaml-option-no-compression:installed} + false) + --without-zstd) + (when + (catch_undefined_var %{pkg:ocaml-option-tsan:installed} false) + --enable-tsan) + (when + (catch_undefined_var + (and_absorb_undefined_var + (not %{pkg:ocaml-option-32bit:installed}) + (not %{pkg:ocaml-option-musl:installed}) + true) + false) + CC=cc) + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-tsan:installed} true) + false) + CC=clang) + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + CC=musl-gcc) + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-musl:installed} true) + false) + "CFLAGS=-Os -mno-outline-atomics") + (when + (catch_undefined_var + (or_absorb_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + false) + false) + LDFLAGS=-Wl,--no-as-needed,-ldl) + (when + (catch_undefined_var + %{pkg:ocaml-option-leak-sanitizer:installed} + false) + "CC=gcc -ldl -fsanitize=leak -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-address-sanitizer:installed} + true) + false) + "CC=clang -fsanitize=address -fno-omit-frame-pointer -O1 -g") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + "CC=gcc -Wl,-read_only_relocs,suppress -arch i386 -m32") + (when + (catch_undefined_var + (and_absorb_undefined_var + %{pkg:ocaml-option-musl:installed} + (<> %{os_distribution} alpine)) + false) + "ASPP=musl-gcc -c") + (when + (catch_undefined_var + (and_absorb_undefined_var %{pkg:ocaml-option-32bit:installed} true) + false) + --host=i386-apple-darwin13.2.0) + (when + (catch_undefined_var %{pkg:ocaml-option-static:installed} false) + LIBS=-static) + --disable-warn-error) + (run %{make} -j%{jobs})))))))) + +(source + (fetch + (url + https://github.com/ocaml/ocaml/releases/download/5.4.0/ocaml-5.4.0.tar.gz) + (checksum + sha256=6fcf1b192e389e54c4f5cb51306ab2baee2a54a25b1770366de5a8b42695996e))) + +(exported_env + (= CAML_LD_LIBRARY_PATH "\%{lib}%/stublibs")) + +(extra_sources + (ocaml-compiler.install + (fetch + (url + https://raw.githubusercontent.com/ocaml/ocaml/899b8f3bece45f55161dad72eaa223c2bb7202e8/ocaml-variants.install) + (checksum + sha256=7af3dc34e6f9f3be2ffd8d32cd64fa650d6a036c86c4821a7033d24a90fba11c)))) diff --git a/dune.lock/ocaml-config.3.pkg b/dune.lock/ocaml-config.3.pkg new file mode 100644 index 0000000..52c1d66 --- /dev/null +++ b/dune.lock/ocaml-config.3.pkg @@ -0,0 +1,22 @@ +(version 3) + +(build + (all_platforms + ((action (substitute gen_ocaml_config.ml.in gen_ocaml_config.ml))))) + +(depends + (all_platforms (ocaml-base-compiler))) + +(extra_sources + (gen_ocaml_config.ml.in + (fetch + (url + https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/ocaml-config/gen_ocaml_config.ml.in.3) + (checksum + sha256=a9ad8d84a08961159653a978db92d10f694510182b206cacb96d5c9f63b5121e))) + (ocaml-config.install + (fetch + (url + https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/ocaml-config/ocaml-config.install) + (checksum + sha256=6e4fd93f4cce6bad0ed3c08afd0248dbe7d7817109281de6294e5b5ef5597051)))) diff --git a/dune.lock/ocaml-syntax-shims.1.0.0.pkg b/dune.lock/ocaml-syntax-shims.1.0.0.pkg new file mode 100644 index 0000000..d20c837 --- /dev/null +++ b/dune.lock/ocaml-syntax-shims.1.0.0.pkg @@ -0,0 +1,19 @@ +(version 1.0.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml-ppx/ocaml-syntax-shims/releases/download/1.0.0/ocaml-syntax-shims-1.0.0.tbz) + (checksum + sha256=89b2e193e90a0c168b6ec5ddf6fef09033681bdcb64e11913c97440a2722e8c8))) diff --git a/dune.lock/ocaml.5.4.0.pkg b/dune.lock/ocaml.5.4.0.pkg new file mode 100644 index 0000000..7744f72 --- /dev/null +++ b/dune.lock/ocaml.5.4.0.pkg @@ -0,0 +1,24 @@ +(version 5.4.0) + +(build + (all_platforms + ((action + (withenv + ((= CAML_LD_LIBRARY_PATH "") + (= LSAN_OPTIONS detect_leaks=0,exitcode=0) + (= ASAN_OPTIONS detect_leaks=0,exitcode=0)) + (run + ocaml + %{pkg:ocaml-config:share}/gen_ocaml_config.ml + %{pkg-self:version} + %{pkg-self:name})))))) + +(depends + (all_platforms + (ocaml-config ocaml-base-compiler))) + +(exported_env + (+= OCAMLTOP_INCLUDE_PATH "\%{toplevel}%") + (= CAML_LD_LIBRARY_PATH "\%{_:stubsdir}%") + (+= CAML_LD_LIBRARY_PATH "\%{lib}%/stublibs") + (= OCAML_TOPLEVEL_PATH "\%{toplevel}%")) diff --git a/dune.lock/ocaml_intrinsics_kernel.v0.17.1.pkg b/dune.lock/ocaml_intrinsics_kernel.v0.17.1.pkg new file mode 100644 index 0000000..24465a6 --- /dev/null +++ b/dune.lock/ocaml_intrinsics_kernel.v0.17.1.pkg @@ -0,0 +1,14 @@ +(version v0.17.1) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/janestreet/ocaml_intrinsics_kernel/archive/refs/tags/v0.17.1.tar.gz) + (checksum md5=56ed7d0b0331e5bcfa4e016515c0267d))) diff --git a/dune.lock/ocamlbuild.0.16.1+dune.pkg b/dune.lock/ocamlbuild.0.16.1+dune.pkg new file mode 100644 index 0000000..1413e5e --- /dev/null +++ b/dune.lock/ocamlbuild.0.16.1+dune.pkg @@ -0,0 +1,28 @@ +(version 0.16.1+dune) + +(build + (all_platforms + ((action + (progn + (run + %{make} + -f + configure.make + all + OCAMLBUILD_PREFIX=%{prefix} + OCAMLBUILD_BINDIR=%{bin} + OCAMLBUILD_LIBDIR=%{lib} + OCAMLBUILD_MANDIR=%{man} + OCAML_NATIVE=%{pkg:ocaml:native} + OCAML_NATIVE_TOOLS=%{pkg:ocaml:native}) + (run %{make} check-if-preinstalled all opam-install)))))) + +(depends + (all_platforms (ocaml))) + +(source + (fetch + (url + https://github.com/gridbugs/ocamlbuild/archive/refs/tags/0.16.1+dune.tar.gz) + (checksum + sha512=9bf33e2e3cd70495c6ff5987f7e8c1c2fb3dccb02da490140726fed3b374489cb93d500f57bea32a1a71da1c9d3dd207e476109d1aaa759f54c3ef07d5b7ccd8))) diff --git a/dune.lock/ocamlfind.1.9.8+dune.pkg b/dune.lock/ocamlfind.1.9.8+dune.pkg new file mode 100644 index 0000000..f1a45e0 --- /dev/null +++ b/dune.lock/ocamlfind.1.9.8+dune.pkg @@ -0,0 +1,46 @@ +(version 1.9.8+dune) + +(install + (all_platforms + (progn + (run %{make} install) + (when + %{pkg:ocaml:preinstalled} + (run install -m 0755 ocaml-stub %{bin}/ocaml))))) + +(build + (all_platforms + ((action + (progn + (run + ./configure + -bindir + %{bin} + -sitelib + %{lib} + -mandir + %{man} + -config + %{lib}/findlib.conf + -with-relative-paths-at + %{prefix} + -no-custom + (when + (catch_undefined_var + (and_absorb_undefined_var + (not %{pkg:ocaml:preinstalled}) + (>= %{pkg:ocaml:version} 4.02.0)) + false) + -no-camlp4) + (when (catch_undefined_var %{pkg:ocaml:preinstalled} false) -no-topfind)) + (run %{make} all) + (when %{pkg:ocaml:native} (run %{make} opt))))))) + +(depends + (all_platforms (ocaml))) + +(source + (fetch + (url + https://github.com/ocaml/ocamlfind/archive/refs/tags/findlib-1.9.8.tar.gz) + (checksum md5=ca770e5806032a96131b670f6e07f146))) diff --git a/dune.lock/ohex.0.2.0.pkg b/dune.lock/ohex.0.2.0.pkg new file mode 100644 index 0000000..c99c4f3 --- /dev/null +++ b/dune.lock/ohex.0.2.0.pkg @@ -0,0 +1,18 @@ +(version 0.2.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/ocaml/opam-source-archives/raw/main/ohex-0.2.0.tar.gz) + (checksum md5=77f2cbe75b9efd528a2b3478a8d4f3d4))) diff --git a/dune.lock/optint.0.3.0.pkg b/dune.lock/optint.0.3.0.pkg new file mode 100644 index 0000000..1ecc500 --- /dev/null +++ b/dune.lock/optint.0.3.0.pkg @@ -0,0 +1,15 @@ +(version 0.3.0) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/mirage/optint/releases/download/v0.3.0/optint-0.3.0.tbz) + (checksum + sha256=295cff2c134b0385b13ba81d5005d9f841ba40d4a502aed10c997f239ef1147b))) diff --git a/dune.lock/ppx_derivers.1.2.1.pkg b/dune.lock/ppx_derivers.1.2.1.pkg new file mode 100644 index 0000000..f70e04e --- /dev/null +++ b/dune.lock/ppx_derivers.1.2.1.pkg @@ -0,0 +1,14 @@ +(version 1.2.1) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url https://github.com/ocaml-ppx/ppx_derivers/archive/1.2.1.tar.gz) + (checksum + sha256=b6595ee187dea792b31fc54a0e1524ab1e48bc6068d3066c45215a138cc73b95))) diff --git a/dune.lock/ppx_deriving.6.1.1.pkg b/dune.lock/ppx_deriving.6.1.1.pkg new file mode 100644 index 0000000..c6ca2e1 --- /dev/null +++ b/dune.lock/ppx_deriving.6.1.1.pkg @@ -0,0 +1,18 @@ +(version 6.1.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune cppo ocamlfind ppx_derivers ppxlib))) + +(source + (fetch + (url + https://github.com/ocaml-ppx/ppx_deriving/releases/download/v6.1.1/ppx_deriving-6.1.1.tar.gz) + (checksum md5=3208e6028fbb5a417f751d3529eae031))) diff --git a/dune.lock/ppx_deriving_yojson.3.10.0.pkg b/dune.lock/ppx_deriving_yojson.3.10.0.pkg new file mode 100644 index 0000000..3ee7ba7 --- /dev/null +++ b/dune.lock/ppx_deriving_yojson.3.10.0.pkg @@ -0,0 +1,19 @@ +(version 3.10.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune yojson ppx_deriving ppxlib))) + +(source + (fetch + (url + https://github.com/ocaml-ppx/ppx_deriving_yojson/releases/download/v3.10.0/ppx_deriving_yojson-3.10.0.tbz) + (checksum + sha256=ced3d265e4287f1f18b09df6446a24444fad52b2a3054cbcbe0c9494d0e89b3f))) diff --git a/dune.lock/ppx_sexp_conv.v0.17.1.pkg b/dune.lock/ppx_sexp_conv.v0.17.1.pkg new file mode 100644 index 0000000..7f12b72 --- /dev/null +++ b/dune.lock/ppx_sexp_conv.v0.17.1.pkg @@ -0,0 +1,14 @@ +(version v0.17.1) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml base ppxlib_jane sexplib0 dune ppxlib))) + +(source + (fetch + (url + https://github.com/janestreet/ppx_sexp_conv/archive/refs/tags/v0.17.1.tar.gz) + (checksum md5=acbe8a2727a29c8f2fa8da42046f5861))) diff --git a/dune.lock/ppxlib.0.37.0.pkg b/dune.lock/ppxlib.0.37.0.pkg new file mode 100644 index 0000000..1429484 --- /dev/null +++ b/dune.lock/ppxlib.0.37.0.pkg @@ -0,0 +1,19 @@ +(version 0.37.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml ocaml-compiler-libs ppx_derivers sexplib0 stdlib-shims))) + +(source + (fetch + (url + https://github.com/ocaml-ppx/ppxlib/releases/download/0.37.0/ppxlib-0.37.0.tbz) + (checksum + sha256=2e223837e7cecc3bc84a432432c0a72f4e1d5be9165c9c33772f156db85db0b3))) diff --git a/dune.lock/ppxlib_jane.v0.17.4.pkg b/dune.lock/ppxlib_jane.v0.17.4.pkg new file mode 100644 index 0000000..aef16af --- /dev/null +++ b/dune.lock/ppxlib_jane.v0.17.4.pkg @@ -0,0 +1,14 @@ +(version v0.17.4) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune ppxlib))) + +(source + (fetch + (url + https://github.com/janestreet/ppxlib_jane/archive/refs/tags/v0.17.4.tar.gz) + (checksum md5=d572c6d6c3b4da9e480c65ba85d3c50a))) diff --git a/dune.lock/printbox-text.0.12.pkg b/dune.lock/printbox-text.0.12.pkg new file mode 100644 index 0000000..497012c --- /dev/null +++ b/dune.lock/printbox-text.0.12.pkg @@ -0,0 +1,19 @@ +(version 0.12) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune printbox uutf uucp))) + +(source + (fetch + (url + https://github.com/c-cube/printbox/releases/download/v0.12/printbox-0.12.tbz) + (checksum + sha256=c783dfbbc21ed9bdab04980b58efa901b149f38f9992f2cdc624abd681d8dedb))) diff --git a/dune.lock/printbox.0.12.pkg b/dune.lock/printbox.0.12.pkg new file mode 100644 index 0000000..338caee --- /dev/null +++ b/dune.lock/printbox.0.12.pkg @@ -0,0 +1,19 @@ +(version 0.12) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/c-cube/printbox/releases/download/v0.12/printbox-0.12.tbz) + (checksum + sha256=c783dfbbc21ed9bdab04980b58efa901b149f38f9992f2cdc624abd681d8dedb))) diff --git a/dune.lock/progress.0.5.0.pkg b/dune.lock/progress.0.5.0.pkg new file mode 100644 index 0000000..3d9936f --- /dev/null +++ b/dune.lock/progress.0.5.0.pkg @@ -0,0 +1,19 @@ +(version 0.5.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml terminal fmt logs mtime uucp uutf optint))) + +(source + (fetch + (url + https://github.com/craigfe/progress/releases/download/0.5.0/progress-0.5.0.tbz) + (checksum + sha256=7f87f0597363928c45ba859ae5a1430f6aa3c29e251ff1a53cf786ed0e045961))) diff --git a/dune.lock/psq.0.2.1.pkg b/dune.lock/psq.0.2.1.pkg new file mode 100644 index 0000000..1542fdd --- /dev/null +++ b/dune.lock/psq.0.2.1.pkg @@ -0,0 +1,18 @@ +(version 0.2.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune seq))) + +(source + (fetch + (url https://github.com/pqwy/psq/releases/download/v0.2.1/psq-0.2.1.tbz) + (checksum + sha256=42005f533eabe74b1799ee32b8905654cd66a22bed4af2bd266b28d8462cd344))) diff --git a/dune.lock/ptime.1.2.0.pkg b/dune.lock/ptime.1.2.0.pkg new file mode 100644 index 0000000..a8b8de2 --- /dev/null +++ b/dune.lock/ptime.1.2.0.pkg @@ -0,0 +1,15 @@ +(version 1.2.0) + +(build + (all_platforms + ((action (run ocaml pkg/pkg.ml build --dev-pkg %{pkg-self:dev}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg))) + +(source + (fetch + (url https://erratique.ch/software/ptime/releases/ptime-1.2.0.tbz) + (checksum + sha512=b0c3240dd9e777a5e60b5269eb2e312fc644d29ef55e257d2f2538c03bf62274173ed36e13858c44d2dbee8fe375c9c483e705706e4aa5b3b5c4609ca6324a5c))) diff --git a/dune.lock/re.1.14.0.pkg b/dune.lock/re.1.14.0.pkg new file mode 100644 index 0000000..9b97dbd --- /dev/null +++ b/dune.lock/re.1.14.0.pkg @@ -0,0 +1,17 @@ +(version 1.14.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url https://github.com/ocaml/ocaml-re/archive/refs/tags/1.14.0.tar.gz) + (checksum md5=03f4a83100cb9229a796b85c698076e1))) diff --git a/dune.lock/rresult.0.7.0.pkg b/dune.lock/rresult.0.7.0.pkg new file mode 100644 index 0000000..ae5533f --- /dev/null +++ b/dune.lock/rresult.0.7.0.pkg @@ -0,0 +1,15 @@ +(version 0.7.0) + +(build + (all_platforms + ((action (run ocaml pkg/pkg.ml build --dev-pkg %{pkg-self:dev}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg))) + +(source + (fetch + (url https://erratique.ch/software/rresult/releases/rresult-0.7.0.tbz) + (checksum + sha512=f1bb631c986996388e9686d49d5ae4d8aaf14034f6865c62a88fb58c48ce19ad2eb785327d69ca27c032f835984e0bd2efd969b415438628a31f3e84ec4551d3))) diff --git a/dune.lock/seq.base.pkg b/dune.lock/seq.base.pkg new file mode 100644 index 0000000..2ee102b --- /dev/null +++ b/dune.lock/seq.base.pkg @@ -0,0 +1,18 @@ +(version base) + +(depends + (all_platforms (ocaml))) + +(extra_sources + (META.seq + (fetch + (url + https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/seq/META.seq) + (checksum + sha256=e95062b4d0519ef8335c02f7d0f1952d11b814c7ab7e6d566a206116162fa2be))) + (seq.install + (fetch + (url + https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/seq/seq.install) + (checksum + sha256=fff926c2c4d5a82b6c94c60c4c35eb06e3d39975893ebe6b1f0e6557cbe34904)))) diff --git a/dune.lock/sexplib0.v0.17.0.pkg b/dune.lock/sexplib0.v0.17.0.pkg new file mode 100644 index 0000000..4d27921 --- /dev/null +++ b/dune.lock/sexplib0.v0.17.0.pkg @@ -0,0 +1,14 @@ +(version v0.17.0) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/janestreet/sexplib0/archive/refs/tags/v0.17.0.tar.gz) + (checksum md5=abafe8fd1d6302e55a315f4d78960d2a))) diff --git a/dune.lock/stdlib-shims.0.3.0.pkg b/dune.lock/stdlib-shims.0.3.0.pkg new file mode 100644 index 0000000..647e4f4 --- /dev/null +++ b/dune.lock/stdlib-shims.0.3.0.pkg @@ -0,0 +1,15 @@ +(version 0.3.0) + +(build + (all_platforms ((action (run dune build -p %{pkg-self:name} -j %{jobs}))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz) + (checksum + sha256=babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a))) diff --git a/dune.lock/stringext.1.6.0.pkg b/dune.lock/stringext.1.6.0.pkg new file mode 100644 index 0000000..11810ad --- /dev/null +++ b/dune.lock/stringext.1.6.0.pkg @@ -0,0 +1,19 @@ +(version 1.6.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune))) + +(source + (fetch + (url + https://github.com/rgrinberg/stringext/releases/download/1.6.0/stringext-1.6.0.tbz) + (checksum + sha256=db41f5d52e9eab17615f110b899dfeb27dd7e7f89cd35ae43827c5119db206ea))) diff --git a/dune.lock/tar-eio.3.3.0.pkg b/dune.lock/tar-eio.3.3.0.pkg new file mode 100644 index 0000000..8f67562 --- /dev/null +++ b/dune.lock/tar-eio.3.3.0.pkg @@ -0,0 +1,34 @@ +(version 3.3.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run + dune + build + -p + %{pkg-self:name} + -j + %{jobs} + --promote-install-files=false + @install) + (run + dune + install + -p + %{pkg-self:name} + --create-install-files + %{pkg-self:name})))))) + +(depends + (all_platforms + (dune ocaml eio tar))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-tar/releases/download/v3.3.0/tar-3.3.0.tbz) + (checksum + sha256=f3d6b0d677fd40fd1eb80bccc60bb613220358be58f66c5fa8bf0257f3e5eb96))) diff --git a/dune.lock/tar.3.3.0.pkg b/dune.lock/tar.3.3.0.pkg new file mode 100644 index 0000000..3b18c8d --- /dev/null +++ b/dune.lock/tar.3.3.0.pkg @@ -0,0 +1,34 @@ +(version 3.3.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run + dune + build + -p + %{pkg-self:name} + -j + %{jobs} + --promote-install-files=false + @install) + (run + dune + install + -p + %{pkg-self:name} + --create-install-files + %{pkg-self:name})))))) + +(depends + (all_platforms + (dune ocaml decompress))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-tar/releases/download/v3.3.0/tar-3.3.0.tbz) + (checksum + sha256=f3d6b0d677fd40fd1eb80bccc60bb613220358be58f66c5fa8bf0257f3e5eb96))) diff --git a/dune.lock/terminal.0.5.0.pkg b/dune.lock/terminal.0.5.0.pkg new file mode 100644 index 0000000..a596203 --- /dev/null +++ b/dune.lock/terminal.0.5.0.pkg @@ -0,0 +1,19 @@ +(version 0.5.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml uucp uutf stdlib-shims))) + +(source + (fetch + (url + https://github.com/craigfe/progress/releases/download/0.5.0/progress-0.5.0.tbz) + (checksum + sha256=7f87f0597363928c45ba859ae5a1430f6aa3c29e251ff1a53cf786ed0e045961))) diff --git a/dune.lock/thread-table.1.0.0.pkg b/dune.lock/thread-table.1.0.0.pkg new file mode 100644 index 0000000..9953f7a --- /dev/null +++ b/dune.lock/thread-table.1.0.0.pkg @@ -0,0 +1,19 @@ +(version 1.0.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/thread-table/releases/download/1.0.0/thread-table-1.0.0.tbz) + (checksum + sha256=a48cd88463597df9442c4baa69ccc06091ca77ba71e438d3609fbae0f3b81ddd))) diff --git a/dune.lock/tls-eio.2.0.3.pkg b/dune.lock/tls-eio.2.0.3.pkg new file mode 100644 index 0000000..a636c47 --- /dev/null +++ b/dune.lock/tls-eio.2.0.3.pkg @@ -0,0 +1,19 @@ +(version 2.0.3) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune tls mirage-crypto-rng eio ptime))) + +(source + (fetch + (url + https://github.com/mirleft/ocaml-tls/releases/download/v2.0.3/tls-2.0.3.tbz) + (checksum + sha256=d7159ba745f3da2e73844353f020fdbc767393882b47565f8b61b941c351c3d7))) diff --git a/dune.lock/tls.2.0.3.pkg b/dune.lock/tls.2.0.3.pkg new file mode 100644 index 0000000..4a458c3 --- /dev/null +++ b/dune.lock/tls.2.0.3.pkg @@ -0,0 +1,33 @@ +(version 2.0.3) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml + dune + mirage-crypto + mirage-crypto-ec + mirage-crypto-pk + mirage-crypto-rng + x509 + domain-name + fmt + kdf + logs + ipaddr + ohex + digestif + ptime))) + +(source + (fetch + (url + https://github.com/mirleft/ocaml-tls/releases/download/v2.0.3/tls-2.0.3.tbz) + (checksum + sha256=d7159ba745f3da2e73844353f020fdbc767393882b47565f8b61b941c351c3d7))) diff --git a/dune.lock/topkg.1.1.1.pkg b/dune.lock/topkg.1.1.1.pkg new file mode 100644 index 0000000..f277a77 --- /dev/null +++ b/dune.lock/topkg.1.1.1.pkg @@ -0,0 +1,23 @@ +(version 1.1.1) + +(build + (all_platforms + ((action + (run + ocaml + pkg/pkg.ml + build + --pkg-name + %{pkg-self:name} + --dev-pkg + %{pkg-self:dev}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild))) + +(source + (fetch + (url https://erratique.ch/software/topkg/releases/topkg-1.1.1.tbz) + (checksum + sha512=c36c549a362ddf5b7fe3f6ff91c79b7ab531c43633bb9737576370bcbd69db7e1625d247c278a869b503d45a175e9753231ccf595e5bfa4e3b7e2602ac3d3b42))) diff --git a/dune.lock/uri-sexp.4.4.0.pkg b/dune.lock/uri-sexp.4.4.0.pkg new file mode 100644 index 0000000..c8fb698 --- /dev/null +++ b/dune.lock/uri-sexp.4.4.0.pkg @@ -0,0 +1,19 @@ +(version 4.4.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (uri dune ppx_sexp_conv sexplib0))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-uri/releases/download/v4.4.0/uri-4.4.0.tbz) + (checksum + sha256=cdabaf6ef5cd2161e59cc7b74c6e4a68ecb80a9f4e96002e338e1b6bf17adec4))) diff --git a/dune.lock/uri.4.4.0.pkg b/dune.lock/uri.4.4.0.pkg new file mode 100644 index 0000000..0a1c5f4 --- /dev/null +++ b/dune.lock/uri.4.4.0.pkg @@ -0,0 +1,19 @@ +(version 4.4.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml dune stringext angstrom))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-uri/releases/download/v4.4.0/uri-4.4.0.tbz) + (checksum + sha256=cdabaf6ef5cd2161e59cc7b74c6e4a68ecb80a9f4e96002e338e1b6bf17adec4))) diff --git a/dune.lock/uring.2.7.0.pkg b/dune.lock/uring.2.7.0.pkg new file mode 100644 index 0000000..37b8e03 --- /dev/null +++ b/dune.lock/uring.2.7.0.pkg @@ -0,0 +1,40 @@ +(version 2.7.0) + +(build + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + ((action + (progn + (when + %{pkg-self:dev} + (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install))))))) + +(depends + (choice + ((((arch x86_64) + (os linux)) + ((arch arm64) + (os linux))) + (dune cstruct ocaml dune-configurator fmt optint)))) + +(depexts + ((linux-headers) + (= %{os_distribution} alpine))) + +(source + (fetch + (url + https://github.com/ocaml-multicore/ocaml-uring/releases/download/v2.7.0/uring-2.7.0.tbz) + (checksum + sha256=99e3e2ebf4d7b7182d2d82f21d101d9d17207a574256051a3d8f8c6574b30ba5))) + +(enabled_on_platforms + (only + ((arch x86_64) + (os linux)) + ((arch arm64) + (os linux)))) diff --git a/dune.lock/uucp.17.0.0.pkg b/dune.lock/uucp.17.0.0.pkg new file mode 100644 index 0000000..8faec82 --- /dev/null +++ b/dune.lock/uucp.17.0.0.pkg @@ -0,0 +1,25 @@ +(version 17.0.0) + +(build + (all_platforms + ((action + (run + ocaml + pkg/pkg.ml + build + --dev-pkg + %{pkg-self:dev} + --with-uunf + %{pkg:uunf:installed} + --with-cmdliner + %{pkg:cmdliner:installed}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg cmdliner))) + +(source + (fetch + (url https://erratique.ch/software/uucp/releases/uucp-17.0.0.tbz) + (checksum + sha512=c2b5c883c2ed1ee8e7bc9102339dfbca5940e68cd2af59a10abc827fb64c91ad03f85cfc12d4c79605c10e9b3a90743267af8b069143fefeeff6658ec8ed843f))) diff --git a/dune.lock/uutf.1.0.4.pkg b/dune.lock/uutf.1.0.4.pkg new file mode 100644 index 0000000..20d8c29 --- /dev/null +++ b/dune.lock/uutf.1.0.4.pkg @@ -0,0 +1,23 @@ +(version 1.0.4) + +(build + (all_platforms + ((action + (run + ocaml + pkg/pkg.ml + build + --dev-pkg + %{pkg-self:dev} + --with-cmdliner + %{pkg:cmdliner:installed}))))) + +(depends + (all_platforms + (ocaml ocamlfind ocamlbuild topkg cmdliner))) + +(source + (fetch + (url https://erratique.ch/software/uutf/releases/uutf-1.0.4.tbz) + (checksum + sha512=e35f408bc971cd8da3077e6c3321e0d8f4eb569898e0e219fde62dae78fbd0a0095cb7f036287656f6a1b346584f7b9f0c6dec0a5a092180da36e43247027598))) diff --git a/dune.lock/x509.1.0.6.pkg b/dune.lock/x509.1.0.6.pkg new file mode 100644 index 0000000..4e67d67 --- /dev/null +++ b/dune.lock/x509.1.0.6.pkg @@ -0,0 +1,34 @@ +(version 1.0.6) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs})))))) + +(depends + (all_platforms + (ocaml + dune + asn1-combinators + ptime + base64 + mirage-crypto + mirage-crypto-pk + mirage-crypto-ec + mirage-crypto-rng + fmt + gmap + domain-name + logs + kdf + ohex + ipaddr))) + +(source + (fetch + (url + https://github.com/mirleft/ocaml-x509/releases/download/v1.0.6/x509-1.0.6.tbz) + (checksum + sha256=fc816ae2c65e8b42fa60d90a507b2140495e28d095ad37b27e4c268ae3c00d6c))) diff --git a/dune.lock/xdg.3.20.2.pkg b/dune.lock/xdg.3.20.2.pkg new file mode 100644 index 0000000..0b0092a --- /dev/null +++ b/dune.lock/xdg.3.20.2.pkg @@ -0,0 +1,21 @@ +(version 3.20.2) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run rm -rf vendor/csexp) + (run rm -rf vendor/pp) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml/dune/releases/download/3.20.2/dune-3.20.2.tbz) + (checksum + sha256=b1a86b2d60bdb4a8b9bb6861bdf2f9f28a6e7cb5d833ce81afecceb9ef9ca549))) diff --git a/dune.lock/yojson.3.0.0.pkg b/dune.lock/yojson.3.0.0.pkg new file mode 100644 index 0000000..5c35bab --- /dev/null +++ b/dune.lock/yojson.3.0.0.pkg @@ -0,0 +1,19 @@ +(version 3.0.0) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune ocaml))) + +(source + (fetch + (url + https://github.com/ocaml-community/yojson/releases/download/3.0.0/yojson-3.0.0.tbz) + (checksum + sha256=99414da7609b92a02474ef4b49ecda15edc8cbba5229341b124e7e4695c39610))) diff --git a/dune.lock/zarith.1.14.pkg b/dune.lock/zarith.1.14.pkg new file mode 100644 index 0000000..cb12e20 --- /dev/null +++ b/dune.lock/zarith.1.14.pkg @@ -0,0 +1,18 @@ +(version 1.14) + +(install + (all_platforms + (run %{make} install))) + +(build + (all_platforms ((action (progn (run ./configure) (run %{make})))))) + +(depends + (all_platforms + (ocaml ocamlfind conf-pkg-config conf-gmp))) + +(source + (fetch + (url https://github.com/ocaml/Zarith/archive/release-1.14.tar.gz) + (checksum + sha256=5db9dcbd939153942a08581fabd846d0f3f2b8c67fe68b855127e0472d4d1859))) diff --git a/scripts/build-static.dockerfile b/scripts/build-static.dockerfile new file mode 100644 index 0000000..5c1db93 --- /dev/null +++ b/scripts/build-static.dockerfile @@ -0,0 +1,31 @@ +FROM alpine:3.22.0 AS builder + +RUN apk update && apk add \ + build-base \ + musl-dev \ + pkgconf \ + linux-headers \ + gmp-dev \ + gmp-static \ + curl \ + git \ + bash \ + ; + +# Install Dune +RUN curl -4fsSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v3/install.sh | sh -s 3.20.2 --install-root /usr --no-update-shell-config + +RUN mkdir /app +WORKDIR /app +COPY --chmod=0755 src src +COPY --chmod=0755 bin bin +COPY --chmod=0755 dune.lock dune.lock +COPY --chmod=0755 dune-project container-image.opam . +ENV DUNE_PROFILE=static + +RUN dune build @install --only-packages container-image --display=short +RUN mkdir /out +RUN dune install --prefix=/out container-image + +FROM scratch +COPY --from=builder /out . From 52ef88aca91e6b9cb4e93df3780c725d3db6d5b3 Mon Sep 17 00:00:00 2001 From: Marek Kubica Date: Mon, 16 Mar 2026 10:14:10 +0100 Subject: [PATCH 2/4] Update lockfile, action and add documentation --- .github/workflows/build-and-cache-deps.yml | 6 +- .github/workflows/release.yml | 51 ++++++++++------ README.md | 59 +++++++++++++++++++ ...{cmdliner.2.0.0.pkg => cmdliner.2.1.0.pkg} | 6 +- dune.lock/cohttp-eio.6.1.1.pkg | 19 ------ dune.lock/cohttp-eio.6.2.1.pkg | 19 ++++++ .../{cohttp.6.1.1.pkg => cohttp.6.2.1.pkg} | 9 +-- ....3.20.2.pkg => dune-build-info.3.21.1.pkg} | 6 +- ....20.2.pkg => dune-configurator.3.21.1.pkg} | 6 +- dune.lock/{http.6.1.1.pkg => http.6.2.1.pkg} | 6 +- .../{ipaddr.5.6.1.pkg => ipaddr.5.6.2.pkg} | 6 +- dune.lock/lock.dune | 15 ++++- .../{macaddr.5.6.1.pkg => macaddr.5.6.2.pkg} | 6 +- ....4.0.pkg => ocaml-base-compiler.5.4.1.pkg} | 2 +- ...ler.5.4.0.pkg => ocaml-compiler.5.4.1.pkg} | 6 +- dune.lock/ocaml-config.3.pkg | 4 +- .../{ocaml.5.4.0.pkg => ocaml.5.4.1.pkg} | 2 +- .../{tls-eio.2.0.3.pkg => tls-eio.2.0.4.pkg} | 6 +- dune.lock/{tls.2.0.3.pkg => tls.2.0.4.pkg} | 6 +- ...e-build-info.3.20.2.pkg => xdg.3.21.1.pkg} | 6 +- scripts/build-static.Dockerfile | 40 +++++++++++++ scripts/build-static.dockerfile | 31 ---------- 22 files changed, 207 insertions(+), 110 deletions(-) rename dune.lock/{cmdliner.2.0.0.pkg => cmdliner.2.1.0.pkg} (75%) delete mode 100644 dune.lock/cohttp-eio.6.1.1.pkg create mode 100644 dune.lock/cohttp-eio.6.2.1.pkg rename dune.lock/{cohttp.6.1.1.pkg => cohttp.6.2.1.pkg} (61%) rename dune.lock/{xdg.3.20.2.pkg => dune-build-info.3.21.1.pkg} (63%) rename dune.lock/{dune-configurator.3.20.2.pkg => dune-configurator.3.21.1.pkg} (64%) rename dune.lock/{http.6.1.1.pkg => http.6.2.1.pkg} (56%) rename dune.lock/{ipaddr.5.6.1.pkg => ipaddr.5.6.2.pkg} (73%) rename dune.lock/{macaddr.5.6.1.pkg => macaddr.5.6.2.pkg} (71%) rename dune.lock/{ocaml-base-compiler.5.4.0.pkg => ocaml-base-compiler.5.4.1.pkg} (73%) rename dune.lock/{ocaml-compiler.5.4.0.pkg => ocaml-compiler.5.4.1.pkg} (99%) rename dune.lock/{ocaml.5.4.0.pkg => ocaml.5.4.1.pkg} (97%) rename dune.lock/{tls-eio.2.0.3.pkg => tls-eio.2.0.4.pkg} (59%) rename dune.lock/{tls.2.0.3.pkg => tls.2.0.4.pkg} (69%) rename dune.lock/{dune-build-info.3.20.2.pkg => xdg.3.21.1.pkg} (63%) create mode 100644 scripts/build-static.Dockerfile delete mode 100644 scripts/build-static.dockerfile diff --git a/.github/workflows/build-and-cache-deps.yml b/.github/workflows/build-and-cache-deps.yml index 33a6b89..292f9eb 100644 --- a/.github/workflows/build-and-cache-deps.yml +++ b/.github/workflows/build-and-cache-deps.yml @@ -23,13 +23,13 @@ jobs: - os: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: ocaml-dune/setup-dune@v0 + - uses: ocaml-dune/setup-dune@v2 - name: Cache build artifacts id: artifact-cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: | _build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5a5d72a..c7356fd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,9 +1,8 @@ -name: release +name: Build and upload binary releases on: - push: - tags: - - '*' + release: + types: [released] jobs: release-unix: @@ -22,11 +21,11 @@ jobs: - uses: actions/checkout@v6 - - uses: ocaml-dune/setup-dune@v0 + - uses: ocaml-dune/setup-dune@v2 - name: Load dependencies from the cache id: artifact-cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: | _build @@ -34,15 +33,15 @@ jobs: key: ${{ matrix.os }}-artifacts-${{ hashFiles('dune.lock') }} - name: Build the project - run: dune build @install --only-packages container-image - - - run: echo OUT_NAME=container-image-${{ github.ref_name }}-${{ matrix.name }} >> $GITHUB_ENV + run: dune build @install --only-packages container-image --release - name: Release a tarball of build outputs run: | - mkdir -p "$OUT_NAME" - cp -rlf _build/install/default/* "$OUT_NAME" - tar czf "$OUT_NAME.tar.gz" "$OUT_NAME" + OUT_NAME="container-image-${{ github.ref_name }}-${{ matrix.name }}" + mkdir -p "${OUT_NAME}" + cp -rlf _build/install/default/* "${OUT_NAME}" + tar --format=posix -cf "${OUT_NAME}.tar" "${OUT_NAME}" + gzip -9 "${OUT_NAME}.tar" - name: Upload assets uses: ncipollo/release-action@v1 @@ -52,7 +51,7 @@ jobs: release-x86_64-linux-musl-static: - name: Build for x86_64-linux-musl-static + name: Release for x86_64-linux-musl-static runs-on: ubuntu-latest steps: @@ -63,14 +62,30 @@ jobs: - run: mkdir -p $OUT_NAME - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - run: docker buildx build --output type=local,dest=$OUT_NAME -f scripts/build-static.dockerfile . + uses: docker/setup-buildx-action@v4 + - run: docker buildx build --output type=local,dest=$OUT_NAME -f scripts/build-static.Dockerfile . - - name: Test we can execute the exe on the host as a basic sanity check - run: $OUT_NAME/bin/image --help + - uses: actions/upload-artifact@v7 + with: + path: ${{ env.OUT_NAME }} + name: release-x86_64-linux-musl-static + + - name: Basic sanity checks on the built executable + run: | + # make sure the executable is static + file $OUT_NAME/bin/image + # make sure it doesn't link with anything + if ldd $OUT_NAME/bin/image; then + # if ldd exists with 0 it means it links to dynamic libraries + exit 1 + fi + # call the executable + $OUT_NAME/bin/image - name: Make a tarball of build outputs - run: tar czf "$OUT_NAME.tar.gz" "$OUT_NAME" + run: | + tar --format=posix -cf "$OUT_NAME.tar" "$OUT_NAME" + gzip -9 "${OUT_NAME}.tar" - name: Upload assets uses: ncipollo/release-action@v1 diff --git a/README.md b/README.md index 1d0a1f0..9a234d1 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ fetch image layers or inspect image contents on your filesystem. ### From Source +#### Using OPAM + ```bash git clone https://github.com/your-repo/container-image.git cd container-image @@ -23,6 +25,19 @@ opam install . --deps-only dune build @install ``` +#### Using Dune package management + +```bash +git clone https://github.com/your-repo/container-image.git +cd container-image +dune build @install --pkg enabled +``` + +For information on how to develop with Dune package management alongside Opam, +please refer to the [How to Use Opam Alongside Dune Package +Management](https://dune.readthedocs.io/en/stable/howto/use-opam-alongside-dune-package-management.html) +documentation in Dune. + ### Using OPAM (When available) ```bash @@ -65,6 +80,50 @@ documentation](link-to-docs). Contributions to the `container-image` project are welcome! +### Creating prebuilt binaries for releases + +This project comes with GitHub Actions which will automatically build binaries +upon release. Currently supported platforms are: + + * macOS on AMD64 + * macOS on ARM64 + * Linux on AMD64 + +To create the binaries create a GitHub release (either manually or via helper +tools like `dune-release`). This will trigger a GitHub Action which will check +out the revision linked with the release, build it on the specified platform +and upload the binaries to the GitHub release automatically. This process takes +a few minutes, depending on how fast the GitHub runners are and can be tracked +in the "Actions" tab of the project. + +### Updating the dependency versions + +The project contains a lock directory for Dune package management in the +`dune.lock` folder. This means that whenever you use Dune with the package +management feature enabled it will use the exact versions of the compiler as +well as the projects dependencies as specified in `dune.lock`. + +However dependencies might need to change in some cases: + + * Updating the dependencies to new versions + * Adding or removing dependencies + * Changing the version constraints of existing packages + +In such case `dune` will detect that the dependencies declared in the opam file +and `dune.lock` are out of sync. To update the dependencies use `dune pkg lock` +which will re-create a new `dune.lock` directory with the newest dependency +solution. + +```bash +$ dune pkg lock +$ git add -A dune.lock +$ git commit +``` + +The dependency solver in Dune might add or remove files in `dune.lock` thus it +is advisable to use `git add -A` to add all the changes to the index to commit +the change. This avoids missing or duplicate files. + ## License This project is licensed under the MIT License. See diff --git a/dune.lock/cmdliner.2.0.0.pkg b/dune.lock/cmdliner.2.1.0.pkg similarity index 75% rename from dune.lock/cmdliner.2.0.0.pkg rename to dune.lock/cmdliner.2.1.0.pkg index 92ae65b..e0eee51 100644 --- a/dune.lock/cmdliner.2.0.0.pkg +++ b/dune.lock/cmdliner.2.1.0.pkg @@ -1,4 +1,4 @@ -(version 2.0.0) +(version 2.1.0) (install (all_platforms @@ -27,6 +27,6 @@ (source (fetch - (url https://erratique.ch/software/cmdliner/releases/cmdliner-2.0.0.tbz) + (url https://erratique.ch/software/cmdliner/releases/cmdliner-2.1.0.tbz) (checksum - sha512=a7bd4eeb0cef7c08bca73b0077a65f748c19a230544133b39fc3360feb2cf0af08416a8b84031c94a2f4a007d5920a4db1368d87b9eeca561671828e2dad2885))) + sha512=2ca8c9a2b392e031f88aa0e76f2ab50c8e9e28d77852d04ca2d5b62326630ca41567ce0832e9a9334d9b130b48deede66c7880a9d0aee75a1afe7541097e249f))) diff --git a/dune.lock/cohttp-eio.6.1.1.pkg b/dune.lock/cohttp-eio.6.1.1.pkg deleted file mode 100644 index a7f79eb..0000000 --- a/dune.lock/cohttp-eio.6.1.1.pkg +++ /dev/null @@ -1,19 +0,0 @@ -(version 6.1.1) - -(build - (all_platforms - ((action - (progn - (when %{pkg-self:dev} (run dune subst)) - (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) - -(depends - (all_platforms - (dune base-domains cohttp eio logs uri fmt ptime http))) - -(source - (fetch - (url - https://github.com/mirage/ocaml-cohttp/releases/download/v6.1.1/cohttp-6.1.1.tbz) - (checksum - sha256=6b420c56203b3a0b515964f036bcea0fb9a362876b5791cd7ff50e12366c489c))) diff --git a/dune.lock/cohttp-eio.6.2.1.pkg b/dune.lock/cohttp-eio.6.2.1.pkg new file mode 100644 index 0000000..d0f04b8 --- /dev/null +++ b/dune.lock/cohttp-eio.6.2.1.pkg @@ -0,0 +1,19 @@ +(version 6.2.1) + +(build + (all_platforms + ((action + (progn + (when %{pkg-self:dev} (run dune subst)) + (run dune build -p %{pkg-self:name} -j %{jobs} @install)))))) + +(depends + (all_platforms + (dune base-domains cohttp eio ipaddr logs uri fmt ptime http))) + +(source + (fetch + (url + https://github.com/mirage/ocaml-cohttp/releases/download/v6.2.1/cohttp-6.2.1.tbz) + (checksum + sha256=65080247763442d1dc3cd90678b8233b798772f036ac81cd1eaade1f5d66a65f))) diff --git a/dune.lock/cohttp.6.1.1.pkg b/dune.lock/cohttp.6.2.1.pkg similarity index 61% rename from dune.lock/cohttp.6.1.1.pkg rename to dune.lock/cohttp.6.2.1.pkg index 863f498..67ab353 100644 --- a/dune.lock/cohttp.6.1.1.pkg +++ b/dune.lock/cohttp.6.2.1.pkg @@ -1,4 +1,4 @@ -(version 6.1.1) +(version 6.2.1) (build (all_platforms @@ -19,11 +19,12 @@ sexplib0 ppx_sexp_conv stringext - base64))) + base64 + ipaddr))) (source (fetch (url - https://github.com/mirage/ocaml-cohttp/releases/download/v6.1.1/cohttp-6.1.1.tbz) + https://github.com/mirage/ocaml-cohttp/releases/download/v6.2.1/cohttp-6.2.1.tbz) (checksum - sha256=6b420c56203b3a0b515964f036bcea0fb9a362876b5791cd7ff50e12366c489c))) + sha256=65080247763442d1dc3cd90678b8233b798772f036ac81cd1eaade1f5d66a65f))) diff --git a/dune.lock/xdg.3.20.2.pkg b/dune.lock/dune-build-info.3.21.1.pkg similarity index 63% rename from dune.lock/xdg.3.20.2.pkg rename to dune.lock/dune-build-info.3.21.1.pkg index 0b0092a..36d562a 100644 --- a/dune.lock/xdg.3.20.2.pkg +++ b/dune.lock/dune-build-info.3.21.1.pkg @@ -1,4 +1,4 @@ -(version 3.20.2) +(version 3.21.1) (build (all_platforms @@ -16,6 +16,6 @@ (source (fetch (url - https://github.com/ocaml/dune/releases/download/3.20.2/dune-3.20.2.tbz) + https://github.com/ocaml/dune/releases/download/3.21.1/dune-3.21.1.tbz) (checksum - sha256=b1a86b2d60bdb4a8b9bb6861bdf2f9f28a6e7cb5d833ce81afecceb9ef9ca549))) + sha256=84f7a82c6d80a7124f3847e9a489e80cfbeafb7bed3573ac01286ef56fd08d94))) diff --git a/dune.lock/dune-configurator.3.20.2.pkg b/dune.lock/dune-configurator.3.21.1.pkg similarity index 64% rename from dune.lock/dune-configurator.3.20.2.pkg rename to dune.lock/dune-configurator.3.21.1.pkg index eb4df70..835aaef 100644 --- a/dune.lock/dune-configurator.3.20.2.pkg +++ b/dune.lock/dune-configurator.3.21.1.pkg @@ -1,4 +1,4 @@ -(version 3.20.2) +(version 3.21.1) (build (all_platforms @@ -16,6 +16,6 @@ (source (fetch (url - https://github.com/ocaml/dune/releases/download/3.20.2/dune-3.20.2.tbz) + https://github.com/ocaml/dune/releases/download/3.21.1/dune-3.21.1.tbz) (checksum - sha256=b1a86b2d60bdb4a8b9bb6861bdf2f9f28a6e7cb5d833ce81afecceb9ef9ca549))) + sha256=84f7a82c6d80a7124f3847e9a489e80cfbeafb7bed3573ac01286ef56fd08d94))) diff --git a/dune.lock/http.6.1.1.pkg b/dune.lock/http.6.2.1.pkg similarity index 56% rename from dune.lock/http.6.1.1.pkg rename to dune.lock/http.6.2.1.pkg index f3bb34d..a8588a5 100644 --- a/dune.lock/http.6.1.1.pkg +++ b/dune.lock/http.6.2.1.pkg @@ -1,4 +1,4 @@ -(version 6.1.1) +(version 6.2.1) (build (all_platforms @@ -14,6 +14,6 @@ (source (fetch (url - https://github.com/mirage/ocaml-cohttp/releases/download/v6.1.1/cohttp-6.1.1.tbz) + https://github.com/mirage/ocaml-cohttp/releases/download/v6.2.1/cohttp-6.2.1.tbz) (checksum - sha256=6b420c56203b3a0b515964f036bcea0fb9a362876b5791cd7ff50e12366c489c))) + sha256=65080247763442d1dc3cd90678b8233b798772f036ac81cd1eaade1f5d66a65f))) diff --git a/dune.lock/ipaddr.5.6.1.pkg b/dune.lock/ipaddr.5.6.2.pkg similarity index 73% rename from dune.lock/ipaddr.5.6.1.pkg rename to dune.lock/ipaddr.5.6.2.pkg index 2e22a97..ba4bc8b 100644 --- a/dune.lock/ipaddr.5.6.1.pkg +++ b/dune.lock/ipaddr.5.6.2.pkg @@ -1,4 +1,4 @@ -(version 5.6.1) +(version 5.6.2) (build (all_platforms @@ -14,6 +14,6 @@ (source (fetch (url - https://github.com/mirage/ocaml-ipaddr/releases/download/v5.6.1/ipaddr-5.6.1.tbz) + https://github.com/mirage/ocaml-ipaddr/releases/download/v5.6.2/ipaddr-5.6.2.tbz) (checksum - sha256=1e617df8abd45843c823e9be75267d27426cb578661cf25622d50b25ae14a319))) + sha256=08a3fa6e6411490b6661e5b10229ea9ec6b8c3738e9f6b255859b13f145be136))) diff --git a/dune.lock/lock.dune b/dune.lock/lock.dune index f73ed68..4fdf237 100644 --- a/dune.lock/lock.dune +++ b/dune.lock/lock.dune @@ -10,7 +10,20 @@ ((source https://github.com/ocaml-dune/opam-overlays.git#2a9543286ff0e0656058fee5c0da7abc16b8717d)) ((source - https://github.com/ocaml/opam-repository.git#21f97b2e6d7c617fc0a79cc8e59b2e10690960e1)))) + https://github.com/ocaml/opam-repository.git#ad09c4a181f189827cb3e4c6adc2bfbe8392ab0b)))) + +(expanded_solver_variable_bindings + (variable_values + (with-doc false) + (with-dev-setup false) + (post true) + (opam-version 2.2.0)) + (unset_variables + with-test + sys-ocaml-libc + enable-ocaml-beta-repository + dev + build)) (solved_for_platforms ((arch x86_64) diff --git a/dune.lock/macaddr.5.6.1.pkg b/dune.lock/macaddr.5.6.2.pkg similarity index 71% rename from dune.lock/macaddr.5.6.1.pkg rename to dune.lock/macaddr.5.6.2.pkg index 96fc1dd..94a1e1a 100644 --- a/dune.lock/macaddr.5.6.1.pkg +++ b/dune.lock/macaddr.5.6.2.pkg @@ -1,4 +1,4 @@ -(version 5.6.1) +(version 5.6.2) (build (all_platforms @@ -14,6 +14,6 @@ (source (fetch (url - https://github.com/mirage/ocaml-ipaddr/releases/download/v5.6.1/ipaddr-5.6.1.tbz) + https://github.com/mirage/ocaml-ipaddr/releases/download/v5.6.2/ipaddr-5.6.2.tbz) (checksum - sha256=1e617df8abd45843c823e9be75267d27426cb578661cf25622d50b25ae14a319))) + sha256=08a3fa6e6411490b6661e5b10229ea9ec6b8c3738e9f6b255859b13f145be136))) diff --git a/dune.lock/ocaml-base-compiler.5.4.0.pkg b/dune.lock/ocaml-base-compiler.5.4.1.pkg similarity index 73% rename from dune.lock/ocaml-base-compiler.5.4.0.pkg rename to dune.lock/ocaml-base-compiler.5.4.1.pkg index 7a14a0a..224249d 100644 --- a/dune.lock/ocaml-base-compiler.5.4.0.pkg +++ b/dune.lock/ocaml-base-compiler.5.4.1.pkg @@ -1,4 +1,4 @@ -(version 5.4.0) +(version 5.4.1) (depends (all_platforms (ocaml-compiler))) diff --git a/dune.lock/ocaml-compiler.5.4.0.pkg b/dune.lock/ocaml-compiler.5.4.1.pkg similarity index 99% rename from dune.lock/ocaml-compiler.5.4.0.pkg rename to dune.lock/ocaml-compiler.5.4.1.pkg index 629542c..6d4ec07 100644 --- a/dune.lock/ocaml-compiler.5.4.0.pkg +++ b/dune.lock/ocaml-compiler.5.4.1.pkg @@ -1,4 +1,4 @@ -(version 5.4.0) +(version 5.4.1) (install (all_platforms @@ -544,9 +544,9 @@ (source (fetch (url - https://github.com/ocaml/ocaml/releases/download/5.4.0/ocaml-5.4.0.tar.gz) + https://github.com/ocaml/ocaml/releases/download/5.4.1/ocaml-5.4.1.tar.gz) (checksum - sha256=6fcf1b192e389e54c4f5cb51306ab2baee2a54a25b1770366de5a8b42695996e))) + sha256=d4528517aaa1a44b8e2b1bc109a1ed0a5e0014f3ddc4feb8906b11a7e063e89a))) (exported_env (= CAML_LD_LIBRARY_PATH "\%{lib}%/stublibs")) diff --git a/dune.lock/ocaml-config.3.pkg b/dune.lock/ocaml-config.3.pkg index 52c1d66..12b5042 100644 --- a/dune.lock/ocaml-config.3.pkg +++ b/dune.lock/ocaml-config.3.pkg @@ -11,12 +11,12 @@ (gen_ocaml_config.ml.in (fetch (url - https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/ocaml-config/gen_ocaml_config.ml.in.3) + https://raw.githubusercontent.com/ocaml/ocaml/66f33f6e08857f3c3cb53fc1759fbad6860c59bd/tools/opam/gen_ocaml_config.ml.in) (checksum sha256=a9ad8d84a08961159653a978db92d10f694510182b206cacb96d5c9f63b5121e))) (ocaml-config.install (fetch (url - https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/ocaml-config/ocaml-config.install) + https://raw.githubusercontent.com/ocaml/ocaml/363fb9f5a2fb87dbd5f8cc579af87dd04e14343b/tools/opam/ocaml-config.install) (checksum sha256=6e4fd93f4cce6bad0ed3c08afd0248dbe7d7817109281de6294e5b5ef5597051)))) diff --git a/dune.lock/ocaml.5.4.0.pkg b/dune.lock/ocaml.5.4.1.pkg similarity index 97% rename from dune.lock/ocaml.5.4.0.pkg rename to dune.lock/ocaml.5.4.1.pkg index 7744f72..dd12e4d 100644 --- a/dune.lock/ocaml.5.4.0.pkg +++ b/dune.lock/ocaml.5.4.1.pkg @@ -1,4 +1,4 @@ -(version 5.4.0) +(version 5.4.1) (build (all_platforms diff --git a/dune.lock/tls-eio.2.0.3.pkg b/dune.lock/tls-eio.2.0.4.pkg similarity index 59% rename from dune.lock/tls-eio.2.0.3.pkg rename to dune.lock/tls-eio.2.0.4.pkg index a636c47..82391f0 100644 --- a/dune.lock/tls-eio.2.0.3.pkg +++ b/dune.lock/tls-eio.2.0.4.pkg @@ -1,4 +1,4 @@ -(version 2.0.3) +(version 2.0.4) (build (all_platforms @@ -14,6 +14,6 @@ (source (fetch (url - https://github.com/mirleft/ocaml-tls/releases/download/v2.0.3/tls-2.0.3.tbz) + https://github.com/mirleft/ocaml-tls/releases/download/v2.0.4/tls-2.0.4.tbz) (checksum - sha256=d7159ba745f3da2e73844353f020fdbc767393882b47565f8b61b941c351c3d7))) + sha256=704f467af8a88c198f9162d0c0c44d823a16ecb1ebcb38d8e98ef48fe52eb5f1))) diff --git a/dune.lock/tls.2.0.3.pkg b/dune.lock/tls.2.0.4.pkg similarity index 69% rename from dune.lock/tls.2.0.3.pkg rename to dune.lock/tls.2.0.4.pkg index 4a458c3..a6c12de 100644 --- a/dune.lock/tls.2.0.3.pkg +++ b/dune.lock/tls.2.0.4.pkg @@ -1,4 +1,4 @@ -(version 2.0.3) +(version 2.0.4) (build (all_platforms @@ -28,6 +28,6 @@ (source (fetch (url - https://github.com/mirleft/ocaml-tls/releases/download/v2.0.3/tls-2.0.3.tbz) + https://github.com/mirleft/ocaml-tls/releases/download/v2.0.4/tls-2.0.4.tbz) (checksum - sha256=d7159ba745f3da2e73844353f020fdbc767393882b47565f8b61b941c351c3d7))) + sha256=704f467af8a88c198f9162d0c0c44d823a16ecb1ebcb38d8e98ef48fe52eb5f1))) diff --git a/dune.lock/dune-build-info.3.20.2.pkg b/dune.lock/xdg.3.21.1.pkg similarity index 63% rename from dune.lock/dune-build-info.3.20.2.pkg rename to dune.lock/xdg.3.21.1.pkg index 0b0092a..36d562a 100644 --- a/dune.lock/dune-build-info.3.20.2.pkg +++ b/dune.lock/xdg.3.21.1.pkg @@ -1,4 +1,4 @@ -(version 3.20.2) +(version 3.21.1) (build (all_platforms @@ -16,6 +16,6 @@ (source (fetch (url - https://github.com/ocaml/dune/releases/download/3.20.2/dune-3.20.2.tbz) + https://github.com/ocaml/dune/releases/download/3.21.1/dune-3.21.1.tbz) (checksum - sha256=b1a86b2d60bdb4a8b9bb6861bdf2f9f28a6e7cb5d833ce81afecceb9ef9ca549))) + sha256=84f7a82c6d80a7124f3847e9a489e80cfbeafb7bed3573ac01286ef56fd08d94))) diff --git a/scripts/build-static.Dockerfile b/scripts/build-static.Dockerfile new file mode 100644 index 0000000..d7a658f --- /dev/null +++ b/scripts/build-static.Dockerfile @@ -0,0 +1,40 @@ +# need to use alpine 3.22 as 3.23 breaks static binaries by enabling PIE +# https://discuss.ocaml.org/t/segfaults-on-static-compilation-with-alpine-3-23-fix-no-pie/17800 +FROM alpine:3.22 AS builder + +RUN apk update && \ + apk add \ + build-base \ + musl-dev \ + pkgconf \ + linux-headers \ + gmp-dev \ + gmp-static \ + curl \ + git \ + bash \ + && \ + adduser -D build + +USER build + +# install and set up dune +RUN curl -fsSL https://get.dune.build/install | sh -s - --release latest +ENV PATH=/home/build/.local/bin:$PATH +ENV DUNE_PROFILE=static + +# set up build environment +WORKDIR /home/build/source +COPY --chmod=0755 src src +COPY --chmod=0755 bin bin +COPY --chmod=0755 dune.lock dune.lock +COPY --chmod=0755 dune-project container-image.opam . + +# build +RUN dune build @install --only-packages container-image --display=short +RUN mkdir /home/build/out +RUN dune install --prefix=/home/build/out container-image + +# copy artifacts to output +FROM scratch +COPY --from=builder /home/build/out . diff --git a/scripts/build-static.dockerfile b/scripts/build-static.dockerfile deleted file mode 100644 index 5c1db93..0000000 --- a/scripts/build-static.dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM alpine:3.22.0 AS builder - -RUN apk update && apk add \ - build-base \ - musl-dev \ - pkgconf \ - linux-headers \ - gmp-dev \ - gmp-static \ - curl \ - git \ - bash \ - ; - -# Install Dune -RUN curl -4fsSL https://github.com/ocaml-dune/dune-bin-install/releases/download/v3/install.sh | sh -s 3.20.2 --install-root /usr --no-update-shell-config - -RUN mkdir /app -WORKDIR /app -COPY --chmod=0755 src src -COPY --chmod=0755 bin bin -COPY --chmod=0755 dune.lock dune.lock -COPY --chmod=0755 dune-project container-image.opam . -ENV DUNE_PROFILE=static - -RUN dune build @install --only-packages container-image --display=short -RUN mkdir /out -RUN dune install --prefix=/out container-image - -FROM scratch -COPY --from=builder /out . From dcca298a5e6ca71ac0bf135f09e16da51879db51 Mon Sep 17 00:00:00 2001 From: Marek Kubica Date: Wed, 29 Apr 2026 11:20:58 +0200 Subject: [PATCH 3/4] Remove caching on every push to main --- .github/workflows/build-and-cache-deps.yml | 40 ---------------------- .github/workflows/release.yml | 9 ----- 2 files changed, 49 deletions(-) delete mode 100644 .github/workflows/build-and-cache-deps.yml diff --git a/.github/workflows/build-and-cache-deps.yml b/.github/workflows/build-and-cache-deps.yml deleted file mode 100644 index 292f9eb..0000000 --- a/.github/workflows/build-and-cache-deps.yml +++ /dev/null @@ -1,40 +0,0 @@ -# The actions/cache github action allows builds of tags to use artifacts cached -# by builds of the default branch, but doesn't allow builds of tags to use -# artifacts cached by other tags. Thus to make the dependencies of the project -# available to the "release" workflow, they are built and cached by this -# workflow. - -name: Build and Cache Dependencies - -on: - push: - branches: - - 'main' - -jobs: - release-unix: - name: Build and cache deps for ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - - os: macos-15-intel - - os: macos-15 - - os: ubuntu-latest - steps: - - - uses: actions/checkout@v6 - - - uses: ocaml-dune/setup-dune@v2 - - - name: Cache build artifacts - id: artifact-cache - uses: actions/cache@v5 - with: - path: | - _build - ~/.cache/dune - key: ${{ matrix.os }}-artifacts-${{ hashFiles('dune.lock') }} - - - name: Build the project - run: dune build @install --release --only-packages container-image diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7356fd..fd36bea 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,15 +23,6 @@ jobs: - uses: ocaml-dune/setup-dune@v2 - - name: Load dependencies from the cache - id: artifact-cache - uses: actions/cache/restore@v5 - with: - path: | - _build - ~/.cache/dune - key: ${{ matrix.os }}-artifacts-${{ hashFiles('dune.lock') }} - - name: Build the project run: dune build @install --only-packages container-image --release From bc0c92f6acb6c212d21af8e0e9f3c72350d4c531 Mon Sep 17 00:00:00 2001 From: Marek Kubica Date: Thu, 30 Apr 2026 12:00:06 +0200 Subject: [PATCH 4/4] Offload non-pproject specific documentation to the Dune docs --- README.md | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 9a234d1..92fb43e 100644 --- a/README.md +++ b/README.md @@ -98,31 +98,15 @@ in the "Actions" tab of the project. ### Updating the dependency versions -The project contains a lock directory for Dune package management in the +The project contains a lock directory for Dune package management stored in the `dune.lock` folder. This means that whenever you use Dune with the package management feature enabled it will use the exact versions of the compiler as well as the projects dependencies as specified in `dune.lock`. -However dependencies might need to change in some cases: - - * Updating the dependencies to new versions - * Adding or removing dependencies - * Changing the version constraints of existing packages - -In such case `dune` will detect that the dependencies declared in the opam file -and `dune.lock` are out of sync. To update the dependencies use `dune pkg lock` -which will re-create a new `dune.lock` directory with the newest dependency -solution. - -```bash -$ dune pkg lock -$ git add -A dune.lock -$ git commit -``` - -The dependency solver in Dune might add or remove files in `dune.lock` thus it -is advisable to use `git add -A` to add all the changes to the index to commit -the change. This avoids missing or duplicate files. +To create an updated lock directory you can use `dune pkg lock` as [described +in the Dune package management +tutorial](https://dune.readthedocs.io/en/stable/tutorials/dune-package-management/locking.html#create-a-lock-directory-manually). +Make sure to commit all changes to the updated lock directory. ## License