diff --git a/gnu/local.mk b/gnu/local.mk
index 2948bfb1bf..63aa4e6da6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2338,7 +2338,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/transmission-4.0.6-fix-build.patch	\
   %D%/packages/patches/trytond-add-guix_trytond_path.patch	\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
-  %D%/packages/patches/tup-unbundle-dependencies.patch		\
   %D%/packages/patches/turbovnc-custom-paths.patch		\
   %D%/packages/patches/turbovnc-find-system-packages.patch	\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index c0e67fed59..be33e0dc50 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -607,65 +607,79 @@ (define-public scons-python2
 (define-public tup
   (package
     (name "tup")
-    (version "0.7.11")
+    (version "0.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://gittup.org/tup/releases/tup-v"
+              (uri (string-append "https://gittup.org/tup/releases/tup-v"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1157qfnhjakm3h07y7h38lrjw5650gkif34k30bnrsypmwl5xyzb"))
-              (patches (search-patches "tup-unbundle-dependencies.patch"))
+                "1yv60apd8dsigb74cjw1nzvqqqpjbsxz1i9dhq24jdkjwgsra3w4"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; NOTE: Tup uses a slightly modified Lua, so it cannot be
-                  ;; unbundled.  See: src/lula/tup-lua.patch
+                  ;; unbundled.  See: src/lua/tup-lua.patch
                   (delete-file-recursively "src/pcre")
                   (delete-file-recursively "src/sqlite3")
-                  #t))))
+                  (delete-file-recursively "src/inih")
+                  ;; ldpreload Used only on BSD.  Deleting to avoid putting
+                  ;; license:bsd-2 in the licenses field
+                  (delete-file-recursively "src/ldpreload")))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ;; There is a bootstrap script, but it doesn't do what you think - it
-         ;; builds tup.
-         (delete 'bootstrap)
-         (replace 'configure
-           (lambda _
-             (substitute* "src/tup/link.sh"
-               (("`git describe`") ,version))
-             (with-output-to-file "tup.config"
-               (lambda _
-                 (format #t "CONFIG_TUP_USE_SYSTEM_SQLITE=y~%")))
-             #t))
-         (delete 'check)
-         (replace 'build
-           (lambda _
-             ;; Based on bootstrap-nofuse.sh, but with a detour to patch-shebang.
-             (invoke "./build.sh")
-             (invoke "./build/tup" "init")
-             (invoke "./build/tup" "generate" "--verbose" "build-nofuse.sh")
-             (patch-shebang "build-nofuse.sh")
-             (invoke "./build-nofuse.sh")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((outdir (assoc-ref outputs "out"))
-                    (ftdetect (string-append outdir
-                                             "/share/vim/vimfiles/ftdetect")))
-               (install-file "tup" (string-append outdir "/bin"))
-               (install-file "tup.1" (string-append outdir "/share/man/man1"))
-               (install-file "contrib/syntax/tup.vim"
-                             (string-append outdir "/share/vim/vimfiles/syntax"))
-               (mkdir-p ftdetect)
-               (with-output-to-file (string-append ftdetect "/tup.vim")
-                 (lambda _
-                   (display "au BufNewFile,BufRead Tupfile,*.tup setf tup")))
-               #t))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; There is a bootstrap script, but it doesn't do what you think - it
+          ;; builds tup.
+          (delete 'bootstrap)
+          (replace 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "build.sh"
+                ;; LDFLAGS
+                (("-lm") "-lm -lsqlite3 -linih `pcre2-config --libs8`")
+                ;; CFLAGS
+                (("-DHAVE_CONFIG_H") "-DHAVE_CONFIG_H `pcre2-config --cflags`")
+                ;; Don't build bundled inih and pcre
+                (("\\.\\./src/inih/ini\\.c \\.\\./src/pcre/\\*\\.c") "")
+                ;; Don't build bundled sqlite3
+                (("\\$CC \\$CFLAGS -c \\.\\./src/sqlite3/sqlite3\\.c.*") ""))
+              (substitute* "src/tup/option.c"
+                (("\"ini.h\"") "<ini.h>"))
+              (substitute* '("src/tup/tupid.h"
+                             "src/tup/db.c")
+                (("sqlite3/sqlite3.h")
+                 (search-input-file inputs "include/sqlite3.h")))
+              (with-output-to-file "tup.config"
+                (lambda _
+                  (format #t (string-append "CONFIG_TUP_USE_SYSTEM_SQLITE=y~%"
+                                            "CONFIG_TUP_USE_SYSTEM_PCRE=y~%"
+                                            "CONFIG_TUP_USE_SYSTEM_INIH=y~%"))))))
+          (delete 'check)    ; Most tests require fuse to be setup
+          (replace 'build
+            (lambda _
+              ;; Based on bootstrap-nofuse.sh, but with a detour to patch-shebang.
+              (invoke "./build.sh")
+              (invoke "./build/tup" "init")
+              (invoke "./build/tup" "generate" "--verbose" "build-nofuse.sh")
+              (patch-shebang "build-nofuse.sh")
+              (invoke "./build-nofuse.sh")))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((outdir (assoc-ref outputs "out"))
+                     (ftdetect (string-append outdir
+                                              "/share/vim/vimfiles/ftdetect")))
+                (install-file "tup" (string-append outdir "/bin"))
+                (install-file "tup.1" (string-append outdir "/share/man/man1"))
+                (install-file "contrib/syntax/tup.vim"
+                              (string-append outdir "/share/vim/vimfiles/syntax"))
+                (mkdir-p ftdetect)
+                (with-output-to-file (string-append ftdetect "/tup.vim")
+                  (lambda _
+                    (display "au BufNewFile,BufRead Tupfile,*.tup setf tup")))))))))
     (inputs
-     (list fuse pcre
-           `(,pcre "bin") ; pcre-config
-           sqlite))
+     (list fuse libinih pcre2 sqlite))
     (native-inputs
      (list pkg-config))
     (home-page "https://gittup.org/tup/")
@@ -675,7 +689,9 @@ (define-public tup
 exact dependencies of the commands, allowing you to take advantage of ideal
 parallelism during incremental builds, and detecting any situations where
 a build worked by accident.")
-    (license license:gpl2)))
+    (license (list
+              license:gpl2
+              license:x11))))     ; src/lua
 
 (define-public osc
   (package
diff --git a/gnu/packages/patches/tup-unbundle-dependencies.patch b/gnu/packages/patches/tup-unbundle-dependencies.patch
deleted file mode 100644
index 6409522bd3..0000000000
--- a/gnu/packages/patches/tup-unbundle-dependencies.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-Allow building tup after removing some bundled sources from the source
-tree.
-
-diff --git a/build.sh b/build.sh
-index 2937116d..eab650f7 100755
---- a/build.sh
-+++ b/build.sh
-@@ -16,7 +16,7 @@ else
- 	echo "Error: invalid TUP_SERVER \"$server\"" 1>&2
- 	exit 1
- fi
--LDFLAGS="$LDFLAGS -lm"
-+LDFLAGS="$LDFLAGS -lm -lsqlite3 `pcre-config --libs`"
- : ${CC:=gcc}
- case "$os" in
- 	Linux)
-@@ -65,17 +65,15 @@ mkdir luabuiltin
- 
- CFLAGS="$CFLAGS -DTUP_SERVER=\"$server\""
- CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
-+CFLAGS="$CFLAGS `pcre-config --cflags`"
- 
--for i in ../src/tup/*.c ../src/tup/tup/main.c ../src/tup/monitor/null.c ../src/tup/flock/fcntl.c ../src/inih/ini.c ../src/pcre/*.c $plat_files; do
-+for i in ../src/tup/*.c ../src/tup/tup/main.c ../src/tup/monitor/null.c ../src/tup/flock/fcntl.c ../src/inih/ini.c $plat_files; do
- 	echo "  bootstrap CC $CFLAGS $i"
- 	# Put -I. first so we find our new luabuiltin.h file, not one built
- 	# by a previous 'tup upd'.
--	$CC $CFLAGS -c $i -I. -I../src -I../src/pcre $plat_cflags
-+	$CC $CFLAGS -c $i -I. -I../src $plat_cflags
- done
- 
--echo "  bootstrap CC $CFLAGS ../src/sqlite3/sqlite3.c"
--$CC $CFLAGS -c ../src/sqlite3/sqlite3.c -DSQLITE_TEMP_STORE=2 -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION $plat_cflags
--
- echo "  bootstrap LD tup $LDFLAGS"
- echo "const char *tup_version(void) {return \"$label\";}" | $CC -x c -c - -o tup_version.o
- $CC *.o -o tup -lpthread $plat_ldflags $LDFLAGS
-diff --git a/src/tup/db.c b/src/tup/db.c
-index 55ee3edd..9bdf7a80 100644
---- a/src/tup/db.c
-+++ b/src/tup/db.c
-@@ -46,7 +46,7 @@
- #include <errno.h>
- #include <ctype.h>
- #include <sys/stat.h>
--#include "sqlite3/sqlite3.h"
-+#include <sqlite3.h>
- 
- #define DB_VERSION 17
- #define PARSER_VERSION 12
-diff --git a/src/tup/tupid.h b/src/tup/tupid.h
-index 7b36ae46..19aed438 100644
---- a/src/tup/tupid.h
-+++ b/src/tup/tupid.h
-@@ -21,7 +21,7 @@
- #ifndef tup_tupid_h
- #define tup_tupid_h
- 
--#include "sqlite3/sqlite3.h"
-+#include <sqlite3.h>
- 
- typedef sqlite3_int64 tupid_t;
- 
--- 
-2.26.2
-
