Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2020-11-19 00:04:32 +01:00
commit 35ed83beae
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
84 changed files with 1545 additions and 1155 deletions

View file

@ -11,23 +11,34 @@
. "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")
;; Emacs-Guix
(eval . (setq guix-directory
(locate-dominating-file default-directory ".dir-locals.el")))
(eval . (setq-local guix-directory
(locate-dominating-file default-directory
".dir-locals.el")))
;; Geiser
;; This allows automatically setting the `geiser-guile-load-path'
;; variable when using various Guix checkouts (e.g., via git worktrees).
(eval . (let* ((root-dir (expand-file-name
(locate-dominating-file
default-directory ".dir-locals.el")))
;; Workaround for bug https://issues.guix.gnu.org/43818.
(root-dir* (directory-file-name root-dir)))
(unless (boundp 'geiser-guile-load-path)
(defvar geiser-guile-load-path '()))
(make-local-variable 'geiser-guile-load-path)
(require 'cl-lib)
(cl-pushnew root-dir* geiser-guile-load-path
:test #'string-equal)))))
(eval . (let ((root-dir-unexpanded (locate-dominating-file
default-directory ".dir-locals.el")))
;; While Guix should in theory always have a .dir-locals.el
;; (we are reading this file, after all) there seems to be a
;; strange problem where this code "escapes" to some other buffers,
;; at least vc-mode. See:
;; https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00296.html
;; Upstream report: <https://bugs.gnu.org/44698>
;; Hence the following "when", which might otherwise be unnecessary;
;; it prevents causing an error when root-dir-unexpanded is nil.
(when root-dir-unexpanded
(let* ((root-dir (expand-file-name root-dir-unexpanded))
;; Workaround for bug https://issues.guix.gnu.org/43818.
(root-dir* (directory-file-name root-dir)))
(unless (boundp 'geiser-guile-load-path)
(defvar geiser-guile-load-path '()))
(make-local-variable 'geiser-guile-load-path)
(require 'cl-lib)
(cl-pushnew root-dir* geiser-guile-load-path
:test #'string-equal)))))))
(c-mode . ((c-file-style . "gnu")))
(scheme-mode
@ -123,7 +134,6 @@
(eval . (put 'call-with-progress-reporter 'scheme-indent-function 1))
(eval . (put 'with-repository 'scheme-indent-function 2))
(eval . (put 'with-temporary-git-repository 'scheme-indent-function 2))
(eval . (put 'with-temporary-git-worktree 'scheme-indent-function 2))
(eval . (put 'with-environment-variables 'scheme-indent-function 1))
(eval . (put 'with-fresh-gnupg-setup 'scheme-indent-function 1))

View file

@ -562,7 +562,7 @@ dist_zshcompletion_DATA = etc/completion/zsh/_guix
dist_fishcompletion_DATA = etc/completion/fish/guix.fish
# SELinux policy
nodist_selinux_policy_DATA = etc/guix-daemon.cil.in
nodist_selinux_policy_DATA = etc/guix-daemon.cil
EXTRA_DIST += \
HACKING \
@ -570,6 +570,7 @@ EXTRA_DIST += \
TODO \
CODE-OF-CONDUCT \
.dir-locals.el \
.guix-authorizations \
.guix-channel \
scripts/guix.in \
etc/guix-install.sh \
@ -710,7 +711,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
# Name of the 'guix' package shipped in the binary tarball.
GUIX_FOR_BINARY_TARBALL = guile3.0-guix
GUIX_FOR_BINARY_TARBALL = guix
# The self-contained tarball.
guix-binary.%.tar.xz:
@ -730,8 +731,8 @@ distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
EXTRA_DIST += $(top_srcdir)/.version
BUILT_SOURCES += $(top_srcdir)/.version
$(top_srcdir)/.version:
echo $(VERSION) > "$@-t" && mv "$@-t" "$@"
$(top_srcdir)/.version: config.status
$(AM_V_GEN)echo $(VERSION) > "$@-t" && mv "$@-t" "$@"
gen-tarball-version:
echo $(VERSION) > "$(distdir)/.tarball-version"
@ -826,9 +827,10 @@ release: dist-with-updated-version
$(MKDIR_P) "$(releasedir)"
rm -f "$(releasedir)"/*
mv $(SOURCE_TARBALLS) "$(releasedir)"
$(top_builddir)/pre-inst-env "$(GUILE)" \
$(top_srcdir)/build-aux/update-guix-package.scm \
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
$(top_builddir)/pre-inst-env "$(GUILE)" \
$(top_srcdir)/build-aux/update-guix-package.scm \
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
git add $(top_srcdir)/gnu/packages/package-management.scm
git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
$(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \
@ -840,9 +842,10 @@ release: dist-with-updated-version
mv "guix-binary.$$system.tar.xz" \
"$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \
done
$(top_builddir)/pre-inst-env "$(GUILE)" \
$(top_srcdir)/build-aux/update-guix-package.scm \
"`git rev-parse HEAD`"
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
$(top_builddir)/pre-inst-env "$(GUILE)" \
$(top_srcdir)/build-aux/update-guix-package.scm \
"`git rev-parse HEAD`"
git add $(top_srcdir)/gnu/packages/package-management.scm
git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`."
$(top_builddir)/pre-inst-env guix build guix \

4
NEWS
View file

@ -60,6 +60,8 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** swap-devices field of operating-system can contains UUIDs and labels
*** Graphical installer uses UUIDs for unencrypted swap partitions
*** Graphical installer now supports NTFS file systems
*** File systems UUIDs and labels now recognized for F2FS and NTFS
*** Root file system can now be on NFS
*** New services
autossh, ganeti, gmnisrv, guix-build-coordinator,
@ -96,6 +98,8 @@ simulated-wifi, udev-rules, unattended-upgrade, webssh, zram
(<https://issues.guix.gnu.org/35394>)
*** guix system reconfigure now starts services not currently running
(<https://bugs.gnu.org/43720>)
*** Desktop environments now detect newly installed applications
(<https://bugs.gnu.org/35594>)
*** Offloading and copying small items is now much faster
(<https://issues.guix.gnu.org/43340>)
*** GCC switched back to C_INCLUDE_PATH & co. from CPATH

View file

@ -44,9 +44,6 @@
(define %top-srcdir
(string-append (current-source-directory) "/.."))
(define version-controlled?
(git-predicate %top-srcdir))
(define (package-definition-location)
"Return the source properties of the definition of the 'guix' package."
(call-with-input-file (location-file (package-location guix))
@ -114,8 +111,9 @@ (define (git-add-worktree directory commit)
"Create a new git worktree at DIRECTORY, detached on commit COMMIT."
(invoke "git" "worktree" "add" "--detach" directory commit))
(define-syntax-rule (with-temporary-git-worktree commit body ...)
"Execute BODY in the context of a temporary git worktree created from COMMIT."
(define (call-with-temporary-git-worktree commit proc)
"Execute PROC in the context of a temporary git worktree created from
COMMIT. PROC receives the temporary directory file name as an argument."
(call-with-temporary-directory
(lambda (tmp-directory)
(dynamic-wind
@ -123,12 +121,12 @@ (define-syntax-rule (with-temporary-git-worktree commit body ...)
#t)
(lambda ()
(git-add-worktree tmp-directory commit)
(with-directory-excursion tmp-directory body ...))
(proc tmp-directory))
(lambda ()
(invoke "git" "worktree" "remove" "--force" tmp-directory))))))
(define %savannah-guix-git-repo-push-url-regexp
"git.(savannah|sv).gnu.org/srv/git/guix.git \\(push\\)")
"git.(savannah|sv).gnu.org:?/srv/git/guix.git \\(push\\)")
(define-syntax-rule (with-input-pipe-to-string prog arg ...)
(let* ((input-pipe (open-pipe* OPEN_READ prog arg ...))
@ -156,27 +154,60 @@ (define (commit-already-pushed? remote commit)
"git" "branch" "-r" "--contains" commit
(string-append remote "/master")))))
(define (keep-source-in-store store source)
"Add SOURCE to the store under the name that the 'guix' package expects."
;; Add SOURCE to the store, but this time under the real name used in the
;; 'origin'. This allows us to build the package without having to make a
;; real checkout; thus, it also works when working on a private branch.
(reload-module
(resolve-module '(gnu packages package-management)))
(let* ((source (add-to-store store
(origin-file-name (package-source guix))
#t "sha256" source
#:select? (git-predicate source)))
(root (store-path-package-name source)))
;; Add an indirect GC root for SOURCE in the current directory.
(false-if-exception (delete-file root))
(symlink source root)
(add-indirect-root store
(string-append (getcwd) "/" root))
(info (G_ "source code kept in ~a (GC root: ~a)~%")
source root)))
(define (main . args)
(match args
((commit version)
(with-directory-excursion %top-srcdir
(or (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT")
(commit-already-pushed? (find-origin-remote) commit)
(let ((remote (find-origin-remote)))
(unless remote
(leave (G_ "Failed to find the origin git remote.~%")))
(commit-already-pushed? remote commit))
(leave (G_ "Commit ~a is not pushed upstream. Aborting.~%") commit))
(let* ((hash (with-temporary-git-worktree commit
(nix-base32-string->bytevector
(string-trim-both
(with-output-to-string
(lambda ()
(guix-hash "-rx" ".")))))))
(location (package-definition-location))
(old-hash (content-hash-value
(origin-hash (package-source guix)))))
(edit-expression location
(update-definition commit hash
#:old-hash old-hash
#:version version)))))
(call-with-temporary-git-worktree commit
(lambda (tmp-directory)
(let* ((hash (nix-base32-string->bytevector
(string-trim-both
(with-output-to-string
(lambda ()
(guix-hash "-rx" tmp-directory))))))
(location (package-definition-location))
(old-hash (content-hash-value
(origin-hash (package-source guix)))))
(edit-expression location
(update-definition commit hash
#:old-hash old-hash
#:version version))
;; When GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT is set, the sources are
;; added to the store. This is used as part of 'make release'.
(when (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT")
(with-store store
(keep-source-in-store store tmp-directory))))))))
((commit)
;; Automatically deduce the version and revision numbers.
(main commit #f))))

View file

@ -1368,11 +1368,6 @@ commit that others can't refer to, a check is made that the commit used
has already been pushed to the Savannah-hosted Guix git repository.
This check can be disabled, @emph{at your own peril}, by setting the
@code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable.
To build the resulting 'guix' package when using a private commit, the
following command can be used:
@example
./pre-inst-env guix build guix --with-git-url=guix=$PWD
@end example
@code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. When
this variable is set, the updated package source is also added to the
store. This is used as part of the release process of Guix.

View file

@ -17538,7 +17538,7 @@ Available @code{cups-configuration} fields are:
The CUPS package.
@end deftypevr
@deftypevr {@code{cups-configuration} parameter} package-list extensions
@deftypevr {@code{cups-configuration} parameter} package-list extensions (default: @code{(list escpr hplip-minimal foomatic-filters)})
Drivers and other extensions to the CUPS package.
@end deftypevr
@ -24906,14 +24906,18 @@ Defaults to @samp{tun}.
@end deftypevr
@deftypevr {@code{openvpn-client-configuration} parameter} string ca
If you do not have some of these files (eg.@: you use a username and
password), you can disable any of the following three fields by setting
it to @code{'disabled}.
@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string ca
The certificate authority to check connections against.
Defaults to @samp{"/etc/openvpn/ca.crt"}.
@end deftypevr
@deftypevr {@code{openvpn-client-configuration} parameter} string cert
@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string cert
The certificate of the machine the daemon is running on. It should be
signed by the authority given in @code{ca}.
@ -24921,7 +24925,7 @@ Defaults to @samp{"/etc/openvpn/client.crt"}.
@end deftypevr
@deftypevr {@code{openvpn-client-configuration} parameter} string key
@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string key
The key of the machine the daemon is running on. It must be the key whose
certificate is @code{cert}.
@ -25057,14 +25061,18 @@ Defaults to @samp{tun}.
@end deftypevr
@deftypevr {@code{openvpn-server-configuration} parameter} string ca
If you do not have some of these files (eg.@: you use a username and
password), you can disable any of the following three fields by setting
it to @code{'disabled}.
@deftypevr {@code{openvpn-server-configuration} parameter} maybe-string ca
The certificate authority to check connections against.
Defaults to @samp{"/etc/openvpn/ca.crt"}.
@end deftypevr
@deftypevr {@code{openvpn-server-configuration} parameter} string cert
@deftypevr {@code{openvpn-server-configuration} parameter} maybe-string cert
The certificate of the machine the daemon is running on. It should be
signed by the authority given in @code{ca}.
@ -25072,7 +25080,7 @@ Defaults to @samp{"/etc/openvpn/client.crt"}.
@end deftypevr
@deftypevr {@code{openvpn-server-configuration} parameter} string key
@deftypevr {@code{openvpn-server-configuration} parameter} maybe-string key
The key of the machine the daemon is running on. It must be the key whose
certificate is @code{cert}.
@ -31024,11 +31032,27 @@ a value. Docker images are built to contain exactly what they need, so
the @option{--image-size} option is ignored in the case of
@code{docker-image}.
@cindex disk-image, creating disk images
The @code{disk-image} command can produce various image types. The
image type can be selected using the @command{--image-type} option. It
defaults to @code{raw}. When its value is @code{iso9660}, the
image type can be selected using the @option{--image-type} option. It
defaults to @code{raw}. When its value is @code{iso9660}, the
@option{--label} option can be used to specify a volume ID with
@code{disk-image}.
@code{disk-image}. By default, the root file system of a disk image is
mounted non-volatile; the @option{--volatile} option can be provided to
make it volatile instead. When using @code{disk-image}, the bootloader
installed on the generated image is taken from the provided
@code{operating-system} definition. The following example demonstrates
how to generate an image that uses the @code{grub-efi-bootloader}
bootloader and boot it with QEMU:
@example
image=$(guix system disk-image --image-type=qcow2 \
gnu/system/examples/lightweight-desktop.tmpl)
cp $image /tmp/my-image.qcow2
chmod +w /tmp/my-image.qcow2
qemu-system-x86_64 -enable-kvm -hda /tmp/my-image.qcow2 -m 1000 \
-bios $(guix build ovmf)/share/firmware/ovmf_x64.bin
@end example
When using the @code{raw} image type, a raw disk image is produced; it
can be copied as is to a USB stick, for instance. Assuming
@ -31042,10 +31066,17 @@ the image to it using the following command:
The @code{--list-image-types} command lists all the available image
types.
@cindex vm-image, creating virtual machine images
When using @code{vm-image}, the returned image is in qcow2 format, which
the QEMU emulator can efficiently use. @xref{Running Guix in a VM},
for more information on how to run the image in a virtual machine.
the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for
more information on how to run the image in a virtual machine. The
@code{grub-bootloader} bootloader is always used independently of what
is declared in the @code{operating-system} file passed as argument.
This is to make it easier to work with QEMU, which uses the SeaBIOS BIOS
by default, expecting a bootloader to be installed in the Master Boot
Record (MBR).
@cindex docker-image, creating docker images
When using @code{docker-image}, a Docker image is produced. Guix builds
the image from scratch, not from a pre-existing Docker base image. As a
result, it contains @emph{exactly} what you define in the operating

View file

@ -1,6 +1,8 @@
; -*- lisp -*-
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Daniel Brooks <db48x@db48x.net>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -21,6 +23,18 @@
;; Intermediate Language (CIL). It refers to types that must be defined in
;; the system's base policy.
;; If you, like me, need advice about fixing an SELinux policy, I recommend
;; reading https://danwalsh.livejournal.com/55324.html
;; In particular, you can run semanage permissive -a guix_daemon.guix_daemon_t
;; to allow guix-daemon to do whatever it wants. SELinux will still check its
;; permissions, and when it doesn't have permission it will still send an
;; audit message to your system logs. This lets you know what permissions it
;; ought to have. Use ausearch --raw to find the permissions violations, then
;; pipe that to audit2allow to generate an updated policy. You'll still need
;; to translate that policy into CIL in order to update this file, but that's
;; fairly straight-forward. Annoying, but easy.
(block guix_daemon
;; Require existing types
(typeattributeset cil_gen_require init_t)
@ -34,14 +48,19 @@
(roletype object_r guix_daemon_t)
(type guix_daemon_conf_t)
(roletype object_r guix_daemon_conf_t)
(typeattributeset file_type guix_daemon_conf_t)
(type guix_daemon_exec_t)
(roletype object_r guix_daemon_exec_t)
(typeattributeset file_type guix_daemon_exec_t)
(type guix_daemon_socket_t)
(roletype object_r guix_daemon_socket_t)
(typeattributeset file_type guix_daemon_socket_t)
(type guix_store_content_t)
(roletype object_r guix_store_content_t)
(typeattributeset file_type guix_store_content_t)
(type guix_profiles_t)
(roletype object_r guix_profiles_t)
(typeattributeset file_type guix_profiles_t)
;; These types are domains, thereby allowing process rules
(typeattributeset domain (guix_daemon_t guix_daemon_exec_t))
@ -55,6 +74,30 @@
(typetransition guix_store_content_t guix_daemon_exec_t
process guix_daemon_t)
(roletype system_r guix_daemon_t)
;; allow init_t to read and execute guix files
(allow init_t
guix_profiles_t
(lnk_file (read)))
(allow init_t
guix_daemon_exec_t
(file (execute)))
(allow init_t
guix_daemon_t
(process (transition)))
(allow init_t
guix_store_content_t
(lnk_file (read)))
(allow init_t
guix_store_content_t
(file (open read execute)))
;; guix-daemon needs to know the names of users
(allow guix_daemon_t
passwd_file_t
(file (getattr open read)))
;; Permit communication with NSCD
(allow guix_daemon_t
nscd_var_run_t
@ -71,25 +114,44 @@
(allow guix_daemon_t
nscd_t
(unix_stream_socket (connectto)))
(allow guix_daemon_t nscd_t
(nscd (getgrp gethost getpwd getserv shmemgrp shmemhost shmempwd shmemserv)))
;; permit downloading packages via HTTP(s)
(allow guix_daemon_t http_port_t
(tcp_socket (name_connect)))
(allow guix_daemon_t ftp_port_t
(tcp_socket (name_connect)))
(allow guix_daemon_t ephemeral_port_t
(tcp_socket (name_connect)))
;; Permit logging and temp file access
(allow guix_daemon_t
tmp_t
(lnk_file (setattr unlink)))
(lnk_file (create rename setattr unlink)))
(allow guix_daemon_t
tmp_t
(dir (create
rmdir
(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 rename
rmdir relabelto
add_name remove_name
open read write
getattr setattr
search)))
(allow guix_daemon_t
tmp_t
(sock_file (create getattr setattr unlink write)))
(allow guix_daemon_t
var_log_t
(file (create getattr open write)))
(allow guix_daemon_t
var_log_t
(dir (getattr write add_name)))
(dir (getattr create write add_name)))
(allow guix_daemon_t
var_run_t
(lnk_file (read)))
@ -100,10 +162,10 @@
;; Spawning processes, execute helpers
(allow guix_daemon_t
self
(process (fork)))
(process (fork execmem setrlimit setpgid setsched)))
(allow guix_daemon_t
guix_daemon_exec_t
(file (execute execute_no_trans read open)))
(file (execute execute_no_trans read open entrypoint map)))
;; TODO: unknown
(allow guix_daemon_t
@ -119,38 +181,51 @@
;; Build isolation
(allow guix_daemon_t
guix_store_content_t
(file (mounton)))
(file (ioctl mounton)))
(allow guix_store_content_t
fs_t
(filesystem (associate)))
(allow guix_daemon_t
guix_store_content_t
(dir (mounton)))
(dir (read mounton)))
(allow guix_daemon_t
guix_daemon_t
(capability (net_admin
fsetid fowner
chown setuid setgid
dac_override dac_read_search
sys_chroot)))
sys_chroot
sys_admin)))
(allow guix_daemon_t
fs_t
(filesystem (unmount)))
(allow guix_daemon_t
devpts_t
(dir (search)))
(allow guix_daemon_t
devpts_t
(filesystem (mount)))
(allow guix_daemon_t
devpts_t
(chr_file (setattr getattr)))
(chr_file (ioctl open read write setattr getattr)))
(allow guix_daemon_t
tmpfs_t
(filesystem (mount)))
(filesystem (getattr mount)))
(allow guix_daemon_t
tmpfs_t
(dir (getattr)))
(file (create open read unlink write)))
(allow guix_daemon_t
tmpfs_t
(dir (getattr add_name remove_name write)))
(allow guix_daemon_t
proc_t
(filesystem (mount)))
(file (getattr open read)))
(allow guix_daemon_t
proc_t
(dir (read)))
(allow guix_daemon_t
proc_t
(filesystem (associate mount)))
(allow guix_daemon_t
null_device_t
(chr_file (getattr open read write)))
@ -179,7 +254,7 @@
search rename
add_name remove_name
open write
rmdir)))
rmdir relabelfrom)))
(allow guix_daemon_t
guix_store_content_t
(file (create
@ -189,7 +264,7 @@
link unlink
map
rename
open read write)))
open read write relabelfrom)))
(allow guix_daemon_t
guix_store_content_t
(lnk_file (create
@ -197,17 +272,23 @@
link unlink
read
rename)))
(allow guix_daemon_t
guix_store_content_t
(fifo_file (create getattr open read unlink write)))
(allow guix_daemon_t
guix_store_content_t
(sock_file (create getattr unlink write)))
;; Access to configuration files and directories
(allow guix_daemon_t
guix_daemon_conf_t
(dir (search
(dir (search create
setattr getattr
add_name remove_name
open read write)))
(allow guix_daemon_t
guix_daemon_conf_t
(file (create
(file (create rename
lock
map
getattr setattr
@ -216,11 +297,17 @@
(allow guix_daemon_t
guix_daemon_conf_t
(lnk_file (create getattr rename unlink)))
(allow guix_daemon_t net_conf_t
(file (getattr open read)))
(allow guix_daemon_t net_conf_t
(lnk_file (read)))
(allow guix_daemon_t NetworkManager_var_run_t
(dir (search)))
;; Access to profiles
(allow guix_daemon_t
guix_profiles_t
(dir (getattr setattr read open)))
(dir (search getattr setattr read write open create add_name)))
(allow guix_daemon_t
guix_profiles_t
(lnk_file (read getattr)))
@ -233,8 +320,22 @@
(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)))
@ -253,12 +354,53 @@
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(/.*)?"
@ -277,5 +419,7 @@
file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon"
file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@storedir@/[a-z0-9]+-guix-daemon"
file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@guix_localstatedir@/guix/daemon-socket/socket"
any (system_u object_r guix_daemon_socket_t (low low))))

View file

@ -22,6 +22,8 @@
(define-module (gnu bootloader)
#:use-module (guix discovery)
#:use-module (guix gexp)
#:use-module (guix profiles)
#:use-module (guix records)
#:use-module (guix ui)
#:use-module (srfi srfi-1)
@ -66,7 +68,9 @@ (define-module (gnu bootloader)
bootloader-configuration-additional-configuration
%bootloaders
lookup-bootloader-by-name))
lookup-bootloader-by-name
efi-bootloader-chain))
;;;
@ -227,3 +231,122 @@ (define (lookup-bootloader-by-name name)
(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")))))))

View file

@ -573,21 +573,24 @@ (define install-grub-disk-image
(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,

View file

@ -41,6 +41,7 @@ (define-module (gnu installer parted)
#:use-module (ice-9 regex)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
@ -318,7 +319,7 @@ (define (with-delay-device-in-use? file-name)
fail. See rereadpt function in wipefs.c of util-linux for an explanation."
;; Kernel always return EINVAL for BLKRRPART on loopdevices.
(and (not (string-match "/dev/loop*" file-name))
(let loop ((try 4))
(let loop ((try 16))
(usleep 250000)
(let ((in-use? (device-in-use? file-name)))
(if (and in-use? (> try 0))
@ -339,15 +340,12 @@ (define (remove-logical-devices)
(define (non-install-devices)
"Return all the available devices, except the busy one, allegedly the
install device. DEVICE-IS-BUSY? is a parted call, checking if the device is
mounted. The install image uses an overlayfs so the install device does not
appear as mounted and won't be considered as busy. So use also DEVICE-IN-USE?
from (guix build syscalls) module, who will try to re-read the device's
partition table to determine whether or not it is already used (like sfdisk
from util-linux)."
mounted."
;; FIXME: The install image uses an overlayfs so the install device does not
;; appear as mounted and won't be considered as busy.
(remove (lambda (device)
(let ((file-name (device-path device)))
(or (device-is-busy? device)
(with-delay-device-in-use? file-name))))
(device-is-busy? device)))
(devices)))
@ -1390,9 +1388,12 @@ (define (free-parted devices)
(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)))

View file

@ -22,6 +22,7 @@ (define-module (gnu installer utils)
#:use-module (guix build utils)
#:use-module (guix i18n)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-34)
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
@ -36,6 +37,8 @@ (define-module (gnu installer utils)
syslog-port
syslog
call-with-time
let/time
with-server-socket
current-server-socket
@ -117,6 +120,17 @@ (define (pause)
;;; 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)))

View file

@ -846,7 +846,6 @@ dist_patch_DATA = \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/binutils-mingw-w64-timestamp.patch \
%D%/packages/patches/binutils-mingw-w64-deterministic.patch \
%D%/packages/patches/bitcoin-core-python-compat.patch \
%D%/packages/patches/blender-2.79-gcc8.patch \
%D%/packages/patches/blender-2.79-gcc9.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
@ -1012,6 +1011,8 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch \
%D%/packages/patches/gcc-libsanitizer-ustat.patch \
%D%/packages/patches/gcc-4.9-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-6-fix-isl-includes.patch \
%D%/packages/patches/gcc-6-fix-buffer-size.patch \
%D%/packages/patches/gcc-6-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-libvtv-runpath.patch \
@ -1052,6 +1053,7 @@ dist_patch_DATA = \
%D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
%D%/packages/patches/glib-appinfo-watch.patch \
%D%/packages/patches/glib-tests-timer.patch \
%D%/packages/patches/glibc-CVE-2018-11236.patch \
%D%/packages/patches/glibc-CVE-2018-11237.patch \
@ -1589,7 +1591,6 @@ dist_patch_DATA = \
%D%/packages/patches/scotch-build-parallelism.patch \
%D%/packages/patches/scotch-integer-declarations.patch \
%D%/packages/patches/screen-hurd-path-max.patch \
%D%/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch \
%D%/packages/patches/sdl-libx11-1.6.patch \
%D%/packages/patches/seed-webkit.patch \
%D%/packages/patches/seq24-rename-mutex.patch \
@ -1645,7 +1646,6 @@ dist_patch_DATA = \
%D%/packages/patches/tk-find-library.patch \
%D%/packages/patches/transcode-ffmpeg.patch \
%D%/packages/patches/ttf2eot-cstddef.patch \
%D%/packages/patches/tomb-fix-errors-on-open.patch \
%D%/packages/patches/tup-unbundle-dependencies.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \

View file

@ -1559,10 +1559,10 @@ (define-public wpa-supplicant-minimal
#t))))
(build-system gnu-build-system)
(arguments
'(#:phases
`(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(lambda _
(chdir "wpa_supplicant")
(copy-file "defconfig" ".config")
(let ((port (open-file ".config" "al")))
@ -1576,6 +1576,15 @@ (define-public wpa-supplicant-minimal
CONFIG_LIBNL32=y
CONFIG_READLINE=y\n" port)
(close-port port))
;; Make sure we have a pkg-config when cross compiling
(substitute* '(".config"
"Android.mk"
"Makefile"
"dbus/Makefile")
(("pkg-config")
(or (which "pkg-config")
(which (string-append ,(%current-target-system)
"-pkg-config")))))
#t))
(add-after 'install 'install-documentation
(lambda* (#:key outputs #:allow-other-keys)
@ -1604,7 +1613,7 @@ (define (copy-man-page target)
"wpa_supplicant.conf"))
#t))))
#:make-flags (list "CC=gcc"
#:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "BINDIR=" (assoc-ref %outputs "out")
"/sbin")
(string-append "LIBDIR=" (assoc-ref %outputs "out")
@ -1714,10 +1723,10 @@ (define-public hostapd
"1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8"))))
(build-system gnu-build-system)
(arguments
'(#:phases
`(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(lambda _
;; This is mostly copied from 'wpa-supplicant' above.
(chdir "hostapd")
(copy-file "defconfig" ".config")
@ -1729,6 +1738,14 @@ (define-public hostapd
CONFIG_IEEE80211AC=y\n" port)
(close-port port))
#t))
(add-after 'unpack 'patch-pkg-config
(lambda _
(substitute* "src/drivers/drivers.mak"
(("pkg-config")
(or (which "pkg-config")
(string-append ,(%current-target-system)
"-pkg-config"))))
#t))
(add-after 'install 'install-man-pages
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -1745,7 +1762,7 @@ (define (copy-man-page target)
(find-files "." "\\.8"))
#t))))
#:make-flags (list "CC=gcc"
#:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "BINDIR=" (assoc-ref %outputs "out")
"/sbin")
(string-append "LIBDIR=" (assoc-ref %outputs "out")
@ -1840,7 +1857,7 @@ (define-public dmidecode
(define-public acpica
(package
(name "acpica")
(version "20200925")
(version "20201113")
(source (origin
(method url-fetch)
(uri (string-append
@ -1848,13 +1865,13 @@ (define-public acpica
version ".tar.gz"))
(sha256
(base32
"18n6129fkgj85piid7v4zxxksv3h0amqp4p977vcl9xg3bq0zd2w"))))
"0fmck3zklc328c8nzvfzm2xyh2i8zszzrd4k8kk8q30y4avnc6z1"))))
(build-system gnu-build-system)
(native-inputs `(("flex" ,flex)
("bison" ,bison)))
(arguments
'(#:make-flags (list (string-append "PREFIX=" %output)
"CC=gcc"
`(#:make-flags (list (string-append "PREFIX=" %output)
(string-append "CC=" ,(cc-for-target))
"HOST=_LINUX"
"OPT_CFLAGS=-Wall -fno-strict-aliasing")
#:tests? #f ; no 'check' target
@ -2374,17 +2391,20 @@ (define-public cpulimit
`(#:phases (modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda _
(invoke "make" "CC=gcc" "-Csrc")))
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "-Csrc" make-flags)))
(replace 'check
(lambda _
(invoke "make" "CC=gcc" "-Ctests")))
(lambda* (#:key tests? make-flags #:allow-other-keys)
(when tests?
(apply invoke "make" "-Ctests" make-flags))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "src/cpulimit" bin))
#t)))))
#t)))
#:make-flags (list (string-append "CC=" ,(cc-for-target)))))
(home-page "https://github.com/opsengine/cpulimit")
(synopsis "Limit CPU usage")
(description
@ -3355,14 +3375,14 @@ (define-public pfetch
(define-public nnn
(package
(name "nnn")
(version "3.4")
(version "3.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/jarun/nnn/releases/download/v"
version "/nnn-v" version ".tar.gz"))
(sha256
(base32 "189h950m1jjrnhvgcvzk6nj89l58rkxim7bxa0441ssajxpaw0vq"))))
(base32 "1ww18vvfjkvi36rcamw8kpix4bhk71w5bw9kmnh158crah1x8dp6"))))
(build-system gnu-build-system)
(inputs
`(("ncurses" ,ncurses)
@ -3370,15 +3390,23 @@ (define-public nnn
(native-inputs
`(("pkg-config" ,pkg-config)))
(arguments
'(#:tests? #f ; no tests
`(#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)) ; no configure script
(delete 'configure) ; no configure script
(add-after 'unpack 'patch-pkg-config
(lambda _
(substitute* "Makefile"
(("pkg-config")
(or (which "pkg-config")
(string-append ,(%current-target-system)
"-pkg-config"))))
#t)))
#:make-flags
(list
(string-append "PREFIX="
(assoc-ref %outputs "out"))
"CC=gcc")))
(string-append "CC=" ,(cc-for-target)))))
(home-page "https://github.com/jarun/nnn")
(synopsis "Terminal file browser")
(description "@command{nnn} is a fork of @command{noice}, a blazing-fast
@ -3459,9 +3487,9 @@ (define-public masscan
(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

View file

@ -2,7 +2,7 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
;;; Copyright © 2019 Andy Tai <atai@atai.org>
@ -51,7 +51,7 @@ (define-module (gnu packages assembly)
#:use-module (gnu packages shells)
#:use-module (gnu packages xml)
#:use-module ((guix utils)
#:select (%current-system)))
#:select (%current-system cc-for-target)))
(define-public nasm
(package
@ -276,13 +276,21 @@ (define-public rgbds
`(#: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

View file

@ -3840,9 +3840,9 @@ (define-public dcadec
(build-system gnu-build-system)
(arguments
;; Test files are missing: https://github.com/foo86/dcadec/issues/53
'(#:tests? #f
`(#:tests? #f
#:make-flags
(list "CC=gcc"
(list (string-append "CC=" ,(cc-for-target))
;; Build shared library.
"CONFIG_SHARED=1"
(string-append "PREFIX=" (assoc-ref %outputs "out"))
@ -3917,8 +3917,8 @@ (define-public filteraudio
"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

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
@ -33,14 +33,14 @@ (define-module (gnu packages authentication)
(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.

View file

@ -6,7 +6,7 @@
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
@ -392,7 +392,7 @@ (define-public btar
`(("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

View file

@ -2,7 +2,7 @@
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
@ -93,14 +93,18 @@ (define-public transmission
(rename-file (string-append out "/bin/transmission-gtk")
(string-append gui "/bin/transmission-gtk"))
;; Move the '.desktop' and icon files as well.
(mkdir (string-append gui "/share"))
(for-each
(lambda (dir)
(rename-file (string-append out "/share/" dir)
(string-append gui "/share/" dir)))
'("applications" "icons" "pixmaps")))
#t)))))
'("appdata" "applications" "icons" "locale" "pixmaps"))
(mkdir-p (string-append gui "/share/man/man1"))
(rename-file
(string-append out "/share/man/man1/transmission-gtk.1")
(string-append gui "/share/man/man1/transmission-gtk.1"))
#t))))))
(inputs
`(("libevent" ,libevent)
("curl" ,curl)
@ -355,7 +359,7 @@ (define-public mktorrent
(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"

View file

@ -134,6 +134,19 @@ (define-public grub
(string-append (assoc-ref inputs "console-setup")
"/bin/ckbcomp ")))
#t))
(add-after 'unpack 'set-freetype-variables
;; These variables need to be set to the native versions
;; of the dependencies because they are used to build
;; programs which are executed during build time.
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(let ((freetype (assoc-ref (or native-inputs inputs) "freetype")))
(setenv "BUILD_FREETYPE_LIBS"
(string-append "-L" freetype
"/lib -lfreetype"))
(setenv "BUILD_FREETYPE_CFLAGS"
(string-append "-I" freetype
"/include/freetype2")))
#t))
(add-before 'check 'disable-flaky-test
(lambda _
;; This test is unreliable. For more information, see:
@ -150,10 +163,11 @@ (define-public grub
(("test_unset grub_func_test")
"test_unset"))
#t)))
;; Disable tests on ARM and AARCH64 platforms.
#:tests? ,(not (any (cute string-prefix? <> (or (%current-target-system)
(%current-system)))
'("arm" "aarch64")))))
;; Disable tests on ARM and AARCH64 platforms or when cross-compiling.
#:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system)
(%current-system)))
'("arm" "aarch64"))
(%current-target-system)))))
(inputs
`(("gettext" ,gettext-minimal)
@ -195,6 +209,7 @@ (define-public grub
("flex" ,flex)
("texinfo" ,texinfo)
("help2man" ,help2man)
("freetype" ,freetype) ; native version needed for build-grub-mkfont
;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils
;; capable of assembling 64-bit instructions. However, our default
@ -425,7 +440,7 @@ (define-public dtc
`(("python" ,python)))
(arguments
`(#:make-flags
(list "CC=gcc"
(list (string-append "CC=" ,(cc-for-target))
;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1.
(string-append "LDFLAGS=-Wl,-rpath="
@ -436,6 +451,15 @@ (define-public dtc
"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")

View file

@ -11,6 +11,7 @@
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -67,7 +68,7 @@ (define-public bam
"13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags `("CC=gcc"
`(#:make-flags `(,(string-append "CC=" ,(cc-for-target))
,(string-append "INSTALL_PREFIX="
(assoc-ref %outputs "out")))
#:test-target "test"
@ -252,7 +253,7 @@ (define-public premake4
(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

View file

@ -3,7 +3,7 @@
;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@ -28,6 +28,7 @@
(define-module (gnu packages c)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@ -518,7 +519,8 @@ (define-public unifdef
(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)))

View file

@ -849,9 +849,9 @@ (define-public squashfs-tools
"0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target
`(#:tests? #f ; no check target
#:make-flags
(list "CC=gcc"
(list (string-append "CC=" ,(cc-for-target))
"XZ_SUPPORT=1"
"LZO_SUPPORT=1"
"LZ4_SUPPORT=1"
@ -956,7 +956,8 @@ (define-public bsdiff
"0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list "INSTALL=install" "CC=gcc"
`(#:make-flags (list "INSTALL=install"
(string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases (modify-phases %standard-phases
(delete 'configure)
@ -1426,7 +1427,10 @@ (define-public zstd
#t))))
#:make-flags
(list "CC=gcc"
;; TODO: Integrate in next rebuild cycle.
(list ,(if (%current-target-system)
(string-append "CC=" (cc-for-target))
"CC=gcc")
(string-append "PREFIX=" (assoc-ref %outputs "out"))
(string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib")
(string-append "INCLUDEDIR=" (assoc-ref %outputs "lib") "/include")
@ -1458,8 +1462,14 @@ (define-public pzstd
(version (package-version zstd))
(source (package-source zstd))
(build-system gnu-build-system)
(inputs
`(,@(if (%current-target-system)
`(("googletest" ,googletest))
'())))
(native-inputs
`(("googletest" ,googletest)))
`(,@(if (%current-system)
`(("googletest" ,googletest))
'())))
(arguments
`(#:phases
(modify-phases %standard-phases
@ -1477,7 +1487,8 @@ (define-public pzstd
(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")

View file

@ -194,7 +194,7 @@ (define-public dashel
(define-public xsimd
(package
(name "xsimd")
(version "7.2.3")
(version "7.4.9")
(source
(origin
(method git-fetch)
@ -202,7 +202,7 @@ (define-public xsimd
(url "https://github.com/QuantStack/xsimd")
(commit version)))
(sha256
(base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
(base32 "11by8gbshm4vv6flqp0ihff8c6nmbaqq7ms93b38rrq68bigcply"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
@ -212,11 +212,12 @@ (define-public xsimd
`(("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

View file

@ -5,7 +5,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@ -444,15 +444,14 @@ (define-public ssss
(define-public tomb
(package
(name "tomb")
(version "2.7")
(version "2.8")
(source (origin
(method url-fetch)
(uri (string-append "https://files.dyne.org/tomb/"
(uri (string-append "https://files.dyne.org/tomb/releases/"
"Tomb-" version ".tar.gz"))
(sha256
(base32
"0x3al02796vx1cvy6y6h685c367qx70dwv471g0hmks2gr10f0cn"))
(patches (search-patches "tomb-fix-errors-on-open.patch"))))
"0bggzzqmpfiknr76lyl8iszybrcpyqlbgiqk47fxq08h2b5ln1ic"))))
(build-system gnu-build-system)
(native-inputs `(("sudo" ,sudo))) ;presence needed for 'check' phase
(inputs
@ -1230,7 +1229,7 @@ (define-public minisign
(define-public libolm
(package
(name "libolm")
(version "3.1.5")
(version "3.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1238,15 +1237,16 @@ (define-public libolm
(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

View file

@ -49,7 +49,7 @@ (define-module (gnu packages cups)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix svn-download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
@ -797,27 +797,32 @@ (define-public escpr
(license license:gpl2+)))
(define-public splix
;; The last release was in 2009. The SVN repository contains 5 years of
;; unreleased bug fixes and support for newer printer models.
(let ((revision 315))
;; Last released in 2009 <https://sourceforge.net/projects/splix/files/>.
;; Last SVN commit was 2013 <https://svn.code.sf.net/p/splix/code/splix/>.
;; Use a more maintained fork with several bug fixes and support for newer
;; printer models.
(let ((commit "76268c4dd7dbc8218ea7426401104c3b40cc707a")
(revision "315"))
(package
(name "splix")
(version (string-append "2.0.0-" (number->string revision)))
(version (git-version "2.0.0" revision commit))
(source
(origin
(method svn-fetch)
(uri (svn-reference
(url "https://svn.code.sf.net/p/splix/code/splix/")
(revision revision)))
(file-name (string-append name "-" version "-checkout"))
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/ScumCoder/splix")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "16wbm4xnz35ca3mw2iggf5f4jaxpyna718ia190ka6y4ah932jxl"))))
(base32 "1mxsvllwwr1v8sgrax0b7gkajjhnm0l06s67spmaxz47lyll1qab"))))
(build-system gnu-build-system)
;; 90% (3.8 MiB) of output are .ppd files. Don't install them by default:
;; CUPS has been able to read the .drv sources directly since version 1.2.
;; PPDs have been obsolete since CUPS 1.2 and make up 90% of total size.
(outputs (list "out" "ppd"))
(arguments
'(#:make-flags
`(#:modules
((srfi srfi-26)
,@%gnu-build-system-modules)
#:make-flags
(list (string-append "CUPSDRV="
(assoc-ref %outputs "out") "/share/cups/drv")
(string-append "CUPSFILTER="
@ -828,21 +833,28 @@ (define-public splix
"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,

View file

@ -1308,12 +1308,12 @@ (define-public recutils
(native-inputs `(("bc" ,bc)
("bash:include" ,bash "include")
("check" ,check-0.14)
("libuuid" ,util-linux)
("pkg-config" ,pkg-config)))
;; TODO: Add more optional inputs.
(inputs `(("curl" ,curl)
("libgcrypt" ,libgcrypt)))
("libgcrypt" ,libgcrypt)
("libuuid" ,util-linux "lib")))
(synopsis "Manipulate plain text files as databases")
(description
"GNU Recutils is a set of tools and libraries for creating and
@ -2421,17 +2421,16 @@ (define-public libpqxx
(define-public python-peewee
(package
(name "python-peewee")
(version "3.13.3")
(version "3.14.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "peewee" version))
(sha256
(base32
"0sc376v6rxga4b7ic9kxw2pmf28rmcx016320pa2nlb5d1rsjs8j"))))
(base32 "1yl49gxrg0c2x3n3r60z3lixw9am8b61s0477l9vjabhhx1yziar"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; Fails to import test data
`(#:tests? #f)) ; fails to import test data
(inputs
`(("sqlite" ,sqlite)))
(native-inputs
@ -3458,7 +3457,7 @@ (define-public python2-sql
(define-public python-pypika
(package
(name "python-pypika")
(version "0.37.2")
(version "0.44.0")
(source
(origin (method git-fetch)
(uri (git-reference
@ -3467,7 +3466,7 @@ (define-public python-pypika
(file-name (git-file-name name version))
(sha256
(base32
"089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck"))))
"0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard"))))
(build-system python-build-system)
(native-inputs
`(("python-parameterized" ,python-parameterized)))

View file

@ -521,7 +521,7 @@ (define-public f3
(define-public python-parted
(package
(name "python-parted")
(version "3.11.6")
(version "3.11.7")
(source
(origin
(method git-fetch)
@ -530,7 +530,7 @@ (define-public python-parted
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1xgrqhvn44vr3676j5sy2x3xfv2dzf7vncg25cmrsmkbd49x3z5j"))))
(base32 "01193fmkss9icjvqpw85szpk8ld1pnha7p9kqm7mpwk6rc6gi2m3"))))
(build-system python-build-system)
(arguments
`(#:phases

View file

@ -2,6 +2,7 @@
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,9 +27,15 @@ (define-module (gnu packages djvu)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages autotools)
#:use-module (gnu packages check)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages linux)
#:use-module (gnu packages pdf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages xorg))
@ -112,3 +119,44 @@ (define-public djview
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)))

View file

@ -275,7 +275,7 @@ (define-public tipp10
(define-public snap
(package
(name "snap")
(version "6.3.1")
(version "6.3.3")
(source
(origin
(method git-fetch)
@ -284,7 +284,7 @@ (define-public snap
(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))

View file

@ -1871,12 +1871,12 @@ (define-public emacs-aggressive-indent
(license license:gpl2+)))
(define-public emacs-gcmh
;; No tagged release upstream.
(let ((commit "84c43a4c0b41a595ac6e299fa317d2831813e580")
(revision "0"))
;; No tagged release upstream, but the commit below correspond to the 0.2.1
;; release.
(let ((commit "0089f9c3a6d4e9a310d0791cf6fa8f35642ecfd9"))
(package
(name "emacs-gcmh")
(version (git-version "0.1" revision commit))
(version "0.2.1")
(source
(origin
(method git-fetch)
@ -1884,7 +1884,7 @@ (define-public emacs-gcmh
(url "https://gitlab.com/koral/gcmh")
(commit commit)))
(sha256
(base32 "1r3wiqhrzh7wvqy484nl031fd4bn4cpvkv9646s4cjgvnnnv7jz3"))
(base32 "0yh1ap8phv3x44rp0yr6z884xqw2apanbx4c0acqglvj0gaaqx25"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(home-page "https://gitlab.com/koral/gcmh")
@ -2604,14 +2604,14 @@ (define-public emacs-tablist
(define-public emacs-djvu
(package
(name "emacs-djvu")
(version "1.1")
(version "1.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"djvu-" version ".el"))
(sha256
(base32 "0njgyx09q225hliacsnjk8wallg5i6xkz6bj501pb05nwqfbvfk7"))))
(base32 "0z2qk1v4qkvcwl27ycqfb8vyszq5v6b8ci29b4la00yaki16p04i"))))
(build-system emacs-build-system)
(inputs `(("djview" ,djview)
("djvulibre" ,djvulibre)))
@ -8904,7 +8904,7 @@ (define-public emacs-wgrep
(define-public emacs-helm
(package
(name "emacs-helm")
(version "3.6.5")
(version "3.7.0")
(source
(origin
(method git-fetch)
@ -8913,7 +8913,7 @@ (define-public emacs-helm
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0yzpb84346v42ig4h0rsnvzmln58ilhc0gsq0ggc7038ypqkdw4d"))))
(base32 "0lxq13bsbh7xawgsq08kjm7s28x9yl8mid3538flv5kcc1rv2b9y"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@ -11371,6 +11371,35 @@ (define-public emacs-cnfonts
configuration of Chinese fonts.")
(license license:gpl2+)))
(define-public emacs-boon
(package
(name "emacs-boon")
(version "1.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jyp/boon")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1ss9bjs34q41pa0g0nbdzd8fwpjcbd2239rdlx5aykfv9v0b8j77"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-expand-region" ,emacs-expand-region)
("emacs-multiple-cursors" ,emacs-multiple-cursors)
("emacs-powerline" ,emacs-powerline)
("emacs-spaceline" ,emacs-spaceline)))
(home-page "https://github.com/jyp/boon")
(synopsis "Ergonomic command mode for Emacs")
(description "Boon is a complete package for modal editing with a focus on
ergonomics and modularity. Spacial allocation of keys comes first, mnemonics
second. Most common operations are mapped to the home row, common editing
commands are bound to keys reachable with the left hand and movement keys are
reached with the right hand.")
(license license:gpl3+)))
(define-public emacs-csharp-mode
(package
(name "emacs-csharp-mode")
@ -11494,14 +11523,14 @@ (define-public emacs-pyim
(define-public emacs-posframe
(package
(name "emacs-posframe")
(version "0.8.2")
(version "0.8.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"posframe-" version ".el"))
(sha256
(base32 "1yrk2bnlx5bpkjkzqialf0q4bdp9c5pipnvj3zsb5hbjni24x0yb"))))
(base32 "05m56aw2yxik0pgcvyr5c92j2mwfksxgq1syzvik6161gy8hdd0g"))))
(build-system emacs-build-system)
;; emacs-minimal does not include the function font-info.
(arguments
@ -19428,10 +19457,10 @@ (define-public emacs-ov
(license license:gpl3+)))
(define-public emacs-matrix-client
(let ((commit "a0623667b07a4bf60980c97b078e9faed97ace79"))
(let ((commit "59c792423fd0503f1375f356bec56130e65d3b51"))
(package
(name "emacs-matrix-client")
(version (git-version "0.0.0" "4" commit))
(version (git-version "0.0.0" "5" commit))
(source (origin
(method git-fetch)
(uri (git-reference
@ -19440,7 +19469,7 @@ (define-public emacs-matrix-client
(file-name (git-file-name name version))
(sha256
(base32
"1zya8id3y9wzjaj7nplq7br6nhm3lsskv0fkn1xr1y77fzcfgcdb"))))
"1gmpw14q9zkvviqpnmvh5vbyxk42038yilxm6b2zqw7mwxfc1xra"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@ -23538,6 +23567,29 @@ (define-public emacs-frames-only-mode
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")

View file

@ -1024,8 +1024,8 @@ (define-public binutils-vc4
(home-page "https://github.com/puppeh/vc4-toolchain/"))))
(define-public gcc-vc4
(let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2")
(xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4)))
(let ((commit "0fe4b83897341742f9df65797474cb0feab4b377")
(xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4)))
(package (inherit xgcc)
(name "gcc-vc4")
(source (origin
@ -1039,7 +1039,10 @@ (define-public gcc-vc4
"-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)))

View file

@ -108,7 +108,7 @@ (define-module (gnu packages finance)
(define-public bitcoin-core
(package
(name "bitcoin-core")
(version "0.19.1")
(version "0.20.1")
(source (origin
(method url-fetch)
(uri
@ -116,11 +116,13 @@ (define-public bitcoin-core
version "/bitcoin-" version ".tar.gz"))
(sha256
(base32
"1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj"))
(patches (search-patches "bitcoin-core-python-compat.patch"))))
"0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)
("python" ,python) ; for the tests
("util-linux" ,util-linux) ; provides the hexdump command for tests
("qttools" ,qttools)))
@ -130,7 +132,6 @@ (define-public bitcoin-core
("libevent" ,libevent)
("miniupnpc" ,miniupnpc)
("openssl" ,openssl)
("protobuf" ,protobuf)
("qtbase" ,qtbase)))
(arguments
`(#:configure-flags
@ -154,6 +155,13 @@ (define-public bitcoin-core
;; 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

View file

@ -444,7 +444,7 @@ (define-public python-xsge
(define-public tiled
(package
(name "tiled")
(version "1.2.5")
(version "1.4.2")
(source (origin
(method git-fetch)
(uri (git-reference
@ -453,10 +453,11 @@ (define-public tiled
(file-name (git-file-name name version))
(sha256
(base32
"14v2zfka2y3h0r0biw1rl59585lji5074x958s4xnb352jm5h9b9"))))
"0nhmv5rnmlnnmkiz95l3iy62f3754d98dm1wyh1m47xb3nbnl05b"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qtsvg" ,qtsvg)
("zlib" ,zlib)))
(native-inputs
@ -1842,7 +1843,7 @@ (define-public guile3.0-chickadee
(define-public bennu-game-development
(package
(name "bennu-game-development")
(version "348")
(version "353")
(source (origin
(method svn-fetch)
(uri (svn-reference
@ -1851,7 +1852,7 @@ (define-public bennu-game-development
(file-name (string-append name "-" version))
(sha256
(base32
"0wpzsbh4zi3931493dnyl5ffmh1b7fj2sx3mzrq304z9zs4d6lqq"))
"1iri58ryk9lbqn585cbccnvrfkj8qxlbcsk8rpih40jhvs1j101l"))
(modules '((guix build utils)))
(snippet
'(begin

View file

@ -1605,7 +1605,14 @@ (define-public gnubg
(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)

View file

@ -181,6 +181,7 @@ (define glib
(package
(name "glib")
(version "2.62.6")
(replacement glib-with-gio-patch)
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/"
@ -387,11 +388,20 @@ (define pattern+procs
(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

View file

@ -9552,19 +9552,21 @@ (define-public gnome-shell-extensions
(define-public arc-theme
(package
(name "arc-theme")
(version "20190917")
(version "20201013")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/NicoHood/arc-theme")
(url "https://github.com/jnsh/arc-theme")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1qgpk4p2hi5hd4yy0hj93kq1vs0b32wb8qkaj1wi90c8gwddq5wa"))))
"1x2l1mwjx68dwf3jb1i90c1q8nqsl1wf2zggcn8im6590k5yv39s"))))
(build-system gnu-build-system)
(arguments
'(#:phases
'(#:configure-flags
(list "--disable-cinnamon")
#:phases
(modify-phases %standard-phases
;; autogen.sh calls configure at the end of the script.
(replace 'bootstrap
@ -10889,7 +10891,7 @@ (define-public terminator
(define-public libhandy
(package
(name "libhandy")
(version "1.0.0")
(version "1.0.2")
(source
(origin
(method git-fetch)
@ -10898,7 +10900,7 @@ (define-public libhandy
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "193y09yy0302x8fkyrnq591m805xp68bkd93fl5qggxi52k8pj0v"))))
(base32 "1bmmkahshvlvpsnb7zp8bddv7i1h5k4p967n6kxh71g1vnj8x20m"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags
@ -10927,7 +10929,7 @@ (define-public libhandy
;; Test suite dependencies.
("xorg-server" ,xorg-server-for-tests)
("hicolor-icon-theme" ,hicolor-icon-theme)))
(home-page "https://source.puri.sm/Librem5/libhandy")
(home-page "https://gitlab.gnome.org/GNOME/libhandy/")
(synopsis "Library full of GTK+ widgets for mobile phones")
(description "The aim of the handy library is to help with developing user
interfaces for mobile devices using GTK+. It provides responsive GTK+ widgets
@ -11913,7 +11915,7 @@ (define-public gnome-builder
(define-public komikku
(package
(name "komikku")
(version "0.21.1")
(version "0.22.1")
(source
(origin
(method git-fetch)
@ -11923,7 +11925,7 @@ (define-public komikku
(file-name (git-file-name name version))
(sha256
(base32
"17ss5k2hnymk6xyx1dy3q0y2pwcld78cw7d0cs9c0hnhskh5dirh"))))
"0ds4j542zprbyh36qyii1c9mb7kj14cvrfk5miqjvp8y4b5i6mdi"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t

View file

@ -2,6 +2,7 @@
;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,15 +31,14 @@ (define-module (gnu packages gnu-pw-mgr)
(define-public gnu-pw-mgr
(package
(name "gnu-pw-mgr")
(version "2.7")
(version "2.7.4")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-"
version ".tar.xz"))
(sha256
(base32
"1ra8in91qx6n8jydb8kwl2rnqaa2hix5pyawn6nvyqs815h9gx17"))))
(base32 "0fhwvsmsqpw0vnivarfg63l8pgwqfv7d5wi6l80jpb41dj6qpjz8"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -50,7 +50,7 @@ (define-public gnu-pw-mgr
#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)))))

View file

@ -401,13 +401,13 @@ (define-public gnupg-1
(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)))

View file

@ -550,8 +550,8 @@ (define* (computed-origin-method gexp-promise hash-algo hash
#:system system
#:guile-for-build guile)))
(define %icecat-version "78.4.1-guix0-preview1")
(define %icecat-build-id "20201110000000") ;must be of the form YYYYMMDDhhmmss
(define %icecat-version "78.5.0-guix0-preview1")
(define %icecat-build-id "20201117000000") ;must be of the form YYYYMMDDhhmmss
;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@ -573,11 +573,11 @@ (define icecat-source
"firefox-" upstream-firefox-version ".source.tar.xz"))
(sha256
(base32
"0q57b0s6xhps4dzp2cih4ajdj6hdas0j6jx0sidzj72vjzfywy0r"))))
"1442yjmwz69hkfcvh8kkb60jf4c9ms0pac04nc3xw2da13v4zxai"))))
(upstream-icecat-base-version "78.4.1") ; maybe older than base-version
(upstream-icecat-base-version "78.5.0") ; maybe older than base-version
;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
(gnuzilla-commit "df2c2e22a0c6ea5b4dcaed52884223bfa6ffacde")
(gnuzilla-commit "bcfe407570cae32d00dd33a268de0e0593166f7b")
(gnuzilla-source
(origin
(method git-fetch)
@ -589,7 +589,7 @@ (define icecat-source
(string-take gnuzilla-commit 8)))
(sha256
(base32
"1y1p2g9xvqsg0im58lhdkrp8z0zlxw6i3qqplqdpbidmjwibmqjz"))))
"1pg8fjjg91qyrv7za585ds1xrdvmybbkf2jmkff107fh5y23lxrg"))))
;; 'search-patch' returns either a valid file name or #f, so wrap it
;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
@ -1161,11 +1161,11 @@ (define-public icecat
(cpe-version . ,(first (string-split version #\-)))))))
;; Update this together with icecat!
(define %icedove-build-id "20201021000000") ;must be of the form YYYYMMDDhhmmss
(define %icedove-build-id "20201111000000") ;must be of the form YYYYMMDDhhmmss
(define-public icedove
(package
(name "icedove")
(version "78.4.0")
(version "78.4.3")
(source icecat-source)
(properties
`((cpe-name . "thunderbird_esr")))
@ -1445,7 +1445,7 @@ (define-public icedove
;; in the Thunderbird release tarball. We don't use the release
;; tarball because it duplicates the Icecat sources and only adds the
;; "comm" directory, which is provided by this repository.
,(let ((changeset "d5c3faff83924f56859ea4584eb0610c68a0cafa"))
,(let ((changeset "6ee1d79f9e77c90f0f165b9315b5b437a220b665"))
(origin
(method hg-fetch)
(uri (hg-reference
@ -1454,7 +1454,7 @@ (define-public icedove
(file-name (string-append "thunderbird-" version "-checkout"))
(sha256
(base32
"146vp5048j5drzyvmsj9v34ifqcywr1gikwh4f1z4l9zad7b09rs")))))
"0m6isazpirmviv14kjav8jn3w3gm3mls0qwyf1n87hj00bj6z6jc")))))
("autoconf" ,autoconf-2.13)
("cargo" ,rust-1.41 "cargo")
("clang" ,clang)

View file

@ -431,14 +431,14 @@ (define-public autotrace
(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))))

View file

@ -451,14 +451,14 @@ (define-public mujs
(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

View file

@ -64,13 +64,16 @@ (define-public lua
(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)

View file

@ -38,6 +38,7 @@
;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -63,6 +64,7 @@ (define-module (gnu packages mail)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages calendar)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@ -107,6 +109,7 @@ (define-module (gnu packages mail)
#:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages ninja)
#:use-module (gnu packages openldap)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages pcre)
@ -114,6 +117,7 @@ (define-module (gnu packages mail)
#:use-module (gnu packages perl-check)
#:use-module (gnu packages perl-web)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
@ -593,12 +597,15 @@ (define-public gmime
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("gnupg" ,gnupg))) ; for tests only
("gnupg" ,gnupg) ; for tests only
("gobject-introspection" ,gobject-introspection)))
(inputs `(("glib" ,glib)
("gpgme" ,gpgme)
("zlib" ,zlib)))
(arguments
`(#:phases
`(#:configure-flags
(list "--enable-introspection=yes")
#:phases
(modify-phases %standard-phases
(add-after
'unpack 'patch-paths-in-tests
@ -700,6 +707,118 @@ (define-public altermime
(license (list (license:non-copyleft "file://LICENSE")
license:bsd-3))))
(define-public astroid
(package
(name "astroid")
(version "0.15")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/astroidmail/astroid")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "11cxbva9ni98gii59xmbxh4c6idcg3mg0pgdsp1c3j0yg7ix0lj3"))
(modules '((guix build utils)))
(snippet
'(begin
;; https://github.com/astroidmail/astroid/pull/685
(substitute* "tests/test_composed_message.cc"
(("\\\\n\\.\\.\\.") "\\n...\\n"))
#t))))
(build-system cmake-build-system)
(arguments
`(#:modules ((guix build cmake-build-system)
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build utils)
(ice-9 match))
#:imported-modules ((guix build glib-or-gtk-build-system)
,@%cmake-build-system-modules)
#:configure-flags (list "-GNinja")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'skip-markdown-test
;; This test relies on the plugins and the test suite
;; cannot find the Astroid module.
;; gi.require_version ('Astroid', '0.2')
;; ValueError: Namespace Astroid not available
(lambda _
(substitute* "tests/CMakeLists.txt"
((".*markdown.*") ""))
#t))
(replace 'build
(lambda _
(invoke "ninja" "-j" (number->string (parallel-job-count)))))
(add-before 'check 'start-xserver
(lambda* (#:key inputs #:allow-other-keys)
(let ((xorg-server (assoc-ref inputs "xorg-server")))
(setenv "HOME" (getcwd))
(system (format #f "~a/bin/Xvfb :1 &" xorg-server))
(setenv "DISPLAY" ":1")
#t)))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "CTEST_OUTPUT_ON_FAILURE" "1")
(invoke "ctest" "."))
#t))
(replace 'install
(lambda _
(invoke "ninja" "install")))
(add-after 'install 'wrap-with-GI_TYPELIB_PATH
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(paths (map (match-lambda
((outputs . directory)
(let ((girepodir (string-append
directory
"/lib/girepository-1.0")))
(if (file-exists? girepodir)
girepodir
#f))))
inputs)))
(wrap-program (string-append out "/bin/astroid")
`("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
#t))
(add-after 'install 'glib-or-gtk-compile-schemas
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
(add-after 'install 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
(native-inputs
`(("glib-networking" ,glib-networking)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gnupg" ,gnupg)
("ninja" ,ninja)
("pkg-config" ,pkg-config)
("ronn" ,ronn)
("w3m" ,w3m)
("xorg-server" ,xorg-server)))
(inputs
`(("boost" ,boost)
("gmime" ,gmime)
("gobject-introspection" ,gobject-introspection) ; it is referenced
("gtkmm" ,gtkmm)
("libpeas" ,libpeas)
("libsass" ,libsass)
("notmuch" ,notmuch)
("protobuf" ,protobuf)
("python" ,python-wrapper)
("python-pygobject" ,python-pygobject)
("webkitgtk" ,webkitgtk)))
(propagated-inputs
`(("adwaita-icon-theme" ,adwaita-icon-theme))) ; Required for the thread view
(home-page "https://astroidmail.github.io/")
(synopsis "GTK frontend to the notmuch mail system")
(description
"Astroid is a lightweight and fast Mail User Agent that provides a
graphical interface to searching, display and composing email, organized in
thread and tags. Astroid uses the notmuch backend for searches through tons of
email. Astroid searches, displays and compose emails and relies on other
programs for fetching, syncing and sending email.")
(license (list license:gpl3+ ; 'this program'
license:lgpl2.1+)))) ; code from geary, gmime
(define-public ripmime
;; Upstream does not tag or otherwise provide any releases (only a version
;; number in the source)
@ -2482,17 +2601,68 @@ (define-public mb2md
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)))

View file

@ -41,6 +41,7 @@
;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -306,13 +307,13 @@ (define-public python2-cvxopt
(define-public units
(package
(name "units")
(version "2.19")
(version "2.21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/units/units-" version
".tar.gz"))
(sha256 (base32
"0mk562g7dnidjgfgvkxxpvlba66fh1ykmfd9ylzvcln1vxmi6qj2"))))
"1bybhqs4yrly9myb5maz3kdmf8k4fhk2m1d5cbcryn40z6lq0gkc"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline)
@ -4716,7 +4717,7 @@ (define-public jacal
(define-public z3
(package
(name "z3")
(version "4.8.8")
(version "4.8.9")
(home-page "https://github.com/Z3Prover/z3")
(source (origin
(method git-fetch)
@ -4725,7 +4726,7 @@ (define-public z3
(file-name (git-file-name name version))
(sha256
(base32
"1rn538ghqwxq0v8i6578j8mflk6fyv0cp4hjfqynzvinjbps56da"))))
"1hnbzq10d23drd7ksm3c1n2611c3kd0q0yxgz8y78zaafwczvwxx"))))
(build-system gnu-build-system)
(arguments
`(#:imported-modules ((guix build python-build-system)

View file

@ -158,7 +158,7 @@ (define-public nagios
(define-public zabbix-agentd
(package
(name "zabbix-agentd")
(version "5.2.0")
(version "5.2.1")
(source
(origin
(method url-fetch)
@ -166,7 +166,7 @@ (define-public zabbix-agentd
"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

View file

@ -141,6 +141,34 @@ (define-module (gnu packages networking)
#:use-module (gnu packages xml)
#:use-module (ice-9 match))
(define-public axel
(package
(name "axel")
(version "2.17.9")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/axel-download-accelerator/axel/"
"releases/download/v" version "/"
"axel-" version ".tar.xz"))
(sha256
(base32 "0m1smb9rmw9w2fcfcf0162qyffx6a1x0j612sg3fydflandlsdpi"))))
(build-system gnu-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config)))
(inputs
`(("libressl" ,libressl)))
(home-page "https://github.com/axel-download-accelerator/axel")
(synopsis "Light command line download accelerator")
(description
"Axel tries to accelerate the download process by using multiple
connections per file, and can also balance the load between different
servers. It tries to be as light as possible, so it might be useful
on byte-critical systems. It supports HTTP, HTTPS, FTP and FTPS
protocols.")
(license license:gpl2+)))
;; This package does not have a release yet.
;; But this is required to provide a feature in PipeWire.
(define-public libcamera
@ -2142,14 +2170,14 @@ (define-public proxychains-ng
(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)))

View file

@ -207,14 +207,14 @@ (define-public node
(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)))))

View file

@ -5802,7 +5802,9 @@ (define-public ocaml-cairo2
"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)

View file

@ -130,9 +130,9 @@ (define-public guix
;; Latest version of Guix, which may or may not correspond to a release.
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "1.1.0")
(commit "5e7cf66fb35780f930ad0bc5fe21ac330df4411d")
(revision 32))
(let ((version "1.2.0rc1")
(commit "3ba6ffd0dd092ae879d014e4971989f231eaa56d")
(revision 1))
(package
(name "guix")
@ -148,7 +148,7 @@ (define-public guix
(commit commit)))
(sha256
(base32
"15clfjp845gvl0p6qw0b1gdibqfq20zwzr6dbxvq8l9fgzj1kb6b"))
"1wa67gdipmzqr400hp0cw5ih0rlfvj345h65rqbk9s4g3bkg38hm"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@ -336,7 +336,13 @@ (define code
(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

View file

@ -1,28 +0,0 @@
Get rid of deprecation warning emitted by Python 3.8, which causes a test failure(!).
https://github.com/bitcoin/bitcoin/pull/17931
Taken from upstream:
https://github.com/bitcoin/bitcoin/commit/f117fb00da747147cddfb071c1427a2754c278cd
diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py
index 20864881c165..07eacf410d88 100755
--- a/test/functional/p2p_invalid_messages.py
+++ b/test/functional/p2p_invalid_messages.py
@@ -145,13 +145,13 @@ def run_test(self):
def test_magic_bytes(self):
conn = self.nodes[0].add_p2p_connection(P2PDataStore())
- def swap_magic_bytes():
+ async def swap_magic_bytes():
conn._on_data = lambda: None # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes
conn.magic_bytes = b'\x00\x11\x22\x32'
# Call .result() to block until the atomic swap is complete, otherwise
# we might run into races later on
- asyncio.run_coroutine_threadsafe(asyncio.coroutine(swap_magic_bytes)(), NetworkThread.network_event_loop).result()
+ asyncio.run_coroutine_threadsafe(swap_magic_bytes(), NetworkThread.network_event_loop).result()
with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']):
conn.send_message(messages.msg_ping(nonce=0xff))

View file

@ -0,0 +1,15 @@
Fixes a possible buffer overflow. (There are others)
Author: Danny Milosavljevic <dannym@scratchpost.org>
Date: 2020-11-16
--- a/gcc/gimplify.c.orig 2020-10-29 08:45:11.532479774 +0100
+++ b/gcc/gimplify.c 2020-10-29 08:45:49.584637018 +0100
@@ -5229,7 +5229,7 @@
flexibility, split it into separate input and output
operands. */
tree input;
- char buf[10];
+ char buf[12];
/* Turn the in/out constraint into an output constraint. */
char *p = xstrdup (constraint);

View file

@ -0,0 +1,16 @@
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86724
Author: Rainer Jung
Date: 2018-07-29
isl 0.20 stopped including other unused header files in their header files.
Therefore,now it's necessary to include the stuff ourselves.
--- .../gcc/graphite.h 2018-01-03 11:03:58.000000000 +0000
+++ .../gcc/graphite.h 2018-07-29 17:42:55.836121000 +0000
@@ -37,6 +37,8 @@
#include <isl/schedule.h>
#include <isl/ast_build.h>
#include <isl/schedule_node.h>
+#include <isl/id.h>
+#include <isl/space.h>
typedef struct poly_dr *poly_dr_p;

View file

@ -0,0 +1,92 @@
This patch lets GLib's GDesktopAppInfo API watch and notice changes
to the Guix user and system profiles. That way, the list of available
applications shown by the desktop environment is immediately updated
when the user runs "guix install", "guix remove", or "guix system
reconfigure" (see <https://issues.guix.gnu.org/35594>).
It does so by monitoring /var/guix/profiles (for changes to the system
profile) and /var/guix/profiles/per-user/USER (for changes to the user
profile) and crawling their share/applications sub-directory when
changes happen.
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index f1e2fdd..095c110 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -148,6 +148,7 @@ typedef struct
gchar *alternatively_watching;
gboolean is_config;
gboolean is_setup;
+ gchar *guix_profile_watch_dir;
GFileMonitor *monitor;
GHashTable *app_names;
GHashTable *mime_tweaks;
@@ -180,6 +181,7 @@ desktop_file_dir_unref (DesktopFileDir *dir)
{
desktop_file_dir_reset (dir);
g_free (dir->path);
+ g_free (dir->guix_profile_watch_dir);
g_free (dir);
}
}
@@ -204,6 +206,13 @@ desktop_file_dir_get_alternative_dir (DesktopFileDir *dir)
{
gchar *parent;
+ /* If DIR is a profile, watch the specified directory--e.g.,
+ * /var/guix/profiles/per-user/$USER/ for the user profile. Do not watch
+ * ~/.guix-profile or /run/current-system/profile because GFileMonitor does
+ * not pass IN_DONT_FOLLOW and thus cannot notice any change. */
+ if (dir->guix_profile_watch_dir != NULL)
+ return g_strdup (dir->guix_profile_watch_dir);
+
/* If the directory itself exists then we need no alternative. */
if (g_access (dir->path, R_OK | X_OK) == 0)
return NULL;
@@ -249,11 +258,11 @@ desktop_file_dir_changed (GFileMonitor *monitor,
*
* If this is a notification for a parent directory (because the
* desktop directory didn't exist) then we shouldn't fire the signal
- * unless something actually changed.
+ * unless something actually changed or it's in /var/guix/profiles.
*/
g_mutex_lock (&desktop_file_dir_lock);
- if (dir->alternatively_watching)
+ if (dir->alternatively_watching && dir->guix_profile_watch_dir == NULL)
{
gchar *alternative_dir;
@@ -1555,6 +1564,32 @@ desktop_file_dirs_lock (void)
for (i = 0; dirs[i]; i++)
g_ptr_array_add (desktop_file_dirs, desktop_file_dir_new (dirs[i]));
+ {
+ /* Monitor the system and user profile under /var/guix/profiles and
+ * treat modifications to them as if they were modifications to their
+ * /share sub-directory. */
+ const gchar *user;
+ DesktopFileDir *system_profile_dir, *user_profile_dir;
+
+ system_profile_dir =
+ desktop_file_dir_new ("/var/guix/profiles/system/profile/share");
+ system_profile_dir->guix_profile_watch_dir = g_strdup ("/var/guix/profiles");
+ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (system_profile_dir));
+
+ user = g_get_user_name ();
+ if (user != NULL)
+ {
+ gchar *profile_dir, *user_data_dir;
+
+ profile_dir = g_build_filename ("/var/guix/profiles/per-user", user, NULL);
+ user_data_dir = g_build_filename (profile_dir, "guix-profile", "share", NULL);
+ user_profile_dir = desktop_file_dir_new (user_data_dir);
+ user_profile_dir->guix_profile_watch_dir = profile_dir;
+ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (user_profile_dir));
+ g_free (user_data_dir);
+ }
+ }
+
/* The list of directories will never change after this, unless
* g_get_user_config_dir() changes due to %G_TEST_OPTION_ISOLATE_DIRS. */
desktop_file_dirs_config_dir = user_config_dir;

View file

@ -25,7 +25,7 @@ index 8be2362..48716f2 100755
-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
-gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-echo -n 1978eedd975b1cf95bd4a04b2381560d1ad9a4223032717f23fac26e3458a760 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
-echo -n 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
-
-echo Extracting Firefox tarball
-tar -xf firefox-${FFVERSION}esr.source.tar.xz
@ -37,7 +37,7 @@ index 8be2362..48716f2 100755
+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
+# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
+# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
+# echo -n 1978eedd975b1cf95bd4a04b2381560d1ad9a4223032717f23fac26e3458a760 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+# echo -n 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+#
+# echo Extracting Firefox tarball
+# tar -xf firefox-${FFVERSION}esr.source.tar.xz

View file

@ -1,642 +0,0 @@
Fix build with Poppler 0.86.
The original series of patches authored by Craig Bradney <mrb@scribus.info>
and Jean Ghali <jghali@libertysurf.fr>, taken from
https://gitweb.gentoo.org/repo/gentoo.git/tree/app-office/scribus/files
diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp
--- a/scribus/plugins/import/pdf/importpdf.cpp
+++ b/scribus/plugins/import/pdf/importpdf.cpp
@@ -75,7 +75,11 @@ PdfPlug::PdfPlug(ScribusDoc* doc, int flags)
QImage PdfPlug::readThumbnail(const QString& fName)
{
QString pdfFile = QDir::toNativeSeparators(fName);
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)
+ globalParams.reset(new GlobalParams());
+#else
globalParams = new GlobalParams();
+#endif
if (globalParams)
{
#if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0)
@@ -90,7 +94,9 @@ QImage PdfPlug::readThumbnail(const QString& fName)
if (pdfDoc->getErrorCode() == errEncrypted)
{
delete pdfDoc;
+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)
delete globalParams;
+#endif
return QImage();
}
if (pdfDoc->isOk())
@@ -134,11 +140,15 @@ QImage PdfPlug::readThumbnail(const QString& fName)
image.setText("YSize", QString("%1").arg(h));
delete dev;
delete pdfDoc;
+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)
delete globalParams;
+#endif
return image;
}
delete pdfDoc;
+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)
delete globalParams;
+#endif
}
}
return QImage();
@@ -387,7 +397,11 @@ bool PdfPlug::convert(const QString& fn)
qApp->processEvents();
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)
+ globalParams.reset(new GlobalParams());
+#else
globalParams = new GlobalParams();
+#endif
GooString *userPW = nullptr;
if (globalParams)
{
@@ -429,7 +443,9 @@ bool PdfPlug::convert(const QString& fn)
if (progressDialog)
progressDialog->close();
delete pdfDoc;
+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)
delete globalParams;
+#endif
return false;
}
if (progressDialog)
@@ -474,7 +490,9 @@ bool PdfPlug::convert(const QString& fn)
progressDialog->close();
delete optImp;
delete pdfDoc;
+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)
delete globalParams;
+#endif
return false;
}
pageString = optImp->getPagesString();
@@ -838,11 +856,20 @@ bool PdfPlug::convert(const QString& fn)
names = catDict.dictLookup("OpenAction");
if (names.isDict())
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ std::unique_ptr<LinkAction> linkAction;
+ linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI());
+#else
LinkAction *linkAction = nullptr;
linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI());
+#endif
if (linkAction)
{
- LinkJavaScript *jsa = (LinkJavaScript*)linkAction;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) linkAction.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) linkAction;
+#endif
if (jsa->isOk())
{
QString script = UnicodeParsedString(jsa->getScript());
@@ -908,8 +935,12 @@ bool PdfPlug::convert(const QString& fn)
}
delete pdfDoc;
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)
+ globalParams.release();
+#else
delete globalParams;
globalParams = nullptr;
+#endif
// qDebug() << "converting finished";
// qDebug() << "Imported" << Elements.count() << "Elements";
@@ -1046,3 +1077,43 @@ QString PdfPlug::UnicodeParsedString(POPPLER_CONST GooString *s1)
}
return result;
}
+
+QString PdfPlug::UnicodeParsedString(const std::string& s1)
+{
+ if (s1.length() == 0)
+ return QString();
+ GBool isUnicode;
+ int i;
+ Unicode u;
+ QString result;
+ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff))
+ {
+ isUnicode = gTrue;
+ i = 2;
+ result.reserve((s1.length() - 2) / 2);
+ }
+ else
+ {
+ isUnicode = gFalse;
+ i = 0;
+ result.reserve(s1.length());
+ }
+ while (i < s1.length())
+ {
+ if (isUnicode)
+ {
+ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff);
+ i += 2;
+ }
+ else
+ {
+ u = s1.at(i) & 0xff;
+ ++i;
+ }
+ // #15616: imagemagick may write unicode strings incorrectly in PDF
+ if (u == 0)
+ continue;
+ result += QChar( u );
+ }
+ return result;
+}
diff --git a/scribus/plugins/import/pdf/importpdf.h b/scribus/plugins/import/pdf/importpdf.h
--- a/scribus/plugins/import/pdf/importpdf.h
+++ b/scribus/plugins/import/pdf/importpdf.h
@@ -82,6 +82,7 @@ private:
bool convert(const QString& fn);
QRectF getCBox(int box, int pgNum);
QString UnicodeParsedString(POPPLER_CONST GooString *s1);
+ QString UnicodeParsedString(const std::string& s1);
QList<PageItem*> Elements;
double baseX, baseY;
diff --git a/scribus/plugins/import/pdf/importpdfconfig.h b/scribus/plugins/import/pdf/importpdfconfig.h
--- a/scribus/plugins/import/pdf/importpdfconfig.h
+++ b/scribus/plugins/import/pdf/importpdfconfig.h
@@ -52,4 +52,16 @@ for which a new license (GPL+exception) is in place.
#define POPPLER_REF
#endif
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 82, 0)
+#define POPPLER_CONST_082 const
+#else
+#define POPPLER_CONST_082
+#endif
+
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)
+#define POPPLER_CONST_083 const
+#else
+#define POPPLER_CONST_083
+#endif
+
#endif
diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp
--- a/scribus/plugins/import/pdf/slaoutput.cpp
+++ b/scribus/plugins/import/pdf/slaoutput.cpp
@@ -308,9 +308,15 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano)
}
/* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano)
+{
+ std::unique_ptr<LinkAction> linkAction;
+#else
LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano)
{
LinkAction *linkAction = nullptr;
+#endif
Object obj;
Ref refa = ano->getRef();
@@ -455,7 +461,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do
POPPLER_CONST GooString *ndst = gto->getNamedDest();
if (ndst)
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);
+#else
LinkDest *dstn = pdfDoc->findDest(ndst);
+#endif
if (dstn)
{
if (dstn->getKind() == destXYZ)
@@ -499,7 +509,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do
POPPLER_CONST GooString *ndst = gto->getNamedDest();
if (ndst)
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);
+#else
LinkDest *dstn = pdfDoc->findDest(ndst);
+#endif
if (dstn)
{
if (dstn->getKind() == destXYZ)
@@ -967,7 +981,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
POPPLER_CONST GooString *ndst = gto->getNamedDest();
if (ndst)
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);
+#else
LinkDest *dstn = pdfDoc->findDest(ndst);
+#endif
if (dstn)
{
if (dstn->getKind() == destXYZ)
@@ -1019,7 +1037,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
POPPLER_CONST GooString *ndst = gto->getNamedDest();
if (ndst)
{
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);
+#else
LinkDest *dstn = pdfDoc->findDest(ndst);
+#endif
if (dstn)
{
if (dstn->getKind() == destXYZ)
@@ -1088,96 +1110,148 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
else
qDebug() << "Found unsupported Action of type" << Lact->getKind();
}
- LinkAction *Aact = SC_getAdditionalAction("D", ano);
+ auto Aact = SC_getAdditionalAction("D", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setD_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("E", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setE_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("X", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setX_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("Fo", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setFo_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("Bl", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setBl_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("C", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setC_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("F", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setF_act(UnicodeParsedString(jsa->getScript()));
@@ -1185,14 +1259,22 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
ite->annotation().setFormat(5);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("K", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setK_act(UnicodeParsedString(jsa->getScript()));
@@ -1200,21 +1282,33 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
ite->annotation().setFormat(5);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
Aact = SC_getAdditionalAction("V", ano);
if (Aact)
{
if (Aact->getKind() == actionJavaScript)
{
- LinkJavaScript *jsa = (LinkJavaScript*)Aact;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();
+#else
+ LinkJavaScript *jsa = (LinkJavaScript*) Aact;
+#endif
if (jsa->isOk())
{
ite->annotation().setV_act(UnicodeParsedString(jsa->getScript()));
ite->annotation().setAAact(true);
}
}
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ Aact.reset();
+#else
Aact = nullptr;
+#endif
}
}
@@ -1224,6 +1318,11 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA)
catalog = catA;
pdfDoc = doc;
updateGUICounter = 0;
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 84, 0)
+ m_fontEngine = new SplashFontEngine(true, true, true, true);
+#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 61, 0)
+ m_fontEngine = new SplashFontEngine(globalParams->getEnableFreeType(), true, true, true);
+#else
m_fontEngine = new SplashFontEngine(
#if HAVE_T1LIB_H
globalParams->getEnableT1lib(),
@@ -1234,6 +1333,7 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA)
true,
#endif
true);
+#endif
}
void SlaOutputDev::startPage(int pageNum, GfxState *, XRef *)
@@ -2784,7 +2884,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, i
delete[] mbuffer;
}
-void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg)
+void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int* maskColors, GBool inlineImg)
{
ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits());
// qDebug() << "Image Components" << colorMap->getNumPixelComps() << "Mask" << maskColors;
@@ -3365,7 +3465,7 @@ err1:
fontsrc->unref();
}
-void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, Unicode *u, int uLen)
+void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, POPPLER_CONST_082 Unicode *u, int uLen)
{
double x1, y1, x2, y2;
int render;
@@ -3452,7 +3552,7 @@ void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, doub
}
}
-GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen)
+GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen)
{
// qDebug() << "beginType3Char";
GfxFont *gfxFont;
@@ -3705,7 +3805,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotColor *color)
return fNam;
}
-QString SlaOutputDev::convertPath(GfxPath *path)
+QString SlaOutputDev::convertPath(POPPLER_CONST_083 GfxPath *path)
{
if (! path)
return QString();
@@ -3715,7 +3815,7 @@ QString SlaOutputDev::convertPath(GfxPath *path)
for (int i = 0; i < path->getNumSubpaths(); ++i)
{
- GfxSubpath * subpath = path->getSubpath(i);
+ POPPLER_CONST_083 GfxSubpath * subpath = path->getSubpath(i);
if (subpath->getNumPoints() > 0)
{
output += QString("M %1 %2").arg(subpath->getX(0)).arg(subpath->getY(0));
@@ -3922,6 +4022,46 @@ QString SlaOutputDev::UnicodeParsedString(POPPLER_CONST GooString *s1)
return result;
}
+QString SlaOutputDev::UnicodeParsedString(const std::string& s1)
+{
+ if (s1.length() == 0)
+ return QString();
+ GBool isUnicode;
+ int i;
+ Unicode u;
+ QString result;
+ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff))
+ {
+ isUnicode = gTrue;
+ i = 2;
+ result.reserve((s1.length() - 2) / 2);
+ }
+ else
+ {
+ isUnicode = gFalse;
+ i = 0;
+ result.reserve(s1.length());
+ }
+ while (i < s1.length())
+ {
+ if (isUnicode)
+ {
+ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff);
+ i += 2;
+ }
+ else
+ {
+ u = s1.at(i) & 0xff;
+ ++i;
+ }
+ // #15616: imagemagick may write unicode strings incorrectly in PDF
+ if (u == 0)
+ continue;
+ result += QChar( u );
+ }
+ return result;
+}
+
bool SlaOutputDev::checkClip()
{
bool ret = false;
diff --git a/scribus/plugins/import/pdf/slaoutput.h b/scribus/plugins/import/pdf/slaoutput.h
--- a/scribus/plugins/import/pdf/slaoutput.h
+++ b/scribus/plugins/import/pdf/slaoutput.h
@@ -20,6 +20,8 @@ for which a new license (GPL+exception) is in place.
#include <QTextStream>
#include <QTransform>
+#include <memory>
+
#include "fpointarray.h"
#include "importpdfconfig.h"
#include "pageitem.h"
@@ -159,7 +161,11 @@ public:
virtual ~SlaOutputDev();
LinkAction* SC_getAction(AnnotWidget *ano);
+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)
+ std::unique_ptr<LinkAction> SC_getAdditionalAction(const char *key, AnnotWidget *ano);
+#else
LinkAction* SC_getAdditionalAction(const char *key, AnnotWidget *ano);
+#endif
static GBool annotations_callback(Annot *annota, void *user_data);
bool handleTextAnnot(Annot* annota, double xCoor, double yCoor, double width, double height);
bool handleLinkAnnot(Annot* annota, double xCoor, double yCoor, double width, double height);
@@ -229,7 +235,7 @@ public:
//----- image drawing
void drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool interpolate, GBool inlineImg) override;
- void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) override;
+ void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int *maskColors, GBool inlineImg) override;
void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
int width, int height,
GfxImageColorMap *colorMap,
@@ -261,8 +267,8 @@ public:
//----- text drawing
void beginTextObject(GfxState *state) override;
void endTextObject(GfxState *state) override;
- void drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, Unicode * /*u*/, int /*uLen*/) override;
- GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, Unicode * /*u*/, int /*uLen*/) override;
+ void drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override;
+ GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override;
void endType3Char(GfxState * /*state*/) override;
void type3D0(GfxState * /*state*/, double /*wx*/, double /*wy*/) override;
void type3D1(GfxState * /*state*/, double /*wx*/, double /*wy*/, double /*llx*/, double /*lly*/, double /*urx*/, double /*ury*/) override;
@@ -282,11 +288,12 @@ private:
void getPenState(GfxState *state);
QString getColor(GfxColorSpace *color_space, POPPLER_CONST_070 GfxColor *color, int *shade);
QString getAnnotationColor(const AnnotColor *color);
- QString convertPath(GfxPath *path);
+ QString convertPath(POPPLER_CONST_083 GfxPath *path);
int getBlendMode(GfxState *state);
void applyMask(PageItem *ite);
void pushGroup(const QString& maskName = "", GBool forSoftMask = gFalse, GBool alpha = gFalse, bool inverted = false);
QString UnicodeParsedString(POPPLER_CONST GooString *s1);
+ QString UnicodeParsedString(const std::string& s1);
bool checkClip();
bool pathIsClosed;
QString CurrColorFill;

View file

@ -1,25 +0,0 @@
Description: Avoid error messages when opening a new tomb
Make sure control file exists and has user ownership before user writes to it.
Author: Sven Geuer <debmaint@g-e-u-e-r.de>
Bug: https://github.com/dyne/Tomb/issues/369
Last-Update: 2019-11-04
--- a/tomb
+++ b/tomb
@@ -2197,14 +2197,15 @@
# {{{ Open
_update_control_file() {
- # replaces a control file with new contents and gives it user ownership
+ # make sure a control file exists, gives it user ownership
+ # and replaces it with new contents
# stdin = contents
# $1 = path to control file
# $2 = contents
[[ "$2" = "" ]] && return 1
_sudo touch "$1"
- print "$2" > "$1"
_sudo chown ${_UID}:${_GID} "$1"
+ print "$2" > "$1"
_verbose "updated control file $1 = $2"
}

View file

@ -1261,7 +1261,7 @@ (define-public pdfgrep
(define-public pdfpc
(package
(name "pdfpc")
(version "4.4.0")
(version "4.4.1")
(source
(origin
(method git-fetch)
@ -1270,7 +1270,7 @@ (define-public pdfpc
(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

View file

@ -26,7 +26,7 @@
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
@ -2898,21 +2898,30 @@ (define-public python-flask-basicauth
(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

View file

@ -90,6 +90,7 @@
;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;;
;;; This file is part of GNU Guix.
;;;
@ -17200,14 +17201,14 @@ (define-public python-semver
(base32
"183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda _
(delete-file "setup.cfg")
(invoke "py.test"))))))
(native-inputs
`(("python-appdirs" ,python-appdirs)
("python-distlib" ,python-distlib)
("python-importlib-metadata" ,python-importlib-metadata)
("python-filelock" ,python-filelock)
("python-six" ,python-six)
("python-tox" ,python-tox)
("python-virtualenv" ,python-virtualenv)))
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/k-bx/python-semver")
(synopsis "Python helper for Semantic Versioning")
(description "This package provides a Python library for
@ -18246,6 +18247,109 @@ (define-public python-gipc
(define-public python2-gipc
(package-with-python2 python-gipc))
(define-public python-beautifultable
(package
(name "python-beautifultable")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "beautifultable" version))
(sha256
(base32
"0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x"))))
(build-system python-build-system)
(propagated-inputs
`(("python-wcwidth" ,python-wcwidth)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-setup.py
(lambda _
(substitute* "setup.py"
(("setup\\(")
"setup(\n test_suite=\"test\",")))))))
(home-page "https://github.com/pri22296/beautifultable")
(synopsis "Print ASCII tables for terminals")
(description "@code{python-beautifultable} provides a class for easily
printing tabular data in a visually appealing ASCII format to a terminal.
Features include, but are not limited to:
@itemize
@item Full customization of the look and feel of the table
@item Row and column accessors.
@item Full support for colors using ANSI sequences or any library.
@item Plenty of predefined styles and option to create custom ones.
@item Support for Unicode characters.
@item Supports streaming table when data is slow to retrieve.
@end itemize")
(license license:expat)))
(define-public python-globber
(package
(name "python-globber")
(version "0.2.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/asharov/globber")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk"))))
(build-system python-build-system)
(home-page "https://github.com/asharov/globber")
(synopsis "Library for string matching with glob patterns")
(description
"Globber is a Python library for matching file names against glob patterns.
In contrast to other glob-matching libraries, it matches arbitrary strings and
doesn't require the matched names to be existing files. In addition, it
supports the globstar @code{**} operator to match an arbitrary number of
path components.")
(license license:asl2.0)))
(define-public python-git-hammer
(package
(name "python-git-hammer")
(version "0.3.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/asharov/git-hammer")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-setup.py
(lambda _
(substitute* "setup.py"
(("setup\\(")
"setup(\n test_suite=\"test\",")))))))
(propagated-inputs
`(("python-beautifultable" ,python-beautifultable)
("python-dateutil" ,python-dateutil)
("python-gitpython" ,python-gitpython)
("python-globber" ,python-globber)
("python-matplotlib" ,python-matplotlib)
("python-sqlalchemy" ,python-sqlalchemy)
("python-sqlalchemy-utils"
,python-sqlalchemy-utils)))
(home-page "https://github.com/asharov/git-hammer")
(synopsis "Provide statistics for git repositories")
(description
"Git Hammer is a statistics tool for projects in git repositories.
Its major feature is tracking the number of lines authored by each person for every
commit, but it also includes some other useful statistics.")
(license license:asl2.0)))
(define-public python-fusepy
(package
(name "python-fusepy")
@ -22533,6 +22637,41 @@ (define-public python-rnc2rng
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")

View file

@ -577,14 +577,14 @@ (define-public gqrx
(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)))

View file

@ -4,6 +4,7 @@
;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -48,16 +49,14 @@ (define-module (gnu packages scribus)
(define-public scribus
(package
(name "scribus")
(version "1.5.5")
(version "1.5.6.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/scribus/scribus-devel/"
version "/scribus-" version ".tar.xz"))
(patches (search-patches "scribus-1.5.5-poppler-0.86-build-fix.patch"))
(sha256
(base32
"0w9zzsiaq3f7vpxybk01c9z2b4qqg67mzpyfb2gjchz8dhdb423r"))))
(base32 "1axp8ffnx3nh6k4s5mfa9gbx8d0yql2azgcampg41ylwafapc9fl"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no test target
@ -99,7 +98,7 @@ (define-public scribus
("openssl" ,openssl)
("podofo" ,podofo)
("poppler" ,poppler)
("python" ,python-2) ;need Python library
("python" ,python) ; need Python library
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("zlib" ,zlib)))

View file

@ -391,6 +391,16 @@ (define-public git
(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.

View file

@ -2188,14 +2188,14 @@ (define-public libvpx
(define-public youtube-dl
(package
(name "youtube-dl")
(version "2020.11.12")
(version "2020.11.17")
(source (origin
(method url-fetch)
(uri (string-append "https://youtube-dl.org/downloads/latest/"
"youtube-dl-" version ".tar.gz"))
(sha256
(base32
"0c98sjaj6mvxnjp0qnwqbr6fibgb4dlizad2xvkiswf4g4h0pc5f"))))
"0b0vsmvnm2jn1k66jmymzly0nb34nk79z97msns0sw0cqhbld1b2"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
@ -2653,7 +2653,7 @@ (define-public srt2vtt
(define-public avidemux
(package
(name "avidemux")
(version "2.7.4")
(version "2.7.6")
(source (origin
(method url-fetch)
(uri (string-append
@ -2661,7 +2661,7 @@ (define-public avidemux
"avidemux_" version ".tar.gz"))
(sha256
(base32
"1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x"))
"1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s"))
(patches (search-patches "avidemux-install-to-lib.patch"))))
(build-system cmake-build-system)
(native-inputs
@ -2679,6 +2679,7 @@ (define-public avidemux
("glu" ,glu)
("jack" ,jack-1)
("lame" ,lame)
("libaom" ,libaom)
("libva" ,libva)
("libvdpau" ,libvdpau)
("libvorbis" ,libvorbis)
@ -2693,7 +2694,7 @@ (define-public avidemux
#:phases
;; Make sure files inside the included ffmpeg tarball are
;; patch-shebanged.
(let ((ffmpeg "ffmpeg-4.1.4"))
(let ((ffmpeg "ffmpeg-4.2.3"))
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'unpack-ffmpeg
(lambda _
@ -3798,7 +3799,7 @@ (define-public atomicparsley
(define-public livemedia-utils
(package
(name "livemedia-utils")
(version "2019.05.29")
(version "2020.11.05")
(source (origin
(method url-fetch)
(uri (string-append
@ -3806,11 +3807,12 @@ (define-public livemedia-utils
version ".tar.gz"))
(sha256
(base32
"08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my"))))
"1dx5imjil5yiya5dqlvbqkvzgic5pybsfilx5jz1cpi1znkzpgc9"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
#:make-flags (list "CC=gcc"
`(#:tests? #f ; no tests
#:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "CXX=" ,(cxx-for-target))
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib")
(string-append "PREFIX="
@ -3825,6 +3827,8 @@ (define-public livemedia-utils
(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

View file

@ -1778,7 +1778,7 @@ (define-public bochs
(define-public xen
(package
(name "xen")
(version "4.13.0")
(version "4.14.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1787,7 +1787,7 @@ (define-public xen
(file-name (git-file-name name version))
(sha256
(base32
"0py50n995gv909i0d1lfdcj9wcp5g1d5z6m2291jqqlfyany138g"))))
"1s06zhzmkm7wylrxhas5v0sg2ackmmyw01gvv67r9idml55i0dh5"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@ -1901,13 +1901,14 @@ (define (filter-environment! filter-predicate
new-search-path ":")))
(setenv env-name new-env-value)))
environment-variable-names))
(setenv "CROSS_CPATH" (getenv "CPATH"))
(setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
(setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
(setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
(filter-environment! cross?
'("CROSS_CPATH"
'("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
"CROSS_LIBRARY_PATH"))
(filter-environment! (lambda (e) (not (cross? e)))
'("CPATH"
'("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"))
;; Guix tries to be helpful and automatically adds
;; mini-os-git-checkout/include to the include path,
@ -1916,7 +1917,7 @@ (define (filter-environment! filter-predicate
(not
(string-contains e
"mini-os-git-checkout")))
'("CPATH"
'("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"))
(setenv "EFI_VENDOR" "guix")
#t))

View file

@ -505,7 +505,7 @@ (define-public badvpn
(define-public wireguard-linux-compat
(package
(name "wireguard-linux-compat")
(version "1.0.20200623")
(version "1.0.20201112")
(source (origin
(method url-fetch)
(uri (string-append "https://git.zx2c4.com/wireguard-linux-compat/"
@ -513,12 +513,13 @@ (define-public 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)
@ -538,7 +539,7 @@ (define-public wireguard-linux-compat
(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"

View file

@ -1424,7 +1424,7 @@ (module "tidy")
(define-public esbuild
(package
(name "esbuild")
(version "0.8.4")
(version "0.8.7")
(source
(origin
(method git-fetch)
@ -1434,7 +1434,7 @@ (define-public esbuild
(file-name (git-file-name name version))
(sha256
(base32
"0aaqyfnl4dncrpw8n2sqkkavx7ki7i2r9pdi82pp9syql3b5495y"))
"14x95dmh4jrfp93p7ln0cv917qxll04sqzlpf9rl6w01fifr2s75"))
(modules '((guix build utils)))
(snippet
'(begin

View file

@ -843,7 +843,7 @@ (define-public xbanish
(define-public xlockmore
(package
(name "xlockmore")
(version "5.62")
(version "5.66")
(source (origin
(method url-fetch)
(uri (list (string-append "http://sillycycle.com/xlock/"
@ -854,7 +854,7 @@ (define-public xlockmore
"xlockmore-" version ".tar.xz")))
(sha256
(base32
"0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi"))))
"0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "--enable-appdefaultdir="

View file

@ -6076,17 +6076,17 @@ (define-public xmessage
(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"

View file

@ -106,6 +106,12 @@ (define-module (gnu services base)
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

View file

@ -482,7 +482,7 @@ (define-configuration cups-configuration
(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))

View file

@ -224,16 +224,21 @@ (define (assert-satisfied-requirements service)
(for-each assert-satisfied-requirements services))
(define %store-characters
;; Valid store characters; see 'checkStoreName' in the daemon.
(string->char-set
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-._?="))
(define (shepherd-service-file-name service)
"Return the file name where the initialization code for SERVICE is to be
stored."
(let ((provisions (string-join (map symbol->string
(shepherd-service-provision service)))))
(string-append "shepherd-"
(string-map (match-lambda
(#\/ #\-)
(#\ #\-)
(chr chr))
(string-map (lambda (chr)
(if (char-set-contains? %store-characters chr)
chr
#\-))
provisions)
".scm")))

View file

@ -273,16 +273,16 @@ (define-split-configuration openvpn-client-configuration
"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}.")

View file

@ -576,7 +576,9 @@ (define (root-uuid os)
(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

View file

@ -77,7 +77,6 @@ (define-module (gnu system vm)
system-qemu-image/shared-store
system-qemu-image/shared-store-script
system-disk-image-in-vm
system-docker-image
virtual-machine
@ -563,77 +562,6 @@ (define build
;;; 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")

View file

@ -51,7 +51,9 @@ (define-module (guix scripts build)
#: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

View file

@ -59,11 +59,16 @@ (define-module (guix scripts pack)
#: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.

View file

@ -2,6 +2,7 @@
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2020 by Amar M. Singh <nly@disroot.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -250,6 +251,21 @@ (define %nix-cache-info
("WantMassQuery" . 0)
("Priority" . 100)))
;;; A common buffer size value used for the TCP socket SO_SNDBUF option and
;;; the gzip compressor buffer size.
(define %default-buffer-size
(* 208 1024))
(define %default-socket-options
;; List of options passed to 'setsockopt' when transmitting files.
(list (list SO_SNDBUF %default-buffer-size)))
(define* (configure-socket socket #:key (level SOL_SOCKET)
(options %default-socket-options))
"Apply multiple option tuples in OPTIONS to SOCKET, using LEVEL."
(for-each (cut apply setsockopt socket level <>)
options))
(define (signed-string s)
"Sign the hash of the string S with the daemon's key. Return a canonical
sexp for the signature."
@ -569,7 +585,7 @@ (define nar
(lambda (port)
(write-file item port))
#:level (compression-level compression)
#:buffer-size (* 128 1024))
#:buffer-size %default-buffer-size)
(rename-file (string-append nar ".tmp") nar))
('lzip
;; Note: the file port gets closed along with the lzip port.
@ -866,7 +882,7 @@ (define (nar-response-port response compression)
;; 'make-gzip-output-port' wants a file port.
(make-gzip-output-port (response-port response)
#:level level
#:buffer-size (* 64 1024)))
#:buffer-size %default-buffer-size))
(($ <compression> 'lzip level)
(make-lzip-output-port (response-port response)
#:level level))
@ -891,8 +907,7 @@ (define (http-write server client response body)
client))
(port (begin
(force-output client)
(setsockopt client SOL_SOCKET
SO_SNDBUF (* 128 1024))
(configure-socket client)
(nar-response-port response compression))))
;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in
;; 'render-nar', BODY here is just the file name of the store item.
@ -922,7 +937,7 @@ (define (http-write server client response body)
size)
client))
(output (response-port response)))
(setsockopt client SOL_SOCKET SO_SNDBUF (* 128 1024))
(configure-socket client)
(if (file-port? output)
(sendfile output input size)
(dump-port input output))
@ -1067,7 +1082,8 @@ (define* (run-publish-server socket store
(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))

View file

@ -385,7 +385,7 @@ (define previous
(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

View file

@ -440,7 +440,7 @@ (define (full-name package)
(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~^ ~}~%"

View file

@ -674,7 +674,8 @@ (define file-systems
(define* (system-derivation-for-action os action
#:key image-size image-type
full-boot? container-shared-network?
mappings label)
mappings label
volatile-root?)
"Return as a monadic value the derivation for OS according to ACTION."
(mlet %store-monad ((target (current-target-system)))
(case action
@ -706,7 +707,8 @@ (define* (system-derivation-for-action os 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?)))))
@ -761,6 +763,7 @@ (define* (perform-action action os
dry-run? derivations-only?
use-substitutes? bootloader-target target
image-size image-type
volatile-root?
full-boot? label container-shared-network?
(mappings '())
(gc-root #f))
@ -768,7 +771,8 @@ (define* (perform-action action os
bootloader; BOOTLOADER-TAGET is the target for the bootloader; TARGET is the
target root directory; IMAGE-SIZE is the size of the image to be built, for
the 'vm-image' and 'disk-image' actions. IMAGE-TYPE is the type of image to
be built.
be built. When VOLATILE-ROOT? is #t, the root file system is mounted
volatile.
FULL-BOOT? is used for the 'vm' action; it determines whether to
boot directly to the kernel or to the bootloader. CONTAINER-SHARED-NETWORK?
@ -816,6 +820,7 @@ (define bootcfg
#: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))
@ -974,6 +979,8 @@ (define (show-help)
--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_ "
@ -1048,6 +1055,9 @@ (define %options
(option '("no-bootloader" "no-grub") #f #f
(lambda (opt name arg result)
(alist-cons 'install-bootloader? #f result)))
(option '("volatile") #f #f
(lambda (opt name arg result)
(alist-cons 'volatile-root? #t result)))
(option '("label") #t #f
(lambda (opt name arg result)
(alist-cons 'label arg result)))
@ -1109,7 +1119,8 @@ (define %default-options
(image-type . raw)
(image-size . guess)
(install-bootloader? . #t)
(label . #f)))
(label . #f)
(volatile-root? . #f)))
(define (verbosity-level opts)
"Return the verbosity level based on OPTS, the alist of parsed options."
@ -1206,6 +1217,8 @@ (define save-provenance?
#: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?)

View file

@ -400,6 +400,12 @@ (define (available-translations directory domain)
(find-files directory
"\\.[a-z]{2}(_[A-Z]{2})?\\.po$")))
(define parallel-jobs
;; Limit thread creation by 'n-par-for-each'. Going beyond can
;; lead libgc 8.0.4 to abort with:
;; mmap(PROT_NONE) failed
(min (parallel-job-count) 4))
(mkdir #$output)
(copy-recursively #$documentation "."
#:log (%make-void-port "w"))
@ -415,14 +421,14 @@ (define (available-translations directory domain)
(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)))

View file

@ -78,6 +78,7 @@ (define-module (guix utils)
target-arm?
target-64bit?
cc-for-target
cxx-for-target
version-compare
version>?
@ -542,6 +543,11 @@ (define* (cc-for-target #:optional (target (%current-target-system)))
(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))

View file

@ -91,4 +91,24 @@ guix/profiles.scm
guix/git.scm
guix/deprecation.scm
guix/derivations.scm
guix/scripts/archive.scm
guix/scripts/build.scm
guix/scripts/environment.scm
guix/scripts/time-machine.scm
guix/scripts/import/cpan.scm
guix/scripts/import/crate.scm
guix/scripts/import/gem.scm
guix/scripts/import/gnu.scm
guix/scripts/import/hackage.scm
guix/scripts/import/json.scm
guix/scripts/import/nix.scm
guix/scripts/import/opam.scm
guix/scripts/import/pypi.scm
guix/scripts/import/stackage.scm
guix/scripts/import/texlive.scm
guix/scripts/offload.scm
guix/scripts/perform-download.scm
guix/scripts/refresh.scm
guix/scripts/repl.scm
guix/scripts/system/reconfigure.scm
nix/nix-daemon/guix-daemon.cc

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2015, 2016, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2015, 2016, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
@ -174,7 +174,7 @@ (define-module (test-build-utils)
(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"