summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--NEWS58
-rw-r--r--build-aux/update-NEWS.scm62
-rw-r--r--doc/guix.texi4
-rwxr-xr-xetc/guix-install.sh4
-rw-r--r--gnu/build/vm.scm5
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/package-management.scm8
-rw-r--r--gnu/packages/patches/quilt-getopt-nondigit-param.patch (renamed from gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch)0
-rw-r--r--gnu/packages/patches/quilt-getopt-second-separator.patch (renamed from gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch)0
-rw-r--r--gnu/packages/patchutils.scm4
-rw-r--r--gnu/services/base.scm42
-rw-r--r--gnu/tests/install.scm10
12 files changed, 143 insertions, 58 deletions
diff --git a/NEWS b/NEWS
index 11a649a6da..b78c2c6a71 100644
--- a/NEWS
+++ b/NEWS
@@ -11,28 +11,38 @@ Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 
 Please send Guix bug reports to bug-guix@gnu.org.
 
-* Changes since 0.15.0
+* Changes in 0.16.0 (since 0.15.0)
 
 ** Package management
 
+*** Default substitute URL changed to https://ci.guix.info
 *** ‘guix pull -l’ lists new and upgraded packages
 *** ‘guix pull’ now supports channels via ~/.config/guix/channels.scm
 *** New ‘--profile’ or ‘-p’ option for ‘guix pull’
+*** ~/.config/guix/current is now a symlink to /var/guix/profiles
 *** New ‘guix describe’ command
 *** ‘guix package’ no longer shows build logs by default
 *** ‘guix’ commands now produce colored output by default
+*** User interface now reports grafts separately
 *** Manifests can now refer to arbitrary Guix commits using “inferiors”
+*** New ‘--with-branch’ and ‘--with-commit’ package transformation options
+*** ‘guix build -f’ now accepts any kind of “file-like object”
+*** Git checkouts may now be fetched from Software Heritage
+*** New ‘guix repl’ command for use by inferiors
 *** New ‘guix processes’ command
 *** ‘guix pack’ now honors ‘--localstatedir’ for all its backends
+*** New ‘opam’ importer for ‘guix import’
 *** ‘guix import pypi’ has a new ‘--recursive’ option
 *** ‘guix import hackage’ has a new ‘--recursive’ option
 *** ‘guix import stackage’ has a new ‘--recursive’ option
 The short option for ‘--lts-version’ is now ‘-l’ (used to be ‘-r’).
 *** ‘guix refresh’ now stores upstream keys in ~/.config/guix/upstream
 *** Guix now depends on Guile-Gcrypt
+*** Guix now requires Guile-JSON
 
 ** Distribution
 
+*** Rust is now bootstrapped from mrustc
 *** The GNU Shepherd was upgraded to 0.5.0
 *** ‘guix system reconfigure’ now loads Shepherd service replacements
 *** ‘herd schedule mcron’ now displays mcron’s job schedule
@@ -40,21 +50,59 @@ The short option for ‘--lts-version’ is now ‘-l’ (used to be ‘-r’).
 *** ‘herd invalidate nscd TABLE’ instructs nscd to invalidate TABLE
 *** New services
 
-gitolite, iptables, pcscd, prometheus-node-exporter, varnish
+ddclient, gitolite, iptables, pcscd, prometheus-node-exporter, varnish
+
+*** 985 new packages
+
+*** 1945 package updates
+
+Noteworthy updates:
+bash 4.4.23, binutils 2.31.1, cups 2.2.8, enlightenment 0.22.4, gcc 8.2.0,
+gdb 8.2, ghc 8.4.3, gimp 2.10.6, glibc 2.28, gnupg 2.2.11, go 1.11.1,
+guile 2.2.4, icecat 60.3.0-gnu1, icedtea 3.7.0, libreoffice 6.1.3.2,
+linux-libre 4.19.6, ocaml 4.07.1, octave 4.4.1, perl 5.28.0,
+python2 2.7.15, python 3.7.0, racket 7.0, rust 1.28.0, r 3.5.1,
+sbcl 1.4.13, shepherd 0.5.0, xorg-server 1.20.3
 
 ** Programming interfaces
 
-*** New (guix channels) module
-*** New (guix inferior) module
-*** New (guix status) module
+*** New (guix channels) module, see “Channels” in the manual
+*** New (guix inferior) module, see “Inferiors” in the manual
+*** New (guix describe) module, used by ‘guix describe’
+*** New (guix status) module, for build progress reporting
 *** ‘packages->manifest’ now accepts inferior packages
 *** New build systems: ‘clojure’, ‘guile’
+*** New ‘git-checkout’ record constructor in (guix git)
 *** Shepherd services can now declare custom actions
 *** More of the (gnu system …) APIs are now non-monadic
 *** New ‘add-file-tree-to-store’ procedure in (guix store)
+*** New (guix swh) module to access Software Heritage
+*** New (guix build debug-link) module, for ELF ‘.gnu_debuglink’ sections
 
 ** Noteworthy bug fixes
 
+*** Fix GCC crashes caused by a patch of ours (<https://bugs.gnu.org/31708>)
+*** ‘guix import hackage’ now supports ‘custom-setup’ field
+    (<https://bugs.gnu.org/23961>)
+*** ‘guix-daemon’ taken from ‘guix pull’ looks up ‘guix’ in the right place
+    (<https://bugs.gnu.org/32183>)
+*** Try several file names when looking up kernel modules
+    (<https://bugs.gnu.org/31714>)
+*** ‘file-system-*’ services are now always started after ‘udev’
+    (<https://bugs.gnu.org/32313>)
+*** Racket now ignores bytecode checksums for files in the store
+    (<https://bugs.gnu.org/30680>)
+*** Grafting now updates CRCs in ‘.gnu_debuglink’ ELF sections
+    (<https://bugs.gnu.org/19973>)
+*** UUID computation for VMs is now deterministic (<https://bugs.gnu.org/32652>)
+*** ‘git-predicate’ from (guix git) now uses Guile-Git, which fixes corner cases
+    (<https://bugs.gnu.org/27925>)
+*** (guix store database) registers each store item only once
+    (<https://bugs.gnu.org/32600>)
+*** The File > Open dialog in LibreOffice no longer triggers a crash
+    (<https://bugs.gnu.org/30642>)
+*** Account home directory is always honored (<https://bugs.gnu.org/33422>)
+
 ** Native language support
 
 *** The manual is now partially translated into German, in addition to French
diff --git a/build-aux/update-NEWS.scm b/build-aux/update-NEWS.scm
index a9dffef1d2..bf5f0e141b 100644
--- a/build-aux/update-NEWS.scm
+++ b/build-aux/update-NEWS.scm
@@ -30,6 +30,7 @@
              (ice-9 match)
              (ice-9 rdelim)
              (ice-9 regex)
+             (ice-9 vlist)
              (ice-9 pretty-print))
 
 (define %header-rx
@@ -98,31 +99,60 @@ paragraph."
                              (lambda (match port)
                                (let ((stars (match:substring match 1)))
                                  (format port
-                                         "~a ~a new packages~%~%~a~%~%"
-                                         stars (length added)
-                                         (enumeration->paragraph added)))))))))
+                                         "~a ~a new packages~%~%"
+                                         stars (length added)))))))))
 
 (define (write-packages-updates news-file old new)
   "Write to NEWS-FILE the list of packages upgraded between OLD and NEW."
-  (let ((upgraded (filter-map (match-lambda
-                                ((package . new-version)
-                                 (match (assoc package old)
-                                   ((_ . old-version)
-                                    (and (version>? new-version old-version)
-                                         (string-append package "@"
-                                                        new-version)))
-                                   (_ #f))))
-                              new)))
+  (define important
+    '("gcc" "glibc" "binutils" "gdb"                   ;toolchain
+      "shepherd" "linux-libre" "xorg-server" "cups"    ;OS
+      "gnome" "xfce" "enlightenment" "lxde" "mate"     ;desktop env.
+      "guile" "bash" "python" "python2" "perl"         ;languages
+      "ghc" "rust" "go" "julia" "r" "ocaml"
+      "icedtea" "openjdk" "clojure" "sbcl" "racket"
+      "emacs" "gimp" "inkscape" "libreoffice"          ;applications
+      "octave" "icecat" "gnupg"))
+
+  (let* ((table    (fold (lambda (package table)
+                           (match package
+                             ((name . version)
+                              (vhash-cons name version table))))
+                         vlist-null
+                         new))
+         (latest   (lambda (name)
+                     (let ((versions (vhash-fold* cons '() name table)))
+                       (match (sort versions version>?)
+                         ((latest . _) latest)))))
+         (upgraded (filter-map (match-lambda
+                                 ((package . new-version)
+                                  (match (assoc package old)
+                                    ((_ . old-version)
+                                     (and (string=? new-version
+                                                    (latest package))
+                                          (version>? new-version old-version)
+                                          (cons package new-version)))
+                                    (_ #f))))
+                               new))
+         (noteworthy (filter (match-lambda
+                               ((package . version)
+                                (member package important)))
+                             upgraded)))
     (with-atomic-file-replacement news-file
       (lambda (input output)
         (rewrite-org-section input output
                              (make-regexp "^(\\*+) (.*) package updates")
                              (lambda (match port)
-                               (let ((stars (match:substring match 1)))
+                               (let ((stars (match:substring match 1))
+                                     (lst   (map (match-lambda
+                                                   ((package . version)
+                                                    (string-append package " "
+                                                                   version)))
+                                                 noteworthy)))
                                  (format port
-                                         "~a ~a package updates~%~%~a~%~%"
+                                         "~a ~a package updates~%~%Noteworthy updates:~%~a~%~%"
                                          stars (length upgraded)
-                                         (enumeration->paragraph upgraded)))))))))
+                                         (enumeration->paragraph lst)))))))))
 
 
 (define (main . args)
@@ -138,6 +168,8 @@ paragraph."
 
        (let-values (((previous-version new-version)
                      (call-with-input-file news-file NEWS->versions)))
+         (format (current-error-port) "Updating NEWS for ~a to ~a...~%"
+                 previous-version new-version)
          (let* ((old (call-with-input-file (package-file previous-version)
                        read))
                 (new (fold-packages (lambda (p r)
diff --git a/doc/guix.texi b/doc/guix.texi
index c138d43242..4ef2601579 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -14,7 +14,7 @@
 @set KEY-SERVER pool.sks-keyservers.net
 
 @c The official substitute server used by default.
-@set SUBSTITUTE-SERVER mirror.hydra.gnu.org
+@set SUBSTITUTE-SERVER ci.guix.info
 
 @copying
 Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès@*
@@ -9069,7 +9069,7 @@ More and more system services are provided (@pxref{Services}), but some
 may be missing.
 
 @item
-More than 7,500 packages are available, but you might
+More than 8,500 packages are available, but you might
 occasionally find that a useful package is missing.
 
 @item
diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index 6a01e59723..f0bfc932bd 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -361,8 +361,8 @@ sys_authorize_build_farms()
         case $yn in
             [Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/hydra.gnu.org.pub" &&
                          _msg "${PAS}Authorized public key for hydra.gnu.org";
-                   guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/berlin.guixsd.org.pub" &&
-                       _msg "${PAS}Authorized public key for berlin.guixsd.org";
+                   guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.info.pub" &&
+                       _msg "${PAS}Authorized public key for ci.guix.info";
                    break;;
             [Nn]*) _msg "${INF}Skipped authorizing build farm public keys"
                    break;;
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 746808515f..83ad489cc7 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -477,6 +477,11 @@ GRUB configuration and OS-DRV as the stuff in it."
                 "mnt=/tmp/root/mnt"
                 "-path-list" "-"
                 "--"
+
+                ;; XXX: Add padding to avoid I/O errors on i686:
+                ;; <https://bugs.gnu.org/33639>.
+                "-padding" "10m"
+
                 "-volid" (string-upcase volume-id)
                 (if volume-uuid
                     `("-volume_date" "uuid"
diff --git a/gnu/local.mk b/gnu/local.mk
index a35e5ae7e3..52451b8c38 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1120,8 +1120,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/quagga-reproducible-build.patch          \
   %D%/packages/patches/quickswitch-fix-dmenu-check.patch	\
   %D%/packages/patches/quilt-test-fix-regex.patch		\
-  %D%/packages/patches/quilt-compat-getopt-fix-second-separator.patch	\
-  %D%/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch	\
+  %D%/packages/patches/quilt-getopt-nondigit-param.patch	\
+  %D%/packages/patches/quilt-getopt-second-separator.patch	\
   %D%/packages/patches/qtwebkit-pbutils-include.patch		\
   %D%/packages/patches/randomjungle-disable-static-build.patch	\
   %D%/packages/patches/rapicorn-isnan.patch			\
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index c5ba65a863..aae8c6a989 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -101,9 +101,9 @@
   ;; Latest version of Guix, which may or may not correspond to a release.
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
-  (let ((version "0.15.0")
-        (commit "71a78ba65b00ad1f27086a3dcdded7dc4326ade1")
-        (revision 8))
+  (let ((version "0.16.0")
+        (commit "c845323d4b0a31ce5241a9d98187e1eeed43f71c")
+        (revision 1))
     (package
       (name "guix")
 
@@ -119,7 +119,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0isagzccfxjqrc38wamknvh0jzv1pjh0wq5baj9jzwl07xkrc0hc"))
+                  "0i431d5p9ckr7kxfiwpp94wgjgqn6mgyypf0smw64bk635fn6ycr"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch b/gnu/packages/patches/quilt-getopt-nondigit-param.patch
index 6bbec67e75..6bbec67e75 100644
--- a/gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch
+++ b/gnu/packages/patches/quilt-getopt-nondigit-param.patch
diff --git a/gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch b/gnu/packages/patches/quilt-getopt-second-separator.patch
index cde2c8d41c..cde2c8d41c 100644
--- a/gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch
+++ b/gnu/packages/patches/quilt-getopt-second-separator.patch
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index fa5ad62e44..b655399345 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -102,8 +102,8 @@ listing the files modified by a patch.")
        (base32
         "06b816m2gz9jfif7k9v2hrm7fz76zjg5pavf7hd3ifybwn4cgjzn"))
       (patches (search-patches "quilt-test-fix-regex.patch"
-                               "quilt-compat-getopt-fix-second-separator.patch"
-                               "quilt-compat-getopt-fix-option-with-nondigit-param.patch"))))
+                               "quilt-getopt-second-separator.patch"
+                               "quilt-getopt-nondigit-param.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gnu-gettext)))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index cee9898d79..89e39f7690 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1499,26 +1499,27 @@ starting at FIRST-UID, and under GID."
           1+
           1))
 
-(define (hydra-key-authorization key guix)
-  "Return a gexp with code to register KEY, a file containing a 'guix archive'
-public key, with GUIX."
+(define (hydra-key-authorization keys guix)
+  "Return a gexp with code to register KEYS, a list of files containing 'guix
+archive' public keys, with GUIX."
   #~(unless (file-exists? "/etc/guix/acl")
-      (let ((pid (primitive-fork)))
-        (case pid
-          ((0)
-           (let* ((key  #$key)
-                  (port (open-file key "r0b")))
-             (format #t "registering public key '~a'...~%" key)
-             (close-port (current-input-port))
-             (dup port 0)
-             (execl #$(file-append guix "/bin/guix")
-                    "guix" "archive" "--authorize")
-             (exit 1)))
-          (else
-           (let ((status (cdr (waitpid pid))))
-             (unless (zero? status)
-               (format (current-error-port) "warning: \
-failed to register public key '~a': ~a~%" key status))))))))
+      (for-each (lambda (key)
+                  (let ((pid (primitive-fork)))
+                    (case pid
+                      ((0)
+                       (let* ((port (open-file key "r0b")))
+                         (format #t "registering public key '~a'...~%" key)
+                         (close-port (current-input-port))
+                         (dup port 0)
+                         (execl #$(file-append guix "/bin/guix")
+                                "guix" "archive" "--authorize")
+                         (primitive-exit 1)))
+                      (else
+                       (let ((status (cdr (waitpid pid))))
+                         (unless (zero? status)
+                           (format (current-error-port) "warning: \
+failed to register public key '~a': ~a~%" key status)))))))
+                '(#$@keys))))
 
 (define %default-authorized-guix-keys
   ;; List of authorized substitute keys.
@@ -1632,8 +1633,7 @@ failed to register public key '~a': ~a~%" key status))))))))
 
      ;; Optionally authorize substitute server keys.
      (if authorize-key?
-         #~(begin
-             #$@(map (cut hydra-key-authorization <> guix) keys))
+         (hydra-key-authorization keys guix)
          #~#f))))
 
 (define* (references-file item #:optional (name "references"))
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 4764ffffde..72e5523942 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -149,7 +149,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1G \\
+  mkpart primary ext2 3M 1.2G \\
   set 1 boot on \\
   set 1 bios_grub on
 mkfs.ext4 -L my-root /dev/vdb2
@@ -174,7 +174,7 @@ guix --version
 export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vdb mklabel gpt \\
-  mkpart ext2 1M 1G \\
+  mkpart ext2 1M 1.2G \\
   set 1 legacy_boot on
 mkfs.ext4 -L my-root -O '^64bit' /dev/vdb1
 mount /dev/vdb1 /mnt
@@ -377,7 +377,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vda mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1G \\
+  mkpart primary ext2 3M 1.2G \\
   set 1 boot on \\
   set 1 bios_grub on
 mkfs.ext4 -L my-root /dev/vda2
@@ -510,7 +510,7 @@ guix build isc-dhcp
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
   mkpart primary ext2 3M 100M \\
-  mkpart primary ext2 100M 1G \\
+  mkpart primary ext2 100M 1.2G \\
   set 1 boot on \\
   set 1 bios_grub on
 mkfs.ext4 -L root-fs /dev/vdb2
@@ -676,7 +676,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 ls -l /run/current-system/gc-roots
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1G \\
+  mkpart primary ext2 3M 1.2G \\
   set 1 boot on \\
   set 1 bios_grub on
 echo -n thepassphrase | \\