summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi4
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/admin.scm121
-rw-r--r--gnu/packages/emacs.scm43
-rw-r--r--gnu/packages/fonts.scm2
-rw-r--r--gnu/packages/game-development.scm3
-rw-r--r--gnu/packages/games.scm39
-rw-r--r--gnu/packages/gcc.scm12
-rw-r--r--gnu/packages/gnome.scm4
-rw-r--r--gnu/packages/linux.scm1
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/man.scm11
-rw-r--r--gnu/packages/messaging.scm47
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/networking.scm11
-rw-r--r--gnu/packages/patches/strace-kernel-4.16.patch92
-rw-r--r--gnu/packages/patches/wesnoth-fix-std-bad-cast.patch67
-rw-r--r--gnu/packages/upnp.scm4
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wget.scm4
-rw-r--r--guix/scripts/pack.scm72
-rw-r--r--guix/self.scm27
-rw-r--r--tests/guix-pack.sh20
23 files changed, 464 insertions, 132 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index dc9894173e..4095bdb51b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11626,7 +11626,7 @@ Script to run after starting xorg-server.
 @item @code{xdisplay-stop} (default @code{#~(string-append #$sddm "/share/sddm/scripts/Xstop")})
 Script to run before stopping xorg-server.
 
-@item @code{xsession-command} (default: @code{xinitr })
+@item @code{xsession-command} (default: @code{xinitrc})
 Script to run before starting a X session.
 
 @item @code{xsessions-directory} (default: "/run/current-system/profile/share/xsessions")
@@ -12632,7 +12632,7 @@ profile, and extends polkit with the actions from
 @end deffn
 
 Because the GNOME, XFCE and MATE desktop services pull in so many packages,
-the default @code{%desktop-services} variable doesn't include either of
+the default @code{%desktop-services} variable doesn't include any of
 them by default.  To add GNOME, XFCE or MATE, just @code{cons} them onto
 @code{%desktop-services} in the @code{services} field of your
 @code{operating-system}:
diff --git a/gnu/local.mk b/gnu/local.mk
index 9727f0ef44..d962613eda 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1094,6 +1094,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/slim-login.patch				\
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
   %D%/packages/patches/steghide-fixes.patch			\
+  %D%/packages/patches/strace-kernel-4.16.patch			\
   %D%/packages/patches/superlu-dist-scotchmetis.patch		\
   %D%/packages/patches/swish-e-search.patch			\
   %D%/packages/patches/swish-e-format-security.patch		\
@@ -1154,6 +1155,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/wavpack-CVE-2018-7253.patch		\
   %D%/packages/patches/wavpack-CVE-2018-7254.patch		\
   %D%/packages/patches/weechat-python.patch			\
+  %D%/packages/patches/wesnoth-fix-std-bad-cast.patch		\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
   %D%/packages/patches/wicd-urwid-1.3.patch			\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 83b1d08687..daaf9f5079 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -50,8 +50,11 @@
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages dns)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages linux)
@@ -70,6 +73,7 @@
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages mcrypt)
@@ -97,7 +101,8 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages elf)
-  #:use-module (gnu packages mpi))
+  #:use-module (gnu packages mpi)
+  #:use-module (gnu packages web))
 
 (define-public aide
   (package
@@ -2661,3 +2666,117 @@ Python loading in HPC environments.")
     ;; This package supports x86_64 and PowerPC64
     (supported-systems '("x86_64-linux"))
     (license license:lgpl2.1)))
+
+(define-public inxi-minimal
+  (let ((real-name "inxi"))
+    (package
+      (name "inxi-minimal")
+      (version "3.0.04-1")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append "https://github.com/smxi/inxi"
+                             "/archive/" version "/inxi.tar.gz"))
+         (file-name (string-append real-name "-" version ".tar.gz"))
+         (sha256
+          (base32
+           "14zxdsjgh9dbijmpp0hhvg2yiqqfwnqgcc6x8dpl1v15z1h1r7pc"))))
+      (build-system trivial-build-system)
+      (inputs
+       `(("bash" ,bash)
+         ("perl" ,perl)))
+      (native-inputs
+       `(("gzip" ,gzip)
+         ("tar" ,tar)))
+      (arguments
+       `(#:modules
+         ((guix build utils)
+          (ice-9 match)
+          (srfi srfi-26))
+         #:builder
+         (begin
+           (use-modules (guix build utils)
+                        (ice-9 match)
+                        (srfi srfi-26))
+           (setenv "PATH" (string-append
+                           (assoc-ref %build-inputs "bash") "/bin" ":"
+                           (assoc-ref %build-inputs "gzip") "/bin" ":"
+                           (assoc-ref %build-inputs "perl") "/bin" ":"
+                           (assoc-ref %build-inputs "tar") "/bin" ":"))
+           (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
+           (with-directory-excursion ,(string-append real-name "-" version)
+             (with-fluids ((%default-port-encoding #f))
+               (substitute* "inxi" (("/usr/bin/env perl") (which "perl"))))
+             (let ((bin (string-append %output "/bin")))
+               (install-file "inxi" bin)
+               (wrap-program (string-append bin "/inxi")
+                 `("PATH" ":" =
+                   ("$PATH"
+                    ,@(map (lambda (input)
+                             (match input
+                               ((name . store)
+                                (let ((store-append
+                                       (cut string-append store <>)))
+                                  (cond
+                                   ((member name '("util-linux"))
+                                    (string-append (store-append "/bin") ":"
+                                                   (store-append "/sbin")))
+                                   ((member name '("dmidecode" "iproute2"))
+                                    (store-append "/sbin"))
+                                   (else (store-append "/bin")))))))
+                           %build-inputs)))
+                 `("PERL5LIB" ":" =
+                   ,(delete
+                     ""
+                     (map (match-lambda
+                            (((? (cut string-prefix? "perl-" <>) name) . dir)
+                             (string-append dir "/lib/perl5/site_perl"))
+                            (_ ""))
+                          %build-inputs)))))
+             (invoke "gzip" "inxi.1")
+             (install-file "inxi.1.gz"
+                           (string-append %output "/share/doc/man/man1")))
+           #t)))
+      (home-page "https://smxi.org/docs/inxi.htm")
+      (synopsis "Full featured system information script")
+      (description "Inxi is a system information script that can display
+various things about your hardware and software to users in an IRC chatroom or
+support forum.  It runs with the /exec command in most IRC clients.")
+      (license license:gpl3+))))
+
+(define-public inxi
+  (package
+    (inherit inxi-minimal)
+    (name "inxi")
+    (inputs
+     `(("dmidecode" ,dmidecode)
+       ("file" ,file)
+       ("bind:utils" ,isc-bind "utils") ; dig
+       ("gzip" ,gzip)
+       ("iproute2" ,iproute)            ; ip
+       ("kmod" ,kmod)                   ; modinfo
+       ("lm-sensors" ,lm-sensors)
+       ("mesa-utils" ,mesa-utils)
+       ("pciutils" ,pciutils)
+       ("procps" ,procps)
+       ("tar" ,tar)
+       ("tree" ,tree)
+       ("util-linux" ,util-linux)       ; lsblk
+       ("usbutils" ,usbutils)           ; lsusb
+       ("wmctrl" ,wmctrl)
+       ("xdpyinfo" ,xdpyinfo)
+       ("xprop" ,xprop)
+       ("xrandr" ,xrandr)
+       ("coreutils" ,coreutils)         ; uptime
+       ("inetutils" ,inetutils)         ; ifconfig
+       ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
+       ("perl-http-tiny" ,perl-http-tiny)
+       ("perl-io-socket-ssl" ,perl-io-socket-ssl)
+       ("perl-json-xs" ,perl-json-xs)
+       ("perl-time-hires" ,perl-time-hires)
+       ;; TODO: Add more inputs:
+       ;; ipmi-sensors
+       ;; hddtemp
+       ;; perl-xml-dumper
+       ;; ipmitool
+       ,@(package-inputs inxi-minimal)))))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0b19586d7f..6b91577fb3 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -8396,6 +8396,8 @@ arXiv, Google Scholar, Library of Congress, etc.
                (base32
                 "1a10snhg6nnnan6w9a7mcziy26vxbsr3c35i0gcarnkdp2yqng36"))))
     (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)))
     (home-page "https://github.com/syohex/emacs-helm-gtags")
     (synopsis "Emacs Helm interface to GNU Global")
     (description
@@ -9196,6 +9198,8 @@ CSS, JavaScript, JSON.")
                    ("(defvar helm-shell-history-file"
                     `(expand-file-name "~/.bash_history"))))
                #t)))))
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
       (home-page "https://github.com/yuutayamada/helm-shell-history")
       (synopsis "Find shell history with Emacs Helm")
       (description "This package provides an Emacs Helm interface to search
@@ -9561,6 +9565,8 @@ functions for defining emms simple players of mpv.")
          (sha256
           (base32
            "0kdp7k7jnnrkhsg0xh1c3h7iz0vgi120gf5xwl1hxy61avivnxrn"))))
+      (propagated-inputs
+       `(("magit" ,magit)))
       (build-system emacs-build-system)
       (home-page "https://github.com/danielma/magit-org-todos.el")
       (synopsis "Get todo.org into Emacs Magit status")
@@ -9594,35 +9600,6 @@ buffer with each of your todos.")
      "The Fantastic File Finder for Emacs.  Find files fast, using helm.")
     (license license:gpl3+)))
 
-(define-public emacs-dumb-jump
-  (package
-    (name "emacs-dumb-jump")
-    (version "0.5.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/jacktasia/dumb-jump/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "07n0xjgpxjpf3vp9gxchkjpydyj0zm166930as0kwiwkhjlsirsf"))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-f" ,emacs-f)
-       ("emacs-s" ,emacs-s)
-       ("emacs-dash" ,emacs-dash)
-       ("emacs-popup" ,emacs-popup)))
-    (home-page "https://github.com/jacktasia/dumb-jump")
-    (synopsis "Jump to definition for multiple languages without configuration")
-    (description "Dumb Jump is an Emacs \"jump to definition\" package with
-support for multiple programming languages that favors \"just working\" over
-speed or accuracy.  This means minimal -- and ideally zero -- configuration
-with absolutely no stored indexes (TAGS) or persistent background processes.
-Dumb Jump performs best with The Silver Searcher `ag` or ripgrep `rg`
-installed.  Dumb Jump requires at least GNU Emacs 24.3. ")
-    (license license:gpl3+)))
-
 (define-public emacs-lice-el
   (let ((commit "4339929927c62bd636f89bb39ea999d18d269250"))
     (package
@@ -9786,8 +9763,8 @@ split to display more windows and more buffers, the buffer exits
     (synopsis "Improved expressions that interactively evaluate Emacs Lisp")
     (description "This package improves and replaces the GNU Emacs commands
 that interactively evaluate Emacs Lisp expressions.  The new commands replace
-standard key bindings and are all prefixed with rsw-elisp-.  They work the
-same way as the old commands when called non-interactively; only the
+standard key bindings and are all prefixed with @code{rsw-elisp-}.  They work
+the same way as the old commands when called non-interactively; only the
 interactive behavior should be different.")
     (license license:gpl3+)))
 
@@ -9934,6 +9911,8 @@ compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
          (sha256
           (base32
            "08mjsi2f9s29fkk35cj1rrparjnkm836qmbfdwdz7y51f9varjbs"))))
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
       (build-system emacs-build-system)
       (home-page "https://github.com/emacs-helm/helm-firefox")
       (synopsis "Display firefox bookmarks with Emacs Helm interface")
@@ -10041,6 +10020,8 @@ keep Parens and Indentation inline with one another.")
                 (sha256
                  (base32
                   "1x442ylrr7cx587s4rvfh187h3qbkr79qp95qr57a4igxkkw6183"))))
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
       (build-system emacs-build-system)
       (home-page "https://github.com/emacs-helm/helm-eww/")
       (synopsis "Helm interface to EWW")
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 7e15537205..031df7faa7 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -139,7 +139,7 @@ TrueType (TTF) files.")
                                             "/share/fontconfig/conf.avail")))
                (copy-recursively "fontconfig" conf-dir)
                #t))))))
-    (home-page "http://dejavu-fonts.org/")
+    (home-page "https://dejavu-fonts.github.io/")
     (synopsis "Vera font family derivate with additional characters")
     (description "DejaVu provides an expanded version of the Vera font family
 aiming for quality and broader Unicode coverage while retaining the original
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 61943e8ed5..be7b758f91 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -557,8 +557,7 @@ archive on a per-file basis.")
                                  "love-" version "-linux-src.tar.gz"))
              (sha256
               (base32
-               "1pkwiszmjs0xrwk0wqbc5cp9108b1y8gwsid0gqk1s0x09q9lpmw"))
-             (modules '((guix build utils)))))
+               "1pkwiszmjs0xrwk0wqbc5cp9108b1y8gwsid0gqk1s0x09q9lpmw"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index f5d5bb5172..671b3df28d 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1819,7 +1819,7 @@ falling, themeable graphics and sounds, and replays.")
 (define-public wesnoth
   (package
     (name "wesnoth")
-    (version "1.12.6")
+    (version "1.14.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -1828,17 +1828,11 @@ falling, themeable graphics and sounds, and replays.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5"))))
+                "09niq53y17faizhmd98anx3dha7hvacvj9a0a64lg8wn915cm0bw"))
+              (patches (search-patches "wesnoth-fix-std-bad-cast.patch"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f ; no check target
-       #:configure-flags
-       ;; XXX: Failed to compile with '-Werror=old-style-cast'.
-       ;;   boost/mpl/assert.hpp:313:58: error:
-       ;;     use of old-style cast [-Werror=old-style-cast]
-       ;;   [...]
-       ;;   cc1plus: all warnings being treated as errors
-       '("-DENABLE_STRICT_COMPILATION=OFF")))
+     `(#:tests? #f)) ; no check target
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)))
@@ -1847,12 +1841,10 @@ falling, themeable graphics and sounds, and replays.")
        ("dbus" ,dbus)
        ("fribidi" ,fribidi)
        ("libvorbis" ,libvorbis)
+       ("openssl" ,openssl)
        ("pango" ,pango)
-       ("sdl-image" ,sdl-image)
-       ("sdl-mixer" ,sdl-mixer)
-       ("sdl-net" ,sdl-net)
-       ("sdl-ttf" ,sdl-ttf)))
-    (home-page "http://www.wesnoth.org/")
+       ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
+    (home-page "https://www.wesnoth.org/")
     (synopsis "Turn-based strategy game")
     (description
      "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
@@ -1871,19 +1863,12 @@ next campaign.")
     (name "wesnoth-server")
     (inputs
      `(("boost" ,boost)
-       ("sdl-net" ,sdl-net)))
+       ("icu4c" ,icu4c)
+       ("openssl" ,openssl)
+       ("sdl2" ,sdl2)))
     (arguments
-     (append
-      (substitute-keyword-arguments (package-arguments wesnoth)
-        ((#:configure-flags configure-flags)
-         `(append ,configure-flags (list "-DENABLE_GAME=OFF"))))
-      `(#:phases
-        (modify-phases %standard-phases
-          ;; Delete game assets not required by the server.
-          (add-after 'install 'delete-data
-            (lambda* (#:key outputs #:allow-other-keys)
-              (delete-file-recursively (string-append (assoc-ref outputs "out")
-                                                      "/share/wesnoth"))))))))
+     `(#:configure-flags '("-DENABLE_GAME=OFF")
+       ,@(package-arguments wesnoth)))
     (synopsis "Dedicated @emph{Battle for Wesnoth} server")
     (description "This package contains a dedicated server for @emph{The
 Battle for Wesnoth}.")))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 741cfab06e..5012d9a913 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -485,7 +485,17 @@ Go.  It also includes runtime support libraries for these languages.")
                   #t))))
     (inputs
      `(("isl" ,isl)
-       ,@(package-inputs gcc-4.7)))))
+       ,@(package-inputs gcc-4.7)))
+
+    (native-search-paths
+     ;; We have to use 'CPATH' for GCC > 5, not 'C_INCLUDE_PATH' & co., due to
+     ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129>.
+     (list (search-path-specification
+            (variable "CPATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("lib" "lib64")))))))
 
 (define-public gcc-7
   (package
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2f2124518a..6d0ec58c19 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2457,7 +2457,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.62.1")
+    (version "2.62.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2465,7 +2465,7 @@ libxml to ease remote use of the RESTful API.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1mw3b3j4f4ln7hl03jd296rx78dy35hzlq005a21r6qg5sndsdzh"))))
+                "1dkrz1iwsswscayfmjxqv2q00b87snlq9nxdccn5vck0vbinylwy"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 00f1c66643..427f9bd88d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -926,6 +926,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
              (method url-fetch)
              (uri (string-append home-page "/files/" version
                                  "/strace-" version ".tar.xz"))
+             (patches (search-patches "strace-kernel-4.16.patch"))
              (sha256
               (base32
                "17dkpnsjxmys1ydidm9wcvc3wscsz44fmlxw3dclspn9cj9d1306"))))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 178c58ed3a..04bcf56238 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1373,7 +1373,7 @@ hashing schemes plugin for @code{Dovecot}.")
     (home-page "http://isync.sourceforge.net/")
     (synopsis "Mailbox synchronization program")
     (description
-     "isync/mbsync is command line tool for two-way synchronization of
+     "isync/mbsync is a command-line tool for two-way synchronization of
 mailboxes.  Currently Maildir and IMAP are supported types.")
     (license gpl2+)))
 
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 046b0e3f39..58e26d82ff 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -5,7 +5,6 @@
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -82,19 +81,11 @@ a flexible and convenient way.")
                          (remove file-is-directory?
                                  (find-files "src/tests" ".*")))
                #t)))
-         (add-after 'unpack 'patch-absolute-paths
+         (add-after 'unpack 'patch-iconv-path
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "src/man.c"
                (("\"iconv\"")
                 (string-append "\"" (which "iconv") "\"")))
-             ;; Embed an absolute reference to "preconv", otherwise it
-             ;; falls back to searching in PATH and ultimately fails
-             ;; to render unicode data (see <https://bugs.gnu.org/30785>).
-             (substitute* "lib/encodings.c"
-               (("groff_preconv = NULL")
-                (string-append "groff_preconv = \""
-                               (assoc-ref inputs "groff-minimal")
-                               "/bin/preconv\"")))
              #t)))
        #:configure-flags
        (let ((groff (assoc-ref %build-inputs "groff"))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index c74977eea8..af49ddc8c6 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -181,6 +182,9 @@ end-to-end encryption.")
          (add-after 'install 'install-etc
            (lambda* (#:key (make-flags '()) #:allow-other-keys)
              (zero? (apply system* "make" "install-etc" make-flags))))
+         (add-after 'install-etc 'install-lib
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-dev" make-flags))))
          (replace 'configure
            ;; bitlbee's configure script does not tolerate many of the
            ;; variable settings that Guix would pass to it.
@@ -199,6 +203,49 @@ identi.ca and status.net).")
     (home-page "http://www.bitlbee.org/")
     (license (list license:gpl2+ license:bsd-2))))
 
+(define-public bitlbee-discord
+  (package
+    (name "bitlbee-discord")
+    (version "0.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://github.com/sm00th/bitlbee-discord/"
+                              "archive/" version ".tar.gz"))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1bwqxlg6fwj3749y7w69n9jwsdzf5nl9xqiszbpv9k8x1422i1y1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autogen
+           (lambda _
+             (let ((sh (which "sh")))
+               (substitute* "autogen.sh" (("/bin/sh") sh))
+               (setenv "CONFIG_SHELL" sh)
+               (zero? (system* "./autogen.sh")))))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (invoke "./configure"
+                     (string-append "--with-plugindir="
+                                    (assoc-ref outputs "out")
+                                    "/lib/bitlbee/")))))))
+    (inputs `(("glib" ,glib)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("texinfo" ,texinfo)
+                     ("libtool" ,libtool)
+                     ("bitlbee" ,bitlbee)         ;needs bitlbee headers
+                     ("bash" ,bash)))
+    (synopsis "Discord plugin for Bitlbee")
+    (description "Bitlbee-discord is a plugin for Bitlbee witch provides
+access to servers running the Discord protocol.")
+    (home-page "https://github.com/sm00th/bitlbee-discord/")
+    (license license:gpl2+)))
+
 (define-public hexchat
   (package
     (name "hexchat")
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index a9d317eb7b..1889035492 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -162,7 +162,7 @@ protocol.")
 (define-public mpd-mpc
   (package
     (name "mpd-mpc")
-    (version "0.29")
+    (version "0.30")
     (source (origin
               (method url-fetch)
               (uri
@@ -171,7 +171,7 @@ protocol.")
                               "/mpc-" version ".tar.xz"))
               (sha256
                (base32
-                "1lxr0z5i5yx4lcvy9nyxj6q32qlz473j3zm6va68zd1cj3ndmw82"))))
+                "1kkzhrypkp0v6xv4d6db415pd0h6jqki29kfpsnfkvrhhh55pz35"))))
     (build-system meson-build-system)
     (inputs `(("libmpdclient" ,libmpdclient)))
     (native-inputs `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 4049cde8b9..0d187ab930 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -545,7 +545,7 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "2.4.5")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
@@ -553,7 +553,7 @@ of the same name.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1mvgy67rvnwj2kbc43s4il81jvz5ai0bx2j3j2js7x50zclyrcmk"))))
+         "0zqip4ai18iar7sgialc3jmpng1yxxy4i9bphbaig23ss80py73i"))))
     (build-system gnu-build-system)
     (inputs `(("c-ares" ,c-ares)
               ("glib" ,glib)
@@ -564,12 +564,14 @@ of the same name.")
               ("libpcap" ,libpcap)
               ("libssh" ,libssh)
               ("libxml2" ,libxml2)
+              ("lz4" ,lz4)
               ("lua" ,lua-5.2)          ;Lua 5.3 unsupported
               ("krb5" ,mit-krb5)
-              ("openssl" ,openssl)
               ("portaudio" ,portaudio)
               ("qtbase" ,qtbase)
+              ("qtmultimedia" ,qtmultimedia)
               ("sbc" ,sbc)
+              ("snappy" ,snappy)
               ("zlib" ,zlib)))
     (native-inputs `(("perl" ,perl)
                      ("pkg-config" ,pkg-config)
@@ -582,11 +584,12 @@ of the same name.")
              (string-append "--with-libcap=" (assoc-ref %build-inputs "libcap"))
              (string-append "--with-libssh=" (assoc-ref %build-inputs "libssh"))
              (string-append "--with-lua=" (assoc-ref %build-inputs "lua"))
+             (string-append "--with-lz4=" (assoc-ref %build-inputs "lz4"))
              (string-append "--with-pcap=" (assoc-ref %build-inputs "libpcap"))
              (string-append "--with-portaudio="
                             (assoc-ref %build-inputs "portaudio"))
              (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc"))
-             (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl"))
+             (string-append "--with-snappy=" (assoc-ref %build-inputs "snappy"))
              (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib")))))
     (synopsis "Network traffic analyzer")
     (description "Wireshark is a network protocol analyzer, or @dfn{packet
diff --git a/gnu/packages/patches/strace-kernel-4.16.patch b/gnu/packages/patches/strace-kernel-4.16.patch
new file mode 100644
index 0000000000..e86d3be439
--- /dev/null
+++ b/gnu/packages/patches/strace-kernel-4.16.patch
@@ -0,0 +1,92 @@
+Fix test failure when using Linux-Libre >= 4.16.
+
+Taken from upstream:
+https://github.com/strace/strace/commit/bcff87c31c0f27c678a43d6b7f67dab363a974fa
+
+From bcff87c31c0f27c678a43d6b7f67dab363a974fa Mon Sep 17 00:00:00 2001
+From: Masatake YAMATO <yamato@redhat.com>
+Date: Wed, 2 May 2018 17:11:07 +0900
+Subject: [PATCH] tests/ioctl_kvm_run.c: handle cpuid at the end of vcpu dentry
+
+Since Linux 4.16, kernel appends the cpuid as suffix to the entry
+for a kvm vcpu in /proc/$pid/fd like:
+
+    anon_inode:kvm-vcpu:0
+
+That was
+
+    anon_inode:kvm-vcpu
+
+This kernel change causes the test case failure on newer kernels.
+Update the test to deal with the new name as well as the old one.
+
+* tests/ioctl_kvm_run.c: Include unistd.h for using readlink(2).
+(vcpu_dev_should_have_cpuid): New function for detecting whether
+a proc entry for given fd has the cpuid suffix or not.
+(main): Trim vcpu_dev to remove the cpuid suffix if needed.
+(vcpu_dev): Remove const modifier.
+---
+ tests/ioctl_kvm_run.c | 29 ++++++++++++++++++++++++++++-
+ 1 file changed, 28 insertions(+), 1 deletion(-)
+
+diff --git a/tests/ioctl_kvm_run.c b/tests/ioctl_kvm_run.c
+index 179461430..e1bef5796 100644
+--- a/tests/ioctl_kvm_run.c
++++ b/tests/ioctl_kvm_run.c
+@@ -40,6 +40,7 @@
+ # include <string.h>
+ # include <sys/ioctl.h>
+ # include <sys/mman.h>
++# include <unistd.h>
+ # include <linux/kvm.h>
+ 
+ static int
+@@ -56,7 +57,7 @@ kvm_ioctl(int fd, unsigned long cmd, const char *cmd_str, void *arg)
+ 
+ static const char dev[] = "/dev/kvm";
+ static const char vm_dev[] = "anon_inode:kvm-vm";
+-static const char vcpu_dev[] = "anon_inode:kvm-vcpu";
++static char vcpu_dev[] = "anon_inode:kvm-vcpu:0";
+ static size_t page_size;
+ 
+ extern const char code[];
+@@ -165,6 +166,23 @@ run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
+ 	}
+ }
+ 
++static int
++vcpu_dev_should_have_cpuid(int fd)
++{
++	int r = 0;
++	char *filename = NULL;
++	char buf[sizeof(vcpu_dev)];
++
++	if (asprintf(&filename, "/proc/%d/fd/%d", getpid(), fd) < 0)
++		error_msg_and_fail("asprintf");
++
++	if (readlink(filename, buf, sizeof(buf)) == sizeof(buf) - 1
++	    && (memcmp(buf, vcpu_dev, sizeof(buf) - 1) == 0))
++		r = 1;
++	free(filename);
++	return r;
++}
++
+ int
+ main(void)
+ {
+@@ -208,6 +226,15 @@ main(void)
+ 	       (unsigned long) page_size, (unsigned long) page_size, mem);
+ 
+ 	int vcpu_fd = KVM_IOCTL(vm_fd, KVM_CREATE_VCPU, NULL);
++	if (!vcpu_dev_should_have_cpuid(vcpu_fd))
++		/*
++		 * This is an older kernel that doesn't place a cpuid
++		 * at the end of the dentry associated with vcpu_fd.
++		 * Trim the cpuid part of vcpu_dev like:
++		 * "anon_inode:kvm-vcpu:0" -> "anon_inode:kvm-vcpu"
++		 */
++		vcpu_dev[strlen (vcpu_dev) - 2] = '\0';
++
+ 	printf("ioctl(%d<%s>, KVM_CREATE_VCPU, 0) = %d<%s>\n",
+ 	       vm_fd, vm_dev, vcpu_fd, vcpu_dev);
+ 
diff --git a/gnu/packages/patches/wesnoth-fix-std-bad-cast.patch b/gnu/packages/patches/wesnoth-fix-std-bad-cast.patch
new file mode 100644
index 0000000000..18328ed018
--- /dev/null
+++ b/gnu/packages/patches/wesnoth-fix-std-bad-cast.patch
@@ -0,0 +1,67 @@
+From 18e5ea50a7136cb3686c5a7c51c111ccce73dc54 Mon Sep 17 00:00:00 2001
+From: Iris Morelle <shadowm@wesnoth.org>
+Date: Sun, 6 May 2018 16:10:42 -0300
+Subject: [PATCH] i18n: Blind fix attempt for std::bad_cast being thrown on
+ Windows
+
+Several reports on Steam and our forums point at std::bad_cast being
+thrown when accessing Preferences and the Multiplayer menu amongst
+others. It's possible that the locale configuration on those systems is
+not quite right, and compare() and icompare() are able to throw
+std::bad_cast when this happens as they both use std::use_facet().
+
+Note that much like the macOS/iOS version of icompare(), this stopgap
+patch doesn't attempt to provide any form of case-insensitive fallback
+and just uses a case-sensitive comparison instead.
+---
+ src/gettext_boost.cpp | 29 +++++++++++++++++++++++++++--
+ 1 file changed, 27 insertions(+), 2 deletions(-)
+
+diff --git a/src/gettext_boost.cpp b/src/gettext_boost.cpp
+index 3cc7690d5ef..fb04ffeea90 100644
+--- a/src/gettext_boost.cpp
++++ b/src/gettext_boost.cpp
+@@ -423,7 +423,19 @@ void set_language(const std::string& language, const std::vector<std::string>* /
+ int compare(const std::string& s1, const std::string& s2)
+ {
+ 	std::lock_guard<std::mutex> lock(get_mutex());
+-	return std::use_facet<std::collate<char>>(get_manager().get_locale()).compare(s1.c_str(), s1.c_str() + s1.size(), s2.c_str(), s2.c_str() + s2.size());
++
++	try {
++		return std::use_facet<std::collate<char>>(get_manager().get_locale()).compare(s1.c_str(), s1.c_str() + s1.size(), s2.c_str(), s2.c_str() + s2.size());
++	} catch(const std::bad_cast&) {
++		static bool bad_cast_once = false;
++
++		if(!bad_cast_once) {
++			ERR_G << "locale set-up for compare() is broken, falling back to std::string::compare()\n";
++			bad_cast_once = true;
++		}
++
++		return s1.compare(s2);
++	}
+ }
+ 
+ int icompare(const std::string& s1, const std::string& s2)
+@@ -433,8 +445,21 @@ int icompare(const std::string& s1, const std::string& s2)
+ 	return compare(s1, s2);
+ #else
+ 	std::lock_guard<std::mutex> lock(get_mutex());
+-	return std::use_facet<bl::collator<char>>(get_manager().get_locale()).compare(
++
++	try {
++		return std::use_facet<bl::collator<char>>(get_manager().get_locale()).compare(
+ 			bl::collator_base::secondary, s1, s2);
++	} catch(const std::bad_cast&) {
++		static bool bad_cast_once = false;
++
++		if(!bad_cast_once) {
++			ERR_G << "locale set-up for icompare() is broken, falling back to std::string::compare()\n";
++			bad_cast_once = true;
++		}
++
++		// FIXME: not even lazily case-insensitive
++		return s1.compare(s2);
++	}
+ #endif
+ }
+ 
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 4df65431af..475e1750a8 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -29,14 +29,14 @@
 (define-public miniupnpc
   (package
     (name "miniupnpc")
-    (version "2.0.20180503")
+    (version "2.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://miniupnp.tuxfamily.org/files/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "0dv906ibjdrv4wfrccj36z3lvpvgmcg0dwakhi66fqg6y5l97a5k"))))
+        (base32 "1ik440yspbp3clr4m01xsl9skwyrzcvzb5nbm3i0g9x53vhbb7z1"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index cb852243b1..d1abb0b687 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -55,14 +55,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.20.1")
+    (version "2.20.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0nc9dj05dbk31ciip08b3rdsfja7ckc5mgagrj030fafza2k5r23"))))
+                "1qi6nnj4qidzija1am9xscwjxwfqwhiy7x39ndriqgzh86i97znz"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 9331af9a65..bd43e372cf 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -44,7 +44,7 @@
 (define-public wget
   (package
     (name "wget")
-    (version "1.19.4")
+    (version "1.19.5")
     (source
      (origin
       (method url-fetch)
@@ -52,7 +52,7 @@
                           version ".tar.lz"))
       (sha256
        (base32
-        "16jmcqcasx3q9k4azssryli9qyxfq0sfijw998g8zp58cnwzzh1g"))))
+        "0xfaxmlnih7dhkyks5wi4vrn0n1xshmy6gx6fb2k1120sprydyr9"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 488638adc5..0e09a01496 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
@@ -37,12 +37,13 @@
   #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages guile)
-  #:autoload   (gnu packages base) (tar)
+  #:use-module (gnu packages base)
   #:autoload   (gnu packages package-management) (guix)
   #:autoload   (gnu packages gnupg) (libgcrypt)
   #:autoload   (gnu packages guile) (guile2.0-json guile-json)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
+  #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-37)
   #:use-module (ice-9 match)
   #:export (compressor?
@@ -397,9 +398,15 @@ Create a bundle of PACKAGE.\n"))
        (read/eval-package-expression exp))
       (x #f)))
 
-  (define (manifest-from-args opts)
-    (let ((packages      (filter-map maybe-package-argument opts))
-          (manifest-file (assoc-ref opts 'manifest)))
+  (define (manifest-from-args store opts)
+    (let* ((transform     (options->transformation opts))
+           (packages      (map (match-lambda
+                                 (((? package? package) output)
+                                  (list (transform store package) output))
+                                 ((? package? package)
+                                  (list (transform store package) "out")))
+                               (filter-map maybe-package-argument opts)))
+           (manifest-file (assoc-ref opts 'manifest)))
       (cond
        ((and manifest-file (not (null? packages)))
         (leave (G_ "both a manifest and a package list were given~%")))
@@ -409,33 +416,34 @@ Create a bundle of PACKAGE.\n"))
        (else (packages->manifest packages)))))
 
   (with-error-handling
-    (let* ((dry-run?    (assoc-ref opts 'dry-run?))
-           (manifest    (manifest-from-args opts))
-           (pack-format (assoc-ref opts 'format))
-           (name        (string-append (symbol->string pack-format)
-                                       "-pack"))
-           (target      (assoc-ref opts 'target))
-           (bootstrap?  (assoc-ref opts 'bootstrap?))
-           (compressor  (if bootstrap?
-                            bootstrap-xz
-                            (assoc-ref opts 'compressor)))
-           (tar         (if bootstrap?
-                            %bootstrap-coreutils&co
-                            tar))
-           (symlinks    (assoc-ref opts 'symlinks))
-           (build-image (match (assq-ref %formats pack-format)
-                          ((? procedure? proc) proc)
-                          (#f
-                           (leave (G_ "~a: unknown pack format")
-                                  format))))
-           (localstatedir? (assoc-ref opts 'localstatedir?)))
-      (with-store store
-        (parameterize ((%graft? (assoc-ref opts 'graft?))
-                       (%guile-for-build (package-derivation
-                                          store
-                                          (if (assoc-ref opts 'bootstrap?)
-                                              %bootstrap-guile
-                                              (canonical-package guile-2.2)))))
+    (with-store store
+      (parameterize ((%graft? (assoc-ref opts 'graft?))
+                     (%guile-for-build (package-derivation
+                                        store
+                                        (if (assoc-ref opts 'bootstrap?)
+                                            %bootstrap-guile
+                                            (canonical-package guile-2.2))
+                                        #:graft? (assoc-ref opts 'graft?))))
+        (let* ((dry-run?    (assoc-ref opts 'dry-run?))
+               (manifest    (manifest-from-args store opts))
+               (pack-format (assoc-ref opts 'format))
+               (name        (string-append (symbol->string pack-format)
+                                           "-pack"))
+               (target      (assoc-ref opts 'target))
+               (bootstrap?  (assoc-ref opts 'bootstrap?))
+               (compressor  (if bootstrap?
+                                bootstrap-xz
+                                (assoc-ref opts 'compressor)))
+               (tar         (if bootstrap?
+                                %bootstrap-coreutils&co
+                                tar))
+               (symlinks    (assoc-ref opts 'symlinks))
+               (build-image (match (assq-ref %formats pack-format)
+                              ((? procedure? proc) proc)
+                              (#f
+                               (leave (G_ "~a: unknown pack format")
+                                      format))))
+               (localstatedir? (assoc-ref opts 'localstatedir?)))
           ;; Set the build options before we do anything else.
           (set-build-options-from-command-line store opts)
 
diff --git a/guix/self.scm b/guix/self.scm
index 6220efb397..4378a3dee5 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -260,13 +260,18 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
                  #:extensions dependencies
                  #:guile-for-build guile-for-build))
 
-  (define *package-modules*
-    (scheme-node "guix-packages"
+  (define *core-package-modules*
+    (scheme-node "guix-packages-base"
                  `((gnu packages)
-                   ,@(scheme-modules* source "gnu/packages"))
+                   (gnu packages base))
                  (list *core-modules* *extra-modules*)
                  #:extensions dependencies
-                 #:extra-files                    ;all the non-Scheme files
+
+                 ;; Add all the non-Scheme files here.  We must do it here so
+                 ;; that 'search-patches' & co. can find them.  Ideally we'd
+                 ;; keep them next to the .scm files that use them but it's
+                 ;; difficult to do (XXX).
+                 #:extra-files
                  (file-imports source "gnu/packages"
                                (lambda (file stat)
                                  (and (eq? 'regular (stat:type stat))
@@ -276,13 +281,21 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
                                       (not (string-suffix? "~" file)))))
                  #:guile-for-build guile-for-build))
 
+  (define *package-modules*
+    (scheme-node "guix-packages"
+                 (scheme-modules* source "gnu/packages")
+                 (list *core-modules* *extra-modules* *core-package-modules*)
+                 #:extensions dependencies
+                 #:guile-for-build guile-for-build))
+
   (define *system-modules*
     (scheme-node "guix-system"
                  `((gnu system)
                    (gnu services)
                    ,@(scheme-modules* source "gnu/system")
                    ,@(scheme-modules* source "gnu/services"))
-                 (list *package-modules* *extra-modules* *core-modules*)
+                 (list *core-package-modules* *package-modules*
+                       *extra-modules* *core-modules*)
                  #:extensions dependencies
                  #:extra-files
                  (file-imports source "gnu/system/examples" (const #t))
@@ -292,7 +305,8 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
   (define *cli-modules*
     (scheme-node "guix-cli"
                  (scheme-modules* source "/guix/scripts")
-                 (list *core-modules* *extra-modules* *package-modules*
+                 (list *core-modules* *extra-modules*
+                       *core-package-modules* *package-modules*
                        *system-modules*)
                  #:extensions dependencies
                  #:guile-for-build guile-for-build))
@@ -330,6 +344,7 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
                                      *cli-modules*
                                      *system-modules*
                                      *package-modules*
+                                     *core-package-modules*
                                      *extra-modules*
                                      *core-modules*))
 
diff --git a/tests/guix-pack.sh b/tests/guix-pack.sh
index 1b63b957be..5584c10e00 100644
--- a/tests/guix-pack.sh
+++ b/tests/guix-pack.sh
@@ -35,18 +35,23 @@ export GUIX_BUILD_OPTIONS
 # Build a tarball with no compression.
 guix pack --compression=none --bootstrap guile-bootstrap
 
-# Build a tarball (with compression).
-guix pack --bootstrap guile-bootstrap
+# Build a tarball (with compression).  Check that '-e' works as well.
+out1="`guix pack --bootstrap guile-bootstrap`"
+out2="`guix pack --bootstrap -e '(@ (gnu packages bootstrap) %bootstrap-guile)'`"
+test -n "$out1"
+test "$out1" = "$out2"
 
 # Build a tarball with a symlink.
 the_pack="`guix pack --bootstrap -S /opt/gnu/bin=bin guile-bootstrap`"
 
-# Try to extract it.
+# Try to extract it.  Note: we cannot test whether /opt/gnu/bin/guile itself
+# exists because /opt/gnu/bin may be an absolute symlink to a store item that
+# has been GC'd.
 test_directory="`mktemp -d`"
 trap 'rm -rf "$test_directory"' EXIT
 cd "$test_directory"
 tar -xf "$the_pack"
-test -x opt/gnu/bin/guile
+test -L opt/gnu/bin
 
 is_available () {
     # Use the "type" shell builtin to see if the program is on PATH.
@@ -81,3 +86,10 @@ guix pack --dry-run --bootstrap -f docker -S /opt/gnu=/ guile-bootstrap
 # Build a tarball pack of cross-compiled software.  Use coreutils because
 # guile-bootstrap is not intended to be cross-compiled.
 guix pack --dry-run --bootstrap --target=arm-unknown-linux-gnueabihf coreutils
+
+# Make sure package transformation options are honored.
+mkdir -p "$test_directory"
+drv1="`guix pack -n guile 2>&1 | grep pack.*\.drv`"
+drv2="`guix pack -n --with-source=guile=$test_directory guile 2>&1 | grep pack.*\.drv`"
+test -n "$drv1"
+test "$drv1" != "$drv2"