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]+\\)>") . "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")
;; Emacs-Guix ;; Emacs-Guix
(eval . (setq guix-directory (eval . (setq-local guix-directory
(locate-dominating-file default-directory ".dir-locals.el"))) (locate-dominating-file default-directory
".dir-locals.el")))
;; Geiser ;; Geiser
;; This allows automatically setting the `geiser-guile-load-path' ;; This allows automatically setting the `geiser-guile-load-path'
;; variable when using various Guix checkouts (e.g., via git worktrees). ;; variable when using various Guix checkouts (e.g., via git worktrees).
(eval . (let* ((root-dir (expand-file-name (eval . (let ((root-dir-unexpanded (locate-dominating-file
(locate-dominating-file default-directory ".dir-locals.el")))
default-directory ".dir-locals.el"))) ;; While Guix should in theory always have a .dir-locals.el
;; Workaround for bug https://issues.guix.gnu.org/43818. ;; (we are reading this file, after all) there seems to be a
(root-dir* (directory-file-name root-dir))) ;; strange problem where this code "escapes" to some other buffers,
(unless (boundp 'geiser-guile-load-path) ;; at least vc-mode. See:
(defvar geiser-guile-load-path '())) ;; https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00296.html
(make-local-variable 'geiser-guile-load-path) ;; Upstream report: <https://bugs.gnu.org/44698>
(require 'cl-lib) ;; Hence the following "when", which might otherwise be unnecessary;
(cl-pushnew root-dir* geiser-guile-load-path ;; it prevents causing an error when root-dir-unexpanded is nil.
:test #'string-equal))))) (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"))) (c-mode . ((c-file-style . "gnu")))
(scheme-mode (scheme-mode
@ -123,7 +134,6 @@
(eval . (put 'call-with-progress-reporter 'scheme-indent-function 1)) (eval . (put 'call-with-progress-reporter 'scheme-indent-function 1))
(eval . (put 'with-repository 'scheme-indent-function 2)) (eval . (put 'with-repository 'scheme-indent-function 2))
(eval . (put 'with-temporary-git-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-environment-variables 'scheme-indent-function 1))
(eval . (put 'with-fresh-gnupg-setup '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 dist_fishcompletion_DATA = etc/completion/fish/guix.fish
# SELinux policy # SELinux policy
nodist_selinux_policy_DATA = etc/guix-daemon.cil.in nodist_selinux_policy_DATA = etc/guix-daemon.cil
EXTRA_DIST += \ EXTRA_DIST += \
HACKING \ HACKING \
@ -570,6 +570,7 @@ EXTRA_DIST += \
TODO \ TODO \
CODE-OF-CONDUCT \ CODE-OF-CONDUCT \
.dir-locals.el \ .dir-locals.el \
.guix-authorizations \
.guix-channel \ .guix-channel \
scripts/guix.in \ scripts/guix.in \
etc/guix-install.sh \ etc/guix-install.sh \
@ -710,7 +711,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)" ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
# Name of the 'guix' package shipped in the binary tarball. # 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. # The self-contained tarball.
guix-binary.%.tar.xz: guix-binary.%.tar.xz:
@ -730,8 +731,8 @@ distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
EXTRA_DIST += $(top_srcdir)/.version EXTRA_DIST += $(top_srcdir)/.version
BUILT_SOURCES += $(top_srcdir)/.version BUILT_SOURCES += $(top_srcdir)/.version
$(top_srcdir)/.version: $(top_srcdir)/.version: config.status
echo $(VERSION) > "$@-t" && mv "$@-t" "$@" $(AM_V_GEN)echo $(VERSION) > "$@-t" && mv "$@-t" "$@"
gen-tarball-version: gen-tarball-version:
echo $(VERSION) > "$(distdir)/.tarball-version" echo $(VERSION) > "$(distdir)/.tarball-version"
@ -826,9 +827,10 @@ release: dist-with-updated-version
$(MKDIR_P) "$(releasedir)" $(MKDIR_P) "$(releasedir)"
rm -f "$(releasedir)"/* rm -f "$(releasedir)"/*
mv $(SOURCE_TARBALLS) "$(releasedir)" mv $(SOURCE_TARBALLS) "$(releasedir)"
$(top_builddir)/pre-inst-env "$(GUILE)" \ GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
$(top_srcdir)/build-aux/update-guix-package.scm \ $(top_builddir)/pre-inst-env "$(GUILE)" \
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)" $(top_srcdir)/build-aux/update-guix-package.scm \
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
git add $(top_srcdir)/gnu/packages/package-management.scm git add $(top_srcdir)/gnu/packages/package-management.scm
git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)." git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
$(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \ $(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" \ mv "guix-binary.$$system.tar.xz" \
"$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \ "$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \
done done
$(top_builddir)/pre-inst-env "$(GUILE)" \ GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
$(top_srcdir)/build-aux/update-guix-package.scm \ $(top_builddir)/pre-inst-env "$(GUILE)" \
"`git rev-parse HEAD`" $(top_srcdir)/build-aux/update-guix-package.scm \
"`git rev-parse HEAD`"
git add $(top_srcdir)/gnu/packages/package-management.scm git add $(top_srcdir)/gnu/packages/package-management.scm
git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`." git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`."
$(top_builddir)/pre-inst-env guix build guix \ $(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 *** swap-devices field of operating-system can contains UUIDs and labels
*** Graphical installer uses UUIDs for unencrypted swap partitions *** Graphical installer uses UUIDs for unencrypted swap partitions
*** Graphical installer now supports NTFS file systems *** 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 *** New services
autossh, ganeti, gmnisrv, guix-build-coordinator, autossh, ganeti, gmnisrv, guix-build-coordinator,
@ -96,6 +98,8 @@ simulated-wifi, udev-rules, unattended-upgrade, webssh, zram
(<https://issues.guix.gnu.org/35394>) (<https://issues.guix.gnu.org/35394>)
*** guix system reconfigure now starts services not currently running *** guix system reconfigure now starts services not currently running
(<https://bugs.gnu.org/43720>) (<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 *** Offloading and copying small items is now much faster
(<https://issues.guix.gnu.org/43340>) (<https://issues.guix.gnu.org/43340>)
*** GCC switched back to C_INCLUDE_PATH & co. from CPATH *** GCC switched back to C_INCLUDE_PATH & co. from CPATH

View file

@ -44,9 +44,6 @@
(define %top-srcdir (define %top-srcdir
(string-append (current-source-directory) "/..")) (string-append (current-source-directory) "/.."))
(define version-controlled?
(git-predicate %top-srcdir))
(define (package-definition-location) (define (package-definition-location)
"Return the source properties of the definition of the 'guix' package." "Return the source properties of the definition of the 'guix' package."
(call-with-input-file (location-file (package-location guix)) (call-with-input-file (location-file (package-location guix))
@ -114,8 +111,9 @@ COMMIT."
"Create a new git worktree at DIRECTORY, detached on commit COMMIT." "Create a new git worktree at DIRECTORY, detached on commit COMMIT."
(invoke "git" "worktree" "add" "--detach" directory commit)) (invoke "git" "worktree" "add" "--detach" directory commit))
(define-syntax-rule (with-temporary-git-worktree commit body ...) (define (call-with-temporary-git-worktree commit proc)
"Execute BODY in the context of a temporary git worktree created from COMMIT." "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 (call-with-temporary-directory
(lambda (tmp-directory) (lambda (tmp-directory)
(dynamic-wind (dynamic-wind
@ -123,12 +121,12 @@ COMMIT."
#t) #t)
(lambda () (lambda ()
(git-add-worktree tmp-directory commit) (git-add-worktree tmp-directory commit)
(with-directory-excursion tmp-directory body ...)) (proc tmp-directory))
(lambda () (lambda ()
(invoke "git" "worktree" "remove" "--force" tmp-directory)))))) (invoke "git" "worktree" "remove" "--force" tmp-directory))))))
(define %savannah-guix-git-repo-push-url-regexp (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 ...) (define-syntax-rule (with-input-pipe-to-string prog arg ...)
(let* ((input-pipe (open-pipe* OPEN_READ prog arg ...)) (let* ((input-pipe (open-pipe* OPEN_READ prog arg ...))
@ -156,27 +154,60 @@ COMMIT."
"git" "branch" "-r" "--contains" commit "git" "branch" "-r" "--contains" commit
(string-append remote "/master"))))) (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) (define (main . args)
(match args (match args
((commit version) ((commit version)
(with-directory-excursion %top-srcdir (with-directory-excursion %top-srcdir
(or (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT") (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)) (leave (G_ "Commit ~a is not pushed upstream. Aborting.~%") commit))
(let* ((hash (with-temporary-git-worktree commit (call-with-temporary-git-worktree commit
(nix-base32-string->bytevector (lambda (tmp-directory)
(string-trim-both (let* ((hash (nix-base32-string->bytevector
(with-output-to-string (string-trim-both
(lambda () (with-output-to-string
(guix-hash "-rx" "."))))))) (lambda ()
(location (package-definition-location)) (guix-hash "-rx" tmp-directory))))))
(old-hash (content-hash-value (location (package-definition-location))
(origin-hash (package-source guix))))) (old-hash (content-hash-value
(edit-expression location (origin-hash (package-source guix)))))
(update-definition commit hash (edit-expression location
#:old-hash old-hash (update-definition commit hash
#:version version))))) #: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) ((commit)
;; Automatically deduce the version and revision numbers. ;; Automatically deduce the version and revision numbers.
(main commit #f)))) (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. has already been pushed to the Savannah-hosted Guix git repository.
This check can be disabled, @emph{at your own peril}, by setting the This check can be disabled, @emph{at your own peril}, by setting the
@code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. @code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. When
this variable is set, the updated package source is also added to the
To build the resulting 'guix' package when using a private commit, the store. This is used as part of the release process of Guix.
following command can be used:
@example
./pre-inst-env guix build guix --with-git-url=guix=$PWD
@end example

View file

@ -17538,7 +17538,7 @@ Available @code{cups-configuration} fields are:
The CUPS package. The CUPS package.
@end deftypevr @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. Drivers and other extensions to the CUPS package.
@end deftypevr @end deftypevr
@ -24906,14 +24906,18 @@ Defaults to @samp{tun}.
@end deftypevr @end deftypevr
@deftypevr {@code{openvpn-client-configuration} parameter} string ca If you do not have some of these files (eg.@: you use a username and
password), you can disable any of the following three fields by setting
it to @code{'disabled}.
@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string ca
The certificate authority to check connections against. The certificate authority to check connections against.
Defaults to @samp{"/etc/openvpn/ca.crt"}. Defaults to @samp{"/etc/openvpn/ca.crt"}.
@end deftypevr @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 The certificate of the machine the daemon is running on. It should be
signed by the authority given in @code{ca}. signed by the authority given in @code{ca}.
@ -24921,7 +24925,7 @@ Defaults to @samp{"/etc/openvpn/client.crt"}.
@end deftypevr @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 The key of the machine the daemon is running on. It must be the key whose
certificate is @code{cert}. certificate is @code{cert}.
@ -25057,14 +25061,18 @@ Defaults to @samp{tun}.
@end deftypevr @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. The certificate authority to check connections against.
Defaults to @samp{"/etc/openvpn/ca.crt"}. Defaults to @samp{"/etc/openvpn/ca.crt"}.
@end deftypevr @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 The certificate of the machine the daemon is running on. It should be
signed by the authority given in @code{ca}. signed by the authority given in @code{ca}.
@ -25072,7 +25080,7 @@ Defaults to @samp{"/etc/openvpn/client.crt"}.
@end deftypevr @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 The key of the machine the daemon is running on. It must be the key whose
certificate is @code{cert}. 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 the @option{--image-size} option is ignored in the case of
@code{docker-image}. @code{docker-image}.
@cindex disk-image, creating disk images
The @code{disk-image} command can produce various image types. The The @code{disk-image} command can produce various image types. The
image type can be selected using the @command{--image-type} option. It image type can be selected using the @option{--image-type} option. It
defaults to @code{raw}. When its value is @code{iso9660}, the defaults to @code{raw}. When its value is @code{iso9660}, the
@option{--label} option can be used to specify a volume ID with @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 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 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 The @code{--list-image-types} command lists all the available image
types. types.
@cindex vm-image, creating virtual machine images
When using @code{vm-image}, the returned image is in qcow2 format, which 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}, the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for
for more information on how to run the image in a virtual machine. 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 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 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 result, it contains @emph{exactly} what you define in the operating

View file

@ -1,6 +1,8 @@
; -*- lisp -*- ; -*- lisp -*-
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -21,6 +23,18 @@
;; Intermediate Language (CIL). It refers to types that must be defined in ;; Intermediate Language (CIL). It refers to types that must be defined in
;; the system's base policy. ;; 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 (block guix_daemon
;; Require existing types ;; Require existing types
(typeattributeset cil_gen_require init_t) (typeattributeset cil_gen_require init_t)
@ -34,14 +48,19 @@
(roletype object_r guix_daemon_t) (roletype object_r guix_daemon_t)
(type guix_daemon_conf_t) (type guix_daemon_conf_t)
(roletype object_r guix_daemon_conf_t) (roletype object_r guix_daemon_conf_t)
(typeattributeset file_type guix_daemon_conf_t)
(type guix_daemon_exec_t) (type guix_daemon_exec_t)
(roletype object_r guix_daemon_exec_t) (roletype object_r guix_daemon_exec_t)
(typeattributeset file_type guix_daemon_exec_t)
(type guix_daemon_socket_t) (type guix_daemon_socket_t)
(roletype object_r guix_daemon_socket_t) (roletype object_r guix_daemon_socket_t)
(typeattributeset file_type guix_daemon_socket_t)
(type guix_store_content_t) (type guix_store_content_t)
(roletype object_r guix_store_content_t) (roletype object_r guix_store_content_t)
(typeattributeset file_type guix_store_content_t)
(type guix_profiles_t) (type guix_profiles_t)
(roletype object_r guix_profiles_t) (roletype object_r guix_profiles_t)
(typeattributeset file_type guix_profiles_t)
;; These types are domains, thereby allowing process rules ;; These types are domains, thereby allowing process rules
(typeattributeset domain (guix_daemon_t guix_daemon_exec_t)) (typeattributeset domain (guix_daemon_t guix_daemon_exec_t))
@ -55,6 +74,30 @@
(typetransition guix_store_content_t guix_daemon_exec_t (typetransition guix_store_content_t guix_daemon_exec_t
process guix_daemon_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 ;; Permit communication with NSCD
(allow guix_daemon_t (allow guix_daemon_t
nscd_var_run_t nscd_var_run_t
@ -71,25 +114,44 @@
(allow guix_daemon_t (allow guix_daemon_t
nscd_t nscd_t
(unix_stream_socket (connectto))) (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 ;; Permit logging and temp file access
(allow guix_daemon_t (allow guix_daemon_t
tmp_t tmp_t
(lnk_file (setattr unlink))) (lnk_file (create rename setattr unlink)))
(allow guix_daemon_t (allow guix_daemon_t
tmp_t tmp_t
(dir (create (file (link rename create execute execute_no_trans write unlink setattr map relabelto)))
rmdir (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 add_name remove_name
open read write open read write
getattr setattr getattr setattr
search))) search)))
(allow guix_daemon_t
tmp_t
(sock_file (create getattr setattr unlink write)))
(allow guix_daemon_t (allow guix_daemon_t
var_log_t var_log_t
(file (create getattr open write))) (file (create getattr open write)))
(allow guix_daemon_t (allow guix_daemon_t
var_log_t var_log_t
(dir (getattr write add_name))) (dir (getattr create write add_name)))
(allow guix_daemon_t (allow guix_daemon_t
var_run_t var_run_t
(lnk_file (read))) (lnk_file (read)))
@ -100,10 +162,10 @@
;; Spawning processes, execute helpers ;; Spawning processes, execute helpers
(allow guix_daemon_t (allow guix_daemon_t
self self
(process (fork))) (process (fork execmem setrlimit setpgid setsched)))
(allow guix_daemon_t (allow guix_daemon_t
guix_daemon_exec_t guix_daemon_exec_t
(file (execute execute_no_trans read open))) (file (execute execute_no_trans read open entrypoint map)))
;; TODO: unknown ;; TODO: unknown
(allow guix_daemon_t (allow guix_daemon_t
@ -119,38 +181,51 @@
;; Build isolation ;; Build isolation
(allow guix_daemon_t (allow guix_daemon_t
guix_store_content_t guix_store_content_t
(file (mounton))) (file (ioctl mounton)))
(allow guix_store_content_t (allow guix_store_content_t
fs_t fs_t
(filesystem (associate))) (filesystem (associate)))
(allow guix_daemon_t (allow guix_daemon_t
guix_store_content_t guix_store_content_t
(dir (mounton))) (dir (read mounton)))
(allow guix_daemon_t (allow guix_daemon_t
guix_daemon_t guix_daemon_t
(capability (net_admin (capability (net_admin
fsetid fowner fsetid fowner
chown setuid setgid chown setuid setgid
dac_override dac_read_search dac_override dac_read_search
sys_chroot))) sys_chroot
sys_admin)))
(allow guix_daemon_t (allow guix_daemon_t
fs_t fs_t
(filesystem (unmount))) (filesystem (unmount)))
(allow guix_daemon_t
devpts_t
(dir (search)))
(allow guix_daemon_t (allow guix_daemon_t
devpts_t devpts_t
(filesystem (mount))) (filesystem (mount)))
(allow guix_daemon_t (allow guix_daemon_t
devpts_t devpts_t
(chr_file (setattr getattr))) (chr_file (ioctl open read write setattr getattr)))
(allow guix_daemon_t (allow guix_daemon_t
tmpfs_t tmpfs_t
(filesystem (mount))) (filesystem (getattr mount)))
(allow guix_daemon_t (allow guix_daemon_t
tmpfs_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 (allow guix_daemon_t
proc_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 (allow guix_daemon_t
null_device_t null_device_t
(chr_file (getattr open read write))) (chr_file (getattr open read write)))
@ -179,7 +254,7 @@
search rename search rename
add_name remove_name add_name remove_name
open write open write
rmdir))) rmdir relabelfrom)))
(allow guix_daemon_t (allow guix_daemon_t
guix_store_content_t guix_store_content_t
(file (create (file (create
@ -189,7 +264,7 @@
link unlink link unlink
map map
rename rename
open read write))) open read write relabelfrom)))
(allow guix_daemon_t (allow guix_daemon_t
guix_store_content_t guix_store_content_t
(lnk_file (create (lnk_file (create
@ -197,17 +272,23 @@
link unlink link unlink
read read
rename))) 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 ;; Access to configuration files and directories
(allow guix_daemon_t (allow guix_daemon_t
guix_daemon_conf_t guix_daemon_conf_t
(dir (search (dir (search create
setattr getattr setattr getattr
add_name remove_name add_name remove_name
open read write))) open read write)))
(allow guix_daemon_t (allow guix_daemon_t
guix_daemon_conf_t guix_daemon_conf_t
(file (create (file (create rename
lock lock
map map
getattr setattr getattr setattr
@ -216,11 +297,17 @@
(allow guix_daemon_t (allow guix_daemon_t
guix_daemon_conf_t guix_daemon_conf_t
(lnk_file (create getattr rename unlink))) (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 ;; Access to profiles
(allow guix_daemon_t (allow guix_daemon_t
guix_profiles_t guix_profiles_t
(dir (getattr setattr read open))) (dir (search getattr setattr read write open create add_name)))
(allow guix_daemon_t (allow guix_daemon_t
guix_profiles_t guix_profiles_t
(lnk_file (read getattr))) (lnk_file (read getattr)))
@ -233,8 +320,22 @@
(allow guix_daemon_t (allow guix_daemon_t
user_home_t user_home_t
(dir (search))) (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 ;; Socket operations
(allow guix_daemon_t
guix_daemon_socket_t
(sock_file (unlink)))
(allow guix_daemon_t (allow guix_daemon_t
init_t init_t
(fd (use))) (fd (use)))
@ -253,12 +354,53 @@
read write read write
connect bind accept connect bind accept
getopt setopt))) 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 (allow guix_daemon_t
self self
(fifo_file (write read))) (fifo_file (write read)))
(allow guix_daemon_t (allow guix_daemon_t
self self
(udp_socket (ioctl create))) (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 ;; Label file system
(filecon "@guix_sysconfdir@/guix(/.*)?" (filecon "@guix_sysconfdir@/guix(/.*)?"
@ -277,5 +419,7 @@
file (system_u object_r guix_daemon_exec_t (low low))) file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon" (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon"
file (system_u object_r guix_daemon_exec_t (low low))) 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" (filecon "@guix_localstatedir@/guix/daemon-socket/socket"
any (system_u object_r guix_daemon_socket_t (low low)))) any (system_u object_r guix_daemon_socket_t (low low))))

View file

@ -22,6 +22,8 @@
(define-module (gnu bootloader) (define-module (gnu bootloader)
#:use-module (guix discovery) #:use-module (guix discovery)
#:use-module (guix gexp)
#:use-module (guix profiles)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -66,7 +68,9 @@
bootloader-configuration-additional-configuration bootloader-configuration-additional-configuration
%bootloaders %bootloaders
lookup-bootloader-by-name)) lookup-bootloader-by-name
efi-bootloader-chain))
;;; ;;;
@ -227,3 +231,122 @@ record."
(eq? name (bootloader-name bootloader))) (eq? name (bootloader-name bootloader)))
(force %bootloaders)) (force %bootloaders))
(leave (G_ "~a: no such bootloader~%") name))) (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 @@ fi~%"))))
(define install-grub-efi (define install-grub-efi
#~(lambda (bootloader efi-dir mount-point) #~(lambda (bootloader efi-dir mount-point)
;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the ;; There is nothing useful to do when called in the context of a disk
;; system whose root is mounted at MOUNT-POINT. ;; image generation.
(let ((grub-install (string-append bootloader "/sbin/grub-install")) (when efi-dir
(install-dir (string-append mount-point "/boot")) ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the
;; When installing Guix, it's common to mount EFI-DIR below ;; system whose root is mounted at MOUNT-POINT.
;; MOUNT-POINT rather than /boot/efi on the live image. (let ((grub-install (string-append bootloader "/sbin/grub-install"))
(target-esp (if (file-exists? (string-append mount-point efi-dir)) (install-dir (string-append mount-point "/boot"))
(string-append mount-point efi-dir) ;; When installing Guix, it's common to mount EFI-DIR below
efi-dir))) ;; MOUNT-POINT rather than /boot/efi on the live image.
;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or (target-esp (if (file-exists? (string-append mount-point efi-dir))
;; root partition. (string-append mount-point efi-dir)
(setenv "GRUB_ENABLE_CRYPTODISK" "y") efi-dir)))
(invoke/quiet grub-install "--boot-directory" install-dir ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or
"--bootloader-id=Guix" ;; root partition.
"--efi-directory" target-esp)))) (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 (install-grub-efi-netboot subdir)
"Define a grub-efi-netboot bootloader installer for installation in SUBDIR, "Define a grub-efi-netboot bootloader installer for installation in SUBDIR,

View file

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

View file

@ -22,6 +22,7 @@
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix i18n) #:use-module (guix i18n)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 rdelim) #:use-module (ice-9 rdelim)
@ -36,6 +37,8 @@
syslog-port syslog-port
syslog syslog
call-with-time
let/time
with-server-socket with-server-socket
current-server-socket current-server-socket
@ -117,6 +120,17 @@ COMMAND exited successfully, #f otherwise."
;;; Logging. ;;; 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) (define (open-syslog-port)
"Return an open port (a socket) to /dev/log or #f if that wasn't possible." "Return an open port (a socket) to /dev/log or #f if that wasn't possible."
(let ((sock (socket AF_UNIX SOCK_DGRAM 0))) (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-loongson-workaround.patch \
%D%/packages/patches/binutils-mingw-w64-timestamp.patch \ %D%/packages/patches/binutils-mingw-w64-timestamp.patch \
%D%/packages/patches/binutils-mingw-w64-deterministic.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-gcc8.patch \
%D%/packages/patches/blender-2.79-gcc9.patch \ %D%/packages/patches/blender-2.79-gcc9.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.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-4.9-libsanitizer-ustat.patch \
%D%/packages/patches/gcc-libsanitizer-ustat.patch \ %D%/packages/patches/gcc-libsanitizer-ustat.patch \
%D%/packages/patches/gcc-4.9-libsanitizer-mode-size.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-6-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \ %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-libvtv-runpath.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-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.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/glib-tests-timer.patch \
%D%/packages/patches/glibc-CVE-2018-11236.patch \ %D%/packages/patches/glibc-CVE-2018-11236.patch \
%D%/packages/patches/glibc-CVE-2018-11237.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-build-parallelism.patch \
%D%/packages/patches/scotch-integer-declarations.patch \ %D%/packages/patches/scotch-integer-declarations.patch \
%D%/packages/patches/screen-hurd-path-max.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/sdl-libx11-1.6.patch \
%D%/packages/patches/seed-webkit.patch \ %D%/packages/patches/seed-webkit.patch \
%D%/packages/patches/seq24-rename-mutex.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/tk-find-library.patch \
%D%/packages/patches/transcode-ffmpeg.patch \ %D%/packages/patches/transcode-ffmpeg.patch \
%D%/packages/patches/ttf2eot-cstddef.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/tup-unbundle-dependencies.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \ %D%/packages/patches/twinkle-bcg729.patch \

View file

@ -1559,10 +1559,10 @@ features of sudo with a fraction of the codebase.")
#t)))) #t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'configure (replace 'configure
(lambda* (#:key outputs #:allow-other-keys) (lambda _
(chdir "wpa_supplicant") (chdir "wpa_supplicant")
(copy-file "defconfig" ".config") (copy-file "defconfig" ".config")
(let ((port (open-file ".config" "al"))) (let ((port (open-file ".config" "al")))
@ -1576,6 +1576,15 @@ features of sudo with a fraction of the codebase.")
CONFIG_LIBNL32=y CONFIG_LIBNL32=y
CONFIG_READLINE=y\n" port) CONFIG_READLINE=y\n" port)
(close-port 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)) #t))
(add-after 'install 'install-documentation (add-after 'install 'install-documentation
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
@ -1604,7 +1613,7 @@ features of sudo with a fraction of the codebase.")
"wpa_supplicant.conf")) "wpa_supplicant.conf"))
#t)))) #t))))
#:make-flags (list "CC=gcc" #:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "BINDIR=" (assoc-ref %outputs "out") (string-append "BINDIR=" (assoc-ref %outputs "out")
"/sbin") "/sbin")
(string-append "LIBDIR=" (assoc-ref %outputs "out") (string-append "LIBDIR=" (assoc-ref %outputs "out")
@ -1714,10 +1723,10 @@ command.")
"1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8")))) "1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'configure (replace 'configure
(lambda* (#:key outputs #:allow-other-keys) (lambda _
;; This is mostly copied from 'wpa-supplicant' above. ;; This is mostly copied from 'wpa-supplicant' above.
(chdir "hostapd") (chdir "hostapd")
(copy-file "defconfig" ".config") (copy-file "defconfig" ".config")
@ -1729,6 +1738,14 @@ command.")
CONFIG_IEEE80211AC=y\n" port) CONFIG_IEEE80211AC=y\n" port)
(close-port port)) (close-port port))
#t)) #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 (add-after 'install 'install-man-pages
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -1745,7 +1762,7 @@ command.")
(find-files "." "\\.8")) (find-files "." "\\.8"))
#t)))) #t))))
#:make-flags (list "CC=gcc" #:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "BINDIR=" (assoc-ref %outputs "out") (string-append "BINDIR=" (assoc-ref %outputs "out")
"/sbin") "/sbin")
(string-append "LIBDIR=" (assoc-ref %outputs "out") (string-append "LIBDIR=" (assoc-ref %outputs "out")
@ -1840,7 +1857,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
(define-public acpica (define-public acpica
(package (package
(name "acpica") (name "acpica")
(version "20200925") (version "20201113")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -1848,13 +1865,13 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"18n6129fkgj85piid7v4zxxksv3h0amqp4p977vcl9xg3bq0zd2w")))) "0fmck3zklc328c8nzvfzm2xyh2i8zszzrd4k8kk8q30y4avnc6z1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("flex" ,flex) (native-inputs `(("flex" ,flex)
("bison" ,bison))) ("bison" ,bison)))
(arguments (arguments
'(#:make-flags (list (string-append "PREFIX=" %output) `(#:make-flags (list (string-append "PREFIX=" %output)
"CC=gcc" (string-append "CC=" ,(cc-for-target))
"HOST=_LINUX" "HOST=_LINUX"
"OPT_CFLAGS=-Wall -fno-strict-aliasing") "OPT_CFLAGS=-Wall -fno-strict-aliasing")
#:tests? #f ; no 'check' target #:tests? #f ; no 'check' target
@ -2374,17 +2391,20 @@ lookup to YAML Mode. You could enable the mode with @code{(add-hook
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
(delete 'configure) (delete 'configure)
(replace 'build (replace 'build
(lambda _ (lambda* (#:key make-flags #:allow-other-keys)
(invoke "make" "CC=gcc" "-Csrc"))) (apply invoke "make" "-Csrc" make-flags)))
(replace 'check (replace 'check
(lambda _ (lambda* (#:key tests? make-flags #:allow-other-keys)
(invoke "make" "CC=gcc" "-Ctests"))) (when tests?
(apply invoke "make" "-Ctests" make-flags))
#t))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))) (bin (string-append out "/bin")))
(install-file "src/cpulimit" bin)) (install-file "src/cpulimit" bin))
#t))))) #t)))
#:make-flags (list (string-append "CC=" ,(cc-for-target)))))
(home-page "https://github.com/opsengine/cpulimit") (home-page "https://github.com/opsengine/cpulimit")
(synopsis "Limit CPU usage") (synopsis "Limit CPU usage")
(description (description
@ -3355,14 +3375,14 @@ information tool.")
(define-public nnn (define-public nnn
(package (package
(name "nnn") (name "nnn")
(version "3.4") (version "3.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/jarun/nnn/releases/download/v" (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
version "/nnn-v" version ".tar.gz")) version "/nnn-v" version ".tar.gz"))
(sha256 (sha256
(base32 "189h950m1jjrnhvgcvzk6nj89l58rkxim7bxa0441ssajxpaw0vq")))) (base32 "1ww18vvfjkvi36rcamw8kpix4bhk71w5bw9kmnh158crah1x8dp6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("ncurses" ,ncurses) `(("ncurses" ,ncurses)
@ -3370,15 +3390,23 @@ information tool.")
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(arguments (arguments
'(#:tests? #f ; no tests `(#:tests? #f ; no tests
#:phases #:phases
(modify-phases %standard-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 #:make-flags
(list (list
(string-append "PREFIX=" (string-append "PREFIX="
(assoc-ref %outputs "out")) (assoc-ref %outputs "out"))
"CC=gcc"))) (string-append "CC=" ,(cc-for-target)))))
(home-page "https://github.com/jarun/nnn") (home-page "https://github.com/jarun/nnn")
(synopsis "Terminal file browser") (synopsis "Terminal file browser")
(description "@command{nnn} is a fork of @command{noice}, a blazing-fast (description "@command{nnn} is a fork of @command{noice}, a blazing-fast
@ -3459,9 +3487,9 @@ on systems running the Linux kernel.")
(inputs (inputs
`(("libpcap" ,libpcap))) `(("libpcap" ,libpcap)))
(arguments (arguments
'(#:test-target "regress" `(#:test-target "regress"
#:make-flags #:make-flags
(list "CC=gcc" (list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" (assoc-ref %outputs "out"))) (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View file

@ -2,7 +2,7 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; 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 © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com> ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
;;; Copyright © 2019 Andy Tai <atai@atai.org> ;;; Copyright © 2019 Andy Tai <atai@atai.org>
@ -51,7 +51,7 @@
#:use-module (gnu packages shells) #:use-module (gnu packages shells)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module ((guix utils) #:use-module ((guix utils)
#:select (%current-system))) #:select (%current-system cc-for-target)))
(define-public nasm (define-public nasm
(package (package
@ -276,13 +276,21 @@ runtime")
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(delete 'configure) (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 (replace 'check
(lambda _ (lambda _
(with-directory-excursion "test/asm" (with-directory-excursion "test/asm"
(invoke "./test.sh")) (invoke "./test.sh"))
(with-directory-excursion "test/link" (with-directory-excursion "test/link"
(invoke "./test.sh"))))) (invoke "./test.sh")))))
#:make-flags `("CC=gcc" #:make-flags `(,(string-append "CC=" ,(cc-for-target))
,(string-append "PREFIX=" ,(string-append "PREFIX="
(assoc-ref %outputs "out"))))) (assoc-ref %outputs "out")))))
(native-inputs (native-inputs

View file

@ -3840,9 +3840,9 @@ use them split WAVE data into multiple files.")
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
;; Test files are missing: https://github.com/foo86/dcadec/issues/53 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
'(#:tests? #f `(#:tests? #f
#:make-flags #:make-flags
(list "CC=gcc" (list (string-append "CC=" ,(cc-for-target))
;; Build shared library. ;; Build shared library.
"CONFIG_SHARED=1" "CONFIG_SHARED=1"
(string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "PREFIX=" (assoc-ref %outputs "out"))
@ -3917,8 +3917,8 @@ loudness of audio and video files to the same level.")
"0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g")))) "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:make-flags (list (string-append "PREFIX=" %output) `(#:make-flags (list (string-append "PREFIX=" %output)
"CC=gcc") (string-append "CC=" ,(cc-for-target)))
#:tests? #f ; No tests #:tests? #f ; No tests
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -33,14 +33,14 @@
(define-public oath-toolkit (define-public oath-toolkit
(package (package
(name "oath-toolkit") (name "oath-toolkit")
(version "2.6.3") (version "2.6.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.savannah.nongnu.org/releases/" (uri (string-append "https://download.savannah.nongnu.org/releases/"
name "/" name "-" version ".tar.gz")) name "/" name "-" version ".tar.gz"))
(sha256 (sha256
(base32 "1cjial8njck2sd7452jcxspbi5h5fnp3n8v3wbmlw8fzqmgzvxx1")))) (base32 "116na9nncpwshl3ww8w3llzwk49igilplxcjy1k6jzl3mmg2bimz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
;; TODO --enable-pskc causes xmlsec-related test suite failures. ;; TODO --enable-pskc causes xmlsec-related test suite failures.

View file

@ -6,7 +6,7 @@
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.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 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
@ -392,7 +392,7 @@ list and implement the backup strategy.")
`(("librsync" ,librsync-0.9))) `(("librsync" ,librsync-0.9)))
(arguments (arguments
`(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out")) `(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
"CC=gcc") ,(string-append "CC=" ,(cc-for-target)))
#:tests? #f ;test input not distributed #:tests? #f ;test input not distributed
#:phases #:phases
;; no configure phase ;; no configure phase

View file

@ -2,7 +2,7 @@
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; 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, 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 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
@ -93,14 +93,18 @@
(rename-file (string-append out "/bin/transmission-gtk") (rename-file (string-append out "/bin/transmission-gtk")
(string-append gui "/bin/transmission-gtk")) (string-append gui "/bin/transmission-gtk"))
;; Move the '.desktop' and icon files as well.
(mkdir (string-append gui "/share")) (mkdir (string-append gui "/share"))
(for-each (for-each
(lambda (dir) (lambda (dir)
(rename-file (string-append out "/share/" dir) (rename-file (string-append out "/share/" dir)
(string-append gui "/share/" dir))) (string-append gui "/share/" dir)))
'("applications" "icons" "pixmaps"))) '("appdata" "applications" "icons" "locale" "pixmaps"))
#t)))))
(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 (inputs
`(("libevent" ,libevent) `(("libevent" ,libevent)
("curl" ,curl) ("curl" ,curl)
@ -355,7 +359,7 @@ downloads, download scheduling, download rate limiting.")
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
(delete 'configure)) ; no configure script (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")) (string-append "PREFIX=" (assoc-ref %outputs "out"))
"NO_HASH_CHECK=1" "NO_HASH_CHECK=1"
"USE_LARGE_FILES=1" "USE_LARGE_FILES=1"

View file

@ -134,6 +134,19 @@
(string-append (assoc-ref inputs "console-setup") (string-append (assoc-ref inputs "console-setup")
"/bin/ckbcomp "))) "/bin/ckbcomp ")))
#t)) #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 (add-before 'check 'disable-flaky-test
(lambda _ (lambda _
;; This test is unreliable. For more information, see: ;; This test is unreliable. For more information, see:
@ -150,10 +163,11 @@
(("test_unset grub_func_test") (("test_unset grub_func_test")
"test_unset")) "test_unset"))
#t))) #t)))
;; Disable tests on ARM and AARCH64 platforms. ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling.
#:tests? ,(not (any (cute string-prefix? <> (or (%current-target-system) #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system)
(%current-system))) (%current-system)))
'("arm" "aarch64"))))) '("arm" "aarch64"))
(%current-target-system)))))
(inputs (inputs
`(("gettext" ,gettext-minimal) `(("gettext" ,gettext-minimal)
@ -195,6 +209,7 @@
("flex" ,flex) ("flex" ,flex)
("texinfo" ,texinfo) ("texinfo" ,texinfo)
("help2man" ,help2man) ("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 ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils
;; capable of assembling 64-bit instructions. However, our default ;; capable of assembling 64-bit instructions. However, our default
@ -425,7 +440,7 @@ menu to select one of the installed operating systems.")
`(("python" ,python))) `(("python" ,python)))
(arguments (arguments
`(#:make-flags `(#:make-flags
(list "CC=gcc" (list (string-append "CC=" ,(cc-for-target))
;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1. ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1.
(string-append "LDFLAGS=-Wl,-rpath=" (string-append "LDFLAGS=-Wl,-rpath="
@ -436,6 +451,15 @@ menu to select one of the installed operating systems.")
"INSTALL=install") "INSTALL=install")
#:phases #:phases
(modify-phases %standard-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 (delete 'configure)))) ; no configure script
(home-page "https://www.devicetree.org") (home-page "https://www.devicetree.org")
(synopsis "Compiles device tree source files") (synopsis "Compiles device tree source files")

View file

@ -11,6 +11,7 @@
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org> ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -67,7 +68,7 @@
"13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6")))) "13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:make-flags `("CC=gcc" `(#:make-flags `(,(string-append "CC=" ,(cc-for-target))
,(string-append "INSTALL_PREFIX=" ,(string-append "INSTALL_PREFIX="
(assoc-ref %outputs "out"))) (assoc-ref %outputs "out")))
#:test-target "test" #:test-target "test"
@ -252,7 +253,7 @@ resembles Python.")
(native-inputs (native-inputs
`(("unzip" ,unzip))) ; for unpacking the source `(("unzip" ,unzip))) ; for unpacking the source
(arguments (arguments
`(#:make-flags '("CC=gcc") `(#:make-flags (list (string-append "CC=" ,(cc-for-target)))
#:tests? #f ; No test suite #:tests? #f ; No test suite
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View file

@ -3,7 +3,7 @@
;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; 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 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@ -28,6 +28,7 @@
(define-module (gnu packages c) (define-module (gnu packages c)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
@ -518,7 +519,8 @@ replacement for the syslog() call, but retains its ease of use.")
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
(delete 'configure)) (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 #:tests? #f)) ;no test suite
(native-inputs (native-inputs
`(("perl" ,perl))) `(("perl" ,perl)))

View file

@ -849,9 +849,9 @@ time for compression ratio.")
"0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9")))) "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; no check target `(#:tests? #f ; no check target
#:make-flags #:make-flags
(list "CC=gcc" (list (string-append "CC=" ,(cc-for-target))
"XZ_SUPPORT=1" "XZ_SUPPORT=1"
"LZO_SUPPORT=1" "LZO_SUPPORT=1"
"LZ4_SUPPORT=1" "LZ4_SUPPORT=1"
@ -956,7 +956,8 @@ tarballs.")
"0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq")))) "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (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"))) (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases (modify-phases %standard-phases #:phases (modify-phases %standard-phases
(delete 'configure) (delete 'configure)
@ -1426,7 +1427,10 @@ or junctions, and always follows hard links.")
#t)))) #t))))
#:make-flags #: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 "PREFIX=" (assoc-ref %outputs "out"))
(string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib") (string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib")
(string-append "INCLUDEDIR=" (assoc-ref %outputs "lib") "/include") (string-append "INCLUDEDIR=" (assoc-ref %outputs "lib") "/include")
@ -1458,8 +1462,14 @@ speed.")
(version (package-version zstd)) (version (package-version zstd))
(source (package-source zstd)) (source (package-source zstd))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs
`(,@(if (%current-target-system)
`(("googletest" ,googletest))
'())))
(native-inputs (native-inputs
`(("googletest" ,googletest))) `(,@(if (%current-system)
`(("googletest" ,googletest))
'())))
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
@ -1477,7 +1487,8 @@ speed.")
(install-file "README.md" doc) (install-file "README.md" doc)
#t)))) #t))))
#:make-flags #: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"))))) (string-append "PREFIX=" (assoc-ref %outputs "out")))))
(home-page (package-home-page zstd)) (home-page (package-home-page zstd))
(synopsis "Threaded implementation of the Zstandard compression algorithm") (synopsis "Threaded implementation of the Zstandard compression algorithm")

View file

@ -194,7 +194,7 @@ combination of these streams.")
(define-public xsimd (define-public xsimd
(package (package
(name "xsimd") (name "xsimd")
(version "7.2.3") (version "7.4.9")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -202,7 +202,7 @@ combination of these streams.")
(url "https://github.com/QuantStack/xsimd") (url "https://github.com/QuantStack/xsimd")
(commit version))) (commit version)))
(sha256 (sha256
(base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j")) (base32 "11by8gbshm4vv6flqp0ihff8c6nmbaqq7ms93b38rrq68bigcply"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
@ -212,11 +212,12 @@ combination of these streams.")
`(("googletest" ,googletest))) `(("googletest" ,googletest)))
(home-page "https://github.com/QuantStack/xsimd") (home-page "https://github.com/QuantStack/xsimd")
(synopsis "C++ wrappers for SIMD intrinsics and math implementations") (synopsis "C++ wrappers for SIMD intrinsics and math implementations")
(description "xsimd provides a unified means for using SIMD features for (description
library authors. Namely, it enables manipulation of batches of numbers with "xsimd provides a unified means for using @acronym{SIMD, single instruction
the same arithmetic operators as for single values. It also provides multiple data} features for library authors. Namely, it enables manipulation of
accelerated implementation of common mathematical functions operating on batches of numbers with the same arithmetic operators as for single values.
batches.") It also provides accelerated implementation of common mathematical functions
operating on batches.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public chaiscript (define-public chaiscript

View file

@ -5,7 +5,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; 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 © 2017 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@ -444,15 +444,14 @@ total number of shares generated.")
(define-public tomb (define-public tomb
(package (package
(name "tomb") (name "tomb")
(version "2.7") (version "2.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://files.dyne.org/tomb/" (uri (string-append "https://files.dyne.org/tomb/releases/"
"Tomb-" version ".tar.gz")) "Tomb-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0x3al02796vx1cvy6y6h685c367qx70dwv471g0hmks2gr10f0cn")) "0bggzzqmpfiknr76lyl8iszybrcpyqlbgiqk47fxq08h2b5ln1ic"))))
(patches (search-patches "tomb-fix-errors-on-open.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("sudo" ,sudo))) ;presence needed for 'check' phase (native-inputs `(("sudo" ,sudo))) ;presence needed for 'check' phase
(inputs (inputs
@ -1230,7 +1229,7 @@ Trusted comments are signed, thus verified, before being displayed.")
(define-public libolm (define-public libolm
(package (package
(name "libolm") (name "libolm")
(version "3.1.5") (version "3.2.1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -1238,15 +1237,16 @@ Trusted comments are signed, thus verified, before being displayed.")
(commit version))) (commit version)))
(sha256 (sha256
(base32 (base32
"030g0jmmvhx2dh32k708sz6cdd5q1wz48i4gigh6dclqk10w28lm")) "14b5cplcnbf2baq0lvz4f97m6swxpb13rvxdajxyw3s4mbvasia4"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'check (replace 'check
(lambda _ (lambda _
(invoke "ctest" "build/tests")))))) (with-directory-excursion "tests"
(build-system cmake-build-system) (invoke "ctest" ".")))))))
(synopsis "Implementation of the olm and megolm cryptographic ratchets") (synopsis "Implementation of the olm and megolm cryptographic ratchets")
(description "The libolm library implements the Double Ratchet (description "The libolm library implements the Double Ratchet
cryptographic ratchet. It is written in C and C++11, and exposed as a C cryptographic ratchet. It is written in C and C++11, and exposed as a C

View file

@ -49,7 +49,7 @@
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix svn-download) #:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix utils) #:use-module (guix utils)
@ -797,27 +797,32 @@ language.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public splix (define-public splix
;; The last release was in 2009. The SVN repository contains 5 years of ;; Last released in 2009 <https://sourceforge.net/projects/splix/files/>.
;; unreleased bug fixes and support for newer printer models. ;; Last SVN commit was 2013 <https://svn.code.sf.net/p/splix/code/splix/>.
(let ((revision 315)) ;; Use a more maintained fork with several bug fixes and support for newer
;; printer models.
(let ((commit "76268c4dd7dbc8218ea7426401104c3b40cc707a")
(revision "315"))
(package (package
(name "splix") (name "splix")
(version (string-append "2.0.0-" (number->string revision))) (version (git-version "2.0.0" revision commit))
(source (source
(origin (origin
(method svn-fetch) (method git-fetch)
(uri (svn-reference (uri (git-reference
(url "https://svn.code.sf.net/p/splix/code/splix/") (url "https://gitlab.com/ScumCoder/splix")
(revision revision))) (commit commit)))
(file-name (string-append name "-" version "-checkout")) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "16wbm4xnz35ca3mw2iggf5f4jaxpyna718ia190ka6y4ah932jxl")))) (base32 "1mxsvllwwr1v8sgrax0b7gkajjhnm0l06s67spmaxz47lyll1qab"))))
(build-system gnu-build-system) (build-system gnu-build-system)
;; 90% (3.8 MiB) of output are .ppd files. Don't install them by default: ;; PPDs have been obsolete since CUPS 1.2 and make up 90% of total size.
;; CUPS has been able to read the .drv sources directly since version 1.2.
(outputs (list "out" "ppd")) (outputs (list "out" "ppd"))
(arguments (arguments
'(#:make-flags `(#:modules
((srfi srfi-26)
,@%gnu-build-system-modules)
#:make-flags
(list (string-append "CUPSDRV=" (list (string-append "CUPSDRV="
(assoc-ref %outputs "out") "/share/cups/drv") (assoc-ref %outputs "out") "/share/cups/drv")
(string-append "CUPSFILTER=" (string-append "CUPSFILTER="
@ -828,21 +833,28 @@ language.")
"THREADS=4") ; compress and print faster "THREADS=4") ; compress and print faster
#:phases #:phases
(modify-phases %standard-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 (delete 'configure) ; no configure script
(add-before 'build 'build-.drv-files (add-before 'build 'build-.drv-files
(lambda* (#:key make-flags #:allow-other-keys) (lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "drv" make-flags))) (apply invoke "make" "drv" make-flags)))
(add-after 'install 'install-.drv-files (add-after 'install 'install-.drv-files
(lambda* (#:key make-flags #:allow-other-keys) (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 #:tests? #f)) ; no test suite
(inputs (inputs
`(("cups" ,cups-minimal) `(("cups" ,cups-minimal)
("zlib" ,zlib) ("jbigkit" ,jbigkit)
("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)))
(synopsis "QPDL (SPL2) printer driver") (synopsis "QPDL (SPL2) printer driver")
(description (description
"SpliX is a set of CUPS drivers for printers that speak @acronym{QPDL, "SpliX is a set of CUPS drivers for printers that speak @acronym{QPDL,

View file

@ -1308,12 +1308,12 @@ organized in a hash table or B+ tree.")
(native-inputs `(("bc" ,bc) (native-inputs `(("bc" ,bc)
("bash:include" ,bash "include") ("bash:include" ,bash "include")
("check" ,check-0.14) ("check" ,check-0.14)
("libuuid" ,util-linux)
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
;; TODO: Add more optional inputs. ;; TODO: Add more optional inputs.
(inputs `(("curl" ,curl) (inputs `(("curl" ,curl)
("libgcrypt" ,libgcrypt))) ("libgcrypt" ,libgcrypt)
("libuuid" ,util-linux "lib")))
(synopsis "Manipulate plain text files as databases") (synopsis "Manipulate plain text files as databases")
(description (description
"GNU Recutils is a set of tools and libraries for creating and "GNU Recutils is a set of tools and libraries for creating and
@ -2421,17 +2421,16 @@ on another machine, accessed via TCP/IP.")
(define-public python-peewee (define-public python-peewee
(package (package
(name "python-peewee") (name "python-peewee")
(version "3.13.3") (version "3.14.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "peewee" version)) (uri (pypi-uri "peewee" version))
(sha256 (sha256
(base32 (base32 "1yl49gxrg0c2x3n3r60z3lixw9am8b61s0477l9vjabhhx1yziar"))))
"0sc376v6rxga4b7ic9kxw2pmf28rmcx016320pa2nlb5d1rsjs8j"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:tests? #f)) ; Fails to import test data `(#:tests? #f)) ; fails to import test data
(inputs (inputs
`(("sqlite" ,sqlite))) `(("sqlite" ,sqlite)))
(native-inputs (native-inputs
@ -3458,7 +3457,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
(define-public python-pypika (define-public python-pypika
(package (package
(name "python-pypika") (name "python-pypika")
(version "0.37.2") (version "0.44.0")
(source (source
(origin (method git-fetch) (origin (method git-fetch)
(uri (git-reference (uri (git-reference
@ -3467,7 +3466,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck")))) "0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-parameterized" ,python-parameterized))) `(("python-parameterized" ,python-parameterized)))

View file

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

View file

@ -2,6 +2,7 @@
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -26,9 +27,15 @@
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages check)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages image) #: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 pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages xorg)) #:use-module (gnu packages xorg))
@ -112,3 +119,44 @@ files, and printing page and documents.
The viewer can simultaneously display several pages using a side-by-side or The viewer can simultaneously display several pages using a side-by-side or
a continuous layout.") a continuous layout.")
(license license:gpl2+))) (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 @@ easy.")
(define-public snap (define-public snap
(package (package
(name "snap") (name "snap")
(version "6.3.1") (version "6.3.3")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -284,7 +284,7 @@ easy.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1109xrvq1vszs74jhzdzhc1isij1hx6brb0w45m0i6sl0xxdrdhb")))) (base32 "0zlyk241s6sh5zaqrvfpg4lx7jdifajsdf6c9qhh77vxxh5gwzrc"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments (arguments
`(#:modules ((guix build utils)) `(#:modules ((guix build utils))

View file

@ -1871,12 +1871,12 @@ than @code{electric-indent-mode}.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public emacs-gcmh (define-public emacs-gcmh
;; No tagged release upstream. ;; No tagged release upstream, but the commit below correspond to the 0.2.1
(let ((commit "84c43a4c0b41a595ac6e299fa317d2831813e580") ;; release.
(revision "0")) (let ((commit "0089f9c3a6d4e9a310d0791cf6fa8f35642ecfd9"))
(package (package
(name "emacs-gcmh") (name "emacs-gcmh")
(version (git-version "0.1" revision commit)) (version "0.2.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1884,7 +1884,7 @@ than @code{electric-indent-mode}.")
(url "https://gitlab.com/koral/gcmh") (url "https://gitlab.com/koral/gcmh")
(commit commit))) (commit commit)))
(sha256 (sha256
(base32 "1r3wiqhrzh7wvqy484nl031fd4bn4cpvkv9646s4cjgvnnnv7jz3")) (base32 "0yh1ap8phv3x44rp0yr6z884xqw2apanbx4c0acqglvj0gaaqx25"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system emacs-build-system) (build-system emacs-build-system)
(home-page "https://gitlab.com/koral/gcmh") (home-page "https://gitlab.com/koral/gcmh")
@ -2604,14 +2604,14 @@ filters, new key bindings and faces. It can be enabled by
(define-public emacs-djvu (define-public emacs-djvu
(package (package
(name "emacs-djvu") (name "emacs-djvu")
(version "1.1") (version "1.1.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/" (uri (string-append "https://elpa.gnu.org/packages/"
"djvu-" version ".el")) "djvu-" version ".el"))
(sha256 (sha256
(base32 "0njgyx09q225hliacsnjk8wallg5i6xkz6bj501pb05nwqfbvfk7")))) (base32 "0z2qk1v4qkvcwl27ycqfb8vyszq5v6b8ci29b4la00yaki16p04i"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(inputs `(("djview" ,djview) (inputs `(("djview" ,djview)
("djvulibre" ,djvulibre))) ("djvulibre" ,djvulibre)))
@ -8904,7 +8904,7 @@ ack, ag, helm and pt.")
(define-public emacs-helm (define-public emacs-helm
(package (package
(name "emacs-helm") (name "emacs-helm")
(version "3.6.5") (version "3.7.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -8913,7 +8913,7 @@ ack, ag, helm and pt.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0yzpb84346v42ig4h0rsnvzmln58ilhc0gsq0ggc7038ypqkdw4d")))) (base32 "0lxq13bsbh7xawgsq08kjm7s28x9yl8mid3538flv5kcc1rv2b9y"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(propagated-inputs (propagated-inputs
`(("emacs-async" ,emacs-async) `(("emacs-async" ,emacs-async)
@ -11371,6 +11371,35 @@ constructs.")
configuration of Chinese fonts.") configuration of Chinese fonts.")
(license license:gpl2+))) (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 (define-public emacs-csharp-mode
(package (package
(name "emacs-csharp-mode") (name "emacs-csharp-mode")
@ -11494,14 +11523,14 @@ and cangjie.")
(define-public emacs-posframe (define-public emacs-posframe
(package (package
(name "emacs-posframe") (name "emacs-posframe")
(version "0.8.2") (version "0.8.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/" (uri (string-append "https://elpa.gnu.org/packages/"
"posframe-" version ".el")) "posframe-" version ".el"))
(sha256 (sha256
(base32 "1yrk2bnlx5bpkjkzqialf0q4bdp9c5pipnvj3zsb5hbjni24x0yb")))) (base32 "05m56aw2yxik0pgcvyr5c92j2mwfksxgq1syzvik6161gy8hdd0g"))))
(build-system emacs-build-system) (build-system emacs-build-system)
;; emacs-minimal does not include the function font-info. ;; emacs-minimal does not include the function font-info.
(arguments (arguments
@ -19428,10 +19457,10 @@ Emacs.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-matrix-client (define-public emacs-matrix-client
(let ((commit "a0623667b07a4bf60980c97b078e9faed97ace79")) (let ((commit "59c792423fd0503f1375f356bec56130e65d3b51"))
(package (package
(name "emacs-matrix-client") (name "emacs-matrix-client")
(version (git-version "0.0.0" "4" commit)) (version (git-version "0.0.0" "5" commit))
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -19440,7 +19469,7 @@ Emacs.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1zya8id3y9wzjaj7nplq7br6nhm3lsskv0fkn1xr1y77fzcfgcdb")))) "1gmpw14q9zkvviqpnmvh5vbyxk42038yilxm6b2zqw7mwxfc1xra"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -23538,6 +23567,29 @@ internal windowing system. This combines particularly well with tiling window
managers such as XMonad.") managers such as XMonad.")
(license license:gpl3+))) (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 (define-public emacs-shrink-path
(package (package
(name "emacs-shrink-path") (name "emacs-shrink-path")

View file

@ -1024,8 +1024,8 @@ the Raspberry Pi chip.")
(home-page "https://github.com/puppeh/vc4-toolchain/")))) (home-page "https://github.com/puppeh/vc4-toolchain/"))))
(define-public gcc-vc4 (define-public gcc-vc4
(let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2") (let ((commit "0fe4b83897341742f9df65797474cb0feab4b377")
(xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4))) (xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4)))
(package (inherit xgcc) (package (inherit xgcc)
(name "gcc-vc4") (name "gcc-vc4")
(source (origin (source (origin
@ -1039,7 +1039,10 @@ the Raspberry Pi chip.")
"-checkout")) "-checkout"))
(sha256 (sha256
(base32 (base32
"13h30qjcwnlz6lfma1d82nnvfmjnhh7abkagip4vly6vm5fpnvf2")))) "0kvaq4s0assvinmmicwqp07d0wwldcw0fv6f4k13whp3q5909jnr"))
(patches
(search-patches "gcc-6-fix-buffer-size.patch"
"gcc-6-fix-isl-includes.patch"))))
(native-inputs (native-inputs
`(("flex" ,flex) `(("flex" ,flex)
,@(package-native-inputs xgcc))) ,@(package-native-inputs xgcc)))

View file

@ -108,7 +108,7 @@
(define-public bitcoin-core (define-public bitcoin-core
(package (package
(name "bitcoin-core") (name "bitcoin-core")
(version "0.19.1") (version "0.20.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -116,11 +116,13 @@
version "/bitcoin-" version ".tar.gz")) version "/bitcoin-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj")) "0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab"))))
(patches (search-patches "bitcoin-core-python-compat.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)
("python" ,python) ; for the tests ("python" ,python) ; for the tests
("util-linux" ,util-linux) ; provides the hexdump command for tests ("util-linux" ,util-linux) ; provides the hexdump command for tests
("qttools" ,qttools))) ("qttools" ,qttools)))
@ -130,7 +132,6 @@
("libevent" ,libevent) ("libevent" ,libevent)
("miniupnpc" ,miniupnpc) ("miniupnpc" ,miniupnpc)
("openssl" ,openssl) ("openssl" ,openssl)
("protobuf" ,protobuf)
("qtbase" ,qtbase))) ("qtbase" ,qtbase)))
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -154,6 +155,13 @@
;; Make Qt deterministic. ;; Make Qt deterministic.
(setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
#t)) #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 (add-before 'check 'set-home
(lambda _ (lambda _
(setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME

View file

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

View file

@ -1605,7 +1605,14 @@ such as chess or stockfish.")
(native-inputs `(("python-2" ,python-2) (native-inputs `(("python-2" ,python-2)
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(arguments (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 (modify-phases %standard-phases
(add-after 'install 'install-desktop-file (add-after 'install 'install-desktop-file
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)

View file

@ -181,6 +181,7 @@ shared NFS home directories.")
(package (package
(name "glib") (name "glib")
(version "2.62.6") (version "2.62.6")
(replacement glib-with-gio-patch)
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" (uri (string-append "mirror://gnome/sources/"
@ -387,11 +388,20 @@ dynamic loading, and an object system.")
(home-page "https://developer.gnome.org/glib/") (home-page "https://developer.gnome.org/glib/")
(license license:lgpl2.1+))) (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 (define-public glib-with-documentation
;; glib's doc must be built in a separate package since it requires gtk-doc, ;; glib's doc must be built in a separate package since it requires gtk-doc,
;; which in turn depends on glib. ;; which in turn depends on glib.
(package (package/inherit glib
(inherit glib)
(properties (alist-delete 'hidden? (package-properties glib))) (properties (alist-delete 'hidden? (package-properties glib)))
(outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
(native-inputs (native-inputs

View file

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

View file

@ -2,6 +2,7 @@
;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -30,15 +31,14 @@
(define-public gnu-pw-mgr (define-public gnu-pw-mgr
(package (package
(name "gnu-pw-mgr") (name "gnu-pw-mgr")
(version "2.7") (version "2.7.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-" (uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32 "0fhwvsmsqpw0vnivarfg63l8pgwqfv7d5wi6l80jpb41dj6qpjz8"))))
"1ra8in91qx6n8jydb8kwl2rnqaa2hix5pyawn6nvyqs815h9gx17"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases '(#:phases
@ -50,7 +50,7 @@
#t)) #t))
(add-before 'check 'pre-check (add-before 'check 'pre-check
(lambda _ (lambda _
;; In build environment, There is no /dev/tty ;; In the build environment, there is no /dev/tty.
(substitute* "tests/base.test" (substitute* "tests/base.test"
(("/dev/tty") "/dev/null")) (("/dev/tty") "/dev/null"))
#t))))) #t)))))

View file

@ -401,13 +401,13 @@ libskba (working with X.509 certificates and CMS data).")
(define-public gpgme (define-public gpgme
(package (package
(name "gpgme") (name "gpgme")
(version "1.14.0") (version "1.15.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2")) (uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2"))
(sha256 (sha256
(base32 "01s3rlspykbm9vmi5rfbdm3d20ip6yni69r48idqzlmhlq8ggwff")))) (base32 "0nqfipv5s4npfidsm1rs3kpq0r0av9bfqfd5r035jibx5k0jniqb"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("gnupg" ,gnupg))) `(("gnupg" ,gnupg)))

View file

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

View file

@ -431,14 +431,14 @@ with the @command{autotrace} utility or as a C library, @code{libautotrace}.")
(define-public blender (define-public blender
(package (package
(name "blender") (name "blender")
(version "2.83.5") (version "2.83.9")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.blender.org/source/" (uri (string-append "https://download.blender.org/source/"
"blender-" version ".tar.xz")) "blender-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0xyawly00a59hfdb6b7va84k5fhcv2mxnzd77vs22bzi9y7sap43")))) "106w9vi6z0gi2nbr73g8pm40w3wn7dkjcibzvvzbc786yrnzvkhb"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
(let ((python-version (version-major+minor (package-version python)))) (let ((python-version (version-major+minor (package-version python))))

View file

@ -451,14 +451,14 @@ roots, or wrestle with obscure build systems.")
(define-public quickjs (define-public quickjs
(package (package
(name "quickjs") (name "quickjs")
(version "2020-09-06") (version "2020-11-08")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://bellard.org/quickjs/quickjs-" (uri (string-append "https://bellard.org/quickjs/quickjs-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"05vpnnzmws7plnwsnk2brwf7whyj84l5xl0iahi1xdn6rpla6880")))) "0yqqcjxi3cqagw184mqrxpvqg486x7c233r3cp9mxachngd6779f"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:make-flags `(#:make-flags

View file

@ -64,13 +64,16 @@
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("readline" ,readline))) (inputs `(("readline" ,readline)))
(arguments (arguments
'(#:modules ((guix build gnu-build-system) `(#:modules ((guix build gnu-build-system)
(guix build utils) (guix build utils)
(srfi srfi-1)) (srfi srfi-1))
#:test-target "test" #:test-target "test"
#:make-flags #:make-flags
'("MYCFLAGS=-fPIC -DLUA_DL_DLOPEN" (list "MYCFLAGS=-fPIC -DLUA_DL_DLOPEN"
"linux") (string-append "CC=" ,(cc-for-target))
(string-append "SYSLIBS=-L" (assoc-ref %build-inputs "readline")
"/lib")
"linux")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(delete 'configure) (delete 'configure)

View file

@ -38,6 +38,7 @@
;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de> ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -63,6 +64,7 @@
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages calendar) #:use-module (gnu packages calendar)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
@ -107,6 +109,7 @@
#:use-module (gnu packages man) #:use-module (gnu packages man)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages networking) #:use-module (gnu packages networking)
#:use-module (gnu packages ninja)
#:use-module (gnu packages openldap) #:use-module (gnu packages openldap)
#:use-module (gnu packages onc-rpc) #:use-module (gnu packages onc-rpc)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
@ -114,6 +117,7 @@
#:use-module (gnu packages perl-check) #:use-module (gnu packages perl-check)
#:use-module (gnu packages perl-web) #:use-module (gnu packages perl-web)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-check) #:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto) #:use-module (gnu packages python-crypto)
@ -593,12 +597,15 @@ It adds a large amount of new and improved features to mutt.")
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("gnupg" ,gnupg))) ; for tests only ("gnupg" ,gnupg) ; for tests only
("gobject-introspection" ,gobject-introspection)))
(inputs `(("glib" ,glib) (inputs `(("glib" ,glib)
("gpgme" ,gpgme) ("gpgme" ,gpgme)
("zlib" ,zlib))) ("zlib" ,zlib)))
(arguments (arguments
`(#:phases `(#:configure-flags
(list "--enable-introspection=yes")
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after (add-after
'unpack 'patch-paths-in-tests 'unpack 'patch-paths-in-tests
@ -700,6 +707,118 @@ mailpack. What can alterMIME do?
(license (list (license:non-copyleft "file://LICENSE") (license (list (license:non-copyleft "file://LICENSE")
license:bsd-3)))) 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 (define-public ripmime
;; Upstream does not tag or otherwise provide any releases (only a version ;; Upstream does not tag or otherwise provide any releases (only a version
;; number in the source) ;; number in the source)
@ -2482,17 +2601,68 @@ existing mail server. With Postfix, the proxies can operate as either
converts them to maildir format directories.") converts them to maildir format directories.")
(license license:public-domain))) (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 (define-public mpop
(package (package
(name "mpop") (name "mpop")
(version "1.4.10") (version "1.4.11")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://marlam.de/mpop/releases/" (uri (string-append "https://marlam.de/mpop/releases/"
"mpop-" version ".tar.xz")) "mpop-" version ".tar.xz"))
(sha256 (sha256
(base32 "1243hazpiwgvz2m3p48cdh0yw1019i6xjxgc7qyhmxcdy0inb6wy")))) (base32 "1gcxvhin5y0q47svqbf90r5aip0cgywm8sq6m84ygda7km8xylwv"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("gnutls" ,gnutls))) `(("gnutls" ,gnutls)))

View file

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

View file

@ -158,7 +158,7 @@ etc. via a Web interface. Features include:
(define-public zabbix-agentd (define-public zabbix-agentd
(package (package
(name "zabbix-agentd") (name "zabbix-agentd")
(version "5.2.0") (version "5.2.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -166,7 +166,7 @@ etc. via a Web interface. Features include:
"https://cdn.zabbix.com/zabbix/sources/stable/" "https://cdn.zabbix.com/zabbix/sources/stable/"
(version-major+minor version) "/zabbix-" version ".tar.gz")) (version-major+minor version) "/zabbix-" version ".tar.gz"))
(sha256 (sha256
(base32 "168yi9igwkb4jcdw38kvp85n8mxnlg2n7lkrgaycp8b0dlgjnidl")))) (base32 "0rz5hg0r2m6qc0dj9b57g96dgilbg8i0rjhm4v9025v51jkby3xq"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags

View file

@ -141,6 +141,34 @@
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (ice-9 match)) #: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. ;; This package does not have a release yet.
;; But this is required to provide a feature in PipeWire. ;; But this is required to provide a feature in PipeWire.
(define-public libcamera (define-public libcamera
@ -2142,14 +2170,14 @@ HTTP proxies.")
(define-public enet (define-public enet
(package (package
(name "enet") (name "enet")
(version "1.3.16") (version "1.3.17")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://enet.bespin.org/download/" (uri (string-append "http://enet.bespin.org/download/"
"enet-" version ".tar.gz")) "enet-" version ".tar.gz"))
(sha256 (sha256
(base32 "1lggc82rbzscci057dqqyhkbq4j6mr5k01hbrvn06jkzc2xpxdxv")))) (base32 "1p6f9mby86af6cs7pv6h48032ip9g32c05cb7d9mimam8lchz3x3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View file

@ -207,14 +207,14 @@ devices.")
(define-public node-10.22 (define-public node-10.22
(package (package
(inherit node) (inherit node)
(version "10.22.0") (version "10.22.1")
(source (origin (source (origin
(inherit (package-source node)) (inherit (package-source node))
(uri (string-append "https://nodejs.org/dist/v" version (uri (string-append "https://nodejs.org/dist/v" version
"/node-v" version ".tar.xz")) "/node-v" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1nz18fa550li10r0kzsm28c2rvvq61nq8bqdygip0rmvbi2paxg0")))) "0pr569qiabr4m7k38s7rwi3iyzrc5jmx19z2z0k7n4xfvhjlfzzl"))))
(inputs (inputs
(alist-replace "nghttp2" (list nghttp2-1.41 "lib") (alist-replace "nghttp2" (list nghttp2-1.41 "lib")
(package-inputs node))))) (package-inputs node)))))

View file

@ -5802,7 +5802,9 @@ convenience functions for vectors and matrices.")
"0wzysis9fa850s68qh8vrvqc6svgllhwra3kzll2ibv0wmdqrich")))) "0wzysis9fa850s68qh8vrvqc6svgllhwra3kzll2ibv0wmdqrich"))))
(build-system dune-build-system) (build-system dune-build-system)
(arguments (arguments
`(#:test-target "tests")) `(;; FIXME: (got signal SEGV) #44725
#:tests? #f
#:test-target "tests"))
(inputs (inputs
`(("cairo" ,cairo) `(("cairo" ,cairo)
("gtk+-2" ,gtk+-2) ("gtk+-2" ,gtk+-2)

View file

@ -130,9 +130,9 @@
;; Latest version of Guix, which may or may not correspond to a release. ;; Latest version of Guix, which may or may not correspond to a release.
;; Note: the 'update-guix-package.scm' script expects this definition to ;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this. ;; start precisely like this.
(let ((version "1.1.0") (let ((version "1.2.0rc1")
(commit "5e7cf66fb35780f930ad0bc5fe21ac330df4411d") (commit "3ba6ffd0dd092ae879d014e4971989f231eaa56d")
(revision 32)) (revision 1))
(package (package
(name "guix") (name "guix")
@ -148,7 +148,7 @@
(commit commit))) (commit commit)))
(sha256 (sha256
(base32 (base32
"15clfjp845gvl0p6qw0b1gdibqfq20zwzr6dbxvq8l9fgzj1kb6b")) "1wa67gdipmzqr400hp0cw5ih0rlfvj345h65rqbk9s4g3bkg38hm"))
(file-name (string-append "guix-" version "-checkout")))) (file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -336,7 +336,13 @@ $(prefix)/etc/init.d\n")))
(let ((bash (assoc-ref inputs "bash"))) (let ((bash (assoc-ref inputs "bash")))
(substitute* (string-append out "/bin/guix") (substitute* (string-append out "/bin/guix")
(("^#!.*/bash") (string-append "#! " bash "/bin/bash"))))) (("^#!.*/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) (native-inputs `(("pkg-config" ,pkg-config)
;; Guile libraries are needed here for ;; 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 -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 --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc -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 -echo Extracting Firefox tarball
-tar -xf firefox-${FFVERSION}esr.source.tar.xz -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 +# 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 --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
+# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc +# 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 +# echo Extracting Firefox tarball
+# tar -xf firefox-${FFVERSION}esr.source.tar.xz +# 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 @@ multiple files.")
(define-public pdfpc (define-public pdfpc
(package (package
(name "pdfpc") (name "pdfpc")
(version "4.4.0") (version "4.4.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1270,7 +1270,7 @@ multiple files.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0vh2r32akvasdrghkaq7ard24r2qncp34jfiyshi3zxabm9bhfaa")))) (base32 "11n925c5jj3yfwnqkgxzqrmsrpqh8ls1g4idmqqzpsanpam1xvna"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments '(#:tests? #f)) ; no test target (arguments '(#:tests? #f)) ; no test target
(inputs (inputs

View file

@ -26,7 +26,7 @@
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> ;;; 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 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
@ -2898,21 +2898,30 @@ pretty printer and a tree visitor.")
(name "python-flask-basicauth") (name "python-flask-basicauth")
(version "0.2.0") (version "0.2.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "Flask-BasicAuth" version)) (uri (pypi-uri "Flask-BasicAuth" version))
(sha256 (sha256
(base32 (base32
"1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz")))) "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
(build-system python-build-system) (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 (propagated-inputs
`(("python-flask" ,python-flask))) `(("python-flask" ,python-flask)))
(home-page (home-page "https://github.com/jpvanhal/flask-basicauth")
"https://github.com/jpvanhal/flask-basicauth") (synopsis "HTTP basic access authentication for Flask")
(synopsis
"HTTP basic access authentication for Flask")
(description (description
"This package provides HTTP basic access authentication for Flask.") "This package provides HTTP basic access authentication for Flask.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public python-flask-htpasswd (define-public python-flask-htpasswd

View file

@ -90,6 +90,7 @@
;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com> ;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de> ;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -17200,14 +17201,14 @@ such as figshare or Zenodo.")
(base32 (base32
"183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd")))) "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd"))))
(build-system python-build-system) (build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda _
(delete-file "setup.cfg")
(invoke "py.test"))))))
(native-inputs (native-inputs
`(("python-appdirs" ,python-appdirs) `(("python-pytest" ,python-pytest)))
("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)))
(home-page "https://github.com/k-bx/python-semver") (home-page "https://github.com/k-bx/python-semver")
(synopsis "Python helper for Semantic Versioning") (synopsis "Python helper for Semantic Versioning")
(description "This package provides a Python library for (description "This package provides a Python library for
@ -18246,6 +18247,109 @@ gevent-powered application.")
(define-public python2-gipc (define-public python2-gipc
(package-with-python2 python-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 (define-public python-fusepy
(package (package
(name "python-fusepy") (name "python-fusepy")
@ -22533,6 +22637,41 @@ a Python library to convert RELAX NG schemata in Compact syntax (rnc) to
equivalent schemata in the XML-based default RELAX NG syntax.") equivalent schemata in the XML-based default RELAX NG syntax.")
(license license:expat))) (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 (define-public python-citeproc-py
(package (package
(name "python-citeproc-py") (name "python-citeproc-py")

View file

@ -577,14 +577,14 @@ using GNU Radio and the Qt GUI toolkit.")
(define-public fldigi (define-public fldigi
(package (package
(name "fldigi") (name "fldigi")
(version "4.1.15") (version "4.1.16")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://www.w1hkj.com/files/fldigi/fldigi-" (uri (string-append "http://www.w1hkj.com/files/fldigi/fldigi-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 "1fzbcv2dgg6byb2l8m2d6i69yn0a44pq52mpmms756jdf6z622i6")))) (base32 "1dfkvhs0ri5kbyskk730ik8ix5z138qys26b31p6kixd8jjkw3k4"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View file

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

View file

@ -391,6 +391,16 @@ as well as the classic centralized workflow.")
(install-file "contrib/subtree/git-subtree.1" (install-file "contrib/subtree/git-subtree.1"
(string-append subtree "/share/man/man1")) (string-append subtree "/share/man/man1"))
#t))) #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 (add-after 'install 'split
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
;; Split the binaries to the various outputs. ;; Split the binaries to the various outputs.

View file

@ -2188,14 +2188,14 @@ To load this plugin, specify the following option when starting mpv:
(define-public youtube-dl (define-public youtube-dl
(package (package
(name "youtube-dl") (name "youtube-dl")
(version "2020.11.12") (version "2020.11.17")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://youtube-dl.org/downloads/latest/" (uri (string-append "https://youtube-dl.org/downloads/latest/"
"youtube-dl-" version ".tar.gz")) "youtube-dl-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0c98sjaj6mvxnjp0qnwqbr6fibgb4dlizad2xvkiswf4g4h0pc5f")))) "0b0vsmvnm2jn1k66jmymzly0nb34nk79z97msns0sw0cqhbld1b2"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; The problem here is that the directory for the man page and completion ;; The problem here is that the directory for the man page and completion
@ -2653,7 +2653,7 @@ for use with HTML5 video.")
(define-public avidemux (define-public avidemux
(package (package
(name "avidemux") (name "avidemux")
(version "2.7.4") (version "2.7.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2661,7 +2661,7 @@ for use with HTML5 video.")
"avidemux_" version ".tar.gz")) "avidemux_" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x")) "1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s"))
(patches (search-patches "avidemux-install-to-lib.patch")))) (patches (search-patches "avidemux-install-to-lib.patch"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs
@ -2679,6 +2679,7 @@ for use with HTML5 video.")
("glu" ,glu) ("glu" ,glu)
("jack" ,jack-1) ("jack" ,jack-1)
("lame" ,lame) ("lame" ,lame)
("libaom" ,libaom)
("libva" ,libva) ("libva" ,libva)
("libvdpau" ,libvdpau) ("libvdpau" ,libvdpau)
("libvorbis" ,libvorbis) ("libvorbis" ,libvorbis)
@ -2693,7 +2694,7 @@ for use with HTML5 video.")
#:phases #:phases
;; Make sure files inside the included ffmpeg tarball are ;; Make sure files inside the included ffmpeg tarball are
;; patch-shebanged. ;; patch-shebanged.
(let ((ffmpeg "ffmpeg-4.1.4")) (let ((ffmpeg "ffmpeg-4.2.3"))
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'patch-source-shebangs 'unpack-ffmpeg (add-before 'patch-source-shebangs 'unpack-ffmpeg
(lambda _ (lambda _
@ -3798,7 +3799,7 @@ iTunes-style metadata.")
(define-public livemedia-utils (define-public livemedia-utils
(package (package
(name "livemedia-utils") (name "livemedia-utils")
(version "2019.05.29") (version "2020.11.05")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -3806,11 +3807,12 @@ iTunes-style metadata.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my")))) "1dx5imjil5yiya5dqlvbqkvzgic5pybsfilx5jz1cpi1znkzpgc9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; no tests `(#:tests? #f ; no tests
#:make-flags (list "CC=gcc" #:make-flags (list (string-append "CC=" ,(cc-for-target))
(string-append "CXX=" ,(cxx-for-target))
(string-append "LDFLAGS=-Wl,-rpath=" (string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib") (assoc-ref %outputs "out") "/lib")
(string-append "PREFIX=" (string-append "PREFIX="
@ -3825,6 +3827,8 @@ iTunes-style metadata.")
(lambda _ (lambda _
(invoke "./genMakefiles" (invoke "./genMakefiles"
"linux-with-shared-libraries")))))) "linux-with-shared-libraries"))))))
(inputs
`(("openssl" ,openssl)))
(home-page "http://www.live555.com/liveMedia/") (home-page "http://www.live555.com/liveMedia/")
(synopsis "Set of C++ libraries for multimedia streaming") (synopsis "Set of C++ libraries for multimedia streaming")
(description "This code forms a set of C++ libraries for multimedia (description "This code forms a set of C++ libraries for multimedia

View file

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

View file

@ -505,7 +505,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
(define-public wireguard-linux-compat (define-public wireguard-linux-compat
(package (package
(name "wireguard-linux-compat") (name "wireguard-linux-compat")
(version "1.0.20200623") (version "1.0.20201112")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://git.zx2c4.com/wireguard-linux-compat/" (uri (string-append "https://git.zx2c4.com/wireguard-linux-compat/"
@ -513,12 +513,13 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
".tar.xz")) ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0iclixsqfckaz6kz6a4lhzdary3xhfy1d0pz0pgrwy8m8mr3f28k")))) "1qcpg1rcmy4h529a0spjm50qgxjgjy20j29fpbrqsv5xq3qfgsl9"))))
(build-system linux-module-build-system) (build-system linux-module-build-system)
(outputs '("out" (outputs '("out"
"kernel-patch")) "kernel-patch"))
(arguments (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) #:modules ((guix build linux-module-build-system)
(guix build utils) (guix build utils)
(ice-9 popen) (ice-9 popen)
@ -538,7 +539,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
(call-with-output-file "wireguard.patch" (call-with-output-file "wireguard.patch"
(lambda (port) (lambda (port)
(format port "~a" str)))) (format port "~a" str))))
#t)) #t))
(add-after 'install 'install-patch (add-after 'install 'install-patch
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(install-file "wireguard.patch" (install-file "wireguard.patch"

View file

@ -1424,7 +1424,7 @@ used to validate and fix HTML data.")
(define-public esbuild (define-public esbuild
(package (package
(name "esbuild") (name "esbuild")
(version "0.8.4") (version "0.8.7")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1434,7 +1434,7 @@ used to validate and fix HTML data.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0aaqyfnl4dncrpw8n2sqkkavx7ki7i2r9pdi82pp9syql3b5495y")) "14x95dmh4jrfp93p7ln0cv917qxll04sqzlpf9rl6w01fifr2s75"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View file

@ -843,7 +843,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
(define-public xlockmore (define-public xlockmore
(package (package
(name "xlockmore") (name "xlockmore")
(version "5.62") (version "5.66")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "http://sillycycle.com/xlock/" (uri (list (string-append "http://sillycycle.com/xlock/"
@ -854,7 +854,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
"xlockmore-" version ".tar.xz"))) "xlockmore-" version ".tar.xz")))
(sha256 (sha256
(base32 (base32
"0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi")))) "0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags (list (string-append "--enable-appdefaultdir=" '(#:configure-flags (list (string-append "--enable-appdefaultdir="

View file

@ -6076,17 +6076,17 @@ to answer a question. Xmessage can also exit after a specified time.")
(define-public xterm (define-public xterm
(package (package
(name "xterm") (name "xterm")
(version "361") (version "362")
(source (origin (source
(method url-fetch) (origin
(uri (list (method url-fetch)
(string-append "http://invisible-mirror.net/archives/xterm/" (uri (list
"xterm-" version ".tgz") (string-append "https://invisible-mirror.net/archives/xterm/"
(string-append "ftp://ftp.invisible-island.net/xterm/" "xterm-" version ".tgz")
"xterm-" version ".tgz"))) (string-append "ftp://ftp.invisible-island.net/xterm/"
(sha256 "xterm-" version ".tgz")))
(base32 (sha256
"0gv27akkfb796aww1snq3c2sxmi8vajgfxk83g60awp4slh0yqc5")))) (base32 "18mch57f5sypgfdbvna22ailcfpnixw0fc5wkf2j3w58dwigwkqx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts" '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts"

View file

@ -106,6 +106,12 @@
agetty-service-type agetty-service-type
mingetty-configuration 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-configuration?
mingetty-service mingetty-service
mingetty-service-type mingetty-service-type

View file

@ -482,7 +482,7 @@ programs.")
(package cups) (package cups)
"The CUPS package.") "The CUPS package.")
(extensions (extensions
(package-list (list cups-filters)) (package-list (list cups-filters escpr hplip-minimal foomatic-filters))
"Drivers and other extensions to the CUPS package.") "Drivers and other extensions to the CUPS package.")
(files-configuration (files-configuration
(files-configuration (files-configuration)) (files-configuration (files-configuration))

View file

@ -224,16 +224,21 @@ which is not provided by any service")
(for-each assert-satisfied-requirements services)) (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) (define (shepherd-service-file-name service)
"Return the file name where the initialization code for SERVICE is to be "Return the file name where the initialization code for SERVICE is to be
stored." stored."
(let ((provisions (string-join (map symbol->string (let ((provisions (string-join (map symbol->string
(shepherd-service-provision service))))) (shepherd-service-provision service)))))
(string-append "shepherd-" (string-append "shepherd-"
(string-map (match-lambda (string-map (lambda (chr)
(#\/ #\-) (if (char-set-contains? %store-characters chr)
(#\ #\-) chr
(chr chr)) #\-))
provisions) provisions)
".scm"))) ".scm")))

View file

@ -273,16 +273,16 @@ servers.")
"The device type used to represent the VPN connection.") "The device type used to represent the VPN connection.")
(ca (ca
(string "/etc/openvpn/ca.crt") (maybe-string "/etc/openvpn/ca.crt")
"The certificate authority to check connections against.") "The certificate authority to check connections against.")
(cert (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 "The certificate of the machine the daemon is running on. It should be signed
by the authority given in @code{ca}.") by the authority given in @code{ca}.")
(key (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 "The key of the machine the daemon is running on. It must be the key whose
certificate is @code{cert}.") certificate is @code{cert}.")

View file

@ -576,7 +576,9 @@ it can be used for bootloading."
(file-systems-to-keep (file-systems-to-keep
(srfi-1:remove (srfi-1:remove
(lambda (fs) (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))) (operating-system-file-systems base-os)))
(format (image-format image)) (format (image-format image))
(os (os

View file

@ -77,7 +77,6 @@
system-qemu-image/shared-store system-qemu-image/shared-store
system-qemu-image/shared-store-script system-qemu-image/shared-store-script
system-disk-image-in-vm
system-docker-image system-docker-image
virtual-machine virtual-machine
@ -563,77 +562,6 @@ the operating system."
;;; VM and disk images. ;;; 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 (define* (system-qemu-image os
#:key #:key
(file-system-type "ext4") (file-system-type "ext4")

View file

@ -51,7 +51,9 @@
#:use-module ((guix progress) #:select (current-terminal-columns)) #:use-module ((guix progress) #:select (current-terminal-columns))
#:use-module ((guix build syscalls) #:select (terminal-columns)) #:use-module ((guix build syscalls) #:select (terminal-columns))
#:use-module (guix transformations) #: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
set-build-options-from-command-line* set-build-options-from-command-line*
show-build-options-help show-build-options-help

View file

@ -59,11 +59,16 @@
#:use-module (srfi srfi-37) #:use-module (srfi srfi-37)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:export (compressor? #:export (compressor?
compressor-name
compressor-extenstion
compressor-command
%compressors
lookup-compressor lookup-compressor
self-contained-tarball self-contained-tarball
docker-image docker-image
squashfs-image squashfs-image
%formats
guix-pack)) guix-pack))
;; Type of a compression tool. ;; Type of a compression tool.

View file

@ -2,6 +2,7 @@
;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2020 by Amar M. Singh <nly@disroot.org> ;;; Copyright © 2020 by Amar M. Singh <nly@disroot.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -250,6 +251,21 @@ usage."
("WantMassQuery" . 0) ("WantMassQuery" . 0)
("Priority" . 100))) ("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) (define (signed-string s)
"Sign the hash of the string S with the daemon's key. Return a canonical "Sign the hash of the string S with the daemon's key. Return a canonical
sexp for the signature." sexp for the signature."
@ -569,7 +585,7 @@ requested using POOL."
(lambda (port) (lambda (port)
(write-file item port)) (write-file item port))
#:level (compression-level compression) #:level (compression-level compression)
#:buffer-size (* 128 1024)) #:buffer-size %default-buffer-size)
(rename-file (string-append nar ".tmp") nar)) (rename-file (string-append nar ".tmp") nar))
('lzip ('lzip
;; Note: the file port gets closed along with the lzip port. ;; Note: the file port gets closed along with the lzip port.
@ -866,7 +882,7 @@ or if EOF is reached."
;; 'make-gzip-output-port' wants a file port. ;; 'make-gzip-output-port' wants a file port.
(make-gzip-output-port (response-port response) (make-gzip-output-port (response-port response)
#:level level #:level level
#:buffer-size (* 64 1024))) #:buffer-size %default-buffer-size))
(($ <compression> 'lzip level) (($ <compression> 'lzip level)
(make-lzip-output-port (response-port response) (make-lzip-output-port (response-port response)
#:level level)) #:level level))
@ -891,8 +907,7 @@ blocking."
client)) client))
(port (begin (port (begin
(force-output client) (force-output client)
(setsockopt client SOL_SOCKET (configure-socket client)
SO_SNDBUF (* 128 1024))
(nar-response-port response compression)))) (nar-response-port response compression))))
;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in ;; 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. ;; 'render-nar', BODY here is just the file name of the store item.
@ -922,7 +937,7 @@ blocking."
size) size)
client)) client))
(output (response-port response))) (output (response-port response)))
(setsockopt client SOL_SOCKET SO_SNDBUF (* 128 1024)) (configure-socket client)
(if (file-port? output) (if (file-port? output)
(sendfile output input size) (sendfile output input size)
(dump-port input output)) (dump-port input output))
@ -1067,7 +1082,8 @@ methods, return the applicable compression."
(define (open-server-socket address) (define (open-server-socket address)
"Return a TCP socket bound to ADDRESS, a socket address." "Return a TCP socket bound to ADDRESS, a socket address."
(let ((sock (socket (sockaddr:fam address) SOCK_STREAM 0))) (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) (bind sock address)
sock)) sock))

View file

@ -385,7 +385,7 @@ previous generation. Return true if there are news to display."
(and=> (relative-generation profile -1) (and=> (relative-generation profile -1)
(cut generation-file-name profile <>))) (cut generation-file-name profile <>)))
(when previous (and previous
(let ((old-channels (profile-channels previous)) (let ((old-channels (profile-channels previous))
(new-channels (profile-channels profile))) (new-channels (profile-channels profile)))
;; Find the channels present in both PROFILE and PREVIOUS, and print ;; Find the channels present in both PROFILE and PREVIOUS, and print

View file

@ -440,7 +440,7 @@ releases for ~a~%")
(full-name x))) (full-name x)))
(lst (lst
(format (current-output-port) (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~^ ~}~%" dependent packages are rebuilt: ~{~a~^ ~}~%"
"Building the following ~d packages would ensure ~d \ "Building the following ~d packages would ensure ~d \
dependent packages are rebuilt: ~{~a~^ ~}~%" dependent packages are rebuilt: ~{~a~^ ~}~%"

View file

@ -674,7 +674,8 @@ checking this by themselves in their 'check' procedure."
(define* (system-derivation-for-action os action (define* (system-derivation-for-action os action
#:key image-size image-type #:key image-size image-type
full-boot? container-shared-network? full-boot? container-shared-network?
mappings label) mappings label
volatile-root?)
"Return as a monadic value the derivation for OS according to ACTION." "Return as a monadic value the derivation for OS according to ACTION."
(mlet %store-monad ((target (current-target-system))) (mlet %store-monad ((target (current-target-system)))
(case action (case action
@ -706,7 +707,8 @@ checking this by themselves in their 'check' procedure."
base-image)) base-image))
(target (or base-target target)) (target (or base-target target))
(size image-size) (size image-size)
(operating-system os)))))) (operating-system os)
(volatile-root? volatile-root?))))))
((docker-image) ((docker-image)
(system-docker-image os (system-docker-image os
#:shared-network? container-shared-network?))))) #:shared-network? container-shared-network?)))))
@ -761,6 +763,7 @@ and TARGET arguments."
dry-run? derivations-only? dry-run? derivations-only?
use-substitutes? bootloader-target target use-substitutes? bootloader-target target
image-size image-type image-size image-type
volatile-root?
full-boot? label container-shared-network? full-boot? label container-shared-network?
(mappings '()) (mappings '())
(gc-root #f)) (gc-root #f))
@ -768,7 +771,8 @@ and TARGET arguments."
bootloader; BOOTLOADER-TAGET is the target for the bootloader; TARGET is the 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 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 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 FULL-BOOT? is used for the 'vm' action; it determines whether to
boot directly to the kernel or to the bootloader. CONTAINER-SHARED-NETWORK? boot directly to the kernel or to the bootloader. CONTAINER-SHARED-NETWORK?
@ -816,6 +820,7 @@ static checks."
#:label label #:label label
#:image-type image-type #:image-type image-type
#:image-size image-size #:image-size image-size
#:volatile-root? volatile-root?
#:full-boot? full-boot? #:full-boot? full-boot?
#:container-shared-network? container-shared-network? #:container-shared-network? container-shared-network?
#:mappings mappings)) #:mappings mappings))
@ -974,6 +979,8 @@ Some ACTIONS support additional ARGS.\n"))
--image-size=SIZE for 'vm-image', produce an image of SIZE")) --image-size=SIZE for 'vm-image', produce an image of SIZE"))
(display (G_ " (display (G_ "
--no-bootloader for 'init', do not install a bootloader")) --no-bootloader for 'init', do not install a bootloader"))
(display (G_ "
--volatile for 'disk-image', make the root file system volatile"))
(display (G_ " (display (G_ "
--label=LABEL for 'disk-image', label disk image with LABEL")) --label=LABEL for 'disk-image', label disk image with LABEL"))
(display (G_ " (display (G_ "
@ -1048,6 +1055,9 @@ Some ACTIONS support additional ARGS.\n"))
(option '("no-bootloader" "no-grub") #f #f (option '("no-bootloader" "no-grub") #f #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'install-bootloader? #f 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 (option '("label") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'label arg result))) (alist-cons 'label arg result)))
@ -1109,7 +1119,8 @@ Some ACTIONS support additional ARGS.\n"))
(image-type . raw) (image-type . raw)
(image-size . guess) (image-size . guess)
(install-bootloader? . #t) (install-bootloader? . #t)
(label . #f))) (label . #f)
(volatile-root? . #f)))
(define (verbosity-level opts) (define (verbosity-level opts)
"Return the verbosity level based on OPTS, the alist of parsed options." "Return the verbosity level based on OPTS, the alist of parsed options."
@ -1206,6 +1217,8 @@ resulting from command-line parsing."
#:image-type (lookup-image-type-by-name #:image-type (lookup-image-type-by-name
(assoc-ref opts 'image-type)) (assoc-ref opts 'image-type))
#:image-size (assoc-ref opts 'image-size) #:image-size (assoc-ref opts 'image-size)
#:volatile-root?
(assoc-ref opts 'volatile-root?)
#:full-boot? (assoc-ref opts 'full-boot?) #:full-boot? (assoc-ref opts 'full-boot?)
#:container-shared-network? #:container-shared-network?
(assoc-ref opts 'container-shared-network?) (assoc-ref opts 'container-shared-network?)

View file

@ -400,6 +400,12 @@ a list of extra files, such as '(\"contributing\")."
(find-files directory (find-files directory
"\\.[a-z]{2}(_[A-Z]{2})?\\.po$"))) "\\.[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) (mkdir #$output)
(copy-recursively #$documentation "." (copy-recursively #$documentation "."
#:log (%make-void-port "w")) #:log (%make-void-port "w"))
@ -415,14 +421,14 @@ a list of extra files, such as '(\"contributing\")."
(setenv "LC_ALL" "en_US.UTF-8") (setenv "LC_ALL" "en_US.UTF-8")
(setlocale 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 (match-lambda
((language . po) ((language . po)
(translate-texi "guix" po language (translate-texi "guix" po language
#:extras '("contributing")))) #:extras '("contributing"))))
(available-translations "." "guix-manual")) (available-translations "." "guix-manual"))
(n-par-for-each (parallel-job-count) (n-par-for-each parallel-jobs
(match-lambda (match-lambda
((language . po) ((language . po)
(translate-texi "guix-cookbook" po language))) (translate-texi "guix-cookbook" po language)))

View file

@ -78,6 +78,7 @@
target-arm? target-arm?
target-64bit? target-64bit?
cc-for-target cc-for-target
cxx-for-target
version-compare version-compare
version>? version>?
@ -542,6 +543,11 @@ a character other than '@'."
(string-append target "-gcc") (string-append target "-gcc")
"gcc")) "gcc"))
(define* (cxx-for-target #:optional (target (%current-target-system)))
(if target
(string-append target "-g++")
"g++"))
(define version-compare (define version-compare
(let ((strverscmp (let ((strverscmp
(let ((sym (or (dynamic-func "strverscmp" (dynamic-link)) (let ((sym (or (dynamic-func "strverscmp" (dynamic-link))

View file

@ -91,4 +91,24 @@ guix/profiles.scm
guix/git.scm guix/git.scm
guix/deprecation.scm guix/deprecation.scm
guix/derivations.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 nix/nix-daemon/guix-daemon.cc

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -174,7 +174,7 @@ echo hello world"))
(let ((script-file-name (string-append directory "/foo"))) (let ((script-file-name (string-append directory "/foo")))
(call-with-output-file script-file-name (call-with-output-file script-file-name
(lambda (port) (lambda (port)
(format port script-contents))) (display script-contents port)))
(chmod script-file-name #o777) (chmod script-file-name #o777)
(wrap-script script-file-name (wrap-script script-file-name
`("GUIX_FOO" prefix ("/some/path" `("GUIX_FOO" prefix ("/some/path"