commit: b4b27d9e82c50daf8d88aa5e5d3126556cddd851 Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com> AuthorDate: Wed Apr 20 21:53:27 2022 +0000 Commit: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com> CommitDate: Wed Apr 20 21:57:00 2022 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=b4b27d9e
dev-ml/shared-block-ring: add 3.0.1 Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com> dev-ml/shared-block-ring/Manifest | 1 + .../files/shared-block-ring-3.0.0-cstruct.patch | 141 +++++++++++++++++++++ .../shared-block-ring-3.0.0-mirage-block.patch | 59 +++++++++ .../shared-block-ring-3.0.0.ebuild | 9 +- ...3.0.0.ebuild => shared-block-ring-3.0.1.ebuild} | 3 +- 5 files changed, 208 insertions(+), 5 deletions(-) diff --git a/dev-ml/shared-block-ring/Manifest b/dev-ml/shared-block-ring/Manifest index df7364e52..866bf2dac 100644 --- a/dev-ml/shared-block-ring/Manifest +++ b/dev-ml/shared-block-ring/Manifest @@ -1 +1,2 @@ DIST shared-block-ring-3.0.0.tar.gz 18503 BLAKE2B 786997d650a9094068822ba0b214e8e26658c8caaa26a0bc28f504bdf18f5f07a69896aae46ead9d337db1c7272d8198ed37b8e573e66c7e13ebd56bf94a96d8 SHA512 1f16926aaf641bcfb285d6047cb45b271c4bbb70b345aa803b51f8f966f7815a2890f6993f449aadb11c254f05064f6469cedb9020074c5a566eb6a4ca9d2a6e +DIST shared-block-ring-3.0.1.tar.gz 18580 BLAKE2B 7c173687b9ea520160bc66b4cc05d59a38b012ef441b4b4134f7ff3f0d8cc0ad4dfdce7473bbd6c8b3603ce09f6205b0557b51921f4aabe2de9f7ec6d6bccd18 SHA512 45af10f6336ab21cf4c26e503b05c844906c45a7092b880f402d7560a572f5d674856ca459857854b1d7b8986266ec5b2693617c7bc27e2a54973376d5abc141 diff --git a/dev-ml/shared-block-ring/files/shared-block-ring-3.0.0-cstruct.patch b/dev-ml/shared-block-ring/files/shared-block-ring-3.0.0-cstruct.patch new file mode 100644 index 000000000..830f2f27d --- /dev/null +++ b/dev-ml/shared-block-ring/files/shared-block-ring-3.0.0-cstruct.patch @@ -0,0 +1,141 @@ +From 4c8fb45a201cd15aa038d84bd792679a31bec5a8 Mon Sep 17 00:00:00 2001 +From: Hannes Mehnert <han...@mehnert.org> +Date: Thu, 27 Jan 2022 16:24:42 +0100 +Subject: [PATCH] avoid deprecated Cstruct.len, use Cstruct.length instead + +--- + lib/eraseBlock.ml | 4 ++-- + lib/ring.ml | 22 +++++++++++----------- + lib_test/test.ml | 2 +- + shared-block-ring.opam | 2 +- + 4 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/lib/eraseBlock.ml b/lib/eraseBlock.ml +index 5264b20..d073c36 100644 +--- a/lib/eraseBlock.ml ++++ b/lib/eraseBlock.ml +@@ -23,14 +23,14 @@ module Make(B: S.BLOCK) = struct + >>= fun info -> + let pages = Io_page.get block_size_pages in + let buffer = Io_page.to_cstruct pages in +- for i = 0 to Cstruct.len buffer - 1 do ++ for i = 0 to Cstruct.length buffer - 1 do + Cstruct.set_char buffer i (pattern.[i mod (String.length pattern)]) + done; + let rec loop n = + if n = info.Mirage_block.size_sectors + then return (Ok ()) + else +- let buffer_in_sectors = Cstruct.len buffer / info.Mirage_block.sector_size in ++ let buffer_in_sectors = Cstruct.length buffer / info.Mirage_block.sector_size in + let needed = Int64.to_int (min (Int64.sub info.Mirage_block.size_sectors n) (Int64.of_int buffer_in_sectors)) in + let towrite = Cstruct.sub buffer 0 (needed * info.Mirage_block.sector_size) in + B.write t n [ towrite ] +diff --git a/lib/ring.ml b/lib/ring.ml +index 58e98c4..23db9f1 100644 +--- a/lib/ring.ml ++++ b/lib/ring.ml +@@ -34,7 +34,7 @@ let minimum_size_sectors = Int64.add sector_data 1L + let magic = Printf.sprintf "mirage shared-block-device 1.0" + + let zero buf = +- for i = 0 to Cstruct.len buf - 1 do ++ for i = 0 to Cstruct.length buf - 1 do + Cstruct.set_uint8 buf i 0 + done + +@@ -357,7 +357,7 @@ module Producer = struct + let open ResultM in + let _sector = alloc t.info.Mirage_block.sector_size in + (* add a 4 byte header of size, and round up to the next 4-byte offset *) +- let needed_bytes = Int64.(logand (lognot 3L) (add 7L (of_int (Cstruct.len item)))) in ++ let needed_bytes = Int64.(logand (lognot 3L) (add 7L (of_int (Cstruct.length item)))) in + let first_sector = Int64.(div t.producer.producer (of_int t.info.Mirage_block.sector_size)) in + let first_offset = Int64.(to_int (rem t.producer.producer (of_int t.info.Mirage_block.sector_size))) in + +@@ -365,23 +365,23 @@ module Producer = struct + the first page as it's only a 4-byte integer and we're padding to 4-byte offsets. *) + read_modify_write t first_sector (fun sector -> + (* Write the header and anything else we can *) +- Cstruct.LE.set_uint32 sector first_offset (Int32.of_int (Cstruct.len item)); ++ Cstruct.LE.set_uint32 sector first_offset (Int32.of_int (Cstruct.length item)); + if first_offset + 4 = t.info.Mirage_block.sector_size + then item (* We can't write anything else, so just return the item *) + else begin +- let this = min (t.info.Mirage_block.sector_size - first_offset - 4) (Cstruct.len item) in ++ let this = min (t.info.Mirage_block.sector_size - first_offset - 4) (Cstruct.length item) in + Cstruct.blit item 0 sector (first_offset + 4) this; + Cstruct.shift item this + end) >>= fun remaining -> + + let rec loop offset remaining = +- if Cstruct.len remaining = 0 ++ if Cstruct.length remaining = 0 + then return () + else begin + read_modify_write t offset (fun sector -> +- let this = min t.info.Mirage_block.sector_size (Cstruct.len remaining) in ++ let this = min t.info.Mirage_block.sector_size (Cstruct.length remaining) in + let frag = Cstruct.sub sector 0 this in +- Cstruct.blit remaining 0 frag 0 (Cstruct.len frag); ++ Cstruct.blit remaining 0 frag 0 (Cstruct.length frag); + Cstruct.shift remaining this) >>= fun remaining -> + loop (Int64.succ offset) remaining + end in +@@ -408,7 +408,7 @@ module Producer = struct + (fun () -> + let item = Item.to_cstruct item in + (* every item has a 4 byte header *) +- let needed_bytes = Int64.(add 4L (of_int (Cstruct.len item))) in ++ let needed_bytes = Int64.(add 4L (of_int (Cstruct.length item))) in + let open C in + let open ResultM in + ok_to_write t needed_bytes +@@ -535,10 +535,10 @@ module Consumer = struct + let frag = Cstruct.sub sector (4 + first_offset) this in + Cstruct.blit frag 0 result 0 this; + let rec loop consumer remaining = +- if Cstruct.len remaining = 0 ++ if Cstruct.length remaining = 0 + then return () + else +- let this = min t.info.Mirage_block.sector_size (Cstruct.len remaining) in ++ let this = min t.info.Mirage_block.sector_size (Cstruct.length remaining) in + let frag = Cstruct.sub remaining 0 this in + read Int64.(add sector_data (rem consumer total_sectors)) t.disk sector >>= fun () -> + Cstruct.blit sector 0 frag 0 this; +@@ -547,7 +547,7 @@ module Consumer = struct + (* Read the payload before updating the consumer pointer *) + let needed_bytes = Int64.(logand (lognot 3L) (add 7L (of_int (len)))) in + match Item.of_cstruct result with +- | None -> Lwt.return (Error (`Msg (Printf.sprintf "Failed to parse queue item: (%d)[%s]" (Cstruct.len result) (String.escaped (Cstruct.to_string result))))) ++ | None -> Lwt.return (Error (`Msg (Printf.sprintf "Failed to parse queue item: (%d)[%s]" (Cstruct.length result) (String.escaped (Cstruct.to_string result))))) + | Some result -> + return (Int64.(add t.consumer.consumer needed_bytes),result) + end +diff --git a/lib_test/test.ml b/lib_test/test.ml +index 3769137..d9ff865 100644 +--- a/lib_test/test.ml ++++ b/lib_test/test.ml +@@ -47,7 +47,7 @@ let alloc sector_size = + sector + + let fill_with_message buffer message = +- for i = 0 to Cstruct.len buffer - 1 do ++ for i = 0 to Cstruct.length buffer - 1 do + Cstruct.set_char buffer i (message.[i mod (String.length message)]) + done + +diff --git a/shared-block-ring.opam b/shared-block-ring.opam +index d9a95d1..1c703fa 100644 +--- a/shared-block-ring.opam ++++ b/shared-block-ring.opam +@@ -13,7 +13,7 @@ depends: [ + "ocaml" {>= "4.06.0"} + "bisect_ppx" {dev & >= "2.5.0"} + "cmdliner" +- "cstruct" {>= "3.0.0"} ++ "cstruct" {>= "6.0.0"} + "dune" {>= "2.7.0"} + "duration" + "io-page" diff --git a/dev-ml/shared-block-ring/files/shared-block-ring-3.0.0-mirage-block.patch b/dev-ml/shared-block-ring/files/shared-block-ring-3.0.0-mirage-block.patch new file mode 100644 index 000000000..f170751cc --- /dev/null +++ b/dev-ml/shared-block-ring/files/shared-block-ring-3.0.0-mirage-block.patch @@ -0,0 +1,59 @@ +From f0b61e87f809dce36fb93e31349d02d9a679253a Mon Sep 17 00:00:00 2001 +From: Hannes Mehnert <han...@mehnert.org> +Date: Thu, 27 Jan 2022 16:26:39 +0100 +Subject: [PATCH] adapt to mirage-block 3.0.0 changes + +--- + lib/ring.ml | 4 ---- + shared-block-ring.opam | 4 ++-- + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/lib/ring.ml b/lib/ring.ml +index 23db9f1..f1e96ce 100644 +--- a/lib/ring.ml ++++ b/lib/ring.ml +@@ -92,14 +92,12 @@ module Common(Log: S.LOG)(B: S.BLOCK) = struct + m >>= function + | Error `Is_read_only -> Lwt.return (Error `Is_read_only) + | Error `Disconnected -> Lwt.return (Error `Disconnected) +- | Error `Unimplemented -> Lwt.return (Error `Unimplemented) + | Error x -> Lwt.return (Error x) + | Ok x -> f x + let to_msg m = + let open Lwt.Infix in + m >>= function + | Error `Disconnected -> Lwt.return (Error (`Msg "BLOCK device has already disconnected")) +- | Error `Unimplemented -> Lwt.return (Error (`Msg "BLOCK function is unimplemented")) + | Error `Is_read_only -> Lwt.return (Error (`Msg "BLOCK device is read-only")) + | Error _ -> Lwt.return (Error (`Msg "Unknown error from BLOCK device")) + | Ok x -> Lwt.return (Ok x) +@@ -110,14 +108,12 @@ module Common(Log: S.LOG)(B: S.BLOCK) = struct + let open Lwt.Infix in + m >>= function + | Error `Disconnected -> Lwt.return (Error `Disconnected) +- | Error `Unimplemented -> Lwt.return (Error `Unimplemented) + | Error x -> Lwt.return (Error x) + | Ok x -> f x + let to_msg m = + let open Lwt.Infix in + m >>= function + | Error `Disconnected -> Lwt.return (Error (`Msg "BLOCK device has already disconnected")) +- | Error `Unimplemented -> Lwt.return (Error (`Msg "BLOCK function is unimplemented")) + | Error _ -> Lwt.return (Error (`Msg "Unknown error from BLOCK device")) + | Ok x -> Lwt.return (Ok x) + let return x = Lwt.return (Ok x) +diff --git a/shared-block-ring.opam b/shared-block-ring.opam +index 1c703fa..beb5c5b 100644 +--- a/shared-block-ring.opam ++++ b/shared-block-ring.opam +@@ -21,8 +21,8 @@ depends: [ + "logs" + "lwt" + "lwt_log" +- "mirage-block" {>= "2.0.1"} +- "mirage-block-unix" ++ "mirage-block" {>= "3.0.0"} ++ "mirage-block-unix" {>= "2.13.0"} + "mirage-clock" {>= "3.0.0"} + "mirage-clock-unix" {with-test} + "mirage-time" {>= "2.0.1"} diff --git a/dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild b/dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild index 5bf002603..bafd0f5b4 100644 --- a/dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild +++ b/dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild @@ -15,12 +15,12 @@ KEYWORDS="~amd64" IUSE="ocamlopt test" RDEPEND=" - >=dev-ml/cstruct-6.0.0:=[ppx] + >=dev-ml/cstruct-3.0.0:=[ppx] dev-ml/lwt:= dev-ml/lwt_log:= dev-ml/cmdliner:= dev-ml/duration:= - >=dev-ml/io-page-2.4.0:= + >=dev-ml/io-page-2.2.0:=[unix(-)] dev-ml/logs:= >=dev-ml/mirage-block-2.0.1:= dev-ml/mirage-block-unix:= @@ -41,4 +41,7 @@ DEPEND=" " RESTRICT="!test? ( test )" -PATCHES="${FILESDIR}/${P}-PR-62.patch" +PATCHES=( + "${FILESDIR}/${P}-cstruct.patch" + "${FILESDIR}/${P}-mirage-block.patch" +) diff --git a/dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild b/dev-ml/shared-block-ring/shared-block-ring-3.0.1.ebuild similarity index 85% copy from dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild copy to dev-ml/shared-block-ring/shared-block-ring-3.0.1.ebuild index 5bf002603..ac2906f65 100644 --- a/dev-ml/shared-block-ring/shared-block-ring-3.0.0.ebuild +++ b/dev-ml/shared-block-ring/shared-block-ring-3.0.1.ebuild @@ -7,7 +7,7 @@ inherit dune DESCRIPTION="A simple on-disk fixed length queue" HOMEPAGE="https://github.com/mirage/shared-block-ring" -SRC_URI="https://github.com/mirage/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" +SRC_URI="https://github.com/mirage/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="ISC" SLOT="0/${PV}" @@ -41,4 +41,3 @@ DEPEND=" " RESTRICT="!test? ( test )" -PATCHES="${FILESDIR}/${P}-PR-62.patch"