. "<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
(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))
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 \
TODO \
CODE-OF-CONDUCT \
.dir-locals.el \
+ .guix-authorizations \
.guix-channel \
scripts/guix.in \
etc/guix-install.sh \
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:
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"
$(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) \
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 \
*** ‘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,
(<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
(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))
"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
#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 ...))
"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)))
+
\f
(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))))
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.
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
@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}.
@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}.
@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}.
@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}.
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
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
; -*- 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.
;;;
;; 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)
(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))
(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
(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)))
;; 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
;; 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)))
search rename
add_name remove_name
open write
- rmdir)))
+ rmdir relabelfrom)))
(allow guix_daemon_t
guix_store_content_t
(file (create
link unlink
map
rename
- open read write)))
+ open read write relabelfrom)))
(allow guix_daemon_t
guix_store_content_t
(lnk_file (create
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
(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)))
(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)))
read write
connect bind accept
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(/.*)?"
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))))
(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)
bootloader-configuration-additional-configuration
%bootloaders
- lookup-bootloader-by-name))
+ lookup-bootloader-by-name
+
+ efi-bootloader-chain))
\f
;;;
(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")))))))
(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,
#: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)
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))
(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)))
\f
(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)))
#: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)
syslog-port
syslog
+ call-with-time
+ let/time
with-server-socket
current-server-socket
;;; 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)))
%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 \
%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 \
%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 \
%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 \
%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 \
#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")))
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)
"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")
"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")
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"))
(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")
(define-public acpica
(package
(name "acpica")
- (version "20200925")
+ (version "20201113")
(source (origin
(method url-fetch)
(uri (string-append
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
`(#: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
(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)
(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
(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
;;; 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>
#: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
`(#: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
(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"))
"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
;;; 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.
(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.
;;; 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>
`(("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
;;; 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>
(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)
(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"
(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:
(("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)
("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
`(("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="
"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")
;;; 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.
;;;
"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"
(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
;;; 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>
(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)
(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)))
"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"
"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)
#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")
(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
(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")
(define-public xsimd
(package
(name "xsimd")
- (version "7.2.3")
+ (version "7.4.9")
(source
(origin
(method git-fetch)
(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
`(("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
;;; 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>
(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
(define-public libolm
(package
(name "libolm")
- (version "3.1.5")
+ (version "3.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
(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
#: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)
(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="
"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,
(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
(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
(define-public python-pypika
(package
(name "python-pypika")
- (version "0.37.2")
+ (version "0.44.0")
(source
(origin (method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck"))))
+ "0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard"))))
(build-system python-build-system)
(native-inputs
`(("python-parameterized" ,python-parameterized)))
(define-public python-parted
(package
(name "python-parted")
- (version "3.11.6")
+ (version "3.11.7")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1xgrqhvn44vr3676j5sy2x3xfv2dzf7vncg25cmrsmkbd49x3z5j"))))
+ (base32 "01193fmkss9icjvqpw85szpk8ld1pnha7p9kqm7mpwk6rc6gi2m3"))))
(build-system python-build-system)
(arguments
`(#:phases
;;; 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.
;;;
#: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))
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)))
(define-public snap
(package
(name "snap")
- (version "6.3.1")
+ (version "6.3.3")
(source
(origin
(method git-fetch)
(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))
(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)
(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")
(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)))
(define-public emacs-helm
(package
(name "emacs-helm")
- (version "3.6.5")
+ (version "3.7.0")
(source
(origin
(method git-fetch)
(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)
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")
(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
(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
(file-name (git-file-name name version))
(sha256
(base32
- "1zya8id3y9wzjaj7nplq7br6nhm3lsskv0fkn1xr1y77fzcfgcdb"))))
+ "1gmpw14q9zkvviqpnmvh5vbyxk42038yilxm6b2zqw7mwxfc1xra"))))
(build-system emacs-build-system)
(arguments
`(#:phases
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")
(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
"-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)))
(define-public bitcoin-core
(package
(name "bitcoin-core")
- (version "0.19.1")
+ (version "0.20.1")
(source (origin
(method url-fetch)
(uri
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)))
("libevent" ,libevent)
("miniupnpc" ,miniupnpc)
("openssl" ,openssl)
- ("protobuf" ,protobuf)
("qtbase" ,qtbase)))
(arguments
`(#:configure-flags
;; 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
(define-public tiled
(package
(name "tiled")
- (version "1.2.5")
+ (version "1.4.2")
(source (origin
(method git-fetch)
(uri (git-reference
(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
(define-public bennu-game-development
(package
(name "bennu-game-development")
- (version "348")
+ (version "353")
(source (origin
(method svn-fetch)
(uri (svn-reference
(file-name (string-append name "-" version))
(sha256
(base32
- "0wpzsbh4zi3931493dnyl5ffmh1b7fj2sx3mzrq304z9zs4d6lqq"))
+ "1iri58ryk9lbqn585cbccnvrfkj8qxlbcsk8rpih40jhvs1j101l"))
(modules '((guix build utils)))
(snippet
'(begin
(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)
(package
(name "glib")
(version "2.62.6")
+ (replacement glib-with-gio-patch)
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/"
(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
(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
(define-public libhandy
(package
(name "libhandy")
- (version "1.0.0")
+ (version "1.0.2")
(source
(origin
(method git-fetch)
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "193y09yy0302x8fkyrnq591m805xp68bkd93fl5qggxi52k8pj0v"))))
+ (base32 "1bmmkahshvlvpsnb7zp8bddv7i1h5k4p967n6kxh71g1vnj8x20m"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags
;; 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
(define-public komikku
(package
(name "komikku")
- (version "0.21.1")
+ (version "0.22.1")
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "17ss5k2hnymk6xyx1dy3q0y2pwcld78cw7d0cs9c0hnhskh5dirh"))))
+ "0ds4j542zprbyh36qyii1c9mb7kj14cvrfk5miqjvp8y4b5i6mdi"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
;;; 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.
;;;
(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
#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)))))
(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)))
#: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'
"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)
(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.
(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")))
;; 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
(file-name (string-append "thunderbird-" version "-checkout"))
(sha256
(base32
- "146vp5048j5drzyvmsj9v34ifqcywr1gikwh4f1z4l9zad7b09rs")))))
+ "0m6isazpirmviv14kjav8jn3w3gm3mls0qwyf1n87hj00bj6z6jc")))))
("autoconf" ,autoconf-2.13)
("cargo" ,rust-1.41 "cargo")
("clang" ,clang)
(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))))
(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
(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)
;;; 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.
;;;
#: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)
#: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)
#: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)
(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
(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)
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)))
;;; 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.
;;;
(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)
(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)
(file-name (git-file-name name version))
(sha256
(base32
- "1rn538ghqwxq0v8i6578j8mflk6fyv0cp4hjfqynzvinjbps56da"))))
+ "1hnbzq10d23drd7ksm3c1n2611c3kd0q0yxgz8y78zaafwczvwxx"))))
(build-system gnu-build-system)
(arguments
`(#:imported-modules ((guix build python-build-system)
(define-public zabbix-agentd
(package
(name "zabbix-agentd")
- (version "5.2.0")
+ (version "5.2.1")
(source
(origin
(method url-fetch)
"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
#: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
(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)))
(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)))))
"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)
;; 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")
(commit commit)))
(sha256
(base32
- "15clfjp845gvl0p6qw0b1gdibqfq20zwzr6dbxvq8l9fgzj1kb6b"))
+ "1wa67gdipmzqr400hp0cw5ih0rlfvj345h65rqbk9s4g3bkg38hm"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
(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
+++ /dev/null
-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))
--- /dev/null
+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);
--- /dev/null
+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;
--- /dev/null
+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;
-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
+# 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
+++ /dev/null
-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)\r
- {\r
- QString pdfFile = QDir::toNativeSeparators(fName);\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)\r
-+ globalParams.reset(new GlobalParams());\r
-+#else\r
- globalParams = new GlobalParams();\r
-+#endif\r
- if (globalParams)\r
- {\r
- #if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0)\r
-@@ -90,7 +94,9 @@ QImage PdfPlug::readThumbnail(const QString& fName)
- if (pdfDoc->getErrorCode() == errEncrypted)\r
- {\r
- delete pdfDoc;\r
-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)\r
- delete globalParams;\r
-+#endif\r
- return QImage();\r
- }\r
- if (pdfDoc->isOk())\r
-@@ -134,11 +140,15 @@ QImage PdfPlug::readThumbnail(const QString& fName)
- image.setText("YSize", QString("%1").arg(h));\r
- delete dev;\r
- delete pdfDoc;\r
-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)\r
- delete globalParams;\r
-+#endif\r
- return image;\r
- }\r
- delete pdfDoc;\r
-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)\r
- delete globalParams;\r
-+#endif\r
- }\r
- }\r
- return QImage();\r
-@@ -387,7 +397,11 @@ bool PdfPlug::convert(const QString& fn)
- qApp->processEvents();\r
- }\r
- \r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)\r
-+ globalParams.reset(new GlobalParams());\r
-+#else\r
- globalParams = new GlobalParams();\r
-+#endif\r
- GooString *userPW = nullptr;\r
- if (globalParams)\r
- {\r
-@@ -429,7 +443,9 @@ bool PdfPlug::convert(const QString& fn)
- if (progressDialog)\r
- progressDialog->close();\r
- delete pdfDoc;\r
-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)\r
- delete globalParams;\r
-+#endif\r
- return false;\r
- }\r
- if (progressDialog)\r
-@@ -474,7 +490,9 @@ bool PdfPlug::convert(const QString& fn)
- progressDialog->close();\r
- delete optImp;\r
- delete pdfDoc;\r
-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)\r
- delete globalParams;\r
-+#endif\r
- return false;\r
- }\r
- pageString = optImp->getPagesString();\r
-@@ -838,11 +856,20 @@ bool PdfPlug::convert(const QString& fn)
- names = catDict.dictLookup("OpenAction");\r
- if (names.isDict())\r
- {\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ std::unique_ptr<LinkAction> linkAction;\r
-+ linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI());\r
-+#else\r
- LinkAction *linkAction = nullptr;\r
- linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI());\r
-+#endif\r
- if (linkAction)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)linkAction;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) linkAction.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) linkAction;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- QString script = UnicodeParsedString(jsa->getScript());\r
-@@ -908,8 +935,12 @@ bool PdfPlug::convert(const QString& fn)
- }\r
- delete pdfDoc;\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)\r
-+ globalParams.release();\r
-+#else\r
- delete globalParams;\r
- globalParams = nullptr;\r
-+#endif\r
- \r
- // qDebug() << "converting finished";\r
- // qDebug() << "Imported" << Elements.count() << "Elements";\r
-@@ -1046,3 +1077,43 @@ QString PdfPlug::UnicodeParsedString(POPPLER_CONST GooString *s1)
- }\r
- return result;\r
- }\r
-+\r
-+QString PdfPlug::UnicodeParsedString(const std::string& s1)\r
-+{\r
-+ if (s1.length() == 0)\r
-+ return QString();\r
-+ GBool isUnicode;\r
-+ int i;\r
-+ Unicode u;\r
-+ QString result;\r
-+ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff))\r
-+ {\r
-+ isUnicode = gTrue;\r
-+ i = 2;\r
-+ result.reserve((s1.length() - 2) / 2);\r
-+ }\r
-+ else\r
-+ {\r
-+ isUnicode = gFalse;\r
-+ i = 0;\r
-+ result.reserve(s1.length());\r
-+ }\r
-+ while (i < s1.length())\r
-+ {\r
-+ if (isUnicode)\r
-+ {\r
-+ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff);\r
-+ i += 2;\r
-+ }\r
-+ else\r
-+ {\r
-+ u = s1.at(i) & 0xff;\r
-+ ++i;\r
-+ }\r
-+ // #15616: imagemagick may write unicode strings incorrectly in PDF\r
-+ if (u == 0)\r
-+ continue;\r
-+ result += QChar( u );\r
-+ }\r
-+ return result;\r
-+}\r
-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\r
- #endif\r
- \r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 82, 0)\r
-+#define POPPLER_CONST_082 const\r
-+#else\r
-+#define POPPLER_CONST_082\r
-+#endif\r
-+\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)\r
-+#define POPPLER_CONST_083 const\r
-+#else\r
-+#define POPPLER_CONST_083\r
-+#endif\r
-+\r
- #endif\r
-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)
- }\r
- \r
- /* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano)\r
-+{\r
-+ std::unique_ptr<LinkAction> linkAction;\r
-+#else\r
- LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano)\r
- {\r
- LinkAction *linkAction = nullptr;\r
-+#endif\r
- Object obj;\r
- Ref refa = ano->getRef();\r
- \r
-@@ -455,7 +461,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do
- POPPLER_CONST GooString *ndst = gto->getNamedDest();\r
- if (ndst)\r
- {\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);\r
-+#else\r
- LinkDest *dstn = pdfDoc->findDest(ndst);\r
-+#endif\r
- if (dstn)\r
- {\r
- if (dstn->getKind() == destXYZ)\r
-@@ -499,7 +509,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do
- POPPLER_CONST GooString *ndst = gto->getNamedDest();\r
- if (ndst)\r
- {\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);\r
-+#else\r
- LinkDest *dstn = pdfDoc->findDest(ndst);\r
-+#endif\r
- if (dstn)\r
- {\r
- if (dstn->getKind() == destXYZ)\r
-@@ -967,7 +981,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- POPPLER_CONST GooString *ndst = gto->getNamedDest();\r
- if (ndst)\r
- {\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);\r
-+#else\r
- LinkDest *dstn = pdfDoc->findDest(ndst);\r
-+#endif\r
- if (dstn)\r
- {\r
- if (dstn->getKind() == destXYZ)\r
-@@ -1019,7 +1037,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- POPPLER_CONST GooString *ndst = gto->getNamedDest();\r
- if (ndst)\r
- {\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);\r
-+#else\r
- LinkDest *dstn = pdfDoc->findDest(ndst);\r
-+#endif\r
- if (dstn)\r
- {\r
- if (dstn->getKind() == destXYZ)\r
-@@ -1088,96 +1110,148 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- else\r
- qDebug() << "Found unsupported Action of type" << Lact->getKind();\r
- }\r
-- LinkAction *Aact = SC_getAdditionalAction("D", ano);\r
-+ auto Aact = SC_getAdditionalAction("D", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setD_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("E", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setE_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("X", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setX_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("Fo", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setFo_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("Bl", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setBl_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("C", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setC_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("F", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setF_act(UnicodeParsedString(jsa->getScript()));\r
-@@ -1185,14 +1259,22 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- ite->annotation().setFormat(5);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("K", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setK_act(UnicodeParsedString(jsa->getScript()));\r
-@@ -1200,21 +1282,33 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- ite->annotation().setFormat(5);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- Aact = SC_getAdditionalAction("V", ano);\r
- if (Aact)\r
- {\r
- if (Aact->getKind() == actionJavaScript)\r
- {\r
-- LinkJavaScript *jsa = (LinkJavaScript*)Aact;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();\r
-+#else\r
-+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;\r
-+#endif\r
- if (jsa->isOk())\r
- {\r
- ite->annotation().setV_act(UnicodeParsedString(jsa->getScript()));\r
- ite->annotation().setAAact(true);\r
- }\r
- }\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ Aact.reset();\r
-+#else\r
- Aact = nullptr;\r
-+#endif\r
- }\r
- }\r
- \r
-@@ -1224,6 +1318,11 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA)
- catalog = catA;\r
- pdfDoc = doc;\r
- updateGUICounter = 0;\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 84, 0)\r
-+ m_fontEngine = new SplashFontEngine(true, true, true, true);\r
-+#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 61, 0)\r
-+ m_fontEngine = new SplashFontEngine(globalParams->getEnableFreeType(), true, true, true);\r
-+#else\r
- m_fontEngine = new SplashFontEngine(\r
- #if HAVE_T1LIB_H\r
- globalParams->getEnableT1lib(),\r
-@@ -1234,6 +1333,7 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA)
- true,\r
- #endif\r
- true);\r
-+#endif\r
- }\r
- \r
- void SlaOutputDev::startPage(int pageNum, GfxState *, XRef *)\r
-@@ -2784,7 +2884,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, i
- delete[] mbuffer;\r
- }\r
- \r
--void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg)\r
-+void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int* maskColors, GBool inlineImg)\r
- {\r
- ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits());\r
- // qDebug() << "Image Components" << colorMap->getNumPixelComps() << "Mask" << maskColors;\r
-@@ -3365,7 +3465,7 @@ err1:
- fontsrc->unref();\r
- }\r
- \r
--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)\r
-+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)\r
- {\r
- double x1, y1, x2, y2;\r
- int render;\r
-@@ -3452,7 +3552,7 @@ void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, doub
- }\r
- }\r
- \r
--GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen)\r
-+GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen)\r
- {\r
- // qDebug() << "beginType3Char";\r
- GfxFont *gfxFont;\r
-@@ -3705,7 +3805,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotColor *color)
- return fNam;\r
- }\r
- \r
--QString SlaOutputDev::convertPath(GfxPath *path)\r
-+QString SlaOutputDev::convertPath(POPPLER_CONST_083 GfxPath *path)\r
- {\r
- if (! path)\r
- return QString();\r
-@@ -3715,7 +3815,7 @@ QString SlaOutputDev::convertPath(GfxPath *path)
- \r
- for (int i = 0; i < path->getNumSubpaths(); ++i)\r
- {\r
-- GfxSubpath * subpath = path->getSubpath(i);\r
-+ POPPLER_CONST_083 GfxSubpath * subpath = path->getSubpath(i);\r
- if (subpath->getNumPoints() > 0)\r
- {\r
- output += QString("M %1 %2").arg(subpath->getX(0)).arg(subpath->getY(0));\r
-@@ -3922,6 +4022,46 @@ QString SlaOutputDev::UnicodeParsedString(POPPLER_CONST GooString *s1)
- return result;\r
- }\r
- \r
-+QString SlaOutputDev::UnicodeParsedString(const std::string& s1)\r
-+{\r
-+ if (s1.length() == 0)\r
-+ return QString();\r
-+ GBool isUnicode;\r
-+ int i;\r
-+ Unicode u;\r
-+ QString result;\r
-+ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff))\r
-+ {\r
-+ isUnicode = gTrue;\r
-+ i = 2;\r
-+ result.reserve((s1.length() - 2) / 2);\r
-+ }\r
-+ else\r
-+ {\r
-+ isUnicode = gFalse;\r
-+ i = 0;\r
-+ result.reserve(s1.length());\r
-+ }\r
-+ while (i < s1.length())\r
-+ {\r
-+ if (isUnicode)\r
-+ {\r
-+ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff);\r
-+ i += 2;\r
-+ }\r
-+ else\r
-+ {\r
-+ u = s1.at(i) & 0xff;\r
-+ ++i;\r
-+ }\r
-+ // #15616: imagemagick may write unicode strings incorrectly in PDF\r
-+ if (u == 0)\r
-+ continue;\r
-+ result += QChar( u );\r
-+ }\r
-+ return result;\r
-+}\r
-+\r
- bool SlaOutputDev::checkClip()\r
- {\r
- bool ret = false;\r
-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>\r
- #include <QTransform>\r
- \r
-+#include <memory>\r
-+\r
- #include "fpointarray.h"\r
- #include "importpdfconfig.h"\r
- #include "pageitem.h"\r
-@@ -159,7 +161,11 @@ public:
- virtual ~SlaOutputDev();\r
- \r
- LinkAction* SC_getAction(AnnotWidget *ano);\r
-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)\r
-+ std::unique_ptr<LinkAction> SC_getAdditionalAction(const char *key, AnnotWidget *ano);\r
-+#else\r
- LinkAction* SC_getAdditionalAction(const char *key, AnnotWidget *ano);\r
-+#endif\r
- static GBool annotations_callback(Annot *annota, void *user_data);\r
- bool handleTextAnnot(Annot* annota, double xCoor, double yCoor, double width, double height);\r
- bool handleLinkAnnot(Annot* annota, double xCoor, double yCoor, double width, double height);\r
-@@ -229,7 +235,7 @@ public:
- \r
- //----- image drawing\r
- void drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool interpolate, GBool inlineImg) override;\r
-- void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) override;\r
-+ void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int *maskColors, GBool inlineImg) override;\r
- void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,\r
- int width, int height,\r
- GfxImageColorMap *colorMap,\r
-@@ -261,8 +267,8 @@ public:
- //----- text drawing\r
- void beginTextObject(GfxState *state) override;\r
- void endTextObject(GfxState *state) override;\r
-- 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;\r
-- GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, Unicode * /*u*/, int /*uLen*/) override;\r
-+ 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;\r
-+ GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override;\r
- void endType3Char(GfxState * /*state*/) override;\r
- void type3D0(GfxState * /*state*/, double /*wx*/, double /*wy*/) override;\r
- void type3D1(GfxState * /*state*/, double /*wx*/, double /*wy*/, double /*llx*/, double /*lly*/, double /*urx*/, double /*ury*/) override;\r
-@@ -282,11 +288,12 @@ private:
- void getPenState(GfxState *state);\r
- QString getColor(GfxColorSpace *color_space, POPPLER_CONST_070 GfxColor *color, int *shade);\r
- QString getAnnotationColor(const AnnotColor *color);\r
-- QString convertPath(GfxPath *path);\r
-+ QString convertPath(POPPLER_CONST_083 GfxPath *path);\r
- int getBlendMode(GfxState *state);\r
- void applyMask(PageItem *ite);\r
- void pushGroup(const QString& maskName = "", GBool forSoftMask = gFalse, GBool alpha = gFalse, bool inverted = false);\r
- QString UnicodeParsedString(POPPLER_CONST GooString *s1);\r
-+ QString UnicodeParsedString(const std::string& s1);\r
- bool checkClip();\r
- bool pathIsClosed;\r
- QString CurrColorFill;\r
+++ /dev/null
-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"
- }
-
(define-public pdfpc
(package
(name "pdfpc")
- (version "4.4.0")
+ (version "4.4.1")
(source
(origin
(method git-fetch)
(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
;;; 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>
(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
;;; 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.
;;;
(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
(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")
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")
(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)))
;;; 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.
;;;
(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
("openssl" ,openssl)
("podofo" ,podofo)
("poppler" ,poppler)
- ("python" ,python-2) ;need Python library
+ ("python" ,python) ; need Python library
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("zlib" ,zlib)))
(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.
(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
(define-public avidemux
(package
(name "avidemux")
- (version "2.7.4")
+ (version "2.7.6")
(source (origin
(method url-fetch)
(uri (string-append
"avidemux_" version ".tar.gz"))
(sha256
(base32
- "1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x"))
+ "1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s"))
(patches (search-patches "avidemux-install-to-lib.patch"))))
(build-system cmake-build-system)
(native-inputs
("glu" ,glu)
("jack" ,jack-1)
("lame" ,lame)
+ ("libaom" ,libaom)
("libva" ,libva)
("libvdpau" ,libvdpau)
("libvorbis" ,libvorbis)
#: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 _
(define-public livemedia-utils
(package
(name "livemedia-utils")
- (version "2019.05.29")
+ (version "2020.11.05")
(source (origin
(method url-fetch)
(uri (string-append
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="
(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
(define-public xen
(package
(name "xen")
- (version "4.13.0")
+ (version "4.14.0")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "0py50n995gv909i0d1lfdcj9wcp5g1d5z6m2291jqqlfyany138g"))))
+ "1s06zhzmkm7wylrxhas5v0sg2ackmmyw01gvv67r9idml55i0dh5"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
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,
(not
(string-contains e
"mini-os-git-checkout")))
- '("CPATH"
+ '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"))
(setenv "EFI_VENDOR" "guix")
#t))
(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/"
".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)
(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"
(define-public esbuild
(package
(name "esbuild")
- (version "0.8.4")
+ (version "0.8.7")
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "0aaqyfnl4dncrpw8n2sqkkavx7ki7i2r9pdi82pp9syql3b5495y"))
+ "14x95dmh4jrfp93p7ln0cv917qxll04sqzlpf9rl6w01fifr2s75"))
(modules '((guix build utils)))
(snippet
'(begin
(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/"
"xlockmore-" version ".tar.xz")))
(sha256
(base32
- "0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi"))))
+ "0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "--enable-appdefaultdir="
(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"
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
(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))
(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")))
"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}.")
(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
system-qemu-image/shared-store
system-qemu-image/shared-store-script
- system-disk-image-in-vm
system-docker-image
virtual-machine
;;; 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")
#: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
#: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.
;;; 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.
;;;
("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."
(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.
;; '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))
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.
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))
(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))
(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
(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~^ ~}~%"
(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
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?)))))
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))
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?
#: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))
--image-size=SIZE for 'vm-image', produce an image of SIZE"))
(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_ "
(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)))
(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."
#: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?)
(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"))
(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)))
target-arm?
target-64bit?
cc-for-target
+ cxx-for-target
version-compare
version>?
(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))
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
;;; 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.
(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"