diff options
author | Marius Bakke <marius@gnu.org> | 2020-11-19 00:04:32 +0100 |
---|---|---|
committer | Marius Bakke <marius@gnu.org> | 2020-11-19 00:04:32 +0100 |
commit | 35ed83beae51c05069ed6754dd26cf0f549808ab (patch) | |
tree | fe09aa72524081aa54c74e6d5f99f1a1c006c06b | |
parent | 38f4c54d7e212fd26e6899fad29c2e604abb32f5 (diff) | |
parent | 0305bc91762f9d5e01abd3d55e8dd9d3d1ecbdad (diff) | |
download | guix-35ed83beae51c05069ed6754dd26cf0f549808ab.tar.gz |
Merge branch 'master' into staging
84 files changed, 1546 insertions, 1156 deletions
diff --git a/.dir-locals.el b/.dir-locals.el index 8e5d3902e3..4eb27d8b1b 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -11,23 +11,34 @@ . "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>") ;; Emacs-Guix - (eval . (setq guix-directory - (locate-dominating-file default-directory ".dir-locals.el"))) + (eval . (setq-local guix-directory + (locate-dominating-file default-directory + ".dir-locals.el"))) ;; Geiser ;; This allows automatically setting the `geiser-guile-load-path' ;; variable when using various Guix checkouts (e.g., via git worktrees). - (eval . (let* ((root-dir (expand-file-name - (locate-dominating-file - default-directory ".dir-locals.el"))) - ;; Workaround for bug https://issues.guix.gnu.org/43818. - (root-dir* (directory-file-name root-dir))) - (unless (boundp 'geiser-guile-load-path) - (defvar geiser-guile-load-path '())) - (make-local-variable 'geiser-guile-load-path) - (require 'cl-lib) - (cl-pushnew root-dir* geiser-guile-load-path - :test #'string-equal))))) + (eval . (let ((root-dir-unexpanded (locate-dominating-file + default-directory ".dir-locals.el"))) + ;; While Guix should in theory always have a .dir-locals.el + ;; (we are reading this file, after all) there seems to be a + ;; strange problem where this code "escapes" to some other buffers, + ;; at least vc-mode. See: + ;; https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00296.html + ;; Upstream report: <https://bugs.gnu.org/44698> + ;; Hence the following "when", which might otherwise be unnecessary; + ;; it prevents causing an error when root-dir-unexpanded is nil. + (when root-dir-unexpanded + (let* ((root-dir (expand-file-name root-dir-unexpanded)) + ;; Workaround for bug https://issues.guix.gnu.org/43818. + (root-dir* (directory-file-name root-dir))) + + (unless (boundp 'geiser-guile-load-path) + (defvar geiser-guile-load-path '())) + (make-local-variable 'geiser-guile-load-path) + (require 'cl-lib) + (cl-pushnew root-dir* geiser-guile-load-path + :test #'string-equal))))))) (c-mode . ((c-file-style . "gnu"))) (scheme-mode @@ -123,7 +134,6 @@ (eval . (put 'call-with-progress-reporter 'scheme-indent-function 1)) (eval . (put 'with-repository 'scheme-indent-function 2)) (eval . (put 'with-temporary-git-repository 'scheme-indent-function 2)) - (eval . (put 'with-temporary-git-worktree 'scheme-indent-function 2)) (eval . (put 'with-environment-variables 'scheme-indent-function 1)) (eval . (put 'with-fresh-gnupg-setup 'scheme-indent-function 1)) diff --git a/Makefile.am b/Makefile.am index e7053ee4f4..d63f2ae4b7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -562,7 +562,7 @@ dist_zshcompletion_DATA = etc/completion/zsh/_guix dist_fishcompletion_DATA = etc/completion/fish/guix.fish # SELinux policy -nodist_selinux_policy_DATA = etc/guix-daemon.cil.in +nodist_selinux_policy_DATA = etc/guix-daemon.cil EXTRA_DIST += \ HACKING \ @@ -570,6 +570,7 @@ EXTRA_DIST += \ TODO \ CODE-OF-CONDUCT \ .dir-locals.el \ + .guix-authorizations \ .guix-channel \ scripts/guix.in \ etc/guix-install.sh \ @@ -710,7 +711,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \ ac_cv_guix_test_root="$(GUIX_TEST_ROOT)" # Name of the 'guix' package shipped in the binary tarball. -GUIX_FOR_BINARY_TARBALL = guile3.0-guix +GUIX_FOR_BINARY_TARBALL = guix # The self-contained tarball. guix-binary.%.tar.xz: @@ -730,8 +731,8 @@ distcheck-hook: assert-binaries-available assert-final-inputs-self-contained EXTRA_DIST += $(top_srcdir)/.version BUILT_SOURCES += $(top_srcdir)/.version -$(top_srcdir)/.version: - echo $(VERSION) > "$@-t" && mv "$@-t" "$@" +$(top_srcdir)/.version: config.status + $(AM_V_GEN)echo $(VERSION) > "$@-t" && mv "$@-t" "$@" gen-tarball-version: echo $(VERSION) > "$(distdir)/.tarball-version" @@ -826,9 +827,10 @@ release: dist-with-updated-version $(MKDIR_P) "$(releasedir)" rm -f "$(releasedir)"/* mv $(SOURCE_TARBALLS) "$(releasedir)" - $(top_builddir)/pre-inst-env "$(GUILE)" \ - $(top_srcdir)/build-aux/update-guix-package.scm \ - "`git rev-parse HEAD`" "$(PACKAGE_VERSION)" + GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \ + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" "$(PACKAGE_VERSION)" git add $(top_srcdir)/gnu/packages/package-management.scm git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)." $(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \ @@ -840,9 +842,10 @@ release: dist-with-updated-version mv "guix-binary.$$system.tar.xz" \ "$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \ done - $(top_builddir)/pre-inst-env "$(GUILE)" \ - $(top_srcdir)/build-aux/update-guix-package.scm \ - "`git rev-parse HEAD`" + GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \ + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" git add $(top_srcdir)/gnu/packages/package-management.scm git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`." $(top_builddir)/pre-inst-env guix build guix \ diff --git a/NEWS b/NEWS index ab1838398c..62b599c9c9 100644 --- a/NEWS +++ b/NEWS @@ -60,6 +60,8 @@ Please send Guix bug reports to bug-guix@gnu.org. *** ‘swap-devices’ field of ‘operating-system’ can contains UUIDs and labels *** Graphical installer uses UUIDs for unencrypted swap partitions *** Graphical installer now supports NTFS file systems +*** File systems UUIDs and labels now recognized for F2FS and NTFS +*** Root file system can now be on NFS *** New services autossh, ganeti, gmnisrv, guix-build-coordinator, @@ -96,6 +98,8 @@ simulated-wifi, udev-rules, unattended-upgrade, webssh, zram (<https://issues.guix.gnu.org/35394>) *** ‘guix system reconfigure’ now starts services not currently running (<https://bugs.gnu.org/43720>) +*** Desktop environments now detect newly installed applications + (<https://bugs.gnu.org/35594>) *** Offloading and copying small items is now much faster (<https://issues.guix.gnu.org/43340>) *** GCC switched back to C_INCLUDE_PATH & co. from CPATH diff --git a/build-aux/update-guix-package.scm b/build-aux/update-guix-package.scm index ff6b105468..9fe6c201cc 100644 --- a/build-aux/update-guix-package.scm +++ b/build-aux/update-guix-package.scm @@ -44,9 +44,6 @@ (define %top-srcdir (string-append (current-source-directory) "/..")) -(define version-controlled? - (git-predicate %top-srcdir)) - (define (package-definition-location) "Return the source properties of the definition of the 'guix' package." (call-with-input-file (location-file (package-location guix)) @@ -114,8 +111,9 @@ COMMIT." "Create a new git worktree at DIRECTORY, detached on commit COMMIT." (invoke "git" "worktree" "add" "--detach" directory commit)) -(define-syntax-rule (with-temporary-git-worktree commit body ...) - "Execute BODY in the context of a temporary git worktree created from COMMIT." +(define (call-with-temporary-git-worktree commit proc) + "Execute PROC in the context of a temporary git worktree created from +COMMIT. PROC receives the temporary directory file name as an argument." (call-with-temporary-directory (lambda (tmp-directory) (dynamic-wind @@ -123,12 +121,12 @@ COMMIT." #t) (lambda () (git-add-worktree tmp-directory commit) - (with-directory-excursion tmp-directory body ...)) + (proc tmp-directory)) (lambda () (invoke "git" "worktree" "remove" "--force" tmp-directory)))))) (define %savannah-guix-git-repo-push-url-regexp - "git.(savannah|sv).gnu.org/srv/git/guix.git \\(push\\)") + "git.(savannah|sv).gnu.org:?/srv/git/guix.git \\(push\\)") (define-syntax-rule (with-input-pipe-to-string prog arg ...) (let* ((input-pipe (open-pipe* OPEN_READ prog arg ...)) @@ -156,27 +154,60 @@ COMMIT." "git" "branch" "-r" "--contains" commit (string-append remote "/master"))))) +(define (keep-source-in-store store source) + "Add SOURCE to the store under the name that the 'guix' package expects." + + ;; Add SOURCE to the store, but this time under the real name used in the + ;; 'origin'. This allows us to build the package without having to make a + ;; real checkout; thus, it also works when working on a private branch. + (reload-module + (resolve-module '(gnu packages package-management))) + + (let* ((source (add-to-store store + (origin-file-name (package-source guix)) + #t "sha256" source + #:select? (git-predicate source))) + (root (store-path-package-name source))) + + ;; Add an indirect GC root for SOURCE in the current directory. + (false-if-exception (delete-file root)) + (symlink source root) + (add-indirect-root store + (string-append (getcwd) "/" root)) + + (info (G_ "source code kept in ~a (GC root: ~a)~%") + source root))) + (define (main . args) (match args ((commit version) (with-directory-excursion %top-srcdir (or (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT") - (commit-already-pushed? (find-origin-remote) commit) + (let ((remote (find-origin-remote))) + (unless remote + (leave (G_ "Failed to find the origin git remote.~%"))) + (commit-already-pushed? remote commit)) (leave (G_ "Commit ~a is not pushed upstream. Aborting.~%") commit)) - (let* ((hash (with-temporary-git-worktree commit - (nix-base32-string->bytevector - (string-trim-both - (with-output-to-string - (lambda () - (guix-hash "-rx" "."))))))) - (location (package-definition-location)) - (old-hash (content-hash-value - (origin-hash (package-source guix))))) - (edit-expression location - (update-definition commit hash - #:old-hash old-hash - #:version version))))) + (call-with-temporary-git-worktree commit + (lambda (tmp-directory) + (let* ((hash (nix-base32-string->bytevector + (string-trim-both + (with-output-to-string + (lambda () + (guix-hash "-rx" tmp-directory)))))) + (location (package-definition-location)) + (old-hash (content-hash-value + (origin-hash (package-source guix))))) + (edit-expression location + (update-definition commit hash + #:old-hash old-hash + #:version version)) + ;; When GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT is set, the sources are + ;; added to the store. This is used as part of 'make release'. + (when (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT") + (with-store store + (keep-source-in-store store tmp-directory)))))))) ((commit) ;; Automatically deduce the version and revision numbers. (main commit #f)))) diff --git a/doc/contributing.texi b/doc/contributing.texi index d3f6325c3f..d8de71055a 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -1368,11 +1368,6 @@ commit that others can't refer to, a check is made that the commit used has already been pushed to the Savannah-hosted Guix git repository. This check can be disabled, @emph{at your own peril}, by setting the -@code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. - -To build the resulting 'guix' package when using a private commit, the -following command can be used: - -@example -./pre-inst-env guix build guix --with-git-url=guix=$PWD -@end example +@code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. When +this variable is set, the updated package source is also added to the +store. This is used as part of the release process of Guix. diff --git a/doc/guix.texi b/doc/guix.texi index 2b5efbf6e4..468e0a2e53 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -17538,7 +17538,7 @@ Available @code{cups-configuration} fields are: The CUPS package. @end deftypevr -@deftypevr {@code{cups-configuration} parameter} package-list extensions +@deftypevr {@code{cups-configuration} parameter} package-list extensions (default: @code{(list escpr hplip-minimal foomatic-filters)}) Drivers and other extensions to the CUPS package. @end deftypevr @@ -24906,14 +24906,18 @@ Defaults to @samp{tun}. @end deftypevr -@deftypevr {@code{openvpn-client-configuration} parameter} string ca +If you do not have some of these files (eg.@: you use a username and +password), you can disable any of the following three fields by setting +it to @code{'disabled}. + +@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string ca The certificate authority to check connections against. Defaults to @samp{"/etc/openvpn/ca.crt"}. @end deftypevr -@deftypevr {@code{openvpn-client-configuration} parameter} string cert +@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string cert The certificate of the machine the daemon is running on. It should be signed by the authority given in @code{ca}. @@ -24921,7 +24925,7 @@ Defaults to @samp{"/etc/openvpn/client.crt"}. @end deftypevr -@deftypevr {@code{openvpn-client-configuration} parameter} string key +@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string key The key of the machine the daemon is running on. It must be the key whose certificate is @code{cert}. @@ -25057,14 +25061,18 @@ Defaults to @samp{tun}. @end deftypevr -@deftypevr {@code{openvpn-server-configuration} parameter} string ca +If you do not have some of these files (eg.@: you use a username and +password), you can disable any of the following three fields by setting +it to @code{'disabled}. + +@deftypevr {@code{openvpn-server-configuration} parameter} maybe-string ca The certificate authority to check connections against. Defaults to @samp{"/etc/openvpn/ca.crt"}. @end deftypevr -@deftypevr {@code{openvpn-server-configuration} parameter} string cert +@deftypevr {@code{openvpn-server-configuration} parameter} maybe-string cert The certificate of the machine the daemon is running on. It should be signed by the authority given in @code{ca}. @@ -25072,7 +25080,7 @@ Defaults to @samp{"/etc/openvpn/client.crt"}. @end deftypevr -@deftypevr {@code{openvpn-server-configuration} parameter} string key +@deftypevr {@code{openvpn-server-configuration} parameter} maybe-string key The key of the machine the daemon is running on. It must be the key whose certificate is @code{cert}. @@ -31024,11 +31032,27 @@ a value. Docker images are built to contain exactly what they need, so the @option{--image-size} option is ignored in the case of @code{docker-image}. +@cindex disk-image, creating disk images The @code{disk-image} command can produce various image types. The -image type can be selected using the @command{--image-type} option. It -defaults to @code{raw}. When its value is @code{iso9660}, the +image type can be selected using the @option{--image-type} option. It +defaults to @code{raw}. When its value is @code{iso9660}, the @option{--label} option can be used to specify a volume ID with -@code{disk-image}. +@code{disk-image}. By default, the root file system of a disk image is +mounted non-volatile; the @option{--volatile} option can be provided to +make it volatile instead. When using @code{disk-image}, the bootloader +installed on the generated image is taken from the provided +@code{operating-system} definition. The following example demonstrates +how to generate an image that uses the @code{grub-efi-bootloader} +bootloader and boot it with QEMU: + +@example +image=$(guix system disk-image --image-type=qcow2 \ + gnu/system/examples/lightweight-desktop.tmpl) +cp $image /tmp/my-image.qcow2 +chmod +w /tmp/my-image.qcow2 +qemu-system-x86_64 -enable-kvm -hda /tmp/my-image.qcow2 -m 1000 \ + -bios $(guix build ovmf)/share/firmware/ovmf_x64.bin +@end example When using the @code{raw} image type, a raw disk image is produced; it can be copied as is to a USB stick, for instance. Assuming @@ -31042,10 +31066,17 @@ the image to it using the following command: The @code{--list-image-types} command lists all the available image types. +@cindex vm-image, creating virtual machine images When using @code{vm-image}, the returned image is in qcow2 format, which -the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, -for more information on how to run the image in a virtual machine. - +the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for +more information on how to run the image in a virtual machine. The +@code{grub-bootloader} bootloader is always used independently of what +is declared in the @code{operating-system} file passed as argument. +This is to make it easier to work with QEMU, which uses the SeaBIOS BIOS +by default, expecting a bootloader to be installed in the Master Boot +Record (MBR). + +@cindex docker-image, creating docker images When using @code{docker-image}, a Docker image is produced. Guix builds the image from scratch, not from a pre-existing Docker base image. As a result, it contains @emph{exactly} what you define in the operating diff --git a/etc/guix-daemon.cil.in b/etc/guix-daemon.cil.in index e0c9113498..91958b7617 100644 --- a/etc/guix-daemon.cil.in +++ b/etc/guix-daemon.cil.in @@ -1,6 +1,8 @@ ; -*- lisp -*- ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Daniel Brooks <db48x@db48x.net> +;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +23,18 @@ ;; Intermediate Language (CIL). It refers to types that must be defined in ;; the system's base policy. +;; If you, like me, need advice about fixing an SELinux policy, I recommend +;; reading https://danwalsh.livejournal.com/55324.html + +;; In particular, you can run semanage permissive -a guix_daemon.guix_daemon_t +;; to allow guix-daemon to do whatever it wants. SELinux will still check its +;; permissions, and when it doesn't have permission it will still send an +;; audit message to your system logs. This lets you know what permissions it +;; ought to have. Use ausearch --raw to find the permissions violations, then +;; pipe that to audit2allow to generate an updated policy. You'll still need +;; to translate that policy into CIL in order to update this file, but that's +;; fairly straight-forward. Annoying, but easy. + (block guix_daemon ;; Require existing types (typeattributeset cil_gen_require init_t) @@ -34,14 +48,19 @@ (roletype object_r guix_daemon_t) (type guix_daemon_conf_t) (roletype object_r guix_daemon_conf_t) + (typeattributeset file_type guix_daemon_conf_t) (type guix_daemon_exec_t) (roletype object_r guix_daemon_exec_t) + (typeattributeset file_type guix_daemon_exec_t) (type guix_daemon_socket_t) (roletype object_r guix_daemon_socket_t) + (typeattributeset file_type guix_daemon_socket_t) (type guix_store_content_t) (roletype object_r guix_store_content_t) + (typeattributeset file_type guix_store_content_t) (type guix_profiles_t) (roletype object_r guix_profiles_t) + (typeattributeset file_type guix_profiles_t) ;; These types are domains, thereby allowing process rules (typeattributeset domain (guix_daemon_t guix_daemon_exec_t)) @@ -55,6 +74,30 @@ (typetransition guix_store_content_t guix_daemon_exec_t process guix_daemon_t) + (roletype system_r guix_daemon_t) + + ;; allow init_t to read and execute guix files + (allow init_t + guix_profiles_t + (lnk_file (read))) + (allow init_t + guix_daemon_exec_t + (file (execute))) + (allow init_t + guix_daemon_t + (process (transition))) + (allow init_t + guix_store_content_t + (lnk_file (read))) + (allow init_t + guix_store_content_t + (file (open read execute))) + + ;; guix-daemon needs to know the names of users + (allow guix_daemon_t + passwd_file_t + (file (getattr open read))) + ;; Permit communication with NSCD (allow guix_daemon_t nscd_var_run_t @@ -71,25 +114,44 @@ (allow guix_daemon_t nscd_t (unix_stream_socket (connectto))) + (allow guix_daemon_t nscd_t + (nscd (getgrp gethost getpwd getserv shmemgrp shmemhost shmempwd shmemserv))) + + ;; permit downloading packages via HTTP(s) + (allow guix_daemon_t http_port_t + (tcp_socket (name_connect))) + (allow guix_daemon_t ftp_port_t + (tcp_socket (name_connect))) + (allow guix_daemon_t ephemeral_port_t + (tcp_socket (name_connect))) ;; Permit logging and temp file access (allow guix_daemon_t tmp_t - (lnk_file (setattr unlink))) + (lnk_file (create rename setattr unlink))) + (allow guix_daemon_t + tmp_t + (file (link rename create execute execute_no_trans write unlink setattr map relabelto))) + (allow guix_daemon_t + tmp_t + (fifo_file (open read write create getattr ioctl setattr unlink))) (allow guix_daemon_t tmp_t - (dir (create - rmdir + (dir (create rename + rmdir relabelto add_name remove_name open read write getattr setattr search))) (allow guix_daemon_t + tmp_t + (sock_file (create getattr setattr unlink write))) + (allow guix_daemon_t var_log_t (file (create getattr open write))) (allow guix_daemon_t var_log_t - (dir (getattr write add_name))) + (dir (getattr create write add_name))) (allow guix_daemon_t var_run_t (lnk_file (read))) @@ -100,10 +162,10 @@ ;; Spawning processes, execute helpers (allow guix_daemon_t self - (process (fork))) + (process (fork execmem setrlimit setpgid setsched))) (allow guix_daemon_t guix_daemon_exec_t - (file (execute execute_no_trans read open))) + (file (execute execute_no_trans read open entrypoint map))) ;; TODO: unknown (allow guix_daemon_t @@ -119,38 +181,51 @@ ;; Build isolation (allow guix_daemon_t guix_store_content_t - (file (mounton))) + (file (ioctl mounton))) (allow guix_store_content_t fs_t (filesystem (associate))) (allow guix_daemon_t guix_store_content_t - (dir (mounton))) + (dir (read mounton))) (allow guix_daemon_t guix_daemon_t (capability (net_admin fsetid fowner chown setuid setgid dac_override dac_read_search - sys_chroot))) + sys_chroot + sys_admin))) (allow guix_daemon_t fs_t (filesystem (unmount))) (allow guix_daemon_t devpts_t + (dir (search))) + (allow guix_daemon_t + devpts_t (filesystem (mount))) (allow guix_daemon_t devpts_t - (chr_file (setattr getattr))) + (chr_file (ioctl open read write setattr getattr))) (allow guix_daemon_t tmpfs_t - (filesystem (mount))) + (filesystem (getattr mount))) + (allow guix_daemon_t + tmpfs_t + (file (create open read unlink write))) (allow guix_daemon_t tmpfs_t - (dir (getattr))) + (dir (getattr add_name remove_name write))) (allow guix_daemon_t proc_t - (filesystem (mount))) + (file (getattr open read))) + (allow guix_daemon_t + proc_t + (dir (read))) + (allow guix_daemon_t + proc_t + (filesystem (associate mount))) (allow guix_daemon_t null_device_t (chr_file (getattr open read write))) @@ -179,7 +254,7 @@ search rename add_name remove_name open write - rmdir))) + rmdir relabelfrom))) (allow guix_daemon_t guix_store_content_t (file (create @@ -189,7 +264,7 @@ link unlink map rename - open read write))) + open read write relabelfrom))) (allow guix_daemon_t guix_store_content_t (lnk_file (create @@ -197,17 +272,23 @@ link unlink read rename))) + (allow guix_daemon_t + guix_store_content_t + (fifo_file (create getattr open read unlink write))) + (allow guix_daemon_t + guix_store_content_t + (sock_file (create getattr unlink write))) ;; Access to configuration files and directories (allow guix_daemon_t guix_daemon_conf_t - (dir (search + (dir (search create setattr getattr add_name remove_name open read write))) (allow guix_daemon_t guix_daemon_conf_t - (file (create + (file (create rename lock map getattr setattr @@ -216,11 +297,17 @@ (allow guix_daemon_t guix_daemon_conf_t (lnk_file (create getattr rename unlink))) + (allow guix_daemon_t net_conf_t + (file (getattr open read))) + (allow guix_daemon_t net_conf_t + (lnk_file (read))) + (allow guix_daemon_t NetworkManager_var_run_t + (dir (search))) ;; Access to profiles (allow guix_daemon_t guix_profiles_t - (dir (getattr setattr read open))) + (dir (search getattr setattr read write open create add_name))) (allow guix_daemon_t guix_profiles_t (lnk_file (read getattr))) @@ -233,9 +320,23 @@ (allow guix_daemon_t user_home_t (dir (search))) + (allow guix_daemon_t + cache_home_t + (dir (search))) + + ;; self upgrades + (allow guix_daemon_t + self + (dir (add_name write))) + (allow guix_daemon_t + self + (netlink_route_socket (bind create getattr nlmsg_read read write))) ;; Socket operations (allow guix_daemon_t + guix_daemon_socket_t + (sock_file (unlink))) + (allow guix_daemon_t init_t (fd (use))) (allow guix_daemon_t @@ -255,10 +356,51 @@ getopt setopt))) (allow guix_daemon_t self + (tcp_socket (accept listen bind connect create setopt getopt getattr ioctl read write shutdown))) + (allow guix_daemon_t + unreserved_port_t + (tcp_socket (name_bind name_connect accept listen))) + (allow guix_daemon_t + self + (udp_socket (connect getattr bind getopt setopt))) + (allow guix_daemon_t + self (fifo_file (write read))) (allow guix_daemon_t self (udp_socket (ioctl create))) + (allow guix_daemon_t + self + (unix_stream_socket (connectto))) + + (allow guix_daemon_t + node_t + (tcp_socket (node_bind))) + (allow guix_daemon_t + node_t + (udp_socket (node_bind))) + (allow guix_daemon_t + port_t + (tcp_socket (name_connect))) + (allow guix_daemon_t + rtp_media_port_t + (udp_socket (name_bind))) + (allow guix_daemon_t + vnc_port_t + (tcp_socket (name_bind))) + + ;; I guess sometimes it needs random numbers + (allow guix_daemon_t + random_device_t + (chr_file (read))) + + ;; guix system vm + (allow guix_daemon_t + kvm_device_t + (chr_file (ioctl open read write))) + (allow guix_daemon_t + kernel_t + (system (ipc_info))) ;; Label file system (filecon "@guix_sysconfdir@/guix(/.*)?" @@ -277,5 +419,7 @@ file (system_u object_r guix_daemon_exec_t (low low))) (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon" file (system_u object_r guix_daemon_exec_t (low low))) + (filecon "@storedir@/[a-z0-9]+-guix-daemon" + file (system_u object_r guix_daemon_exec_t (low low))) (filecon "@guix_localstatedir@/guix/daemon-socket/socket" any (system_u object_r guix_daemon_socket_t (low low)))) diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm index 2eebb8e9d9..6d7352ddd2 100644 --- a/gnu/bootloader.scm +++ b/gnu/bootloader.scm @@ -22,6 +22,8 @@ (define-module (gnu bootloader) #:use-module (guix discovery) + #:use-module (guix gexp) + #:use-module (guix profiles) #:use-module (guix records) #:use-module (guix ui) #:use-module (srfi srfi-1) @@ -66,7 +68,9 @@ bootloader-configuration-additional-configuration %bootloaders - lookup-bootloader-by-name)) + lookup-bootloader-by-name + + efi-bootloader-chain)) ;;; @@ -227,3 +231,122 @@ record." (eq? name (bootloader-name bootloader))) (force %bootloaders)) (leave (G_ "~a: no such bootloader~%") name))) + +(define (efi-bootloader-profile files bootloader-package hooks) + "Creates a profile with BOOTLOADER-PACKAGE and a directory collection/ with +links to additional FILES from the store. This collection is meant to be used +by the bootloader installer. + +FILES is a list of file or directory names from the store, which will be +symlinked into the collection/ directory. If a directory name ends with '/', +then the directory content instead of the directory itself will be symlinked +into the collection/ directory. + +FILES may contain file like objects produced by functions like plain-file, +local-file, etc., or package contents produced with file-append. + +HOOKS lists additional hook functions to modify the profile." + (define (bootloader-collection manifest) + (define build + (with-imported-modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1) + (srfi srfi-26)) + #~(begin + (use-modules ((guix build utils) + #:select (mkdir-p strip-store-file-name)) + ((ice-9 ftw) + #:select (scandir)) + ((srfi srfi-1) + #:select (append-map every remove)) + ((srfi srfi-26) + #:select (cut))) + (define (symlink-to file directory transform) + "Creates a symlink to FILE named (TRANSFORM FILE) in DIRECTORY." + (symlink file (string-append directory "/" (transform file)))) + (define (directory-content directory) + "Creates a list of absolute path names inside DIRECTORY." + (map (lambda (name) + (string-append directory name)) + (or (scandir directory (lambda (name) + (not (member name '("." ".."))))) + '()))) + (define name-ends-with-/? (cut string-suffix? "/" <>)) + (define (name-is-store-entry? name) + "Return #t if NAME is a direct store entry and nothing inside." + (not (string-index (strip-store-file-name name) #\/))) + (let* ((collection (string-append #$output "/collection")) + (files '#$files) + (directories (filter name-ends-with-/? files)) + (names-from-directories + (append-map (lambda (directory) + (directory-content directory)) + directories)) + (names (append names-from-directories + (remove name-ends-with-/? files)))) + (mkdir-p collection) + (if (every file-exists? names) + (begin + (for-each (lambda (name) + (symlink-to name collection + (if (name-is-store-entry? name) + strip-store-file-name + basename))) + names) + #t) + #f))))) + + (gexp->derivation "bootloader-collection" + build + #:local-build? #t + #:substitutable? #f + #:properties + `((type . profile-hook) + (hook . bootloader-collection)))) + + (profile (content (packages->manifest (list bootloader-package))) + (name "bootloader-profile") + (hooks (append (list bootloader-collection) hooks)) + (locales? #f) + (allow-collisions? #f) + (relative-symlinks? #f))) + +(define* (efi-bootloader-chain files + final-bootloader + #:key + (hooks '()) + installer) + "Define a bootloader chain with FINAL-BOOTLOADER as the final bootloader and +certain directories and files from the store given in the list of FILES. + +FILES may contain file like objects produced by functions like plain-file, +local-file, etc., or package contents produced with file-append. They will be +collected inside a directory collection/ inside a generated bootloader profile, +which will be passed to the INSTALLER. + +If a directory name in FILES ends with '/', then the directory content instead +of the directory itself will be symlinked into the collection/ directory. + +The procedures in the HOOKS list can be used to further modify the bootloader +profile. It is possible to pass a single function instead of a list. + +If the INSTALLER argument is used, then this function will be called to install +the bootloader. Otherwise the installer of the FINAL-BOOTLOADER will be called." + (let* ((final-installer (or installer + (bootloader-installer final-bootloader))) + (profile (efi-bootloader-profile files + (bootloader-package final-bootloader) + (if (list? hooks) + hooks + (list hooks))))) + (bootloader + (inherit final-bootloader) + (package profile) + (installer + #~(lambda (bootloader target mount-point) + (#$final-installer bootloader target mount-point) + (copy-recursively + (string-append bootloader "/collection") + (string-append mount-point target) + #:follow-symlinks? #t + #:log (%make-void-port "w"))))))) diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 0899fab61f..af7b7561ff 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -573,21 +573,24 @@ fi~%")))) (define install-grub-efi #~(lambda (bootloader efi-dir mount-point) - ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the - ;; system whose root is mounted at MOUNT-POINT. - (let ((grub-install (string-append bootloader "/sbin/grub-install")) - (install-dir (string-append mount-point "/boot")) - ;; When installing Guix, it's common to mount EFI-DIR below - ;; MOUNT-POINT rather than /boot/efi on the live image. - (target-esp (if (file-exists? (string-append mount-point efi-dir)) - (string-append mount-point efi-dir) - efi-dir))) - ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or - ;; root partition. - (setenv "GRUB_ENABLE_CRYPTODISK" "y") - (invoke/quiet grub-install "--boot-directory" install-dir - "--bootloader-id=Guix" - "--efi-directory" target-esp)))) + ;; There is nothing useful to do when called in the context of a disk + ;; image generation. + (when efi-dir + ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the + ;; system whose root is mounted at MOUNT-POINT. + (let ((grub-install (string-append bootloader "/sbin/grub-install")) + (install-dir (string-append mount-point "/boot")) + ;; When installing Guix, it's common to mount EFI-DIR below + ;; MOUNT-POINT rather than /boot/efi on the live image. + (target-esp (if (file-exists? (string-append mount-point efi-dir)) + (string-append mount-point efi-dir) + efi-dir))) + ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or + ;; root partition. + (setenv "GRUB_ENABLE_CRYPTODISK" "y") + (invoke/quiet grub-install "--boot-directory" install-dir + "--bootloader-id=Guix" + "--efi-directory" target-esp))))) (define (install-grub-efi-netboot subdir) "Define a grub-efi-netboot bootloader installer for installation in SUBDIR, diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm index f592d315f5..9ef263d1f9 100644 --- a/gnu/installer/parted.scm +++ b/gnu/installer/parted.scm @@ -41,6 +41,7 @@ #:use-module (ice-9 regex) #:use-module (rnrs io ports) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) @@ -318,7 +319,7 @@ PARTED-OBJECT field equals PARTITION, return #f if not found." fail. See rereadpt function in wipefs.c of util-linux for an explanation." ;; Kernel always return EINVAL for BLKRRPART on loopdevices. (and (not (string-match "/dev/loop*" file-name)) - (let loop ((try 4)) + (let loop ((try 16)) (usleep 250000) (let ((in-use? (device-in-use? file-name))) (if (and in-use? (> try 0)) @@ -339,15 +340,12 @@ fail. See rereadpt function in wipefs.c of util-linux for an explanation." (define (non-install-devices) "Return all the available devices, except the busy one, allegedly the install device. DEVICE-IS-BUSY? is a parted call, checking if the device is -mounted. The install image uses an overlayfs so the install device does not -appear as mounted and won't be considered as busy. So use also DEVICE-IN-USE? -from (guix build syscalls) module, who will try to re-read the device's -partition table to determine whether or not it is already used (like sfdisk -from util-linux)." +mounted." + ;; FIXME: The install image uses an overlayfs so the install device does not + ;; appear as mounted and won't be considered as busy. (remove (lambda (device) (let ((file-name (device-path device))) - (or (device-is-busy? device) - (with-delay-device-in-use? file-name)))) + (device-is-busy? device))) (devices))) @@ -1390,9 +1388,12 @@ the devices not to be used before returning." (let ((device-file-names (map device-path devices))) (for-each force-device-sync devices) (for-each (lambda (file-name) - (let ((in-use? (with-delay-device-in-use? file-name))) - (and in-use? - (error - (format #f (G_ "Device ~a is still in use.") - file-name))))) + (let/time ((time in-use? + (with-delay-device-in-use? file-name))) + (if in-use? + (error + (format #f (G_ "Device ~a is still in use.") + file-name)) + (syslog "Syncing ~a took ~a seconds.~%" + file-name (time-second time))))) device-file-names))) diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm index 5f8fe8ca01..a7fa66a199 100644 --- a/gnu/installer/utils.scm +++ b/gnu/installer/utils.scm @@ -22,6 +22,7 @@ #:use-module (guix build utils) #:use-module (guix i18n) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-19) #:use-module (srfi srfi-34) #:use-module (ice-9 match) #:use-module (ice-9 rdelim) @@ -36,6 +37,8 @@ syslog-port syslog + call-with-time + let/time with-server-socket current-server-socket @@ -117,6 +120,17 @@ COMMAND exited successfully, #f otherwise." ;;; Logging. ;;; +(define (call-with-time thunk kont) + "Call THUNK and pass KONT the elapsed time followed by THUNK's return +values." + (let* ((start (current-time time-monotonic)) + (result (call-with-values thunk list)) + (end (current-time time-monotonic))) + (apply kont (time-difference end start) result))) + +(define-syntax-rule (let/time ((time result exp)) body ...) + (call-with-time (lambda () exp) (lambda (time result) body ...))) + (define (open-syslog-port) "Return an open port (a socket) to /dev/log or #f if that wasn't possible." (let ((sock (socket AF_UNIX SOCK_DGRAM 0))) diff --git a/gnu/local.mk b/gnu/local.mk index a02f4bf01e..cf85fa737e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -846,7 +846,6 @@ dist_patch_DATA = \ %D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/binutils-mingw-w64-timestamp.patch \ %D%/packages/patches/binutils-mingw-w64-deterministic.patch \ - %D%/packages/patches/bitcoin-core-python-compat.patch \ %D%/packages/patches/blender-2.79-gcc8.patch \ %D%/packages/patches/blender-2.79-gcc9.patch \ %D%/packages/patches/blender-2.79-newer-ffmpeg.patch \ @@ -1012,6 +1011,8 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch \ %D%/packages/patches/gcc-libsanitizer-ustat.patch \ %D%/packages/patches/gcc-4.9-libsanitizer-mode-size.patch \ + %D%/packages/patches/gcc-6-fix-isl-includes.patch \ + %D%/packages/patches/gcc-6-fix-buffer-size.patch \ %D%/packages/patches/gcc-6-libsanitizer-mode-size.patch \ %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \ %D%/packages/patches/gcc-libvtv-runpath.patch \ @@ -1052,6 +1053,7 @@ dist_patch_DATA = \ %D%/packages/patches/ghostscript-no-header-id.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \ + %D%/packages/patches/glib-appinfo-watch.patch \ %D%/packages/patches/glib-tests-timer.patch \ %D%/packages/patches/glibc-CVE-2018-11236.patch \ %D%/packages/patches/glibc-CVE-2018-11237.patch \ @@ -1589,7 +1591,6 @@ dist_patch_DATA = \ %D%/packages/patches/scotch-build-parallelism.patch \ %D%/packages/patches/scotch-integer-declarations.patch \ %D%/packages/patches/screen-hurd-path-max.patch \ - %D%/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \ %D%/packages/patches/seed-webkit.patch \ %D%/packages/patches/seq24-rename-mutex.patch \ @@ -1645,7 +1646,6 @@ dist_patch_DATA = \ %D%/packages/patches/tk-find-library.patch \ %D%/packages/patches/transcode-ffmpeg.patch \ %D%/packages/patches/ttf2eot-cstddef.patch \ - %D%/packages/patches/tomb-fix-errors-on-open.patch \ %D%/packages/patches/tup-unbundle-dependencies.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \ %D%/packages/patches/twinkle-bcg729.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 4eaf38e1d8..f3bd7ffab2 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1559,10 +1559,10 @@ features of sudo with a fraction of the codebase.") #t)))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) + (lambda _ (chdir "wpa_supplicant") (copy-file "defconfig" ".config") (let ((port (open-file ".config" "al"))) @@ -1576,6 +1576,15 @@ features of sudo with a fraction of the codebase.") CONFIG_LIBNL32=y CONFIG_READLINE=y\n" port) (close-port port)) + ;; Make sure we have a pkg-config when cross compiling + (substitute* '(".config" + "Android.mk" + "Makefile" + "dbus/Makefile") + (("pkg-config") + (or (which "pkg-config") + (which (string-append ,(%current-target-system) + "-pkg-config"))))) #t)) (add-after 'install 'install-documentation (lambda* (#:key outputs #:allow-other-keys) @@ -1604,7 +1613,7 @@ features of sudo with a fraction of the codebase.") "wpa_supplicant.conf")) #t)))) - #:make-flags (list "CC=gcc" + #:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "BINDIR=" (assoc-ref %outputs "out") "/sbin") (string-append "LIBDIR=" (assoc-ref %outputs "out") @@ -1714,10 +1723,10 @@ command.") "1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8")))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) + (lambda _ ;; This is mostly copied from 'wpa-supplicant' above. (chdir "hostapd") (copy-file "defconfig" ".config") @@ -1729,6 +1738,14 @@ command.") CONFIG_IEEE80211AC=y\n" port) (close-port port)) #t)) + (add-after 'unpack 'patch-pkg-config + (lambda _ + (substitute* "src/drivers/drivers.mak" + (("pkg-config") + (or (which "pkg-config") + (string-append ,(%current-target-system) + "-pkg-config")))) + #t)) (add-after 'install 'install-man-pages (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -1745,7 +1762,7 @@ command.") (find-files "." "\\.8")) #t)))) - #:make-flags (list "CC=gcc" + #:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "BINDIR=" (assoc-ref %outputs "out") "/sbin") (string-append "LIBDIR=" (assoc-ref %outputs "out") @@ -1840,7 +1857,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).") (define-public acpica (package (name "acpica") - (version "20200925") + (version "20201113") (source (origin (method url-fetch) (uri (string-append @@ -1848,13 +1865,13 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).") version ".tar.gz")) (sha256 (base32 - "18n6129fkgj85piid7v4zxxksv3h0amqp4p977vcl9xg3bq0zd2w")))) + "0fmck3zklc328c8nzvfzm2xyh2i8zszzrd4k8kk8q30y4avnc6z1")))) (build-system gnu-build-system) (native-inputs `(("flex" ,flex) ("bison" ,bison))) (arguments - '(#:make-flags (list (string-append "PREFIX=" %output) - "CC=gcc" + `(#:make-flags (list (string-append "PREFIX=" %output) + (string-append "CC=" ,(cc-for-target)) "HOST=_LINUX" "OPT_CFLAGS=-Wall -fno-strict-aliasing") #:tests? #f ; no 'check' target @@ -2374,17 +2391,20 @@ lookup to YAML Mode. You could enable the mode with @code{(add-hook `(#:phases (modify-phases %standard-phases (delete 'configure) (replace 'build - (lambda _ - (invoke "make" "CC=gcc" "-Csrc"))) + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "-Csrc" make-flags))) (replace 'check - (lambda _ - (invoke "make" "CC=gcc" "-Ctests"))) + (lambda* (#:key tests? make-flags #:allow-other-keys) + (when tests? + (apply invoke "make" "-Ctests" make-flags)) + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin"))) (install-file "src/cpulimit" bin)) - #t))))) + #t))) + #:make-flags (list (string-append "CC=" ,(cc-for-target))))) (home-page "https://github.com/opsengine/cpulimit") (synopsis "Limit CPU usage") (description @@ -3355,14 +3375,14 @@ information tool.") (define-public nnn (package (name "nnn") - (version "3.4") + (version "3.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/jarun/nnn/releases/download/v" version "/nnn-v" version ".tar.gz")) (sha256 - (base32 "189h950m1jjrnhvgcvzk6nj89l58rkxim7bxa0441ssajxpaw0vq")))) + (base32 "1ww18vvfjkvi36rcamw8kpix4bhk71w5bw9kmnh158crah1x8dp6")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) @@ -3370,15 +3390,23 @@ information tool.") (native-inputs `(("pkg-config" ,pkg-config))) (arguments - '(#:tests? #f ; no tests + `(#:tests? #f ; no tests #:phases (modify-phases %standard-phases - (delete 'configure)) ; no configure script + (delete 'configure) ; no configure script + (add-after 'unpack 'patch-pkg-config + (lambda _ + (substitute* "Makefile" + (("pkg-config") + (or (which "pkg-config") + (string-append ,(%current-target-system) + "-pkg-config")))) + #t))) #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) - "CC=gcc"))) + (string-append "CC=" ,(cc-for-target))))) (home-page "https://github.com/jarun/nnn") (synopsis "Terminal file browser") (description "@command{nnn} is a fork of @command{noice}, a blazing-fast @@ -3459,9 +3487,9 @@ on systems running the Linux kernel.") (inputs `(("libpcap" ,libpcap))) (arguments - '(#:test-target "regress" + `(#:test-target "regress" #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm index 7cd45cca9d..7fd469e950 100644 --- a/gnu/packages/assembly.scm +++ b/gnu/packages/assembly.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com> ;;; Copyright © 2019 Andy Tai <atai@atai.org> @@ -51,7 +51,7 @@ #:use-module (gnu packages shells) #:use-module (gnu packages xml) #:use-module ((guix utils) - #:select (%current-system))) + #:select (%current-system cc-for-target))) (define-public nasm (package @@ -276,13 +276,21 @@ runtime") `(#:phases (modify-phases %standard-phases (delete 'configure) + (add-after 'unpack 'patch-pkg-config + (lambda _ + (substitute* "Makefile" + (("pkg-config") + (or (which "pkg-config") + (string-append ,(%current-target-system) + "-pkg-config")))) + #t)) (replace 'check (lambda _ (with-directory-excursion "test/asm" (invoke "./test.sh")) (with-directory-excursion "test/link" (invoke "./test.sh"))))) - #:make-flags `("CC=gcc" + #:make-flags `(,(string-append "CC=" ,(cc-for-target)) ,(string-append "PREFIX=" (assoc-ref %outputs "out"))))) (native-inputs diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 466d17f29d..3332e5b6d3 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -3840,9 +3840,9 @@ use them split WAVE data into multiple files.") (build-system gnu-build-system) (arguments ;; Test files are missing: https://github.com/foo86/dcadec/issues/53 - '(#:tests? #f + `(#:tests? #f #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) ;; Build shared library. "CONFIG_SHARED=1" (string-append "PREFIX=" (assoc-ref %outputs "out")) @@ -3917,8 +3917,8 @@ loudness of audio and video files to the same level.") "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g")))) (build-system gnu-build-system) (arguments - '(#:make-flags (list (string-append "PREFIX=" %output) - "CC=gcc") + `(#:make-flags (list (string-append "PREFIX=" %output) + (string-append "CC=" ,(cc-for-target))) #:tests? #f ; No tests #:phases (modify-phases %standard-phases diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm index 52ab445775..afa20945e7 100644 --- a/gnu/packages/authentication.scm +++ b/gnu/packages/authentication.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. @@ -33,14 +33,14 @@ (define-public oath-toolkit (package (name "oath-toolkit") - (version "2.6.3") + (version "2.6.4") (source (origin (method url-fetch) (uri (string-append "https://download.savannah.nongnu.org/releases/" name "/" name "-" version ".tar.gz")) (sha256 - (base32 "1cjial8njck2sd7452jcxspbi5h5fnp3n8v3wbmlw8fzqmgzvxx1")))) + (base32 "116na9nncpwshl3ww8w3llzwk49igilplxcjy1k6jzl3mmg2bimz")))) (build-system gnu-build-system) (arguments ;; TODO ‘--enable-pskc’ causes xmlsec-related test suite failures. diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index e5bc26519b..64058f1233 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> @@ -392,7 +392,7 @@ list and implement the backup strategy.") `(("librsync" ,librsync-0.9))) (arguments `(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out")) - "CC=gcc") + ,(string-append "CC=" ,(cc-for-target))) #:tests? #f ;test input not distributed #:phases ;; no configure phase diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 2a4339fda0..09bff49818 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org> @@ -93,14 +93,18 @@ (rename-file (string-append out "/bin/transmission-gtk") (string-append gui "/bin/transmission-gtk")) - ;; Move the '.desktop' and icon files as well. (mkdir (string-append gui "/share")) (for-each (lambda (dir) (rename-file (string-append out "/share/" dir) (string-append gui "/share/" dir))) - '("applications" "icons" "pixmaps"))) - #t))))) + '("appdata" "applications" "icons" "locale" "pixmaps")) + + (mkdir-p (string-append gui "/share/man/man1")) + (rename-file + (string-append out "/share/man/man1/transmission-gtk.1") + (string-append gui "/share/man/man1/transmission-gtk.1")) + #t)))))) (inputs `(("libevent" ,libevent) ("curl" ,curl) @@ -355,7 +359,7 @@ downloads, download scheduling, download rate limiting.") (arguments `(#:phases (modify-phases %standard-phases (delete 'configure)) ; no configure script - #:make-flags (list "CC=gcc" + #:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out")) "NO_HASH_CHECK=1" "USE_LARGE_FILES=1" diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index e3e49288ad..12bc39322f 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -134,6 +134,19 @@ (string-append (assoc-ref inputs "console-setup") "/bin/ckbcomp "))) #t)) + (add-after 'unpack 'set-freetype-variables + ;; These variables need to be set to the native versions + ;; of the dependencies because they are used to build + ;; programs which are executed during build time. + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((freetype (assoc-ref (or native-inputs inputs) "freetype"))) + (setenv "BUILD_FREETYPE_LIBS" + (string-append "-L" freetype + "/lib -lfreetype")) + (setenv "BUILD_FREETYPE_CFLAGS" + (string-append "-I" freetype + "/include/freetype2"))) + #t)) (add-before 'check 'disable-flaky-test (lambda _ ;; This test is unreliable. For more information, see: @@ -150,10 +163,11 @@ (("test_unset grub_func_test") "test_unset")) #t))) - ;; Disable tests on ARM and AARCH64 platforms. - #:tests? ,(not (any (cute string-prefix? <> (or (%current-target-system) - (%current-system))) - '("arm" "aarch64"))))) + ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling. + #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system) + (%current-system))) + '("arm" "aarch64")) + (%current-target-system))))) (inputs `(("gettext" ,gettext-minimal) @@ -195,6 +209,7 @@ ("flex" ,flex) ("texinfo" ,texinfo) ("help2man" ,help2man) + ("freetype" ,freetype) ; native version needed for build-grub-mkfont ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils ;; capable of assembling 64-bit instructions. However, our default @@ -425,7 +440,7 @@ menu to select one of the installed operating systems.") `(("python" ,python))) (arguments `(#:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1. (string-append "LDFLAGS=-Wl,-rpath=" @@ -436,6 +451,15 @@ menu to select one of the installed operating systems.") "INSTALL=install") #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-pkg-config + (lambda _ + (substitute* '("Makefile" + "tests/run_tests.sh") + (("pkg-config") + (or (which "pkg-config") + (string-append ,(%current-target-system) + "-pkg-config")))) + #t)) (delete 'configure)))) ; no configure script (home-page "https://www.devicetree.org") (synopsis "Compiles device tree source files") diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm index 85ff7bb352..3f140efdb3 100644 --- a/gnu/packages/build-tools.scm +++ b/gnu/packages/build-tools.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -67,7 +68,7 @@ "13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6")))) (build-system gnu-build-system) (arguments - `(#:make-flags `("CC=gcc" + `(#:make-flags `(,(string-append "CC=" ,(cc-for-target)) ,(string-append "INSTALL_PREFIX=" (assoc-ref %outputs "out"))) #:test-target "test" @@ -252,7 +253,7 @@ resembles Python.") (native-inputs `(("unzip" ,unzip))) ; for unpacking the source (arguments - `(#:make-flags '("CC=gcc") + `(#:make-flags (list (string-append "CC=" ,(cc-for-target))) #:tests? #f ; No test suite #:phases (modify-phases %standard-phases diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm index 4069bd8124..c49c311fd0 100644 --- a/gnu/packages/c.scm +++ b/gnu/packages/c.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> @@ -28,6 +28,7 @@ (define-module (gnu packages c) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -518,7 +519,8 @@ replacement for the syslog() call, but retains its ease of use.") (arguments `(#:phases (modify-phases %standard-phases (delete 'configure)) - #:make-flags (list "CC=gcc" (string-append "prefix=" %output)) + #:make-flags (list (string-append "CC=" ,(cc-for-target)) + (string-append "prefix=" %output)) #:tests? #f)) ;no test suite (native-inputs `(("perl" ,perl))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index d8115e79ce..6764bb62c3 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -849,9 +849,9 @@ time for compression ratio.") "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) "XZ_SUPPORT=1" "LZO_SUPPORT=1" "LZ4_SUPPORT=1" @@ -956,7 +956,8 @@ tarballs.") "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq")))) (build-system gnu-build-system) (arguments - `(#:make-flags (list "INSTALL=install" "CC=gcc" + `(#:make-flags (list "INSTALL=install" + (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases (delete 'configure) @@ -1426,7 +1427,10 @@ or junctions, and always follows hard links.") #t)))) #:make-flags - (list "CC=gcc" + ;; TODO: Integrate in next rebuild cycle. + (list ,(if (%current-target-system) + (string-append "CC=" (cc-for-target)) + "CC=gcc") (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib") (string-append "INCLUDEDIR=" (assoc-ref %outputs "lib") "/include") @@ -1458,8 +1462,14 @@ speed.") (version (package-version zstd)) (source (package-source zstd)) (build-system gnu-build-system) + (inputs + `(,@(if (%current-target-system) + `(("googletest" ,googletest)) + '()))) (native-inputs - `(("googletest" ,googletest))) + `(,@(if (%current-system) + `(("googletest" ,googletest)) + '()))) (arguments `(#:phases (modify-phases %standard-phases @@ -1477,7 +1487,8 @@ speed.") (install-file "README.md" doc) #t)))) #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) + (string-append "CXX=" ,(cxx-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out"))))) (home-page (package-home-page zstd)) (synopsis "Threaded implementation of the Zstandard compression algorithm") diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 48d0b51b43..f0d8cd2a40 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -194,7 +194,7 @@ combination of these streams.") (define-public xsimd (package (name "xsimd") - (version "7.2.3") + (version "7.4.9") (source (origin (method git-fetch) @@ -202,7 +202,7 @@ combination of these streams.") (url "https://github.com/QuantStack/xsimd") (commit version))) (sha256 - (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j")) + (base32 "11by8gbshm4vv6flqp0ihff8c6nmbaqq7ms93b38rrq68bigcply")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -212,11 +212,12 @@ combination of these streams.") `(("googletest" ,googletest))) (home-page "https://github.com/QuantStack/xsimd") (synopsis "C++ wrappers for SIMD intrinsics and math implementations") - (description "xsimd provides a unified means for using SIMD features for -library authors. Namely, it enables manipulation of batches of numbers with -the same arithmetic operators as for single values. It also provides -accelerated implementation of common mathematical functions operating on -batches.") + (description + "xsimd provides a unified means for using @acronym{SIMD, single instruction +multiple data} features for library authors. Namely, it enables manipulation of +batches of numbers with the same arithmetic operators as for single values. +It also provides accelerated implementation of common mathematical functions +operating on batches.") (license license:bsd-3))) (define-public chaiscript diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index b8ca0134b3..1b51366d7e 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> -;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> @@ -444,15 +444,14 @@ total number of shares generated.") (define-public tomb (package (name "tomb") - (version "2.7") + (version "2.8") (source (origin (method url-fetch) - (uri (string-append "https://files.dyne.org/tomb/" + (uri (string-append "https://files.dyne.org/tomb/releases/" "Tomb-" version ".tar.gz")) (sha256 (base32 - "0x3al02796vx1cvy6y6h685c367qx70dwv471g0hmks2gr10f0cn")) - (patches (search-patches "tomb-fix-errors-on-open.patch")))) + "0bggzzqmpfiknr76lyl8iszybrcpyqlbgiqk47fxq08h2b5ln1ic")))) (build-system gnu-build-system) (native-inputs `(("sudo" ,sudo))) ;presence needed for 'check' phase (inputs @@ -1230,7 +1229,7 @@ Trusted comments are signed, thus verified, before being displayed.") (define-public libolm (package (name "libolm") - (version "3.1.5") + (version "3.2.1") (source (origin (method git-fetch) (uri (git-reference @@ -1238,15 +1237,16 @@ Trusted comments are signed, thus verified, before being displayed.") (commit version))) (sha256 (base32 - "030g0jmmvhx2dh32k708sz6cdd5q1wz48i4gigh6dclqk10w28lm")) + "14b5cplcnbf2baq0lvz4f97m6swxpb13rvxdajxyw3s4mbvasia4")) (file-name (git-file-name name version)))) + (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - (invoke "ctest" "build/tests")))))) - (build-system cmake-build-system) + (with-directory-excursion "tests" + (invoke "ctest" "."))))))) (synopsis "Implementation of the olm and megolm cryptographic ratchets") (description "The libolm library implements the Double Ratchet cryptographic ratchet. It is written in C and C++11, and exposed as a C diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index 173f8ca0f5..cdfb9643c0 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -49,7 +49,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix download) - #:use-module (guix svn-download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) @@ -797,27 +797,32 @@ language.") (license license:gpl2+))) (define-public splix - ;; The last release was in 2009. The SVN repository contains 5 years of - ;; unreleased bug fixes and support for newer printer models. - (let ((revision 315)) + ;; Last released in 2009 <https://sourceforge.net/projects/splix/files/>. + ;; Last SVN commit was 2013 <https://svn.code.sf.net/p/splix/code/splix/>. + ;; Use a more maintained fork with several bug fixes and support for newer + ;; printer models. + (let ((commit "76268c4dd7dbc8218ea7426401104c3b40cc707a") + (revision "315")) (package (name "splix") - (version (string-append "2.0.0-" (number->string revision))) + (version (git-version "2.0.0" revision commit)) (source (origin - (method svn-fetch) - (uri (svn-reference - (url "https://svn.code.sf.net/p/splix/code/splix/") - (revision revision))) - (file-name (string-append name "-" version "-checkout")) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/ScumCoder/splix") + (commit commit))) + (file-name (git-file-name name version)) (sha256 - (base32 "16wbm4xnz35ca3mw2iggf5f4jaxpyna718ia190ka6y4ah932jxl")))) + (base32 "1mxsvllwwr1v8sgrax0b7gkajjhnm0l06s67spmaxz47lyll1qab")))) (build-system gnu-build-system) - ;; 90% (3.8 MiB) of output are .ppd files. Don't install them by default: - ;; CUPS has been able to read the .drv sources directly since version 1.2. + ;; PPDs have been obsolete since CUPS 1.2 and make up 90% of total size. (outputs (list "out" "ppd")) (arguments - '(#:make-flags + `(#:modules + ((srfi srfi-26) + ,@%gnu-build-system-modules) + #:make-flags (list (string-append "CUPSDRV=" (assoc-ref %outputs "out") "/share/cups/drv") (string-append "CUPSFILTER=" @@ -828,21 +833,28 @@ language.") "THREADS=4") ; compress and print faster #:phases (modify-phases %standard-phases + (add-after 'unpack 'enter-subdirectory + ;; The git repository replicates the top-level SVN layout. + (lambda _ + (chdir "splix") + #t)) (delete 'configure) ; no configure script (add-before 'build 'build-.drv-files (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "drv" make-flags))) (add-after 'install 'install-.drv-files (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "install" "DRV_ONLY=1" make-flags)))) + (apply invoke "make" "install" "DRV_ONLY=1" make-flags))) + (add-after 'install 'compress-PPDs + (lambda* (#:key outputs #:allow-other-keys) + (let ((ppd (assoc-ref outputs "ppd"))) + (for-each (cut invoke "gzip" "-9" <>) + (find-files ppd "\\.ppd$")))))) #:tests? #f)) ; no test suite (inputs `(("cups" ,cups-minimal) - ("zlib" ,zlib) - - ;; This dependency can be dropped by setting DISABLE_JBIG=1, but the - ;; result will not support some printers like the Samsung CLP-600. - ("jbigkit" ,jbigkit))) + ("jbigkit" ,jbigkit) + ("zlib" ,zlib))) (synopsis "QPDL (SPL2) printer driver") (description "SpliX is a set of CUPS drivers for printers that speak @acronym{QPDL, diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index a6c81792bb..a83169263e 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -1308,12 +1308,12 @@ organized in a hash table or B+ tree.") (native-inputs `(("bc" ,bc) ("bash:include" ,bash "include") ("check" ,check-0.14) - ("libuuid" ,util-linux) ("pkg-config" ,pkg-config))) ;; TODO: Add more optional inputs. (inputs `(("curl" ,curl) - ("libgcrypt" ,libgcrypt))) + ("libgcrypt" ,libgcrypt) + ("libuuid" ,util-linux "lib"))) (synopsis "Manipulate plain text files as databases") (description "GNU Recutils is a set of tools and libraries for creating and @@ -2421,17 +2421,16 @@ on another machine, accessed via TCP/IP.") (define-public python-peewee (package (name "python-peewee") - (version "3.13.3") + (version "3.14.0") (source (origin (method url-fetch) (uri (pypi-uri "peewee" version)) (sha256 - (base32 - "0sc376v6rxga4b7ic9kxw2pmf28rmcx016320pa2nlb5d1rsjs8j")))) + (base32 "1yl49gxrg0c2x3n3r60z3lixw9am8b61s0477l9vjabhhx1yziar")))) (build-system python-build-system) (arguments - `(#:tests? #f)) ; Fails to import test data + `(#:tests? #f)) ; fails to import test data (inputs `(("sqlite" ,sqlite))) (native-inputs @@ -3458,7 +3457,7 @@ transforms idiomatic python function calls to well-formed SQL queries.") (define-public python-pypika (package (name "python-pypika") - (version "0.37.2") + (version "0.44.0") (source (origin (method git-fetch) (uri (git-reference @@ -3467,7 +3466,7 @@ transforms idiomatic python function calls to well-formed SQL queries.") (file-name (git-file-name name version)) (sha256 (base32 - "089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck")))) + "0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard")))) (build-system python-build-system) (native-inputs `(("python-parameterized" ,python-parameterized))) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 1e31ad884e..9167ccb41a 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -521,7 +521,7 @@ a card with a smaller capacity than stated.") (define-public python-parted (package (name "python-parted") - (version "3.11.6") + (version "3.11.7") (source (origin (method git-fetch) @@ -530,7 +530,7 @@ a card with a smaller capacity than stated.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1xgrqhvn44vr3676j5sy2x3xfv2dzf7vncg25cmrsmkbd49x3z5j")))) + (base32 "01193fmkss9icjvqpw85szpk8ld1pnha7p9kqm7mpwk6rc6gi2m3")))) (build-system python-build-system) (arguments `(#:phases diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm index f5ea9bd332..6b428528b1 100644 --- a/gnu/packages/djvu.scm +++ b/gnu/packages/djvu.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,9 +27,15 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (gnu packages autotools) + #:use-module (gnu packages check) + #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages linux) + #:use-module (gnu packages pdf) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages qt) #:use-module (gnu packages xorg)) @@ -112,3 +119,44 @@ files, and printing page and documents. The viewer can simultaneously display several pages using a side-by-side or a continuous layout.") (license license:gpl2+))) + +(define-public pdf2djvu + (package + (name "pdf2djvu") + (version "0.9.17.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/jwilk/pdf2djvu/releases/download/" version + "/pdf2djvu-" version ".tar.xz")) + (sha256 + (base32 "18r648kna6ccw0m0nfxxnsmz541k69d0w9zzqvm1x2l5qyyvgfsv")))) + (build-system gnu-build-system) + (native-inputs + `(("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config) + ("python2" ,python-2) + ("python2-nose" ,python2-nose))) + (inputs + `(("djvulibre" ,djvulibre) + ("exiv2" ,exiv2) + ("graphicsmagick" ,graphicsmagick) + ("poppler" ,poppler) + ("poppler-data" ,poppler-data) + ("util-linux-lib" ,util-linux "lib"))) ; for libuuid + (arguments + `(#:test-target "test")) + (synopsis "PDF to DjVu converter") + (description + "@code{pdf2djvu} creates DjVu files from PDF files. +It is able to extract: +@itemize +@item graphics, +@item text layer, +@item hyperlinks, +@item document outline (bookmarks), +@item metadata (including XMP metadata). +@end itemize\n") + (home-page "https://jwilk.net/software/pdf2djvu") + (license license:gpl2))) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 34da660c34..cdd58ffa42 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -275,7 +275,7 @@ easy.") (define-public snap (package (name "snap") - (version "6.3.1") + (version "6.3.3") (source (origin (method git-fetch) @@ -284,7 +284,7 @@ easy.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1109xrvq1vszs74jhzdzhc1isij1hx6brb0w45m0i6sl0xxdrdhb")))) + (base32 "0zlyk241s6sh5zaqrvfpg4lx7jdifajsdf6c9qhh77vxxh5gwzrc")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 637cdf0f0c..95898b9cad 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -1871,12 +1871,12 @@ than @code{electric-indent-mode}.") (license license:gpl2+))) (define-public emacs-gcmh - ;; No tagged release upstream. - (let ((commit "84c43a4c0b41a595ac6e299fa317d2831813e580") - (revision "0")) + ;; No tagged release upstream, but the commit below correspond to the 0.2.1 + ;; release. + (let ((commit "0089f9c3a6d4e9a310d0791cf6fa8f35642ecfd9")) (package (name "emacs-gcmh") - (version (git-version "0.1" revision commit)) + (version "0.2.1") (source (origin (method git-fetch) @@ -1884,7 +1884,7 @@ than @code{electric-indent-mode}.") (url "https://gitlab.com/koral/gcmh") (commit commit))) (sha256 - (base32 "1r3wiqhrzh7wvqy484nl031fd4bn4cpvkv9646s4cjgvnnnv7jz3")) + (base32 "0yh1ap8phv3x44rp0yr6z884xqw2apanbx4c0acqglvj0gaaqx25")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (home-page "https://gitlab.com/koral/gcmh") @@ -2604,14 +2604,14 @@ filters, new key bindings and faces. It can be enabled by (define-public emacs-djvu (package (name "emacs-djvu") - (version "1.1") + (version "1.1.1") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "djvu-" version ".el")) (sha256 - (base32 "0njgyx09q225hliacsnjk8wallg5i6xkz6bj501pb05nwqfbvfk7")))) + (base32 "0z2qk1v4qkvcwl27ycqfb8vyszq5v6b8ci29b4la00yaki16p04i")))) (build-system emacs-build-system) (inputs `(("djview" ,djview) ("djvulibre" ,djvulibre))) @@ -8904,7 +8904,7 @@ ack, ag, helm and pt.") (define-public emacs-helm (package (name "emacs-helm") - (version "3.6.5") + (version "3.7.0") (source (origin (method git-fetch) @@ -8913,7 +8913,7 @@ ack, ag, helm and pt.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0yzpb84346v42ig4h0rsnvzmln58ilhc0gsq0ggc7038ypqkdw4d")))) + (base32 "0lxq13bsbh7xawgsq08kjm7s28x9yl8mid3538flv5kcc1rv2b9y")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-async" ,emacs-async) @@ -11371,6 +11371,35 @@ constructs.") configuration of Chinese fonts.") (license license:gpl2+))) +(define-public emacs-boon + (package + (name "emacs-boon") + (version "1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/boon") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ss9bjs34q41pa0g0nbdzd8fwpjcbd2239rdlx5aykfv9v0b8j77")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-expand-region" ,emacs-expand-region) + ("emacs-multiple-cursors" ,emacs-multiple-cursors) + ("emacs-powerline" ,emacs-powerline) + ("emacs-spaceline" ,emacs-spaceline))) + (home-page "https://github.com/jyp/boon") + (synopsis "Ergonomic command mode for Emacs") + (description "Boon is a complete package for modal editing with a focus on +ergonomics and modularity. Spacial allocation of keys comes first, mnemonics +second. Most common operations are mapped to the home row, common editing +commands are bound to keys reachable with the left hand and movement keys are +reached with the right hand.") + (license license:gpl3+))) + (define-public emacs-csharp-mode (package (name "emacs-csharp-mode") @@ -11494,14 +11523,14 @@ and cangjie.") (define-public emacs-posframe (package (name "emacs-posframe") - (version "0.8.2") + (version "0.8.3") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "posframe-" version ".el")) (sha256 - (base32 "1yrk2bnlx5bpkjkzqialf0q4bdp9c5pipnvj3zsb5hbjni24x0yb")))) + (base32 "05m56aw2yxik0pgcvyr5c92j2mwfksxgq1syzvik6161gy8hdd0g")))) (build-system emacs-build-system) ;; emacs-minimal does not include the function font-info. (arguments @@ -19428,10 +19457,10 @@ Emacs.") (license license:gpl3+))) (define-public emacs-matrix-client - (let ((commit "a0623667b07a4bf60980c97b078e9faed97ace79")) + (let ((commit "59c792423fd0503f1375f356bec56130e65d3b51")) (package (name "emacs-matrix-client") - (version (git-version "0.0.0" "4" commit)) + (version (git-version "0.0.0" "5" commit)) (source (origin (method git-fetch) (uri (git-reference @@ -19440,7 +19469,7 @@ Emacs.") (file-name (git-file-name name version)) (sha256 (base32 - "1zya8id3y9wzjaj7nplq7br6nhm3lsskv0fkn1xr1y77fzcfgcdb")))) + "1gmpw14q9zkvviqpnmvh5vbyxk42038yilxm6b2zqw7mwxfc1xra")))) (build-system emacs-build-system) (arguments `(#:phases @@ -23538,6 +23567,29 @@ internal windowing system. This combines particularly well with tiling window managers such as XMonad.") (license license:gpl3+))) +(define-public emacs-modalka + (package + (name "emacs-modalka") + (version "0.1.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mrkkrp/modalka") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ggj8q92sb6wp3hs1vhpmy56id0p3i9zwnw24g2v7xa7w8ac9s7l")))) + (build-system emacs-build-system) + (home-page "https://github.com/mrkkrp/modalka") + (synopsis "Minor mode to easily define native custom modal editing") + (description + "This is a building kit to help switch to modal editing in Emacs. The +main goal of the package is to make modal editing in Emacs as natural and +native as possible. Modalka lets you define your own keys and does not come +with a preconfigured set of keys.") + (license license:gpl3+))) + (define-public emacs-shrink-path (package (name "emacs-shrink-path") diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 3a64c75109..89d4aaf97e 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -1024,8 +1024,8 @@ the Raspberry Pi chip.") (home-page "https://github.com/puppeh/vc4-toolchain/")))) (define-public gcc-vc4 - (let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2") - (xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4))) + (let ((commit "0fe4b83897341742f9df65797474cb0feab4b377") + (xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4))) (package (inherit xgcc) (name "gcc-vc4") (source (origin @@ -1039,7 +1039,10 @@ the Raspberry Pi chip.") "-checkout")) (sha256 (base32 - "13h30qjcwnlz6lfma1d82nnvfmjnhh7abkagip4vly6vm5fpnvf2")))) + "0kvaq4s0assvinmmicwqp07d0wwldcw0fv6f4k13whp3q5909jnr")) + (patches + (search-patches "gcc-6-fix-buffer-size.patch" + "gcc-6-fix-isl-includes.patch")))) (native-inputs `(("flex" ,flex) ,@(package-native-inputs xgcc))) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 7b87bde50c..7ef40f544f 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -108,7 +108,7 @@ (define-public bitcoin-core (package (name "bitcoin-core") - (version "0.19.1") + (version "0.20.1") (source (origin (method url-fetch) (uri @@ -116,11 +116,13 @@ version "/bitcoin-" version ".tar.gz")) (sha256 (base32 - "1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj")) - (patches (search-patches "bitcoin-core-python-compat.patch")))) + "0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config) + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) ("python" ,python) ; for the tests ("util-linux" ,util-linux) ; provides the hexdump command for tests ("qttools" ,qttools))) @@ -130,7 +132,6 @@ ("libevent" ,libevent) ("miniupnpc" ,miniupnpc) ("openssl" ,openssl) - ("protobuf" ,protobuf) ("qtbase" ,qtbase))) (arguments `(#:configure-flags @@ -154,6 +155,13 @@ ;; Make Qt deterministic. (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") #t)) + (add-before 'build 'set-no-git-flag + (lambda _ + ;; Make it clear we are not building from within a git repository + ;; (and thus no information regarding this build is available + ;; from git). + (setenv "BITCOIN_GENBUILD_NO_GIT" "1") + #t)) (add-before 'check 'set-home (lambda _ (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 96ed2f9da4..534a5ea881 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -444,7 +444,7 @@ support.") (define-public tiled (package (name "tiled") - (version "1.2.5") + (version "1.4.2") (source (origin (method git-fetch) (uri (git-reference @@ -453,10 +453,11 @@ support.") (file-name (git-file-name name version)) (sha256 (base32 - "14v2zfka2y3h0r0biw1rl59585lji5074x958s4xnb352jm5h9b9")))) + "0nhmv5rnmlnnmkiz95l3iy62f3754d98dm1wyh1m47xb3nbnl05b")))) (build-system gnu-build-system) (inputs `(("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) ("qtsvg" ,qtsvg) ("zlib" ,zlib))) (native-inputs @@ -1842,7 +1843,7 @@ that parenthetically inclined game developers need to make 2D (and eventually (define-public bennu-game-development (package (name "bennu-game-development") - (version "348") + (version "353") (source (origin (method svn-fetch) (uri (svn-reference @@ -1851,7 +1852,7 @@ that parenthetically inclined game developers need to make 2D (and eventually (file-name (string-append name "-" version)) (sha256 (base32 - "0wpzsbh4zi3931493dnyl5ffmh1b7fj2sx3mzrq304z9zs4d6lqq")) + "1iri58ryk9lbqn585cbccnvrfkj8qxlbcsk8rpih40jhvs1j101l")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 97b0cb976d..12cc64fefa 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1605,7 +1605,14 @@ such as chess or stockfish.") (native-inputs `(("python-2" ,python-2) ("pkg-config" ,pkg-config))) (arguments - `(#:phases + `(#:configure-flags + ;; SSE instructions are available on Intel systems only. + (list ,@(if (any (cute string-prefix? <> (or (%current-target-system) + (%current-system))) + '("x86_64" "i686")) + '("--enable-simd=sse2") ; prevent avx instructions + '())) + #:phases (modify-phases %standard-phases (add-after 'install 'install-desktop-file (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 901222476a..43523e516d 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -181,6 +181,7 @@ shared NFS home directories.") (package (name "glib") (version "2.62.6") + (replacement glib-with-gio-patch) (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" @@ -387,11 +388,20 @@ dynamic loading, and an object system.") (home-page "https://developer.gnome.org/glib/") (license license:lgpl2.1+))) +(define glib-with-gio-patch + ;; GLib with a fix for <https://bugs.gnu.org/35594>. + ;; TODO: Fold into 'glib' above in the next rebuild cycle. + (package + (inherit glib) + (source (origin + (inherit (package-source glib)) + (patches (cons (search-patch "glib-appinfo-watch.patch") + (origin-patches (package-source glib)))))))) + (define-public glib-with-documentation ;; glib's doc must be built in a separate package since it requires gtk-doc, ;; which in turn depends on glib. - (package - (inherit glib) + (package/inherit glib (properties (alist-delete 'hidden? (package-properties glib))) (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference (native-inputs diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 6f75b0419d..e22384a625 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -9552,19 +9552,21 @@ functionality and behavior.") (define-public arc-theme (package (name "arc-theme") - (version "20190917") + (version "20201013") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/NicoHood/arc-theme") + (url "https://github.com/jnsh/arc-theme") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "1qgpk4p2hi5hd4yy0hj93kq1vs0b32wb8qkaj1wi90c8gwddq5wa")))) + "1x2l1mwjx68dwf3jb1i90c1q8nqsl1wf2zggcn8im6590k5yv39s")))) (build-system gnu-build-system) (arguments - '(#:phases + '(#:configure-flags + (list "--disable-cinnamon") + #:phases (modify-phases %standard-phases ;; autogen.sh calls configure at the end of the script. (replace 'bootstrap @@ -10889,7 +10891,7 @@ advanced image management tool") (define-public libhandy (package (name "libhandy") - (version "1.0.0") + (version "1.0.2") (source (origin (method git-fetch) @@ -10898,7 +10900,7 @@ advanced image management tool") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "193y09yy0302x8fkyrnq591m805xp68bkd93fl5qggxi52k8pj0v")))) + (base32 "1bmmkahshvlvpsnb7zp8bddv7i1h5k4p967n6kxh71g1vnj8x20m")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -10927,7 +10929,7 @@ advanced image management tool") ;; Test suite dependencies. ("xorg-server" ,xorg-server-for-tests) ("hicolor-icon-theme" ,hicolor-icon-theme))) - (home-page "https://source.puri.sm/Librem5/libhandy") + (home-page "https://gitlab.gnome.org/GNOME/libhandy/") (synopsis "Library full of GTK+ widgets for mobile phones") (description "The aim of the handy library is to help with developing user interfaces for mobile devices using GTK+. It provides responsive GTK+ widgets @@ -11913,7 +11915,7 @@ integrated profiler via Sysprof, debugging support, and more.") (define-public komikku (package (name "komikku") - (version "0.21.1") + (version "0.22.1") (source (origin (method git-fetch) @@ -11923,7 +11925,7 @@ integrated profiler via Sysprof, debugging support, and more.") (file-name (git-file-name name version)) (sha256 (base32 - "17ss5k2hnymk6xyx1dy3q0y2pwcld78cw7d0cs9c0hnhskh5dirh")))) + "0ds4j542zprbyh36qyii1c9mb7kj14cvrfk5miqjvp8y4b5i6mdi")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm index 321a7f87d7..d6f0cd6f86 100644 --- a/gnu/packages/gnu-pw-mgr.scm +++ b/gnu/packages/gnu-pw-mgr.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,15 +31,14 @@ (define-public gnu-pw-mgr (package (name "gnu-pw-mgr") - (version "2.7") + (version "2.7.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-" version ".tar.xz")) (sha256 - (base32 - "1ra8in91qx6n8jydb8kwl2rnqaa2hix5pyawn6nvyqs815h9gx17")))) + (base32 "0fhwvsmsqpw0vnivarfg63l8pgwqfv7d5wi6l80jpb41dj6qpjz8")))) (build-system gnu-build-system) (arguments '(#:phases @@ -50,7 +50,7 @@ #t)) (add-before 'check 'pre-check (lambda _ - ;; In build environment, There is no /dev/tty + ;; In the build environment, there is no /dev/tty. (substitute* "tests/base.test" (("/dev/tty") "/dev/null")) #t))))) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 06548de29d..7093643722 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -401,13 +401,13 @@ libskba (working with X.509 certificates and CMS data).") (define-public gpgme (package (name "gpgme") - (version "1.14.0") + (version "1.15.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2")) (sha256 - (base32 "01s3rlspykbm9vmi5rfbdm3d20ip6yni69r48idqzlmhlq8ggwff")))) + (base32 "0nqfipv5s4npfidsm1rs3kpq0r0av9bfqfd5r035jibx5k0jniqb")))) (build-system gnu-build-system) (native-inputs `(("gnupg" ,gnupg))) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index fff68f73f8..e657dbd110 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -550,8 +550,8 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %icecat-version "78.4.1-guix0-preview1") -(define %icecat-build-id "20201110000000") ;must be of the form YYYYMMDDhhmmss +(define %icecat-version "78.5.0-guix0-preview1") +(define %icecat-build-id "20201117000000") ;must be of the form YYYYMMDDhhmmss ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' @@ -573,11 +573,11 @@ from forcing GEXP-PROMISE." "firefox-" upstream-firefox-version ".source.tar.xz")) (sha256 (base32 - "0q57b0s6xhps4dzp2cih4ajdj6hdas0j6jx0sidzj72vjzfywy0r")))) + "1442yjmwz69hkfcvh8kkb60jf4c9ms0pac04nc3xw2da13v4zxai")))) - (upstream-icecat-base-version "78.4.1") ; maybe older than base-version + (upstream-icecat-base-version "78.5.0") ; maybe older than base-version ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version)) - (gnuzilla-commit "df2c2e22a0c6ea5b4dcaed52884223bfa6ffacde") + (gnuzilla-commit "bcfe407570cae32d00dd33a268de0e0593166f7b") (gnuzilla-source (origin (method git-fetch) @@ -589,7 +589,7 @@ from forcing GEXP-PROMISE." (string-take gnuzilla-commit 8))) (sha256 (base32 - "1y1p2g9xvqsg0im58lhdkrp8z0zlxw6i3qqplqdpbidmjwibmqjz")))) + "1pg8fjjg91qyrv7za585ds1xrdvmybbkf2jmkff107fh5y23lxrg")))) ;; 'search-patch' returns either a valid file name or #f, so wrap it ;; in 'assume-valid-file-name' to avoid 'local-file' warnings. @@ -1161,11 +1161,11 @@ standards of the IceCat project.") (cpe-version . ,(first (string-split version #\-))))))) ;; Update this together with icecat! -(define %icedove-build-id "20201021000000") ;must be of the form YYYYMMDDhhmmss +(define %icedove-build-id "20201111000000") ;must be of the form YYYYMMDDhhmmss (define-public icedove (package (name "icedove") - (version "78.4.0") + (version "78.4.3") (source icecat-source) (properties `((cpe-name . "thunderbird_esr"))) @@ -1445,7 +1445,7 @@ standards of the IceCat project.") ;; in the Thunderbird release tarball. We don't use the release ;; tarball because it duplicates the Icecat sources and only adds the ;; "comm" directory, which is provided by this repository. - ,(let ((changeset "d5c3faff83924f56859ea4584eb0610c68a0cafa")) + ,(let ((changeset "6ee1d79f9e77c90f0f165b9315b5b437a220b665")) (origin (method hg-fetch) (uri (hg-reference @@ -1454,7 +1454,7 @@ standards of the IceCat project.") (file-name (string-append "thunderbird-" version "-checkout")) (sha256 (base32 - "146vp5048j5drzyvmsj9v34ifqcywr1gikwh4f1z4l9zad7b09rs"))))) + "0m6isazpirmviv14kjav8jn3w3gm3mls0qwyf1n87hj00bj6z6jc"))))) ("autoconf" ,autoconf-2.13) ("cargo" ,rust-1.41 "cargo") ("clang" ,clang) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 3603a7ea77..dbf89e3894 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -431,14 +431,14 @@ with the @command{autotrace} utility or as a C library, @code{libautotrace}.") (define-public blender (package (name "blender") - (version "2.83.5") + (version "2.83.9") (source (origin (method url-fetch) (uri (string-append "https://download.blender.org/source/" "blender-" version ".tar.xz")) (sha256 (base32 - "0xyawly00a59hfdb6b7va84k5fhcv2mxnzd77vs22bzi9y7sap43")))) + "106w9vi6z0gi2nbr73g8pm40w3wn7dkjcibzvvzbc786yrnzvkhb")))) (build-system cmake-build-system) (arguments (let ((python-version (version-major+minor (package-version python)))) diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index 0e61cf10ff..669951f741 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -451,14 +451,14 @@ roots, or wrestle with obscure build systems.") (define-public quickjs (package (name "quickjs") - (version "2020-09-06") + (version "2020-11-08") (source (origin (method url-fetch) (uri (string-append "https://bellard.org/quickjs/quickjs-" version ".tar.xz")) (sha256 (base32 - "05vpnnzmws7plnwsnk2brwf7whyj84l5xl0iahi1xdn6rpla6880")))) + "0yqqcjxi3cqagw184mqrxpvqg486x7c233r3cp9mxachngd6779f")))) (build-system gnu-build-system) (arguments `(#:make-flags diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index 989e7b9b46..5d6da69fae 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -64,13 +64,16 @@ (build-system gnu-build-system) (inputs `(("readline" ,readline))) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-1)) #:test-target "test" #:make-flags - '("MYCFLAGS=-fPIC -DLUA_DL_DLOPEN" - "linux") + (list "MYCFLAGS=-fPIC -DLUA_DL_DLOPEN" + (string-append "CC=" ,(cc-for-target)) + (string-append "SYSLIBS=-L" (assoc-ref %build-inputs "readline") + "/lib") + "linux") #:phases (modify-phases %standard-phases (delete 'configure) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 956ccc981e..1e2dd4035b 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -38,6 +38,7 @@ ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de> ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -63,6 +64,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bison) + #:use-module (gnu packages boost) #:use-module (gnu packages calendar) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -107,6 +109,7 @@ #:use-module (gnu packages man) #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) + #:use-module (gnu packages ninja) #:use-module (gnu packages openldap) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages pcre) @@ -114,6 +117,7 @@ #:use-module (gnu packages perl-check) #:use-module (gnu packages perl-web) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-check) #:use-module (gnu packages python-crypto) @@ -593,12 +597,15 @@ It adds a large amount of new and improved features to mutt.") (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) - ("gnupg" ,gnupg))) ; for tests only + ("gnupg" ,gnupg) ; for tests only + ("gobject-introspection" ,gobject-introspection))) (inputs `(("glib" ,glib) ("gpgme" ,gpgme) ("zlib" ,zlib))) (arguments - `(#:phases + `(#:configure-flags + (list "--enable-introspection=yes") + #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-paths-in-tests @@ -700,6 +707,118 @@ mailpack. What can alterMIME do? (license (list (license:non-copyleft "file://LICENSE") license:bsd-3)))) +(define-public astroid + (package + (name "astroid") + (version "0.15") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/astroidmail/astroid") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11cxbva9ni98gii59xmbxh4c6idcg3mg0pgdsp1c3j0yg7ix0lj3")) + (modules '((guix build utils))) + (snippet + '(begin + ;; https://github.com/astroidmail/astroid/pull/685 + (substitute* "tests/test_composed_message.cc" + (("\\\\n\\.\\.\\.") "\\n...\\n")) + #t)))) + (build-system cmake-build-system) + (arguments + `(#:modules ((guix build cmake-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils) + (ice-9 match)) + #:imported-modules ((guix build glib-or-gtk-build-system) + ,@%cmake-build-system-modules) + #:configure-flags (list "-GNinja") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-markdown-test + ;; This test relies on the plugins and the test suite + ;; cannot find the Astroid module. + ;; gi.require_version ('Astroid', '0.2') + ;; ValueError: Namespace Astroid not available + (lambda _ + (substitute* "tests/CMakeLists.txt" + ((".*markdown.*") "")) + #t)) + (replace 'build + (lambda _ + (invoke "ninja" "-j" (number->string (parallel-job-count))))) + (add-before 'check 'start-xserver + (lambda* (#:key inputs #:allow-other-keys) + (let ((xorg-server (assoc-ref inputs "xorg-server"))) + (setenv "HOME" (getcwd)) + (system (format #f "~a/bin/Xvfb :1 &" xorg-server)) + (setenv "DISPLAY" ":1") + #t))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "CTEST_OUTPUT_ON_FAILURE" "1") + (invoke "ctest" ".")) + #t)) + (replace 'install + (lambda _ + (invoke "ninja" "install"))) + (add-after 'install 'wrap-with-GI_TYPELIB_PATH + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (paths (map (match-lambda + ((outputs . directory) + (let ((girepodir (string-append + directory + "/lib/girepository-1.0"))) + (if (file-exists? girepodir) + girepodir + #f)))) + inputs))) + (wrap-program (string-append out "/bin/astroid") + `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths)))) + #t)) + (add-after 'install 'glib-or-gtk-compile-schemas + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)) + (add-after 'install 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) + (native-inputs + `(("glib-networking" ,glib-networking) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gnupg" ,gnupg) + ("ninja" ,ninja) + ("pkg-config" ,pkg-config) + ("ronn" ,ronn) + ("w3m" ,w3m) + ("xorg-server" ,xorg-server))) + (inputs + `(("boost" ,boost) + ("gmime" ,gmime) + ("gobject-introspection" ,gobject-introspection) ; it is referenced + ("gtkmm" ,gtkmm) + ("libpeas" ,libpeas) + ("libsass" ,libsass) + ("notmuch" ,notmuch) + ("protobuf" ,protobuf) + ("python" ,python-wrapper) + ("python-pygobject" ,python-pygobject) + ("webkitgtk" ,webkitgtk))) + (propagated-inputs + `(("adwaita-icon-theme" ,adwaita-icon-theme))) ; Required for the thread view + (home-page "https://astroidmail.github.io/") + (synopsis "GTK frontend to the notmuch mail system") + (description + "Astroid is a lightweight and fast Mail User Agent that provides a +graphical interface to searching, display and composing email, organized in +thread and tags. Astroid uses the notmuch backend for searches through tons of +email. Astroid searches, displays and compose emails — and relies on other +programs for fetching, syncing and sending email.") + (license (list license:gpl3+ ; 'this program' + license:lgpl2.1+)))) ; code from geary, gmime + (define-public ripmime ;; Upstream does not tag or otherwise provide any releases (only a version ;; number in the source) @@ -2482,17 +2601,68 @@ existing mail server. With Postfix, the proxies can operate as either converts them to maildir format directories.") (license license:public-domain))) +(define-public mblaze + (package + (name "mblaze") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/leahneukirchen/mblaze") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0p97zfl35ilrnrx9ynj82igsb698m9klikfaicw5jhjpf6qp2n3y")))) + (build-system gnu-build-system) + (native-inputs + `(("perl" ,perl))) + (arguments + `(#:tests? #f ; XXX: Upstream tests appear to be broken + #:make-flags (list (string-append "CC=" ,(cc-for-target)) + "PREFIX=" + (string-append "DESTDIR=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (home-page "https://github.com/leahneukirchen/mblaze") + (synopsis "Unix utilities to deal with Maildir") + (description + "The mblaze message system is a set of Unix utilities for processing and +interacting with mail messages which are stored in maildir folders. + +Its design is roughly inspired by MH, the RAND Message Handling System, but it +is a complete implementation from scratch. + +mblaze is a classic command line MUA and has no features for receiving or +transferring messages; you can operate on messages in a local maildir spool, +or fetch your messages using fdm(1), getmail(1), offlineimap(1), or similar +utilities, and send it using dma(8), msmtp(1), sendmail(8), as provided by +OpenSMTPD, Postfix, or similar. + +mblaze operates directly on maildir folders and doesn't use its own caches or +databases. There is no setup needed for many uses. All utilities have been +written with performance in mind. Enumeration of all messages in a maildir is +avoided unless necessary, and then optimized to limit syscalls. Parsing +message metadata is optimized to limit I/O requests. Initial operations on a +large maildir may feel slow, but as soon as they are in the file system cache, +everything is blazingly fast. The utilities are written to be memory +efficient (i.e. not wasteful), but whole messages are assumed to fit into RAM +easily (one at a time).") + (license (list license:public-domain + license:expat)))) ; mystrverscmp.c and mymemmem + (define-public mpop (package (name "mpop") - (version "1.4.10") + (version "1.4.11") (source (origin (method url-fetch) (uri (string-append "https://marlam.de/mpop/releases/" "mpop-" version ".tar.xz")) (sha256 - (base32 "1243hazpiwgvz2m3p48cdh0yw1019i6xjxgc7qyhmxcdy0inb6wy")))) + (base32 "1gcxvhin5y0q47svqbf90r5aip0cgywm8sq6m84ygda7km8xylwv")))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls))) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index b2f7f02f05..d3f3539e26 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -41,6 +41,7 @@ ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -306,13 +307,13 @@ programming language.") (define-public units (package (name "units") - (version "2.19") + (version "2.21") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/units/units-" version ".tar.gz")) (sha256 (base32 - "0mk562g7dnidjgfgvkxxpvlba66fh1ykmfd9ylzvcln1vxmi6qj2")))) + "1bybhqs4yrly9myb5maz3kdmf8k4fhk2m1d5cbcryn40z6lq0gkc")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) @@ -4716,7 +4717,7 @@ as equations, scalars, vectors, and matrices.") (define-public z3 (package (name "z3") - (version "4.8.8") + (version "4.8.9") (home-page "https://github.com/Z3Prover/z3") (source (origin (method git-fetch) @@ -4725,7 +4726,7 @@ as equations, scalars, vectors, and matrices.") (file-name (git-file-name name version)) (sha256 (base32 - "1rn538ghqwxq0v8i6578j8mflk6fyv0cp4hjfqynzvinjbps56da")))) + "1hnbzq10d23drd7ksm3c1n2611c3kd0q0yxgz8y78zaafwczvwxx")))) (build-system gnu-build-system) (arguments `(#:imported-modules ((guix build python-build-system) diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm index 96a4d8be47..919e7f1449 100644 --- a/gnu/packages/monitoring.scm +++ b/gnu/packages/monitoring.scm @@ -158,7 +158,7 @@ etc. via a Web interface. Features include: (define-public zabbix-agentd (package (name "zabbix-agentd") - (version "5.2.0") + (version "5.2.1") (source (origin (method url-fetch) @@ -166,7 +166,7 @@ etc. via a Web interface. Features include: "https://cdn.zabbix.com/zabbix/sources/stable/" (version-major+minor version) "/zabbix-" version ".tar.gz")) (sha256 - (base32 "168yi9igwkb4jcdw38kvp85n8mxnlg2n7lkrgaycp8b0dlgjnidl")))) + (base32 "0rz5hg0r2m6qc0dj9b57g96dgilbg8i0rjhm4v9025v51jkby3xq")))) (build-system gnu-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 51404a52af..8f76ab9d91 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -141,6 +141,34 @@ #:use-module (gnu packages xml) #:use-module (ice-9 match)) +(define-public axel + (package + (name "axel") + (version "2.17.9") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/axel-download-accelerator/axel/" + "releases/download/v" version "/" + "axel-" version ".tar.xz")) + (sha256 + (base32 "0m1smb9rmw9w2fcfcf0162qyffx6a1x0j612sg3fydflandlsdpi")))) + (build-system gnu-build-system) + (native-inputs + `(("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) + (inputs + `(("libressl" ,libressl))) + (home-page "https://github.com/axel-download-accelerator/axel") + (synopsis "Light command line download accelerator") + (description + "Axel tries to accelerate the download process by using multiple +connections per file, and can also balance the load between different +servers. It tries to be as light as possible, so it might be useful +on byte-critical systems. It supports HTTP, HTTPS, FTP and FTPS +protocols.") + (license license:gpl2+))) + ;; This package does not have a release yet. ;; But this is required to provide a feature in PipeWire. (define-public libcamera @@ -2142,14 +2170,14 @@ HTTP proxies.") (define-public enet (package (name "enet") - (version "1.3.16") + (version "1.3.17") (source (origin (method url-fetch) (uri (string-append "http://enet.bespin.org/download/" "enet-" version ".tar.gz")) (sha256 - (base32 "1lggc82rbzscci057dqqyhkbq4j6mr5k01hbrvn06jkzc2xpxdxv")))) + (base32 "1p6f9mby86af6cs7pv6h48032ip9g32c05cb7d9mimam8lchz3x3")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index f0b989b88a..f04e39bbd5 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -207,14 +207,14 @@ devices.") (define-public node-10.22 (package (inherit node) - (version "10.22.0") + (version "10.22.1") (source (origin (inherit (package-source node)) (uri (string-append "https://nodejs.org/dist/v" version "/node-v" version ".tar.xz")) (sha256 (base32 - "1nz18fa550li10r0kzsm28c2rvvq61nq8bqdygip0rmvbi2paxg0")))) + "0pr569qiabr4m7k38s7rwi3iyzrc5jmx19z2z0k7n4xfvhjlfzzl")))) (inputs (alist-replace "nghttp2" (list nghttp2-1.41 "lib") (package-inputs node))))) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 2121263ab5..a407a37cfe 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -5802,7 +5802,9 @@ convenience functions for vectors and matrices.") "0wzysis9fa850s68qh8vrvqc6svgllhwra3kzll2ibv0wmdqrich")))) (build-system dune-build-system) (arguments - `(#:test-target "tests")) + `(;; FIXME: (got signal SEGV) #44725 + #:tests? #f + #:test-target "tests")) (inputs `(("cairo" ,cairo) ("gtk+-2" ,gtk+-2) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 4a7a15c378..84864ded5c 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -130,9 +130,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 "1.1.0") - (commit "5e7cf66fb35780f930ad0bc5fe21ac330df4411d") - (revision 32)) + (let ((version "1.2.0rc1") + (commit "3ba6ffd0dd092ae879d014e4971989f231eaa56d") + (revision 1)) (package (name "guix") @@ -148,7 +148,7 @@ (commit commit))) (sha256 (base32 - "15clfjp845gvl0p6qw0b1gdibqfq20zwzr6dbxvq8l9fgzj1kb6b")) + "1wa67gdipmzqr400hp0cw5ih0rlfvj345h65rqbk9s4g3bkg38hm")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -336,7 +336,13 @@ $(prefix)/etc/init.d\n"))) (let ((bash (assoc-ref inputs "bash"))) (substitute* (string-append out "/bin/guix") (("^#!.*/bash") (string-append "#! " bash "/bin/bash"))))) - #t)))))) + #t))) + + ;; The 'guix' executable has 'OUT/libexec/guix/guile' as + ;; its shebang; that should remain unchanged, thus remove + ;; the 'patch-shebangs' phase, which would otherwise + ;; change it to 'GUILE/bin/guile'. + (delete 'patch-shebangs)))) (native-inputs `(("pkg-config" ,pkg-config) ;; Guile libraries are needed here for diff --git a/gnu/packages/patches/bitcoin-core-python-compat.patch b/gnu/packages/patches/bitcoin-core-python-compat.patch deleted file mode 100644 index 6bf744124d..0000000000 --- a/gnu/packages/patches/bitcoin-core-python-compat.patch +++ /dev/null @@ -1,28 +0,0 @@ -Get rid of deprecation warning emitted by Python 3.8, which causes a test failure(!). - -https://github.com/bitcoin/bitcoin/pull/17931 - -Taken from upstream: - -https://github.com/bitcoin/bitcoin/commit/f117fb00da747147cddfb071c1427a2754c278cd - -diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py -index 20864881c165..07eacf410d88 100755 ---- a/test/functional/p2p_invalid_messages.py -+++ b/test/functional/p2p_invalid_messages.py -@@ -145,13 +145,13 @@ def run_test(self): - def test_magic_bytes(self): - conn = self.nodes[0].add_p2p_connection(P2PDataStore()) - -- def swap_magic_bytes(): -+ async def swap_magic_bytes(): - conn._on_data = lambda: None # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes - conn.magic_bytes = b'\x00\x11\x22\x32' - - # Call .result() to block until the atomic swap is complete, otherwise - # we might run into races later on -- asyncio.run_coroutine_threadsafe(asyncio.coroutine(swap_magic_bytes)(), NetworkThread.network_event_loop).result() -+ asyncio.run_coroutine_threadsafe(swap_magic_bytes(), NetworkThread.network_event_loop).result() - - with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']): - conn.send_message(messages.msg_ping(nonce=0xff)) diff --git a/gnu/packages/patches/gcc-6-fix-buffer-size.patch b/gnu/packages/patches/gcc-6-fix-buffer-size.patch new file mode 100644 index 0000000000..5fcd769d45 --- /dev/null +++ b/gnu/packages/patches/gcc-6-fix-buffer-size.patch @@ -0,0 +1,15 @@ +Fixes a possible buffer overflow. (There are others) +Author: Danny Milosavljevic <dannym@scratchpost.org> +Date: 2020-11-16 + +--- a/gcc/gimplify.c.orig 2020-10-29 08:45:11.532479774 +0100 ++++ b/gcc/gimplify.c 2020-10-29 08:45:49.584637018 +0100 +@@ -5229,7 +5229,7 @@ + flexibility, split it into separate input and output + operands. */ + tree input; +- char buf[10]; ++ char buf[12]; + + /* Turn the in/out constraint into an output constraint. */ + char *p = xstrdup (constraint); diff --git a/gnu/packages/patches/gcc-6-fix-isl-includes.patch b/gnu/packages/patches/gcc-6-fix-isl-includes.patch new file mode 100644 index 0000000000..ab3c5634ea --- /dev/null +++ b/gnu/packages/patches/gcc-6-fix-isl-includes.patch @@ -0,0 +1,16 @@ +See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86724 +Author: Rainer Jung +Date: 2018-07-29 + +isl 0.20 stopped including other unused header files in their header files. +Therefore,now it's necessary to include the stuff ourselves. +--- .../gcc/graphite.h 2018-01-03 11:03:58.000000000 +0000 ++++ .../gcc/graphite.h 2018-07-29 17:42:55.836121000 +0000 +@@ -37,6 +37,8 @@ + #include <isl/schedule.h> + #include <isl/ast_build.h> + #include <isl/schedule_node.h> ++#include <isl/id.h> ++#include <isl/space.h> + + typedef struct poly_dr *poly_dr_p; diff --git a/gnu/packages/patches/glib-appinfo-watch.patch b/gnu/packages/patches/glib-appinfo-watch.patch new file mode 100644 index 0000000000..638a5e0949 --- /dev/null +++ b/gnu/packages/patches/glib-appinfo-watch.patch @@ -0,0 +1,92 @@ +This patch lets GLib's GDesktopAppInfo API watch and notice changes +to the Guix user and system profiles. That way, the list of available +applications shown by the desktop environment is immediately updated +when the user runs "guix install", "guix remove", or "guix system +reconfigure" (see <https://issues.guix.gnu.org/35594>). + +It does so by monitoring /var/guix/profiles (for changes to the system +profile) and /var/guix/profiles/per-user/USER (for changes to the user +profile) and crawling their share/applications sub-directory when +changes happen. + +diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c +index f1e2fdd..095c110 100644 +--- a/gio/gdesktopappinfo.c ++++ b/gio/gdesktopappinfo.c +@@ -148,6 +148,7 @@ typedef struct + gchar *alternatively_watching; + gboolean is_config; + gboolean is_setup; ++ gchar *guix_profile_watch_dir; + GFileMonitor *monitor; + GHashTable *app_names; + GHashTable *mime_tweaks; +@@ -180,6 +181,7 @@ desktop_file_dir_unref (DesktopFileDir *dir) + { + desktop_file_dir_reset (dir); + g_free (dir->path); ++ g_free (dir->guix_profile_watch_dir); + g_free (dir); + } + } +@@ -204,6 +206,13 @@ desktop_file_dir_get_alternative_dir (DesktopFileDir *dir) + { + gchar *parent; + ++ /* If DIR is a profile, watch the specified directory--e.g., ++ * /var/guix/profiles/per-user/$USER/ for the user profile. Do not watch ++ * ~/.guix-profile or /run/current-system/profile because GFileMonitor does ++ * not pass IN_DONT_FOLLOW and thus cannot notice any change. */ ++ if (dir->guix_profile_watch_dir != NULL) ++ return g_strdup (dir->guix_profile_watch_dir); ++ + /* If the directory itself exists then we need no alternative. */ + if (g_access (dir->path, R_OK | X_OK) == 0) + return NULL; +@@ -249,11 +258,11 @@ desktop_file_dir_changed (GFileMonitor *monitor, + * + * If this is a notification for a parent directory (because the + * desktop directory didn't exist) then we shouldn't fire the signal +- * unless something actually changed. ++ * unless something actually changed or it's in /var/guix/profiles. + */ + g_mutex_lock (&desktop_file_dir_lock); + +- if (dir->alternatively_watching) ++ if (dir->alternatively_watching && dir->guix_profile_watch_dir == NULL) + { + gchar *alternative_dir; + +@@ -1555,6 +1564,32 @@ desktop_file_dirs_lock (void) + for (i = 0; dirs[i]; i++) + g_ptr_array_add (desktop_file_dirs, desktop_file_dir_new (dirs[i])); + ++ { ++ /* Monitor the system and user profile under /var/guix/profiles and ++ * treat modifications to them as if they were modifications to their ++ * /share sub-directory. */ ++ const gchar *user; ++ DesktopFileDir *system_profile_dir, *user_profile_dir; ++ ++ system_profile_dir = ++ desktop_file_dir_new ("/var/guix/profiles/system/profile/share"); ++ system_profile_dir->guix_profile_watch_dir = g_strdup ("/var/guix/profiles"); ++ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (system_profile_dir)); ++ ++ user = g_get_user_name (); ++ if (user != NULL) ++ { ++ gchar *profile_dir, *user_data_dir; ++ ++ profile_dir = g_build_filename ("/var/guix/profiles/per-user", user, NULL); ++ user_data_dir = g_build_filename (profile_dir, "guix-profile", "share", NULL); ++ user_profile_dir = desktop_file_dir_new (user_data_dir); ++ user_profile_dir->guix_profile_watch_dir = profile_dir; ++ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (user_profile_dir)); ++ g_free (user_data_dir); ++ } ++ } ++ + /* The list of directories will never change after this, unless + * g_get_user_config_dir() changes due to %G_TEST_OPTION_ISOLATE_DIRS. */ + desktop_file_dirs_config_dir = user_config_dir; diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch index f82df9f68e..9a6e40df4b 100644 --- a/gnu/packages/patches/icecat-makeicecat.patch +++ b/gnu/packages/patches/icecat-makeicecat.patch @@ -25,7 +25,7 @@ index 8be2362..48716f2 100755 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc -gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc --echo -n 1978eedd975b1cf95bd4a04b2381560d1ad9a4223032717f23fac26e3458a760 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +-echo -n 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - - -echo Extracting Firefox tarball -tar -xf firefox-${FFVERSION}esr.source.tar.xz @@ -37,7 +37,7 @@ index 8be2362..48716f2 100755 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc +# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc -+# echo -n 1978eedd975b1cf95bd4a04b2381560d1ad9a4223032717f23fac26e3458a760 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - ++# echo -n 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +# +# echo Extracting Firefox tarball +# tar -xf firefox-${FFVERSION}esr.source.tar.xz diff --git a/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch b/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch deleted file mode 100644 index 39008cba5c..0000000000 --- a/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch +++ /dev/null @@ -1,642 +0,0 @@ -Fix build with Poppler 0.86. - -The original series of patches authored by Craig Bradney <mrb@scribus.info> -and Jean Ghali <jghali@libertysurf.fr>, taken from -https://gitweb.gentoo.org/repo/gentoo.git/tree/app-office/scribus/files - -diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp ---- a/scribus/plugins/import/pdf/importpdf.cpp -+++ b/scribus/plugins/import/pdf/importpdf.cpp -@@ -75,7 +75,11 @@ PdfPlug::PdfPlug(ScribusDoc* doc, int flags) - QImage PdfPlug::readThumbnail(const QString& fName) - { - QString pdfFile = QDir::toNativeSeparators(fName); -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) -+ globalParams.reset(new GlobalParams()); -+#else - globalParams = new GlobalParams(); -+#endif - if (globalParams) - { - #if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0) -@@ -90,7 +94,9 @@ QImage PdfPlug::readThumbnail(const QString& fName) - if (pdfDoc->getErrorCode() == errEncrypted) - { - delete pdfDoc; -+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) - delete globalParams; -+#endif - return QImage(); - } - if (pdfDoc->isOk()) -@@ -134,11 +140,15 @@ QImage PdfPlug::readThumbnail(const QString& fName) - image.setText("YSize", QString("%1").arg(h)); - delete dev; - delete pdfDoc; -+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) - delete globalParams; -+#endif - return image; - } - delete pdfDoc; -+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) - delete globalParams; -+#endif - } - } - return QImage(); -@@ -387,7 +397,11 @@ bool PdfPlug::convert(const QString& fn) - qApp->processEvents(); - } - -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) -+ globalParams.reset(new GlobalParams()); -+#else - globalParams = new GlobalParams(); -+#endif - GooString *userPW = nullptr; - if (globalParams) - { -@@ -429,7 +443,9 @@ bool PdfPlug::convert(const QString& fn) - if (progressDialog) - progressDialog->close(); - delete pdfDoc; -+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) - delete globalParams; -+#endif - return false; - } - if (progressDialog) -@@ -474,7 +490,9 @@ bool PdfPlug::convert(const QString& fn) - progressDialog->close(); - delete optImp; - delete pdfDoc; -+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) - delete globalParams; -+#endif - return false; - } - pageString = optImp->getPagesString(); -@@ -838,11 +856,20 @@ bool PdfPlug::convert(const QString& fn) - names = catDict.dictLookup("OpenAction"); - if (names.isDict()) - { -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ std::unique_ptr<LinkAction> linkAction; -+ linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI()); -+#else - LinkAction *linkAction = nullptr; - linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI()); -+#endif - if (linkAction) - { -- LinkJavaScript *jsa = (LinkJavaScript*)linkAction; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) linkAction.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) linkAction; -+#endif - if (jsa->isOk()) - { - QString script = UnicodeParsedString(jsa->getScript()); -@@ -908,8 +935,12 @@ bool PdfPlug::convert(const QString& fn) - } - delete pdfDoc; - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) -+ globalParams.release(); -+#else - delete globalParams; - globalParams = nullptr; -+#endif - - // qDebug() << "converting finished"; - // qDebug() << "Imported" << Elements.count() << "Elements"; -@@ -1046,3 +1077,43 @@ QString PdfPlug::UnicodeParsedString(POPPLER_CONST GooString *s1) - } - return result; - } -+ -+QString PdfPlug::UnicodeParsedString(const std::string& s1) -+{ -+ if (s1.length() == 0) -+ return QString(); -+ GBool isUnicode; -+ int i; -+ Unicode u; -+ QString result; -+ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff)) -+ { -+ isUnicode = gTrue; -+ i = 2; -+ result.reserve((s1.length() - 2) / 2); -+ } -+ else -+ { -+ isUnicode = gFalse; -+ i = 0; -+ result.reserve(s1.length()); -+ } -+ while (i < s1.length()) -+ { -+ if (isUnicode) -+ { -+ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff); -+ i += 2; -+ } -+ else -+ { -+ u = s1.at(i) & 0xff; -+ ++i; -+ } -+ // #15616: imagemagick may write unicode strings incorrectly in PDF -+ if (u == 0) -+ continue; -+ result += QChar( u ); -+ } -+ return result; -+} -diff --git a/scribus/plugins/import/pdf/importpdf.h b/scribus/plugins/import/pdf/importpdf.h ---- a/scribus/plugins/import/pdf/importpdf.h -+++ b/scribus/plugins/import/pdf/importpdf.h -@@ -82,6 +82,7 @@ private: - bool convert(const QString& fn); - QRectF getCBox(int box, int pgNum); - QString UnicodeParsedString(POPPLER_CONST GooString *s1); -+ QString UnicodeParsedString(const std::string& s1); - - QList<PageItem*> Elements; - double baseX, baseY; -diff --git a/scribus/plugins/import/pdf/importpdfconfig.h b/scribus/plugins/import/pdf/importpdfconfig.h ---- a/scribus/plugins/import/pdf/importpdfconfig.h -+++ b/scribus/plugins/import/pdf/importpdfconfig.h -@@ -52,4 +52,16 @@ for which a new license (GPL+exception) is in place. - #define POPPLER_REF - #endif - -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 82, 0) -+#define POPPLER_CONST_082 const -+#else -+#define POPPLER_CONST_082 -+#endif -+ -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) -+#define POPPLER_CONST_083 const -+#else -+#define POPPLER_CONST_083 -+#endif -+ - #endif -diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp ---- a/scribus/plugins/import/pdf/slaoutput.cpp -+++ b/scribus/plugins/import/pdf/slaoutput.cpp -@@ -308,9 +308,15 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano) - } - - /* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */ -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) -+{ -+ std::unique_ptr<LinkAction> linkAction; -+#else - LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) - { - LinkAction *linkAction = nullptr; -+#endif - Object obj; - Ref refa = ano->getRef(); - -@@ -455,7 +461,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do - POPPLER_CONST GooString *ndst = gto->getNamedDest(); - if (ndst) - { -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -+#else - LinkDest *dstn = pdfDoc->findDest(ndst); -+#endif - if (dstn) - { - if (dstn->getKind() == destXYZ) -@@ -499,7 +509,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do - POPPLER_CONST GooString *ndst = gto->getNamedDest(); - if (ndst) - { -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -+#else - LinkDest *dstn = pdfDoc->findDest(ndst); -+#endif - if (dstn) - { - if (dstn->getKind() == destXYZ) -@@ -967,7 +981,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) - POPPLER_CONST GooString *ndst = gto->getNamedDest(); - if (ndst) - { -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -+#else - LinkDest *dstn = pdfDoc->findDest(ndst); -+#endif - if (dstn) - { - if (dstn->getKind() == destXYZ) -@@ -1019,7 +1037,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) - POPPLER_CONST GooString *ndst = gto->getNamedDest(); - if (ndst) - { -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); -+#else - LinkDest *dstn = pdfDoc->findDest(ndst); -+#endif - if (dstn) - { - if (dstn->getKind() == destXYZ) -@@ -1088,96 +1110,148 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) - else - qDebug() << "Found unsupported Action of type" << Lact->getKind(); - } -- LinkAction *Aact = SC_getAdditionalAction("D", ano); -+ auto Aact = SC_getAdditionalAction("D", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setD_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("E", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setE_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("X", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setX_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("Fo", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setFo_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("Bl", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setBl_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("C", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setC_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("F", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setF_act(UnicodeParsedString(jsa->getScript())); -@@ -1185,14 +1259,22 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) - ite->annotation().setFormat(5); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("K", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setK_act(UnicodeParsedString(jsa->getScript())); -@@ -1200,21 +1282,33 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) - ite->annotation().setFormat(5); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - Aact = SC_getAdditionalAction("V", ano); - if (Aact) - { - if (Aact->getKind() == actionJavaScript) - { -- LinkJavaScript *jsa = (LinkJavaScript*)Aact; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); -+#else -+ LinkJavaScript *jsa = (LinkJavaScript*) Aact; -+#endif - if (jsa->isOk()) - { - ite->annotation().setV_act(UnicodeParsedString(jsa->getScript())); - ite->annotation().setAAact(true); - } - } -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ Aact.reset(); -+#else - Aact = nullptr; -+#endif - } - } - -@@ -1224,6 +1318,11 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA) - catalog = catA; - pdfDoc = doc; - updateGUICounter = 0; -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 84, 0) -+ m_fontEngine = new SplashFontEngine(true, true, true, true); -+#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 61, 0) -+ m_fontEngine = new SplashFontEngine(globalParams->getEnableFreeType(), true, true, true); -+#else - m_fontEngine = new SplashFontEngine( - #if HAVE_T1LIB_H - globalParams->getEnableT1lib(), -@@ -1234,6 +1333,7 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA) - true, - #endif - true); -+#endif - } - - void SlaOutputDev::startPage(int pageNum, GfxState *, XRef *) -@@ -2784,7 +2884,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, i - delete[] mbuffer; - } - --void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) -+void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int* maskColors, GBool inlineImg) - { - ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits()); - // qDebug() << "Image Components" << colorMap->getNumPixelComps() << "Mask" << maskColors; -@@ -3365,7 +3465,7 @@ err1: - fontsrc->unref(); - } - --void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, Unicode *u, int uLen) -+void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, POPPLER_CONST_082 Unicode *u, int uLen) - { - double x1, y1, x2, y2; - int render; -@@ -3452,7 +3552,7 @@ void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, doub - } - } - --GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen) -+GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen) - { - // qDebug() << "beginType3Char"; - GfxFont *gfxFont; -@@ -3705,7 +3805,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotColor *color) - return fNam; - } - --QString SlaOutputDev::convertPath(GfxPath *path) -+QString SlaOutputDev::convertPath(POPPLER_CONST_083 GfxPath *path) - { - if (! path) - return QString(); -@@ -3715,7 +3815,7 @@ QString SlaOutputDev::convertPath(GfxPath *path) - - for (int i = 0; i < path->getNumSubpaths(); ++i) - { -- GfxSubpath * subpath = path->getSubpath(i); -+ POPPLER_CONST_083 GfxSubpath * subpath = path->getSubpath(i); - if (subpath->getNumPoints() > 0) - { - output += QString("M %1 %2").arg(subpath->getX(0)).arg(subpath->getY(0)); -@@ -3922,6 +4022,46 @@ QString SlaOutputDev::UnicodeParsedString(POPPLER_CONST GooString *s1) - return result; - } - -+QString SlaOutputDev::UnicodeParsedString(const std::string& s1) -+{ -+ if (s1.length() == 0) -+ return QString(); -+ GBool isUnicode; -+ int i; -+ Unicode u; -+ QString result; -+ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff)) -+ { -+ isUnicode = gTrue; -+ i = 2; -+ result.reserve((s1.length() - 2) / 2); -+ } -+ else -+ { -+ isUnicode = gFalse; -+ i = 0; -+ result.reserve(s1.length()); -+ } -+ while (i < s1.length()) -+ { -+ if (isUnicode) -+ { -+ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff); -+ i += 2; -+ } -+ else -+ { -+ u = s1.at(i) & 0xff; -+ ++i; -+ } -+ // #15616: imagemagick may write unicode strings incorrectly in PDF -+ if (u == 0) -+ continue; -+ result += QChar( u ); -+ } -+ return result; -+} -+ - bool SlaOutputDev::checkClip() - { - bool ret = false; -diff --git a/scribus/plugins/import/pdf/slaoutput.h b/scribus/plugins/import/pdf/slaoutput.h ---- a/scribus/plugins/import/pdf/slaoutput.h -+++ b/scribus/plugins/import/pdf/slaoutput.h -@@ -20,6 +20,8 @@ for which a new license (GPL+exception) is in place. - #include <QTextStream> - #include <QTransform> - -+#include <memory> -+ - #include "fpointarray.h" - #include "importpdfconfig.h" - #include "pageitem.h" -@@ -159,7 +161,11 @@ public: - virtual ~SlaOutputDev(); - - LinkAction* SC_getAction(AnnotWidget *ano); -+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) -+ std::unique_ptr<LinkAction> SC_getAdditionalAction(const char *key, AnnotWidget *ano); -+#else - LinkAction* SC_getAdditionalAction(const char *key, AnnotWidget *ano); -+#endif - static GBool annotations_callback(Annot *annota, void *user_data); - bool handleTextAnnot(Annot* annota, double xCoor, double yCoor, double width, double height); - bool handleLinkAnnot(Annot* annota, double xCoor, double yCoor, double width, double height); -@@ -229,7 +235,7 @@ public: - - //----- image drawing - void drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool interpolate, GBool inlineImg) override; -- void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) override; -+ void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int *maskColors, GBool inlineImg) override; - void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, - int width, int height, - GfxImageColorMap *colorMap, -@@ -261,8 +267,8 @@ public: - //----- text drawing - void beginTextObject(GfxState *state) override; - void endTextObject(GfxState *state) override; -- void drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, Unicode * /*u*/, int /*uLen*/) override; -- GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, Unicode * /*u*/, int /*uLen*/) override; -+ void drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override; -+ GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override; - void endType3Char(GfxState * /*state*/) override; - void type3D0(GfxState * /*state*/, double /*wx*/, double /*wy*/) override; - void type3D1(GfxState * /*state*/, double /*wx*/, double /*wy*/, double /*llx*/, double /*lly*/, double /*urx*/, double /*ury*/) override; -@@ -282,11 +288,12 @@ private: - void getPenState(GfxState *state); - QString getColor(GfxColorSpace *color_space, POPPLER_CONST_070 GfxColor *color, int *shade); - QString getAnnotationColor(const AnnotColor *color); -- QString convertPath(GfxPath *path); -+ QString convertPath(POPPLER_CONST_083 GfxPath *path); - int getBlendMode(GfxState *state); - void applyMask(PageItem *ite); - void pushGroup(const QString& maskName = "", GBool forSoftMask = gFalse, GBool alpha = gFalse, bool inverted = false); - QString UnicodeParsedString(POPPLER_CONST GooString *s1); -+ QString UnicodeParsedString(const std::string& s1); - bool checkClip(); - bool pathIsClosed; - QString CurrColorFill; diff --git a/gnu/packages/patches/tomb-fix-errors-on-open.patch b/gnu/packages/patches/tomb-fix-errors-on-open.patch deleted file mode 100644 index 5f41c9ee8f..0000000000 --- a/gnu/packages/patches/tomb-fix-errors-on-open.patch +++ /dev/null @@ -1,25 +0,0 @@ -Description: Avoid error messages when opening a new tomb - Make sure control file exists and has user ownership before user writes to it. -Author: Sven Geuer <debmaint@g-e-u-e-r.de> -Bug: https://github.com/dyne/Tomb/issues/369 -Last-Update: 2019-11-04 ---- a/tomb -+++ b/tomb -@@ -2197,14 +2197,15 @@ - # {{{ Open - - _update_control_file() { -- # replaces a control file with new contents and gives it user ownership -+ # make sure a control file exists, gives it user ownership -+ # and replaces it with new contents - # stdin = contents - # $1 = path to control file - # $2 = contents - [[ "$2" = "" ]] && return 1 - _sudo touch "$1" -- print "$2" > "$1" - _sudo chown ${_UID}:${_GID} "$1" -+ print "$2" > "$1" - _verbose "updated control file $1 = $2" - } - diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 2a4be26f8c..a1984e0695 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -1261,7 +1261,7 @@ multiple files.") (define-public pdfpc (package (name "pdfpc") - (version "4.4.0") + (version "4.4.1") (source (origin (method git-fetch) @@ -1270,7 +1270,7 @@ multiple files.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0vh2r32akvasdrghkaq7ard24r2qncp34jfiyshi3zxabm9bhfaa")))) + (base32 "11n925c5jj3yfwnqkgxzqrmsrpqh8ls1g4idmqqzpsanpam1xvna")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no test target (inputs diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index c430555b80..e0d474c151 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -26,7 +26,7 @@ ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> -;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org> ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> @@ -2898,21 +2898,30 @@ pretty printer and a tree visitor.") (name "python-flask-basicauth") (version "0.2.0") (source - (origin - (method url-fetch) - (uri (pypi-uri "Flask-BasicAuth" version)) - (sha256 - (base32 - "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz")))) + (origin + (method url-fetch) + (uri (pypi-uri "Flask-BasicAuth" version)) + (sha256 + (base32 + "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz")))) (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-imports + (lambda _ + (substitute* '("docs/index.rst" + "docs/conf.py" + "flask_basicauth.py" + "test_basicauth.py") + (("flask\\.ext\\.basicauth") + "flask_basicauth")) + #t))))) (propagated-inputs `(("python-flask" ,python-flask))) - (home-page - "https://github.com/jpvanhal/flask-basicauth") - (synopsis - "HTTP basic access authentication for Flask") + (home-page "https://github.com/jpvanhal/flask-basicauth") + (synopsis "HTTP basic access authentication for Flask") (description - "This package provides HTTP basic access authentication for Flask.") + "This package provides HTTP basic access authentication for Flask.") (license license:bsd-3))) (define-public python-flask-htpasswd diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 3209df5bb4..c3624784e9 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -90,6 +90,7 @@ ;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com> ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de> +;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17200,14 +17201,14 @@ such as figshare or Zenodo.") (base32 "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd")))) (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + (delete-file "setup.cfg") + (invoke "py.test")))))) (native-inputs - `(("python-appdirs" ,python-appdirs) - ("python-distlib" ,python-distlib) - ("python-importlib-metadata" ,python-importlib-metadata) - ("python-filelock" ,python-filelock) - ("python-six" ,python-six) - ("python-tox" ,python-tox) - ("python-virtualenv" ,python-virtualenv))) + `(("python-pytest" ,python-pytest))) (home-page "https://github.com/k-bx/python-semver") (synopsis "Python helper for Semantic Versioning") (description "This package provides a Python library for @@ -18246,6 +18247,109 @@ gevent-powered application.") (define-public python2-gipc (package-with-python2 python-gipc)) +(define-public python-beautifultable + (package + (name "python-beautifultable") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "beautifultable" version)) + (sha256 + (base32 + "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x")))) + (build-system python-build-system) + (propagated-inputs + `(("python-wcwidth" ,python-wcwidth))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-setup.py + (lambda _ + (substitute* "setup.py" + (("setup\\(") + "setup(\n test_suite=\"test\","))))))) + (home-page "https://github.com/pri22296/beautifultable") + (synopsis "Print ASCII tables for terminals") + (description "@code{python-beautifultable} provides a class for easily +printing tabular data in a visually appealing ASCII format to a terminal. + +Features include, but are not limited to: +@itemize +@item Full customization of the look and feel of the table +@item Row and column accessors. +@item Full support for colors using ANSI sequences or any library. +@item Plenty of predefined styles and option to create custom ones. +@item Support for Unicode characters. +@item Supports streaming table when data is slow to retrieve. +@end itemize") + (license license:expat))) + +(define-public python-globber + (package + (name "python-globber") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/asharov/globber") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk")))) + (build-system python-build-system) + (home-page "https://github.com/asharov/globber") + (synopsis "Library for string matching with glob patterns") + (description + "Globber is a Python library for matching file names against glob patterns. +In contrast to other glob-matching libraries, it matches arbitrary strings and +doesn't require the matched names to be existing files. In addition, it +supports the globstar @code{**} operator to match an arbitrary number of +path components.") + (license license:asl2.0))) + +(define-public python-git-hammer + (package + (name "python-git-hammer") + (version "0.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/asharov/git-hammer") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-setup.py + (lambda _ + (substitute* "setup.py" + (("setup\\(") + "setup(\n test_suite=\"test\","))))))) + (propagated-inputs + `(("python-beautifultable" ,python-beautifultable) + ("python-dateutil" ,python-dateutil) + ("python-gitpython" ,python-gitpython) + ("python-globber" ,python-globber) + ("python-matplotlib" ,python-matplotlib) + ("python-sqlalchemy" ,python-sqlalchemy) + ("python-sqlalchemy-utils" + ,python-sqlalchemy-utils))) + (home-page "https://github.com/asharov/git-hammer") + (synopsis "Provide statistics for git repositories") + (description + "Git Hammer is a statistics tool for projects in git repositories. +Its major feature is tracking the number of lines authored by each person for every +commit, but it also includes some other useful statistics.") + (license license:asl2.0))) + (define-public python-fusepy (package (name "python-fusepy") @@ -22533,6 +22637,41 @@ a Python library to convert RELAX NG schemata in Compact syntax (rnc) to equivalent schemata in the XML-based default RELAX NG syntax.") (license license:expat))) +(define-public python-telethon + (package + (name "python-telethon") + (version "1.17.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/LonamiWebs/Telethon") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "py.test" "-v")) + #t))))) + (propagated-inputs + `(("python-rsa" ,python-rsa) + ("python-pyaes" ,python-pyaes))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-asyncio" ,python-pytest-asyncio) + ("python-pytest-trio" ,python-pytest-trio))) + (home-page "https://docs.telethon.dev") + (synopsis "Full-featured Telegram client library for Python 3") + (description "This library is designed to make it easy to write Python +programs that can interact with Telegram.") + (license license:expat))) + (define-public python-citeproc-py (package (name "python-citeproc-py") diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index bdd7e8a4a2..0be7359985 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -577,14 +577,14 @@ using GNU Radio and the Qt GUI toolkit.") (define-public fldigi (package (name "fldigi") - (version "4.1.15") + (version "4.1.16") (source (origin (method url-fetch) (uri (string-append "http://www.w1hkj.com/files/fldigi/fldigi-" version ".tar.gz")) (sha256 - (base32 "1fzbcv2dgg6byb2l8m2d6i69yn0a44pq52mpmms756jdf6z622i6")))) + (base32 "1dfkvhs0ri5kbyskk730ik8ix5z138qys26b31p6kixd8jjkw3k4")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm index 6519ce7a7f..f699824a05 100644 --- a/gnu/packages/scribus.scm +++ b/gnu/packages/scribus.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,16 +49,14 @@ (define-public scribus (package (name "scribus") - (version "1.5.5") + (version "1.5.6.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/scribus/scribus-devel/" version "/scribus-" version ".tar.xz")) - (patches (search-patches "scribus-1.5.5-poppler-0.86-build-fix.patch")) (sha256 - (base32 - "0w9zzsiaq3f7vpxybk01c9z2b4qqg67mzpyfb2gjchz8dhdb423r")))) + (base32 "1axp8ffnx3nh6k4s5mfa9gbx8d0yql2azgcampg41ylwafapc9fl")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test target @@ -99,7 +98,7 @@ ("openssl" ,openssl) ("podofo" ,podofo) ("poppler" ,poppler) - ("python" ,python-2) ;need Python library + ("python" ,python) ; need Python library ("qtbase" ,qtbase) ("qtdeclarative" ,qtdeclarative) ("zlib" ,zlib))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 3e46a6162b..1842528ff6 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -391,6 +391,16 @@ as well as the classic centralized workflow.") (install-file "contrib/subtree/git-subtree.1" (string-append subtree "/share/man/man1")) #t))) + (add-after 'install 'restore-sample-hooks-shebang + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dir (string-append out "/share/git-core/templates/hooks"))) + (for-each (lambda (file) + (format #t "restoring shebang on `~a'~%" file) + (substitute* file + (("^#!.*/bin/sh") "#!/bin/sh"))) + (find-files dir ".*")) + #t))) (add-after 'install 'split (lambda* (#:key inputs outputs #:allow-other-keys) ;; Split the binaries to the various outputs. diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index d0e1679282..21380a9677 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2188,14 +2188,14 @@ To load this plugin, specify the following option when starting mpv: (define-public youtube-dl (package (name "youtube-dl") - (version "2020.11.12") + (version "2020.11.17") (source (origin (method url-fetch) (uri (string-append "https://youtube-dl.org/downloads/latest/" "youtube-dl-" version ".tar.gz")) (sha256 (base32 - "0c98sjaj6mvxnjp0qnwqbr6fibgb4dlizad2xvkiswf4g4h0pc5f")))) + "0b0vsmvnm2jn1k66jmymzly0nb34nk79z97msns0sw0cqhbld1b2")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion @@ -2653,7 +2653,7 @@ for use with HTML5 video.") (define-public avidemux (package (name "avidemux") - (version "2.7.4") + (version "2.7.6") (source (origin (method url-fetch) (uri (string-append @@ -2661,7 +2661,7 @@ for use with HTML5 video.") "avidemux_" version ".tar.gz")) (sha256 (base32 - "1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x")) + "1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s")) (patches (search-patches "avidemux-install-to-lib.patch")))) (build-system cmake-build-system) (native-inputs @@ -2679,6 +2679,7 @@ for use with HTML5 video.") ("glu" ,glu) ("jack" ,jack-1) ("lame" ,lame) + ("libaom" ,libaom) ("libva" ,libva) ("libvdpau" ,libvdpau) ("libvorbis" ,libvorbis) @@ -2693,7 +2694,7 @@ for use with HTML5 video.") #:phases ;; Make sure files inside the included ffmpeg tarball are ;; patch-shebanged. - (let ((ffmpeg "ffmpeg-4.1.4")) + (let ((ffmpeg "ffmpeg-4.2.3")) (modify-phases %standard-phases (add-before 'patch-source-shebangs 'unpack-ffmpeg (lambda _ @@ -3798,7 +3799,7 @@ iTunes-style metadata.") (define-public livemedia-utils (package (name "livemedia-utils") - (version "2019.05.29") + (version "2020.11.05") (source (origin (method url-fetch) (uri (string-append @@ -3806,11 +3807,12 @@ iTunes-style metadata.") version ".tar.gz")) (sha256 (base32 - "08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my")))) + "1dx5imjil5yiya5dqlvbqkvzgic5pybsfilx5jz1cpi1znkzpgc9")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no tests - #:make-flags (list "CC=gcc" + `(#:tests? #f ; no tests + #:make-flags (list (string-append "CC=" ,(cc-for-target)) + (string-append "CXX=" ,(cxx-for-target)) (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib") (string-append "PREFIX=" @@ -3825,6 +3827,8 @@ iTunes-style metadata.") (lambda _ (invoke "./genMakefiles" "linux-with-shared-libraries")))))) + (inputs + `(("openssl" ,openssl))) (home-page "http://www.live555.com/liveMedia/") (synopsis "Set of C++ libraries for multimedia streaming") (description "This code forms a set of C++ libraries for multimedia diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index ae903261cc..09ee84e3ad 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -1778,7 +1778,7 @@ DOS or Microsoft Windows.") (define-public xen (package (name "xen") - (version "4.13.0") + (version "4.14.0") (source (origin (method git-fetch) (uri (git-reference @@ -1787,7 +1787,7 @@ DOS or Microsoft Windows.") (file-name (git-file-name name version)) (sha256 (base32 - "0py50n995gv909i0d1lfdcj9wcp5g1d5z6m2291jqqlfyany138g")))) + "1s06zhzmkm7wylrxhas5v0sg2ackmmyw01gvv67r9idml55i0dh5")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1901,13 +1901,14 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc")) new-search-path ":"))) (setenv env-name new-env-value))) environment-variable-names)) - (setenv "CROSS_CPATH" (getenv "CPATH")) + (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH")) + (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH")) (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH")) (filter-environment! cross? - '("CROSS_CPATH" + '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH" "CROSS_LIBRARY_PATH")) (filter-environment! (lambda (e) (not (cross? e))) - '("CPATH" + '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH" "LIBRARY_PATH")) ;; Guix tries to be helpful and automatically adds ;; mini-os-git-checkout/include to the include path, @@ -1916,7 +1917,7 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc")) (not (string-contains e "mini-os-git-checkout"))) - '("CPATH" + '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH" "LIBRARY_PATH")) (setenv "EFI_VENDOR" "guix") #t)) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 4319b00e00..39a9825893 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -505,7 +505,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers (define-public wireguard-linux-compat (package (name "wireguard-linux-compat") - (version "1.0.20200623") + (version "1.0.20201112") (source (origin (method url-fetch) (uri (string-append "https://git.zx2c4.com/wireguard-linux-compat/" @@ -513,12 +513,13 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers ".tar.xz")) (sha256 (base32 - "0iclixsqfckaz6kz6a4lhzdary3xhfy1d0pz0pgrwy8m8mr3f28k")))) + "1qcpg1rcmy4h529a0spjm50qgxjgjy20j29fpbrqsv5xq3qfgsl9")))) (build-system linux-module-build-system) (outputs '("out" "kernel-patch")) (arguments - `(#:tests? #f ; No test suite + `(#:linux ,linux-libre-5.4 ; mustn't have WG built-in + #:tests? #f ; no test suite #:modules ((guix build linux-module-build-system) (guix build utils) (ice-9 popen) @@ -538,7 +539,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers (call-with-output-file "wireguard.patch" (lambda (port) (format port "~a" str)))) - #t)) + #t)) (add-after 'install 'install-patch (lambda* (#:key outputs #:allow-other-keys) (install-file "wireguard.patch" diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 5052074d62..40e1b94230 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1424,7 +1424,7 @@ used to validate and fix HTML data.") (define-public esbuild (package (name "esbuild") - (version "0.8.4") + (version "0.8.7") (source (origin (method git-fetch) @@ -1434,7 +1434,7 @@ used to validate and fix HTML data.") (file-name (git-file-name name version)) (sha256 (base32 - "0aaqyfnl4dncrpw8n2sqkkavx7ki7i2r9pdi82pp9syql3b5495y")) + "14x95dmh4jrfp93p7ln0cv917qxll04sqzlpf9rl6w01fifr2s75")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index a59d9ae0f3..83bdd50b7d 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -843,7 +843,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.") (define-public xlockmore (package (name "xlockmore") - (version "5.62") + (version "5.66") (source (origin (method url-fetch) (uri (list (string-append "http://sillycycle.com/xlock/" @@ -854,7 +854,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.") "xlockmore-" version ".tar.xz"))) (sha256 (base32 - "0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi")))) + "0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr")))) (build-system gnu-build-system) (arguments '(#:configure-flags (list (string-append "--enable-appdefaultdir=" diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index f7b2cd7ab4..224ce981b9 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -6076,17 +6076,17 @@ to answer a question. Xmessage can also exit after a specified time.") (define-public xterm (package (name "xterm") - (version "361") - (source (origin - (method url-fetch) - (uri (list - (string-append "http://invisible-mirror.net/archives/xterm/" - "xterm-" version ".tgz") - (string-append "ftp://ftp.invisible-island.net/xterm/" - "xterm-" version ".tgz"))) - (sha256 - (base32 - "0gv27akkfb796aww1snq3c2sxmi8vajgfxk83g60awp4slh0yqc5")))) + (version "362") + (source + (origin + (method url-fetch) + (uri (list + (string-append "https://invisible-mirror.net/archives/xterm/" + "xterm-" version ".tgz") + (string-append "ftp://ftp.invisible-island.net/xterm/" + "xterm-" version ".tgz"))) + (sha256 + (base32 "18mch57f5sypgfdbvna22ailcfpnixw0fc5wkf2j3w58dwigwkqx")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts" diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 416bc02a96..065e89d312 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -106,6 +106,12 @@ agetty-service-type mingetty-configuration + mingetty-configuration-tty + mingetty-configuration-auto-login + mingetty-configuration-login-program + mingetty-configuration-login-pause? + mingetty-configuration-clear-on-logout? + mingetty-configuration-mingetty mingetty-configuration? mingetty-service mingetty-service-type diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index 16d6f76c1a..7d2defacaa 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -482,7 +482,7 @@ programs.") (package cups) "The CUPS package.") (extensions - (package-list (list cups-filters)) + (package-list (list cups-filters escpr hplip-minimal foomatic-filters)) "Drivers and other extensions to the CUPS package.") (files-configuration (files-configuration (files-configuration)) diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index e14ceca231..1faeb350df 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -224,16 +224,21 @@ which is not provided by any service") (for-each assert-satisfied-requirements services)) +(define %store-characters + ;; Valid store characters; see 'checkStoreName' in the daemon. + (string->char-set + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-._?=")) + (define (shepherd-service-file-name service) "Return the file name where the initialization code for SERVICE is to be stored." (let ((provisions (string-join (map symbol->string (shepherd-service-provision service))))) (string-append "shepherd-" - (string-map (match-lambda - (#\/ #\-) - (#\ #\-) - (chr chr)) + (string-map (lambda (chr) + (if (char-set-contains? %store-characters chr) + chr + #\-)) provisions) ".scm"))) diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm index 658d5c3e88..70f2617c7e 100644 --- a/gnu/services/vpn.scm +++ b/gnu/services/vpn.scm @@ -273,16 +273,16 @@ servers.") "The device type used to represent the VPN connection.") (ca - (string "/etc/openvpn/ca.crt") + (maybe-string "/etc/openvpn/ca.crt") "The certificate authority to check connections against.") (cert - (string "/etc/openvpn/client.crt") + (maybe-string "/etc/openvpn/client.crt") "The certificate of the machine the daemon is running on. It should be signed by the authority given in @code{ca}.") (key - (string "/etc/openvpn/client.key") + (maybe-string "/etc/openvpn/client.key") "The key of the machine the daemon is running on. It must be the key whose certificate is @code{cert}.") diff --git a/gnu/system/image.scm b/gnu/system/image.scm index 81152f0fc4..4972d9067b 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -576,7 +576,9 @@ it can be used for bootloading." (file-systems-to-keep (srfi-1:remove (lambda (fs) - (string=? (file-system-mount-point fs) "/")) + (let ((mount-point (file-system-mount-point fs))) + (or (string=? mount-point "/") + (string=? mount-point "/boot/efi")))) (operating-system-file-systems base-os))) (format (image-format image)) (os diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 07a59a3cd2..1afae6b4ed 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -77,7 +77,6 @@ system-qemu-image/shared-store system-qemu-image/shared-store-script - system-disk-image-in-vm system-docker-image virtual-machine @@ -563,77 +562,6 @@ the operating system." ;;; VM and disk images. ;;; -(define* (system-disk-image-in-vm os - #:key - (name "disk-image") - (file-system-type "ext4") - (disk-image-size (* 900 (expt 2 20))) - (volatile? #t) - (substitutable? #t)) - "Return the derivation of a disk image of DISK-IMAGE-SIZE bytes of the -system described by OS. Said image can be copied on a USB stick as is. When -VOLATILE? is true, the root file system is made volatile; this is useful -to USB sticks meant to be read-only. - -SUBSTITUTABLE? determines whether the returned derivation should be marked as -substitutable." - (define root-label - "Guix_image") - - (define (root-uuid os) - ;; UUID of the root file system, computed in a deterministic fashion. - ;; This is what we use to locate the root file system so it has to be - ;; different from the user's own file system UUIDs. - (operating-system-uuid os 'dce)) - - (define file-systems-to-keep - (remove (lambda (fs) - (string=? (file-system-mount-point fs) "/")) - (operating-system-file-systems os))) - - (let* ((os (operating-system (inherit os) - ;; Since this is meant to be used on real hardware, don't - ;; install QEMU networking or anything like that. Assume USB - ;; mass storage devices (usb-storage.ko) are available. - (initrd (lambda (file-systems . rest) - (apply (operating-system-initrd os) - file-systems - #:volatile-root? volatile? - rest))) - - (bootloader (operating-system-bootloader os)) - - ;; Force our own root file system. (We need a "/" file system - ;; to call 'root-uuid'.) - (file-systems (cons (file-system - (mount-point "/") - (device "/dev/placeholder") - (type file-system-type)) - file-systems-to-keep)))) - (uuid (root-uuid os)) - (os (operating-system - (inherit os) - (file-systems (cons (file-system - (mount-point "/") - (device uuid) - (type file-system-type)) - file-systems-to-keep)))) - (bootcfg (operating-system-bootcfg os))) - (qemu-image #:name name - #:os os - #:bootcfg-drv bootcfg - #:bootloader (bootloader-configuration-bootloader - (operating-system-bootloader os)) - #:disk-image-size disk-image-size - #:disk-image-format "raw" - #:file-system-type file-system-type - #:file-system-label root-label - #:file-system-uuid uuid - #:copy-inputs? #t - #:inputs `(("system" ,os) - ("bootcfg" ,bootcfg)) - #:substitutable? substitutable?))) - (define* (system-qemu-image os #:key (file-system-type "ext4") diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index e9de97c881..cc020632af 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -51,7 +51,9 @@ #:use-module ((guix progress) #:select (current-terminal-columns)) #:use-module ((guix build syscalls) #:select (terminal-columns)) #:use-module (guix transformations) - #:export (%standard-build-options + #:export (log-url + + %standard-build-options set-build-options-from-command-line set-build-options-from-command-line* show-build-options-help diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 06509ace2d..0b29997200 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -59,11 +59,16 @@ #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:export (compressor? + compressor-name + compressor-extenstion + compressor-command + %compressors lookup-compressor self-contained-tarball docker-image squashfs-image + %formats guix-pack)) ;; Type of a compression tool. diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index a976a9ac60..f1a9970a7f 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2020 by Amar M. Singh <nly@disroot.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -250,6 +251,21 @@ usage." ("WantMassQuery" . 0) ("Priority" . 100))) +;;; A common buffer size value used for the TCP socket SO_SNDBUF option and +;;; the gzip compressor buffer size. +(define %default-buffer-size + (* 208 1024)) + +(define %default-socket-options + ;; List of options passed to 'setsockopt' when transmitting files. + (list (list SO_SNDBUF %default-buffer-size))) + +(define* (configure-socket socket #:key (level SOL_SOCKET) + (options %default-socket-options)) + "Apply multiple option tuples in OPTIONS to SOCKET, using LEVEL." + (for-each (cut apply setsockopt socket level <>) + options)) + (define (signed-string s) "Sign the hash of the string S with the daemon's key. Return a canonical sexp for the signature." @@ -569,7 +585,7 @@ requested using POOL." (lambda (port) (write-file item port)) #:level (compression-level compression) - #:buffer-size (* 128 1024)) + #:buffer-size %default-buffer-size) (rename-file (string-append nar ".tmp") nar)) ('lzip ;; Note: the file port gets closed along with the lzip port. @@ -866,7 +882,7 @@ or if EOF is reached." ;; 'make-gzip-output-port' wants a file port. (make-gzip-output-port (response-port response) #:level level - #:buffer-size (* 64 1024))) + #:buffer-size %default-buffer-size)) (($ <compression> 'lzip level) (make-lzip-output-port (response-port response) #:level level)) @@ -891,8 +907,7 @@ blocking." client)) (port (begin (force-output client) - (setsockopt client SOL_SOCKET - SO_SNDBUF (* 128 1024)) + (configure-socket client) (nar-response-port response compression)))) ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in ;; 'render-nar', BODY here is just the file name of the store item. @@ -922,7 +937,7 @@ blocking." size) client)) (output (response-port response))) - (setsockopt client SOL_SOCKET SO_SNDBUF (* 128 1024)) + (configure-socket client) (if (file-port? output) (sendfile output input size) (dump-port input output)) @@ -1067,7 +1082,8 @@ methods, return the applicable compression." (define (open-server-socket address) "Return a TCP socket bound to ADDRESS, a socket address." (let ((sock (socket (sockaddr:fam address) SOCK_STREAM 0))) - (setsockopt sock SOL_SOCKET SO_REUSEADDR 1) + (configure-socket sock #:options (cons (list SO_REUSEADDR 1) + %default-socket-options)) (bind sock address) sock)) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index bb1b560a22..7fd8b3f1a4 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -385,7 +385,7 @@ previous generation. Return true if there are news to display." (and=> (relative-generation profile -1) (cut generation-file-name profile <>))) - (when previous + (and previous (let ((old-channels (profile-channels previous)) (new-channels (profile-channels profile))) ;; Find the channels present in both PROFILE and PREVIOUS, and print diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 4a71df28d1..fb6c52a567 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -440,7 +440,7 @@ releases for ~a~%") (full-name x))) (lst (format (current-output-port) - (N_ "Building the following ~*package would ensure ~d \ + (N_ "Building the following ~d package would ensure ~d \ dependent packages are rebuilt: ~{~a~^ ~}~%" "Building the following ~d packages would ensure ~d \ dependent packages are rebuilt: ~{~a~^ ~}~%" diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index ad998156c2..db80e0be8f 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -674,7 +674,8 @@ checking this by themselves in their 'check' procedure." (define* (system-derivation-for-action os action #:key image-size image-type full-boot? container-shared-network? - mappings label) + mappings label + volatile-root?) "Return as a monadic value the derivation for OS according to ACTION." (mlet %store-monad ((target (current-target-system))) (case action @@ -706,7 +707,8 @@ checking this by themselves in their 'check' procedure." base-image)) (target (or base-target target)) (size image-size) - (operating-system os)))))) + (operating-system os) + (volatile-root? volatile-root?)))))) ((docker-image) (system-docker-image os #:shared-network? container-shared-network?))))) @@ -761,6 +763,7 @@ and TARGET arguments." dry-run? derivations-only? use-substitutes? bootloader-target target image-size image-type + volatile-root? full-boot? label container-shared-network? (mappings '()) (gc-root #f)) @@ -768,7 +771,8 @@ and TARGET arguments." bootloader; BOOTLOADER-TAGET is the target for the bootloader; TARGET is the target root directory; IMAGE-SIZE is the size of the image to be built, for the 'vm-image' and 'disk-image' actions. IMAGE-TYPE is the type of image to -be built. +be built. When VOLATILE-ROOT? is #t, the root file system is mounted +volatile. FULL-BOOT? is used for the 'vm' action; it determines whether to boot directly to the kernel or to the bootloader. CONTAINER-SHARED-NETWORK? @@ -816,6 +820,7 @@ static checks." #:label label #:image-type image-type #:image-size image-size + #:volatile-root? volatile-root? #:full-boot? full-boot? #:container-shared-network? container-shared-network? #:mappings mappings)) @@ -975,6 +980,8 @@ Some ACTIONS support additional ARGS.\n")) (display (G_ " --no-bootloader for 'init', do not install a bootloader")) (display (G_ " + --volatile for 'disk-image', make the root file system volatile")) + (display (G_ " --label=LABEL for 'disk-image', label disk image with LABEL")) (display (G_ " --save-provenance save provenance information")) @@ -1048,6 +1055,9 @@ Some ACTIONS support additional ARGS.\n")) (option '("no-bootloader" "no-grub") #f #f (lambda (opt name arg result) (alist-cons 'install-bootloader? #f result))) + (option '("volatile") #f #f + (lambda (opt name arg result) + (alist-cons 'volatile-root? #t result))) (option '("label") #t #f (lambda (opt name arg result) (alist-cons 'label arg result))) @@ -1109,7 +1119,8 @@ Some ACTIONS support additional ARGS.\n")) (image-type . raw) (image-size . guess) (install-bootloader? . #t) - (label . #f))) + (label . #f) + (volatile-root? . #f))) (define (verbosity-level opts) "Return the verbosity level based on OPTS, the alist of parsed options." @@ -1206,6 +1217,8 @@ resulting from command-line parsing." #:image-type (lookup-image-type-by-name (assoc-ref opts 'image-type)) #:image-size (assoc-ref opts 'image-size) + #:volatile-root? + (assoc-ref opts 'volatile-root?) #:full-boot? (assoc-ref opts 'full-boot?) #:container-shared-network? (assoc-ref opts 'container-shared-network?) diff --git a/guix/self.scm b/guix/self.scm index bbfd2f1b95..026dcd9c1a 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -400,6 +400,12 @@ a list of extra files, such as '(\"contributing\")." (find-files directory "\\.[a-z]{2}(_[A-Z]{2})?\\.po$"))) + (define parallel-jobs + ;; Limit thread creation by 'n-par-for-each'. Going beyond can + ;; lead libgc 8.0.4 to abort with: + ;; mmap(PROT_NONE) failed + (min (parallel-job-count) 4)) + (mkdir #$output) (copy-recursively #$documentation "." #:log (%make-void-port "w")) @@ -415,14 +421,14 @@ a list of extra files, such as '(\"contributing\")." (setenv "LC_ALL" "en_US.UTF-8") (setlocale LC_ALL "en_US.UTF-8") - (n-par-for-each (parallel-job-count) + (n-par-for-each parallel-jobs (match-lambda ((language . po) (translate-texi "guix" po language #:extras '("contributing")))) (available-translations "." "guix-manual")) - (n-par-for-each (parallel-job-count) + (n-par-for-each parallel-jobs (match-lambda ((language . po) (translate-texi "guix-cookbook" po language))) diff --git a/guix/utils.scm b/guix/utils.scm index b816c355dc..a591b62f30 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -78,6 +78,7 @@ target-arm? target-64bit? cc-for-target + cxx-for-target version-compare version>? @@ -542,6 +543,11 @@ a character other than '@'." (string-append target "-gcc") "gcc")) +(define* (cxx-for-target #:optional (target (%current-target-system))) + (if target + (string-append target "-g++") + "g++")) + (define version-compare (let ((strverscmp (let ((sym (or (dynamic-func "strverscmp" (dynamic-link)) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 5a164b77e3..5afb13ffdb 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -91,4 +91,24 @@ guix/profiles.scm guix/git.scm guix/deprecation.scm guix/derivations.scm +guix/scripts/archive.scm +guix/scripts/build.scm +guix/scripts/environment.scm +guix/scripts/time-machine.scm +guix/scripts/import/cpan.scm +guix/scripts/import/crate.scm +guix/scripts/import/gem.scm +guix/scripts/import/gnu.scm +guix/scripts/import/hackage.scm +guix/scripts/import/json.scm +guix/scripts/import/nix.scm +guix/scripts/import/opam.scm +guix/scripts/import/pypi.scm +guix/scripts/import/stackage.scm +guix/scripts/import/texlive.scm +guix/scripts/offload.scm +guix/scripts/perform-download.scm +guix/scripts/refresh.scm +guix/scripts/repl.scm +guix/scripts/system/reconfigure.scm nix/nix-daemon/guix-daemon.cc diff --git a/tests/build-utils.scm b/tests/build-utils.scm index 47a57a984b..654b480ed9 100644 --- a/tests/build-utils.scm +++ b/tests/build-utils.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2015, 2016, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2015, 2016, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. @@ -174,7 +174,7 @@ echo hello world")) (let ((script-file-name (string-append directory "/foo"))) (call-with-output-file script-file-name (lambda (port) - (format port script-contents))) + (display script-contents port))) (chmod script-file-name #o777) (wrap-script script-file-name `("GUIX_FOO" prefix ("/some/path" |