diff --git a/gnu/local.mk b/gnu/local.mk
index 06a376a99a..f28baefdb6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1646,10 +1646,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/nyacc-binary-literals.patch		\
   %D%/packages/patches/oath-toolkit-xmlsec-compat.patch		\
   %D%/packages/patches/obs-modules-location.patch		\
-  %D%/packages/patches/ocaml-dose3-add-unix-dependency.patch	\
-  %D%/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch	\
-  %D%/packages/patches/ocaml-dose3-dont-make-printconf.patch	\
-  %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch	\
   %D%/packages/patches/ocaml-multiple-definitions.patch		\
   %D%/packages/patches/ocaml-4.07-dynamically-allocate-signal-stack.patch	\
   %D%/packages/patches/ocaml-4.09-dynamically-allocate-signal-stack.patch	\
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 73c82bf7c7..289b86cc27 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -713,7 +713,7 @@ (define-public ocaml-mccs
 (define-public ocaml-dose3
   (package
     (name "ocaml-dose3")
-    (version "5.0.1")
+    (version "7.0.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -722,30 +722,17 @@ (define-public ocaml-dose3
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dxkw37gj8z45kd0dnrlfgpj8yycq0dphs8kjm9kvq9xc8rikxp3"))
-              (patches
-               (search-patches
-                "ocaml-dose3-add-unix-dependency.patch"
-                "ocaml-dose3-Fix-for-ocaml-4.06.patch"
-                "ocaml-dose3-dont-make-printconf.patch"
-                "ocaml-dose3-Install-mli-cmx-etc.patch"))))
-    (build-system ocaml-build-system)
-    (arguments
-     `(#:tests? #f                      ;the test suite requires python 2
-       #:configure-flags
-       ,#~(list (string-append "SHELL="
-                               #+(file-append (canonical-package bash-minimal)
-                                              "/bin/sh")))
-       #:make-flags
-       ,#~(list (string-append "LIBDIR=" #$output "/lib/ocaml/site-lib"))))
-    (propagated-inputs
-     (list ocaml-graph ocaml-cudf ocaml-extlib ocaml-re))
-    (native-inputs
-     (list perl
-           ocaml-extlib
-           ocamlbuild
-           ocaml-cppo))
-    (home-page "https://www.mancoosi.org/software/")
+                "0hcjh68svicap7j9bghgkp49xa12qhxa1pygmrgc9qwm0m4dhirb"))))
+    (build-system dune-build-system)
+    (arguments `(#:package "dose3"))
+    (propagated-inputs (list ocaml-extlib
+                             ocaml-base64-boot
+                             ocaml-cudf
+                             ocaml-graph
+                             ocaml-re
+                             ocaml-stdlib-shims))
+    (native-inputs (list ocaml-ounit))
+    (home-page "http://www.mancoosi.org/software/")
     (synopsis "Package distribution management framework")
     (description "Dose3 is a framework made of several OCaml libraries for
 managing distribution packages and their dependencies.  Though not tied to
@@ -4336,8 +4323,7 @@ (define-public ocaml-base64
                (base32
                 "1jq349jp663hq51a941afr2y4yyh34r19zsxla73ks9bywj4mm2q"))))
     (build-system dune-build-system)
-    (native-inputs
-     (list ocaml-alcotest ocaml-bos ocaml-rresult))
+    (native-inputs (list ocaml-alcotest ocaml-bos ocaml-rresult))
     (properties `((ocaml4.07-variant . ,(delay ocaml4.07-base64))))
     (home-page "https://github.com/mirage/ocaml-base64")
     (synopsis "Base64 encoding for OCaml")
@@ -4346,6 +4332,14 @@ (define-public ocaml-base64
 radix-64 representation.  It is specified in RFC 4648.")
     (license license:isc)))
 
+;; A variant without tests that is used to prevent a cyclic dependency when
+;; compiling ocaml-dose3.
+(define ocaml-base64-boot
+  (package
+    (inherit ocaml-base64)
+    (arguments `(#:tests? #f))
+    (native-inputs '())))
+
 (define-public ocaml4.07-base64
   (package-with-ocaml4.07
     (package
diff --git a/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
deleted file mode 100644
index 2c344af821..0000000000
--- a/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From aeca7656f499d7f4595319858f242276920e31bb Mon Sep 17 00:00:00 2001
-From: Louis Gesbert <louis.gesbert@ocamlpro.com>
-Date: Sat, 2 Dec 2017 12:51:01 +0100
-Subject: [PATCH] Fix for ocaml 4.06
-
----
- common/criteria_lexer.mll | 8 ++++----
- common/util.ml            | 2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/common/criteria_lexer.mll b/common/criteria_lexer.mll
-index 71f9178..fc4eae3 100644
---- a/common/criteria_lexer.mll
-+++ b/common/criteria_lexer.mll
-@@ -18,7 +18,7 @@
-     let c = Lexing.lexeme_char lexbuf 2 in (* the delimiter can be any character *)
-     (* find the terminating delimiter *)
-     let endpos =
--      try String.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
-+      try Bytes.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
-       |Invalid_argument _ ->
-           raise (Format822.Syntax_error (
-             Format822.error lexbuf "String too short"))
-@@ -27,9 +27,9 @@
-             Format822.error lexbuf (Printf.sprintf "cannot find: %c" c)))
-     in
-     let len = endpos - (lexbuf.lex_start_pos + 3) in
--    let s = String.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
--    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((String.length s)+4);
--    s
-+    let s = Bytes.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
-+    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((Bytes.length s)+4);
-+    Bytes.to_string s
- 
- }
- 
-diff --git a/common/util.ml b/common/util.ml
-index 598f266..36ca3d1 100644
---- a/common/util.ml
-+++ b/common/util.ml
-@@ -87,7 +87,7 @@ module MakeMessages(X : sig val label : string end) = struct
-   let clean label =
-     try 
-       let s = Filename.chop_extension (Filename.basename label) in
--      String.capitalize s
-+      String.capitalize_ascii s
-     with Invalid_argument _ -> label
- 
-   let create ?(enabled=false) label =
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
deleted file mode 100644
index 41494e7b3c..0000000000
--- a/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-From b5314c20d8e3caf62fe0dc96ad937a2950158b23 Mon Sep 17 00:00:00 2001
-From: Louis Gesbert <louis.gesbert@ocamlpro.com>
-Date: Thu, 2 Mar 2017 12:19:56 +0100
-Subject: [PATCH] Install mli, cmx, etc.
-
----
- Makefile | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 09464ff..5044d7f 100644
---- a/Makefile
-+++ b/Makefile
-@@ -56,7 +56,7 @@ $(DOSELIBS)/cudf.%:
- 	@for i in _build/cudf/cudf.*; do \
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -67,7 +67,7 @@ $(DOSELIBS)/common.%: common/*.ml common/*.mli
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -78,7 +78,7 @@ $(DOSELIBS)/versioning.%: versioning/*.ml versioning/*.mli
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -88,7 +88,7 @@ $(DOSELIBS)/algo.%: algo/*.ml algo/*.mli $(DOSELIBS)/common.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -98,7 +98,7 @@ $(DOSELIBS)/debian.%: deb/*.ml deb/*.mli $(DOSELIBS)/pef.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -108,7 +108,7 @@ $(DOSELIBS)/opam.%: opam/*.ml opam/*.mli $(DOSELIBS)/pef.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -118,7 +118,7 @@ $(DOSELIBS)/npm.%: npm/*.ml npm/*.mli $(DOSELIBS)/versioning.% $(DOSELIBS)/pef.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -128,7 +128,7 @@ $(DOSELIBS)/rpm.%: rpm/*.ml $(DOSELIBS)/algo.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -138,7 +138,7 @@ $(DOSELIBS)/pef.%: pef/*.ml pef/*.mli
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -148,7 +148,7 @@ $(DOSELIBS)/csw.%: opencsw/*.ml $(DOSELIBS)/versioning.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
-+	  rm -f $(DOSELIBS)/*.mlpack ; \
- 	  fi ; \
- 	done
- 
-@@ -158,7 +158,7 @@ $(DOSELIBS)/doseparse.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
- 	  if [ -e $$i ]; then \
- 	  cp $$i $(DOSELIBS) ; \
- 		rm $$i ;\
--	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx $(DOSELIBS)/*.ml ; \
-+	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.ml ; \
- 	  fi ; \
- 	done
- 
-@@ -168,7 +168,7 @@ $(DOSELIBS)/doseparseNoRpm.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
- 	  if [ -e $$i ]; then \
- 			cp $$i $(DOSELIBS) ;\
- 			rm $$i ;\
--			rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ;\
-+			rm -f $(DOSELIBS)/*.mlpack ;\
- 	  fi ; \
- 	done
- 
-@@ -223,7 +223,7 @@ INSTALL_STUFF_ = META
- INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cma _build/doselibs/*.cmi)
- INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cmxa _build/doselibs/*.cmxs)
- INSTALL_STUFF_ += $(wildcard _build/doselibs/*.a)
--#INSTALL_STUFF_ += $(wildcard _build/*/*.mli)
-+INSTALL_STUFF_ += $(wildcard _build/doselibs/*.mli) $(wildcard _build/doselibs/*.cmti) $(wildcard _build/doselibs/*.cmx)
- INSTALL_STUFF_ += $(wildcard _build/rpm/*.so)
- 
- exclude_cudf = $(wildcard _build/doselibs/*cudf* _build/cudf/*)
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch b/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch
deleted file mode 100644
index d2cc44c784..0000000000
--- a/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b94cf24739818e5aff397e0a83b19ea32dc81f42 Mon Sep 17 00:00:00 2001
-From: Louis Gesbert <louis.gesbert@ocamlpro.com>
-Date: Tue, 6 Feb 2018 10:15:45 +0100
-Subject: [PATCH 3/3] Add "unix" as dependency to dose3.common in META.in
-
----
- META.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/META.in b/META.in
-index aa2cd8d..0f9d337 100644
---- a/META.in
-+++ b/META.in
-@@ -8,7 +8,7 @@ package "common" (
- version = "@PACKAGE_VERSION@"
- archive(byte) = "common.cma"
- archive(native) = "common.cmxa"
--requires = "extlib, re.pcre, cudf, @ZIP@, @BZ2@"
-+requires = "extlib, re.pcre, cudf, unix, @ZIP@, @BZ2@"
- )
- 
- package "algo" (
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
deleted file mode 100644
index 84b6a3b81b..0000000000
--- a/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/configure
-+++ b/configure
-@@ -6552,6 +6552,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
- $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
- fi
--
--
--make printconf
