diff --git a/gnu/local.mk b/gnu/local.mk
index 77707127a7..efe507905f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1657,10 +1657,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/nvi-db4.patch				\
   %D%/packages/patches/nyacc-binary-literals.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 e5b1ea47ba..999b3a3ef2 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,29 +722,16 @@ (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))
+                "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 "https://www.mancoosi.org/software/")
     (synopsis "Package distribution management framework")
     (description "Dose3 is a framework made of several OCaml libraries for
@@ -849,7 +836,7 @@ (define-public ocaml-opam-file-format
 (define ocaml-opam-core
   (package
     (name "ocaml-opam-core")
-    (version "2.1.3")
+    (version "2.1.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -858,7 +845,7 @@ (define ocaml-opam-core
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1mw535zsw7xlvpgwnk1dan76z3f7lh5imlg0s6kdyhfg0iqisjd7"))))
+                "0ckd87rcmcz11iyhhm5qnmy27jbdffx6n1fr06hvrqqrzi00jljh"))))
     (build-system dune-build-system)
     (arguments `(#:package "opam-core"
                  ;; tests are run with the opam package
@@ -1072,6 +1059,8 @@ (define-public opam
          ("which" ,which)
 
          ;; Data for tests
+         ("opam-repo-0070613707" ,(opam-repo "00706137074d536d2019d2d222fbe1bea929deda"
+                                             "1gv1vvmfscj7wirfv6qncp8pf81wygnpzjwd0lyqcxm7g8r8lb4w"))
          ("opam-repo-009e00fa" ,(opam-repo "009e00fa86300d11c311309a2544e5c6c3eb8de2"
                                            "1wwy0rwrsjf4q10j1rh1dazk32fbzhzy6f7zl6qmndidx9b1bq7w"))
          ("opam-repo-7090735c" ,(opam-repo "7090735c9d1dd2dc481c4128c5ef4d3667238f15"
@@ -1080,10 +1069,21 @@ (define-public opam
                                            "0z7kawqisy07088p5xjxwpvmvzlbj1d9cgdipsj90yx7nc5qh369"))
          ("opam-repo-ad4dd344" ,(opam-repo "ad4dd344fe5cd1cab49ced49d6758a9844549fb4"
                                            "1a1qj47kj8xjdnc4zc50ijrix1kym1n7k20n3viki80a7518baw8"))
+         ("opam-repo-c1842d168d" ,(opam-repo "c1842d168de956caf06d7ac8588e65020d7594d8"
+                                             "142y1ac7sprygyh91shcp0zcyfxjjkshi9g44qgg4rx60rbsbhai"))
          ("opam-repo-c1d23f0e" ,(opam-repo "c1d23f0e17ec83a036ebfbad1c78311b898a2ca0"
                                            "0j9abisx3ifzm66ci3p45mngmz4f0fx7yd9jjxrz3f8w5jffc9ii"))
          ("opam-repo-f372039d" ,(opam-repo "f372039db86a970ef3e662adbfe0d4f5cd980701"
-                                           "0ld7fcry6ss6fmrpswvr6bikgx299w97h0gwrjjh7kd7rydsjdws")))))
+                                           "0ld7fcry6ss6fmrpswvr6bikgx299w97h0gwrjjh7kd7rydsjdws"))
+         ("opam-repo-11ea1cb" ,(opam-repo "11ea1cb6f2418b1f8a6679e4422771a04c9c3655"
+                                          "1s4p0wfn3bx97yvm8xvj3yhzv2pz0jwml68g2ybv37hj9mpbrsq0"))
+         ("opam-repo-297366c" ,(opam-repo "297366cd01c3aaf29b967bf0b34ccc7989d4d5b3"
+                                          "1ysg69gys37nc2cxivs2ikh6xp0gj85if4rcrr874mqb9z12dm0j"))
+         ("opam-repo-3235916" ,(opam-repo "3235916a162a59d7c82dac3fe24214975d48f1aa"
+                                          "1yf73rv2n740a4s9g7a9k4j91b4k7al88nwnw9cdw0k2ncbmr486"))
+         ("opam-repo-de897adf36c4230dfea812f40c98223b31c4521a"
+          ,(opam-repo "de897adf36c4230dfea812f40c98223b31c4521a"
+                      "1m18x9gcwnbar8yv9sbfz8a3qpw412fp9cf4d6fb7syn0p0h96jw")))))
     (inputs (list ocaml-opam-client))
     (properties
      ;; OPAM is used as a tool and not as a library, we can use the OCaml 4.14
@@ -4442,8 +4442,7 @@ (define-public ocaml-base64
                (base32
                 "068hwdbpl7vx9jjpxdc6a10zqd8xa55j3xx7ga6fnwrlfsbs2pjj"))))
     (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")
@@ -4452,6 +4451,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
@@ -5324,27 +5331,22 @@ (define-public ocaml4.07-uuidm
 (define-public ocaml-graph
   (package
     (name "ocaml-graph")
-    (version "1.8.8")
+    (home-page "https://github.com/backtracking/ocamlgraph/")
+    (version "2.0.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "http://ocamlgraph.lri.fr/download/"
-                                  "ocamlgraph-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url home-page)
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0m9g16wrrr86gw4fz2fazrh8nkqms0n863w7ndcvrmyafgxvxsnr"))))
-    (build-system ocaml-build-system)
-    (arguments
-     `(#:install-target "install-findlib"
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'set-shell
-           (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "CONFIG_SHELL"
-                     (search-input-file inputs "/bin/sh")))))))
-    (inputs (list lablgtk))
+                "1gjrsyyamvvn2rd9n9yjx6hsglhw0dbm4cgazq0dpx0bbr4inwc3"))))
+    (build-system dune-build-system)
+    (arguments `(#:package "ocamlgraph"))
+    (propagated-inputs (list ocaml-stdlib-shims))
+    (native-inputs (list ocaml-graphics))
     (properties `((upstream-name . "ocamlgraph")))
-    (home-page "https://ocamlgraph.lri.fr/")
     (synopsis "Graph library for OCaml")
     (description "OCamlgraph is a generic graph library for OCaml.")
     (license license:lgpl2.1)))
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
