gnu: thinkfan: Let the build system handle rcscripts/.
[jackhill/guix/guix.git] / gnu / packages / linux.scm
index 982fbe5..dd9e19a 100644 (file)
@@ -2,17 +2,17 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2016, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
@@ -31,6 +31,7 @@
 ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;; Copyright © 2018 Manuel Graf <graf@init.at>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -64,7 +65,7 @@
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
+  #:use-module (gnu packages dbm)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
@@ -97,6 +98,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages rrdtool)
   #:use-module (gnu packages samba)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages slang)
   #:use-module (gnu packages storage)
   #:use-module (gnu packages texinfo)
@@ -412,10 +414,10 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 It has been modified to remove all non-free binary blobs.")
     (license license:gpl2)))
 
-(define %linux-libre-version "4.19.13")
-(define %linux-libre-hash "0ac0ywy542fiwdiab2z12rbjn9zw8vjbzkbpmpk9nfic2mcyrg8r")
+(define %linux-libre-version "4.20.13")
+(define %linux-libre-hash "00rqdsqyz0csdblcmifyhkgzvsmnqsh090i6h30146rsf3707xad")
 
-(define %linux-libre-4.19-patches
+(define %linux-libre-4.20-patches
   (list %boot-logo-patch
         %linux-libre-arm-export-__sync_icache_dcache-patch))
 
@@ -423,11 +425,25 @@ It has been modified to remove all non-free binary blobs.")
   (make-linux-libre %linux-libre-version
                     %linux-libre-hash
                     '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
+                    #:patches %linux-libre-4.20-patches
+                    #:configuration-file kernel-config))
+
+(define %linux-libre-4.19-version "4.19.26")
+(define %linux-libre-4.19-hash "0xp1hqcwimyvzzbci741vymc8mrgk3cycv8l020zas1dfw5wn48c")
+
+(define %linux-libre-4.19-patches
+  (list %boot-logo-patch
+        %linux-libre-arm-export-__sync_icache_dcache-patch))
+
+(define-public linux-libre-4.19
+  (make-linux-libre %linux-libre-4.19-version
+                    %linux-libre-4.19-hash
+                    '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
                     #:patches %linux-libre-4.19-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.91")
-(define %linux-libre-4.14-hash "1xr4q6hqjg4fjcd1w8qi2x9a11ms9wvascy9b1p6czblg9j9dd6a")
+(define %linux-libre-4.14-version "4.14.104")
+(define %linux-libre-4.14-hash "0x7jzazl0yzdc9m1ycwcywjpj6w30mabks4qs9asdy5622282b4v")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -436,14 +452,14 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.148"
-                    "0yrjgvdzbcp750j4fhlxi4ia1v0fqh0y3p99wnbpfvg17j01lbjl"
+  (make-linux-libre "4.9.161"
+                    "0r35qlc8yj9svryv0v91j134vr35d23sz5aj7f2h8c99iakbm6zw"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.169"
-                    "1snjdih9iv3fg7f9h2r1gldcqmvzj1w398aysws4fialj488x1p4"
+  (make-linux-libre "4.4.176"
+                    "0c300zqmsadahs2fpzxh6cn7q3h7jxq69msd17rh8v3wnvql8vzx"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
@@ -451,6 +467,14 @@ It has been modified to remove all non-free binary blobs.")
   (make-linux-libre %linux-libre-version
                     %linux-libre-hash
                     '("armhf-linux")
+                    #:patches %linux-libre-4.20-patches
+                    #:defconfig "multi_v7_defconfig"
+                    #:extra-version "arm-generic"))
+
+(define-public linux-libre-arm-generic-4.19
+  (make-linux-libre %linux-libre-4.19-version
+                    %linux-libre-4.19-hash
+                    '("armhf-linux")
                     #:patches %linux-libre-4.19-patches
                     #:defconfig "multi_v7_defconfig"
                     #:extra-version "arm-generic"))
@@ -466,6 +490,14 @@ It has been modified to remove all non-free binary blobs.")
   (make-linux-libre %linux-libre-version
                     %linux-libre-hash
                     '("armhf-linux")
+                    #:patches %linux-libre-4.20-patches
+                    #:defconfig "omap2plus_defconfig"
+                    #:extra-version "arm-omap2plus"))
+
+(define-public linux-libre-arm-omap2plus-4.19
+  (make-linux-libre %linux-libre-4.19-version
+                    %linux-libre-4.19-hash
+                    '("armhf-linux")
                     #:patches %linux-libre-4.19-patches
                     #:defconfig "omap2plus_defconfig"
                     #:extra-version "arm-omap2plus"))
@@ -760,7 +792,7 @@ slabtop, and skill.")
 (define-public e2fsprogs
   (package
     (name "e2fsprogs")
-    (version "1.44.3")
+    (version "1.44.5")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -769,7 +801,7 @@ slabtop, and skill.")
                    name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1djb9qnid1j0vvna2bhq4jsz2ig1xckbx7h4d86cr0gl61yrz2ax"))))
+               "1ff56h6h1h17sj2zvlddv5c88nmbx46p1fcbh6b0s5k9kl3b6pms"))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))
     (native-inputs `(("pkg-config" ,pkg-config)
@@ -996,7 +1028,7 @@ intercept and print the system calls executed by the program.")
 (define-public alsa-lib
   (package
     (name "alsa-lib")
-    (version "1.1.6")
+    (version "1.1.7")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1004,7 +1036,7 @@ intercept and print the system calls executed by the program.")
                    version ".tar.bz2"))
              (sha256
               (base32
-               "096pwrnhj36yndldvs2pj4r871zhcgisks0is78f1jkjn9sd4b2z"))))
+               "02fw7dw202mjid49w9ki3dsfcyvid5fj488561bdzcm3haw00q4x"))))
     (build-system gnu-build-system)
     (home-page "https://www.alsa-project.org/")
     (synopsis "The Advanced Linux Sound Architecture libraries")
@@ -1016,14 +1048,14 @@ MIDI functionality to the Linux-based operating system.")
 (define-public alsa-utils
   (package
     (name "alsa-utils")
-    (version "1.1.6")
+    (version "1.1.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
-               "0vnkyymgwj9rfdb11nvab30dnfrylmakdfildxl0y8mj836awp0m"))))
+               "02jlw6a22j2rr7inggfgk2hzx3w0fjhvhs0dn1afpzdp9aspzchx"))))
     (build-system gnu-build-system)
     (arguments
      ;; XXX: Disable man page creation until we have DocBook.
@@ -1063,14 +1095,14 @@ MIDI functionality to the Linux-based operating system.")
 (define-public alsa-plugins
   (package
     (name "alsa-plugins")
-    (version "1.1.6")
+    (version "1.1.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.alsa-project.org/pub/plugins/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
-               "04qcwkisbh0d6lnh0rw1k6n869fbs6zbfq6yvb41rymiwgmk27bg"))))
+               "0iys4zl1davzyg3mn9lvil1n3k1ifrg3v1caj3k4dqyrnrd40jx7"))))
     (build-system gnu-build-system)
     ;; TODO: Split libavcodec and speex if possible. It looks like they can not
     ;; be split, there are references to both in files.
@@ -1079,7 +1111,12 @@ MIDI functionality to the Linux-based operating system.")
     ;; obsolete.
     (outputs '("out" "pulseaudio" "jack"))
     (arguments
-     `(#:phases
+     `(#:configure-flags '(;; Do not install a "local" configuration targeted
+                           ;; for /etc/alsa.  On GuixSD plugins are loaded from
+                           ;; the ALSA service, and other distributions likely
+                           ;; won't use these files.
+                           "--with-alsalconfdir=/tmp/noop")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'install 'split
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -1088,27 +1125,17 @@ MIDI functionality to the Linux-based operating system.")
                     (jack (assoc-ref outputs "jack"))
                     (jacklib (string-append jack "/lib/alsa-lib"))
                     (pua (assoc-ref outputs "pulseaudio"))
-                    (pualib (string-append pua "/lib/alsa-lib"))
-                    (puaconf (string-append pua "/share/alsa/alsa.conf.d")))
+                    (pualib (string-append pua "/lib/alsa-lib")))
                ;; For jack.
                (mkdir-p jacklib)
                (for-each (lambda (file)
                            (rename-file file (string-append jacklib "/" (basename file))))
                          (find-files out ".*jack\\.(la|so)"))
-               ;; For pluseaudio.
-               (mkdir-p puaconf)
+               ;; For pulseaudio.
                (mkdir-p pualib)
-               (chdir (string-append out "/share"))
-               (for-each (lambda (file)
-                           (rename-file file (string-append puaconf "/" (basename file))))
-                         (find-files out "\\.(conf|example)"))
                (for-each (lambda (file)
                            (rename-file file (string-append pualib "/" (basename file))))
                          (find-files out ".*pulse\\.(la|so)"))
-               (chdir "..")
-               ;; We have moved the files to output pulsaudio, the
-               ;; directory is now empty.
-               (delete-file-recursively (string-append out "/share"))
                #t))))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -1226,7 +1253,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
 (define-public iproute
   (package
     (name "iproute2")
-    (version "4.19.0")
+    (version "4.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1234,7 +1261,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "114rlb3bvrf7q6yr03mn1rj6gl7mrg0psvm2dx0qb2kxyjhmrv6r"))))
+                "1a7xyvqjxfnm7rk21amm0xgxa38clg7q7cmc4dmlg27q81mambf8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                                ; no test suite
@@ -1480,25 +1507,23 @@ transparently through a bridge.")
          (add-after 'install 'install-python
            (lambda* (#:key outputs #:allow-other-keys)
              (define (python-inst python)
-               (let ((ldflags (format #f "LDFLAGS=-Wl,-rpath=~a/lib"
-                                      (assoc-ref %outputs "out")))
-                     (pyout (assoc-ref %outputs python)))
-                 (and
-                  (zero? (system (format #f "~a ~a setup.py build"
-                                         ldflags python pyout)))
-                  (zero?
-                   (system (format #f "~a ~a setup.py install --prefix=~a"
-                                   ldflags python pyout)))
-                  (zero? (system* python "setup.py" "clean")))))
+               (invoke python "setup.py" "build")
+               (invoke python "setup.py" "install"
+                       (string-append "--prefix="
+                                      (assoc-ref %outputs python)))
+               (invoke python "setup.py" "clean"))
+             (setenv "LDFLAGS" (format #f "-Wl,-rpath=~a/lib"
+                                       (assoc-ref %outputs "out")))
              (with-directory-excursion "./python"
-               (every python-inst '("python2" "python3")))))
+               (for-each python-inst '("python2" "python3")))
+             #t))
          (add-after 'install 'install-doc
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((dest (string-append (assoc-ref outputs "doc")
                                         "/share/doc/libnl")))
                (mkdir-p dest)
-               (zero? (system* "tar" "xf" (assoc-ref inputs "libnl3-doc")
-                               "--strip-components=1" "-C" dest))))))))
+               (invoke "tar" "xf" (assoc-ref inputs "libnl3-doc")
+                       "--strip-components=1" "-C" dest)))))))
     (home-page "https://www.infradead.org/~tgr/libnl/")
     (synopsis "NetLink protocol library suite")
     (description
@@ -1541,16 +1566,14 @@ devices.  It replaces @code{iwconfig}, which is deprecated.")
 (define-public powertop
   (package
     (name "powertop")
-    (version "2.9")
+    (version "2.10")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://01.org/sites/default/files/downloads/powertop/powertop-v"
-             version ".tar.gz"))
+       (uri (string-append "https://01.org/sites/default/files/downloads/"
+                           "powertop-v" version ".tar.gz"))
        (sha256
-        (base32
-         "0l4jjlf05li2mc6g8nrss3h435wjhmnqd8m7v3kha3x0x7cbfzxa"))))
+        (base32 "0xaazqccyd42v2q532dxx40nqhb9sfsa6cyx8641rl57mfg4bdyk"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1780,9 +1803,9 @@ UnionFS-FUSE additionally supports copy-on-write.")
                #t))))))
     (inputs `(("fuse" ,fuse-static)))))
 
-(define-public sshfs-fuse
+(define-public sshfs
   (package
-    (name "sshfs-fuse")
+    (name "sshfs")
     (version "2.10")
     (source (origin
               (method url-fetch)
@@ -1807,23 +1830,27 @@ up: on the server side there's nothing to do; on the client side mounting the
 file system is as easy as logging into the server with an SSH client.")
     (license license:gpl2+)))
 
+(define-public sshfs-fuse
+  (package (inherit sshfs)
+    (name "sshfs-fuse")
+    (properties `((superseded . ,sshfs)))))
+
 (define-public archivemount
   (package
     (name "archivemount")
-    (version "0.8.9")
+    (version "0.8.12")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://www.cybernoia.de/software/archivemount/"
+       (uri (string-append "https://www.cybernoia.de/software/archivemount/"
                            "archivemount-" version ".tar.gz"))
        (sha256
-        (base32
-         "0v4si1ri6lhnq9q87gkx7fsh6lv6xz4bynknwndqncpvfp5cy1jg"))))
+        (base32 "12fb8fcmd1zwvfgzx4pay47md5cr2kgxcgq82cm6skmq75alfzi4"))))
     (build-system gnu-build-system)
     (inputs `(("fuse" ,fuse)
               ("libarchive" ,libarchive)))
     (native-inputs `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.cybernoia.de/software/archivemount")
+    (home-page "https://www.cybernoia.de/software/archivemount.html")
     (synopsis "Tool for mounting archive files with FUSE")
     (description "archivemount is a FUSE-based file system for Unix variants,
 including Linux.  Its purpose is to mount archives (i.e. tar, tar.gz, etc.) to a
@@ -2041,20 +2068,26 @@ from the module-init-tools project.")
   ;; The post-systemd fork, maintained by Gentoo.
   (package
     (name "eudev")
-    (version "3.2.5")
+    (version "3.2.7")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/gentoo/eudev/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference (url "https://github.com/gentoo/eudev")
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dlkcgy7j4fdcksqrpc373zfybiif1bal3n6lpy1kfc5280j02c7"))
+                "1la7x7v7yqb84wnc7w0kj53sa0an0m9xp6wn01ypi8drh02wjjy2"))
               (patches (search-patches "eudev-rules-directory.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-source-writable
+           (lambda _
+             ;; XXX: Git checkouts are read-only, but this package needs to
+             ;; modify some of its files.
+             (for-each make-file-writable (find-files "."))
+             #t))
          (add-before 'bootstrap 'patch-file-names
            (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "man/make.sh"
@@ -2447,14 +2480,14 @@ It works with most newer systems.")
 (define-public iucode-tool
   (package
     (name "iucode-tool")
-    (version "2.2")
+    (version "2.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.com/iucode-tool/releases"
                                   "/raw/latest/iucode-tool_" version ".tar.xz"))
               (sha256
                (base32
-                "0w99k1aq1xw148ffk1xykqf60rdbphb1jknw98jcmadq4pwxl44q"))))
+                "159gvf6ljgg3g4vlhyy6pyr0wz11rcyhp985vc4az58d9px8xf0j"))))
     (build-system gnu-build-system)
     (home-page "https://gitlab.com/iucode-tool/iucode-tool/wikis/home")
     (synopsis "Manipulate Intel microcode bundles")
@@ -2661,14 +2694,14 @@ isolation or root privileges.")
 (define-public hdparm
   (package
     (name "hdparm")
-    (version "9.56")
+    (version "9.58")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/" name "/" name "/"
-                                  name "-" version ".tar.gz"))
+              (uri (string-append "mirror://sourceforge/hdparm/hdparm/"
+                                  "hdparm-" version ".tar.gz"))
               (sha256
                (base32
-                "1np42qyhb503khvacnjcl3hb1dqly68gj0a1xip3j5qhbxlyvybg"))))
+                "03z1qm8zbgpxagk3994lvp24yqsshjibkwg05v9p3q1w7y48xrws"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (let ((out (assoc-ref %outputs "out")))
@@ -2746,14 +2779,14 @@ about ACPI devices.")
 (define-public acpid
   (package
     (name "acpid")
-    (version "2.0.30")
+    (version "2.0.31")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/acpid2/acpid-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1jzl7hiaspr5xkmsrbl69bib8cs3dp6bq5ix58fbskpnsdi7pdr8"))))
+                "1hrc0xm6q12knbgzhq0i8g2rfrkwcvh1asd7k9rs3nc5xmlwd7gw"))))
     (build-system gnu-build-system)
     (home-page "https://sourceforge.net/projects/acpid2/")
     (synopsis "Daemon for delivering ACPI events to user-space programs")
@@ -2996,7 +3029,7 @@ arrays when needed.")
 (define-public multipath-tools
   (package
     (name "multipath-tools")
-    (version "0.7.7")
+    (version "0.7.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.opensvc.com/?p=multipath-tools/"
@@ -3004,7 +3037,7 @@ arrays when needed.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1lirhjjv37jnf42r1ylrhi8kbzx9j9xnyfzvxpp6bzcp0fawigig"))
+                "1jhi6bhl4ih75rfmyyjxd35ghgch5ls1gw40cjxwy9d6bd41z6q1"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -3042,7 +3075,7 @@ arrays when needed.")
                  (("/usr/include/libudev.h")
                   (string-append udev "/include/libudev.h")))
                #t)))
-         (delete 'configure))))
+         (delete 'configure))))         ; no configure script
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
@@ -3067,7 +3100,7 @@ Linux Device Mapper multipathing driver:
 @code{dm} multipath devices.
 @item @command{kpartx} - Create device maps from partition tables.
 @end enumerate")
-    (license (list license:gpl2+             ; Main distribution.
+    (license (list license:gpl2+             ; main distribution
                    license:lgpl2.0+))))      ; libmpathcmd/mpath_cmd.h
 
 (define-public libaio
@@ -3260,7 +3293,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "4.17.1")
+    (version "4.20.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -3268,7 +3301,7 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "0x6d53fbrcmzvhv461575fzsv3373427p4srz646w2wcagqk82xz"))))
+                "0z0fm3j4ajzsf445381ra8r3zzciyyvfh8vvbjmbyarg2rz8n3w9"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of the binaries in "out"
@@ -3363,7 +3396,7 @@ from the btrfs-progs package.  It is meant to be used in initrds.")
               (method url-fetch)
               (uri (string-append
                     "https://git.kernel.org/cgit/linux/kernel/git/jaegeuk"
-                    "/f2fs-tools.git/snapshot/" name "-" version ".tar.gz"))
+                    "/f2fs-tools.git/snapshot/f2fs-tools-" version ".tar.gz"))
               (sha256
                (base32
                 "1m6bn1ibq0p53m0n97il91xqgjgn2pzlz74lb5bfzassx7159m1k"))))
@@ -3401,15 +3434,15 @@ disks and SD cards.  This package provides the userland utilities.")
   (package
     (inherit f2fs-tools-1.7)
     (name "f2fs-tools")
-    (version "1.11.0")
+    (version "1.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://git.kernel.org/cgit/linux/kernel/git/jaegeuk"
-                    "/f2fs-tools.git/snapshot/" name "-" version ".tar.gz"))
+                    "/f2fs-tools.git/snapshot/f2fs-tools-" version ".tar.gz"))
               (sha256
                (base32
-                "1qvr3hcic1vzfmyl7c0gnjxfsw8zjaadm66y337h49chv9yaq5mr"))))
+                "15pn2fm9knn7p1vzfzy6msnrdl14p6y1gn4m2ka6ba5bzx6lw4p2"))))
     (inputs
      `(("libuuid" ,util-linux)))))
 
@@ -3451,49 +3484,51 @@ feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
 (define-public thinkfan
   (package
     (name "thinkfan")
-    (version "0.9.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/thinkfan/"
-                                  "/thinkfan-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0nz4c48f0i0dljpk5y33c188dnnwg8gz82s4grfl8l64jr4n675n"))
-              (modules '((guix build utils)))
-              ;; Fix erroneous man page location in Makefile leading to
-              ;; a compilation failure.
-              (snippet '(begin
-                          (substitute* "CMakeLists.txt"
-                            (("thinkfan\\.1") "src/thinkfan.1"))
-                          #t))))
+    (version "1.0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/vmatare/thinkfan.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "107vw0962hrwva3wra9n3hxlbfzg82ldc10qssv3dspja88g8psr"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules ((guix build cmake-build-system)
                   (guix build utils)
                   (srfi srfi-26))
-       #:tests? #f                      ;no test target
+       #:tests? #f                      ; no test target
        #:configure-flags
        ;; Enable reading temperatures from hard disks via S.M.A.R.T.
+       ;; Upstream ‘defaults to OFF because libatasmart seems to be horribly
+       ;; inefficient’.
        `("-DUSE_ATASMART:BOOL=ON")
        #:phases
        (modify-phases %standard-phases
-         ;; Install scripts for various foreign init systems. Also fix
-         ;; hard-coded path for daemon.
-         (add-after 'install 'install-rc-scripts
+         (add-after 'unpack 'create-init-scripts
+           ;; CMakeLists.txt relies on build-time symptoms of OpenRC and
+           ;; systemd to patch and install their service files.  Fake their
+           ;; presence rather than duplicating the build system below.  Leave
+           ;; things like ‘/bin/kill’ because they're not worth a dependency.
+           ;; The sysvinit needs manual patching, but since upstream doesn't
+           ;; even provide the option to install it: don't.
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (files (find-files
-                           (string-append "../thinkfan-" ,version "/rcscripts")
-                           ".*")))
-               (substitute* files
-                 (("/usr/sbin/(\\$NAME|thinkfan)" _ name)
-                  (string-append out "/sbin/" name)))
-               (for-each (cute install-file <>
-                               (string-append out "/share/thinkfan"))
-                         files))
-             #t)))))
+             (let* ((out   (assoc-ref outputs "out"))
+                    (share (string-append out "/share/" ,name)))
+               (substitute* "CMakeLists.txt"
+                 (("pkg_check_modules\\((OPENRC|SYSTEMD) .*" _ package)
+                  (format "option(~a_FOUND \"Faked\" ON)\n" package))
+                 ;; That was easy!  Now we just need to fix the destinations.
+                 (("/etc" directory)
+                  (string-append out directory)))
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("libatasmart" ,libatasmart)))
+     `(("libatasmart" ,libatasmart)
+       ("yaml-cpp" ,yaml-cpp)))
     (home-page "http://thinkfan.sourceforge.net/")
     (synopsis "Simple fan control program")
     (description
@@ -3664,7 +3699,7 @@ The collection contains a set of bandwidth and latency benchmark such as:
   (package
     (name "rng-tools")
     (home-page "https://github.com/nhorman/rng-tools")
-    (version "6.6")
+    (version "6.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference (url home-page)
@@ -3672,11 +3707,12 @@ The collection contains a set of bandwidth and latency benchmark such as:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0c32sxfvngdjzfmxn5ngc5yxwi8ij3yl216nhzyz9r31qi3m14v7"))))
+                "19f75m6mzg8h7b4snzg7d6ypvkz6nq32lrpi9ja95gqz4wsd18a5"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
-       #:configure-flags '("--without-nistbeacon")))
+       #:configure-flags '("--without-nistbeacon"
+                           "--without-pkcs11")))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -4088,15 +4124,15 @@ interface to the variable facility of UEFI boot firmware.")
     (version "16")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/rhinstaller/" name
-                                  "/releases/download/" version "/" name
+              (uri (string-append "https://github.com/rhinstaller/efibootmgr"
+                                  "/releases/download/" version "/efibootmgr"
                                   "-" version ".tar.bz2"))
               (sha256
                (base32
                 "0pzn67vxxaf7jna4cd0i4kqm60h04kb21hckksv9z82q9gxra1wm"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; No tests.
+     `(#:tests? #f ;no tests
        #:make-flags (list (string-append "prefix=" %output)
                           (string-append "libdir=" %output "/lib")
                           ;; EFIDIR denotes a subdirectory relative to the
@@ -4104,11 +4140,7 @@ interface to the variable facility of UEFI boot firmware.")
                           ;; installed (known as OS_VENDOR in the code).
                           ;; GRUB overrides this, as such it's only used if
                           ;; nothing else is specified on the command line.
-                          "EFIDIR=gnu"
-                          ;; Override CFLAGS to add efivar include directory.
-                          (string-append "CFLAGS=-O2 -g -flto -I"
-                                         (assoc-ref %build-inputs "efivar")
-                                         "/include/efivar"))
+                          "EFIDIR=gnu")
        #:phases (modify-phases %standard-phases (delete 'configure))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -4351,15 +4383,14 @@ re-use code and to avoid re-inventing the wheel.")
 (define-public libnftnl
   (package
     (name "libnftnl")
-    (version "1.1.1")
+    (version "1.1.2")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "mirror://netfilter.org/libnftnl/"
-                            "libnftnl-" version ".tar.bz2"))
-        (sha256
-         (base32
-          "1wmgjfcb35mscb2srzia5931srygywrs1aznxmg67v177x0nasjx"))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://netfilter.org/libnftnl/"
+                           "libnftnl-" version ".tar.bz2"))
+       (sha256
+        (base32 "0pffmsv41alsn5ac7mwnb9fh3qpwzqk13jrzn6c5i71wq6kbgix5"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -4683,6 +4714,13 @@ libraries, which are often integrated directly into libfabric.")
                          (string-append %output "/include")))
                       (substitute* "Makefile"
                         (("/lib64") "/lib"))
+                      #t))
+                  (add-after 'unpack 'patch-sysmacros
+                    (lambda _
+                      (substitute* "ipath/ipath_proto.c"
+                        (("#include <sys/poll.h>" m)
+                         (string-append m "\n"
+                                        "#include <sys/sysmacros.h>")))
                       #t)))))
     (synopsis "Intel Performance Scaled Messaging (PSM) Libraries")
     (description
@@ -4980,7 +5018,7 @@ management tools in userspace.")
 (define-public xfsprogs
   (package
     (name "xfsprogs")
-    (version "4.19.0")
+    (version "4.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4988,10 +5026,10 @@ management tools in userspace.")
                     "xfsprogs-" version ".tar.gz"))
               (sha256
                (base32
-                "0gs39yiyamjw516jbak3nj4dy4h2a2g48c1mmv4wbppsccvwmwh5"))))
+                "0ss0r6jlxxinf9fhpc0fgf7b89n9mzirpa85xxjmi1ix9l6cls6x"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f)) ; Kernel/user integration tests are in package "xfstests"
+     `(#:tests? #f)) ; kernel/user integration tests are in package "xfstests"
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("util-linux" ,util-linux)))
@@ -5002,3 +5040,110 @@ file systems.")
     ;; The library "libhandle" and the headers in "xfslibs-dev" are
     ;; licensed under lgpl2.1. the other stuff is licensed under gpl2.
     (license (list license:gpl2 license:lgpl2.1))))
+
+(define-public genext2fs
+  (package
+    (name "genext2fs")
+    (version "1.4.1-4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jeremie-koenig/genext2fs.git")
+                    ;; 1.4.1-3 had a VCS tag but 1.4.1-4 doesn't.
+                    (commit "9ee43894634998b0b2b309d636f25c64314c9421")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0ib5icn78ciz00zhc1bgdlrwaxvsdz7wnplwblng0jirwi9ml7sq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'apply-debian-patches
+           ;; Debian changes (the revision after ‘-’ in VERSION) are
+           ;; maintained as separate patches.  Apply those relevant to us.
+           (lambda _
+             (for-each
+              (lambda (file-name)
+                (invoke "patch" "-p1" "-i"
+                        (string-append "debian/patches/" file-name)))
+              (list "blocksize+creator.diff" ; add -B/-o options
+                    "byteswap_fix.diff"))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (home-page "https://github.com/jeremie-koenig/genext2fs")
+    (synopsis "Generate ext2 filesystem as a normal user")
+    (description "This package provides a program to general an ext2
+filesystem as a normal (non-root) user.  It does not require you to mount
+the image file to copy files on it, nor does it require that you become
+the superuser to make device nodes.")
+    (license license:gpl2)))
+
+(define-public fakeroot
+  (package
+    (name "fakeroot")
+    (version "1.23")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://ftp.debian.org/debian/pool/main/f/"
+                                  "fakeroot/fakeroot_" version ".orig.tar.xz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1xpl0s2yjyjwlf832b6kbkaa5921liybaar13k7n45ckd9lxd700"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+        (add-after 'configure 'patch-Makefile
+          (lambda _
+            ;; Note: The root of the problem is already in "Makefile.am".
+            (substitute* "Makefile"
+             (("/bin/sh") (which "sh")))
+            #t))
+        (add-after 'unpack 'patch-getopt
+          (lambda*  (#:key inputs #:allow-other-keys)
+            (substitute* "scripts/fakeroot.in"
+             (("getopt")
+              (string-append (assoc-ref inputs "util-linux")
+                             "/bin/getopt")))
+            #t))
+        (add-before 'configure 'setenv
+          (lambda _
+            (setenv "LIBS" "-lacl")
+            #t))
+        (add-before 'check 'prepare-check
+          (lambda _
+            (setenv "SHELL" (which "bash"))
+            (setenv "VERBOSE" "1")
+            (substitute* "test/t.touchinstall"
+             ;; We don't have the name of the root user, so use ID=0.
+             (("grep root") "grep \"\\<0\\>\""))
+            (substitute* "test/tartest"
+             ;; We don't have the name of the root group, so use ID=0.
+             (("ROOTGROUP=root") "ROOTGROUP=0")
+             ;; We don't have the name of the daemon user, so use IDs.
+             (("daemon:sys") "1:3")
+             (("daemon:") "1:"))
+            ;; We don't have an /etc/passwd entry for "root" - use numeric IDs.
+            (substitute* "test/compare-tar"
+             (("tar -tvf") "tar --numeric-owner -tvf"))
+            #t)))))
+    (native-inputs
+     `(("acl" ,acl)
+       ("sharutils" ,sharutils) ; for the tests
+       ("xz" ,xz))) ; for the tests
+    (inputs
+     `(("libcap" ,libcap)
+       ("util-linux" ,util-linux)))
+    (synopsis "Provides a fake root environment")
+    (description "@command{fakeroot} runs a command in an environment where
+it appears to have root privileges for file manipulation. This is useful
+for allowing users to create archives (tar, ar, .deb etc.) with files in
+them with root permissions/ownership. Without fakeroot one would have to
+have root privileges to create the constituent files of the archives with
+the correct permissions and ownership, and then pack them up, or one would
+have to construct the archives directly, without using the archiver.")
+    (home-page "http://freshmeat.sourceforge.net/projects/fakeroot")
+    (license license:gpl3+)))