Merge branch 'version-0.16.0'

This commit is contained in:
Ludovic Courtès 2018-12-07 00:00:41 +01:00
commit 3933905c5f
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
12 changed files with 143 additions and 58 deletions

58
NEWS
View File

@ -11,28 +11,38 @@ Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
Please send Guix bug reports to bug-guix@gnu.org. 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 ** Package management
*** Default substitute URL changed to https://ci.guix.info
*** guix pull -l lists new and upgraded packages *** guix pull -l lists new and upgraded packages
*** guix pull now supports channels via ~/.config/guix/channels.scm *** guix pull now supports channels via ~/.config/guix/channels.scm
*** New --profile or -p option for guix pull *** New --profile or -p option for guix pull
*** ~/.config/guix/current is now a symlink to /var/guix/profiles
*** New guix describe command *** New guix describe command
*** guix package no longer shows build logs by default *** guix package no longer shows build logs by default
*** guix commands now produce colored output 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” *** 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 *** New guix processes command
*** guix pack now honors --localstatedir for all its backends *** 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 pypi has a new --recursive option
*** guix import hackage has a new --recursive option *** guix import hackage has a new --recursive option
*** guix import stackage 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). The short option for --lts-version is now -l (used to be -r).
*** guix refresh now stores upstream keys in ~/.config/guix/upstream *** guix refresh now stores upstream keys in ~/.config/guix/upstream
*** Guix now depends on Guile-Gcrypt *** Guix now depends on Guile-Gcrypt
*** Guix now requires Guile-JSON
** Distribution ** Distribution
*** Rust is now bootstrapped from mrustc
*** The GNU Shepherd was upgraded to 0.5.0 *** The GNU Shepherd was upgraded to 0.5.0
*** guix system reconfigure now loads Shepherd service replacements *** guix system reconfigure now loads Shepherd service replacements
*** herd schedule mcron now displays mcrons job schedule *** herd schedule mcron now displays mcrons 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 *** herd invalidate nscd TABLE instructs nscd to invalidate TABLE
*** New services *** 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 ** Programming interfaces
*** New (guix channels) module *** New (guix channels) module, see “Channels” in the manual
*** New (guix inferior) module *** New (guix inferior) module, see “Inferiors” in the manual
*** New (guix status) module *** New (guix describe) module, used by guix describe
*** New (guix status) module, for build progress reporting
*** packages->manifest now accepts inferior packages *** packages->manifest now accepts inferior packages
*** New build systems: clojure, guile *** New build systems: clojure, guile
*** New git-checkout record constructor in (guix git)
*** Shepherd services can now declare custom actions *** Shepherd services can now declare custom actions
*** More of the (gnu system …) APIs are now non-monadic *** More of the (gnu system …) APIs are now non-monadic
*** New add-file-tree-to-store procedure in (guix store) *** 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 ** 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 ** Native language support
*** The manual is now partially translated into German, in addition to French *** The manual is now partially translated into German, in addition to French

View File

@ -30,6 +30,7 @@
(ice-9 match) (ice-9 match)
(ice-9 rdelim) (ice-9 rdelim)
(ice-9 regex) (ice-9 regex)
(ice-9 vlist)
(ice-9 pretty-print)) (ice-9 pretty-print))
(define %header-rx (define %header-rx
@ -98,31 +99,60 @@ paragraph."
(lambda (match port) (lambda (match port)
(let ((stars (match:substring match 1))) (let ((stars (match:substring match 1)))
(format port (format port
"~a ~a new packages~%~%~a~%~%" "~a ~a new packages~%~%"
stars (length added) stars (length added)))))))))
(enumeration->paragraph added)))))))))
(define (write-packages-updates news-file old new) (define (write-packages-updates news-file old new)
"Write to NEWS-FILE the list of packages upgraded between OLD and NEW." "Write to NEWS-FILE the list of packages upgraded between OLD and NEW."
(let ((upgraded (filter-map (match-lambda (define important
((package . new-version) '("gcc" "glibc" "binutils" "gdb" ;toolchain
(match (assoc package old) "shepherd" "linux-libre" "xorg-server" "cups" ;OS
((_ . old-version) "gnome" "xfce" "enlightenment" "lxde" "mate" ;desktop env.
(and (version>? new-version old-version) "guile" "bash" "python" "python2" "perl" ;languages
(string-append package "@" "ghc" "rust" "go" "julia" "r" "ocaml"
new-version))) "icedtea" "openjdk" "clojure" "sbcl" "racket"
(_ #f)))) "emacs" "gimp" "inkscape" "libreoffice" ;applications
new))) "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 (with-atomic-file-replacement news-file
(lambda (input output) (lambda (input output)
(rewrite-org-section input output (rewrite-org-section input output
(make-regexp "^(\\*+) (.*) package updates") (make-regexp "^(\\*+) (.*) package updates")
(lambda (match port) (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 (format port
"~a ~a package updates~%~%~a~%~%" "~a ~a package updates~%~%Noteworthy updates:~%~a~%~%"
stars (length upgraded) stars (length upgraded)
(enumeration->paragraph upgraded))))))))) (enumeration->paragraph lst)))))))))
(define (main . args) (define (main . args)
@ -138,6 +168,8 @@ paragraph."
(let-values (((previous-version new-version) (let-values (((previous-version new-version)
(call-with-input-file news-file NEWS->versions))) (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) (let* ((old (call-with-input-file (package-file previous-version)
read)) read))
(new (fold-packages (lambda (p r) (new (fold-packages (lambda (p r)

View File

@ -14,7 +14,7 @@
@set KEY-SERVER pool.sks-keyservers.net @set KEY-SERVER pool.sks-keyservers.net
@c The official substitute server used by default. @c The official substitute server used by default.
@set SUBSTITUTE-SERVER mirror.hydra.gnu.org @set SUBSTITUTE-SERVER ci.guix.info
@copying @copying
Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès@* 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. may be missing.
@item @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. occasionally find that a useful package is missing.
@item @item

View File

@ -361,8 +361,8 @@ sys_authorize_build_farms()
case $yn in case $yn in
[Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/hydra.gnu.org.pub" && [Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/hydra.gnu.org.pub" &&
_msg "${PAS}Authorized public key for hydra.gnu.org"; _msg "${PAS}Authorized public key for hydra.gnu.org";
guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/berlin.guixsd.org.pub" && guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.info.pub" &&
_msg "${PAS}Authorized public key for berlin.guixsd.org"; _msg "${PAS}Authorized public key for ci.guix.info";
break;; break;;
[Nn]*) _msg "${INF}Skipped authorizing build farm public keys" [Nn]*) _msg "${INF}Skipped authorizing build farm public keys"
break;; break;;

View File

@ -477,6 +477,11 @@ GRUB configuration and OS-DRV as the stuff in it."
"mnt=/tmp/root/mnt" "mnt=/tmp/root/mnt"
"-path-list" "-" "-path-list" "-"
"--" "--"
;; XXX: Add padding to avoid I/O errors on i686:
;; <https://bugs.gnu.org/33639>.
"-padding" "10m"
"-volid" (string-upcase volume-id) "-volid" (string-upcase volume-id)
(if volume-uuid (if volume-uuid
`("-volume_date" "uuid" `("-volume_date" "uuid"

View File

@ -1120,8 +1120,8 @@ dist_patch_DATA = \
%D%/packages/patches/quagga-reproducible-build.patch \ %D%/packages/patches/quagga-reproducible-build.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \ %D%/packages/patches/quickswitch-fix-dmenu-check.patch \
%D%/packages/patches/quilt-test-fix-regex.patch \ %D%/packages/patches/quilt-test-fix-regex.patch \
%D%/packages/patches/quilt-compat-getopt-fix-second-separator.patch \ %D%/packages/patches/quilt-getopt-nondigit-param.patch \
%D%/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch \ %D%/packages/patches/quilt-getopt-second-separator.patch \
%D%/packages/patches/qtwebkit-pbutils-include.patch \ %D%/packages/patches/qtwebkit-pbutils-include.patch \
%D%/packages/patches/randomjungle-disable-static-build.patch \ %D%/packages/patches/randomjungle-disable-static-build.patch \
%D%/packages/patches/rapicorn-isnan.patch \ %D%/packages/patches/rapicorn-isnan.patch \

View File

@ -101,9 +101,9 @@
;; Latest version of Guix, which may or may not correspond to a release. ;; Latest version of Guix, which may or may not correspond to a release.
;; Note: the 'update-guix-package.scm' script expects this definition to ;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this. ;; start precisely like this.
(let ((version "0.15.0") (let ((version "0.16.0")
(commit "71a78ba65b00ad1f27086a3dcdded7dc4326ade1") (commit "c845323d4b0a31ce5241a9d98187e1eeed43f71c")
(revision 8)) (revision 1))
(package (package
(name "guix") (name "guix")
@ -119,7 +119,7 @@
(commit commit))) (commit commit)))
(sha256 (sha256
(base32 (base32
"0isagzccfxjqrc38wamknvh0jzv1pjh0wq5baj9jzwl07xkrc0hc")) "0i431d5p9ckr7kxfiwpp94wgjgqn6mgyypf0smw64bk635fn6ycr"))
(file-name (string-append "guix-" version "-checkout")))) (file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments

View File

@ -102,8 +102,8 @@ listing the files modified by a patch.")
(base32 (base32
"06b816m2gz9jfif7k9v2hrm7fz76zjg5pavf7hd3ifybwn4cgjzn")) "06b816m2gz9jfif7k9v2hrm7fz76zjg5pavf7hd3ifybwn4cgjzn"))
(patches (search-patches "quilt-test-fix-regex.patch" (patches (search-patches "quilt-test-fix-regex.patch"
"quilt-compat-getopt-fix-second-separator.patch" "quilt-getopt-second-separator.patch"
"quilt-compat-getopt-fix-option-with-nondigit-param.patch")))) "quilt-getopt-nondigit-param.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("gettext" ,gnu-gettext))) `(("gettext" ,gnu-gettext)))

View File

@ -1499,26 +1499,27 @@ starting at FIRST-UID, and under GID."
1+ 1+
1)) 1))
(define (hydra-key-authorization key guix) (define (hydra-key-authorization keys guix)
"Return a gexp with code to register KEY, a file containing a 'guix archive' "Return a gexp with code to register KEYS, a list of files containing 'guix
public key, with GUIX." archive' public keys, with GUIX."
#~(unless (file-exists? "/etc/guix/acl") #~(unless (file-exists? "/etc/guix/acl")
(let ((pid (primitive-fork))) (for-each (lambda (key)
(case pid (let ((pid (primitive-fork)))
((0) (case pid
(let* ((key #$key) ((0)
(port (open-file key "r0b"))) (let* ((port (open-file key "r0b")))
(format #t "registering public key '~a'...~%" key) (format #t "registering public key '~a'...~%" key)
(close-port (current-input-port)) (close-port (current-input-port))
(dup port 0) (dup port 0)
(execl #$(file-append guix "/bin/guix") (execl #$(file-append guix "/bin/guix")
"guix" "archive" "--authorize") "guix" "archive" "--authorize")
(exit 1))) (primitive-exit 1)))
(else (else
(let ((status (cdr (waitpid pid)))) (let ((status (cdr (waitpid pid))))
(unless (zero? status) (unless (zero? status)
(format (current-error-port) "warning: \ (format (current-error-port) "warning: \
failed to register public key '~a': ~a~%" key status)))))))) failed to register public key '~a': ~a~%" key status)))))))
'(#$@keys))))
(define %default-authorized-guix-keys (define %default-authorized-guix-keys
;; List of authorized substitute keys. ;; List of authorized substitute keys.
@ -1632,8 +1633,7 @@ failed to register public key '~a': ~a~%" key status))))))))
;; Optionally authorize substitute server keys. ;; Optionally authorize substitute server keys.
(if authorize-key? (if authorize-key?
#~(begin (hydra-key-authorization keys guix)
#$@(map (cut hydra-key-authorization <> guix) keys))
#~#f)))) #~#f))))
(define* (references-file item #:optional (name "references")) (define* (references-file item #:optional (name "references"))

View File

@ -149,7 +149,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
guix build isc-dhcp guix build isc-dhcp
parted --script /dev/vdb mklabel gpt \\ parted --script /dev/vdb mklabel gpt \\
mkpart primary ext2 1M 3M \\ mkpart primary ext2 1M 3M \\
mkpart primary ext2 3M 1G \\ mkpart primary ext2 3M 1.2G \\
set 1 boot on \\ set 1 boot on \\
set 1 bios_grub on set 1 bios_grub on
mkfs.ext4 -L my-root /dev/vdb2 mkfs.ext4 -L my-root /dev/vdb2
@ -174,7 +174,7 @@ guix --version
export GUIX_BUILD_OPTIONS=--no-grafts export GUIX_BUILD_OPTIONS=--no-grafts
guix build isc-dhcp guix build isc-dhcp
parted --script /dev/vdb mklabel gpt \\ parted --script /dev/vdb mklabel gpt \\
mkpart ext2 1M 1G \\ mkpart ext2 1M 1.2G \\
set 1 legacy_boot on set 1 legacy_boot on
mkfs.ext4 -L my-root -O '^64bit' /dev/vdb1 mkfs.ext4 -L my-root -O '^64bit' /dev/vdb1
mount /dev/vdb1 /mnt mount /dev/vdb1 /mnt
@ -377,7 +377,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
guix build isc-dhcp guix build isc-dhcp
parted --script /dev/vda mklabel gpt \\ parted --script /dev/vda mklabel gpt \\
mkpart primary ext2 1M 3M \\ mkpart primary ext2 1M 3M \\
mkpart primary ext2 3M 1G \\ mkpart primary ext2 3M 1.2G \\
set 1 boot on \\ set 1 boot on \\
set 1 bios_grub on set 1 bios_grub on
mkfs.ext4 -L my-root /dev/vda2 mkfs.ext4 -L my-root /dev/vda2
@ -510,7 +510,7 @@ guix build isc-dhcp
parted --script /dev/vdb mklabel gpt \\ parted --script /dev/vdb mklabel gpt \\
mkpart primary ext2 1M 3M \\ mkpart primary ext2 1M 3M \\
mkpart primary ext2 3M 100M \\ mkpart primary ext2 3M 100M \\
mkpart primary ext2 100M 1G \\ mkpart primary ext2 100M 1.2G \\
set 1 boot on \\ set 1 boot on \\
set 1 bios_grub on set 1 bios_grub on
mkfs.ext4 -L root-fs /dev/vdb2 mkfs.ext4 -L root-fs /dev/vdb2
@ -676,7 +676,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
ls -l /run/current-system/gc-roots ls -l /run/current-system/gc-roots
parted --script /dev/vdb mklabel gpt \\ parted --script /dev/vdb mklabel gpt \\
mkpart primary ext2 1M 3M \\ mkpart primary ext2 1M 3M \\
mkpart primary ext2 3M 1G \\ mkpart primary ext2 3M 1.2G \\
set 1 boot on \\ set 1 boot on \\
set 1 bios_grub on set 1 bios_grub on
echo -n thepassphrase | \\ echo -n thepassphrase | \\