Subject: [PATCH] Move diffoscope from package-management to it's own module.

From: Vagrant Cascadian <[email-masked]>
Date: Sun, 08 Sep 2019 16:35:19 -0700

I was having infinite recursion issues importing additional modules such
as android.scm, bootloaders.scm and statistics.scm into
package-management.scm with use-modules calls, along these lines:

error: googletest: unbound variable
hint: Did you forget a `use-modules' form?
...
error: curl: unbound variable
hint: Did you forget a `use-modules' form?

guix build: error: diffoscope: unknown package

Moving diffoscope to it's own package module seemed to at least work
around the issue. Diffoscope itself attempts to deal with an arbitrary
and growing number of file types, so pulls in quite a few other package
modules, so at least splitting it into a separate module might limit the
impacts on other modules.

Attached are two patches attempting the split; comments welcome!

The first patch is the move itself, and also moves trydiffoscope; the
second patch adds the package modules that previously would fail to
import properly before the move.

This allows diffoscope to run a few additional tests, getting the test
suite down to only about 68 skipped tests (and falling); it was around
140 skipped tests before I started this mad rush...

live well,
  vagrant

From 352058f2ef002e77df6633c00ba009088bf5e8bd Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <[email-masked]>
Date: Sun, 8 Sep 2019 14:36:33 -0700
Subject: [PATCH 1/2] gnu: Move diffoscope and trydiffoscope to new
 diffoscope.scm.

* gnu/packages/package-management (diffoscope): Remove variable.
  (trydiffoscope): Remove variable.
  (use-modules): Remove modules only needed by diffoscope.
  Update copyright information.
* gnu/packages/diffoscope.scm: New file.
  (diffoscope): Add variable.
  (trydiffoscope): Add variable.
* gnu/local.mk [GNU_SYSTEM_MODULES]: Add diffoscope.scm.
---
 gnu/local.mk                        |   1 +
 gnu/packages/diffoscope.scm         | 231 ++++++++++++++++++++++++++++
 gnu/packages/package-management.scm | 183 ----------------------
 3 files changed, 232 insertions(+), 183 deletions(-)
 create mode 100644 gnu/packages/diffoscope.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b7a5ef825b..e15c50be45 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -143,6 +143,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/dejagnu.scm			\
   %D%/packages/dico.scm				\
   %D%/packages/dictionaries.scm			\
+  %D%/packages/diffoscope.scm			\
   %D%/packages/digest.scm			\
   %D%/packages/direct-connect.scm		\
   %D%/packages/disk.scm				\
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
new file mode 100644
index 0000000000..6eb5c1d9fe
--- /dev/null
+++ b/gnu/packages/diffoscope.scm
@@ -0,0 +1,231 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <[email-masked]>
+;;; Copyright © 2017 Ricardo Wurmus <[email-masked]>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <[email-masked]>
+;;; Copyright © 2018 Julien Lepiller <[email-masked]>
+;;; Copyright © 2018, 2019 Rutger Helling <[email-masked]>
+;;; Copyright © 2019 Vagrant Cascadian <[email-masked]>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages diffoscope)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages acl)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages cdrom)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages dbm)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages mono)
+  #:use-module (gnu packages package-management)
+  #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages vim)
+  #:use-module (guix build-system python)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
+
+(define-public diffoscope
+  (let ((version "123"))
+    (package
+      (name "diffoscope")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
+                      (commit version)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "11bxms5rkhi0v4pxx29v4qgvhp3fmf0fkzci6gn5xcv4fl1zy4wj"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    ;; setup.py mistakenly requires python-magic from PyPi, even
+                    ;; though the Python bindings of `file` are sufficient.
+                    ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
+                    (add-after 'unpack 'dependency-on-python-magic
+                      (lambda _
+                        (substitute* "setup.py"
+                          (("'python-magic',") ""))))
+                    ;; This test is broken because our `file` package has a
+                    ;; bug in berkeley-db file type detection.
+                    (add-after 'unpack 'remove-berkeley-test
+                      (lambda _
+                        (delete-file "tests/comparators/test_berkeley_db.py")
+                        #t))
+                    ;; Test is dynamically generated and may have false
+                    ;; negatives with different ocaml versions.  Further
+                    ;; background in: https://bugs.debian.org/939386
+                    (add-after 'unpack 'remove-ocaml-test
+                      (lambda _
+                        (delete-file "tests/comparators/test_ocaml.py")
+                        #t))
+                    (add-after 'unpack 'embed-tool-references
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "diffoscope/comparators/utils/compare.py"
+                          (("\\['xxd',")
+                           (string-append "['" (which "xxd") "',")))
+                        (substitute* "diffoscope/comparators/elf.py"
+                          (("@tool_required\\('readelf'\\)") "")
+                          (("get_tool_name\\('readelf'\\)")
+                           (string-append "'" (which "readelf") "'")))
+                        (substitute* "diffoscope/comparators/directory.py"
+                          (("@tool_required\\('stat'\\)") "")
+                          (("@tool_required\\('getfacl'\\)") "")
+                          (("\\['stat',")
+                           (string-append "['" (which "stat") "',"))
+                          (("\\['getfacl',")
+                           (string-append "['" (which "getfacl") "',")))
+                        #t))
+                    (add-before 'check 'writable-test-data
+                      (lambda _
+                        ;; tests may need needs write access to tests
+                        ;; directory
+                        (for-each make-file-writable (find-files "tests"))
+                        #t))
+                    (add-before 'check 'delete-failing-test
+                      (lambda _
+                        ;; this requires /sbin to be on the path
+                        (delete-file "tests/test_tools.py")
+                        #t)))))
+      (inputs `(("rpm" ,rpm)                        ;for rpm-python
+                ("python-file" ,python-file)
+                ("python-debian" ,python-debian)
+                ("python-libarchive-c" ,python-libarchive-c)
+                ("python-tlsh" ,python-tlsh)
+                ("acl" ,acl)                        ;for getfacl
+                ("colordiff" ,colordiff)
+                ("xxd" ,xxd)))
+      ;; Below are modules used for tests.
+      (native-inputs `(("python-pytest" ,python-pytest)
+                       ("python-chardet" ,python-chardet)
+                       ;; test suite skips tests when tool is missing
+                       ("bdb" ,bdb)
+                       ("binutils" ,binutils)
+                       ("bzip2" ,bzip2)
+                       ("cdrtools" ,cdrtools)
+                       ("colord" ,colord)
+                       ("cpio" ,cpio)
+                       ("docx2txt" ,docx2txt)
+                       ("e2fsprogs" ,e2fsprogs)
+                       ("ffmpeg" ,ffmpeg)
+                       ("gettext" ,gettext-minimal)
+                       ("ghc" ,ghc)
+                       ("ghostscript" ,ghostscript)
+                       ("giflib:bin" ,giflib "bin")
+                       ("gnumeric" ,gnumeric)
+                       ("gnupg" ,gnupg)
+                       ("imagemagick" ,imagemagick)
+                       ("libarchive" ,libarchive)
+                       ("llvm" ,llvm)
+                       ("lz4" ,lz4)
+                       ("mono" ,mono)
+                       ("odt2txt" ,odt2txt)
+                       ;; no unversioned openjdk available
+                       ("openjdk:jdk" ,openjdk12 "jdk")
+                       ("openssh" ,openssh)
+                       ("pgpdump" ,pgpdump)
+                       ("poppler" ,poppler)
+                       ("rpm" ,rpm)
+                       ("sng" ,sng)
+                       ("sqlite" ,sqlite)
+                       ("squashfs-tools" ,squashfs-tools)
+                       ("tcpdump" ,tcpdump)
+                       ("unzip" ,unzip)
+                       ("xxd" ,xxd)
+                       ("xz" ,xz)
+                       ("zip" ,zip)))
+      (home-page "https://diffoscope.org/")
+      (synopsis "Compare files, archives, and directories in depth")
+      (description
+       "Diffoscope tries to get to the bottom of what makes files or directories
+different.  It recursively unpacks archives of many kinds and transforms
+various binary formats into more human readable forms to compare them.  It can
+compare two tarballs, ISO images, or PDFs just as easily.")
+      (license license:gpl3+))))
+
+(define-public trydiffoscope
+ (package
+   (name "trydiffoscope")
+   (version "67.0.1")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
+            (commit version)))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((share (string-append (assoc-ref outputs "out") "/share/")))
+               (mkdir-p (string-append share "/man/man1/" ))
+               (invoke "rst2man.py"
+                       "trydiffoscope.1.rst"
+                       (string-append share "/man/man1/trydiffoscope.1"))
+               (mkdir-p (string-append share "/doc/" ,name "-" ,version))
+               (install-file "./README.rst"
+                          (string-append share "/doc/" ,name "-" ,version)))
+             #t)))))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("python-docutils" ,python-docutils)))
+    (build-system python-build-system)
+    (home-page "https://try.diffoscope.org")
+    (synopsis "Client for remote diffoscope service")
+    (description "This is a client for the @url{https://try.diffoscope.org,
+remote diffoscope service}.
+
+Diffoscope tries to get to the bottom of what makes files or directories
+different.  It recursively unpacks archives of many kinds and transforms
+various binary formats into more human readable forms to compare them.  It can
+compare two tarballs, ISO images, or PDFs just as easily.
+
+Results are displayed by default, stored as local text or html files, or made
+available via a URL on @url{https://try.diffoscope.org}.  Results stored on the
+server are purged after 30 days.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 18e8a3853f..965d129937 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -10,7 +10,6 @@
 ;;; Copyright © 2018 Sou Bunnbu <[email-masked]>
 ;;; Copyright © 2018, 2019 Eric Bavier <[email-masked]>
 ;;; Copyright © 2019 Efraim Flashner <[email-masked]>
-;;; Copyright © 2019 Vagrant Cascadian <[email-masked]>
 ;;; Copyright © 2019 Jonathan Brielmaier <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -31,7 +30,6 @@
 (define-module (gnu packages package-management)
   #:use-module (gnu packages)
   #:use-module (gnu packages acl)
-  #:use-module (gnu packages admin)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages autotools)
@@ -40,7 +38,6 @@
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages bootstrap)          ;for 'bootstrap-guile-origin'
-  #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpio)
@@ -50,7 +47,6 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -58,19 +54,12 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages guile-xyz)
-  #:use-module (gnu packages haskell)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp)
-  #:use-module (gnu packages llvm)
   #:use-module (gnu packages man)
-  #:use-module (gnu packages mono)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages patchutils)
-  #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
@@ -82,10 +71,8 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages textutils)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages video)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages web)
@@ -558,176 +545,6 @@ transactions from C or Python.")
     ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
     (license license:gpl2+)))
 
-(define-public diffoscope
-  (let ((version "123"))
-    (package
-      (name "diffoscope")
-      (version version)
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
-                      (commit version)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "11bxms5rkhi0v4pxx29v4qgvhp3fmf0fkzci6gn5xcv4fl1zy4wj"))))
-      (build-system python-build-system)
-      (arguments
-       `(#:phases (modify-phases %standard-phases
-                    ;; setup.py mistakenly requires python-magic from PyPi, even
-                    ;; though the Python bindings of `file` are sufficient.
-                    ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
-                    (add-after 'unpack 'dependency-on-python-magic
-                      (lambda _
-                        (substitute* "setup.py"
-                          (("'python-magic',") ""))))
-                    ;; This test is broken because our `file` package has a
-                    ;; bug in berkeley-db file type detection.
-                    (add-after 'unpack 'remove-berkeley-test
-                      (lambda _
-                        (delete-file "tests/comparators/test_berkeley_db.py")
-                        #t))
-                    ;; Test is dynamically generated and may have false
-                    ;; negatives with different ocaml versions.  Further
-                    ;; background in: https://bugs.debian.org/939386
-                    (add-after 'unpack 'remove-ocaml-test
-                      (lambda _
-                        (delete-file "tests/comparators/test_ocaml.py")
-                        #t))
-                    (add-after 'unpack 'embed-tool-references
-                      (lambda* (#:key inputs #:allow-other-keys)
-                        (substitute* "diffoscope/comparators/utils/compare.py"
-                          (("\\['xxd',")
-                           (string-append "['" (which "xxd") "',")))
-                        (substitute* "diffoscope/comparators/elf.py"
-                          (("@tool_required\\('readelf'\\)") "")
-                          (("get_tool_name\\('readelf'\\)")
-                           (string-append "'" (which "readelf") "'")))
-                        (substitute* "diffoscope/comparators/directory.py"
-                          (("@tool_required\\('stat'\\)") "")
-                          (("@tool_required\\('getfacl'\\)") "")
-                          (("\\['stat',")
-                           (string-append "['" (which "stat") "',"))
-                          (("\\['getfacl',")
-                           (string-append "['" (which "getfacl") "',")))
-                        #t))
-                    (add-before 'check 'writable-test-data
-                      (lambda _
-                        ;; tests may need needs write access to tests
-                        ;; directory
-                        (for-each make-file-writable (find-files "tests"))
-                        #t))
-                    (add-before 'check 'delete-failing-test
-                      (lambda _
-                        ;; this requires /sbin to be on the path
-                        (delete-file "tests/test_tools.py")
-                        #t)))))
-      (inputs `(("rpm" ,rpm)                        ;for rpm-python
-                ("python-file" ,python-file)
-                ("python-debian" ,python-debian)
-                ("python-libarchive-c" ,python-libarchive-c)
-                ("python-tlsh" ,python-tlsh)
-                ("acl" ,acl)                        ;for getfacl
-                ("colordiff" ,colordiff)
-                ("xxd" ,xxd)))
-      ;; Below are modules used for tests.
-      (native-inputs `(("python-pytest" ,python-pytest)
-                       ("python-chardet" ,python-chardet)
-                       ;; test suite skips tests when tool is missing
-                       ("bdb" ,bdb)
-                       ("binutils" ,binutils)
-                       ("bzip2" ,bzip2)
-                       ("cdrtools" ,cdrtools)
-                       ("colord" ,colord)
-                       ("cpio" ,cpio)
-                       ("docx2txt" ,docx2txt)
-                       ("e2fsprogs" ,e2fsprogs)
-                       ("ffmpeg" ,ffmpeg)
-                       ("gettext" ,gettext-minimal)
-                       ("ghc" ,ghc)
-                       ("ghostscript" ,ghostscript)
-                       ("giflib:bin" ,giflib "bin")
-                       ("gnumeric" ,gnumeric)
-                       ("gnupg" ,gnupg)
-                       ("imagemagick" ,imagemagick)
-                       ("libarchive" ,libarchive)
-                       ("llvm" ,llvm)
-                       ("lz4" ,lz4)
-                       ("mono" ,mono)
-                       ("odt2txt" ,odt2txt)
-                       ;; no unversioned openjdk available
-                       ("openjdk:jdk" ,openjdk12 "jdk")
-                       ("openssh" ,openssh)
-                       ("pgpdump" ,pgpdump)
-                       ("poppler" ,poppler)
-                       ("rpm" ,rpm)
-                       ("sng" ,sng)
-                       ("sqlite" ,sqlite)
-                       ("squashfs-tools" ,squashfs-tools)
-                       ("tcpdump" ,tcpdump)
-                       ("unzip" ,unzip)
-                       ("xxd" ,xxd)
-                       ("xz" ,xz)
-                       ("zip" ,(@ (gnu packages compression) zip))))
-      (home-page "https://diffoscope.org/")
-      (synopsis "Compare files, archives, and directories in depth")
-      (description
-       "Diffoscope tries to get to the bottom of what makes files or directories
-different.  It recursively unpacks archives of many kinds and transforms
-various binary formats into more human readable forms to compare them.  It can
-compare two tarballs, ISO images, or PDFs just as easily.")
-      (license license:gpl3+))))
-
-(define-public trydiffoscope
- (package
-   (name "trydiffoscope")
-   (version "67.0.1")
-   (source
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
-            (commit version)))
-      (file-name (git-file-name name version))
-      (sha256
-       (base32
-        "03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((share (string-append (assoc-ref outputs "out") "/share/")))
-               (mkdir-p (string-append share "/man/man1/" ))
-               (invoke "rst2man.py"
-                       "trydiffoscope.1.rst"
-                       (string-append share "/man/man1/trydiffoscope.1"))
-               (mkdir-p (string-append share "/doc/" ,name "-" ,version))
-               (install-file "./README.rst"
-                          (string-append share "/doc/" ,name "-" ,version)))
-             #t)))))
-    (propagated-inputs
-     `(("python-requests" ,python-requests)))
-    (native-inputs
-     `(("gzip" ,gzip)
-       ("python-docutils" ,python-docutils)))
-    (build-system python-build-system)
-    (home-page "https://try.diffoscope.org")
-    (synopsis "Client for remote diffoscope service")
-    (description "This is a client for the @url{https://try.diffoscope.org,
-remote diffoscope service}.
-
-Diffoscope tries to get to the bottom of what makes files or directories
-different.  It recursively unpacks archives of many kinds and transforms
-various binary formats into more human readable forms to compare them.  It can
-compare two tarballs, ISO images, or PDFs just as easily.
-
-Results are displayed by default, stored as local text or html files, or made
-available via a URL on @url{https://try.diffoscope.org}.  Results stored on the
-server are purged after 30 days.")
-    (license license:gpl3+)))
-
 (define-public python-anaconda-client
   (package
     (name "python-anaconda-client")
-- 
2.20.1

From c4ef8545514b4d594ab6fc083c954a22eace3786 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <[email-masked]>
Date: Sun, 8 Sep 2019 15:35:33 -0700
Subject: [PATCH 2/2] gnu: diffoscope: Add additional test dependencies.

* gnu/packages/diffoscope (diffoscope)[native-inputs]: Add abootimg, dtc,
  and r-minimal.
  (use-module): Add android, bootloaders and statistics, respectively.
---
 gnu/packages/diffoscope.scm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 6eb5c1d9fe..828e06a818 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -25,8 +25,10 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages acl)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages android)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -50,6 +52,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages statistics)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vim)
@@ -137,6 +140,7 @@
       (native-inputs `(("python-pytest" ,python-pytest)
                        ("python-chardet" ,python-chardet)
                        ;; test suite skips tests when tool is missing
+                       ("abootimg" ,abootimg)
                        ("bdb" ,bdb)
                        ("binutils" ,binutils)
                        ("bzip2" ,bzip2)
@@ -144,6 +148,7 @@
                        ("colord" ,colord)
                        ("cpio" ,cpio)
                        ("docx2txt" ,docx2txt)
+                       ("dtc" ,dtc)
                        ("e2fsprogs" ,e2fsprogs)
                        ("ffmpeg" ,ffmpeg)
                        ("gettext" ,gettext-minimal)
@@ -163,6 +168,7 @@
                        ("openssh" ,openssh)
                        ("pgpdump" ,pgpdump)
                        ("poppler" ,poppler)
+                       ("r-minimal" ,r-minimal)
                        ("rpm" ,rpm)
                        ("sng" ,sng)
                        ("sqlite" ,sqlite)
-- 
2.20.1